@auto-engineer/narrative 0.11.11 → 0.11.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +22 -0
- package/dist/src/commands/export-schema-helper.js +1 -2
- package/dist/src/commands/export-schema-helper.js.map +1 -1
- package/dist/src/getNarratives.cache.specs.d.ts +2 -0
- package/dist/src/getNarratives.cache.specs.d.ts.map +1 -0
- package/dist/src/{getFlows.cache.specs.js → getNarratives.cache.specs.js} +19 -19
- package/dist/src/getNarratives.cache.specs.js.map +1 -0
- package/dist/src/getNarratives.specs.d.ts +2 -0
- package/dist/src/getNarratives.specs.d.ts.map +1 -0
- package/dist/src/{getFlows.specs.js → getNarratives.specs.js} +28 -41
- package/dist/src/getNarratives.specs.js.map +1 -0
- package/dist/src/id/addAutoIds.specs.js +6 -6
- package/dist/src/id/addAutoIds.specs.js.map +1 -1
- package/dist/src/id/hasAllIds.specs.js +16 -16
- package/dist/src/id/hasAllIds.specs.js.map +1 -1
- package/dist/src/model-to-narrative.specs.d.ts +2 -0
- package/dist/src/model-to-narrative.specs.d.ts.map +1 -0
- package/dist/src/{model-to-flow.specs.js → model-to-narrative.specs.js} +212 -4
- package/dist/src/model-to-narrative.specs.js.map +1 -0
- package/dist/src/narrative-context.d.ts.map +1 -1
- package/dist/src/narrative-context.js +0 -1
- package/dist/src/narrative-context.js.map +1 -1
- package/dist/src/narrative.d.ts +1 -0
- package/dist/src/narrative.d.ts.map +1 -1
- package/dist/src/narrative.js +11 -0
- package/dist/src/narrative.js.map +1 -1
- package/dist/src/samples/items.narrative.d.ts +2 -0
- package/dist/src/samples/items.narrative.d.ts.map +1 -0
- package/dist/src/samples/{items.flow.js → items.narrative.js} +1 -1
- package/dist/src/samples/items.narrative.js.map +1 -0
- package/dist/src/samples/mixed-given-types.narrative.d.ts +2 -0
- package/dist/src/samples/mixed-given-types.narrative.d.ts.map +1 -0
- package/dist/src/samples/{mixed-given-types.flow.js → mixed-given-types.narrative.js} +1 -2
- package/dist/src/samples/mixed-given-types.narrative.js.map +1 -0
- package/dist/src/samples/{place-order.flow.d.ts → place-order.narrative.d.ts} +2 -2
- package/dist/src/samples/place-order.narrative.d.ts.map +1 -0
- package/dist/src/samples/{place-order.flow.js → place-order.narrative.js} +1 -1
- package/dist/src/samples/place-order.narrative.js.map +1 -0
- package/dist/src/samples/questionnaires.narrative.d.ts +2 -0
- package/dist/src/samples/questionnaires.narrative.d.ts.map +1 -0
- package/dist/src/samples/{questionnaires.flow.js → questionnaires.narrative.js} +1 -3
- package/dist/src/samples/questionnaires.narrative.js.map +1 -0
- package/dist/src/samples/seasonal-assistant.schema.json +1 -1
- package/dist/src/samples/test-with-ids.narrative.d.ts +2 -0
- package/dist/src/samples/test-with-ids.narrative.d.ts.map +1 -0
- package/dist/src/samples/{test-with-ids.flow.js → test-with-ids.narrative.js} +1 -1
- package/dist/src/samples/test-with-ids.narrative.js.map +1 -0
- package/dist/src/schema.d.ts +2980 -2980
- package/dist/src/schema.d.ts.map +1 -1
- package/dist/src/schema.js +1 -0
- package/dist/src/schema.js.map +1 -1
- package/dist/src/transformers/model-to-narrative/generators/gwt.d.ts.map +1 -1
- package/dist/src/transformers/model-to-narrative/generators/gwt.js +32 -8
- package/dist/src/transformers/model-to-narrative/generators/gwt.js.map +1 -1
- package/dist/src/transformers/narrative-to-model/debug.d.ts.map +1 -1
- package/dist/src/transformers/narrative-to-model/debug.js +1 -1
- package/dist/src/transformers/narrative-to-model/debug.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/src/commands/export-schema-helper.ts +1 -2
- package/src/{getFlows.cache.specs.ts → getNarratives.cache.specs.ts} +18 -18
- package/src/{getFlows.specs.ts → getNarratives.specs.ts} +29 -41
- package/src/id/addAutoIds.specs.ts +6 -6
- package/src/id/hasAllIds.specs.ts +16 -16
- package/src/{model-to-flow.specs.ts → model-to-narrative.specs.ts} +215 -3
- package/src/narrative-context.ts +0 -1
- package/src/narrative.ts +16 -1
- package/src/samples/{mixed-given-types.flow.ts → mixed-given-types.narrative.ts} +0 -1
- package/src/samples/{place-order.flow.ts → place-order.narrative.ts} +2 -2
- package/src/samples/{questionnaires.flow.ts → questionnaires.narrative.ts} +0 -2
- package/src/samples/seasonal-assistant.schema.json +1 -1
- package/src/schema.ts +1 -0
- package/src/transformers/model-to-narrative/generators/gwt.ts +44 -9
- package/src/transformers/narrative-to-model/debug.ts +1 -1
- package/.turbo/turbo-format.log +0 -4
- package/.turbo/turbo-lint.log +0 -4
- package/.turbo/turbo-test.log +0 -14
- package/.turbo/turbo-type-check.log +0 -4
- package/dist/src/data-flow-builders.d.ts +0 -71
- package/dist/src/data-flow-builders.d.ts.map +0 -1
- package/dist/src/data-flow-builders.js +0 -326
- package/dist/src/data-flow-builders.js.map +0 -1
- package/dist/src/flow-context.d.ts +0 -25
- package/dist/src/flow-context.d.ts.map +0 -1
- package/dist/src/flow-context.js +0 -579
- package/dist/src/flow-context.js.map +0 -1
- package/dist/src/flow-context.specs.d.ts +0 -2
- package/dist/src/flow-context.specs.d.ts.map +0 -1
- package/dist/src/flow-context.specs.js +0 -185
- package/dist/src/flow-context.specs.js.map +0 -1
- package/dist/src/flow-registry.d.ts +0 -12
- package/dist/src/flow-registry.d.ts.map +0 -1
- package/dist/src/flow-registry.js +0 -46
- package/dist/src/flow-registry.js.map +0 -1
- package/dist/src/flow.d.ts +0 -49
- package/dist/src/flow.d.ts.map +0 -1
- package/dist/src/flow.js +0 -146
- package/dist/src/flow.js.map +0 -1
- package/dist/src/getFlows.cache.specs.d.ts +0 -2
- package/dist/src/getFlows.cache.specs.d.ts.map +0 -1
- package/dist/src/getFlows.cache.specs.js.map +0 -1
- package/dist/src/getFlows.d.ts +0 -21
- package/dist/src/getFlows.d.ts.map +0 -1
- package/dist/src/getFlows.js +0 -119
- package/dist/src/getFlows.js.map +0 -1
- package/dist/src/getFlows.specs.d.ts +0 -2
- package/dist/src/getFlows.specs.d.ts.map +0 -1
- package/dist/src/getFlows.specs.js.map +0 -1
- package/dist/src/model-to-flow.specs.d.ts +0 -2
- package/dist/src/model-to-flow.specs.d.ts.map +0 -1
- package/dist/src/model-to-flow.specs.js.map +0 -1
- package/dist/src/samples/items.flow.d.ts +0 -2
- package/dist/src/samples/items.flow.d.ts.map +0 -1
- package/dist/src/samples/items.flow.js.map +0 -1
- package/dist/src/samples/mixed-given-types.flow.d.ts +0 -2
- package/dist/src/samples/mixed-given-types.flow.d.ts.map +0 -1
- package/dist/src/samples/mixed-given-types.flow.js.map +0 -1
- package/dist/src/samples/place-order.flow.d.ts.map +0 -1
- package/dist/src/samples/place-order.flow.js.map +0 -1
- package/dist/src/samples/questionnaires.flow.d.ts +0 -2
- package/dist/src/samples/questionnaires.flow.d.ts.map +0 -1
- package/dist/src/samples/questionnaires.flow.js.map +0 -1
- package/dist/src/samples/test-with-ids.flow.d.ts +0 -2
- package/dist/src/samples/test-with-ids.flow.d.ts.map +0 -1
- package/dist/src/samples/test-with-ids.flow.js.map +0 -1
- package/dist/src/transformers/flow-to-model/assemble.d.ts +0 -3
- package/dist/src/transformers/flow-to-model/assemble.d.ts.map +0 -1
- package/dist/src/transformers/flow-to-model/assemble.js +0 -9
- package/dist/src/transformers/flow-to-model/assemble.js.map +0 -1
- package/dist/src/transformers/flow-to-model/debug.d.ts +0 -3
- package/dist/src/transformers/flow-to-model/debug.d.ts.map +0 -1
- package/dist/src/transformers/flow-to-model/debug.js +0 -6
- package/dist/src/transformers/flow-to-model/debug.js.map +0 -1
- package/dist/src/transformers/flow-to-model/example-shapes.d.ts +0 -6
- package/dist/src/transformers/flow-to-model/example-shapes.d.ts.map +0 -1
- package/dist/src/transformers/flow-to-model/example-shapes.js +0 -60
- package/dist/src/transformers/flow-to-model/example-shapes.js.map +0 -1
- package/dist/src/transformers/flow-to-model/guards.d.ts +0 -15
- package/dist/src/transformers/flow-to-model/guards.d.ts.map +0 -1
- package/dist/src/transformers/flow-to-model/guards.js +0 -18
- package/dist/src/transformers/flow-to-model/guards.js.map +0 -1
- package/dist/src/transformers/flow-to-model/index.d.ts +0 -4
- package/dist/src/transformers/flow-to-model/index.d.ts.map +0 -1
- package/dist/src/transformers/flow-to-model/index.js +0 -193
- package/dist/src/transformers/flow-to-model/index.js.map +0 -1
- package/dist/src/transformers/flow-to-model/inlining.d.ts +0 -4
- package/dist/src/transformers/flow-to-model/inlining.d.ts.map +0 -1
- package/dist/src/transformers/flow-to-model/inlining.js +0 -95
- package/dist/src/transformers/flow-to-model/inlining.js.map +0 -1
- package/dist/src/transformers/flow-to-model/integrations.d.ts +0 -36
- package/dist/src/transformers/flow-to-model/integrations.d.ts.map +0 -1
- package/dist/src/transformers/flow-to-model/integrations.js +0 -147
- package/dist/src/transformers/flow-to-model/integrations.js.map +0 -1
- package/dist/src/transformers/flow-to-model/messages.d.ts +0 -5
- package/dist/src/transformers/flow-to-model/messages.d.ts.map +0 -1
- package/dist/src/transformers/flow-to-model/messages.js +0 -88
- package/dist/src/transformers/flow-to-model/messages.js.map +0 -1
- package/dist/src/transformers/flow-to-model/normalize.d.ts +0 -3
- package/dist/src/transformers/flow-to-model/normalize.d.ts.map +0 -1
- package/dist/src/transformers/flow-to-model/normalize.js +0 -23
- package/dist/src/transformers/flow-to-model/normalize.js.map +0 -1
- package/dist/src/transformers/flow-to-model/spec-processors.d.ts +0 -34
- package/dist/src/transformers/flow-to-model/spec-processors.d.ts.map +0 -1
- package/dist/src/transformers/flow-to-model/spec-processors.js +0 -395
- package/dist/src/transformers/flow-to-model/spec-processors.js.map +0 -1
- package/dist/src/transformers/flow-to-model/strings.d.ts +0 -2
- package/dist/src/transformers/flow-to-model/strings.d.ts.map +0 -1
- package/dist/src/transformers/flow-to-model/strings.js +0 -11
- package/dist/src/transformers/flow-to-model/strings.js.map +0 -1
- package/dist/src/transformers/flow-to-model/type-inference.d.ts +0 -3
- package/dist/src/transformers/flow-to-model/type-inference.d.ts.map +0 -1
- package/dist/src/transformers/flow-to-model/type-inference.js +0 -92
- package/dist/src/transformers/flow-to-model/type-inference.js.map +0 -1
- package/dist/src/transformers/flow-to-model/type-inference.specs.d.ts +0 -2
- package/dist/src/transformers/flow-to-model/type-inference.specs.d.ts.map +0 -1
- package/dist/src/transformers/flow-to-model/type-inference.specs.js +0 -167
- package/dist/src/transformers/flow-to-model/type-inference.specs.js.map +0 -1
- package/dist/src/transformers/flow-to-model/zod-adapter.d.ts +0 -6
- package/dist/src/transformers/flow-to-model/zod-adapter.d.ts.map +0 -1
- package/dist/src/transformers/flow-to-model/zod-adapter.js +0 -101
- package/dist/src/transformers/flow-to-model/zod-adapter.js.map +0 -1
- package/dist/src/transformers/model-to-flow/analysis/extract-flow.d.ts +0 -2
- package/dist/src/transformers/model-to-flow/analysis/extract-flow.d.ts.map +0 -1
- package/dist/src/transformers/model-to-flow/analysis/extract-flow.js +0 -22
- package/dist/src/transformers/model-to-flow/analysis/extract-flow.js.map +0 -1
- package/dist/src/transformers/model-to-flow/analysis/lint-helpers.d.ts +0 -18
- package/dist/src/transformers/model-to-flow/analysis/lint-helpers.d.ts.map +0 -1
- package/dist/src/transformers/model-to-flow/analysis/lint-helpers.js +0 -78
- package/dist/src/transformers/model-to-flow/analysis/lint-helpers.js.map +0 -1
- package/dist/src/transformers/model-to-flow/analysis/type-decls.d.ts +0 -7
- package/dist/src/transformers/model-to-flow/analysis/type-decls.d.ts.map +0 -1
- package/dist/src/transformers/model-to-flow/analysis/type-decls.js +0 -74
- package/dist/src/transformers/model-to-flow/analysis/type-decls.js.map +0 -1
- package/dist/src/transformers/model-to-flow/analysis/usage.d.ts +0 -9
- package/dist/src/transformers/model-to-flow/analysis/usage.d.ts.map +0 -1
- package/dist/src/transformers/model-to-flow/analysis/usage.js +0 -90
- package/dist/src/transformers/model-to-flow/analysis/usage.js.map +0 -1
- package/dist/src/transformers/model-to-flow/ast/emit-helpers.d.ts +0 -18
- package/dist/src/transformers/model-to-flow/ast/emit-helpers.d.ts.map +0 -1
- package/dist/src/transformers/model-to-flow/ast/emit-helpers.js +0 -159
- package/dist/src/transformers/model-to-flow/ast/emit-helpers.js.map +0 -1
- package/dist/src/transformers/model-to-flow/formatting/prettier.d.ts +0 -2
- package/dist/src/transformers/model-to-flow/formatting/prettier.d.ts.map +0 -1
- package/dist/src/transformers/model-to-flow/formatting/prettier.js +0 -26
- package/dist/src/transformers/model-to-flow/formatting/prettier.js.map +0 -1
- package/dist/src/transformers/model-to-flow/formatting/sort-types.d.ts +0 -6
- package/dist/src/transformers/model-to-flow/formatting/sort-types.d.ts.map +0 -1
- package/dist/src/transformers/model-to-flow/formatting/sort-types.js +0 -17
- package/dist/src/transformers/model-to-flow/formatting/sort-types.js.map +0 -1
- package/dist/src/transformers/model-to-flow/generators/compose.d.ts +0 -6
- package/dist/src/transformers/model-to-flow/generators/compose.d.ts.map +0 -1
- package/dist/src/transformers/model-to-flow/generators/compose.js +0 -79
- package/dist/src/transformers/model-to-flow/generators/compose.js.map +0 -1
- package/dist/src/transformers/model-to-flow/generators/flow.d.ts +0 -15
- package/dist/src/transformers/model-to-flow/generators/flow.d.ts.map +0 -1
- package/dist/src/transformers/model-to-flow/generators/flow.js +0 -316
- package/dist/src/transformers/model-to-flow/generators/flow.js.map +0 -1
- package/dist/src/transformers/model-to-flow/generators/gwt.d.ts +0 -57
- package/dist/src/transformers/model-to-flow/generators/gwt.d.ts.map +0 -1
- package/dist/src/transformers/model-to-flow/generators/gwt.js +0 -186
- package/dist/src/transformers/model-to-flow/generators/gwt.js.map +0 -1
- package/dist/src/transformers/model-to-flow/generators/imports.d.ts +0 -16
- package/dist/src/transformers/model-to-flow/generators/imports.d.ts.map +0 -1
- package/dist/src/transformers/model-to-flow/generators/imports.js +0 -57
- package/dist/src/transformers/model-to-flow/generators/imports.js.map +0 -1
- package/dist/src/transformers/model-to-flow/generators/types.d.ts +0 -13
- package/dist/src/transformers/model-to-flow/generators/types.d.ts.map +0 -1
- package/dist/src/transformers/model-to-flow/generators/types.js +0 -22
- package/dist/src/transformers/model-to-flow/generators/types.js.map +0 -1
- package/dist/src/transformers/model-to-flow/index.d.ts +0 -13
- package/dist/src/transformers/model-to-flow/index.d.ts.map +0 -1
- package/dist/src/transformers/model-to-flow/index.js +0 -25
- package/dist/src/transformers/model-to-flow/index.js.map +0 -1
- package/dist/src/transformers/model-to-flow/utils/integration-extractor.d.ts +0 -12
- package/dist/src/transformers/model-to-flow/utils/integration-extractor.d.ts.map +0 -1
- package/dist/src/transformers/model-to-flow/utils/integration-extractor.js +0 -64
- package/dist/src/transformers/model-to-flow/utils/integration-extractor.js.map +0 -1
- package/dist/src/transformers/model-to-flow/utils/strings.d.ts +0 -9
- package/dist/src/transformers/model-to-flow/utils/strings.d.ts.map +0 -1
- package/dist/src/transformers/model-to-flow/utils/strings.js +0 -11
- package/dist/src/transformers/model-to-flow/utils/strings.js.map +0 -1
- /package/src/samples/{items.flow.ts → items.narrative.ts} +0 -0
- /package/src/samples/{test-with-ids.flow.ts → test-with-ids.narrative.ts} +0 -0
package/package.json
CHANGED
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
"typescript": "^5.9.2",
|
|
20
20
|
"zod": "^3.22.4",
|
|
21
21
|
"zod-to-json-schema": "^3.22.3",
|
|
22
|
-
"@auto-engineer/file-store": "0.11.
|
|
23
|
-
"@auto-engineer/id": "0.11.
|
|
24
|
-
"@auto-engineer/message-bus": "0.11.
|
|
22
|
+
"@auto-engineer/file-store": "0.11.13",
|
|
23
|
+
"@auto-engineer/id": "0.11.13",
|
|
24
|
+
"@auto-engineer/message-bus": "0.11.13"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "^20.0.0",
|
|
@@ -29,12 +29,12 @@
|
|
|
29
29
|
"eslint-plugin-sort-keys-fix": "^1.1.2",
|
|
30
30
|
"fake-indexeddb": "^6.0.0",
|
|
31
31
|
"tsx": "^4.20.3",
|
|
32
|
-
"@auto-engineer/cli": "0.11.
|
|
32
|
+
"@auto-engineer/cli": "0.11.13"
|
|
33
33
|
},
|
|
34
34
|
"publishConfig": {
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
|
37
|
-
"version": "0.11.
|
|
37
|
+
"version": "0.11.13",
|
|
38
38
|
"scripts": {
|
|
39
39
|
"build": "tsx scripts/build.ts",
|
|
40
40
|
"test": "vitest run --reporter=dot",
|
|
@@ -12,7 +12,6 @@ const main = async () => {
|
|
|
12
12
|
debug('Starting export-schema-helper with directory: %s', directory);
|
|
13
13
|
|
|
14
14
|
try {
|
|
15
|
-
// Import getFlows from the project's node_modules to ensure we use the same module context
|
|
16
15
|
const getFileStore = getFs as () => Promise<IExtendedFileStore>;
|
|
17
16
|
const fs: IExtendedFileStore = await getFileStore();
|
|
18
17
|
const projectNarrativePath = fs.join(
|
|
@@ -24,7 +23,7 @@ const main = async () => {
|
|
|
24
23
|
'src',
|
|
25
24
|
'getNarratives.js',
|
|
26
25
|
);
|
|
27
|
-
debug('Importing
|
|
26
|
+
debug('Importing getNarratives from: %s', projectNarrativePath);
|
|
28
27
|
|
|
29
28
|
const { pathToFileURL } = await import('url');
|
|
30
29
|
const narrativeModule = (await import(pathToFileURL(projectNarrativePath).href)) as {
|
|
@@ -15,7 +15,7 @@ const importMap = {
|
|
|
15
15
|
'graphql-tag': { default: gql, gql },
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
const pattern = /\.(
|
|
18
|
+
const pattern = /\.(narrative)\.(ts)$/;
|
|
19
19
|
|
|
20
20
|
describe('getNarratives caching', () => {
|
|
21
21
|
let vfs: IFileStore;
|
|
@@ -42,7 +42,7 @@ describe('getNarratives caching', () => {
|
|
|
42
42
|
`;
|
|
43
43
|
|
|
44
44
|
await vfs.write('/test/helper.ts', new TextEncoder().encode(helperContent1));
|
|
45
|
-
await vfs.write('/test/test.
|
|
45
|
+
await vfs.write('/test/test.narrative.ts', new TextEncoder().encode(flowContent));
|
|
46
46
|
|
|
47
47
|
const firstCallResult = await getNarratives({ vfs, root, pattern, fastFsScan: true, importMap });
|
|
48
48
|
const hash1 = firstCallResult.vfsFiles.sort().join(',');
|
|
@@ -69,7 +69,7 @@ describe('getNarratives caching', () => {
|
|
|
69
69
|
const x = 1;
|
|
70
70
|
});
|
|
71
71
|
`;
|
|
72
|
-
await vfs.write('/test/test.
|
|
72
|
+
await vfs.write('/test/test.narrative.ts', new TextEncoder().encode(flowContent));
|
|
73
73
|
|
|
74
74
|
const importMap1 = { 'test-module': { default: 'value1' } };
|
|
75
75
|
const result1 = await getNarratives({ vfs, root, importMap: importMap1, pattern, fastFsScan: true });
|
|
@@ -96,7 +96,7 @@ describe('getNarratives caching', () => {
|
|
|
96
96
|
`;
|
|
97
97
|
|
|
98
98
|
await vfs.write('/test/helper.ts', new TextEncoder().encode(helperContent1));
|
|
99
|
-
await vfs.write('/test/test.
|
|
99
|
+
await vfs.write('/test/test.narrative.ts', new TextEncoder().encode(flowContent));
|
|
100
100
|
|
|
101
101
|
const firstCallResult = await getNarratives({ vfs, root, pattern, fastFsScan: true, importMap });
|
|
102
102
|
const filesCount1 = firstCallResult.vfsFiles.length;
|
|
@@ -133,7 +133,7 @@ describe('getNarratives caching', () => {
|
|
|
133
133
|
});
|
|
134
134
|
`;
|
|
135
135
|
|
|
136
|
-
await vfs.write('/test/test.
|
|
136
|
+
await vfs.write('/test/test.narrative.ts', new TextEncoder().encode(flowContent));
|
|
137
137
|
await vfs.write('/test/unrelated.txt', new TextEncoder().encode('initial content'));
|
|
138
138
|
|
|
139
139
|
const firstCallResult = await getNarratives({ vfs, root, pattern, fastFsScan: true, importMap });
|
|
@@ -162,13 +162,13 @@ describe('getNarratives caching', () => {
|
|
|
162
162
|
});
|
|
163
163
|
`;
|
|
164
164
|
|
|
165
|
-
await vfs.write('/test/test.
|
|
166
|
-
await vfs.write('/test/test2.
|
|
165
|
+
await vfs.write('/test/test.narrative.ts', new TextEncoder().encode(flowContent1));
|
|
166
|
+
await vfs.write('/test/test2.narrative.ts', new TextEncoder().encode(flowContent2));
|
|
167
167
|
|
|
168
168
|
const firstCallResult = await getNarratives({ vfs, root, pattern, fastFsScan: true, importMap });
|
|
169
169
|
expect(firstCallResult.narratives.length).toBeGreaterThanOrEqual(2);
|
|
170
170
|
|
|
171
|
-
await vfs.remove('/test/test2.
|
|
171
|
+
await vfs.remove('/test/test2.narrative.ts');
|
|
172
172
|
|
|
173
173
|
const secondCallResult = await getNarratives({ vfs, root, pattern, fastFsScan: true, importMap });
|
|
174
174
|
|
|
@@ -185,21 +185,21 @@ describe('getNarratives caching', () => {
|
|
|
185
185
|
});
|
|
186
186
|
`;
|
|
187
187
|
|
|
188
|
-
await vfs.write('/test/test.
|
|
188
|
+
await vfs.write('/test/test.narrative.ts', new TextEncoder().encode(flowContent));
|
|
189
189
|
|
|
190
190
|
const firstCallResult = await getNarratives({ vfs, root, pattern, fastFsScan: true, importMap });
|
|
191
|
-
expect(firstCallResult.vfsFiles.some((f) => f.includes('test.
|
|
191
|
+
expect(firstCallResult.vfsFiles.some((f) => f.includes('test.narrative.ts'))).toBe(true);
|
|
192
192
|
|
|
193
|
-
const content = await vfs.read('/test/test.
|
|
193
|
+
const content = await vfs.read('/test/test.narrative.ts');
|
|
194
194
|
if (content) {
|
|
195
|
-
await vfs.write('/test/renamed.
|
|
196
|
-
await vfs.remove('/test/test.
|
|
195
|
+
await vfs.write('/test/renamed.narrative.ts', content);
|
|
196
|
+
await vfs.remove('/test/test.narrative.ts');
|
|
197
197
|
}
|
|
198
198
|
|
|
199
199
|
const secondCallResult = await getNarratives({ vfs, root, pattern, fastFsScan: true });
|
|
200
200
|
|
|
201
|
-
expect(secondCallResult.vfsFiles.some((f) => f.includes('renamed.
|
|
202
|
-
expect(secondCallResult.vfsFiles.some((f) => f.includes('test.
|
|
201
|
+
expect(secondCallResult.vfsFiles.some((f) => f.includes('renamed.narrative.ts'))).toBe(true);
|
|
202
|
+
expect(secondCallResult.vfsFiles.some((f) => f.includes('test.narrative.ts'))).toBe(false);
|
|
203
203
|
});
|
|
204
204
|
|
|
205
205
|
it('should handle .d.ts files if they affect the graph', async () => {
|
|
@@ -217,7 +217,7 @@ describe('getNarratives caching', () => {
|
|
|
217
217
|
`;
|
|
218
218
|
|
|
219
219
|
await vfs.write('/test/types.d.ts', new TextEncoder().encode(dtsContent));
|
|
220
|
-
await vfs.write('/test/test.
|
|
220
|
+
await vfs.write('/test/test.narrative.ts', new TextEncoder().encode(flowContent));
|
|
221
221
|
|
|
222
222
|
const result = await getNarratives({ vfs, root, pattern, fastFsScan: true, importMap });
|
|
223
223
|
|
|
@@ -233,7 +233,7 @@ describe('getNarratives caching', () => {
|
|
|
233
233
|
});
|
|
234
234
|
`;
|
|
235
235
|
|
|
236
|
-
await vfs.write('/test/test.
|
|
236
|
+
await vfs.write('/test/test.narrative.ts', new TextEncoder().encode(flowContent));
|
|
237
237
|
|
|
238
238
|
const importMap1 = { 'module-a': 'value', 'module-b': 'value' };
|
|
239
239
|
const result1 = await getNarratives({ vfs, root, importMap: importMap1, pattern, fastFsScan: true });
|
|
@@ -268,7 +268,7 @@ describe('getNarratives caching', () => {
|
|
|
268
268
|
await vfs.write('/test/chain3.ts', new TextEncoder().encode(chain3Content));
|
|
269
269
|
await vfs.write('/test/chain2.ts', new TextEncoder().encode(chain2Content));
|
|
270
270
|
await vfs.write('/test/chain1.ts', new TextEncoder().encode(chain1Content));
|
|
271
|
-
await vfs.write('/test/test.
|
|
271
|
+
await vfs.write('/test/test.narrative.ts', new TextEncoder().encode(flowContent));
|
|
272
272
|
|
|
273
273
|
const result1 = await getNarratives({ vfs, root, pattern, fastFsScan: true, importMap });
|
|
274
274
|
|
|
@@ -8,7 +8,7 @@ import { getNarratives } from './getNarratives';
|
|
|
8
8
|
|
|
9
9
|
const __filename = fileURLToPath(import.meta.url);
|
|
10
10
|
const __dirname = path.dirname(__filename);
|
|
11
|
-
const pattern = /\.(
|
|
11
|
+
const pattern = /\.(narrative)\.(ts)$/;
|
|
12
12
|
|
|
13
13
|
describe('getNarratives', (_mode) => {
|
|
14
14
|
let vfs: NodeFileStore;
|
|
@@ -19,7 +19,7 @@ describe('getNarratives', (_mode) => {
|
|
|
19
19
|
root = path.resolve(__dirname);
|
|
20
20
|
});
|
|
21
21
|
// eslint-disable-next-line complexity
|
|
22
|
-
it('loads multiple
|
|
22
|
+
it('loads multiple narratives and generates correct models', async () => {
|
|
23
23
|
const flows = await getNarratives({ vfs, root: path.resolve(__dirname), pattern, fastFsScan: true });
|
|
24
24
|
const schemas = flows.toModel();
|
|
25
25
|
|
|
@@ -182,7 +182,7 @@ describe('getNarratives', (_mode) => {
|
|
|
182
182
|
});
|
|
183
183
|
|
|
184
184
|
it('validates the complete schema with Zod', async () => {
|
|
185
|
-
const flows = await getNarratives({ vfs: vfs, root, pattern: /\.(
|
|
185
|
+
const flows = await getNarratives({ vfs: vfs, root, pattern: /\.(narrative)\.(ts)$/, fastFsScan: true });
|
|
186
186
|
const schemas = flows.toModel();
|
|
187
187
|
const parsed = modelSchema.parse(schemas);
|
|
188
188
|
expect(parsed.variant).toBe('specs');
|
|
@@ -191,8 +191,8 @@ describe('getNarratives', (_mode) => {
|
|
|
191
191
|
expect(Array.isArray(parsed.integrations)).toBe(true);
|
|
192
192
|
});
|
|
193
193
|
|
|
194
|
-
it('should handle
|
|
195
|
-
const flows = await getNarratives({ vfs: vfs, root: root, pattern: /\.(
|
|
194
|
+
it('should handle narratives with integrations', async () => {
|
|
195
|
+
const flows = await getNarratives({ vfs: vfs, root: root, pattern: /\.(narrative)\.(ts)$/, fastFsScan: true });
|
|
196
196
|
const specsSchema = flows.toModel();
|
|
197
197
|
|
|
198
198
|
const flowsWithIntegrations = specsSchema.narratives.filter((f) =>
|
|
@@ -216,7 +216,7 @@ describe('getNarratives', (_mode) => {
|
|
|
216
216
|
});
|
|
217
217
|
|
|
218
218
|
it('should handle react slices correctly', async () => {
|
|
219
|
-
const flows = await getNarratives({ vfs: vfs, root: root, pattern: /\.(
|
|
219
|
+
const flows = await getNarratives({ vfs: vfs, root: root, pattern: /\.(narrative)\.(ts)$/, fastFsScan: true });
|
|
220
220
|
const specsSchema = flows.toModel();
|
|
221
221
|
|
|
222
222
|
const reactSlices = specsSchema.narratives.flatMap((f) => f.slices.filter((s) => s.type === 'react'));
|
|
@@ -241,7 +241,7 @@ describe('getNarratives', (_mode) => {
|
|
|
241
241
|
});
|
|
242
242
|
|
|
243
243
|
it('should parse and validate a complete flow with all slice types', async () => {
|
|
244
|
-
const flows = await getNarratives({ vfs: vfs, root: root, pattern: /\.(
|
|
244
|
+
const flows = await getNarratives({ vfs: vfs, root: root, pattern: /\.(narrative)\.(ts)$/, fastFsScan: true });
|
|
245
245
|
const schemas = flows.toModel();
|
|
246
246
|
|
|
247
247
|
const validationResult = modelSchema.safeParse(schemas);
|
|
@@ -267,8 +267,8 @@ describe('getNarratives', (_mode) => {
|
|
|
267
267
|
).toBe(true);
|
|
268
268
|
});
|
|
269
269
|
|
|
270
|
-
it('should have ids for
|
|
271
|
-
const flows = await getNarratives({ vfs: vfs, root: root, pattern: /\.(
|
|
270
|
+
it('should have ids for narratives and slices that have ids', async () => {
|
|
271
|
+
const flows = await getNarratives({ vfs: vfs, root: root, pattern: /\.(narrative)\.(ts)$/, fastFsScan: true });
|
|
272
272
|
|
|
273
273
|
const schemas = flows.toModel();
|
|
274
274
|
|
|
@@ -286,7 +286,7 @@ describe('getNarratives', (_mode) => {
|
|
|
286
286
|
});
|
|
287
287
|
|
|
288
288
|
it('should have ids for command slice rules', async () => {
|
|
289
|
-
const flows = await getNarratives({ vfs: vfs, root: root, pattern: /\.(
|
|
289
|
+
const flows = await getNarratives({ vfs: vfs, root: root, pattern: /\.(narrative)\.(ts)$/, fastFsScan: true });
|
|
290
290
|
const schemas = flows.toModel();
|
|
291
291
|
|
|
292
292
|
const testFlowWithIds = schemas.narratives.find((f) => f.name === 'Test Flow with IDs');
|
|
@@ -309,7 +309,7 @@ describe('getNarratives', (_mode) => {
|
|
|
309
309
|
});
|
|
310
310
|
|
|
311
311
|
it('should have ids for query slice rules', async () => {
|
|
312
|
-
const flows = await getNarratives({ vfs: vfs, root: root, pattern: /\.(
|
|
312
|
+
const flows = await getNarratives({ vfs: vfs, root: root, pattern: /\.(narrative)\.(ts)$/, fastFsScan: true });
|
|
313
313
|
const schemas = flows.toModel();
|
|
314
314
|
|
|
315
315
|
const testFlowWithIds = schemas.narratives.find((f) => f.name === 'Test Flow with IDs');
|
|
@@ -327,7 +327,7 @@ describe('getNarratives', (_mode) => {
|
|
|
327
327
|
});
|
|
328
328
|
|
|
329
329
|
it('should have ids for react slice rules', async () => {
|
|
330
|
-
const flows = await getNarratives({ vfs: vfs, root: root, pattern: /\.(
|
|
330
|
+
const flows = await getNarratives({ vfs: vfs, root: root, pattern: /\.(narrative)\.(ts)$/, fastFsScan: true });
|
|
331
331
|
const schemas = flows.toModel();
|
|
332
332
|
|
|
333
333
|
const testFlowWithIds = schemas.narratives.find((f) => f.name === 'Test Flow with IDs');
|
|
@@ -348,7 +348,7 @@ describe('getNarratives', (_mode) => {
|
|
|
348
348
|
const flows = await getNarratives({
|
|
349
349
|
vfs,
|
|
350
350
|
root,
|
|
351
|
-
pattern: /(?:^|\/)questionnaires\.
|
|
351
|
+
pattern: /(?:^|\/)questionnaires\.narrative\.(?:ts|tsx|js|jsx|mjs|cjs)$/,
|
|
352
352
|
});
|
|
353
353
|
const model = flows.toModel();
|
|
354
354
|
|
|
@@ -379,7 +379,7 @@ describe('getNarratives', (_mode) => {
|
|
|
379
379
|
const flows = await getNarratives({
|
|
380
380
|
vfs,
|
|
381
381
|
root,
|
|
382
|
-
pattern: /(?:^|\/)questionnaires\.
|
|
382
|
+
pattern: /(?:^|\/)questionnaires\.narrative\.(?:ts|tsx|js|jsx|mjs|cjs)$/,
|
|
383
383
|
fastFsScan: true,
|
|
384
384
|
});
|
|
385
385
|
const model = flows.toModel();
|
|
@@ -401,7 +401,7 @@ flow('Test Experience Flow', () => {
|
|
|
401
401
|
});
|
|
402
402
|
`;
|
|
403
403
|
|
|
404
|
-
await memoryVfs.write('/test/experience.
|
|
404
|
+
await memoryVfs.write('/test/experience.narrative.ts', new TextEncoder().encode(flowWithExperienceContent));
|
|
405
405
|
|
|
406
406
|
const flows = await getNarratives({ vfs: memoryVfs, root: '/test', pattern, fastFsScan: true });
|
|
407
407
|
const model = flows.toModel();
|
|
@@ -444,14 +444,14 @@ flow('Browser Test Flow', () => {
|
|
|
444
444
|
});
|
|
445
445
|
`;
|
|
446
446
|
|
|
447
|
-
await memoryVfs.write('/browser/test.
|
|
447
|
+
await memoryVfs.write('/browser/test.narrative.ts', new TextEncoder().encode(flowContent));
|
|
448
448
|
|
|
449
449
|
const { executeAST } = await import('./loader');
|
|
450
450
|
const { registry } = await import('./narrative-registry');
|
|
451
451
|
|
|
452
452
|
registry.clearAll();
|
|
453
453
|
|
|
454
|
-
await executeAST(['/browser/test.
|
|
454
|
+
await executeAST(['/browser/test.narrative.ts'], memoryVfs, {}, '/browser');
|
|
455
455
|
|
|
456
456
|
const flows = registry.getAllNarratives();
|
|
457
457
|
expect(flows).toHaveLength(1);
|
|
@@ -484,11 +484,13 @@ flow('Questionnaires', 'AUTO-Q9m2Kp4Lx', () => {
|
|
|
484
484
|
});
|
|
485
485
|
`;
|
|
486
486
|
|
|
487
|
-
await memoryVfs.write('/browser/questionnaires.
|
|
487
|
+
await memoryVfs.write('/browser/questionnaires.narrative.ts', new TextEncoder().encode(flowContent));
|
|
488
488
|
|
|
489
489
|
registry.clearAll();
|
|
490
490
|
|
|
491
|
-
await expect(
|
|
491
|
+
await expect(
|
|
492
|
+
executeAST(['/browser/questionnaires.narrative.ts'], memoryVfs, {}, '/browser'),
|
|
493
|
+
).resolves.toBeDefined();
|
|
492
494
|
|
|
493
495
|
const flows = registry.getAllNarratives();
|
|
494
496
|
expect(flows).toHaveLength(1);
|
|
@@ -598,7 +600,7 @@ flow('questionnaires-test', () => {
|
|
|
598
600
|
});
|
|
599
601
|
`;
|
|
600
602
|
|
|
601
|
-
await memoryVfs.write('/test/questionnaires.
|
|
603
|
+
await memoryVfs.write('/test/questionnaires.narrative.ts', new TextEncoder().encode(questionnaireFlowContent));
|
|
602
604
|
|
|
603
605
|
const flows = await getNarratives({ vfs: memoryVfs, root: '/test', pattern, fastFsScan: true });
|
|
604
606
|
const model = flows.toModel();
|
|
@@ -638,31 +640,27 @@ flow('questionnaires-test', () => {
|
|
|
638
640
|
}
|
|
639
641
|
});
|
|
640
642
|
|
|
641
|
-
it('does not emit empty generics
|
|
643
|
+
it('does not emit empty generics or empty when clauses', async () => {
|
|
642
644
|
const flows = await getNarratives({
|
|
643
645
|
vfs,
|
|
644
646
|
root,
|
|
645
|
-
pattern: /(?:^|\/)questionnaires\.
|
|
647
|
+
pattern: /(?:^|\/)questionnaires\.narrative\.(?:ts|tsx|js|jsx|mjs|cjs)$/,
|
|
646
648
|
fastFsScan: true,
|
|
647
649
|
});
|
|
648
650
|
|
|
649
651
|
const model = flows.toModel();
|
|
650
652
|
const code = await modelToNarrative(model);
|
|
651
653
|
|
|
652
|
-
// Should not produce `.when<>({})` for empty when-clauses
|
|
653
654
|
expect(code).not.toMatch(/\.when<>\(\{\}\)/);
|
|
654
|
-
|
|
655
|
-
// should render empty whens as `.when({})` for empty when-clauses
|
|
656
|
-
const emptyWhenCount = (code.match(/\.when\(\{}\)/g) ?? []).length;
|
|
657
|
-
expect(emptyWhenCount).toBeGreaterThanOrEqual(2);
|
|
658
655
|
expect(code).not.toMatch(/\.when<\s*\{\s*}\s*>\(\{}\)/);
|
|
656
|
+
expect(code).not.toMatch(/\.when\(\{}\)/);
|
|
659
657
|
});
|
|
660
658
|
|
|
661
659
|
it('should not generate phantom messages with empty names', async () => {
|
|
662
660
|
const flows = await getNarratives({
|
|
663
661
|
vfs,
|
|
664
662
|
root: root,
|
|
665
|
-
pattern: /(?:^|\/)questionnaires\.
|
|
663
|
+
pattern: /(?:^|\/)questionnaires\.narrative\.(?:ts|tsx|js|jsx|mjs|cjs)$/,
|
|
666
664
|
fastFsScan: true,
|
|
667
665
|
});
|
|
668
666
|
const model = flows.toModel();
|
|
@@ -769,7 +767,7 @@ flow('Todo List', () => {
|
|
|
769
767
|
});
|
|
770
768
|
`;
|
|
771
769
|
|
|
772
|
-
await memoryVfs.write('/test/todo-summary.
|
|
770
|
+
await memoryVfs.write('/test/todo-summary.narrative.ts', new TextEncoder().encode(todoSummaryFlowContent));
|
|
773
771
|
|
|
774
772
|
const flows = await getNarratives({ vfs: memoryVfs, root: '/test', pattern, fastFsScan: true });
|
|
775
773
|
const model = flows.toModel();
|
|
@@ -925,17 +923,7 @@ function validateMixedGivenTypes(example: Example): void {
|
|
|
925
923
|
}
|
|
926
924
|
|
|
927
925
|
function validateEmptyWhenClause(example: Example): void {
|
|
928
|
-
expect(example.when).
|
|
929
|
-
expect(typeof example.when === 'object' && !Array.isArray(example.when)).toBe(true);
|
|
930
|
-
if (typeof example.when === 'object' && !Array.isArray(example.when)) {
|
|
931
|
-
expect('commandRef' in example.when).toBe(false);
|
|
932
|
-
expect('eventRef' in example.when).toBe(true);
|
|
933
|
-
expect('stateRef' in example.when).toBe(false);
|
|
934
|
-
if ('eventRef' in example.when) {
|
|
935
|
-
expect(example.when.eventRef).toBe('');
|
|
936
|
-
}
|
|
937
|
-
expect(example.when.exampleData).toEqual({});
|
|
938
|
-
}
|
|
926
|
+
expect(example.when).toBeUndefined();
|
|
939
927
|
}
|
|
940
928
|
|
|
941
929
|
function validateThenClause(example: Example): void {
|
|
@@ -971,7 +959,7 @@ function validateMixedGivenTypeMessages(model: Model): void {
|
|
|
971
959
|
async function createQuestionnaireBugTestModel(): Promise<Model> {
|
|
972
960
|
const memoryVfs = new InMemoryFileStore();
|
|
973
961
|
const questionnaireFlowContent = getQuestionnaireFlowContent();
|
|
974
|
-
await memoryVfs.write('/test/questionnaires-bug.
|
|
962
|
+
await memoryVfs.write('/test/questionnaires-bug.narrative.ts', new TextEncoder().encode(questionnaireFlowContent));
|
|
975
963
|
const flows = await getNarratives({ vfs: memoryVfs, root: '/test', pattern, fastFsScan: true });
|
|
976
964
|
return flows.toModel();
|
|
977
965
|
}
|
|
@@ -220,7 +220,7 @@ describe('addAutoIds', () => {
|
|
|
220
220
|
narratives: [
|
|
221
221
|
{
|
|
222
222
|
name: 'Home Screen',
|
|
223
|
-
sourceFile: '/path/to/homepage.
|
|
223
|
+
sourceFile: '/path/to/homepage.narrative.ts',
|
|
224
224
|
slices: [
|
|
225
225
|
{
|
|
226
226
|
name: 'Active Surveys Summary',
|
|
@@ -236,7 +236,7 @@ describe('addAutoIds', () => {
|
|
|
236
236
|
},
|
|
237
237
|
{
|
|
238
238
|
name: 'Create Survey',
|
|
239
|
-
sourceFile: '/path/to/homepage.
|
|
239
|
+
sourceFile: '/path/to/homepage.narrative.ts',
|
|
240
240
|
slices: [
|
|
241
241
|
{
|
|
242
242
|
name: 'Create Survey Form',
|
|
@@ -252,7 +252,7 @@ describe('addAutoIds', () => {
|
|
|
252
252
|
},
|
|
253
253
|
{
|
|
254
254
|
name: 'Response Analytics',
|
|
255
|
-
sourceFile: '/path/to/homepage.
|
|
255
|
+
sourceFile: '/path/to/homepage.narrative.ts',
|
|
256
256
|
slices: [
|
|
257
257
|
{
|
|
258
258
|
name: 'Response Rate Charts',
|
|
@@ -289,8 +289,8 @@ describe('addAutoIds', () => {
|
|
|
289
289
|
expect(result.narratives[0].slices[0].id).not.toBe(result.narratives[2].slices[0].id);
|
|
290
290
|
expect(result.narratives[1].slices[0].id).not.toBe(result.narratives[2].slices[0].id);
|
|
291
291
|
|
|
292
|
-
expect(result.narratives[0].sourceFile).toBe('/path/to/homepage.
|
|
293
|
-
expect(result.narratives[1].sourceFile).toBe('/path/to/homepage.
|
|
294
|
-
expect(result.narratives[2].sourceFile).toBe('/path/to/homepage.
|
|
292
|
+
expect(result.narratives[0].sourceFile).toBe('/path/to/homepage.narrative.ts');
|
|
293
|
+
expect(result.narratives[1].sourceFile).toBe('/path/to/homepage.narrative.ts');
|
|
294
|
+
expect(result.narratives[2].sourceFile).toBe('/path/to/homepage.narrative.ts');
|
|
295
295
|
});
|
|
296
296
|
});
|
|
@@ -146,14 +146,14 @@ flow('Response Analytics', 'AUTO-eME978Euk', () => {
|
|
|
146
146
|
const flowContent3 = new TextEncoder().encode(multipleFlowsSameSource);
|
|
147
147
|
const flowContent4 = new TextEncoder().encode(multipleFlowsIncomplete);
|
|
148
148
|
const flowContent5 = new TextEncoder().encode(multipleFlowsSliceMissing);
|
|
149
|
-
await vfs.write('/test/flow-without-ids.
|
|
150
|
-
await vfs.write('/test/flow-with-ids.
|
|
151
|
-
await vfs.write('/test/homepage.
|
|
152
|
-
await vfs.write('/test/homepage-incomplete.
|
|
153
|
-
await vfs.write('/test/homepage-slice-missing.
|
|
149
|
+
await vfs.write('/test/flow-without-ids.narrative.ts', flowContent1);
|
|
150
|
+
await vfs.write('/test/flow-with-ids.narrative.ts', flowContent2);
|
|
151
|
+
await vfs.write('/test/homepage.narrative.ts', flowContent3);
|
|
152
|
+
await vfs.write('/test/homepage-incomplete.narrative.ts', flowContent4);
|
|
153
|
+
await vfs.write('/test/homepage-slice-missing.narrative.ts', flowContent5);
|
|
154
154
|
});
|
|
155
155
|
it('should return false for models without IDs', async () => {
|
|
156
|
-
const result = await getNarratives({ vfs, root, pattern: /\.(
|
|
156
|
+
const result = await getNarratives({ vfs, root, pattern: /\.(narrative)\.(ts)$/, fastFsScan: true, importMap });
|
|
157
157
|
const model = result.toModel();
|
|
158
158
|
|
|
159
159
|
const flowWithoutIds = model.narratives.find((f) => f.name === 'Test Flow Without IDs');
|
|
@@ -166,7 +166,7 @@ flow('Response Analytics', 'AUTO-eME978Euk', () => {
|
|
|
166
166
|
});
|
|
167
167
|
|
|
168
168
|
it('should return true for models with complete IDs', async () => {
|
|
169
|
-
const result = await getNarratives({ vfs, root, pattern: /\.(
|
|
169
|
+
const result = await getNarratives({ vfs, root, pattern: /\.(narrative)\.(ts)$/, fastFsScan: true, importMap });
|
|
170
170
|
const model = result.toModel();
|
|
171
171
|
|
|
172
172
|
const modelWithIds = addAutoIds(model);
|
|
@@ -174,7 +174,7 @@ flow('Response Analytics', 'AUTO-eME978Euk', () => {
|
|
|
174
174
|
});
|
|
175
175
|
|
|
176
176
|
it('should return true for flows that already have IDs', async () => {
|
|
177
|
-
const result = await getNarratives({ vfs, root, pattern: /\.(
|
|
177
|
+
const result = await getNarratives({ vfs, root, pattern: /\.(narrative)\.(ts)$/, fastFsScan: true, importMap });
|
|
178
178
|
const model = result.toModel();
|
|
179
179
|
|
|
180
180
|
const testFlowWithIds = model.narratives.find((f) => f.name === 'Test Flow with IDs');
|
|
@@ -187,7 +187,7 @@ flow('Response Analytics', 'AUTO-eME978Euk', () => {
|
|
|
187
187
|
});
|
|
188
188
|
|
|
189
189
|
it('should return false if any slice is missing an ID', async () => {
|
|
190
|
-
const result = await getNarratives({ vfs, root, pattern: /\.(
|
|
190
|
+
const result = await getNarratives({ vfs, root, pattern: /\.(narrative)\.(ts)$/, fastFsScan: true, importMap });
|
|
191
191
|
const model = result.toModel();
|
|
192
192
|
|
|
193
193
|
const modelWithIds = addAutoIds(model);
|
|
@@ -200,7 +200,7 @@ flow('Response Analytics', 'AUTO-eME978Euk', () => {
|
|
|
200
200
|
});
|
|
201
201
|
|
|
202
202
|
it('should return false if any rule is missing an ID', async () => {
|
|
203
|
-
const result = await getNarratives({ vfs, root, pattern: /\.(
|
|
203
|
+
const result = await getNarratives({ vfs, root, pattern: /\.(narrative)\.(ts)$/, fastFsScan: true, importMap });
|
|
204
204
|
const model = result.toModel();
|
|
205
205
|
|
|
206
206
|
const modelWithIds = addAutoIds(model);
|
|
@@ -227,11 +227,11 @@ flow('Response Analytics', 'AUTO-eME978Euk', () => {
|
|
|
227
227
|
});
|
|
228
228
|
|
|
229
229
|
it('should return true when multiple flows with same sourceFile all have IDs', async () => {
|
|
230
|
-
const result = await getNarratives({ vfs, root, pattern: /\.(
|
|
230
|
+
const result = await getNarratives({ vfs, root, pattern: /\.(narrative)\.(ts)$/, fastFsScan: true, importMap });
|
|
231
231
|
const model = result.toModel();
|
|
232
232
|
|
|
233
233
|
const homepageFlows = model.narratives.filter(
|
|
234
|
-
(f) => f.sourceFile !== undefined && f.sourceFile.includes('homepage.
|
|
234
|
+
(f) => f.sourceFile !== undefined && f.sourceFile.includes('homepage.narrative.ts'),
|
|
235
235
|
);
|
|
236
236
|
expect(homepageFlows.length).toBe(3);
|
|
237
237
|
|
|
@@ -240,11 +240,11 @@ flow('Response Analytics', 'AUTO-eME978Euk', () => {
|
|
|
240
240
|
});
|
|
241
241
|
|
|
242
242
|
it('should return false when any flow in multiple flows with same sourceFile is missing ID', async () => {
|
|
243
|
-
const result = await getNarratives({ vfs, root, pattern: /\.(
|
|
243
|
+
const result = await getNarratives({ vfs, root, pattern: /\.(narrative)\.(ts)$/, fastFsScan: true, importMap });
|
|
244
244
|
const model = result.toModel();
|
|
245
245
|
|
|
246
246
|
const homepageFlows = model.narratives.filter(
|
|
247
|
-
(f) => f.sourceFile !== undefined && f.sourceFile.includes('homepage-incomplete.
|
|
247
|
+
(f) => f.sourceFile !== undefined && f.sourceFile.includes('homepage-incomplete.narrative.ts'),
|
|
248
248
|
);
|
|
249
249
|
expect(homepageFlows.length).toBe(3);
|
|
250
250
|
|
|
@@ -253,11 +253,11 @@ flow('Response Analytics', 'AUTO-eME978Euk', () => {
|
|
|
253
253
|
});
|
|
254
254
|
|
|
255
255
|
it('should return false when any slice in multiple flows with same sourceFile is missing ID', async () => {
|
|
256
|
-
const result = await getNarratives({ vfs, root, pattern: /\.(
|
|
256
|
+
const result = await getNarratives({ vfs, root, pattern: /\.(narrative)\.(ts)$/, fastFsScan: true, importMap });
|
|
257
257
|
const model = result.toModel();
|
|
258
258
|
|
|
259
259
|
const homepageFlows = model.narratives.filter(
|
|
260
|
-
(f) => f.sourceFile !== undefined && f.sourceFile.includes('homepage-slice-missing.
|
|
260
|
+
(f) => f.sourceFile !== undefined && f.sourceFile.includes('homepage-slice-missing.narrative.ts'),
|
|
261
261
|
);
|
|
262
262
|
expect(homepageFlows.length).toBe(3);
|
|
263
263
|
|