sof-mssql 2.2.0 → 2.3.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.
- package/dist/fhirpath/visitor.d.ts +78 -0
- package/dist/fhirpath/visitor.d.ts.map +1 -1
- package/dist/fhirpath/visitor.js +208 -11
- package/dist/fhirpath/visitor.js.map +1 -1
- package/dist/parser.d.ts +1 -1
- package/dist/parser.js +1 -1
- package/dist/queryGenerator/treeWalker/compile.js +0 -1
- package/dist/queryGenerator/treeWalker/compile.js.map +1 -1
- package/dist/queryGenerator/treeWalker/cteTemplates.d.ts +9 -1
- package/dist/queryGenerator/treeWalker/cteTemplates.d.ts.map +1 -1
- package/dist/queryGenerator/treeWalker/cteTemplates.js +39 -3
- package/dist/queryGenerator/treeWalker/cteTemplates.js.map +1 -1
- package/dist/queryGenerator/treeWalker/operators/forEach.d.ts +4 -2
- package/dist/queryGenerator/treeWalker/operators/forEach.d.ts.map +1 -1
- package/dist/queryGenerator/treeWalker/operators/forEach.js +11 -5
- package/dist/queryGenerator/treeWalker/operators/forEach.js.map +1 -1
- package/dist/queryGenerator/treeWalker/operators/repeat.d.ts +2 -0
- package/dist/queryGenerator/treeWalker/operators/repeat.d.ts.map +1 -1
- package/dist/queryGenerator/treeWalker/operators/repeat.js +12 -0
- package/dist/queryGenerator/treeWalker/operators/repeat.js.map +1 -1
- package/dist/queryGenerator/treeWalker/types.d.ts +0 -2
- package/dist/queryGenerator/treeWalker/types.d.ts.map +1 -1
- package/dist/tests/utils/database.d.ts +2 -0
- package/dist/tests/utils/database.d.ts.map +1 -1
- package/dist/tests/utils/database.js +10 -1
- package/dist/tests/utils/database.js.map +1 -1
- package/dist/tests/utils/generator.d.ts +2 -0
- package/dist/tests/utils/generator.d.ts.map +1 -1
- package/dist/tests/utils/generator.js +24 -0
- package/dist/tests/utils/generator.js.map +1 -1
- package/dist/tests/utils/reporter.d.ts +1 -1
- package/dist/tests/utils/reporter.d.ts.map +1 -1
- package/dist/tests/utils/reporter.js +5 -4
- package/dist/tests/utils/reporter.js.map +1 -1
- package/dist/tests/utils/types.d.ts +1 -1
- package/dist/tests/utils/types.js +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +2 -1
|
@@ -9,8 +9,10 @@
|
|
|
9
9
|
* If a JSON object key contains a literal `.`, two distinct nodes could
|
|
10
10
|
* theoretically produce equal `__path` strings. FHIR JSON keys do not
|
|
11
11
|
* contain dots in practice; not a blocker.
|
|
12
|
+
*
|
|
13
|
+
* @author John Grimes
|
|
12
14
|
*/
|
|
13
|
-
import type
|
|
15
|
+
import { type CteDefinition, type PartitionKey } from "./types.js";
|
|
14
16
|
export interface BuildRepeatCteArgs {
|
|
15
17
|
cteAlias: string;
|
|
16
18
|
/** FHIRPath strings — first is the anchor path; all are recursive paths. */
|
|
@@ -47,4 +49,10 @@ export interface BuildRepeatCteArgs {
|
|
|
47
49
|
* `alias AS (...)` wrapper, which `renderRoot` adds).
|
|
48
50
|
*/
|
|
49
51
|
export declare function buildRepeatCte(args: BuildRepeatCteArgs): CteDefinition;
|
|
52
|
+
/**
|
|
53
|
+
* Renders the partition keys as a comma-separated list of bracket-quoted
|
|
54
|
+
* columns qualified by `alias` (e.g. `cte.[id], cte.[fe_0_key]`). Shared by the
|
|
55
|
+
* recursive-member projection and the repeat `%rowIndex` window's PARTITION BY.
|
|
56
|
+
*/
|
|
57
|
+
export declare function qualifiedKeyCols(alias: string, keys: PartitionKey[]): string;
|
|
50
58
|
//# sourceMappingURL=cteTemplates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cteTemplates.d.ts","sourceRoot":"","sources":["../../../src/queryGenerator/treeWalker/cteTemplates.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cteTemplates.d.ts","sourceRoot":"","sources":["../../../src/queryGenerator/treeWalker/cteTemplates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,EAGlB,MAAM,YAAY,CAAC;AAOpB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,eAAe,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,oEAAoE;IACpE,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,aAAa,CAOtE;AAqED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,CAE5E"}
|
|
@@ -10,9 +10,13 @@
|
|
|
10
10
|
* If a JSON object key contains a literal `.`, two distinct nodes could
|
|
11
11
|
* theoretically produce equal `__path` strings. FHIR JSON keys do not
|
|
12
12
|
* contain dots in practice; not a blocker.
|
|
13
|
+
*
|
|
14
|
+
* @author John Grimes
|
|
13
15
|
*/
|
|
14
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
17
|
exports.buildRepeatCte = buildRepeatCte;
|
|
18
|
+
exports.qualifiedKeyCols = qualifiedKeyCols;
|
|
19
|
+
const types_js_1 = require("./types.js");
|
|
16
20
|
/**
|
|
17
21
|
* Builds the SQL body of the recursive CTE used by the Repeat operator.
|
|
18
22
|
*
|
|
@@ -50,7 +54,8 @@ function buildAnchorMember(args) {
|
|
|
50
54
|
const wherePart = resourcePredicate ? `\n ${resourcePredicate}` : "";
|
|
51
55
|
return ` SELECT
|
|
52
56
|
${projLines},
|
|
53
|
-
CAST(${chain.lastAlias}.[key] AS
|
|
57
|
+
CAST(${chain.lastAlias}.[key] AS ${types_js_1.SQL_NVARCHAR_MAX}) AS __path,
|
|
58
|
+
CAST(${orderSegment(chain.lastAlias)} AS ${types_js_1.SQL_NVARCHAR_MAX}) AS __order,
|
|
54
59
|
${chain.lastAlias}.value AS item_json,
|
|
55
60
|
0 AS depth
|
|
56
61
|
${fromClause}${ancestorApplies}
|
|
@@ -58,16 +63,47 @@ function buildAnchorMember(args) {
|
|
|
58
63
|
}
|
|
59
64
|
function buildRecursiveMember(args, path, index) {
|
|
60
65
|
const { cteAlias, partitionKeys } = args;
|
|
61
|
-
const head =
|
|
66
|
+
const head = qualifiedKeyCols("cte", partitionKeys);
|
|
62
67
|
const chain = buildOpenJsonChain("cte.item_json", path, `child_${index}`);
|
|
63
68
|
return ` SELECT
|
|
64
69
|
${head},
|
|
65
|
-
cte.__path + '.' + CAST(${chain.lastAlias}.[key] AS
|
|
70
|
+
cte.__path + '.' + CAST(${chain.lastAlias}.[key] AS ${types_js_1.SQL_NVARCHAR_4000}) AS __path,
|
|
71
|
+
cte.__order + '.' + ${orderSegment(chain.lastAlias)} AS __order,
|
|
66
72
|
${chain.lastAlias}.value AS item_json,
|
|
67
73
|
cte.depth + 1
|
|
68
74
|
FROM ${cteAlias} AS cte
|
|
69
75
|
${chain.applyClauses}`;
|
|
70
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Width, in characters, that each `__order` segment is zero-padded to. A level
|
|
79
|
+
* with up to 10^ORDER_SEGMENT_WIDTH elements still sorts correctly; ten digits
|
|
80
|
+
* assume no single level exceeds 10^10 elements.
|
|
81
|
+
*/
|
|
82
|
+
const ORDER_SEGMENT_WIDTH = 10;
|
|
83
|
+
/**
|
|
84
|
+
* Builds one segment of the `__order` accumulator: the element's `[key]`
|
|
85
|
+
* zero-padded to a fixed width so that lexical ordering of the `.`-joined
|
|
86
|
+
* order string is equivalent to numeric depth-first (pre-order) traversal.
|
|
87
|
+
* Without padding, lexical order would break once a level has ten or more
|
|
88
|
+
* elements (e.g. `"10" < "2"`). This is what `%rowIndex` orders by inside a
|
|
89
|
+
* `repeat`.
|
|
90
|
+
*
|
|
91
|
+
* `__order` is emitted by every repeat CTE unconditionally: the walker builds
|
|
92
|
+
* the CTE before descending into the inner subtree, so whether `%rowIndex` is
|
|
93
|
+
* actually referenced is not yet known when the column list is generated.
|
|
94
|
+
*/
|
|
95
|
+
function orderSegment(alias) {
|
|
96
|
+
const pad = "0".repeat(ORDER_SEGMENT_WIDTH);
|
|
97
|
+
return `RIGHT('${pad}' + CAST(${alias}.[key] AS NVARCHAR(${ORDER_SEGMENT_WIDTH})), ${ORDER_SEGMENT_WIDTH})`;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Renders the partition keys as a comma-separated list of bracket-quoted
|
|
101
|
+
* columns qualified by `alias` (e.g. `cte.[id], cte.[fe_0_key]`). Shared by the
|
|
102
|
+
* recursive-member projection and the repeat `%rowIndex` window's PARTITION BY.
|
|
103
|
+
*/
|
|
104
|
+
function qualifiedKeyCols(alias, keys) {
|
|
105
|
+
return keys.map((k) => `${alias}.[${k.name}]`).join(", ");
|
|
106
|
+
}
|
|
71
107
|
/**
|
|
72
108
|
* Builds the CROSS APPLY OPENJSON chain for a (possibly multi-segment) path.
|
|
73
109
|
* For "a.b.c" produces three chained APPLYs; the last alias is `finalAlias`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cteTemplates.js","sourceRoot":"","sources":["../../../src/queryGenerator/treeWalker/cteTemplates.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"cteTemplates.js","sourceRoot":"","sources":["../../../src/queryGenerator/treeWalker/cteTemplates.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Path-handling parity is delegated to PathParser (`.where()`, `.first()`,
|
|
10
10
|
* array indexing, multi-segment array flattening).
|
|
11
|
+
*
|
|
12
|
+
* @author John Grimes
|
|
11
13
|
*/
|
|
12
14
|
import type { ViewDefinitionSelect } from "../../../types.js";
|
|
13
15
|
import type { PathParser } from "../../PathParser.js";
|
|
@@ -32,8 +34,8 @@ interface ForEachDeps {
|
|
|
32
34
|
* @param node - The ForEach or ForEachOrNull select node. `node.forEach` or
|
|
33
35
|
* `node.forEachOrNull` supplies the FHIRPath expression to iterate.
|
|
34
36
|
* @param ctx - The current walker context; the inner context is derived from
|
|
35
|
-
* it by updating `source`, `partitionKeys`, `ancestorApplies`,
|
|
36
|
-
*
|
|
37
|
+
* it by updating `source`, `partitionKeys`, `ancestorApplies`, and
|
|
38
|
+
* `transpilerCtx`.
|
|
37
39
|
* @param walk - The recursive walk function used to visit the inner sub-tree.
|
|
38
40
|
* @param deps - Dependencies containing the `PathParser` used to parse and
|
|
39
41
|
* decompose the FHIRPath expression.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forEach.d.ts","sourceRoot":"","sources":["../../../../src/queryGenerator/treeWalker/operators/forEach.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"forEach.d.ts","sourceRoot":"","sources":["../../../../src/queryGenerator/treeWalker/operators/forEach.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,QAAQ,EAGd,MAAM,aAAa,CAAC;AAErB,UAAU,WAAW;IACnB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,oBAAoB,EAC1B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,OAAO,KAAK,QAAQ,EACvD,IAAI,EAAE,WAAW,GAChB,QAAQ,CA2BV"}
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Path-handling parity is delegated to PathParser (`.where()`, `.first()`,
|
|
11
11
|
* array indexing, multi-segment array flattening).
|
|
12
|
+
*
|
|
13
|
+
* @author John Grimes
|
|
12
14
|
*/
|
|
13
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
16
|
exports.walkForEach = walkForEach;
|
|
@@ -31,8 +33,8 @@ const types_js_1 = require("../types.js");
|
|
|
31
33
|
* @param node - The ForEach or ForEachOrNull select node. `node.forEach` or
|
|
32
34
|
* `node.forEachOrNull` supplies the FHIRPath expression to iterate.
|
|
33
35
|
* @param ctx - The current walker context; the inner context is derived from
|
|
34
|
-
* it by updating `source`, `partitionKeys`, `ancestorApplies`,
|
|
35
|
-
*
|
|
36
|
+
* it by updating `source`, `partitionKeys`, `ancestorApplies`, and
|
|
37
|
+
* `transpilerCtx`.
|
|
36
38
|
* @param walk - The recursive walk function used to visit the inner sub-tree.
|
|
37
39
|
* @param deps - Dependencies containing the `PathParser` used to parse and
|
|
38
40
|
* decompose the FHIRPath expression.
|
|
@@ -45,7 +47,7 @@ function walkForEach(node, ctx, walk, deps) {
|
|
|
45
47
|
const applyType = isOrNull ? "OUTER APPLY" : "CROSS APPLY";
|
|
46
48
|
const alias = (0, aliasGenerator_js_1.freshAlias)(ctx, "forEach");
|
|
47
49
|
const applyClause = buildForEachApply(rawPath, ctx.source, alias, applyType, ctx.transpilerCtx, deps.pathParser);
|
|
48
|
-
const innerCtx = buildInnerCtx(ctx, alias, rawPath, applyClause
|
|
50
|
+
const innerCtx = buildInnerCtx(ctx, alias, rawPath, applyClause);
|
|
49
51
|
const innerNode = {
|
|
50
52
|
column: node.column,
|
|
51
53
|
select: node.select,
|
|
@@ -57,13 +59,18 @@ function walkForEach(node, ctx, walk, deps) {
|
|
|
57
59
|
fromExtensions: applyClause + inner.fromExtensions,
|
|
58
60
|
};
|
|
59
61
|
}
|
|
60
|
-
function buildInnerCtx(ctx, alias, rawPath, applyClause
|
|
62
|
+
function buildInnerCtx(ctx, alias, rawPath, applyClause) {
|
|
61
63
|
const innerTranspilerCtx = {
|
|
62
64
|
...ctx.transpilerCtx,
|
|
63
65
|
iterationContext: `${alias}.value`,
|
|
64
66
|
currentForEachAlias: alias,
|
|
65
67
|
forEachSource: ctx.source,
|
|
66
68
|
forEachPath: `$.${rawPath}`,
|
|
69
|
+
// `%rowIndex` resolves to the iterated element's 0-based position, which is
|
|
70
|
+
// the OPENJSON `[key]` column. For forEachOrNull over an empty collection
|
|
71
|
+
// the OUTER APPLY yields a single null-padded row whose `[key]` is NULL;
|
|
72
|
+
// the spec requires `%rowIndex` to be 0 for that row, hence the COALESCE.
|
|
73
|
+
rowIndexExpr: `COALESCE(CAST(${alias}.[key] AS INT), 0)`,
|
|
67
74
|
};
|
|
68
75
|
const innerKey = {
|
|
69
76
|
name: `${alias}_key`,
|
|
@@ -75,7 +82,6 @@ function buildInnerCtx(ctx, alias, rawPath, applyClause, isOrNull) {
|
|
|
75
82
|
source: `${alias}.value`,
|
|
76
83
|
partitionKeys: [...ctx.partitionKeys, innerKey],
|
|
77
84
|
ancestorApplies: ctx.ancestorApplies + applyClause,
|
|
78
|
-
nullable: ctx.nullable || isOrNull,
|
|
79
85
|
transpilerCtx: innerTranspilerCtx,
|
|
80
86
|
};
|
|
81
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forEach.js","sourceRoot":"","sources":["../../../../src/queryGenerator/treeWalker/operators/forEach.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"forEach.js","sourceRoot":"","sources":["../../../../src/queryGenerator/treeWalker/operators/forEach.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;AA0CH,kCAgCC;AArED,4DAAkD;AAClD,0CAKqB;AAMrB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,WAAW,CACzB,IAA0B,EAC1B,GAAY,EACZ,IAAuD,EACvD,IAAiB;IAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;IACzD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;IAC3D,MAAM,KAAK,GAAG,IAAA,8BAAU,EAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAEzC,MAAM,WAAW,GAAG,iBAAiB,CACnC,OAAO,EACP,GAAG,CAAC,MAAM,EACV,KAAK,EACL,SAAS,EACT,GAAG,CAAC,aAAa,EACjB,IAAI,CAAC,UAAU,CAChB,CAAC;IAEF,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACjE,MAAM,SAAS,GAAyB;QACtC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAExC,OAAO;QACL,GAAG,KAAK;QACR,cAAc,EAAE,WAAW,GAAG,KAAK,CAAC,cAAc;KACnD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,GAAY,EACZ,KAAa,EACb,OAAe,EACf,WAAmB;IAEnB,MAAM,kBAAkB,GAAsB;QAC5C,GAAG,GAAG,CAAC,aAAa;QACpB,gBAAgB,EAAE,GAAG,KAAK,QAAQ;QAClC,mBAAmB,EAAE,KAAK;QAC1B,aAAa,EAAE,GAAG,CAAC,MAAM;QACzB,WAAW,EAAE,KAAK,OAAO,EAAE;QAC3B,4EAA4E;QAC5E,0EAA0E;QAC1E,yEAAyE;QACzE,0EAA0E;QAC1E,YAAY,EAAE,iBAAiB,KAAK,oBAAoB;KACzD,CAAC;IACF,MAAM,QAAQ,GAAiB;QAC7B,IAAI,EAAE,GAAG,KAAK,MAAM;QACpB,OAAO,EAAE,GAAG,KAAK,QAAQ;QACzB,OAAO,EAAE,4BAAiB;KAC3B,CAAC;IACF,OAAO;QACL,GAAG,GAAG;QACN,MAAM,EAAE,GAAG,KAAK,QAAQ;QACxB,aAAa,EAAE,CAAC,GAAG,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC;QAC/C,eAAe,EAAE,GAAG,CAAC,eAAe,GAAG,WAAW;QAClD,aAAa,EAAE,kBAAkB;KAClC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CACxB,OAAe,EACf,MAAc,EACd,KAAa,EACb,SAAiB,EACjB,aAAgC,EAChC,UAAsB;IAEtB,MAAM,EACJ,IAAI,EAAE,gBAAgB,EACtB,cAAc,EACd,QAAQ,GACT,GAAG,UAAU,CAAC,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC1D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,GACrC,UAAU,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,UAAU,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;IAEtE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,gBAAgB,CACrB,UAAU,EACV,MAAM,EACN,KAAK,EACL,SAAS,EACT,UAAU,EACV,UAAU,EACV,cAAc,CACf,CAAC;IACJ,CAAC;IAED,OAAO,gBAAgB,CACrB,SAAS,EACT,MAAM,EACN,WAAW,EACX,KAAK,EACL,UAAU,EACV,cAAc,EACd,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,SAAiB,EACjB,MAAc,EACd,IAAY,EACZ,KAAa,EACb,UAAyB,EACzB,cAA6B,EAC7B,QAAiB;IAEjB,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,UAAU,KAAK,IAAI;QAAE,YAAY,CAAC,IAAI,CAAC,YAAY,UAAU,GAAG,CAAC,CAAC;IACtE,IAAI,cAAc,KAAK,IAAI;QAAE,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAE/D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,WAAW,GACf,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,KAAK,SAAS;iBACR,SAAS,mBAAmB,MAAM,QAAQ,IAAI;UACrD,WAAW,GAAG,OAAO;aAClB,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,SAAS,aAAa,MAAM,QAAQ,IAAI,SAAS,KAAK,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,gBAAgB,CACvB,UAAoB,EACpB,MAAc,EACd,UAAkB,EAClB,SAAiB,EACjB,UAAsB,EACtB,UAAyB,EACzB,cAA6B;IAE7B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,aAAa,GAAG,MAAM,CAAC;IAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,CAAC,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,QAAQ,CAAC,EAAE,CAAC;QAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC7D,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAClC,UAAU,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,KAAK,YAAY,EAAE,CAAC;QAErC,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,YAAY,CAAC,IAAI,CAAC,YAAY,YAAY,GAAG,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,MAAM,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACzC,YAAY,CAAC,IAAI,CAAC,YAAY,UAAU,GAAG,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,MAAM,IAAI,cAAc,KAAK,IAAI;YAAE,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEzE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,KAAK,SAAS;iCACE,aAAa,MAAM,QAAQ;gBAC5C,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,KAAK,EAAE,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,KAAK,SAAS,aAAa,aAAa,MAAM,QAAQ,SAAS,KAAK,EAAE,CAAC;QACpF,CAAC;QAED,aAAa,GAAG,GAAG,KAAK,QAAQ,CAAC;IACnC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
* plus a content-derived `__path` for stable identity across re-evaluations.
|
|
6
6
|
* The Fragment's `fromExtensions` is an INNER JOIN to the CTE on the partition key
|
|
7
7
|
* `[id]`; sibling-level composite-key joins are added by `mergeSiblings`.
|
|
8
|
+
*
|
|
9
|
+
* @author John Grimes
|
|
8
10
|
*/
|
|
9
11
|
import type { ViewDefinitionSelect } from "../../../types.js";
|
|
10
12
|
import { type Context, type Fragment } from "../types.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repeat.d.ts","sourceRoot":"","sources":["../../../../src/queryGenerator/treeWalker/operators/repeat.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"repeat.d.ts","sourceRoot":"","sources":["../../../../src/queryGenerator/treeWalker/operators/repeat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAG9D,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,QAAQ,EAGd,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,oBAAoB,EAC1B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,OAAO,KAAK,QAAQ,EACvD,IAAI,EAAE,UAAU,GACf,QAAQ,CAmCV"}
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* plus a content-derived `__path` for stable identity across re-evaluations.
|
|
7
7
|
* The Fragment's `fromExtensions` is an INNER JOIN to the CTE on the partition key
|
|
8
8
|
* `[id]`; sibling-level composite-key joins are added by `mergeSiblings`.
|
|
9
|
+
*
|
|
10
|
+
* @author John Grimes
|
|
9
11
|
*/
|
|
10
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
13
|
exports.walkRepeat = walkRepeat;
|
|
@@ -90,12 +92,22 @@ function buildRepeatInnerCtx(ctx, cteAlias, paths, joinClause) {
|
|
|
90
92
|
sqlExpr: `${cteAlias}.__path`,
|
|
91
93
|
sqlType: types_js_1.SQL_NVARCHAR_MAX,
|
|
92
94
|
};
|
|
95
|
+
// `%rowIndex` inside a repeat is the 0-based position within the flattened
|
|
96
|
+
// depth-first traversal. The CTE exposes a padded `__order` accumulator whose
|
|
97
|
+
// lexical order matches pre-order; ROW_NUMBER over it (less one) yields the
|
|
98
|
+
// index. Partitioning on the ancestor keys captured before the repeat key is
|
|
99
|
+
// appended (the resource, and any enclosing forEach element) restarts the
|
|
100
|
+
// sequence per partition. The window lives in the outer SELECT, which already
|
|
101
|
+
// INNER JOINs the CTE, so the reference is in scope.
|
|
102
|
+
const partitionCols = (0, cteTemplates_js_1.qualifiedKeyCols)(cteAlias, ctx.partitionKeys);
|
|
103
|
+
const partitionClause = partitionCols ? `PARTITION BY ${partitionCols} ` : "";
|
|
93
104
|
const innerTranspilerCtx = {
|
|
94
105
|
...ctx.transpilerCtx,
|
|
95
106
|
iterationContext: `${cteAlias}.item_json`,
|
|
96
107
|
currentForEachAlias: cteAlias,
|
|
97
108
|
forEachSource: ctx.source,
|
|
98
109
|
forEachPath: paths.map((p) => `$.${p}`).join(", "),
|
|
110
|
+
rowIndexExpr: `(ROW_NUMBER() OVER (${partitionClause}ORDER BY ${cteAlias}.__order) - 1)`,
|
|
99
111
|
};
|
|
100
112
|
// Propagate the join into ancestorApplies so any *nested* Repeat builds
|
|
101
113
|
// its CTE anchor with this CTE in scope.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repeat.js","sourceRoot":"","sources":["../../../../src/queryGenerator/treeWalker/operators/repeat.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"repeat.js","sourceRoot":"","sources":["../../../../src/queryGenerator/treeWalker/operators/repeat.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,8 +40,6 @@ export interface Context {
|
|
|
40
40
|
* with "\n".
|
|
41
41
|
*/
|
|
42
42
|
ancestorApplies: string;
|
|
43
|
-
/** True if any forEachOrNull ancestor is in scope. */
|
|
44
|
-
nullable: boolean;
|
|
45
43
|
/** Shared mutable counter for unique CTE/alias names across the whole compile. */
|
|
46
44
|
cteCounter: {
|
|
47
45
|
value: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/queryGenerator/treeWalker/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,eAAO,MAAM,OAAO,QAAQ,CAAC;AAC7B,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAClD,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAChB,aAAa,GACb,OAAO,GACP,SAAS,GACT,eAAe,GACf,QAAQ,GACR,UAAU,CAAC;AAEf,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/queryGenerator/treeWalker/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,eAAO,MAAM,OAAO,QAAQ,CAAC;AAC7B,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAClD,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAChB,aAAa,GACb,OAAO,GACP,SAAS,GACT,eAAe,GACf,QAAQ,GACR,UAAU,CAAC;AAEf,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,wDAAwD;IACxD,aAAa,EAAE,iBAAiB,CAAC;CAClC;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB;;;;;;OAMG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,8DAA8D;IAC9D,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/tests/utils/database.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/tests/utils/database.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,cAAc,EAAkC,MAAM,OAAO,CAAC;AA+CvE;;;GAGG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAuBnD;AAED;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAWrD;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,GAAG,EAAE,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAoDf;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCnE;AAwFD;;;GAGG;AACH,wBAAgB,eAAe,IAAI,cAAc,CAKhD"}
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Provides functions to manage database connections, table creation,
|
|
6
6
|
* and test data lifecycle during Vitest test execution.
|
|
7
|
+
*
|
|
8
|
+
* @author John Grimes
|
|
7
9
|
*/
|
|
8
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
11
|
exports.setupDatabase = setupDatabase;
|
|
@@ -11,6 +13,7 @@ exports.cleanupDatabase = cleanupDatabase;
|
|
|
11
13
|
exports.setupTestData = setupTestData;
|
|
12
14
|
exports.cleanupTestData = cleanupTestData;
|
|
13
15
|
exports.getDatabasePool = getDatabasePool;
|
|
16
|
+
const lossless_json_1 = require("lossless-json");
|
|
14
17
|
const mssql_1 = require("mssql");
|
|
15
18
|
// Global connection pool
|
|
16
19
|
let globalPool = null;
|
|
@@ -115,7 +118,13 @@ async function setupTestData(resources, testId) {
|
|
|
115
118
|
`;
|
|
116
119
|
const insertRequest = new mssql_1.Request(globalPool);
|
|
117
120
|
insertRequest.input("resource_type", resource.resourceType);
|
|
118
|
-
|
|
121
|
+
// Serialise with lossless-json so decimal lexemes (including trailing
|
|
122
|
+
// zeros, e.g. 1.0) are preserved in the stored JSON. This relies on the
|
|
123
|
+
// resource having been parsed losslessly upstream (see the dynamic test
|
|
124
|
+
// generator); plain JSON.stringify would collapse 1.0 to 1 and strip the
|
|
125
|
+
// precision the boundary functions depend on (FR-011). Non-numeric values
|
|
126
|
+
// are unaffected.
|
|
127
|
+
insertRequest.input("json", (0, lossless_json_1.stringify)(resource) ?? "null");
|
|
119
128
|
insertRequest.input("test_id", testId);
|
|
120
129
|
const result = await insertRequest.query(insertSql);
|
|
121
130
|
const insertedId = result.recordset[0]?.[tableConfig.resourceIdColumn];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/tests/utils/database.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/tests/utils/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* Creates Vitest test suites dynamically at runtime without generating physical files.
|
|
5
5
|
* Each SQL-on-FHIR JSON test file becomes a describe block with individual it blocks
|
|
6
6
|
* for each test case. Results are collected for report generation.
|
|
7
|
+
*
|
|
8
|
+
* @author John Grimes
|
|
7
9
|
*/
|
|
8
10
|
import type { TestReport } from "./types";
|
|
9
11
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/tests/utils/generator.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/tests/utils/generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,SAAS,CAAC;AAM3D,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,WAAW,EAAE,UAAU,GAAG,SAAS,CAAC;CACzC;AAiBD;;GAEG;AACH,qBAAa,sBAAsB;IACjC;;OAEG;IACH,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAoB7C;;OAEG;IACH,0BAA0B,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAWvD;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IA+BzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAexB;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA+BzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA+C3B;;OAEG;IACH,gBAAgB,IAAI,IAAI;CAKzB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,CAoB3E"}
|
|
@@ -5,17 +5,34 @@
|
|
|
5
5
|
* Creates Vitest test suites dynamically at runtime without generating physical files.
|
|
6
6
|
* Each SQL-on-FHIR JSON test file becomes a describe block with individual it blocks
|
|
7
7
|
* for each test case. Results are collected for report generation.
|
|
8
|
+
*
|
|
9
|
+
* @author John Grimes
|
|
8
10
|
*/
|
|
9
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
12
|
exports.DynamicVitestGenerator = void 0;
|
|
11
13
|
exports.createDynamicTests = createDynamicTests;
|
|
12
14
|
const fs_1 = require("fs");
|
|
15
|
+
const lossless_json_1 = require("lossless-json");
|
|
13
16
|
const path_1 = require("path");
|
|
14
17
|
const vitest_1 = require("vitest");
|
|
15
18
|
const parser_1 = require("../../parser");
|
|
16
19
|
const database_js_1 = require("./database.js");
|
|
17
20
|
const sqlOnFhir_1 = require("./sqlOnFhir");
|
|
18
21
|
const testContext_js_1 = require("./testContext.js");
|
|
22
|
+
/**
|
|
23
|
+
* Parse the `resources` array of a test suite from its raw JSON, preserving
|
|
24
|
+
* numeric lexemes (e.g. decimal trailing zeros such as 1.0) as lossless values
|
|
25
|
+
* so they survive insertion into the database (FR-011). Only the resources are
|
|
26
|
+
* parsed this way; the surrounding suite (including expected results) is parsed
|
|
27
|
+
* normally elsewhere so result comparison keeps plain numbers.
|
|
28
|
+
*
|
|
29
|
+
* @param testSuiteJson - The raw test suite JSON text.
|
|
30
|
+
* @returns The resources array with numeric lexemes preserved.
|
|
31
|
+
*/
|
|
32
|
+
function losslessParseResources(testSuiteJson) {
|
|
33
|
+
const parsed = (0, lossless_json_1.parse)(testSuiteJson);
|
|
34
|
+
return Array.isArray(parsed.resources) ? parsed.resources : [];
|
|
35
|
+
}
|
|
19
36
|
/**
|
|
20
37
|
* Dynamic test generator that creates Vitest tests at runtime.
|
|
21
38
|
*/
|
|
@@ -26,6 +43,13 @@ class DynamicVitestGenerator {
|
|
|
26
43
|
generateTestsFromFile(filePath) {
|
|
27
44
|
const testSuiteJson = (0, fs_1.readFileSync)(filePath, "utf8");
|
|
28
45
|
const testSuite = parser_1.ViewDefinitionParser.parseTestSuite(testSuiteJson);
|
|
46
|
+
// Re-parse the resources losslessly so decimal lexemes (e.g. 1.0) survive
|
|
47
|
+
// for insertion (FR-011). The standard parse used above collapses 1.0 to 1
|
|
48
|
+
// before the value ever reaches the database, which the decimal boundary
|
|
49
|
+
// functions cannot recover from. Only the resources need this treatment;
|
|
50
|
+
// the test expectations keep plain numbers so result comparison is
|
|
51
|
+
// unaffected. The lossless objects are serialised by setupTestData.
|
|
52
|
+
testSuite.resources = losslessParseResources(testSuiteJson);
|
|
29
53
|
const suiteName = testSuite.title;
|
|
30
54
|
// Extract filename for report (e.g., "basic.json" from "/path/to/basic.json")
|
|
31
55
|
const fileName = filePath.split("/").pop() ?? filePath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/tests/utils/generator.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/tests/utils/generator.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAsPH,gDAoBC;AAxQD,2BAAyD;AACzD,iDAAuD;AACvD,+BAA4B;AAC5B,mCAAmE;AACnE,yCAAoD;AAEpD,+CAKuB;AAEvB,2CAAoE;AACpE,qDAAkD;AASlD;;;;;;;;;GASG;AACH,SAAS,sBAAsB,CAAC,aAAqB;IACnD,MAAM,MAAM,GAAG,IAAA,qBAAa,EAAC,aAAa,CAA4B,CAAC;IACvE,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAa,sBAAsB;IACjC;;OAEG;IACH,qBAAqB,CAAC,QAAgB;QACpC,MAAM,aAAa,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,6BAAoB,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAErE,0EAA0E;QAC1E,2EAA2E;QAC3E,yEAAyE;QACzE,yEAAyE;QACzE,mEAAmE;QACnE,oEAAoE;QACpE,SAAS,CAAC,SAAS,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;QAE5D,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC;QAElC,8EAA8E;QAC9E,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC;QAEvD,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,0BAA0B,CAAC,aAAqB;QAC9C,MAAM,KAAK,GAAG,IAAA,gBAAW,EAAC,aAAa,CAAC;aACrC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aACxC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,oDAAoD;aACvF,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,WAAI,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;QAE5C,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,iBAAiB,CACvB,SAAoB,EACpB,SAAiB,EACjB,cAAsB;QAEtB,MAAM,YAAY,GAAsB,EAAE,CAAC;QAE3C,IAAA,iBAAQ,EAAC,SAAS,EAAE,GAAG,EAAE;YACvB,IAAA,kBAAS,EAAC,KAAK,IAAI,EAAE;gBACnB,MAAM,IAAA,2BAAa,GAAE,CAAC;YACxB,CAAC,CAAC,CAAC;YAEH,IAAA,iBAAQ,EAAC,KAAK,IAAI,EAAE;gBAClB,MAAM,IAAA,6BAAe,GAAE,CAAC;gBAExB,oEAAoE;gBACpE,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,CAAC;oBACtC,UAAU,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,EAAE,CAAC;oBACtD,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;gBACnE,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,yEAAyE;YAEzE,iCAAiC;YACjC,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;gBACvC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACtE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,gBAAgB,CACtB,QAAkB,EAClB,YAA+B,EAC/B,SAAiB,EACjB,SAAoB;QAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEzD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YACzB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,SAAiB,EAAE,QAAkB;QACzD,MAAM,SAAS,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI;YACxB,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC9C,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,IAAI,SAAS,KAAK,QAAQ,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC;IACnD,CAAC;IAED;;OAEG;IACK,iBAAiB,CACvB,QAAgB,EAChB,QAAkB,EAClB,YAA+B,EAC/B,SAAoB;QAEpB,WAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YACjC,MAAM,MAAM,GAAG,IAAA,+BAAc,GAAE,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,IAAA,2BAAa,EAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBACjD,MAAM,IAAA,iCAAqB,EAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAEnD,yDAAyD;gBACzD,MAAM,YAAY,GAAG,uCAAuC,CAAC;gBAC7D,YAAY,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,6BAA6B;oBACnD,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE;iBAC/C,CAAC,CAAC;gBACH,eAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;gBACrC,YAAY,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,6BAA6B;oBACnD,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;iBACzB,CAAC,CAAC;YACL,CAAC;oBAAS,CAAC;gBACT,MAAM,IAAA,6BAAe,EAAC,MAAM,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,mBAAmB,CACzB,QAAgB,EAChB,QAAkB,EAClB,YAA+B,EAC/B,SAAoB;QAEpB,WAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YACjC,MAAM,MAAM,GAAG,IAAA,+BAAc,GAAE,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,IAAA,2BAAa,EAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBACjD,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAqB,EAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAClE,MAAM,MAAM,GAAG,IAAA,0BAAc,EAC3B,MAAM,CAAC,OAAO,EACd,QAAQ,CAAC,MAAM,IAAI,EAAE,EACrB,QAAQ,CAAC,aAAa,EACtB,MAAM,CAAC,OAAO,CACf,CAAC;gBAEF,IAAI,MAAM,EAAE,CAAC;oBACX,YAAY,CAAC,IAAI,CAAC;wBAChB,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,6BAA6B;wBACnD,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;qBACzB,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,YAAY,GAAG,kCAAkC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;oBACpI,YAAY,CAAC,IAAI,CAAC;wBAChB,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,6BAA6B;wBACnD,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE;qBAC/C,CAAC,CAAC;oBACH,eAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC5B,CAAC;gBAED,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzD,YAAY,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,6BAA6B;oBACnD,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE;iBAC/C,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC;YACd,CAAC;oBAAS,CAAC;gBACT,MAAM,IAAA,6BAAe,EAAC,MAAM,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,CAAC;YACtC,UAAU,CAAC,WAAW,GAAG,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;CACF;AArMD,wDAqMC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,QAAgB;IACjD,MAAM,SAAS,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAE/C,6BAA6B;IAC7B,SAAS,CAAC,gBAAgB,EAAE,CAAC;IAE7B,+CAA+C;IAC/C,MAAM,IAAI,GAAG,IAAA,aAAQ,EAAC,QAAQ,CAAC,CAAC;IAEhC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACvB,SAAS,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,SAAS,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,sBAAsB,QAAQ,2DAA2D,CAC1F,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Custom Vitest reporter for SQL-on-FHIR test result collection.
|
|
3
3
|
*
|
|
4
4
|
* Collects test results during Vitest execution and formats them according
|
|
5
|
-
* to the
|
|
5
|
+
* to the SQL on FHIR test report schema. Results are stored globally
|
|
6
6
|
* and can be accessed after test completion for report generation.
|
|
7
7
|
*/
|
|
8
8
|
import type { RunnerTestFile } from "vitest";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../../src/tests/utils/reporter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,WAAW,wBAAwB;IACvC,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4DAA4D;IAC5D,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,cAAM,iBAAkB,YAAW,QAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,UAAU,CAAkB;gBAExB,OAAO,GAAE,wBAA6B;IASlD;;;OAGG;IACH,UAAU,CACR,KAAK,CAAC,EAAE,cAAc,EAAE,EACxB,OAAO,CAAC,EAAE,OAAO,EAAE,EACnB,SAAS,CAAC,EAAE,OAAO,GAClB,IAAI;IAsBP;;OAEG;IACH,OAAO,CAAC,gBAAgB;
|
|
1
|
+
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../../src/tests/utils/reporter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,WAAW,wBAAwB;IACvC,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4DAA4D;IAC5D,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,cAAM,iBAAkB,YAAW,QAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,UAAU,CAAkB;gBAExB,OAAO,GAAE,wBAA6B;IASlD;;;OAGG;IACH,UAAU,CACR,KAAK,CAAC,EAAE,cAAc,EAAE,EACxB,OAAO,CAAC,EAAE,OAAO,EAAE,EACnB,SAAS,CAAC,EAAE,OAAO,GAClB,IAAI;IAsBP;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwBxB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA6B/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA6BxB;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAarC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IAoBnC;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,YAAY,IAAI,IAAI;IAQpB,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAKxB,gBAAgB,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAIlC,cAAc,CAAC,IAAI,IAAI;IAIvB,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;CAI3D;AAGD,eAAe,iBAAiB,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Custom Vitest reporter for SQL-on-FHIR test result collection.
|
|
4
4
|
*
|
|
5
5
|
* Collects test results during Vitest execution and formats them according
|
|
6
|
-
* to the
|
|
6
|
+
* to the SQL on FHIR test report schema. Results are stored globally
|
|
7
7
|
* and can be accessed after test completion for report generation.
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -58,10 +58,11 @@ class SqlOnFhirReporter {
|
|
|
58
58
|
console.log(`Failed: ${stats.failed}`);
|
|
59
59
|
console.log(`Skipped: ${stats.skipped}`);
|
|
60
60
|
console.log(`Total: ${stats.total}`);
|
|
61
|
-
//
|
|
61
|
+
// Note when a test name filter narrowed the run, so the skipped count is
|
|
62
|
+
// not mistaken for failures. The standard run (no filter) executes the
|
|
63
|
+
// full suite, including the formerly experimental join/boundary tests.
|
|
62
64
|
if (process.argv.some((arg) => arg.includes("testNamePattern"))) {
|
|
63
|
-
console.log("\nNote:
|
|
64
|
-
console.log("These tests cover features outside the scope of this implementation.");
|
|
65
|
+
console.log("\nNote: a test name filter was applied; tests outside the filter were excluded from this run.");
|
|
65
66
|
}
|
|
66
67
|
console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");
|
|
67
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../../src/tests/utils/reporter.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAEH,2BAA8C;AAC9C,+BAA+B;AAc/B;;GAEG;AACH,MAAM,iBAAiB;IACJ,OAAO,CAA2B;IAC3C,UAAU,GAAe,EAAE,CAAC;IAEpC,YAAY,UAAoC,EAAE;QAChD,IAAI,CAAC,OAAO,GAAG;YACb,UAAU,EAAE,sBAAsB;YAClC,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,IAAI;YAClB,GAAG,OAAO;SACX,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,UAAU,CACR,KAAwB,EACxB,OAAmB,EACnB,SAAmB;QAEnB,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,2DAA2D;QAC3D,IAAI,OAAO,MAAM,KAAK,WAAW,IAAK,MAAc,CAAC,WAAW,EAAE,CAAC;YACjE,IAAI,CAAC,UAAU,GAAI,MAAc,CAAC,WAAW,CAAC;QAChD,CAAC;QAED,oDAAoD;QACpD,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAEnC,2BAA2B;QAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC9B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,+BAA+B;QAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC5D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,KAAuB;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAElD,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAEvC,
|
|
1
|
+
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../../src/tests/utils/reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Type definitions for test reporting.
|
|
3
3
|
*
|
|
4
4
|
* Matches the SQL on FHIR test report schema:
|
|
5
|
-
* https://raw.githubusercontent.com/FHIR/sql-on-fhir
|
|
5
|
+
* https://raw.githubusercontent.com/FHIR/sql-on-fhir.js/refs/heads/main/test_report/test-report.schema.json
|
|
6
6
|
*/
|
|
7
7
|
export interface TestReportEntry {
|
|
8
8
|
/** The name/description of the test case. */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Type definitions for test reporting.
|
|
4
4
|
*
|
|
5
5
|
* Matches the SQL on FHIR test report schema:
|
|
6
|
-
* https://raw.githubusercontent.com/FHIR/sql-on-fhir
|
|
6
|
+
* https://raw.githubusercontent.com/FHIR/sql-on-fhir.js/refs/heads/main/test_report/test-report.schema.json
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
//# sourceMappingURL=types.js.map
|
package/dist/types.d.ts
CHANGED
|
@@ -268,7 +268,7 @@ export interface TriggerDefinition {
|
|
|
268
268
|
export interface Dosage {
|
|
269
269
|
}
|
|
270
270
|
/**
|
|
271
|
-
* Test case structure from
|
|
271
|
+
* Test case structure from the SQL on FHIR repository.
|
|
272
272
|
*/
|
|
273
273
|
export interface TestCase {
|
|
274
274
|
title: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sof-mssql",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "A SQL on FHIR view runner that transpiles view definitions into T-SQL queries for MS SQL Server",
|
|
5
5
|
"author": "Australian e-Health Research Centre, CSIRO",
|
|
6
6
|
"contributors": [
|
|
@@ -66,6 +66,7 @@
|
|
|
66
66
|
"@vitest/ui": "^3.2.4",
|
|
67
67
|
"antlr4ts-cli": "^0.5.0-alpha.4",
|
|
68
68
|
"eslint": "^9.11.1",
|
|
69
|
+
"lossless-json": "^4.3.0",
|
|
69
70
|
"prettier": "^3.6.2",
|
|
70
71
|
"tsx": "^4.20.6",
|
|
71
72
|
"typescript": "^5.6.2",
|