@sanoma-ai/workflows 0.2.0 → 0.4.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.
Files changed (149) hide show
  1. package/README.md +146 -85
  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 +14 -5
  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/fill.d.ts +4 -0
  51. package/dist/fill.js +13 -0
  52. package/dist/fill.js.map +1 -1
  53. package/dist/index.d.ts +8 -4
  54. package/dist/index.js +10 -4
  55. package/dist/index.js.map +1 -1
  56. package/dist/ledger.d.ts +12 -1
  57. package/dist/ledger.js +18 -11
  58. package/dist/ledger.js.map +1 -1
  59. package/dist/lint.d.ts +5 -4
  60. package/dist/lint.js +24 -7
  61. package/dist/lint.js.map +1 -1
  62. package/dist/op.d.ts +6 -0
  63. package/dist/op.js.map +1 -1
  64. package/dist/outline.d.ts +2 -0
  65. package/dist/outline.js +1 -1
  66. package/dist/outline.js.map +1 -1
  67. package/dist/paths.d.ts +4 -0
  68. package/dist/paths.js +17 -3
  69. package/dist/paths.js.map +1 -1
  70. package/dist/person.d.ts +61 -0
  71. package/dist/person.js +69 -0
  72. package/dist/person.js.map +1 -0
  73. package/dist/plugin.d.ts +28 -0
  74. package/dist/plugin.js +52 -1
  75. package/dist/plugin.js.map +1 -1
  76. package/dist/policy.d.ts +51 -55
  77. package/dist/policy.js +14 -36
  78. package/dist/policy.js.map +1 -1
  79. package/dist/resource.d.ts +21 -5
  80. package/dist/resource.js +12 -3
  81. package/dist/resource.js.map +1 -1
  82. package/dist/resources.d.ts +58 -6
  83. package/dist/resources.js +119 -26
  84. package/dist/resources.js.map +1 -1
  85. package/dist/run.d.ts +17 -1
  86. package/dist/run.js.map +1 -1
  87. package/dist/scenario.d.ts +16 -9
  88. package/dist/scenario.js +149 -44
  89. package/dist/scenario.js.map +1 -1
  90. package/dist/scenarios.d.ts +10 -6
  91. package/dist/scenarios.js +8 -4
  92. package/dist/scenarios.js.map +1 -1
  93. package/dist/schema.d.ts +32 -0
  94. package/dist/schema.js +225 -0
  95. package/dist/schema.js.map +1 -0
  96. package/dist/sdk.d.ts +34 -0
  97. package/dist/sdk.js +168 -0
  98. package/dist/sdk.js.map +1 -0
  99. package/dist/shared.d.ts +181 -5
  100. package/dist/shared.js +160 -7
  101. package/dist/shared.js.map +1 -1
  102. package/dist/sites.d.ts +52 -0
  103. package/dist/sites.js +174 -0
  104. package/dist/sites.js.map +1 -0
  105. package/dist/version.d.ts +3 -2
  106. package/dist/version.js +3 -2
  107. package/dist/version.js.map +1 -1
  108. package/dist/worker.d.ts +3 -2
  109. package/dist/worker.js +24 -4
  110. package/dist/worker.js.map +1 -1
  111. package/oxlint.json +7 -20
  112. package/package.json +8 -3
  113. package/src/approvals.ts +49 -13
  114. package/src/call-workflow.ts +44 -0
  115. package/src/call.ts +157 -45
  116. package/src/cedar.ts +493 -0
  117. package/src/client.ts +368 -37
  118. package/src/collection.ts +431 -0
  119. package/src/config.ts +131 -34
  120. package/src/constructors.ts +4 -0
  121. package/src/data.ts +10 -0
  122. package/src/datafile.ts +141 -21
  123. package/src/db.ts +90 -22
  124. package/src/define.ts +15 -10
  125. package/src/describe.ts +113 -10
  126. package/src/direct.ts +15 -0
  127. package/src/errors.ts +36 -1
  128. package/src/expectations.ts +17 -8
  129. package/src/fill.ts +15 -0
  130. package/src/index.ts +33 -2
  131. package/src/ledger.ts +35 -17
  132. package/src/lint.ts +29 -12
  133. package/src/op.ts +6 -0
  134. package/src/outline.ts +1 -1
  135. package/src/paths.ts +18 -3
  136. package/src/person.ts +75 -0
  137. package/src/plugin.ts +74 -5
  138. package/src/policy.ts +59 -63
  139. package/src/resource.ts +35 -8
  140. package/src/resources.ts +165 -24
  141. package/src/run.ts +18 -1
  142. package/src/scenario.ts +186 -57
  143. package/src/scenarios.ts +15 -8
  144. package/src/schema.ts +261 -0
  145. package/src/sdk.ts +211 -0
  146. package/src/shared.ts +271 -8
  147. package/src/sites.ts +220 -0
  148. package/src/version.ts +3 -2
  149. package/src/worker.ts +29 -6
package/dist/plugin.d.ts CHANGED
@@ -1,5 +1,8 @@
1
1
  interface Context {
2
2
  filename: string;
3
+ sourceCode: {
4
+ isGlobalReference(node: Node): boolean;
5
+ };
3
6
  report(diagnostic: {
4
7
  message: string;
5
8
  node: {
@@ -7,6 +10,20 @@ interface Context {
7
10
  };
8
11
  }): void;
9
12
  }
13
+ /** A node of oxlint's ESTree, by the little the `date` rule reads. */
14
+ interface Node {
15
+ type: string;
16
+ range: [number, number];
17
+ parent?: Node;
18
+ name?: string;
19
+ callee?: Node;
20
+ object?: Node;
21
+ property?: Node;
22
+ computed?: boolean;
23
+ arguments?: Node[];
24
+ operator?: string;
25
+ right?: Node;
26
+ }
10
27
  declare const plugin: {
11
28
  meta: {
12
29
  name: string;
@@ -23,6 +40,17 @@ declare const plugin: {
23
40
  Program(program: unknown): void;
24
41
  };
25
42
  };
43
+ date: {
44
+ meta: {
45
+ type: string;
46
+ docs: {
47
+ description: string;
48
+ };
49
+ };
50
+ create(context: Context): {
51
+ Identifier(node: Node): void;
52
+ };
53
+ };
26
54
  };
27
55
  };
28
56
  export default plugin;
package/dist/plugin.js CHANGED
@@ -1,4 +1,36 @@
1
1
  import { readDataFile } from "./datafile.js";
2
+ const DATE_MESSAGE = "Workflows are replayed, so a workflow reads the clock with `await ctx.now()`, never `Date`: `new Date(await ctx.now())` for a date, `new Date(value)`, `Date.parse` or `Date.UTC` for one it has, and `ctx.sleep({ until })` to wait for a date.";
3
+ /** Where `Date` names the type, which the build erases: `d: Date`, `typeof Date`, `implements Date`. */
4
+ const TYPE_PARENTS = new Set([
5
+ "TSTypeReference",
6
+ "TSTypeQuery",
7
+ "TSQualifiedName",
8
+ "TSClassImplements",
9
+ "TSInterfaceHeritage",
10
+ ]);
11
+ /** `Date`'s functions that read no clock. */
12
+ const PURE = new Set(["parse", "UTC"]);
13
+ /**
14
+ * Whether `Date` (`node`) reads no clock where it is: `new Date(value)`, `Date.parse(…)`,
15
+ * `Date.UTC(…)`, `x instanceof Date`, or a type. A node without its parent is reported.
16
+ */
17
+ function readsNoClock(node) {
18
+ const { parent } = node;
19
+ if (!parent)
20
+ return false;
21
+ if (TYPE_PARENTS.has(parent.type))
22
+ return true;
23
+ if (parent.type === "BinaryExpression")
24
+ return parent.operator === "instanceof" && parent.right === node;
25
+ if (parent.type === "NewExpression" && parent.callee === node) {
26
+ const [first] = parent.arguments ?? [];
27
+ return first !== undefined && first.type !== "SpreadElement";
28
+ }
29
+ return (parent.type === "MemberExpression" &&
30
+ parent.object === node &&
31
+ !parent.computed &&
32
+ PURE.has(parent.property?.name ?? ""));
33
+ }
2
34
  const plugin = {
3
35
  meta: { name: "sanoma" },
4
36
  rules: {
@@ -6,7 +38,7 @@ const plugin = {
6
38
  meta: {
7
39
  type: "problem",
8
40
  docs: {
9
- description: "A data file under resources/ holds only imports, `export const <name> = <vendor>.<type>({ … })` with literal fields, and `export default [ … ]`",
41
+ description: "A data file under resources/ holds only imports, `export const <name> = <vendor>.<type>({ … })` with literal fields, and `export default [ … ]`; resources/data.ts holds only collections, `collection({ … })` from sanoma/data",
10
42
  },
11
43
  },
12
44
  create(context) {
@@ -19,6 +51,25 @@ const plugin = {
19
51
  };
20
52
  },
21
53
  },
54
+ // `Date` reads the clock in `Date.now()`, `new Date()` and `Date()`, which a replay would read
55
+ // again; a workflow reads it with `ctx.now()`, recorded. Every other use of `Date` is pure:
56
+ // `new Date(value)` (of `await ctx.now()`, or of a date the workflow has), `Date.parse`, `Date.UTC`.
57
+ date: {
58
+ meta: {
59
+ type: "problem",
60
+ docs: { description: "A workflow reads the clock with `await ctx.now()`, never `Date`" },
61
+ },
62
+ create(context) {
63
+ return {
64
+ Identifier(node) {
65
+ if (node.name !== "Date" || readsNoClock(node))
66
+ return;
67
+ if (context.sourceCode.isGlobalReference(node))
68
+ context.report({ message: DATE_MESSAGE, node });
69
+ },
70
+ };
71
+ },
72
+ },
22
73
  },
23
74
  };
24
75
  export default plugin;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAY7C,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxB,KAAK,EAAE;QACL,WAAW,EAAE;YACX,IAAI,EAAE;gBACJ,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE;oBACJ,WAAW,EACT,iJAAiJ;iBACpJ;aACF;YACD,MAAM,CAAC,OAAgB;gBACrB,OAAO;oBACL,OAAO,CAAC,OAAgB;wBACtB,KAAK,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;4BACvF,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC7D,CAAC;oBACH,CAAC;iBACF,CAAC;YACJ,CAAC;SACF;KACF;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AA4B7C,MAAM,YAAY,GAChB,kPAAkP,CAAC;AAErP,wGAAwG;AACxG,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,iBAAiB;IACjB,aAAa;IACb,iBAAiB;IACjB,mBAAmB;IACnB,qBAAqB;CACtB,CAAC,CAAC;AAEH,6CAA6C;AAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAEvC;;;GAGG;AACH,SAAS,YAAY,CAAC,IAAU;IAC9B,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB;QAAE,OAAO,MAAM,CAAC,QAAQ,KAAK,YAAY,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;IACzG,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC9D,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;QACvC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC;IAC/D,CAAC;IACD,OAAO,CACL,MAAM,CAAC,IAAI,KAAK,kBAAkB;QAClC,MAAM,CAAC,MAAM,KAAK,IAAI;QACtB,CAAC,MAAM,CAAC,QAAQ;QAChB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,CACtC,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxB,KAAK,EAAE;QACL,WAAW,EAAE;YACX,IAAI,EAAE;gBACJ,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE;oBACJ,WAAW,EACT,iOAAiO;iBACpO;aACF;YACD,MAAM,CAAC,OAAgB;gBACrB,OAAO;oBACL,OAAO,CAAC,OAAgB;wBACtB,KAAK,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;4BACvF,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC7D,CAAC;oBACH,CAAC;iBACF,CAAC;YACJ,CAAC;SACF;QACD,+FAA+F;QAC/F,4FAA4F;QAC5F,qGAAqG;QACrG,IAAI,EAAE;YACJ,IAAI,EAAE;gBACJ,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,EAAE,WAAW,EAAE,iEAAiE,EAAE;aACzF;YACD,MAAM,CAAC,OAAgB;gBACrB,OAAO;oBACL,UAAU,CAAC,IAAU;wBACnB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC;4BAAE,OAAO;wBACvD,IAAI,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC;4BAAE,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;oBAClG,CAAC;iBACF,CAAC;YACJ,CAAC;SACF;KACF;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
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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"}