Problem: the hexagonal refactor churns the backend tree for nine more phases; the UI delivery stack (web/ SPA, cmd/desktop Wails wrapper, compose/web image) must move to its own repo first so doc/layout rewrites land once on a backend-only tree. Change: - New repo git.hubris.network/dtoro/oikos-web (v0.33.0): web/, desktop/ (updateURL repointed to oikos-web releases), compose/, own CI (web + desktop jobs), own deploy script (CI-green gate, TOCTOU guard, version-tagged images, prune-to-3), own webhook receiver on :9798 + launchd unit, own compose project publishing the same 8091:80. - Cutover executed on mac-mini in order: oikos stack's web service stopped+removed, oikos-web project brought up on 8091; outer Caddy untouched (targets the published port) — serving + Authentik flow + /wails 404 quirk verified post-cutover. - Stripped from oikos: web/, cmd/desktop/, compose/web/, desktop CI workflow, ci.yml web job, Makefile ui/desktop/desktop-package/install targets, the compose web service, oikos-web from deploy.sh's fallback prune list; wails + go-keyring dropped from go.mod, vendor synced. - README / CONTRIBUTING / AGENTS.md / .agents dev+operations docs now point at the new repo; mbse + mascot design docs carry a path note. Risk: production SPA serving depends on the new pipeline now; rollback is versioned-image re-up of the old web service from a pre-split checkout (port 8091). Desktop builds installed before the split still check dtoro/oikos releases — one manual reinstall, noted in the oikos-web release notes. Verification: go vet, make test (race), make generate-check, golangci (no new findings; baseline down 400→365); post-cutover curls — localhost:8091 200, /wails/runtime.js 404, outer Caddy 302 Authentik.
179 lines
5.8 KiB
JavaScript
179 lines
5.8 KiB
JavaScript
'use strict';
|
|
|
|
const eslint = require('eslint');
|
|
const semver = require('semver');
|
|
const convertConfig = require('./shared/eslint-compat-utils.503aeaae.cjs');
|
|
const getUnsupported = require('./shared/eslint-compat-utils.cb53cf36.cjs');
|
|
require('module');
|
|
|
|
function _interopNamespaceCompat(e) {
|
|
if (e && typeof e === 'object' && 'default' in e) return e;
|
|
const n = Object.create(null);
|
|
if (e) {
|
|
for (const k in e) {
|
|
n[k] = e[k];
|
|
}
|
|
}
|
|
n.default = e;
|
|
return n;
|
|
}
|
|
|
|
const eslint__namespace = /*#__PURE__*/_interopNamespaceCompat(eslint);
|
|
const semver__namespace = /*#__PURE__*/_interopNamespaceCompat(semver);
|
|
|
|
var __defProp = Object.defineProperty;
|
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
var __publicField = (obj, key, value) => {
|
|
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
return value;
|
|
};
|
|
let cacheESLint, cacheLegacyESLint;
|
|
function getESLint() {
|
|
return cacheESLint != null ? cacheESLint : cacheESLint = getESLintInternal();
|
|
function getESLintInternal() {
|
|
if (semver__namespace.gte(eslint__namespace.Linter.version, "9.0.0-0")) {
|
|
return eslint__namespace.ESLint;
|
|
}
|
|
return getUnsupported.getUnsupported().FlatESLint || (eslint__namespace.ESLint ? getESLintClassFromLegacyESLint(eslint__namespace.ESLint) : getESLintClassFromLegacyESLint(getLegacyESLintClassFromCLIEngine()));
|
|
}
|
|
}
|
|
function getLegacyESLint() {
|
|
return cacheLegacyESLint != null ? cacheLegacyESLint : cacheLegacyESLint = getLegacyESLintInternal();
|
|
function getLegacyESLintInternal() {
|
|
return getUnsupported.getUnsupported().LegacyESLint || eslint__namespace.ESLint || getLegacyESLintClassFromCLIEngine();
|
|
}
|
|
}
|
|
function getESLintClassFromLegacyESLint(legacyESLintClass) {
|
|
return class ESLintFromLegacyESLint extends legacyESLintClass {
|
|
static get version() {
|
|
return legacyESLintClass.version;
|
|
}
|
|
constructor(options) {
|
|
super(adjustOptions(options));
|
|
}
|
|
};
|
|
function adjustOptions(options) {
|
|
const {
|
|
baseConfig: originalBaseConfig,
|
|
overrideConfig: originalOverrideConfig,
|
|
overrideConfigFile,
|
|
...newOptions
|
|
} = options || {};
|
|
if (originalBaseConfig) {
|
|
const [baseConfig, plugins] = convertConfig$1(originalBaseConfig);
|
|
newOptions.baseConfig = baseConfig;
|
|
if (plugins) {
|
|
newOptions.plugins = plugins;
|
|
}
|
|
}
|
|
if (originalOverrideConfig) {
|
|
const [overrideConfig, plugins] = convertConfig$1(originalOverrideConfig);
|
|
newOptions.overrideConfig = overrideConfig;
|
|
if (plugins) {
|
|
newOptions.plugins = plugins;
|
|
}
|
|
}
|
|
if (overrideConfigFile) {
|
|
if (overrideConfigFile === true) {
|
|
newOptions.useEslintrc = false;
|
|
} else {
|
|
newOptions.overrideConfigFile = overrideConfigFile;
|
|
}
|
|
}
|
|
return newOptions;
|
|
}
|
|
function convertConfig$1(config) {
|
|
const pluginDefs = {};
|
|
const newConfigs = [];
|
|
for (const configItem of Array.isArray(config) ? config : [config]) {
|
|
const { plugins, ...otherConfig } = configItem;
|
|
if (typeof otherConfig.processor !== "string")
|
|
delete otherConfig.processor;
|
|
const newConfig = {
|
|
files: ["**/*.*", "*.*", "**/*", "*"],
|
|
...convertConfig.convertConfigToRc(otherConfig)
|
|
};
|
|
if (plugins) {
|
|
newConfig.plugins = Object.keys(plugins);
|
|
}
|
|
Object.assign(pluginDefs, plugins);
|
|
newConfigs.push(newConfig);
|
|
}
|
|
return [{ overrides: newConfigs }, pluginDefs];
|
|
}
|
|
}
|
|
function getLegacyESLintClassFromCLIEngine() {
|
|
const CLIEngine = eslint__namespace.CLIEngine;
|
|
class LegacyESLintFromCLIEngine {
|
|
constructor(options) {
|
|
__publicField(this, "engine");
|
|
const {
|
|
overrideConfig: {
|
|
plugins,
|
|
globals,
|
|
rules,
|
|
overrides,
|
|
...overrideConfig
|
|
} = {
|
|
plugins: [],
|
|
globals: {},
|
|
rules: {},
|
|
overrides: []
|
|
},
|
|
fix,
|
|
reportUnusedDisableDirectives,
|
|
plugins: pluginsMap,
|
|
...otherOptions
|
|
} = options || {};
|
|
const cliEngineOptions = {
|
|
baseConfig: {
|
|
...overrides ? {
|
|
overrides
|
|
} : {}
|
|
},
|
|
fix: Boolean(fix),
|
|
reportUnusedDisableDirectives: reportUnusedDisableDirectives ? reportUnusedDisableDirectives !== "off" : void 0,
|
|
...otherOptions,
|
|
globals: globals ? Object.keys(globals).filter((n) => globals[n]) : void 0,
|
|
plugins: plugins || [],
|
|
rules: rules ? Object.fromEntries(
|
|
Object.entries(rules).flatMap(
|
|
([ruleId, opt]) => opt ? [[ruleId, opt]] : []
|
|
)
|
|
) : void 0,
|
|
...overrideConfig
|
|
};
|
|
this.engine = new CLIEngine(cliEngineOptions);
|
|
for (const [name, plugin] of Object.entries(pluginsMap || {})) {
|
|
this.engine.addPlugin(name, plugin);
|
|
}
|
|
}
|
|
static get version() {
|
|
return CLIEngine.version;
|
|
}
|
|
// eslint-disable-next-line @typescript-eslint/require-await -- ignore
|
|
async lintText(...params) {
|
|
var _a;
|
|
const result = this.engine.executeOnText(params[0], (_a = params[1]) == null ? void 0 : _a.filePath);
|
|
return result.results;
|
|
}
|
|
// eslint-disable-next-line @typescript-eslint/require-await -- ignore
|
|
async lintFiles(...params) {
|
|
const result = this.engine.executeOnFiles(
|
|
Array.isArray(params[0]) ? params[0] : [params[0]]
|
|
);
|
|
return result.results;
|
|
}
|
|
// eslint-disable-next-line @typescript-eslint/require-await -- ignore
|
|
static async outputFixes(...params) {
|
|
return CLIEngine.outputFixes({
|
|
results: params[0]
|
|
});
|
|
}
|
|
}
|
|
return LegacyESLintFromCLIEngine;
|
|
}
|
|
|
|
exports.getESLint = getESLint;
|
|
exports.getLegacyESLint = getLegacyESLint;
|