@sanoma-ai/workflows 0.2.0 → 0.4.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.
Files changed (144) hide show
  1. package/README.md +121 -62
  2. package/dist/approvals.d.ts +11 -6
  3. package/dist/approvals.js +38 -10
  4. package/dist/approvals.js.map +1 -1
  5. package/dist/call-workflow.d.ts +16 -0
  6. package/dist/call-workflow.js +35 -0
  7. package/dist/call-workflow.js.map +1 -0
  8. package/dist/call.d.ts +33 -4
  9. package/dist/call.js +107 -42
  10. package/dist/call.js.map +1 -1
  11. package/dist/cedar.d.ts +87 -0
  12. package/dist/cedar.js +365 -0
  13. package/dist/cedar.js.map +1 -0
  14. package/dist/client.d.ts +85 -7
  15. package/dist/client.js +289 -25
  16. package/dist/client.js.map +1 -1
  17. package/dist/collection.d.ts +107 -0
  18. package/dist/collection.js +306 -0
  19. package/dist/collection.js.map +1 -0
  20. package/dist/config.d.ts +42 -14
  21. package/dist/config.js +82 -18
  22. package/dist/config.js.map +1 -1
  23. package/dist/constructors.d.ts +2 -0
  24. package/dist/constructors.js +5 -0
  25. package/dist/constructors.js.map +1 -0
  26. package/dist/data.d.ts +2 -0
  27. package/dist/data.js +3 -0
  28. package/dist/data.js.map +1 -0
  29. package/dist/datafile.d.ts +28 -2
  30. package/dist/datafile.js +118 -19
  31. package/dist/datafile.js.map +1 -1
  32. package/dist/db.d.ts +5 -3
  33. package/dist/db.js +88 -21
  34. package/dist/db.js.map +1 -1
  35. package/dist/define.d.ts +10 -4
  36. package/dist/define.js +1 -5
  37. package/dist/define.js.map +1 -1
  38. package/dist/describe.d.ts +45 -5
  39. package/dist/describe.js +72 -7
  40. package/dist/describe.js.map +1 -1
  41. package/dist/direct.d.ts +9 -0
  42. package/dist/direct.js +11 -0
  43. package/dist/direct.js.map +1 -0
  44. package/dist/errors.d.ts +16 -1
  45. package/dist/errors.js +30 -1
  46. package/dist/errors.js.map +1 -1
  47. package/dist/expectations.d.ts +3 -3
  48. package/dist/expectations.js +16 -7
  49. package/dist/expectations.js.map +1 -1
  50. package/dist/index.d.ts +8 -4
  51. package/dist/index.js +10 -4
  52. package/dist/index.js.map +1 -1
  53. package/dist/ledger.d.ts +12 -1
  54. package/dist/ledger.js +18 -11
  55. package/dist/ledger.js.map +1 -1
  56. package/dist/lint.d.ts +5 -4
  57. package/dist/lint.js +24 -7
  58. package/dist/lint.js.map +1 -1
  59. package/dist/op.d.ts +6 -0
  60. package/dist/op.js.map +1 -1
  61. package/dist/outline.d.ts +2 -0
  62. package/dist/outline.js +1 -1
  63. package/dist/outline.js.map +1 -1
  64. package/dist/paths.d.ts +4 -0
  65. package/dist/paths.js +17 -3
  66. package/dist/paths.js.map +1 -1
  67. package/dist/person.d.ts +61 -0
  68. package/dist/person.js +69 -0
  69. package/dist/person.js.map +1 -0
  70. package/dist/plugin.js +1 -1
  71. package/dist/plugin.js.map +1 -1
  72. package/dist/policy.d.ts +51 -55
  73. package/dist/policy.js +14 -36
  74. package/dist/policy.js.map +1 -1
  75. package/dist/resource.d.ts +21 -5
  76. package/dist/resource.js +12 -3
  77. package/dist/resource.js.map +1 -1
  78. package/dist/resources.d.ts +58 -6
  79. package/dist/resources.js +119 -26
  80. package/dist/resources.js.map +1 -1
  81. package/dist/run.d.ts +17 -1
  82. package/dist/run.js.map +1 -1
  83. package/dist/scenario.d.ts +16 -9
  84. package/dist/scenario.js +93 -20
  85. package/dist/scenario.js.map +1 -1
  86. package/dist/scenarios.d.ts +10 -6
  87. package/dist/scenarios.js +8 -4
  88. package/dist/scenarios.js.map +1 -1
  89. package/dist/schema.d.ts +32 -0
  90. package/dist/schema.js +225 -0
  91. package/dist/schema.js.map +1 -0
  92. package/dist/sdk.d.ts +34 -0
  93. package/dist/sdk.js +168 -0
  94. package/dist/sdk.js.map +1 -0
  95. package/dist/shared.d.ts +181 -5
  96. package/dist/shared.js +160 -7
  97. package/dist/shared.js.map +1 -1
  98. package/dist/sites.d.ts +52 -0
  99. package/dist/sites.js +174 -0
  100. package/dist/sites.js.map +1 -0
  101. package/dist/version.d.ts +3 -2
  102. package/dist/version.js +3 -2
  103. package/dist/version.js.map +1 -1
  104. package/dist/worker.d.ts +3 -2
  105. package/dist/worker.js +24 -4
  106. package/dist/worker.js.map +1 -1
  107. package/oxlint.json +5 -16
  108. package/package.json +8 -3
  109. package/src/approvals.ts +49 -13
  110. package/src/call-workflow.ts +44 -0
  111. package/src/call.ts +157 -45
  112. package/src/cedar.ts +493 -0
  113. package/src/client.ts +368 -37
  114. package/src/collection.ts +431 -0
  115. package/src/config.ts +131 -34
  116. package/src/constructors.ts +4 -0
  117. package/src/data.ts +10 -0
  118. package/src/datafile.ts +141 -21
  119. package/src/db.ts +90 -22
  120. package/src/define.ts +11 -9
  121. package/src/describe.ts +113 -10
  122. package/src/direct.ts +15 -0
  123. package/src/errors.ts +36 -1
  124. package/src/expectations.ts +17 -8
  125. package/src/index.ts +33 -2
  126. package/src/ledger.ts +35 -17
  127. package/src/lint.ts +29 -12
  128. package/src/op.ts +6 -0
  129. package/src/outline.ts +1 -1
  130. package/src/paths.ts +18 -3
  131. package/src/person.ts +75 -0
  132. package/src/plugin.ts +1 -1
  133. package/src/policy.ts +59 -63
  134. package/src/resource.ts +35 -8
  135. package/src/resources.ts +165 -24
  136. package/src/run.ts +18 -1
  137. package/src/scenario.ts +128 -33
  138. package/src/scenarios.ts +15 -8
  139. package/src/schema.ts +261 -0
  140. package/src/sdk.ts +211 -0
  141. package/src/shared.ts +271 -8
  142. package/src/sites.ts +220 -0
  143. package/src/version.ts +3 -2
  144. package/src/worker.ts +29 -6
package/dist/policy.d.ts CHANGED
@@ -1,14 +1,10 @@
1
- import { z } from "zod";
2
- import { type ApprovalState, Approver, type Principal } from "./define.ts";
1
+ import { type ApprovalState, type Approver, type Principal } from "./define.ts";
3
2
  import type { Effect, Op } from "./op.ts";
4
3
  /** An operation as a policy sees it: plain data, without its schemas. */
5
4
  export type PolicyOp = Pick<Op, "id" | "vendor" | "resource" | "name" | "effect">;
6
- /**
7
- * An operation as a policy sees it, for a `PolicyCall`: what the runtime passes, so a policy
8
- * test can build a call from the connector, `{ op: policyOpOf(shop.order.refund), ... }`.
9
- */
5
+ /** An operation as a policy sees it, for a `PolicyCall`: what the runtime passes. */
10
6
  export declare const policyOpOf: ({ id, vendor, resource, name, effect }: Op) => PolicyOp;
11
- /** What a policy sees for each operation a run calls. Plain data, so a test can build one by hand. */
7
+ /** What a policy sees for each operation a run calls: plain data. */
12
8
  export interface PolicyCall {
13
9
  op: PolicyOp;
14
10
  /** The same as `op.effect`. */
@@ -28,6 +24,8 @@ export interface PolicyCall {
28
24
  workflow: string;
29
25
  approvals: readonly ApprovalState[];
30
26
  };
27
+ /** For a collection's `save` or `delete`: the record as it was, when there was one. */
28
+ before?: unknown;
31
29
  }
32
30
  /**
33
31
  * A policy's answer. `reasons` say why, for whoever reads the ledger; they change nothing
@@ -41,70 +39,68 @@ export type Decision = {
41
39
  reason: string;
42
40
  reasons?: string[];
43
41
  } | ApproveDecision;
44
- /**
45
- * Hold the call until the approver decides: a person's id, or `{ group }` for anyone in it.
46
- * The approval covers the held operation, and `covers` adds others, so a policy can let their
47
- * later calls through once it is approved.
48
- */
42
+ /** Hold the call until the approver decides: a person's id, or `{ group }` for anyone in it. */
49
43
  interface ApproveDecision {
50
44
  kind: "approve";
51
45
  approver: Approver;
52
46
  title?: string;
53
- covers?: Op[];
47
+ reasons?: string[];
54
48
  }
55
- /**
56
- * Checks a policy's answer. Parsing also copies it, so nothing else the policy returned is kept,
57
- * and turns `covers` into op ids.
58
- */
59
- export declare const DecisionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
60
- kind: z.ZodLiteral<"allow">;
61
- reasons: z.ZodOptional<z.ZodArray<z.ZodString>>;
62
- }, z.core.$strip>, z.ZodObject<{
63
- kind: z.ZodLiteral<"deny">;
64
- reason: z.ZodString;
65
- reasons: z.ZodOptional<z.ZodArray<z.ZodString>>;
66
- }, z.core.$strip>, z.ZodObject<{
67
- kind: z.ZodLiteral<"approve">;
68
- approver: z.ZodType<Approver, unknown, z.core.$ZodTypeInternals<Approver, unknown>>;
69
- title: z.ZodOptional<z.ZodString>;
70
- covers: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodObject<{
71
- id: z.ZodString;
72
- }, z.core.$strip>, z.ZodTransform<string, {
73
- id: string;
74
- }>>>>;
75
- }, z.core.$strip>], "kind">;
76
- /**
77
- * A decision as checked and as the ledger records it: `covers` by op id, and the `version` of
78
- * the policy that made it, when it has one.
79
- */
80
- export type RecordedDecision = z.output<typeof DecisionSchema> & {
49
+ /** A decision as the ledger records it, with the `version` of the policy that made it, when it has one. */
50
+ export type RecordedDecision = Decision & {
81
51
  policyVersion?: string;
82
52
  };
83
53
  export declare const allow: (reasons?: string[]) => Decision;
84
54
  export declare const deny: (reason: string, reasons?: string[]) => Decision;
85
- /** Holds the call for `approver`. `covers` lists other operations the approval also stands for. */
86
- export declare function approve(approver: Approver, { title, covers }?: {
55
+ /** Holds the call for `approver`; `reasons`, the rules that held it, as `allow` and `deny` take them. */
56
+ export declare function approve(approver: Approver, { title, reasons }?: {
87
57
  title?: string;
88
- covers?: Op[];
58
+ reasons?: string[];
89
59
  }): Decision;
90
60
  /**
91
- * Decides whether a run may make an operation call: allow it, deny it (the run fails),
92
- * or hold it until someone approves. Runs are replayed after a restart, so a policy must
93
- * decide the same way every time from the call alone: no clock, randomness or network.
94
- * `lintWorkflow` checks a policy file for these too. Each decision is recorded once made,
95
- * and a replay reuses it, but a call interrupted before that is decided again. A policy
96
- * must not have side effects.
61
+ * Decides whether a run may make an operation call: allow it, deny it (the run fails), or hold it
62
+ * until someone approves. A company's is made from its Cedar files (`cedarPolicy`); a repo with
63
+ * none has `allowAll`. Each decision is recorded once made, and a replay reuses it, but a call
64
+ * interrupted before that is decided again.
97
65
  */
98
- export type Policy = ((call: PolicyCall) => Decision | Promise<Decision>) & {
99
- /** Names this version of the policy, from `definePolicy(fn, { version })`. */
66
+ export type Policy = ((call: PolicyCall) => Decision) & {
67
+ /** Names this version of the policy: a hash of the Cedar policies' ids and text. */
100
68
  readonly version?: string;
69
+ /** What the policy would answer for each request ahead of the call, its input unknown. */
70
+ readonly preview: (requests: readonly PreviewRequest[]) => PreviewAnswer[];
71
+ /**
72
+ * May `actor` start a run of `workflow` with `input` (the action `workflow:<name>`), given the
73
+ * run's `approvals` so far (none before it starts)?
74
+ */
75
+ readonly start: (actor: Principal, workflow: string, input: unknown, approvals?: readonly ApprovalState[]) => Decision;
101
76
  };
102
- /** A policy, optionally named with a version so a reader can tell which rules decided a call. */
103
- export declare function definePolicy(policy: (call: PolicyCall) => Decision | Promise<Decision>, options?: {
104
- version?: string;
105
- }): Policy;
106
- /** Allows every operation call. A config says so explicitly: `policy: allowAll`. */
77
+ /** A question asked ahead of a call: may `principal` take `action` (an operation, or `workflow:<name>` to start one) on `resource` (an operation's target)? */
78
+ export interface PreviewRequest {
79
+ principal: Principal;
80
+ action: {
81
+ id: string;
82
+ effect?: Effect;
83
+ };
84
+ resource?: string;
85
+ }
86
+ /**
87
+ * A preview's answer: `depends` when the unknown input decides it. `rule` is the Cedar policy
88
+ * behind a hold, a deny or a dependence; `approver`, a hold's.
89
+ */
90
+ export interface PreviewAnswer {
91
+ answer: "allow" | "hold" | "deny" | "depends";
92
+ rule?: {
93
+ id: string;
94
+ file: string;
95
+ title?: string;
96
+ reason?: string;
97
+ };
98
+ approver?: Approver;
99
+ }
100
+ /** Allows every operation call and run start: the policy of a repo with no `policies/**\/*.cedar`. */
107
101
  export declare const allowAll: Policy;
102
+ /** Refuses every operation call and run start, and previews each as a deny, saying `reason`. */
103
+ export declare const denyAll: (reason: string) => Policy;
108
104
  /**
109
105
  * True when an approval in the run was approved, covers the operation, and was addressed to
110
106
  * `approver`. Check all three: a workflow can request an approval covering any operation from
package/dist/policy.js CHANGED
@@ -1,9 +1,5 @@
1
- import { z } from "zod";
2
- import { Approver, Covers, sameApprover } from "./define.js";
3
- /**
4
- * An operation as a policy sees it, for a `PolicyCall`: what the runtime passes, so a policy
5
- * test can build a call from the connector, `{ op: policyOpOf(shop.order.refund), ... }`.
6
- */
1
+ import { sameApprover } from "./define.js";
2
+ /** An operation as a policy sees it, for a `PolicyCall`: what the runtime passes. */
7
3
  export const policyOpOf = ({ id, vendor, resource, name, effect }) => ({
8
4
  id,
9
5
  vendor,
@@ -11,44 +7,26 @@ export const policyOpOf = ({ id, vendor, resource, name, effect }) => ({
11
7
  name,
12
8
  effect,
13
9
  });
14
- const ReasonList = z.array(z.string(), { error: "reasons must be a list of strings" }).optional();
15
- /**
16
- * Checks a policy's answer. Parsing also copies it, so nothing else the policy returned is kept,
17
- * and turns `covers` into op ids.
18
- */
19
- export const DecisionSchema = z.discriminatedUnion("kind", [
20
- z.object({ kind: z.literal("allow"), reasons: ReasonList }),
21
- z.object({ kind: z.literal("deny"), reason: z.string({ error: "deny needs a reason" }), reasons: ReasonList }),
22
- z.object({
23
- kind: z.literal("approve"),
24
- approver: Approver,
25
- title: z.string({ error: "the title must be a string" }).optional(),
26
- covers: Covers,
27
- }),
28
- ], { error: "not a decision" });
29
10
  export const allow = (reasons) => reasons === undefined ? { kind: "allow" } : { kind: "allow", reasons };
30
11
  export const deny = (reason, reasons) => reasons === undefined ? { kind: "deny", reason } : { kind: "deny", reason, reasons };
31
- /** Holds the call for `approver`. `covers` lists other operations the approval also stands for. */
32
- export function approve(approver, { title, covers } = {}) {
12
+ /** Holds the call for `approver`; `reasons`, the rules that held it, as `allow` and `deny` take them. */
13
+ export function approve(approver, { title, reasons } = {}) {
33
14
  return {
34
15
  kind: "approve",
35
16
  approver,
36
17
  ...(title === undefined ? {} : { title }),
37
- ...(covers === undefined ? {} : { covers }),
18
+ ...(reasons === undefined ? {} : { reasons }),
38
19
  };
39
20
  }
40
- /** A policy, optionally named with a version so a reader can tell which rules decided a call. */
41
- export function definePolicy(policy, options = {}) {
42
- if (typeof policy !== "function")
43
- throw new Error("definePolicy expects a function of the call");
44
- if (options.version !== undefined && (typeof options.version !== "string" || !options.version.trim())) {
45
- throw new Error("definePolicy: `version` must be a non-empty string");
46
- }
47
- const defined = (call) => policy(call);
48
- return Object.freeze(options.version === undefined ? defined : Object.assign(defined, { version: options.version }));
49
- }
50
- /** Allows every operation call. A config says so explicitly: `policy: allowAll`. */
51
- export const allowAll = definePolicy(() => allow());
21
+ /** A policy that decides every call and start as `decide` does, and previews each as `answer`. */
22
+ const decidingAll = (decide, answer) => Object.freeze(Object.assign(decide, {
23
+ start: decide,
24
+ preview: (requests) => requests.map(() => ({ answer })),
25
+ }));
26
+ /** Allows every operation call and run start: the policy of a repo with no `policies/**\/*.cedar`. */
27
+ export const allowAll = decidingAll(() => allow(), "allow");
28
+ /** Refuses every operation call and run start, and previews each as a deny, saying `reason`. */
29
+ export const denyAll = (reason) => decidingAll(() => deny(reason), "deny");
52
30
  /**
53
31
  * True when an approval in the run was approved, covers the operation, and was addressed to
54
32
  * `approver`. Check all three: a workflow can request an approval covering any operation from
@@ -1 +1 @@
1
- {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqD,YAAY,EAAE,MAAM,aAAa,CAAC;AAM9F,qFAAqF;AACrF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAM,EAAY,EAAE,CAAC,CAAC;IACnF,EAAE;IACF,MAAM;IACN,QAAQ;IACR,IAAI;IACJ,MAAM;CACP,CAAC,CAAC;AA0CH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAkB,EAAY,EAAE,CACpD,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACzE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,OAAkB,EAAY,EAAE,CACnE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAEvF,yGAAyG;AACzG,MAAM,UAAU,OAAO,CAAC,QAAkB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAA2C,EAAE;IACzG,OAAO;QACL,IAAI,EAAE,SAAS;QACf,QAAQ;QACR,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QACzC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;KAC9C,CAAC;AACJ,CAAC;AA0CD,kGAAkG;AAClG,MAAM,WAAW,GAAG,CAAC,MAAsB,EAAE,MAAwB,EAAU,EAAE,CAC/E,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,CAAC,QAAmC,EAAmB,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;CACpG,CAAC,CACH,CAAC;AAEJ,sGAAsG;AACtG,MAAM,CAAC,MAAM,QAAQ,GAAW,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;AAEpE,gGAAgG;AAChG,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAE3F;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,SAAmC,EAAE,IAAY,EAAE,QAAkB;IAC/F,OAAO,SAAS,CAAC,IAAI,CACnB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAChG,CAAC;AACJ,CAAC"}
@@ -22,8 +22,8 @@ export interface ResourceFields {
22
22
  }
23
23
  /** Where a field names another declared resource: see `ResourceFields.references`. */
24
24
  export interface FieldReference {
25
- /** The `<vendor>.<type>` of the resource it names. */
26
- readonly type: string;
25
+ /** The `<vendor>.<type>` of the resource it names, or the types it may name one of. */
26
+ readonly type: string | readonly string[];
27
27
  /**
28
28
  * The fields of that resource's state the vendor may hold here instead of its `name`, such as
29
29
  * GitHub's `node_id`: a drift check takes any of their values, read in the same run, as the
@@ -82,6 +82,12 @@ export interface ResourceSpec<S extends z.ZodObject = z.ZodObject> {
82
82
  * recreated database looks fine and has lost its data. Default: true for a host, else false.
83
83
  */
84
84
  stateless?: boolean;
85
+ /**
86
+ * True when there is no vendor object behind a declaration: the repo is all there is of it (the
87
+ * runtime's people, `sanoma.person`). Such a type has no operations, so no driver, and drift and
88
+ * apply pass its resources by. Default false.
89
+ */
90
+ vendorless?: boolean;
85
91
  /**
86
92
  * Operations apply calls, in order, right after it creates one of its objects and binds it: a
87
93
  * Supabase project's health, until it is healthy, then its database URL stored.
@@ -140,8 +146,8 @@ type WithSecrets<V> = V extends string ? V | Secret : V extends readonly (infer
140
146
  type DeclaringAt<T, R extends References, P extends string> = T extends readonly (infer I)[] ? DeclaringAt<I, R, P>[] : T extends object ? {
141
147
  [K in keyof T]: K extends string ? DeclaringField<T[K], R, P extends "" ? K : `${P}.${K}`> : T[K];
142
148
  } : WithSecrets<T>;
143
- type DeclaringField<V, R extends References, P extends string> = P extends keyof R ? WithSecrets<V> | DeclaredOf<R[P]["type"]> : [Extract<keyof R, `${P}.${string}`>] extends [never] ? WithSecrets<V> : DeclaringAt<V, R, P>;
144
- type DeclaredOf<Id> = Id extends string ? Declared<Id> : never;
149
+ type DeclaringField<V, R extends References, P extends string> = P extends keyof R ? V extends readonly (infer I)[] ? (WithSecrets<I> | DeclaredOf<R[P]["type"]>)[] : WithSecrets<V> | DeclaredOf<R[P]["type"]> : [Extract<keyof R, `${P}.${string}`>] extends [never] ? WithSecrets<V> : DeclaringAt<V, R, P>;
150
+ type DeclaredOf<Id> = Id extends string ? Declared<Id> : Id extends readonly (infer E)[] ? DeclaredOf<E> : never;
145
151
  /** What a plan of a change says will happen, as `PlanResponse.Action` names it. */
146
152
  export declare const PLAN_ACTIONS: readonly ["none", "create", "update", "replace", "delete"];
147
153
  export type PlanAction = (typeof PLAN_ACTIONS)[number];
@@ -255,11 +261,19 @@ export declare function isChangeOp(op: {
255
261
  readonly resource: string;
256
262
  readonly name: string;
257
263
  }, types: ReadonlyMap<string, Pick<Resource, "writable">>): boolean;
264
+ /**
265
+ * True for an operation of a declared resource type (`read`, `import`, and a writable type's
266
+ * `plan` and change operations), which only drift and apply call: by its vendor and resource.
267
+ */
268
+ export declare const isResourceOp: (op: {
269
+ readonly vendor: string;
270
+ readonly resource: string;
271
+ }, types: ReadonlyMap<string, unknown>) => boolean;
258
272
  /**
259
273
  * A resource type: call it to declare a resource in a data file, and give it to
260
274
  * `defineConnector` as a group, under its `type`: `defineConnector("github", { repository })`.
261
275
  */
262
- export interface Resource<S extends z.ZodObject = z.ZodObject, Id extends string = string, R extends References = {}, W extends boolean = boolean> extends Readonly<Required<Omit<ResourceSpec<S>, "identity" | "find" | "writable" | "host" | "stateless" | "afterCreate">>>, Readonly<Pick<ResourceSpec<S>, "identity" | "find" | "host" | "afterCreate">> {
276
+ export interface Resource<S extends z.ZodObject = z.ZodObject, Id extends string = string, R extends References = {}, W extends boolean = boolean> extends Readonly<Required<Omit<ResourceSpec<S>, "identity" | "find" | "writable" | "host" | "stateless" | "afterCreate" | "vendorless">>>, Readonly<Pick<ResourceSpec<S>, "identity" | "find" | "host" | "afterCreate">> {
263
277
  (desired: Declaring<z.input<S>, R>): Declared<Id, z.input<S>>;
264
278
  /** `read` and `import`, each effect `read`, idempotent, with the id as `target`; for a writable type, the change operations too. */
265
279
  readonly ops: ResourceOps<S, W>;
@@ -267,6 +281,8 @@ export interface Resource<S extends z.ZodObject = z.ZodObject, Id extends string
267
281
  readonly writable: W;
268
282
  /** True when apply may recreate or replace its objects as routine: they keep no data. */
269
283
  readonly stateless: boolean;
284
+ /** True when there is no vendor object behind it (`ResourceSpec.vendorless`): it has no operations. */
285
+ readonly vendorless: boolean;
270
286
  readonly [RESOURCE]: true;
271
287
  }
272
288
  /** True for a plain object: not null, not a list. */
package/dist/resource.js CHANGED
@@ -58,6 +58,11 @@ const target = ({ id }) => id;
58
58
  export function isChangeOp(op, types) {
59
59
  return (CHANGE_OPS.includes(op.name) && types.get(`${op.vendor}.${op.resource}`)?.writable === true);
60
60
  }
61
+ /**
62
+ * True for an operation of a declared resource type (`read`, `import`, and a writable type's
63
+ * `plan` and change operations), which only drift and apply call: by its vendor and resource.
64
+ */
65
+ export const isResourceOp = (op, types) => types.has(`${op.vendor}.${op.resource}`);
61
66
  /** True for a plain object: not null, not a list. */
62
67
  export const isObject = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
63
68
  /** `path.name`, or `name` at the top: a field's dotted path. */
@@ -275,6 +280,8 @@ export function defineResource(spec) {
275
280
  const what = `${vendor}.${type}`;
276
281
  if (host)
277
282
  checkHost(what, host, spec);
283
+ if (spec.vendorless && (writable || host))
284
+ throw new Error(`${what}: a vendorless type has no object to change or host`);
278
285
  const title = spec.title.toLowerCase();
279
286
  const io = opsOf(schema);
280
287
  // The policy's `target` for a create: the type, as no object has an id yet.
@@ -330,7 +337,7 @@ export function defineResource(spec) {
330
337
  opaque,
331
338
  },
332
339
  };
333
- const ops = (writable ? { ...base, ...changeOps } : base);
340
+ const ops = (spec.vendorless ? {} : writable ? { ...base, ...changeOps } : base);
334
341
  const named = new Set(identity?.match(/[A-Za-z_][\w.]*/g));
335
342
  const owned = new Set(fields.vendorOwned.filter((path) => !named.has(path)));
336
343
  const references = fields.references ?? {};
@@ -357,8 +364,9 @@ export function defineResource(spec) {
357
364
  const wants = references[path];
358
365
  if (wants === undefined)
359
366
  throw new Error(`${what}: ${at} takes a value, not a resource (${id} ${value.name})`);
360
- if (wants.type !== id)
361
- throw new Error(`${what}: ${at} names a resource of type ${wants.type}, not ${id} (${value.name})`);
367
+ const types = [wants.type].flat();
368
+ if (!types.includes(id))
369
+ throw new Error(`${what}: ${at} names a resource of type ${types.join(" or ")}, not ${id} (${value.name})`);
362
370
  if (value.name === undefined)
363
371
  throw new Error(`${what}: ${at} names a ${id}, which has no identity to name it by`);
364
372
  refs[at] = `${id}:${value.name}`;
@@ -411,6 +419,7 @@ export function defineResource(spec) {
411
419
  writable,
412
420
  ...(host && { host }),
413
421
  stateless: spec.stateless ?? host !== undefined,
422
+ vendorless: spec.vendorless ?? false,
414
423
  ...(spec.afterCreate && { afterCreate: spec.afterCreate }),
415
424
  ops,
416
425
  // A symbol, so `defineConnector` tells a resource type from a group of operations.
@@ -1 +1 @@
1
- {"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
- import { type SanomaConfig } from "./config.ts";
2
1
  import { type Binding, type Bindings } from "./lockfile.ts";
3
2
  import { type Connector } from "./op.ts";
4
3
  import type { Span } from "./outline.ts";
5
4
  import { type Resource } from "./resource.ts";
5
+ import { Principal } from "./define.ts";
6
+ import { type PeopleResource } from "./shared.ts";
6
7
  /** A resource a data file declares, as read from the file without running it. */
7
8
  export interface DeclaredResource {
8
9
  /** `<file>#<export>`, the file relative to the config's root, with `/`: `resources/identity/github.ts#website`. */
@@ -27,6 +28,21 @@ export interface DeclaredResource {
27
28
  */
28
29
  refs: Record<string, string>;
29
30
  }
31
+ /**
32
+ * A collection `resources/data.ts` declares, as read without running it: where it is, for the
33
+ * Resources page. Its fields are the collection's own (`describeConfig`'s `collections`), from
34
+ * the same file, which the runtime imports.
35
+ */
36
+ export interface DeclaredCollection {
37
+ /** `<file>#<export>`, as a resource's: `resources/data.ts#outbound`. */
38
+ id: string;
39
+ /** `resources/data.ts`. */
40
+ file: string;
41
+ /** The collection's name, its operations' middle segment (`data.<name>.get`). */
42
+ name: string;
43
+ /** Its `export const` statement, as UTF-16 offsets into the file's text. */
44
+ span: Span;
45
+ }
30
46
  /** Something wrong in the data files, or in finding them. */
31
47
  export interface ResourceProblem {
32
48
  /**
@@ -50,15 +66,45 @@ export interface DataFiles {
50
66
  orphans: (Binding & {
51
67
  key: string;
52
68
  })[];
69
+ /** The collections `resources/data.ts` declares, in file order. */
70
+ collections: DeclaredCollection[];
53
71
  /** By file, line and column. */
54
72
  problems: ResourceProblem[];
55
73
  }
74
+ /** What the data files declare of the people: the resources `principalOf` takes, and what is wrong in their files. */
75
+ export interface DeclaredPeople {
76
+ people: DeclaredResource[];
77
+ /**
78
+ * The problems in each file that declares (or tries to declare) a person, agent or group, and
79
+ * an id two of them share or one of the runtime's own agents (`RUNTIME_AGENTS`) takes. While
80
+ * there are any, nobody is admitted: a broken file never admits more than it says.
81
+ */
82
+ problems: ResourceProblem[];
83
+ }
56
84
  /**
57
- * The resources the config's data files declare, read without importing or running them; throws
58
- * one error listing every problem, each at `file:line:column`, for a test or CI to fail on.
59
- * `describeConfig` lists the same, with the problems beside them instead.
85
+ * The people, agents and groups the data files under `root` declare (`sanoma.person`, `.agent`,
86
+ * `.group`), read without running them, as `principalOf` takes them, with what is wrong in their
87
+ * files; none without a root. Read again only when a data file changed (by its size and time),
88
+ * so a new colleague is admitted once their file is saved, and a request costs a `stat` per file.
60
89
  */
61
- export declare function readResources(config: SanomaConfig): DeclaredResource[];
90
+ export declare function readPeople(root: string | undefined): DeclaredPeople;
91
+ /**
92
+ * Who `asking` is admitted as, by the people the data files declare (`readPeople`): the declared
93
+ * principal (`principalOf`) of the id it names, a person's or an agent's; for a sign-in
94
+ * (`signIn`), of the person it matches (`personOf`: email, GitHub login, then id), never an agent.
95
+ * While no person is declared, whoever names an id is taken as given. Throws `NotAdmittedError`
96
+ * for anyone else, and for everyone while the people's files have problems.
97
+ */
98
+ export declare function admit(asking: {
99
+ id?: string;
100
+ email?: string;
101
+ github?: string;
102
+ groups?: string[];
103
+ onBehalfOf?: string;
104
+ }, { people, problems }: {
105
+ people: readonly PeopleResource[];
106
+ problems: readonly ResourceProblem[];
107
+ }, signIn?: boolean): Principal;
62
108
  /**
63
109
  * Reads `resources/` under `root`, the config's directory: each `.ts` file in it but
64
110
  * `*.test.ts`, `*.d.ts` and `node_modules`, parsed with oxc and held to the data-file subset
@@ -70,8 +116,14 @@ export declare function readResources(config: SanomaConfig): DeclaredResource[];
70
116
  * type the connector does not declare, a value the type refuses (a reference where its type
71
117
  * takes none among them), a reference cycle, and two resources of one type with one identity.
72
118
  *
119
+ * The collections `resources/data.ts` declares are listed as they are read (`collections`),
120
+ * never matched to a connector, a resource type or the lockfile: the runtime imports that file.
121
+ *
73
122
  * Each declaration is joined to its binding in the lockfile (`readLockfile`) by its key,
74
123
  * `<file>#<export>`; a binding no export declares is an orphan. Problems: the lockfile's, a
75
124
  * binding of another type than its declaration's, and two declarations bound to one object.
125
+ *
126
+ * `partial` reads part of the files: only those whose source it passes, and in them, an import of
127
+ * a connector not in `connectors`, or of a file left out, is left unread rather than reported.
76
128
  */
77
- export declare function readDataFiles(root: string | undefined, connectors: readonly Connector<any, any>[], types?: ReadonlyMap<string, Resource>): DataFiles;
129
+ export declare function readDataFiles(root: string | undefined, connectors: readonly Connector<any, any>[], types?: ReadonlyMap<string, Resource>, partial?: (source: string) => boolean): DataFiles;