@flow-as-code/core 0.1.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 (164) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +30 -0
  3. package/SPEC.md +92 -0
  4. package/dist/actions.d.ts +87 -0
  5. package/dist/actions.d.ts.map +1 -0
  6. package/dist/actions.js +204 -0
  7. package/dist/actions.js.map +1 -0
  8. package/dist/aws.d.ts +27 -0
  9. package/dist/aws.d.ts.map +1 -0
  10. package/dist/aws.js +32 -0
  11. package/dist/aws.js.map +1 -0
  12. package/dist/blocks.d.ts +287 -0
  13. package/dist/blocks.d.ts.map +1 -0
  14. package/dist/blocks.js +352 -0
  15. package/dist/blocks.js.map +1 -0
  16. package/dist/codegen.d.ts +21 -0
  17. package/dist/codegen.d.ts.map +1 -0
  18. package/dist/codegen.js +1027 -0
  19. package/dist/codegen.js.map +1 -0
  20. package/dist/export.d.ts +256 -0
  21. package/dist/export.d.ts.map +1 -0
  22. package/dist/export.js +799 -0
  23. package/dist/export.js.map +1 -0
  24. package/dist/flow.d.ts +41 -0
  25. package/dist/flow.d.ts.map +1 -0
  26. package/dist/flow.js +85 -0
  27. package/dist/flow.js.map +1 -0
  28. package/dist/flowdoc.d.ts +111 -0
  29. package/dist/flowdoc.d.ts.map +1 -0
  30. package/dist/flowdoc.js +139 -0
  31. package/dist/flowdoc.js.map +1 -0
  32. package/dist/index.d.ts +16 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +26 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/layout.d.ts +11 -0
  37. package/dist/layout.d.ts.map +1 -0
  38. package/dist/layout.js +49 -0
  39. package/dist/layout.js.map +1 -0
  40. package/dist/lint/engine.d.ts +16 -0
  41. package/dist/lint/engine.d.ts.map +1 -0
  42. package/dist/lint/engine.js +37 -0
  43. package/dist/lint/engine.js.map +1 -0
  44. package/dist/lint/graph.d.ts +34 -0
  45. package/dist/lint/graph.d.ts.map +1 -0
  46. package/dist/lint/graph.js +79 -0
  47. package/dist/lint/graph.js.map +1 -0
  48. package/dist/lint/index.d.ts +7 -0
  49. package/dist/lint/index.d.ts.map +1 -0
  50. package/dist/lint/index.js +5 -0
  51. package/dist/lint/index.js.map +1 -0
  52. package/dist/lint/reporters.d.ts +6 -0
  53. package/dist/lint/reporters.d.ts.map +1 -0
  54. package/dist/lint/reporters.js +30 -0
  55. package/dist/lint/reporters.js.map +1 -0
  56. package/dist/lint/rules/action-allowed-in-flow-type.d.ts +11 -0
  57. package/dist/lint/rules/action-allowed-in-flow-type.d.ts.map +1 -0
  58. package/dist/lint/rules/action-allowed-in-flow-type.js +32 -0
  59. package/dist/lint/rules/action-allowed-in-flow-type.js.map +1 -0
  60. package/dist/lint/rules/action-count.d.ts +16 -0
  61. package/dist/lint/rules/action-count.d.ts.map +1 -0
  62. package/dist/lint/rules/action-count.js +32 -0
  63. package/dist/lint/rules/action-count.js.map +1 -0
  64. package/dist/lint/rules/error-branches.d.ts +10 -0
  65. package/dist/lint/rules/error-branches.d.ts.map +1 -0
  66. package/dist/lint/rules/error-branches.js +39 -0
  67. package/dist/lint/rules/error-branches.js.map +1 -0
  68. package/dist/lint/rules/index.d.ts +17 -0
  69. package/dist/lint/rules/index.d.ts.map +1 -0
  70. package/dist/lint/rules/index.js +36 -0
  71. package/dist/lint/rules/index.js.map +1 -0
  72. package/dist/lint/rules/module-depth-5.d.ts +14 -0
  73. package/dist/lint/rules/module-depth-5.d.ts.map +1 -0
  74. package/dist/lint/rules/module-depth-5.js +67 -0
  75. package/dist/lint/rules/module-depth-5.js.map +1 -0
  76. package/dist/lint/rules/no-literal-arn.d.ts +21 -0
  77. package/dist/lint/rules/no-literal-arn.d.ts.map +1 -0
  78. package/dist/lint/rules/no-literal-arn.js +58 -0
  79. package/dist/lint/rules/no-literal-arn.js.map +1 -0
  80. package/dist/lint/rules/no-unresolved-token.d.ts +8 -0
  81. package/dist/lint/rules/no-unresolved-token.d.ts.map +1 -0
  82. package/dist/lint/rules/no-unresolved-token.js +71 -0
  83. package/dist/lint/rules/no-unresolved-token.js.map +1 -0
  84. package/dist/lint/rules/prompt-length-3000.d.ts +16 -0
  85. package/dist/lint/rules/prompt-length-3000.d.ts.map +1 -0
  86. package/dist/lint/rules/prompt-length-3000.js +61 -0
  87. package/dist/lint/rules/prompt-length-3000.js.map +1 -0
  88. package/dist/lint/rules/reachable-blocks.d.ts +7 -0
  89. package/dist/lint/rules/reachable-blocks.d.ts.map +1 -0
  90. package/dist/lint/rules/reachable-blocks.js +45 -0
  91. package/dist/lint/rules/reachable-blocks.js.map +1 -0
  92. package/dist/lint/rules/recording-consent-before-record.d.ts +3 -0
  93. package/dist/lint/rules/recording-consent-before-record.d.ts.map +1 -0
  94. package/dist/lint/rules/recording-consent-before-record.js +87 -0
  95. package/dist/lint/rules/recording-consent-before-record.js.map +1 -0
  96. package/dist/lint/rules/terminal-blocks.d.ts +8 -0
  97. package/dist/lint/rules/terminal-blocks.d.ts.map +1 -0
  98. package/dist/lint/rules/terminal-blocks.js +40 -0
  99. package/dist/lint/rules/terminal-blocks.js.map +1 -0
  100. package/dist/lint/rules/unique-names.d.ts +7 -0
  101. package/dist/lint/rules/unique-names.d.ts.map +1 -0
  102. package/dist/lint/rules/unique-names.js +40 -0
  103. package/dist/lint/rules/unique-names.js.map +1 -0
  104. package/dist/lint/types.d.ts +30 -0
  105. package/dist/lint/types.d.ts.map +1 -0
  106. package/dist/lint/types.js +11 -0
  107. package/dist/lint/types.js.map +1 -0
  108. package/dist/materialize.d.ts +31 -0
  109. package/dist/materialize.d.ts.map +1 -0
  110. package/dist/materialize.js +192 -0
  111. package/dist/materialize.js.map +1 -0
  112. package/dist/package-names.d.ts +11 -0
  113. package/dist/package-names.d.ts.map +1 -0
  114. package/dist/package-names.js +25 -0
  115. package/dist/package-names.js.map +1 -0
  116. package/dist/refs.d.ts +35 -0
  117. package/dist/refs.d.ts.map +1 -0
  118. package/dist/refs.js +69 -0
  119. package/dist/refs.js.map +1 -0
  120. package/dist/serialize.d.ts +13 -0
  121. package/dist/serialize.d.ts.map +1 -0
  122. package/dist/serialize.js +86 -0
  123. package/dist/serialize.js.map +1 -0
  124. package/dist/simulate.d.ts +446 -0
  125. package/dist/simulate.d.ts.map +1 -0
  126. package/dist/simulate.js +1115 -0
  127. package/dist/simulate.js.map +1 -0
  128. package/dist/synth.d.ts +25 -0
  129. package/dist/synth.d.ts.map +1 -0
  130. package/dist/synth.js +93 -0
  131. package/dist/synth.js.map +1 -0
  132. package/package.json +73 -0
  133. package/src/actions.ts +221 -0
  134. package/src/aws.ts +55 -0
  135. package/src/blocks.ts +619 -0
  136. package/src/codegen.ts +1144 -0
  137. package/src/export.ts +1190 -0
  138. package/src/flow.ts +108 -0
  139. package/src/flowdoc.ts +261 -0
  140. package/src/index.ts +31 -0
  141. package/src/layout.ts +54 -0
  142. package/src/lint/engine.ts +56 -0
  143. package/src/lint/graph.ts +86 -0
  144. package/src/lint/index.ts +10 -0
  145. package/src/lint/reporters.ts +44 -0
  146. package/src/lint/rules/action-allowed-in-flow-type.ts +32 -0
  147. package/src/lint/rules/action-count.ts +35 -0
  148. package/src/lint/rules/error-branches.ts +45 -0
  149. package/src/lint/rules/index.ts +53 -0
  150. package/src/lint/rules/module-depth-5.ts +70 -0
  151. package/src/lint/rules/no-literal-arn.ts +64 -0
  152. package/src/lint/rules/no-unresolved-token.ts +80 -0
  153. package/src/lint/rules/prompt-length-3000.ts +66 -0
  154. package/src/lint/rules/reachable-blocks.ts +50 -0
  155. package/src/lint/rules/recording-consent-before-record.ts +90 -0
  156. package/src/lint/rules/terminal-blocks.ts +45 -0
  157. package/src/lint/rules/unique-names.ts +44 -0
  158. package/src/lint/types.ts +43 -0
  159. package/src/materialize.ts +230 -0
  160. package/src/package-names.ts +26 -0
  161. package/src/refs.ts +93 -0
  162. package/src/serialize.ts +97 -0
  163. package/src/simulate.ts +1610 -0
  164. package/src/synth.ts +110 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"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"}
package/dist/flow.d.ts ADDED
@@ -0,0 +1,41 @@
1
+ import { Block } from "./blocks.js";
2
+ import type { ConnectType } from "./flowdoc.js";
3
+ import type { Point } from "./flowdoc.js";
4
+ export interface FlowConfig {
5
+ name: string;
6
+ connectType?: ConnectType;
7
+ /** Defaults to the first block added. */
8
+ start?: string | Block;
9
+ /** Hand-placed positions. Anything omitted is auto-laid-out at synth time. */
10
+ layout?: Record<string, Point>;
11
+ }
12
+ export declare class Flow {
13
+ readonly name: string;
14
+ readonly connectType: ConnectType;
15
+ readonly kind: "flow" | "module";
16
+ readonly layout: Record<string, Point>;
17
+ private readonly blocks;
18
+ private readonly explicitStart?;
19
+ constructor(config: FlowConfig);
20
+ /** Adds blocks in declaration order. Returns this for chaining. */
21
+ add(...blocks: Block[]): this;
22
+ all(): readonly Block[];
23
+ startId(): string;
24
+ }
25
+ /**
26
+ * Structural check that a value can be treated as a Flow, run at the entry
27
+ * points that take one. Structural rather than `instanceof` so a Flow built
28
+ * against a second copy of the package (a workspace link, two versions in a
29
+ * dependency tree) is still accepted.
30
+ */
31
+ export declare function assertFlow(value: unknown, context: string): asserts value is Flow;
32
+ /** A reusable section of a flow. Materializes as a ContactFlowModule. */
33
+ export declare class FlowModule extends Flow {
34
+ readonly kind: "module";
35
+ /** Module configuration, emitted as content.Settings. Empty by default. */
36
+ readonly settings: Record<string, unknown>;
37
+ constructor(config: Omit<FlowConfig, "connectType"> & {
38
+ settings?: Record<string, unknown>;
39
+ });
40
+ }
41
+ //# sourceMappingURL=flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../src/flow.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAY,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACvB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAChC;AAED,qBAAa,IAAI;IACf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAU;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;gBAE5B,MAAM,EAAE,UAAU;IAe9B,mEAAmE;IACnE,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;IAe7B,GAAG,IAAI,SAAS,KAAK,EAAE;IAIvB,OAAO,IAAI,MAAM;CAMlB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAiBjF;AAED,yEAAyE;AACzE,qBAAa,UAAW,SAAQ,IAAI;IAClC,SAAkB,IAAI,EAAG,QAAQ,CAAU;IAC3C,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAE/B,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE;CAI7F"}
package/dist/flow.js ADDED
@@ -0,0 +1,85 @@
1
+ /*
2
+ * Copyright 2026 The flow-as-code Authors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ // Flow and FlowModule: an ordered set of blocks plus the metadata that says
6
+ // what kind of Connect artifact they become.
7
+ import { targetId } from "./blocks.js";
8
+ import { InvalidFlowDocError, MAX_ACTIONS_PER_FLOW, SLUG_PATTERN } from "./flowdoc.js";
9
+ export class Flow {
10
+ name;
11
+ connectType;
12
+ kind = "flow";
13
+ layout;
14
+ blocks = [];
15
+ explicitStart;
16
+ constructor(config) {
17
+ // Names are slugs (the FlowDoc schema requires it), and they become file
18
+ // names downstream (`<name>.flowdoc.json`), so anything else, including a
19
+ // path fragment, is rejected here rather than at write time.
20
+ if (!SLUG_PATTERN.test(config.name)) {
21
+ throw new Error(`Invalid flow name "${config.name}". Names must be lowercase words separated by single hyphens.`);
22
+ }
23
+ this.name = config.name;
24
+ this.connectType = config.connectType ?? "CONTACT_FLOW";
25
+ this.layout = config.layout ?? {};
26
+ if (config.start !== undefined)
27
+ this.explicitStart = targetId(config.start);
28
+ }
29
+ /** Adds blocks in declaration order. Returns this for chaining. */
30
+ add(...blocks) {
31
+ for (const b of blocks) {
32
+ if (this.blocks.some((existing) => existing.id === b.id)) {
33
+ throw new Error(`Duplicate Identifier "${b.id}" in flow "${this.name}".`);
34
+ }
35
+ this.blocks.push(b);
36
+ }
37
+ if (this.blocks.length > MAX_ACTIONS_PER_FLOW) {
38
+ throw new Error(`Flow "${this.name}" has ${this.blocks.length} actions; Connect allows at most ${MAX_ACTIONS_PER_FLOW}.`);
39
+ }
40
+ return this;
41
+ }
42
+ all() {
43
+ return this.blocks;
44
+ }
45
+ startId() {
46
+ if (this.explicitStart !== undefined)
47
+ return this.explicitStart;
48
+ const first = this.blocks[0];
49
+ if (first === undefined)
50
+ throw new Error(`Flow "${this.name}" has no blocks.`);
51
+ return first.id;
52
+ }
53
+ }
54
+ /**
55
+ * Structural check that a value can be treated as a Flow, run at the entry
56
+ * points that take one. Structural rather than `instanceof` so a Flow built
57
+ * against a second copy of the package (a workspace link, two versions in a
58
+ * dependency tree) is still accepted.
59
+ */
60
+ export function assertFlow(value, context) {
61
+ const flow = value;
62
+ const ok = typeof flow === "object" &&
63
+ flow !== null &&
64
+ typeof flow.all === "function" &&
65
+ typeof flow.startId === "function" &&
66
+ typeof flow.name === "string" &&
67
+ typeof flow.connectType === "string" &&
68
+ typeof flow.layout === "object" &&
69
+ flow.layout !== null;
70
+ if (!ok) {
71
+ const got = value === null ? "null" : Array.isArray(value) ? "an array" : `a ${typeof value}`;
72
+ throw new InvalidFlowDocError(`${context} expects a Flow built with new Flow(...) or new FlowModule(...), got ${got}.`);
73
+ }
74
+ }
75
+ /** A reusable section of a flow. Materializes as a ContactFlowModule. */
76
+ export class FlowModule extends Flow {
77
+ kind = "module";
78
+ /** Module configuration, emitted as content.Settings. Empty by default. */
79
+ settings;
80
+ constructor(config) {
81
+ super({ ...config, connectType: "MODULE" });
82
+ this.settings = config.settings ?? {};
83
+ }
84
+ }
85
+ //# sourceMappingURL=flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow.js","sourceRoot":"","sources":["../src/flow.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,4EAA4E;AAC5E,6CAA6C;AAE7C,OAAO,EAAS,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAYvF,MAAM,OAAO,IAAI;IACN,IAAI,CAAS;IACb,WAAW,CAAc;IACzB,IAAI,GAAsB,MAAM,CAAC;IACjC,MAAM,CAAwB;IACtB,MAAM,GAAY,EAAE,CAAC;IACrB,aAAa,CAAU;IAExC,YAAY,MAAkB;QAC5B,yEAAyE;QACzE,0EAA0E;QAC1E,6DAA6D;QAC7D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,sBAAsB,MAAM,CAAC,IAAI,+DAA+D,CACjG,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,cAAc,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9E,CAAC;IAED,mEAAmE;IACnE,GAAG,CAAC,GAAG,MAAe;QACpB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;gBACzD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,EAAE,cAAc,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;YAC5E,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,SAAS,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,oCAAoC,oBAAoB,GAAG,CACzG,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,kBAAkB,CAAC,CAAC;QAC/E,OAAO,KAAK,CAAC,EAAE,CAAC;IAClB,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc,EAAE,OAAe;IACxD,MAAM,IAAI,GAAG,KAAyC,CAAC;IACvD,MAAM,EAAE,GACN,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACb,OAAO,IAAI,CAAC,GAAG,KAAK,UAAU;QAC9B,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU;QAClC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC7B,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;QACpC,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAC/B,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IACvB,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,GAAG,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,KAAK,EAAE,CAAC;QAC9F,MAAM,IAAI,mBAAmB,CAC3B,GAAG,OAAO,wEAAwE,GAAG,GAAG,CACzF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,OAAO,UAAW,SAAQ,IAAI;IAChB,IAAI,GAAG,QAAiB,CAAC;IAC3C,2EAA2E;IAClE,QAAQ,CAA0B;IAE3C,YAAY,MAAgF;QAC1F,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACxC,CAAC;CACF"}
@@ -0,0 +1,111 @@
1
+ export declare const FLOWDOC_VERSION = "0.1";
2
+ /** The only Flow language version Connect supports. */
3
+ export declare const FLOW_LANGUAGE_VERSION = "2019-10-30";
4
+ /** A single flow holds no more than 250 Actions. */
5
+ export declare const MAX_ACTIONS_PER_FLOW = 250;
6
+ /** Identifiers are unique within a flow and at most 50 characters. */
7
+ export declare const MAX_IDENTIFIER_LENGTH = 50;
8
+ /**
9
+ * Characters Connect rejects in an Identifier.
10
+ * https://docs.aws.amazon.com/connect/latest/devguide/flow-language-actions.html
11
+ */
12
+ export declare const FORBIDDEN_IDENTIFIER_CHARS: readonly ["%", ":", "(", "\\", "/", ")", "=", "$", ",", ";", "[", "]", "{", "}"];
13
+ /** Identifier values Connect rejects outright (prototype pollution names). */
14
+ export declare const FORBIDDEN_IDENTIFIERS: readonly ["__proto__", "constructor", "__defineGetter__", "__defineSetter__", "toString", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "valueOf"];
15
+ export type ConnectType = "CONTACT_FLOW" | "CUSTOMER_QUEUE" | "CUSTOMER_HOLD" | "CUSTOMER_WHISPER" | "AGENT_HOLD" | "AGENT_WHISPER" | "OUTBOUND_WHISPER" | "AGENT_TRANSFER" | "QUEUE_TRANSFER" | "MODULE";
16
+ export type ConditionOperator = "Equals" | "TextStartsWith" | "TextEndsWith" | "TextContains" | "NumberGreaterThan" | "NumberGreaterOrEqualTo" | "NumberLessThan" | "NumberLessOrEqualTo";
17
+ export interface Condition {
18
+ Operator: ConditionOperator;
19
+ Operands: string[];
20
+ }
21
+ export interface ErrorTransition {
22
+ ErrorType: string;
23
+ NextAction: string;
24
+ }
25
+ export interface ConditionTransition {
26
+ NextAction: string;
27
+ Condition: Condition;
28
+ }
29
+ export interface Transitions {
30
+ NextAction?: string;
31
+ Errors?: ErrorTransition[];
32
+ Conditions?: ConditionTransition[];
33
+ }
34
+ export interface FlowAction {
35
+ Identifier: string;
36
+ Type: string;
37
+ Parameters: Record<string, unknown>;
38
+ Transitions: Transitions;
39
+ }
40
+ export interface FlowContent {
41
+ Version: typeof FLOW_LANGUAGE_VERSION;
42
+ StartAction: string;
43
+ /**
44
+ * Not authored. Materialization projects `layout` into this so the flow lays
45
+ * out correctly in the Connect console. See docs/01-flowdoc-spec.md.
46
+ */
47
+ Metadata?: Record<string, unknown>;
48
+ /**
49
+ * Module configuration. Connect requires a top-level `Settings` object in a
50
+ * flow MODULE's content and rejects CreateContactFlowModule without it
51
+ * ("JSON field is missing or null for field name: settings"); a regular flow
52
+ * has no Settings. Empty is valid and is what the console stores for a module
53
+ * with no special configuration. Verified against a live instance 2026-09-01.
54
+ */
55
+ Settings?: Record<string, unknown>;
56
+ Actions: FlowAction[];
57
+ }
58
+ export interface Point {
59
+ x: number;
60
+ y: number;
61
+ }
62
+ export type RefType = "queue" | "hours" | "lambda" | "lex" | "prompt" | "flow" | "module";
63
+ export interface RefEntry {
64
+ token: string;
65
+ type: RefType;
66
+ name: string;
67
+ alias?: string;
68
+ }
69
+ export interface FlowDocMeta {
70
+ generator?: string;
71
+ sourceHash?: string;
72
+ [key: string]: unknown;
73
+ }
74
+ export interface FlowDoc {
75
+ flowdoc: typeof FLOWDOC_VERSION;
76
+ kind: "flow" | "module";
77
+ name: string;
78
+ connectType: ConnectType;
79
+ content: FlowContent;
80
+ layout?: Record<string, Point>;
81
+ refs?: RefEntry[];
82
+ meta?: FlowDocMeta;
83
+ }
84
+ /** Names are slugs: lowercase, digits, single hyphens. */
85
+ export declare const SLUG_PATTERN: RegExp;
86
+ export declare function isValidIdentifier(id: string): boolean;
87
+ /**
88
+ * A public entry point was handed something that is not a usable FlowDoc.
89
+ *
90
+ * Without this, the first property access decided the message, so calling
91
+ * `codegen(undefined)` or linting a document with no `content` reported
92
+ * "Cannot read properties of undefined (reading 'Actions')", which names
93
+ * neither the entry point, the argument, nor what was wrong with it.
94
+ */
95
+ export declare class InvalidFlowDocError extends Error {
96
+ constructor(message: string);
97
+ }
98
+ /**
99
+ * Structural check that a value can be treated as a FlowDoc, run at every
100
+ * public entry point that reads one.
101
+ *
102
+ * Deliberately shallow: it checks the shape the library dereferences without
103
+ * asking, not the FlowDoc schema. Full validation is
104
+ * conformance/schema/flowdoc-0.1.schema.json, which `flow-cli lint` runs;
105
+ * doing it here would make every entry point pay for an Ajv compile and would
106
+ * reject documents the studio legitimately holds mid-edit.
107
+ *
108
+ * @param context the entry point name, so the message says who was called.
109
+ */
110
+ export declare function assertFlowDoc(value: unknown, context: string): asserts value is FlowDoc;
111
+ //# sourceMappingURL=flowdoc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowdoc.d.ts","sourceRoot":"","sources":["../src/flowdoc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ /*
2
+ * Copyright 2026 The flow-as-code Authors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ // FlowDoc: the single interchange format. See docs/01-flowdoc-spec.md and
6
+ // conformance/schema/flowdoc-0.1.schema.json, which is the normative form of
7
+ // these types.
8
+ export const FLOWDOC_VERSION = "0.1";
9
+ /** The only Flow language version Connect supports. */
10
+ export const FLOW_LANGUAGE_VERSION = "2019-10-30";
11
+ /** A single flow holds no more than 250 Actions. */
12
+ export const MAX_ACTIONS_PER_FLOW = 250;
13
+ /** Identifiers are unique within a flow and at most 50 characters. */
14
+ export const MAX_IDENTIFIER_LENGTH = 50;
15
+ /**
16
+ * Characters Connect rejects in an Identifier.
17
+ * https://docs.aws.amazon.com/connect/latest/devguide/flow-language-actions.html
18
+ */
19
+ export const FORBIDDEN_IDENTIFIER_CHARS = [
20
+ "%",
21
+ ":",
22
+ "(",
23
+ "\\",
24
+ "/",
25
+ ")",
26
+ "=",
27
+ "$",
28
+ ",",
29
+ ";",
30
+ "[",
31
+ "]",
32
+ "{",
33
+ "}",
34
+ ];
35
+ /** Identifier values Connect rejects outright (prototype pollution names). */
36
+ export const FORBIDDEN_IDENTIFIERS = [
37
+ "__proto__",
38
+ "constructor",
39
+ "__defineGetter__",
40
+ "__defineSetter__",
41
+ "toString",
42
+ "hasOwnProperty",
43
+ "isPrototypeOf",
44
+ "propertyIsEnumerable",
45
+ "toLocaleString",
46
+ "valueOf",
47
+ ];
48
+ /** Names are slugs: lowercase, digits, single hyphens. */
49
+ export const SLUG_PATTERN = /^[a-z0-9]+(-[a-z0-9]+)*$/;
50
+ export function isValidIdentifier(id) {
51
+ if (id.length === 0 || id.length > MAX_IDENTIFIER_LENGTH)
52
+ return false;
53
+ if (FORBIDDEN_IDENTIFIERS.includes(id))
54
+ return false;
55
+ return !FORBIDDEN_IDENTIFIER_CHARS.some((c) => id.includes(c));
56
+ }
57
+ // ---------------------------------------------------------------------------
58
+ // Entry-point guard
59
+ // ---------------------------------------------------------------------------
60
+ /**
61
+ * A public entry point was handed something that is not a usable FlowDoc.
62
+ *
63
+ * Without this, the first property access decided the message, so calling
64
+ * `codegen(undefined)` or linting a document with no `content` reported
65
+ * "Cannot read properties of undefined (reading 'Actions')", which names
66
+ * neither the entry point, the argument, nor what was wrong with it.
67
+ */
68
+ export class InvalidFlowDocError extends Error {
69
+ constructor(message) {
70
+ super(message);
71
+ this.name = "InvalidFlowDocError";
72
+ }
73
+ }
74
+ function typeName(value) {
75
+ if (value === null)
76
+ return "null";
77
+ if (value === undefined)
78
+ return "undefined";
79
+ if (Array.isArray(value))
80
+ return "an array";
81
+ if (typeof value === "string")
82
+ return `a string (${JSON.stringify(value)})`;
83
+ return `a ${typeof value}`;
84
+ }
85
+ function isPlainObject(value) {
86
+ return typeof value === "object" && value !== null && !Array.isArray(value);
87
+ }
88
+ /**
89
+ * Structural check that a value can be treated as a FlowDoc, run at every
90
+ * public entry point that reads one.
91
+ *
92
+ * Deliberately shallow: it checks the shape the library dereferences without
93
+ * asking, not the FlowDoc schema. Full validation is
94
+ * conformance/schema/flowdoc-0.1.schema.json, which `flow-cli lint` runs;
95
+ * doing it here would make every entry point pay for an Ajv compile and would
96
+ * reject documents the studio legitimately holds mid-edit.
97
+ *
98
+ * @param context the entry point name, so the message says who was called.
99
+ */
100
+ export function assertFlowDoc(value, context) {
101
+ if (!isPlainObject(value)) {
102
+ throw new InvalidFlowDocError(`${context} expects a FlowDoc object, got ${typeName(value)}.`);
103
+ }
104
+ for (const key of ["name", "kind", "connectType"]) {
105
+ if (typeof value[key] !== "string") {
106
+ throw new InvalidFlowDocError(`${context} expects a FlowDoc with a string "${key}", got ${typeName(value[key])}.`);
107
+ }
108
+ }
109
+ const content = value.content;
110
+ if (!isPlainObject(content)) {
111
+ throw new InvalidFlowDocError(`${context} expects a FlowDoc with an object "content", got ${typeName(content)}.`);
112
+ }
113
+ if (typeof content.StartAction !== "string") {
114
+ throw new InvalidFlowDocError(`${context} expects a FlowDoc with a string "content.StartAction", got ${typeName(content.StartAction)}.`);
115
+ }
116
+ const actions = content.Actions;
117
+ if (!Array.isArray(actions)) {
118
+ throw new InvalidFlowDocError(`${context} expects a FlowDoc with an array "content.Actions", got ${typeName(actions)}.`);
119
+ }
120
+ for (const [i, action] of actions.entries()) {
121
+ const at = `${context}: FlowDoc content.Actions[${String(i)}]`;
122
+ if (!isPlainObject(action)) {
123
+ throw new InvalidFlowDocError(`${at} must be an action object, got ${typeName(action)}.`);
124
+ }
125
+ for (const key of ["Identifier", "Type"]) {
126
+ if (typeof action[key] !== "string") {
127
+ throw new InvalidFlowDocError(`${at} must have a string "${key}", got ${typeName(action[key])}.`);
128
+ }
129
+ }
130
+ // Parameters and Transitions are dereferenced without a guard by codegen,
131
+ // materialization, and several lint rules.
132
+ for (const key of ["Parameters", "Transitions"]) {
133
+ if (!isPlainObject(action[key])) {
134
+ throw new InvalidFlowDocError(`${at} ("${String(action.Identifier)}") must have an object "${key}", got ${typeName(action[key])}.`);
135
+ }
136
+ }
137
+ }
138
+ }
139
+ //# sourceMappingURL=flowdoc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowdoc.js","sourceRoot":"","sources":["../src/flowdoc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export * from "./flowdoc.js";
2
+ export * from "./refs.js";
3
+ export * from "./actions.js";
4
+ export * from "./blocks.js";
5
+ export * from "./flow.js";
6
+ export * from "./synth.js";
7
+ export * from "./codegen.js";
8
+ export * from "./package-names.js";
9
+ export { autoLayout, NODE_WIDTH, NODE_HEIGHT } from "./layout.js";
10
+ export { canonicalize, serialize } from "./serialize.js";
11
+ export { MaterializeError, materializeWithBinder, materializeWithMap, serializeContent, } from "./materialize.js";
12
+ export * from "./aws.js";
13
+ export * from "./export.js";
14
+ export * from "./simulate.js";
15
+ export * from "./lint/index.js";
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,26 @@
1
+ /*
2
+ * Copyright 2026 The flow-as-code Authors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ // Public surface of @flow-as-code/core. See SPEC.md and docs/01-flowdoc-spec.md.
6
+ //
7
+ // Implemented: FlowDoc types, Refs, builder blocks, deterministic
8
+ // serialization, dagre auto-layout, synth, lint, codegen, materialization,
9
+ // export from a live instance, and the simulate scenario format, runner, and
10
+ // reporters. Watch (A04) lives in @flow-as-code/cli.
11
+ export * from "./flowdoc.js";
12
+ export * from "./refs.js";
13
+ export * from "./actions.js";
14
+ export * from "./blocks.js";
15
+ export * from "./flow.js";
16
+ export * from "./synth.js";
17
+ export * from "./codegen.js";
18
+ export * from "./package-names.js";
19
+ export { autoLayout, NODE_WIDTH, NODE_HEIGHT } from "./layout.js";
20
+ export { canonicalize, serialize } from "./serialize.js";
21
+ export { MaterializeError, materializeWithBinder, materializeWithMap, serializeContent, } from "./materialize.js";
22
+ export * from "./aws.js";
23
+ export * from "./export.js";
24
+ export * from "./simulate.js";
25
+ export * from "./lint/index.js";
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,iFAAiF;AACjF,EAAE;AACF,kEAAkE;AAClE,2EAA2E;AAC3E,6EAA6E;AAC7E,qDAAqD;AAErD,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { FlowAction, Point } from "./flowdoc.js";
2
+ /** Node box used for layout. Matches the studio's default node size. */
3
+ export declare const NODE_WIDTH = 180;
4
+ export declare const NODE_HEIGHT = 60;
5
+ /**
6
+ * Left-to-right dagre layout. Deterministic for a given action list: dagre is
7
+ * seeded only by insertion order, and actions are already in canonical order by
8
+ * the time this runs.
9
+ */
10
+ export declare function autoLayout(actions: FlowAction[]): Record<string, Point>;
11
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAEtD,wEAAwE;AACxE,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,WAAW,KAAK,CAAC;AAW9B;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAyBvE"}
package/dist/layout.js ADDED
@@ -0,0 +1,49 @@
1
+ /*
2
+ * Copyright 2026 The flow-as-code Authors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ // Deterministic auto-layout. The studio persists user positions; synth fills in
6
+ // positions only for actions that have none, so hand-placed nodes survive.
7
+ import dagre from "dagre";
8
+ /** Node box used for layout. Matches the studio's default node size. */
9
+ export const NODE_WIDTH = 180;
10
+ export const NODE_HEIGHT = 60;
11
+ function transitionTargets(action) {
12
+ const t = action.Transitions;
13
+ return [
14
+ ...(t.NextAction === undefined ? [] : [t.NextAction]),
15
+ ...(t.Errors ?? []).map((e) => e.NextAction),
16
+ ...(t.Conditions ?? []).map((c) => c.NextAction),
17
+ ];
18
+ }
19
+ /**
20
+ * Left-to-right dagre layout. Deterministic for a given action list: dagre is
21
+ * seeded only by insertion order, and actions are already in canonical order by
22
+ * the time this runs.
23
+ */
24
+ export function autoLayout(actions) {
25
+ const g = new dagre.graphlib.Graph();
26
+ g.setGraph({ rankdir: "LR", nodesep: 40, ranksep: 80, marginx: 20, marginy: 20 });
27
+ g.setDefaultEdgeLabel(() => ({}));
28
+ const ids = new Set(actions.map((a) => a.Identifier));
29
+ for (const a of actions)
30
+ g.setNode(a.Identifier, { width: NODE_WIDTH, height: NODE_HEIGHT });
31
+ for (const a of actions) {
32
+ for (const target of transitionTargets(a)) {
33
+ // Dangling targets are a lint finding, not a layout crash.
34
+ if (ids.has(target))
35
+ g.setEdge(a.Identifier, target);
36
+ }
37
+ }
38
+ dagre.layout(g);
39
+ const positions = {};
40
+ for (const a of actions) {
41
+ const node = g.node(a.Identifier);
42
+ // dagre reports centres; FlowDoc stores top-left, as the console does.
43
+ positions[a.Identifier] = node
44
+ ? { x: Math.round(node.x - NODE_WIDTH / 2), y: Math.round(node.y - NODE_HEIGHT / 2) }
45
+ : { x: 0, y: 0 };
46
+ }
47
+ return positions;
48
+ }
49
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,gFAAgF;AAChF,2EAA2E;AAE3E,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,wEAAwE;AACxE,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAC;AAC9B,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAE9B,SAAS,iBAAiB,CAAC,MAAkB;IAC3C,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;IAC7B,OAAO;QACL,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACrD,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QAC5C,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;KACjD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,OAAqB;IAC9C,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAClF,CAAC,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAElC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IACtD,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAC7F,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,MAAM,MAAM,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,2DAA2D;YAC3D,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEhB,MAAM,SAAS,GAA0B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAyC,CAAC;QAC1E,uEAAuE;QACvE,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI;YAC5B,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,EAAE;YACrF,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACrB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { FlowDoc } from "../flowdoc.js";
2
+ import type { Finding, Rule } from "./types.js";
3
+ export interface LintOptions {
4
+ /** Defaults to every built-in rule. */
5
+ rules?: readonly Rule[];
6
+ /** Rule ids to skip. */
7
+ disable?: readonly string[];
8
+ }
9
+ /**
10
+ * Runs every rule over every document. Findings are sorted so output is stable
11
+ * regardless of rule execution order.
12
+ */
13
+ export declare function lint(input: FlowDoc | readonly FlowDoc[], options?: LintOptions): Finding[];
14
+ /** True when any finding would block a studio save. */
15
+ export declare function hasBlockingFindings(findings: readonly Finding[], rules?: readonly Rule[]): boolean;
16
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/lint/engine.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;IACxB,wBAAwB;IACxB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAQD;;;GAGG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,EAAE,CAoB9F;AAED,uDAAuD;AACvD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,KAAK,GAAE,SAAS,IAAI,EAAa,GAChC,OAAO,CAGT"}