@sanoma-ai/workflows 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +169 -52
- package/dist/apply-steps.js +5 -2
- package/dist/apply-steps.js.map +1 -1
- package/dist/apply.d.ts +3 -0
- package/dist/apply.js +35 -21
- package/dist/apply.js.map +1 -1
- package/dist/approvals.d.ts +1 -0
- package/dist/approvals.js +6 -1
- package/dist/approvals.js.map +1 -1
- package/dist/apps.d.ts +7 -24
- package/dist/apps.js +51 -67
- package/dist/apps.js.map +1 -1
- package/dist/ast.d.ts +9 -7
- package/dist/ast.js +2 -0
- package/dist/ast.js.map +1 -1
- package/dist/authentication.d.ts +24 -0
- package/dist/authentication.js +68 -0
- package/dist/authentication.js.map +1 -0
- package/dist/call-workflow.d.ts +5 -0
- package/dist/call-workflow.js +4 -3
- package/dist/call-workflow.js.map +1 -1
- package/dist/call.d.ts +3 -2
- package/dist/call.js +34 -7
- package/dist/call.js.map +1 -1
- package/dist/cedar.js +14 -1
- package/dist/cedar.js.map +1 -1
- package/dist/change-steps.js +7 -5
- package/dist/change-steps.js.map +1 -1
- package/dist/change.d.ts +7 -0
- package/dist/change.js +7 -0
- package/dist/change.js.map +1 -1
- package/dist/client.d.ts +10 -6
- package/dist/client.js +96 -43
- package/dist/client.js.map +1 -1
- package/dist/collection.d.ts +7 -0
- package/dist/collection.js +5 -2
- package/dist/collection.js.map +1 -1
- package/dist/config.d.ts +14 -3
- package/dist/config.js +55 -14
- package/dist/config.js.map +1 -1
- package/dist/connection.d.ts +168 -0
- package/dist/connection.js +327 -0
- package/dist/connection.js.map +1 -0
- package/dist/credentials.d.ts +7 -53
- package/dist/credentials.js +84 -247
- package/dist/credentials.js.map +1 -1
- package/dist/cucumber.d.ts +4 -2
- package/dist/cucumber.js +8 -3
- package/dist/cucumber.js.map +1 -1
- package/dist/db.js +21 -2
- package/dist/db.js.map +1 -1
- package/dist/define.d.ts +9 -2
- package/dist/define.js.map +1 -1
- package/dist/definitions.d.ts +20 -0
- package/dist/definitions.js +16 -0
- package/dist/definitions.js.map +1 -0
- package/dist/deployment-key.d.ts +2 -0
- package/dist/deployment-key.js +22 -0
- package/dist/deployment-key.js.map +1 -0
- package/dist/describe.d.ts +9 -177
- package/dist/describe.js +71 -34
- package/dist/describe.js.map +1 -1
- package/dist/description.d.ts +532 -0
- package/dist/description.js +381 -0
- package/dist/description.js.map +1 -0
- package/dist/direct.js +3 -0
- package/dist/direct.js.map +1 -1
- package/dist/drift.d.ts +1 -1
- package/dist/drift.js +1 -1
- package/dist/drift.js.map +1 -1
- package/dist/env.d.ts +2 -0
- package/dist/env.js +2 -2
- package/dist/env.js.map +1 -1
- package/dist/index.d.ts +10 -2
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/ledger.d.ts +2 -0
- package/dist/ledger.js +1 -1
- package/dist/ledger.js.map +1 -1
- package/dist/lint.d.ts +0 -9
- package/dist/lint.js +1 -16
- package/dist/lint.js.map +1 -1
- package/dist/load.d.ts +74 -0
- package/dist/load.js +357 -0
- package/dist/load.js.map +1 -0
- package/dist/lockfile.d.ts +2 -0
- package/dist/lockfile.js +8 -3
- package/dist/lockfile.js.map +1 -1
- package/dist/op.d.ts +10 -1
- package/dist/op.js +1 -1
- package/dist/op.js.map +1 -1
- package/dist/outline.js +13 -4
- package/dist/outline.js.map +1 -1
- package/dist/paths.d.ts +18 -0
- package/dist/paths.js +21 -3
- package/dist/paths.js.map +1 -1
- package/dist/plugin.d.ts +0 -11
- package/dist/plugin.js +3 -18
- package/dist/plugin.js.map +1 -1
- package/dist/policy.d.ts +2 -0
- package/dist/policy.js.map +1 -1
- package/dist/resource.d.ts +27 -4
- package/dist/resource.js +49 -4
- package/dist/resource.js.map +1 -1
- package/dist/resources.d.ts +33 -76
- package/dist/resources.js +219 -227
- package/dist/resources.js.map +1 -1
- package/dist/run.d.ts +2 -0
- package/dist/run.js.map +1 -1
- package/dist/sandbox.d.ts +1 -1
- package/dist/sandbox.js +7 -3
- package/dist/sandbox.js.map +1 -1
- package/dist/scenario.d.ts +7 -0
- package/dist/scenario.js +33 -3
- package/dist/scenario.js.map +1 -1
- package/dist/scenarios.js +7 -1
- package/dist/scenarios.js.map +1 -1
- package/dist/schema.js +8 -0
- package/dist/schema.js.map +1 -1
- package/dist/secret-store-check.d.ts +11 -0
- package/dist/secret-store-check.js +76 -0
- package/dist/secret-store-check.js.map +1 -0
- package/dist/secret-store.d.ts +106 -0
- package/dist/secret-store.js +228 -0
- package/dist/secret-store.js.map +1 -0
- package/dist/shared.d.ts +17 -11
- package/dist/shared.js +34 -7
- package/dist/shared.js.map +1 -1
- package/dist/sites.d.ts +4 -93
- package/dist/sites.js +61 -84
- package/dist/sites.js.map +1 -1
- package/dist/source.d.ts +6 -0
- package/dist/source.js +13 -0
- package/dist/source.js.map +1 -1
- package/dist/steps.d.ts +3 -1
- package/dist/steps.js.map +1 -1
- package/dist/version.d.ts +2 -1
- package/dist/version.js +2 -1
- package/dist/version.js.map +1 -1
- package/dist/wakeup-driver.js +15 -6
- package/dist/wakeup-driver.js.map +1 -1
- package/dist/worker.js +12 -8
- package/dist/worker.js.map +1 -1
- package/dist/writer.d.ts +53 -14
- package/dist/writer.js +113 -43
- package/dist/writer.js.map +1 -1
- package/oxlint.json +0 -5
- package/package.json +6 -2
- package/src/apply-steps.ts +5 -2
- package/src/apply.ts +70 -29
- package/src/approvals.ts +7 -1
- package/src/apps.ts +54 -85
- package/src/ast.ts +6 -6
- package/src/authentication.ts +74 -0
- package/src/call-workflow.ts +5 -4
- package/src/call.ts +53 -9
- package/src/cedar.ts +14 -1
- package/src/change-steps.ts +7 -4
- package/src/change.ts +10 -0
- package/src/client.ts +108 -41
- package/src/collection.ts +10 -2
- package/src/config.ts +72 -13
- package/src/connection.ts +446 -0
- package/src/credentials.ts +94 -281
- package/src/cucumber.ts +16 -3
- package/src/db.ts +21 -2
- package/src/define.ts +7 -2
- package/src/definitions.ts +31 -0
- package/src/deployment-key.ts +23 -0
- package/src/describe.ts +102 -230
- package/src/description.ts +426 -0
- package/src/direct.ts +3 -0
- package/src/drift.ts +10 -2
- package/src/env.ts +4 -2
- package/src/index.ts +42 -1
- package/src/ledger.ts +3 -1
- package/src/lint.ts +1 -16
- package/src/load.ts +437 -0
- package/src/lockfile.ts +10 -3
- package/src/op.ts +10 -1
- package/src/outline.ts +18 -5
- package/src/paths.ts +24 -2
- package/src/plugin.ts +3 -24
- package/src/policy.ts +2 -0
- package/src/resource.ts +67 -6
- package/src/resources.ts +246 -301
- package/src/run.ts +2 -0
- package/src/sandbox.ts +11 -3
- package/src/scenario.ts +45 -3
- package/src/scenarios.ts +7 -1
- package/src/schema.ts +10 -0
- package/src/secret-store-check.ts +93 -0
- package/src/secret-store.ts +314 -0
- package/src/shared.ts +35 -10
- package/src/sites.ts +70 -180
- package/src/source.ts +14 -0
- package/src/steps.ts +3 -1
- package/src/version.ts +2 -1
- package/src/wakeup-driver.ts +22 -6
- package/src/worker.ts +12 -8
- package/src/writer.ts +145 -56
- package/dist/datafile.d.ts +0 -97
- package/dist/datafile.js +0 -479
- package/dist/datafile.js.map +0 -1
- package/src/datafile.ts +0 -601
package/dist/ledger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../src/ledger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../src/ledger.ts"],"names":[],"mappings":"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"}
|
package/dist/lint.d.ts
CHANGED
|
@@ -22,12 +22,3 @@ export type { LintProblem } from "./ast.ts";
|
|
|
22
22
|
export declare function lintWorkflow(source: string, filename?: string): LintProblem[];
|
|
23
23
|
/** The same, over a file `readSource` read: the reading `describeConfig` shares with the outline. */
|
|
24
24
|
export declare function lintWorkflow(file: SourceFile): LintProblem[];
|
|
25
|
-
/**
|
|
26
|
-
* Checks a data file under `resources/`: only named imports (a connector's constructors from its
|
|
27
|
-
* `…/resources` entry, and resources from other data files inside the same `resources/`
|
|
28
|
-
* directory), `export const <name> = <vendor>.<type>({ … })` with literal fields and names of
|
|
29
|
-
* declared resources, and `export default [ … ]`. Each message says what to write instead.
|
|
30
|
-
* It is the subset `readResources` reads (`readDataFile`), without the config: whether the
|
|
31
|
-
* connector, the type and the values are known is the reader's to say.
|
|
32
|
-
*/
|
|
33
|
-
export declare function lintResources(source: string, filename: string): LintProblem[];
|
package/dist/lint.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { realpathSync } from "node:fs";
|
|
2
2
|
import { basename, dirname, join, relative, sep } from "node:path";
|
|
3
3
|
import { byPosition, childrenOf, parsed } from "./ast.js";
|
|
4
|
-
import { COLLECTIONS_FILE, readDataFile } from "./datafile.js";
|
|
5
4
|
import { constsOf, outlineBody, workflowLiterals } from "./outline.js";
|
|
6
|
-
import { APPS_DIR, inside, nearestDir, RELATIVE } from "./paths.js";
|
|
5
|
+
import { APPS_DIR, COLLECTIONS_FILE, inside, nearestDir, RELATIVE } from "./paths.js";
|
|
7
6
|
// From src/ and from dist/ alike, the package's own oxlint.json: the one list of allowed names.
|
|
8
7
|
import oxlint from "../oxlint.json" with { type: "json" };
|
|
9
8
|
/**
|
|
@@ -131,20 +130,6 @@ export function lintWorkflow(input, path) {
|
|
|
131
130
|
problems.push({ ...at(start), message });
|
|
132
131
|
return byPosition(problems);
|
|
133
132
|
}
|
|
134
|
-
/**
|
|
135
|
-
* Checks a data file under `resources/`: only named imports (a connector's constructors from its
|
|
136
|
-
* `…/resources` entry, and resources from other data files inside the same `resources/`
|
|
137
|
-
* directory), `export const <name> = <vendor>.<type>({ … })` with literal fields and names of
|
|
138
|
-
* declared resources, and `export default [ … ]`. Each message says what to write instead.
|
|
139
|
-
* It is the subset `readResources` reads (`readDataFile`), without the config: whether the
|
|
140
|
-
* connector, the type and the values are known is the reader's to say.
|
|
141
|
-
*/
|
|
142
|
-
export function lintResources(source, filename) {
|
|
143
|
-
const { program, problems, at } = parsed(source, filename);
|
|
144
|
-
for (const p of readDataFile(program, filename).problems)
|
|
145
|
-
problems.push({ ...at(p.start), message: p.message });
|
|
146
|
-
return byPosition(problems);
|
|
147
|
-
}
|
|
148
133
|
/** The `paths` of oxlint.json's `no-restricted-imports` rule. */
|
|
149
134
|
function restrictedImports(config) {
|
|
150
135
|
// JSON types the rule's [severity, options] as an array of either.
|
package/dist/lint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../src/lint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,UAAU,EAA+B,MAAM,EAAmB,MAAM,UAAU,CAAC;AACxG,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../src/lint.ts"],"names":[],"mappings":"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"}
|
package/dist/load.d.ts
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { type Connector } from "./op.ts";
|
|
2
|
+
import { type Declared, type Resource } from "./resource.ts";
|
|
3
|
+
/** Where a value a company file made was made, by the constructor that made it. */
|
|
4
|
+
export interface Made {
|
|
5
|
+
/** The file that called the constructor, relative to the root, with `/`: `resources/github.ts`. */
|
|
6
|
+
file: string;
|
|
7
|
+
/** Its place among everything its generation made, from 1: in each file, the order written. */
|
|
8
|
+
seq: number;
|
|
9
|
+
/**
|
|
10
|
+
* Each declared resource its fields name, by the field's dotted path (a list item's with its
|
|
11
|
+
* index, `teams.0`), as the constructor's `refs` names them.
|
|
12
|
+
*/
|
|
13
|
+
refers: Record<string, Declared>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* What loading a file gave: its exports, the values it made first in the order made, then the
|
|
17
|
+
* rest by name, less any value another file loaded with it made and exports (a re-export); or
|
|
18
|
+
* the error it threw, placed in the file (from 1, UTF-16 columns) when its stack says where; or,
|
|
19
|
+
* when the error is another file's (a file it imports threw), that file, where it is reported.
|
|
20
|
+
*/
|
|
21
|
+
export type Loaded = {
|
|
22
|
+
exports: [name: string, value: unknown][];
|
|
23
|
+
} | {
|
|
24
|
+
error: unknown;
|
|
25
|
+
line?: number;
|
|
26
|
+
column?: number;
|
|
27
|
+
} | {
|
|
28
|
+
failedIn: string;
|
|
29
|
+
};
|
|
30
|
+
/** Where `value` was made, when a company file made it with a constructor the loader served. */
|
|
31
|
+
export declare const madeOf: (value: unknown) => Made | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Loads `paths` (absolute, under `root`) as the generation of `root` and the constructors of
|
|
34
|
+
* `connectors` (`types`, by default theirs) has them, and says what each gave, by its path
|
|
35
|
+
* relative to the root with `/`, sorted. The same generation, and the same answer for the same
|
|
36
|
+
* paths, while no file it read, nor any file's directory, changed (by size and modification time:
|
|
37
|
+
* one `stat` each); else a new one, so a caller may key what it makes of the answer by it (and
|
|
38
|
+
* never changes it). `only` loads only the files whose text it passes; the answer is kept by its
|
|
39
|
+
* identity, so pass one function, not a new one per call.
|
|
40
|
+
*
|
|
41
|
+
* Served to the files, by specifier: `sanoma/resources` and `@sanoma-ai/workflows/resources`
|
|
42
|
+
* (`sanoma`, the constructors of the vendor `sanoma`, and `secret`); each connector's
|
|
43
|
+
* `<info.package>/resources` (its vendor's constructors, under its id); `sanoma/data` and
|
|
44
|
+
* `@sanoma-ai/workflows/data` (`collection`); `sanoma/site` and `@sanoma-ai/app/site`
|
|
45
|
+
* (`defineSite`); and to an app's `apps/<app>/app.ts` alone, `sanoma` and `@sanoma-ai/workflows`
|
|
46
|
+
* (`defineApp`). Anything else is resolved as Node does.
|
|
47
|
+
*/
|
|
48
|
+
export declare function loadModules(root: string, paths: readonly string[], connectors: readonly Connector<any, any>[], { only, types, }?: {
|
|
49
|
+
only?: (text: string) => boolean;
|
|
50
|
+
types?: ReadonlyMap<string, Resource>;
|
|
51
|
+
}): Map<string, Loaded>;
|
|
52
|
+
/**
|
|
53
|
+
* What `answer` (a `loadModules` answer) gave for `file`: its exports, or the error it threw (or a
|
|
54
|
+
* helper it imports threw) as a problem on one line, at the file that threw it; undefined when the
|
|
55
|
+
* answer does not have the file.
|
|
56
|
+
*/
|
|
57
|
+
export declare function exportsOf(answer: Map<string, Loaded>, file: string): {
|
|
58
|
+
exports: [name: string, value: unknown][];
|
|
59
|
+
} | {
|
|
60
|
+
problem: {
|
|
61
|
+
file: string;
|
|
62
|
+
line?: number;
|
|
63
|
+
column?: number;
|
|
64
|
+
message: string;
|
|
65
|
+
};
|
|
66
|
+
} | undefined;
|
|
67
|
+
/** Every value the files of `answer` (a `loadModules` answer) made, exported or not, in the order made. */
|
|
68
|
+
export declare const madeWith: (answer: Map<string, Loaded>) => object[];
|
|
69
|
+
/**
|
|
70
|
+
* The company files `answer` (a `loadModules` answer) was read from, by path relative to the root:
|
|
71
|
+
* its files and every company file they import, directly or not (or that another answer of its
|
|
72
|
+
* generation imported: never fewer).
|
|
73
|
+
*/
|
|
74
|
+
export declare const filesRead: (answer: Map<string, Loaded>) => ReadonlySet<string>;
|
package/dist/load.js
ADDED
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
import { readFileSync, realpathSync, statSync } from "node:fs";
|
|
2
|
+
import { createRequire, registerHooks } from "node:module";
|
|
3
|
+
import { dirname, isAbsolute, join, relative, sep } from "node:path";
|
|
4
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
5
|
+
import { collectionIn } from "./collection.js";
|
|
6
|
+
import { callerFile } from "./define.js";
|
|
7
|
+
import { defineApp, defineSite } from "./definitions.js";
|
|
8
|
+
import { VENDOR } from "./op.js";
|
|
9
|
+
import { APPS_DIR, appOfPath, DATA_ENTRIES, inside, relPath, SECRET_ENTRIES, SITE_ENTRIES } from "./paths.js";
|
|
10
|
+
import { isDeclared, isObject, joinPath, resourceTypesOf } from "./resource.js";
|
|
11
|
+
import { secret } from "./secret.js";
|
|
12
|
+
import { errorMessage } from "./shared.js";
|
|
13
|
+
// A company's files, loaded: synchronously (`require` of an ES module, Node's type stripping and
|
|
14
|
+
// `module.registerHooks`), since what reads them is (`describeConfig`, `readPeople`). Each load
|
|
15
|
+
// is a *generation*: its files are modules of their own (`file:…?sanoma-load=<id>`), so an edit
|
|
16
|
+
// is read once a new generation starts, and what they import from the runtime (constructors,
|
|
17
|
+
// `collection`, `defineSite`, `defineApp`) is served from the loader's own objects, which record
|
|
18
|
+
// where each value was made. A superseded generation's modules stay in Node's cache: each edit
|
|
19
|
+
// costs one copy of the files it read.
|
|
20
|
+
/** The scheme of the loader's own modules: an entry, `sanoma-load:<id>/<file URL>`, and a runtime module, `sanoma-load:<id>/<specifier>`. */
|
|
21
|
+
const SCHEME = "sanoma-load:";
|
|
22
|
+
/** The query that tags a company file with its generation: `file:///…/github.ts?sanoma-load=<id>`. */
|
|
23
|
+
const QUERY = "sanoma-load";
|
|
24
|
+
const registry = (globalThis[Symbol.for("sanoma.load")] ??= {
|
|
25
|
+
generations: new Map(),
|
|
26
|
+
seq: 0,
|
|
27
|
+
ids: new WeakMap(),
|
|
28
|
+
made: new WeakMap(),
|
|
29
|
+
});
|
|
30
|
+
const require = createRequire(import.meta.url);
|
|
31
|
+
/** Where `value` was made, when a company file made it with a constructor the loader served. */
|
|
32
|
+
export const madeOf = (value) => typeof value === "object" && value !== null ? registry.made.get(value) : undefined;
|
|
33
|
+
/** Where `defineApp` comes from, served only to an app's `app.ts`. */
|
|
34
|
+
const APP_ENTRIES = new Set(["sanoma", "@sanoma-ai/workflows"]);
|
|
35
|
+
/**
|
|
36
|
+
* Loads `paths` (absolute, under `root`) as the generation of `root` and the constructors of
|
|
37
|
+
* `connectors` (`types`, by default theirs) has them, and says what each gave, by its path
|
|
38
|
+
* relative to the root with `/`, sorted. The same generation, and the same answer for the same
|
|
39
|
+
* paths, while no file it read, nor any file's directory, changed (by size and modification time:
|
|
40
|
+
* one `stat` each); else a new one, so a caller may key what it makes of the answer by it (and
|
|
41
|
+
* never changes it). `only` loads only the files whose text it passes; the answer is kept by its
|
|
42
|
+
* identity, so pass one function, not a new one per call.
|
|
43
|
+
*
|
|
44
|
+
* Served to the files, by specifier: `sanoma/resources` and `@sanoma-ai/workflows/resources`
|
|
45
|
+
* (`sanoma`, the constructors of the vendor `sanoma`, and `secret`); each connector's
|
|
46
|
+
* `<info.package>/resources` (its vendor's constructors, under its id); `sanoma/data` and
|
|
47
|
+
* `@sanoma-ai/workflows/data` (`collection`); `sanoma/site` and `@sanoma-ai/app/site`
|
|
48
|
+
* (`defineSite`); and to an app's `apps/<app>/app.ts` alone, `sanoma` and `@sanoma-ai/workflows`
|
|
49
|
+
* (`defineApp`). Anything else is resolved as Node does.
|
|
50
|
+
*/
|
|
51
|
+
export function loadModules(root, paths, connectors, { only, types = resourceTypesOf(connectors), } = {}) {
|
|
52
|
+
// Nothing to load, and a root that may not be there yet (a company not made): nothing to resolve.
|
|
53
|
+
if (!paths.length)
|
|
54
|
+
return new Map();
|
|
55
|
+
hook();
|
|
56
|
+
const real = realpathSync(root);
|
|
57
|
+
const gen = generationOf(real, connectors, types);
|
|
58
|
+
const files = paths.map((path) => join(real, relative(root, path)));
|
|
59
|
+
const byPaths = gen.answers.get(only ?? gen) ?? new Map();
|
|
60
|
+
gen.answers.set(only ?? gen, byPaths);
|
|
61
|
+
const key = files.join("\0");
|
|
62
|
+
const answered = byPaths.get(key);
|
|
63
|
+
if (answered)
|
|
64
|
+
return answered;
|
|
65
|
+
const answer = new Map();
|
|
66
|
+
for (const file of files) {
|
|
67
|
+
touch(gen, file);
|
|
68
|
+
if (only && !only(readFileSync(file, "utf8")))
|
|
69
|
+
continue;
|
|
70
|
+
const rel = relPath(gen.root, file);
|
|
71
|
+
const loaded = loadOne(gen, file, rel);
|
|
72
|
+
answer.set(rel, loaded);
|
|
73
|
+
if ("failedIn" in loaded)
|
|
74
|
+
answer.set(loaded.failedIn, gen.loaded.get(loaded.failedIn));
|
|
75
|
+
}
|
|
76
|
+
const result = new Map([...answer].toSorted(([a], [b]) => byOrder(a, b)));
|
|
77
|
+
// A value made in one file and exported by another is listed at the file that made it.
|
|
78
|
+
const owner = new Map();
|
|
79
|
+
for (const [rel, l] of result) {
|
|
80
|
+
if (!("exports" in l))
|
|
81
|
+
continue;
|
|
82
|
+
for (const [, value] of l.exports)
|
|
83
|
+
if (madeOf(value)?.file === rel)
|
|
84
|
+
owner.set(value, rel);
|
|
85
|
+
}
|
|
86
|
+
for (const [rel, l] of result) {
|
|
87
|
+
if (!("exports" in l))
|
|
88
|
+
continue;
|
|
89
|
+
const exports = l.exports
|
|
90
|
+
.filter(([, value]) => (owner.get(value) ?? rel) === rel)
|
|
91
|
+
.toSorted(([, a], [, b]) => byOrder(madeOf(a)?.seq ?? Infinity, madeOf(b)?.seq ?? Infinity));
|
|
92
|
+
result.set(rel, { exports });
|
|
93
|
+
}
|
|
94
|
+
byPaths.set(key, result);
|
|
95
|
+
answerGenerations.set(result, gen);
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* What `answer` (a `loadModules` answer) gave for `file`: its exports, or the error it threw (or a
|
|
100
|
+
* helper it imports threw) as a problem on one line, at the file that threw it; undefined when the
|
|
101
|
+
* answer does not have the file.
|
|
102
|
+
*/
|
|
103
|
+
export function exportsOf(answer, file) {
|
|
104
|
+
const loaded = answer.get(file);
|
|
105
|
+
if (loaded === undefined)
|
|
106
|
+
return undefined;
|
|
107
|
+
if ("failedIn" in loaded)
|
|
108
|
+
return exportsOf(answer, loaded.failedIn);
|
|
109
|
+
if ("exports" in loaded)
|
|
110
|
+
return loaded;
|
|
111
|
+
const { error, line, column } = loaded;
|
|
112
|
+
const message = errorMessage(error).replaceAll(/\s*\n\s*/g, " ");
|
|
113
|
+
return { problem: { file, ...(line !== undefined && { line, column: column ?? 1 }), message } };
|
|
114
|
+
}
|
|
115
|
+
/** The generation each answer is of. */
|
|
116
|
+
const answerGenerations = new WeakMap();
|
|
117
|
+
/** Every value the files of `answer` (a `loadModules` answer) made, exported or not, in the order made. */
|
|
118
|
+
export const madeWith = (answer) => (answerGenerations.get(answer)?.made ?? []).filter((value) => answer.has(madeOf(value).file));
|
|
119
|
+
/**
|
|
120
|
+
* The company files `answer` (a `loadModules` answer) was read from, by path relative to the root:
|
|
121
|
+
* its files and every company file they import, directly or not (or that another answer of its
|
|
122
|
+
* generation imported: never fewer).
|
|
123
|
+
*/
|
|
124
|
+
export const filesRead = (answer) => new Set([...answer.keys(), ...(answerGenerations.get(answer)?.imported ?? [])]);
|
|
125
|
+
/** One file of a generation, required once; an error placed at its own file, and reported there once. */
|
|
126
|
+
function loadOne(gen, file, rel) {
|
|
127
|
+
const done = gen.loaded.get(rel);
|
|
128
|
+
if (done)
|
|
129
|
+
return done;
|
|
130
|
+
let loaded;
|
|
131
|
+
try {
|
|
132
|
+
const { ns } = require(`${SCHEME}${gen.id}/${pathToFileURL(file).href}`);
|
|
133
|
+
loaded = { exports: Object.entries(ns) };
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
// A file that imports one that threw throws the same object: reported once, where it was thrown.
|
|
137
|
+
const at = typeof error === "object" ? gen.reported.get(error) : undefined;
|
|
138
|
+
if (at !== undefined)
|
|
139
|
+
loaded = { failedIn: at };
|
|
140
|
+
else {
|
|
141
|
+
const placed = placeOf(gen, error);
|
|
142
|
+
// Never over a file that loaded (a stack cut short at `Error.stackTraceLimit`): then it is this file's.
|
|
143
|
+
const there = placed && gen.loaded.get(placed.file);
|
|
144
|
+
const { file: own = rel, line, column } = there && "exports" in there ? {} : (placed ?? {});
|
|
145
|
+
if (typeof error === "object")
|
|
146
|
+
gen.reported.set(error, own);
|
|
147
|
+
const report = { error, ...(line !== undefined && { line }), ...(column !== undefined && { column }) };
|
|
148
|
+
gen.loaded.set(own, report);
|
|
149
|
+
loaded = own === rel ? report : { failedIn: own };
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
gen.loaded.set(rel, loaded);
|
|
153
|
+
return loaded;
|
|
154
|
+
}
|
|
155
|
+
/** A frame of a generation's company file in a stack: its URL, without the query, then the tag, line and column. */
|
|
156
|
+
const TAGGED_FRAME = new RegExp(`(file://[^\\s()?]*)\\?${QUERY}=([\\w-]+):(\\d+):(\\d+)`, "g");
|
|
157
|
+
/**
|
|
158
|
+
* Where an error belongs: the last (outermost) frame of its stack in one of the generation's
|
|
159
|
+
* files, the top level of the file that was running, not a helper it called in another file; for
|
|
160
|
+
* a syntax error, the file and line its stack starts with (the caret's column); none for an error
|
|
161
|
+
* thrown before any file ran (top-level `await`, an import Node cannot find).
|
|
162
|
+
*/
|
|
163
|
+
function placeOf(gen, error) {
|
|
164
|
+
const stack = isObject(error) && typeof error.stack === "string" ? error.stack : undefined;
|
|
165
|
+
if (stack === undefined)
|
|
166
|
+
return undefined;
|
|
167
|
+
const frame = [...stack.matchAll(TAGGED_FRAME)].findLast(([, , tag]) => tag === gen.id);
|
|
168
|
+
if (frame) {
|
|
169
|
+
const [, url, , line, column] = frame;
|
|
170
|
+
return { file: relPath(gen.root, fileURLToPath(url)), line: Number(line), column: Number(column) };
|
|
171
|
+
}
|
|
172
|
+
// A syntax error's stack starts `<path or URL>:<line>`, then the source and a caret under the column.
|
|
173
|
+
const [first = "", ...lines] = stack.split("\n");
|
|
174
|
+
const syntax = /^(.+):(\d+)$/.exec(first);
|
|
175
|
+
const path = syntax && (syntax[1].startsWith("file:") ? fileURLToPath(syntax[1]) : syntax[1]);
|
|
176
|
+
if (syntax && path && isAbsolute(path) && inside(gen.root, path)) {
|
|
177
|
+
const caret = lines.slice(0, lines.indexOf("")).findLast((line) => /^\s*\^+\s*$/.test(line));
|
|
178
|
+
return { file: relPath(gen.root, path), line: Number(syntax[2]), ...(caret && { column: caret.indexOf("^") + 1 }) };
|
|
179
|
+
}
|
|
180
|
+
return undefined;
|
|
181
|
+
}
|
|
182
|
+
const byOrder = (a, b) => (a < b ? -1 : a > b ? 1 : 0);
|
|
183
|
+
/** A file's size and modification time, or that it is gone. */
|
|
184
|
+
function stampOf(path) {
|
|
185
|
+
const stat = statSync(path, { bigint: true, throwIfNoEntry: false });
|
|
186
|
+
return stat ? `${stat.size} ${stat.mtimeNs}` : "gone";
|
|
187
|
+
}
|
|
188
|
+
/** Records a file of the generation, and its directory, as they are now: before it is read, so an edit after is seen. */
|
|
189
|
+
function touch(gen, file) {
|
|
190
|
+
for (const path of [file, dirname(file)])
|
|
191
|
+
if (!gen.stamps.has(path))
|
|
192
|
+
gen.stamps.set(path, stampOf(path));
|
|
193
|
+
}
|
|
194
|
+
/** The generation of `root` and these constructors: the current one while nothing it stamped changed, else a new one. */
|
|
195
|
+
function generationOf(root, connectors, types) {
|
|
196
|
+
const packages = connectors.flatMap((c) => {
|
|
197
|
+
const { id, info } = c[VENDOR];
|
|
198
|
+
return info?.package ? [`${info.package}/resources`, id] : [];
|
|
199
|
+
});
|
|
200
|
+
const typesKey = [...packages, ...[...types.values()].map(idOf)].join(" ");
|
|
201
|
+
for (const gen of registry.generations.values()) {
|
|
202
|
+
if (gen.root !== root || gen.typesKey !== typesKey)
|
|
203
|
+
continue;
|
|
204
|
+
if ([...gen.stamps].every(([path, stamp]) => stampOf(path) === stamp))
|
|
205
|
+
return gen;
|
|
206
|
+
registry.generations.delete(gen.id);
|
|
207
|
+
}
|
|
208
|
+
const gen = {
|
|
209
|
+
id: String(++registry.seq),
|
|
210
|
+
root,
|
|
211
|
+
typesKey,
|
|
212
|
+
virtual: new Map(),
|
|
213
|
+
stamps: new Map(),
|
|
214
|
+
made: [],
|
|
215
|
+
imported: new Set(),
|
|
216
|
+
loaded: new Map(),
|
|
217
|
+
reported: new Map(),
|
|
218
|
+
answers: new WeakMap(),
|
|
219
|
+
};
|
|
220
|
+
gen.virtual = runtimeModules(gen, connectors, types);
|
|
221
|
+
registry.generations.set(gen.id, gen);
|
|
222
|
+
return gen;
|
|
223
|
+
}
|
|
224
|
+
function idOf(object) {
|
|
225
|
+
let id = registry.ids.get(object);
|
|
226
|
+
if (id === undefined)
|
|
227
|
+
registry.ids.set(object, (id = ++registry.seq));
|
|
228
|
+
return id;
|
|
229
|
+
}
|
|
230
|
+
/** The runtime's modules a generation serves its files, by specifier: each constructor wrapped to record where it was called. */
|
|
231
|
+
function runtimeModules(gen, connectors, types) {
|
|
232
|
+
const byVendor = new Map();
|
|
233
|
+
for (const resource of types.values()) {
|
|
234
|
+
const constructors = byVendor.get(resource.vendor) ?? {};
|
|
235
|
+
// Frame 2 of `callerFile` is the wrapper's caller: the company file.
|
|
236
|
+
constructors[resource.type] = (fields, options) => record(gen, callerFile(), resource(fields, options), refersIn(fields));
|
|
237
|
+
byVendor.set(resource.vendor, constructors);
|
|
238
|
+
}
|
|
239
|
+
// A type the vendor does not declare is refused where it is called for, as `<vendor>.<type>`;
|
|
240
|
+
// an object's own names (`toString`, `toJSON`) are not types, so printing the vendor still works.
|
|
241
|
+
const constructorsOf = (vendor) => new Proxy(byVendor.get(vendor) ?? {}, {
|
|
242
|
+
get(target, key) {
|
|
243
|
+
if (typeof key !== "string" || key in target || key === "toJSON")
|
|
244
|
+
return Reflect.get(target, key);
|
|
245
|
+
const known = Object.keys(target);
|
|
246
|
+
throw new TypeError(`${vendor} has no resource type ${key}: its types are ${known.join(", ") || "none"}`);
|
|
247
|
+
},
|
|
248
|
+
});
|
|
249
|
+
const modules = new Map();
|
|
250
|
+
for (const connector of connectors) {
|
|
251
|
+
const { id, info } = connector[VENDOR];
|
|
252
|
+
if (info?.package)
|
|
253
|
+
modules.set(`${info.package}/resources`, { [id]: constructorsOf(id) });
|
|
254
|
+
}
|
|
255
|
+
for (const entry of SECRET_ENTRIES)
|
|
256
|
+
modules.set(entry, { sanoma: constructorsOf("sanoma"), secret });
|
|
257
|
+
const collection = (declaration) => {
|
|
258
|
+
const file = callerFile();
|
|
259
|
+
return record(gen, file, collectionIn(file === undefined ? undefined : appOfPath(relPath(gen.root, file)), declaration));
|
|
260
|
+
};
|
|
261
|
+
for (const entry of DATA_ENTRIES)
|
|
262
|
+
modules.set(entry, { collection });
|
|
263
|
+
const site = (definition) => record(gen, callerFile(), defineSite(definition));
|
|
264
|
+
for (const entry of SITE_ENTRIES)
|
|
265
|
+
modules.set(entry, { defineSite: site });
|
|
266
|
+
const app = (definition) => record(gen, callerFile(), defineApp(definition));
|
|
267
|
+
for (const entry of APP_ENTRIES)
|
|
268
|
+
modules.set(entry, { defineApp: app });
|
|
269
|
+
return modules;
|
|
270
|
+
}
|
|
271
|
+
/** Records where `value` was made, and returns it. */
|
|
272
|
+
function record(gen, file, value, refers = {}) {
|
|
273
|
+
gen.made.push(value);
|
|
274
|
+
registry.made.set(value, { file: file === undefined ? "" : relPath(gen.root, file), seq: gen.made.length, refers });
|
|
275
|
+
return value;
|
|
276
|
+
}
|
|
277
|
+
/** Each declared resource in a constructor's fields, by its dotted path, as the constructor walks them. */
|
|
278
|
+
function refersIn(value, at = "", into = {}) {
|
|
279
|
+
if (isDeclared(value))
|
|
280
|
+
into[at] = value;
|
|
281
|
+
else if (Array.isArray(value))
|
|
282
|
+
value.forEach((item, i) => refersIn(item, joinPath(at, String(i)), into));
|
|
283
|
+
else if (isObject(value))
|
|
284
|
+
for (const [field, item] of Object.entries(value))
|
|
285
|
+
refersIn(item, joinPath(at, field), into);
|
|
286
|
+
return into;
|
|
287
|
+
}
|
|
288
|
+
/** True for an app's `apps/<app>/app.ts`, by URL. */
|
|
289
|
+
const isAppFile = (gen, url) => {
|
|
290
|
+
const [top, app, file, ...rest] = relPath(gen.root, fileURLToPath(url)).split("/");
|
|
291
|
+
return top === APPS_DIR && app !== undefined && file === "app.ts" && !rest.length;
|
|
292
|
+
};
|
|
293
|
+
/** The generation a module URL belongs to: the query on a company file's, the first segment of the loader's own. */
|
|
294
|
+
function tagOf(url) {
|
|
295
|
+
if (url?.startsWith("file:"))
|
|
296
|
+
return new URL(url).searchParams.get(QUERY);
|
|
297
|
+
if (url?.startsWith(SCHEME))
|
|
298
|
+
return url.slice(SCHEME.length, url.indexOf("/"));
|
|
299
|
+
return null;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Registers the loader's hooks, once per process (the registry's flag, for two copies of the
|
|
303
|
+
* package). A file of a generation resolves the runtime's modules to the generation's, and each
|
|
304
|
+
* company file (under the root, outside `node_modules`) to itself tagged with the generation,
|
|
305
|
+
* recorded and stamped; an entry is a module exporting the tagged file's namespace as `ns`, since
|
|
306
|
+
* `require` of a `file:` URL drops its query (the CommonJS loader keys by file name).
|
|
307
|
+
*/
|
|
308
|
+
function hook() {
|
|
309
|
+
if (registry.hooked)
|
|
310
|
+
return;
|
|
311
|
+
registry.hooked = true;
|
|
312
|
+
registerHooks({
|
|
313
|
+
resolve(specifier, context, next) {
|
|
314
|
+
if (specifier.startsWith(SCHEME))
|
|
315
|
+
return { url: specifier, shortCircuit: true };
|
|
316
|
+
const tag = tagOf(context.parentURL);
|
|
317
|
+
const gen = tag === null ? undefined : registry.generations.get(tag);
|
|
318
|
+
if (gen === undefined)
|
|
319
|
+
return next(specifier, context);
|
|
320
|
+
if (gen.virtual.has(specifier) &&
|
|
321
|
+
(!APP_ENTRIES.has(specifier) || (context.parentURL.startsWith("file:") && isAppFile(gen, context.parentURL)))) {
|
|
322
|
+
return { url: `${SCHEME}${gen.id}/${specifier}`, shortCircuit: true };
|
|
323
|
+
}
|
|
324
|
+
const resolved = next(specifier, context);
|
|
325
|
+
if (!resolved.url.startsWith("file:"))
|
|
326
|
+
return resolved;
|
|
327
|
+
const url = new URL(resolved.url);
|
|
328
|
+
const file = fileURLToPath(url);
|
|
329
|
+
if (!inside(gen.root, file) || file.split(sep).includes("node_modules"))
|
|
330
|
+
return resolved;
|
|
331
|
+
touch(gen, file);
|
|
332
|
+
gen.imported.add(relPath(gen.root, file));
|
|
333
|
+
url.searchParams.set(QUERY, gen.id);
|
|
334
|
+
return { ...resolved, url: url.href };
|
|
335
|
+
},
|
|
336
|
+
load(url, context, next) {
|
|
337
|
+
if (!url.startsWith(SCHEME))
|
|
338
|
+
return next(url, context);
|
|
339
|
+
const tag = tagOf(url);
|
|
340
|
+
const rest = url.slice(url.indexOf("/") + 1);
|
|
341
|
+
if (rest.startsWith("file:")) {
|
|
342
|
+
const target = new URL(rest);
|
|
343
|
+
target.searchParams.set(QUERY, tag);
|
|
344
|
+
return { format: "module", source: `export * as ns from ${JSON.stringify(target.href)};`, shortCircuit: true };
|
|
345
|
+
}
|
|
346
|
+
// Read from the registry by the module itself, so a company file gets the generation's own objects.
|
|
347
|
+
const from = `globalThis[Symbol.for("sanoma.load")].generations.get(${JSON.stringify(tag)}).virtual.get(${JSON.stringify(rest)})`;
|
|
348
|
+
const names = Object.keys(registry.generations.get(tag)?.virtual.get(rest) ?? {});
|
|
349
|
+
const source = [
|
|
350
|
+
`const m = ${from};`,
|
|
351
|
+
...names.map((name, i) => `const e${i} = m[${JSON.stringify(name)}];\nexport { e${i} as ${JSON.stringify(name)} };`),
|
|
352
|
+
].join("\n");
|
|
353
|
+
return { format: "module", source, shortCircuit: true };
|
|
354
|
+
},
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
//# sourceMappingURL=load.js.map
|
package/dist/load.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../src/load.ts"],"names":[],"mappings":"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"}
|
package/dist/lockfile.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ConnectionRef } from "./connection.ts";
|
|
1
2
|
import type { ResourceProblem } from "./resources.ts";
|
|
2
3
|
/** Where the lockfile is, relative to the config's root. */
|
|
3
4
|
export declare const LOCKFILE = "resources/sanoma.lock.json";
|
|
@@ -5,6 +6,7 @@ export declare const LOCKFILE = "resources/sanoma.lock.json";
|
|
|
5
6
|
export interface Binding {
|
|
6
7
|
type: string;
|
|
7
8
|
id: string;
|
|
9
|
+
connection?: ConnectionRef;
|
|
8
10
|
}
|
|
9
11
|
/** The lockfile's content: by declaration key, `<file>#<export>` (the file relative to the config's root, with `/`). */
|
|
10
12
|
export type Bindings = Record<string, Binding>;
|
package/dist/lockfile.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { connectionRefSchema } from "./connection.js";
|
|
1
2
|
import { existsSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
2
3
|
import { join } from "node:path";
|
|
3
4
|
import { z } from "zod";
|
|
@@ -5,7 +6,11 @@ import { z } from "zod";
|
|
|
5
6
|
// hold intent only), as `package-lock.json` is from `package.json`. Only apply writes it.
|
|
6
7
|
/** Where the lockfile is, relative to the config's root. */
|
|
7
8
|
export const LOCKFILE = "resources/sanoma.lock.json";
|
|
8
|
-
const lockfile = z.record(z.string().regex(/^resources\/[^#]+#[^#]+$/), z.strictObject({
|
|
9
|
+
const lockfile = z.record(z.string().regex(/^resources\/[^#]+#[^#]+$/), z.strictObject({
|
|
10
|
+
type: z.string().regex(/^[^.\s]+\.[^.\s]+$/),
|
|
11
|
+
id: z.string().min(1),
|
|
12
|
+
connection: connectionRefSchema.optional(),
|
|
13
|
+
}));
|
|
9
14
|
/**
|
|
10
15
|
* The lockfile under `root`: no bindings when there is none, and no bindings with a problem when
|
|
11
16
|
* it is not JSON or not a map of `<file>#<export>` to `{ type, id }`.
|
|
@@ -35,7 +40,7 @@ export function readLockfile(root) {
|
|
|
35
40
|
export function serializeLockfile(bindings) {
|
|
36
41
|
const sorted = Object.entries(bindings)
|
|
37
42
|
.toSorted(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))
|
|
38
|
-
.map(([key, { type, id }]) => [key, { type, id }]);
|
|
43
|
+
.map(([key, { type, id, connection }]) => [key, { type, id, ...(connection && { connection }) }]);
|
|
39
44
|
return `${JSON.stringify(Object.fromEntries(sorted), null, 2)}\n`;
|
|
40
45
|
}
|
|
41
46
|
/** Writes the lockfile under `root` whole or not at all: to a file beside it, then renamed over it. Apply only. */
|
|
@@ -61,7 +66,7 @@ export function diffLockfiles(before, after) {
|
|
|
61
66
|
return was ? [{ key, type: was.type, kind: "unbind", from: was.id }] : [];
|
|
62
67
|
if (!was)
|
|
63
68
|
return [{ key, type: now.type, kind: "bind", to: now.id }];
|
|
64
|
-
if (was.id === now.id && was.type === now.type)
|
|
69
|
+
if (was.id === now.id && was.type === now.type && JSON.stringify(was.connection) === JSON.stringify(now.connection))
|
|
65
70
|
return [];
|
|
66
71
|
return [{ key, type: now.type, kind: "rebind", from: was.id, to: now.id }];
|
|
67
72
|
});
|