@sanoma-ai/workflows 0.9.1 → 0.10.1
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 +193 -50
- package/SECRET-SUPPORT.md +33 -0
- 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 +27 -13
- 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 +13 -24
- package/dist/apps.js +69 -68
- 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 +54 -0
- package/dist/authentication.js +138 -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 +36 -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 +62 -10
- package/dist/client.js +272 -47
- 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 +16 -4
- package/dist/config.js +89 -21
- package/dist/config.js.map +1 -1
- package/dist/connection.d.ts +389 -0
- package/dist/connection.js +657 -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/db.js +34 -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 +15 -175
- package/dist/describe.js +122 -35
- 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 +7 -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/fake.d.ts +13 -1
- package/dist/fake.js +70 -0
- package/dist/fake.js.map +1 -1
- package/dist/index.d.ts +11 -3
- 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 +2 -17
- package/dist/lint.js.map +1 -1
- package/dist/load.d.ts +85 -0
- package/dist/load.js +391 -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 +22 -5
- package/dist/op.js +20 -2
- package/dist/op.js.map +1 -1
- package/dist/outline.d.ts +5 -0
- package/dist/outline.js +46 -5
- package/dist/outline.js.map +1 -1
- package/dist/paths.d.ts +18 -2
- package/dist/paths.js +19 -7
- 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 +10 -4
- package/dist/resource.js +11 -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 +4 -0
- package/dist/run.js.map +1 -1
- package/dist/sandbox.d.ts +5 -2
- package/dist/sandbox.js +56 -7
- package/dist/sandbox.js.map +1 -1
- package/dist/scenario.d.ts +5 -0
- package/dist/scenario.js +3 -2
- 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/secret.d.ts +2 -0
- package/dist/secret.js +32 -0
- package/dist/secret.js.map +1 -1
- package/dist/shared.d.ts +21 -11
- package/dist/shared.js +41 -7
- package/dist/shared.js.map +1 -1
- package/dist/sites.d.ts +4 -93
- package/dist/sites.js +76 -84
- package/dist/sites.js.map +1 -1
- package/dist/steps.d.ts +3 -0
- 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 +1 -5
- package/package.json +6 -1
- package/src/apply-steps.ts +5 -2
- package/src/apply.ts +54 -21
- package/src/approvals.ts +7 -1
- package/src/apps.ts +71 -86
- package/src/ast.ts +6 -6
- package/src/authentication.ts +191 -0
- package/src/call-workflow.ts +5 -4
- package/src/call.ts +52 -9
- package/src/cedar.ts +14 -1
- package/src/change-steps.ts +7 -4
- package/src/change.ts +10 -0
- package/src/client.ts +346 -45
- package/src/collection.ts +10 -2
- package/src/config.ts +107 -19
- package/src/connection.ts +912 -0
- package/src/credentials.ts +94 -281
- package/src/db.ts +34 -2
- package/src/define.ts +7 -2
- package/src/definitions.ts +31 -0
- package/src/deployment-key.ts +23 -0
- package/src/describe.ts +150 -227
- package/src/description.ts +426 -0
- package/src/direct.ts +7 -0
- package/src/drift.ts +10 -2
- package/src/env.ts +4 -2
- package/src/fake.ts +71 -0
- package/src/index.ts +53 -1
- package/src/ledger.ts +3 -1
- package/src/lint.ts +2 -17
- package/src/load.ts +466 -0
- package/src/lockfile.ts +10 -3
- package/src/op.ts +41 -7
- package/src/outline.ts +53 -7
- package/src/paths.ts +21 -6
- package/src/plugin.ts +3 -24
- package/src/policy.ts +2 -0
- package/src/resource.ts +24 -6
- package/src/resources.ts +246 -301
- package/src/run.ts +4 -0
- package/src/sandbox.ts +61 -7
- package/src/scenario.ts +24 -6
- 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/secret.ts +29 -0
- package/src/shared.ts +44 -10
- package/src/sites.ts +85 -179
- package/src/steps.ts +3 -2
- 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/shared.d.ts
CHANGED
|
@@ -4,16 +4,17 @@ import type { ApprovalState, Approver, Principal } from "./define.ts";
|
|
|
4
4
|
import type { OpEntry, WorkflowEntry } from "./describe.ts";
|
|
5
5
|
import type { LedgerRecord } from "./ledger.ts";
|
|
6
6
|
import type { PreviewRequest } from "./policy.ts";
|
|
7
|
-
import type { DeclaredResource, ResourceProblem } from "./
|
|
7
|
+
import type { DeclaredResource, ResourceProblem } from "./description.ts";
|
|
8
8
|
import type { OutlineNode } from "./outline.ts";
|
|
9
9
|
export type { Declared, Declaring, FieldReference, References, Resource, ResourceFields, ResourceSpec, } from "./resource.ts";
|
|
10
|
-
export type { DeclaredResource, ResourceProblem } from "./
|
|
10
|
+
export type { At, DeclaredResource, ResourceProblem } from "./description.ts";
|
|
11
11
|
export type { DriftField, DriftReport, DriftResult, DriftStatus } from "./drift.ts";
|
|
12
12
|
export type { ApplyPlan, ApplyReport, ApplyResult, PlanAnswer, PlanStep } from "./apply.ts";
|
|
13
13
|
export type { CredentialStatus } from "./env.ts";
|
|
14
14
|
export type { ChangeDeploy, ChangeEvent, ChangeFacts, ChangeReport, ChangeState, ChangeVerified } from "./change.ts";
|
|
15
15
|
export type { AvailableApp, AvailableApps } from "./apps-list.ts";
|
|
16
16
|
export * from "./claims.ts";
|
|
17
|
+
export { defineSite, type SiteDefinition } from "./definitions.ts";
|
|
17
18
|
/**
|
|
18
19
|
* What a `ctx.sleep` without a `{ name }` is called, in its outline node and its ledger record
|
|
19
20
|
* (`name`); a name given may not be it.
|
|
@@ -49,6 +50,10 @@ export declare const SITE_NAME: RegExp;
|
|
|
49
50
|
* `api.data` and a site's path, so it is an identifier and a URL segment alike.
|
|
50
51
|
*/
|
|
51
52
|
export declare const APP_NAME: RegExp;
|
|
53
|
+
/** Where a company's apps are, under its root: `apps/<app>/`. */
|
|
54
|
+
export declare const APPS_DIR = "apps";
|
|
55
|
+
/** The app a path relative to a company's root is in: `<app>` under `apps/<app>/`; undefined for any other. */
|
|
56
|
+
export declare function appOfPath(rel: string): string | undefined;
|
|
52
57
|
/** A name declared under `apps/<app>/` as the runtime has it, `<app>.<name>`; one declared at the root as it is. */
|
|
53
58
|
export declare const qualified: (app: string | undefined, name: string) => string;
|
|
54
59
|
/** A workflow's or collection's name as its file writes it, `qualified`'s undone: without its app. */
|
|
@@ -271,18 +276,23 @@ export declare function fitsOp(pattern: string, op: string): boolean;
|
|
|
271
276
|
export declare const childLists: (node: OutlineNode) => OutlineNode[][];
|
|
272
277
|
/** Every node of an outline, nested ones included, in order. */
|
|
273
278
|
export declare function flatten(nodes: readonly OutlineNode[]): OutlineNode[];
|
|
274
|
-
/**
|
|
279
|
+
/**
|
|
280
|
+
* Where a problem is, `file:line:column`, `file#export` or `file`; undefined for one that is the
|
|
281
|
+
* config's, with no file.
|
|
282
|
+
*/
|
|
275
283
|
export declare const problemAt: (p: ResourceProblem) => string | undefined;
|
|
276
284
|
/**
|
|
277
|
-
* A problem as one line: `file:line:column: message`,
|
|
278
|
-
* the message alone without a file.
|
|
285
|
+
* A problem as one line: `file:line:column: message`, `file#export: message` or `file: message`
|
|
286
|
+
* without a position, or the message alone without a file.
|
|
287
|
+
*/
|
|
288
|
+
export declare function problemLine(p: ResourceProblem): string;
|
|
289
|
+
/**
|
|
290
|
+
* Where the export `name` (`default` for the default export) is in a file's text, as UTF-16
|
|
291
|
+
* offsets: from its `export` to the next `export`, `import`, `const` or comment at the start of a
|
|
292
|
+
* line, or the end, less trailing blank space. Read from the text alone, for highlighting it; undefined
|
|
293
|
+
* when no line starts it.
|
|
279
294
|
*/
|
|
280
|
-
export declare function
|
|
281
|
-
file?: string;
|
|
282
|
-
line?: number;
|
|
283
|
-
column?: number;
|
|
284
|
-
message: string;
|
|
285
|
-
}): string;
|
|
295
|
+
export declare function exportSpan(text: string, name: string): [number, number] | undefined;
|
|
286
296
|
/** A warning as one line, as `problemLine` with `warning: ` before its message: what is worth fixing but not wrong. */
|
|
287
297
|
export declare const warningLine: (p: Parameters<typeof problemLine>[0]) => string;
|
|
288
298
|
/**
|
package/dist/shared.js
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
// same functions, so a page answers these questions the way a run does.
|
|
4
4
|
// Sanoma's claims, data (`sanoma/claims` re-exports them).
|
|
5
5
|
export * from "./claims.js";
|
|
6
|
+
// A site's `site.ts` declares itself with it (`sanoma/site` calls it, typing its icon).
|
|
7
|
+
export { defineSite } from "./definitions.js";
|
|
6
8
|
/**
|
|
7
9
|
* What a `ctx.sleep` without a `{ name }` is called, in its outline node and its ledger record
|
|
8
10
|
* (`name`); a name given may not be it.
|
|
@@ -46,6 +48,13 @@ export const SITE_NAME = /^[a-z][a-z0-9-]*$/;
|
|
|
46
48
|
* `api.data` and a site's path, so it is an identifier and a URL segment alike.
|
|
47
49
|
*/
|
|
48
50
|
export const APP_NAME = /^[a-z][a-z0-9]*$/;
|
|
51
|
+
/** Where a company's apps are, under its root: `apps/<app>/`. */
|
|
52
|
+
export const APPS_DIR = "apps";
|
|
53
|
+
/** The app a path relative to a company's root is in: `<app>` under `apps/<app>/`; undefined for any other. */
|
|
54
|
+
export function appOfPath(rel) {
|
|
55
|
+
const [top, app, ...rest] = rel.split("/");
|
|
56
|
+
return top === APPS_DIR && app !== undefined && rest.length && APP_NAME.test(app) ? app : undefined;
|
|
57
|
+
}
|
|
49
58
|
/** A name declared under `apps/<app>/` as the runtime has it, `<app>.<name>`; one declared at the root as it is. */
|
|
50
59
|
export const qualified = (app, name) => app === undefined ? name : `${app}.${name}`;
|
|
51
60
|
/** A workflow's or collection's name as its file writes it, `qualified`'s undone: without its app. */
|
|
@@ -343,16 +352,41 @@ export const childLists = (node) => {
|
|
|
343
352
|
export function flatten(nodes) {
|
|
344
353
|
return nodes.flatMap((node) => [node, ...flatten(childLists(node).flat())]);
|
|
345
354
|
}
|
|
346
|
-
/** Where a data-file problem is, `file:line:column`; undefined for one that is the config's, with no file. */
|
|
347
|
-
export const problemAt = (p) => p.file === undefined ? undefined : `${p.file}:${p.line}:${p.column}`;
|
|
348
355
|
/**
|
|
349
|
-
*
|
|
350
|
-
*
|
|
356
|
+
* Where a problem is, `file:line:column`, `file#export` or `file`; undefined for one that is the
|
|
357
|
+
* config's, with no file.
|
|
351
358
|
*/
|
|
352
|
-
export
|
|
359
|
+
export const problemAt = (p) => {
|
|
353
360
|
if (p.file === undefined)
|
|
354
|
-
return
|
|
355
|
-
|
|
361
|
+
return undefined;
|
|
362
|
+
if (p.line !== undefined)
|
|
363
|
+
return `${p.file}:${p.line}:${p.column ?? 1}`;
|
|
364
|
+
return p.export === undefined ? p.file : `${p.file}#${p.export}`;
|
|
365
|
+
};
|
|
366
|
+
/**
|
|
367
|
+
* A problem as one line: `file:line:column: message`, `file#export: message` or `file: message`
|
|
368
|
+
* without a position, or the message alone without a file.
|
|
369
|
+
*/
|
|
370
|
+
export function problemLine(p) {
|
|
371
|
+
const at = problemAt(p);
|
|
372
|
+
return at === undefined ? p.message : `${at}: ${p.message}`;
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Where the export `name` (`default` for the default export) is in a file's text, as UTF-16
|
|
376
|
+
* offsets: from its `export` to the next `export`, `import`, `const` or comment at the start of a
|
|
377
|
+
* line, or the end, less trailing blank space. Read from the text alone, for highlighting it; undefined
|
|
378
|
+
* when no line starts it.
|
|
379
|
+
*/
|
|
380
|
+
export function exportSpan(text, name) {
|
|
381
|
+
const declared = name === "default" ? "default" : `const\\s+${name.replaceAll("$", "\\$")}`;
|
|
382
|
+
const start = new RegExp(`^export\\s+${declared}(?![\\w$])`, "m").exec(text);
|
|
383
|
+
if (!start)
|
|
384
|
+
return undefined;
|
|
385
|
+
const after = start.index + start[0].length;
|
|
386
|
+
// A comment at the start of a line is the next declaration's.
|
|
387
|
+
const next = /^(?:(?:export|import|const)\b|\/[/*])/m.exec(text.slice(after));
|
|
388
|
+
const end = next ? after + next.index : text.length;
|
|
389
|
+
return [start.index, start.index + text.slice(start.index, end).trimEnd().length];
|
|
356
390
|
}
|
|
357
391
|
/** A warning as one line, as `problemLine` with `warning: ` before its message: what is worth fixing but not wrong. */
|
|
358
392
|
export const warningLine = (p) => problemLine({ ...p, message: `warning: ${p.message}` });
|
package/dist/shared.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"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"}
|
package/dist/sites.d.ts
CHANGED
|
@@ -1,94 +1,6 @@
|
|
|
1
|
-
import { type LintProblem } from "./ast.ts";
|
|
2
1
|
import { type CedarPolicySource } from "./cedar.ts";
|
|
3
|
-
import type { ConfigDescription } from "./
|
|
4
|
-
|
|
5
|
-
export interface SiteCall {
|
|
6
|
-
/** What it calls: a workflow, a collection (`api.data.<name>.<op>`) or an operation (`api.<vendor>.<resource>.<op>`). */
|
|
7
|
-
kind: "workflow" | "collection" | "op";
|
|
8
|
-
/**
|
|
9
|
-
* The workflow's name (`RunForm`'s `workflow`, or the workflow whose `apiNameOf` is the name
|
|
10
|
-
* `api` gives; that name itself when none is), the collection's name, or the operation's id.
|
|
11
|
-
*/
|
|
12
|
-
target: string;
|
|
13
|
-
/**
|
|
14
|
-
* What it calls of the workflow (`start`, or a read of its runs: `result`, `latest`, …) or the
|
|
15
|
-
* collection (`list`, `save`, …), as written; absent for a workflow called as itself or by
|
|
16
|
-
* `RunForm`, which starts it, and for an operation.
|
|
17
|
-
*/
|
|
18
|
-
method?: string;
|
|
19
|
-
/** `<RunForm workflow="…" />` or a call on `api`, from `sanoma/site`. */
|
|
20
|
-
via: "RunForm" | "api";
|
|
21
|
-
/** The file, relative to the config's root, with `/`: `sites/sales/routes/index.tsx`. */
|
|
22
|
-
file: string;
|
|
23
|
-
/** From 1. */
|
|
24
|
-
line: number;
|
|
25
|
-
/** From 1, in UTF-16 code units. */
|
|
26
|
-
column: number;
|
|
27
|
-
/**
|
|
28
|
-
* The path of the page the file is, from its `createFileRoute` (or `createLazyFileRoute`) id: groups and pathless
|
|
29
|
-
* segments left out, no trailing slash (`/sites/sales`). Absent for a file that is no page,
|
|
30
|
-
* such as a component's.
|
|
31
|
-
*/
|
|
32
|
-
page?: string;
|
|
33
|
-
}
|
|
34
|
-
/** A page of a site: a route file's path, and for a page per content entry the kind it reads. */
|
|
35
|
-
export interface SitePage {
|
|
36
|
-
/** As `SiteCall.page` has it: `/sites/www`, `/sites/www/blog/$slug`. */
|
|
37
|
-
path: string;
|
|
38
|
-
/**
|
|
39
|
-
* For a path with one parameter (`$slug`), the content kind whose entries are its pages: the one
|
|
40
|
-
* kind its file reads by that parameter, `content.<kind>.get(params.slug)` (or `slug`,
|
|
41
|
-
* destructured) with `content` from `sanoma/site`.
|
|
42
|
-
*/
|
|
43
|
-
content?: string;
|
|
44
|
-
/**
|
|
45
|
-
* `false` when its route says `staticData: { sitemap: false }`, written out: the sitemap leaves it
|
|
46
|
-
* out. Its index route's `sitemap` (`true` or `false`) decides over a layout's at its path; a
|
|
47
|
-
* pathless or group layout's says nothing.
|
|
48
|
-
*/
|
|
49
|
-
sitemap?: false;
|
|
50
|
-
}
|
|
51
|
-
/** A site, `sites/<name>/` or an app's `apps/<app>/sites/<name>/`, and what it calls. */
|
|
52
|
-
export interface SiteEntry {
|
|
53
|
-
/** Its folder's name, `<app>/<name>` for an app's (`siteKey`): where it is mounted, `/sites/<name>`. */
|
|
54
|
-
name: string;
|
|
55
|
-
/** The app whose folder holds it (`apps/<app>/sites/`); absent for one at the root. */
|
|
56
|
-
app?: string;
|
|
57
|
-
/** `defineSite({ title })` in its `site.ts`, when that is a string literal. */
|
|
58
|
-
title?: string;
|
|
59
|
-
/** `defineSite({ icon })` in its `site.ts`: a Lucide icon's name, as written. */
|
|
60
|
-
icon?: string;
|
|
61
|
-
/** `defineSite({ public: true })`: served to visitors, not people. */
|
|
62
|
-
public?: true;
|
|
63
|
-
/** `defineSite({ login })`, the connector whose login half signs visitors in, as written: one that names none is among `problems`. */
|
|
64
|
-
login?: string;
|
|
65
|
-
/**
|
|
66
|
-
* `defineSite({ locales })`, a public site's languages, the first its default: kept only when
|
|
67
|
-
* every one is a `LOCALE`, written once, on a public site with no login; else a problem.
|
|
68
|
-
*/
|
|
69
|
-
locales?: string[];
|
|
70
|
-
/** The host a public site answers on: set by `startApp` from its `domains`, never by `readSites`. */
|
|
71
|
-
domain?: string;
|
|
72
|
-
/** Its pages, by path: one for each path its `routes/` files give (a layout and its index are one). */
|
|
73
|
-
pages: SitePage[];
|
|
74
|
-
/** Its calls, by file and then in the file's order. */
|
|
75
|
-
calls: SiteCall[];
|
|
76
|
-
/**
|
|
77
|
-
* Each call to a workflow, a collection or an operation the config does not have, or to an
|
|
78
|
-
* operation a page may not call directly, or, on a public site, that no policy lets a visitor
|
|
79
|
-
* make, at its file; then what is wrong in its `site.ts`.
|
|
80
|
-
*/
|
|
81
|
-
problems: (LintProblem & {
|
|
82
|
-
file: string;
|
|
83
|
-
})[];
|
|
84
|
-
/**
|
|
85
|
-
* On a public site, each page with one parameter whose file reads content the sitemap cannot
|
|
86
|
-
* tie to it (`SitePage.content`), so the sitemap lists none of its pages: at the first read.
|
|
87
|
-
*/
|
|
88
|
-
warnings: (LintProblem & {
|
|
89
|
-
file: string;
|
|
90
|
-
})[];
|
|
91
|
-
}
|
|
2
|
+
import type { ConfigDescription, SiteCall, SiteEntry, SitePage } from "./description.ts";
|
|
3
|
+
export type { SiteCall, SiteEntry, SitePage };
|
|
92
4
|
/**
|
|
93
5
|
* The sites under `root` (`sitesUnder`): each folder of `sites/`, then of each app's
|
|
94
6
|
* `apps/<app>/sites/`, with a `routes/` whose name is a URL segment, by key (as
|
|
@@ -119,13 +31,13 @@ export declare function siteContentPages(root: string): Record<string, string>;
|
|
|
119
31
|
/**
|
|
120
32
|
* Each site's languages (`defineSite({ locales })`, the first its default) under `root`, by name,
|
|
121
33
|
* for the sites whose `site.ts` gives them without a problem there: what the app's build gives
|
|
122
|
-
* its router (`virtual:sanoma/locales`).
|
|
34
|
+
* its router (`virtual:sanoma/locales`). Loaded as `readSites` loads them.
|
|
123
35
|
*/
|
|
124
36
|
export declare function siteLocales(root: string): Record<string, string[]>;
|
|
125
37
|
/**
|
|
126
38
|
* Each site's icon (`defineSite({ icon })`, a Lucide icon's name as written) under `root`, by name,
|
|
127
39
|
* for the sites whose `site.ts` gives one: the icons the app's build bundles (`virtual:sanoma/icons`).
|
|
128
|
-
*
|
|
40
|
+
* Loaded as `readSites` loads it.
|
|
129
41
|
*/
|
|
130
42
|
export declare function siteIcons(root: string): Record<string, string>;
|
|
131
43
|
/**
|
|
@@ -142,4 +54,3 @@ type SiteConnectors = {
|
|
|
142
54
|
vendors: ReadonlySet<string>;
|
|
143
55
|
logins: ReadonlySet<string>;
|
|
144
56
|
};
|
|
145
|
-
export {};
|
package/dist/sites.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { existsSync, readdirSync } from "node:fs";
|
|
2
|
-
import { basename, join
|
|
3
|
-
import {
|
|
2
|
+
import { basename, join } from "node:path";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { childrenOf, keyName, readSource } from "./ast.js";
|
|
4
5
|
import { visitorPermits } from "./cedar.js";
|
|
5
|
-
import { keyName } from "./datafile.js";
|
|
6
6
|
import { stringValue, unwrap } from "./outline.js";
|
|
7
|
-
import {
|
|
7
|
+
import { exportsOf, loadModules } from "./load.js";
|
|
8
|
+
import { APPS_DIR, appFolders, filesUnder, isDirectory, relPath, SITE_ENTRIES } from "./paths.js";
|
|
9
|
+
import { isObject } from "./resource.js";
|
|
8
10
|
import { START } from "./schema.js";
|
|
9
11
|
import { ANONYMOUS, apiNameOf, BUILT_IN_WORKFLOWS, DATA_VENDOR, LOCALE, SITE_NAME, siteKey, VISITORS, WORKFLOW_ACTION, } from "./shared.js";
|
|
10
12
|
/** Where a site's code is: its pages and its components. */
|
|
11
13
|
const SITE_DIRS = ["routes", "components"];
|
|
12
|
-
/** Where `api`, `RunForm` and `defineSite` come from: `sanoma/site`, which re-exports the app's. */
|
|
13
|
-
const SITE_SOURCES = new Set(["sanoma/site", "@sanoma-ai/app/site"]);
|
|
14
14
|
const KIND_NAMES = { workflow: "workflow", collection: "collection", op: "operation" };
|
|
15
15
|
/** What a route's loader and head name its path's parameters by. */
|
|
16
16
|
const PARAMS = new Set(["params"]);
|
|
@@ -103,15 +103,14 @@ export function readSites(root, description, connectors, policies) {
|
|
|
103
103
|
const read = readSiteFiles(root, dir);
|
|
104
104
|
const resolved = read.flatMap(({ uses }) => uses.filter((use) => !isAppCollection(use)).map(resolve));
|
|
105
105
|
const pages = pagesOf(read);
|
|
106
|
-
const
|
|
107
|
-
const { problems: optionProblems, ...options } = siteOptionsOf(join(root, siteFile), connectors);
|
|
106
|
+
const { problems: optionProblems, ...options } = siteDefinitionOf(root, dir, connectors);
|
|
108
107
|
const calls = resolved.map((r) => r.call);
|
|
109
108
|
const problems = [
|
|
110
109
|
...resolved.flatMap(({ call, problem }) => {
|
|
111
110
|
const message = problem ?? (options.public ? refused(call, options.login) : undefined);
|
|
112
111
|
return message === undefined ? [] : [{ file: call.file, line: call.line, column: call.column, message }];
|
|
113
112
|
}),
|
|
114
|
-
...optionProblems
|
|
113
|
+
...optionProblems,
|
|
115
114
|
];
|
|
116
115
|
const sorted = [...pages.keys()].toSorted().map((path) => pages.get(path));
|
|
117
116
|
// A page's file it warns of, unless another of its files (a lazy one, its layout) gives its kind.
|
|
@@ -143,7 +142,7 @@ const readSiteFiles = (root, dir) => SITE_DIRS.flatMap((sub) => filesUnder(join(
|
|
|
143
142
|
.toSorted()
|
|
144
143
|
.flatMap((path) => {
|
|
145
144
|
const file = readSource(path);
|
|
146
|
-
return typeof file === "string" ? [] : [readSiteFile(file,
|
|
145
|
+
return typeof file === "string" ? [] : [readSiteFile(file, relPath(root, path))];
|
|
147
146
|
});
|
|
148
147
|
/**
|
|
149
148
|
* Each site's pages under `root` whose entries are a content kind's (`SitePage.content`), path to
|
|
@@ -156,24 +155,24 @@ export function siteContentPages(root) {
|
|
|
156
155
|
/**
|
|
157
156
|
* Each site's languages (`defineSite({ locales })`, the first its default) under `root`, by name,
|
|
158
157
|
* for the sites whose `site.ts` gives them without a problem there: what the app's build gives
|
|
159
|
-
* its router (`virtual:sanoma/locales`).
|
|
158
|
+
* its router (`virtual:sanoma/locales`). Loaded as `readSites` loads them.
|
|
160
159
|
*/
|
|
161
160
|
export function siteLocales(root) {
|
|
162
161
|
const none = new Set();
|
|
163
162
|
return Object.fromEntries(sitesUnder(root).flatMap(({ name, dir }) => {
|
|
164
|
-
const { locales } =
|
|
163
|
+
const { locales } = siteDefinitionOf(root, dir, { vendors: none, logins: none });
|
|
165
164
|
return locales ? [[name, locales]] : [];
|
|
166
165
|
}));
|
|
167
166
|
}
|
|
168
167
|
/**
|
|
169
168
|
* Each site's icon (`defineSite({ icon })`, a Lucide icon's name as written) under `root`, by name,
|
|
170
169
|
* for the sites whose `site.ts` gives one: the icons the app's build bundles (`virtual:sanoma/icons`).
|
|
171
|
-
*
|
|
170
|
+
* Loaded as `readSites` loads it.
|
|
172
171
|
*/
|
|
173
172
|
export function siteIcons(root) {
|
|
174
173
|
const none = new Set();
|
|
175
174
|
return Object.fromEntries(sitesUnder(root).flatMap(({ name, dir }) => {
|
|
176
|
-
const { icon } =
|
|
175
|
+
const { icon } = siteDefinitionOf(root, dir, { vendors: none, logins: none });
|
|
177
176
|
return icon === undefined ? [] : [[name, icon]];
|
|
178
177
|
}));
|
|
179
178
|
}
|
|
@@ -206,9 +205,9 @@ const siteNames = (dir) => isDirectory(dir)
|
|
|
206
205
|
* any other only when it imports `api` or `RunForm`.
|
|
207
206
|
*/
|
|
208
207
|
function readSiteFile({ program, at }, file) {
|
|
209
|
-
const api = importedAs(program,
|
|
210
|
-
const runForm = importedAs(program,
|
|
211
|
-
const content = importedAs(program,
|
|
208
|
+
const api = importedAs(program, SITE_ENTRIES, "api");
|
|
209
|
+
const runForm = importedAs(program, SITE_ENTRIES, "RunForm");
|
|
210
|
+
const content = importedAs(program, SITE_ENTRIES, "content");
|
|
212
211
|
if (!api.size && !runForm.size && !file.includes("/routes/"))
|
|
213
212
|
return { uses: [] };
|
|
214
213
|
const found = [];
|
|
@@ -367,59 +366,59 @@ function importedAs(program, sources, imported) {
|
|
|
367
366
|
}
|
|
368
367
|
/** A property of an object literal that is written out: not a spread, its name not computed. */
|
|
369
368
|
const isWritten = (p) => p.type === "Property" && !p.computed;
|
|
370
|
-
/** What `site.ts`
|
|
371
|
-
const
|
|
369
|
+
/** What `site.ts`'s default export, `defineSite({ … })`, may say. */
|
|
370
|
+
const SiteDefinitionSchema = z.strictObject({
|
|
371
|
+
title: z.string().optional(),
|
|
372
|
+
icon: z.string().optional(),
|
|
373
|
+
public: z.boolean().optional(),
|
|
374
|
+
login: z.string().optional(),
|
|
375
|
+
locales: z.array(z.string()).optional(),
|
|
376
|
+
});
|
|
377
|
+
/** What `site.ts` says of who may see a site: read together or not at all. */
|
|
378
|
+
const ACCESS = ["public", "login", "locales"];
|
|
372
379
|
/**
|
|
373
|
-
* What
|
|
374
|
-
*
|
|
375
|
-
*
|
|
376
|
-
*
|
|
377
|
-
* `locales` is kept only when it has no problem.
|
|
380
|
+
* What the site in `dir` (relative to `root`) says of itself in its `site.ts`, loaded
|
|
381
|
+
* (`loadModules`, `defineSite` served from `sanoma/site`), and what is wrong there: its default
|
|
382
|
+
* export, `defineSite({ … })`, held to its schema; then a `login` on a site that is not public, or
|
|
383
|
+
* naming no connector of the config with a login half, and `locales` that are not a public site's
|
|
384
|
+
* (with no login) language tags, each once. `locales` is kept only when it has no problem. Nothing
|
|
385
|
+
* for no file, or no default export.
|
|
378
386
|
*/
|
|
379
|
-
function
|
|
380
|
-
const file =
|
|
381
|
-
if (
|
|
387
|
+
function siteDefinitionOf(root, dir, connectors) {
|
|
388
|
+
const file = `${dir}/site.ts`;
|
|
389
|
+
if (!existsSync(join(root, file)))
|
|
382
390
|
return { problems: [] };
|
|
383
|
-
|
|
384
|
-
const
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
const
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
const
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
if (
|
|
403
|
-
|
|
391
|
+
// A helper it imports threw: said at the helper.
|
|
392
|
+
const loaded = exportsOf(loadModules(root, [join(root, file)], []), file);
|
|
393
|
+
if (loaded === undefined)
|
|
394
|
+
return { problems: [] };
|
|
395
|
+
if ("problem" in loaded)
|
|
396
|
+
return { problems: [loaded.problem] };
|
|
397
|
+
const value = loaded.exports.find(([name]) => name === "default")?.[1];
|
|
398
|
+
if (value === undefined)
|
|
399
|
+
return { problems: [] };
|
|
400
|
+
const problem = (message) => ({ file, export: "default", message });
|
|
401
|
+
const problems = [];
|
|
402
|
+
let parsed = SiteDefinitionSchema.safeParse(value);
|
|
403
|
+
if (!parsed.success) {
|
|
404
|
+
const why = z.prettifyError(parsed.error).replaceAll(/\s*\n\s*/g, " ");
|
|
405
|
+
problems.push(problem(`its default export is \`defineSite({ … })\` from "sanoma/site": ${why}`));
|
|
406
|
+
// The fields it names wrongly (and the keys it does not know) left out, the rest still read:
|
|
407
|
+
// a bad icon keeps a site's `public`, `login` and `locales`. Those three say who may see it,
|
|
408
|
+
// so a wrong one leaves out all three: never a site read as public without its login.
|
|
409
|
+
const wrong = new Set(parsed.error.issues.flatMap((i) => (i.code === "unrecognized_keys" ? i.keys : i.path.slice(0, 1))));
|
|
410
|
+
if (ACCESS.some((key) => wrong.has(key)))
|
|
411
|
+
for (const key of ACCESS)
|
|
412
|
+
wrong.add(key);
|
|
413
|
+
if (!isObject(value) || !wrong.size)
|
|
414
|
+
return { problems };
|
|
415
|
+
parsed = SiteDefinitionSchema.safeParse(Object.fromEntries(Object.entries(value).filter(([key]) => !wrong.has(key))));
|
|
416
|
+
if (!parsed.success)
|
|
417
|
+
return { problems };
|
|
404
418
|
}
|
|
405
|
-
|
|
406
|
-
const property = (name) => options?.properties.findLast((p) => isWritten(p) && keyName(p.key) === name);
|
|
407
|
-
const title = stringValue(property("title")?.value);
|
|
408
|
-
// Cosmetic: one that is not a string (tsc refuses it) is shown as none, never a problem that stops a site.
|
|
409
|
-
const icon = stringValue(property("icon")?.value);
|
|
410
|
-
const publicAt = property("public");
|
|
411
|
-
const flag = unwrap(publicAt?.value);
|
|
412
|
-
const isPublic = flag?.type === "Literal" && flag.value === true;
|
|
413
|
-
const publicUnread = publicAt !== undefined && !(flag?.type === "Literal" && typeof flag.value === "boolean");
|
|
414
|
-
if (publicUnread)
|
|
415
|
-
problem(publicAt, unread("`public`", "`true` or `false`"));
|
|
416
|
-
const loginAt = property("login");
|
|
417
|
-
const login = stringValue(loginAt?.value);
|
|
419
|
+
const { title, icon, public: isPublic, login, locales } = parsed.data;
|
|
418
420
|
const loginProblem = () => {
|
|
419
|
-
if (
|
|
420
|
-
return unread("`login`", "a string");
|
|
421
|
-
// When `public` is what is wrong, it is said there.
|
|
422
|
-
if (!isPublic && !publicUnread)
|
|
421
|
+
if (!isPublic)
|
|
423
422
|
return "a login is for a public site: add `public: true`, or remove `login`";
|
|
424
423
|
if (!connectors.vendors.has(login))
|
|
425
424
|
return `login names "${login}", which is not a connector in sanoma.config.ts`;
|
|
@@ -427,40 +426,33 @@ function siteOptionsOf(path, connectors) {
|
|
|
427
426
|
return `login names "${login}", whose connector has no login half`;
|
|
428
427
|
return undefined;
|
|
429
428
|
};
|
|
430
|
-
const
|
|
431
|
-
if (
|
|
432
|
-
problem(
|
|
433
|
-
const
|
|
434
|
-
|
|
435
|
-
// A hole or a spread is no string.
|
|
436
|
-
const tags = list?.type === "ArrayExpression" ? list.elements.map((e) => stringValue(e)) : undefined;
|
|
437
|
-
const locales = tags?.every((tag) => tag !== undefined) ? tags : undefined;
|
|
438
|
-
const localesProblem = () => {
|
|
439
|
-
if (locales === undefined)
|
|
440
|
-
return unread("`locales`", "an array of strings");
|
|
441
|
-
if (!locales.length)
|
|
429
|
+
const loginMessage = login !== undefined ? loginProblem() : undefined;
|
|
430
|
+
if (loginMessage)
|
|
431
|
+
problems.push(problem(loginMessage));
|
|
432
|
+
const localesProblem = (list) => {
|
|
433
|
+
if (!list.length)
|
|
442
434
|
return "`locales` names a site's languages, its default first: give one or more, or remove it";
|
|
443
|
-
const bad =
|
|
435
|
+
const bad = list.find((locale) => !LOCALE.test(locale));
|
|
444
436
|
if (bad !== undefined)
|
|
445
437
|
return `"${bad}" is not a language tag such as "en", "fr" or "pt-BR"`;
|
|
446
|
-
const twice =
|
|
438
|
+
const twice = list.find((locale, i) => list.indexOf(locale) !== i);
|
|
447
439
|
if (twice !== undefined)
|
|
448
440
|
return `"${twice}" is in \`locales\` twice`;
|
|
449
|
-
|
|
450
|
-
if ((!isPublic && !publicUnread) || loginAt) {
|
|
441
|
+
if (!isPublic || login !== undefined) {
|
|
451
442
|
return "`locales` are for a public site with no login: add `public: true`, or remove `locales`";
|
|
452
443
|
}
|
|
453
444
|
return undefined;
|
|
454
445
|
};
|
|
455
|
-
const localesMessage =
|
|
446
|
+
const localesMessage = locales && localesProblem(locales);
|
|
456
447
|
if (localesMessage)
|
|
457
|
-
problem(
|
|
448
|
+
problems.push(problem(localesMessage));
|
|
458
449
|
return {
|
|
450
|
+
at: { file, export: "default" },
|
|
459
451
|
...(title !== undefined && { title }),
|
|
460
452
|
...(icon !== undefined && { icon }),
|
|
461
453
|
...(isPublic && { public: true }),
|
|
462
454
|
...(login !== undefined && { login }),
|
|
463
|
-
...(
|
|
455
|
+
...(locales && !localesMessage && { locales }),
|
|
464
456
|
problems,
|
|
465
457
|
};
|
|
466
458
|
}
|