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.
86 lines
2.4 KiB
Plaintext
86 lines
2.4 KiB
Plaintext
{{# def.definitions }}
|
|
{{# def.errors }}
|
|
{{# def.setupKeyword }}
|
|
|
|
{{## def._validateRef:_v:
|
|
{{? it.opts.passContext }}
|
|
{{=_v}}.call(this,
|
|
{{??}}
|
|
{{=_v}}(
|
|
{{?}}
|
|
{{=$data}}, {{# def.dataPath }}{{# def.passParentData }}, rootData)
|
|
#}}
|
|
|
|
{{ var $async, $refCode; }}
|
|
{{? $schema == '#' || $schema == '#/' }}
|
|
{{
|
|
if (it.isRoot) {
|
|
$async = it.async;
|
|
$refCode = 'validate';
|
|
} else {
|
|
$async = it.root.schema.$async === true;
|
|
$refCode = 'root.refVal[0]';
|
|
}
|
|
}}
|
|
{{??}}
|
|
{{ var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); }}
|
|
{{? $refVal === undefined }}
|
|
{{ var $message = it.MissingRefError.message(it.baseId, $schema); }}
|
|
{{? it.opts.missingRefs == 'fail' }}
|
|
{{ it.logger.error($message); }}
|
|
{{# def.error:'$ref' }}
|
|
{{? $breakOnError }} if (false) { {{?}}
|
|
{{?? it.opts.missingRefs == 'ignore' }}
|
|
{{ it.logger.warn($message); }}
|
|
{{? $breakOnError }} if (true) { {{?}}
|
|
{{??}}
|
|
{{ throw new it.MissingRefError(it.baseId, $schema, $message); }}
|
|
{{?}}
|
|
{{?? $refVal.inline }}
|
|
{{# def.setupNextLevel }}
|
|
{{
|
|
$it.schema = $refVal.schema;
|
|
$it.schemaPath = '';
|
|
$it.errSchemaPath = $schema;
|
|
}}
|
|
{{ var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); }}
|
|
{{= $code }}
|
|
{{? $breakOnError}}
|
|
if ({{=$nextValid}}) {
|
|
{{?}}
|
|
{{??}}
|
|
{{
|
|
$async = $refVal.$async === true || (it.async && $refVal.$async !== false);
|
|
$refCode = $refVal.code;
|
|
}}
|
|
{{?}}
|
|
{{?}}
|
|
|
|
{{? $refCode }}
|
|
{{# def.beginDefOut}}
|
|
{{# def._validateRef:$refCode }}
|
|
{{# def.storeDefOut:__callValidate }}
|
|
|
|
{{? $async }}
|
|
{{ if (!it.async) throw new Error('async schema referenced by sync schema'); }}
|
|
{{? $breakOnError }} var {{=$valid}}; {{?}}
|
|
try {
|
|
await {{=__callValidate}};
|
|
{{? $breakOnError }} {{=$valid}} = true; {{?}}
|
|
} catch (e) {
|
|
if (!(e instanceof ValidationError)) throw e;
|
|
if (vErrors === null) vErrors = e.errors;
|
|
else vErrors = vErrors.concat(e.errors);
|
|
errors = vErrors.length;
|
|
{{? $breakOnError }} {{=$valid}} = false; {{?}}
|
|
}
|
|
{{? $breakOnError }} if ({{=$valid}}) { {{?}}
|
|
{{??}}
|
|
if (!{{=__callValidate}}) {
|
|
if (vErrors === null) vErrors = {{=$refCode}}.errors;
|
|
else vErrors = vErrors.concat({{=$refCode}}.errors);
|
|
errors = vErrors.length;
|
|
} {{? $breakOnError }} else { {{?}}
|
|
{{?}}
|
|
{{?}}
|