@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
package/dist/blocks.js ADDED
@@ -0,0 +1,352 @@
1
+ /*
2
+ * Copyright 2026 The flow-as-code Authors
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ // Builder blocks.
6
+ //
7
+ // Blocks map one-to-one onto Connect Actions. That is deliberate: the
8
+ // round-trip invariant (synth(codegen(doc)) equals doc) is a non-negotiable,
9
+ // and a block that expanded into several Actions could not be recognised again
10
+ // on the way back. So "transfer to queue", which needs both an
11
+ // UpdateContactTargetQueue and a TransferContactToQueue, is two blocks.
12
+ //
13
+ // Error branches are required properties on a config object rather than
14
+ // something enforced by a fluent builder's type state. Omitting one is a real
15
+ // compile-time error, and a plain object literal is something codegen can emit
16
+ // as idiomatic, diffable TypeScript. See docs/adr/0002-error-branch-enforcement.md.
17
+ import { ActionType, DTMF_DIGITS, EXTRA_ERRORS, INPUT_TIME_LIMIT_EXCEEDED, INPUT_TIMEOUT_MAX, INPUT_TIMEOUT_MIN, LAMBDA_TIMEOUT_MAX, LAMBDA_TIMEOUT_MIN, NO_MATCHING_CONDITION, NO_MATCHING_ERROR, } from "./actions.js";
18
+ import { isValidIdentifier } from "./flowdoc.js";
19
+ export function targetId(t) {
20
+ return typeof t === "string" ? t : t.id;
21
+ }
22
+ export class Block {
23
+ id;
24
+ constructor(id) {
25
+ if (!isValidIdentifier(id)) {
26
+ throw new Error(`Invalid Identifier "${id}". Must be 1 to 50 characters and must not contain % : ( \\ / ) = $ , ; [ ] { }.`);
27
+ }
28
+ this.id = id;
29
+ }
30
+ toAction() {
31
+ return {
32
+ Identifier: this.id,
33
+ Type: this.type,
34
+ Parameters: this.parameters(),
35
+ Transitions: this.transitions(),
36
+ };
37
+ }
38
+ }
39
+ function wire(next, errors, conditions = []) {
40
+ const t = {};
41
+ if (next !== undefined)
42
+ t.NextAction = targetId(next);
43
+ t.Errors = errors.map(([ErrorType, target]) => ({ ErrorType, NextAction: targetId(target) }));
44
+ t.Conditions = conditions.map((c) => ({
45
+ NextAction: targetId(c.target),
46
+ Condition: { Operator: c.operator, Operands: c.operands },
47
+ }));
48
+ return t;
49
+ }
50
+ export class MessageParticipant extends Block {
51
+ config;
52
+ type = ActionType.MessageParticipant;
53
+ constructor(config) {
54
+ super(config.id);
55
+ this.config = config;
56
+ }
57
+ parameters() {
58
+ const { text, ssml, prompt } = this.config;
59
+ if (text !== undefined)
60
+ return { Text: text };
61
+ if (ssml !== undefined)
62
+ return { SSML: ssml };
63
+ return { PromptId: prompt };
64
+ }
65
+ transitions() {
66
+ return wire(this.config.next, [[NO_MATCHING_ERROR, this.config.onError]]);
67
+ }
68
+ }
69
+ export class GetParticipantInput extends Block {
70
+ config;
71
+ type = ActionType.GetParticipantInput;
72
+ constructor(config) {
73
+ super(config.id);
74
+ this.config = config;
75
+ const t = config.timeoutSeconds;
76
+ if (!Number.isInteger(t) || t < INPUT_TIMEOUT_MIN || t > INPUT_TIMEOUT_MAX) {
77
+ throw new Error(`GetParticipantInput "${config.id}" timeoutSeconds must be an integer between ${INPUT_TIMEOUT_MIN} and ${INPUT_TIMEOUT_MAX}, got ${t}.`);
78
+ }
79
+ // A key that branches twice is two answers to one press. Only one of
80
+ // them can be taken, so the class refuses the config rather than emit
81
+ // both conditions and leave the caller believing each branch is live.
82
+ // codegen constructs the real block to verify an inversion, so a document
83
+ // carrying a repeated key stays a GenericBlock instead of generating a
84
+ // call that throws.
85
+ const seen = new Set();
86
+ for (const b of config.branches) {
87
+ if (!DTMF_DIGITS.includes(b.digit)) {
88
+ throw new Error(`GetParticipantInput "${config.id}" branch digit must be one of ${DTMF_DIGITS.join(" ")}, got "${String(b.digit)}".`);
89
+ }
90
+ if (seen.has(b.digit)) {
91
+ throw new Error(`GetParticipantInput "${config.id}" branches on key "${b.digit}" twice; each key may branch once.`);
92
+ }
93
+ seen.add(b.digit);
94
+ }
95
+ }
96
+ parameters() {
97
+ const { text, ssml, prompt } = this.config;
98
+ const p = {};
99
+ if (text !== undefined)
100
+ p.Text = text;
101
+ else if (ssml !== undefined)
102
+ p.SSML = ssml;
103
+ else if (prompt !== undefined)
104
+ p.PromptId = prompt;
105
+ p.InputTimeLimitSeconds = String(this.config.timeoutSeconds);
106
+ p.StoreInput = "False";
107
+ return p;
108
+ }
109
+ transitions() {
110
+ const { onTimeout, onNoMatch, onError } = this.config;
111
+ return wire(onNoMatch, [
112
+ [INPUT_TIME_LIMIT_EXCEEDED, onTimeout],
113
+ [NO_MATCHING_CONDITION, onNoMatch],
114
+ [NO_MATCHING_ERROR, onError],
115
+ ], this.config.branches.map((b) => ({
116
+ target: b.target,
117
+ operator: "Equals",
118
+ operands: [b.digit],
119
+ })));
120
+ }
121
+ }
122
+ /** Terminal. Takes no parameters and supports no errors. */
123
+ export class DisconnectParticipant extends Block {
124
+ type = ActionType.DisconnectParticipant;
125
+ constructor(config) {
126
+ super(config.id);
127
+ }
128
+ parameters() {
129
+ return {};
130
+ }
131
+ transitions() {
132
+ return {};
133
+ }
134
+ }
135
+ export class CheckHoursOfOperation extends Block {
136
+ config;
137
+ type = ActionType.CheckHoursOfOperation;
138
+ constructor(config) {
139
+ super(config.id);
140
+ this.config = config;
141
+ }
142
+ parameters() {
143
+ return this.config.hours === undefined ? {} : { HoursOfOperationId: this.config.hours };
144
+ }
145
+ transitions() {
146
+ // NextAction is the fallback when no condition matches. The conditions are
147
+ // exhaustive, so it mirrors the out-of-hours path.
148
+ return wire(this.config.onOutOfHours, [[NO_MATCHING_ERROR, this.config.onError]], [
149
+ { target: this.config.onInHours, operator: "Equals", operands: ["True"] },
150
+ { target: this.config.onOutOfHours, operator: "Equals", operands: ["False"] },
151
+ ]);
152
+ }
153
+ }
154
+ export class Compare extends Block {
155
+ config;
156
+ type = ActionType.Compare;
157
+ constructor(config) {
158
+ super(config.id);
159
+ this.config = config;
160
+ if (config.branches.length === 0) {
161
+ throw new Error(`Compare "${config.id}" needs at least one branch.`);
162
+ }
163
+ }
164
+ parameters() {
165
+ return { ComparisonValue: this.config.value };
166
+ }
167
+ transitions() {
168
+ return wire(undefined, [[NO_MATCHING_CONDITION, this.config.onNoMatch]], this.config.branches.map((b) => ({
169
+ target: b.target,
170
+ operator: b.operator,
171
+ operands: b.operands,
172
+ })));
173
+ }
174
+ }
175
+ export class TransferToFlow extends Block {
176
+ config;
177
+ type = ActionType.TransferToFlow;
178
+ constructor(config) {
179
+ super(config.id);
180
+ this.config = config;
181
+ }
182
+ parameters() {
183
+ return { ContactFlowId: this.config.flow };
184
+ }
185
+ transitions() {
186
+ return wire(this.config.next, [[NO_MATCHING_ERROR, this.config.onError]]);
187
+ }
188
+ }
189
+ /** Terminal. Only legal in whisper and customer queue flows. */
190
+ export class EndFlowExecution extends Block {
191
+ type = ActionType.EndFlowExecution;
192
+ constructor(config) {
193
+ super(config.id);
194
+ }
195
+ parameters() {
196
+ return {};
197
+ }
198
+ transitions() {
199
+ return {};
200
+ }
201
+ }
202
+ export class UpdateContactTargetQueue extends Block {
203
+ config;
204
+ type = ActionType.UpdateContactTargetQueue;
205
+ constructor(config) {
206
+ super(config.id);
207
+ this.config = config;
208
+ }
209
+ parameters() {
210
+ return this.config.queue !== undefined
211
+ ? { QueueId: this.config.queue }
212
+ : { AgentId: this.config.agent };
213
+ }
214
+ transitions() {
215
+ return wire(this.config.next, [[NO_MATCHING_ERROR, this.config.onError]]);
216
+ }
217
+ }
218
+ export class TransferContactToQueue extends Block {
219
+ config;
220
+ type = ActionType.TransferContactToQueue;
221
+ constructor(config) {
222
+ super(config.id);
223
+ this.config = config;
224
+ }
225
+ parameters() {
226
+ return {};
227
+ }
228
+ transitions() {
229
+ const extra = EXTRA_ERRORS[ActionType.TransferContactToQueue] ?? [];
230
+ const errors = extra.map((e) => [e, this.config.onQueueAtCapacity]);
231
+ errors.push([NO_MATCHING_ERROR, this.config.onError]);
232
+ return wire(this.config.next, errors);
233
+ }
234
+ }
235
+ export class UpdateContactAttributes extends Block {
236
+ config;
237
+ type = ActionType.UpdateContactAttributes;
238
+ constructor(config) {
239
+ super(config.id);
240
+ this.config = config;
241
+ }
242
+ parameters() {
243
+ return {
244
+ Attributes: this.config.attributes,
245
+ TargetContact: this.config.targetContact ?? "Current",
246
+ };
247
+ }
248
+ transitions() {
249
+ return wire(this.config.next, [[NO_MATCHING_ERROR, this.config.onError]]);
250
+ }
251
+ }
252
+ export class UpdateContactRecordingBehavior extends Block {
253
+ config;
254
+ type = ActionType.UpdateContactRecordingBehavior;
255
+ constructor(config) {
256
+ super(config.id);
257
+ this.config = config;
258
+ }
259
+ parameters() {
260
+ const behavior = {
261
+ RecordedParticipants: this.config.recordedParticipants,
262
+ };
263
+ if (this.config.screenRecordedParticipants !== undefined) {
264
+ behavior.ScreenRecordedParticipants = this.config.screenRecordedParticipants;
265
+ }
266
+ if (this.config.ivrRecordingBehavior !== undefined) {
267
+ behavior.IVRRecordingBehavior = this.config.ivrRecordingBehavior;
268
+ }
269
+ return { RecordingBehavior: behavior };
270
+ }
271
+ transitions() {
272
+ return wire(this.config.next, [[NO_MATCHING_ERROR, this.config.onError]]);
273
+ }
274
+ }
275
+ export class InvokeFlowModule extends Block {
276
+ config;
277
+ type = ActionType.InvokeFlowModule;
278
+ constructor(config) {
279
+ super(config.id);
280
+ this.config = config;
281
+ }
282
+ parameters() {
283
+ return { FlowModuleId: this.config.module };
284
+ }
285
+ transitions() {
286
+ return wire(this.config.next, [[NO_MATCHING_ERROR, this.config.onError]]);
287
+ }
288
+ }
289
+ /** Terminal. Only legal inside a module. */
290
+ export class EndFlowModuleExecution extends Block {
291
+ type = ActionType.EndFlowModuleExecution;
292
+ constructor(config) {
293
+ super(config.id);
294
+ }
295
+ parameters() {
296
+ return {};
297
+ }
298
+ transitions() {
299
+ return {};
300
+ }
301
+ }
302
+ export class InvokeLambdaFunction extends Block {
303
+ config;
304
+ type = ActionType.InvokeLambdaFunction;
305
+ constructor(config) {
306
+ super(config.id);
307
+ this.config = config;
308
+ const t = config.timeoutSeconds;
309
+ if (!Number.isInteger(t) || t < LAMBDA_TIMEOUT_MIN || t > LAMBDA_TIMEOUT_MAX) {
310
+ throw new Error(`InvokeLambdaFunction "${config.id}" timeoutSeconds must be an integer between ${LAMBDA_TIMEOUT_MIN} and ${LAMBDA_TIMEOUT_MAX}, got ${t}.`);
311
+ }
312
+ }
313
+ parameters() {
314
+ const p = {
315
+ LambdaFunctionARN: this.config.lambda,
316
+ InvocationTimeLimitSeconds: this.config.timeoutSeconds,
317
+ InvocationType: this.config.invocationType ?? "SYNCHRONOUS",
318
+ };
319
+ if (this.config.attributes !== undefined)
320
+ p.LambdaInvocationAttributes = this.config.attributes;
321
+ if (this.config.responseType !== undefined) {
322
+ p.ResponseValidation = { ResponseType: this.config.responseType };
323
+ }
324
+ return p;
325
+ }
326
+ transitions() {
327
+ return wire(this.config.next, [[NO_MATCHING_ERROR, this.config.onError]]);
328
+ }
329
+ }
330
+ export class GenericBlock extends Block {
331
+ config;
332
+ type;
333
+ constructor(config) {
334
+ super(config.id);
335
+ this.config = config;
336
+ this.type = config.type;
337
+ }
338
+ parameters() {
339
+ return this.config.parameters ?? {};
340
+ }
341
+ transitions() {
342
+ // A generic block with nothing wired is terminal, matching Connect's
343
+ // representation of terminal actions as an empty Transitions object.
344
+ if (this.config.next === undefined &&
345
+ (this.config.errors ?? []).length === 0 &&
346
+ (this.config.conditions ?? []).length === 0) {
347
+ return {};
348
+ }
349
+ return wire(this.config.next, (this.config.errors ?? []).map((e) => [e.errorType, e.target]), this.config.conditions ?? []);
350
+ }
351
+ }
352
+ //# sourceMappingURL=blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../src/blocks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { FlowDoc } from "./flowdoc.js";
2
+ export interface CodegenOptions {
3
+ /** Import path for the builder API. Defaults to the published package. */
4
+ moduleSpecifier?: string;
5
+ /**
6
+ * A previously generated source for the same flow. Comment lines containing
7
+ * `@keep` that immediately precede a block construction re-attach to the
8
+ * block with the same id; ones immediately preceding the export function
9
+ * re-attach there. Everything else regenerates.
10
+ */
11
+ previous?: string;
12
+ }
13
+ /**
14
+ * The exported factory's name: camelCase of the flow name, prefixed with
15
+ * "flow" when it would start with a digit, hit a reserved word, or collide
16
+ * with an identifier the file imports (a flow named "json-path" must not emit
17
+ * `export function jsonPath` next to `import { jsonPath }`).
18
+ */
19
+ export declare function factoryName(name: string, taken?: ReadonlySet<string>): string;
20
+ export declare function codegen(doc: FlowDoc, options?: CodegenOptions): string;
21
+ //# sourceMappingURL=codegen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"AAmDA,OAAO,KAAK,EAIV,OAAO,EAIR,MAAM,cAAc,CAAC;AAMtB,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA+5BD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,WAAW,CAAC,MAAM,CAAa,GAAG,MAAM,CAUxF;AA8DD,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,cAAmB,GAAG,MAAM,CA+D1E"}