sof-mssql 2.2.0 → 2.4.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 (88) hide show
  1. package/README.md +88 -0
  2. package/dist/fhirpath/jsonSafeEmptiness.test.d.ts +19 -0
  3. package/dist/fhirpath/jsonSafeEmptiness.test.d.ts.map +1 -0
  4. package/dist/fhirpath/jsonSafeEmptiness.test.js +80 -0
  5. package/dist/fhirpath/jsonSafeEmptiness.test.js.map +1 -0
  6. package/dist/fhirpath/visitor.d.ts +78 -0
  7. package/dist/fhirpath/visitor.d.ts.map +1 -1
  8. package/dist/fhirpath/visitor.js +228 -23
  9. package/dist/fhirpath/visitor.js.map +1 -1
  10. package/dist/load.d.ts +9 -0
  11. package/dist/load.d.ts.map +1 -1
  12. package/dist/load.js +4 -0
  13. package/dist/load.js.map +1 -1
  14. package/dist/loader/feedback.integration.test.d.ts +14 -0
  15. package/dist/loader/feedback.integration.test.d.ts.map +1 -0
  16. package/dist/loader/feedback.integration.test.js +76 -0
  17. package/dist/loader/feedback.integration.test.js.map +1 -0
  18. package/dist/loader/index.d.ts.map +1 -1
  19. package/dist/loader/index.js +19 -6
  20. package/dist/loader/index.js.map +1 -1
  21. package/dist/loader/jsonColumn.integration.test.d.ts +13 -0
  22. package/dist/loader/jsonColumn.integration.test.d.ts.map +1 -0
  23. package/dist/loader/jsonColumn.integration.test.js +86 -0
  24. package/dist/loader/jsonColumn.integration.test.js.map +1 -0
  25. package/dist/loader/tables.d.ts +96 -3
  26. package/dist/loader/tables.d.ts.map +1 -1
  27. package/dist/loader/tables.js +182 -16
  28. package/dist/loader/tables.js.map +1 -1
  29. package/dist/loader/tables.test.d.ts +12 -0
  30. package/dist/loader/tables.test.d.ts.map +1 -0
  31. package/dist/loader/tables.test.js +130 -0
  32. package/dist/loader/tables.test.js.map +1 -0
  33. package/dist/loader/types.d.ts +9 -0
  34. package/dist/loader/types.d.ts.map +1 -1
  35. package/dist/parser.d.ts +1 -1
  36. package/dist/parser.js +1 -1
  37. package/dist/queryGenerator/treeWalker/compile.js +0 -1
  38. package/dist/queryGenerator/treeWalker/compile.js.map +1 -1
  39. package/dist/queryGenerator/treeWalker/cteTemplates.d.ts +9 -1
  40. package/dist/queryGenerator/treeWalker/cteTemplates.d.ts.map +1 -1
  41. package/dist/queryGenerator/treeWalker/cteTemplates.js +39 -3
  42. package/dist/queryGenerator/treeWalker/cteTemplates.js.map +1 -1
  43. package/dist/queryGenerator/treeWalker/operators/forEach.d.ts +4 -2
  44. package/dist/queryGenerator/treeWalker/operators/forEach.d.ts.map +1 -1
  45. package/dist/queryGenerator/treeWalker/operators/forEach.js +11 -5
  46. package/dist/queryGenerator/treeWalker/operators/forEach.js.map +1 -1
  47. package/dist/queryGenerator/treeWalker/operators/repeat.d.ts +2 -0
  48. package/dist/queryGenerator/treeWalker/operators/repeat.d.ts.map +1 -1
  49. package/dist/queryGenerator/treeWalker/operators/repeat.js +12 -0
  50. package/dist/queryGenerator/treeWalker/operators/repeat.js.map +1 -1
  51. package/dist/queryGenerator/treeWalker/types.d.ts +0 -2
  52. package/dist/queryGenerator/treeWalker/types.d.ts.map +1 -1
  53. package/dist/tests/load.test.d.ts +11 -0
  54. package/dist/tests/load.test.d.ts.map +1 -0
  55. package/dist/tests/load.test.js +37 -0
  56. package/dist/tests/load.test.js.map +1 -0
  57. package/dist/tests/utils/database.d.ts +2 -0
  58. package/dist/tests/utils/database.d.ts.map +1 -1
  59. package/dist/tests/utils/database.js +61 -4
  60. package/dist/tests/utils/database.js.map +1 -1
  61. package/dist/tests/utils/generator.d.ts +2 -0
  62. package/dist/tests/utils/generator.d.ts.map +1 -1
  63. package/dist/tests/utils/generator.js +24 -0
  64. package/dist/tests/utils/generator.js.map +1 -1
  65. package/dist/tests/utils/loaderIntegration.d.ts +59 -0
  66. package/dist/tests/utils/loaderIntegration.d.ts.map +1 -0
  67. package/dist/tests/utils/loaderIntegration.js +137 -0
  68. package/dist/tests/utils/loaderIntegration.js.map +1 -0
  69. package/dist/tests/utils/reporter.d.ts +1 -1
  70. package/dist/tests/utils/reporter.d.ts.map +1 -1
  71. package/dist/tests/utils/reporter.js +5 -4
  72. package/dist/tests/utils/reporter.js.map +1 -1
  73. package/dist/tests/utils/serverCapabilities.d.ts +23 -0
  74. package/dist/tests/utils/serverCapabilities.d.ts.map +1 -0
  75. package/dist/tests/utils/serverCapabilities.js +35 -0
  76. package/dist/tests/utils/serverCapabilities.js.map +1 -0
  77. package/dist/tests/utils/types.d.ts +1 -1
  78. package/dist/tests/utils/types.js +1 -1
  79. package/dist/tests/validation.test.d.ts +13 -0
  80. package/dist/tests/validation.test.d.ts.map +1 -0
  81. package/dist/tests/validation.test.js +81 -0
  82. package/dist/tests/validation.test.js.map +1 -0
  83. package/dist/types.d.ts +1 -1
  84. package/dist/validation.d.ts +40 -0
  85. package/dist/validation.d.ts.map +1 -1
  86. package/dist/validation.js +56 -0
  87. package/dist/validation.js.map +1 -1
  88. package/package.json +2 -1
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ /**
3
+ * Shared harness for database-backed loader integration tests.
4
+ *
5
+ * Encapsulates the connection pool lifecycle, native-JSON capability probe,
6
+ * sample NDJSON generation, and per-test table/temp-directory cleanup so the
7
+ * individual integration test files stay focused on assertions. The native
8
+ * JSON type is only available on SQL Server 2025+, so callers gate JSON-specific
9
+ * cases on isNativeJsonSupported().
10
+ *
11
+ * @author John Grimes
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.SAMPLE_PATIENTS = void 0;
15
+ exports.createLoaderIntegrationHarness = createLoaderIntegrationHarness;
16
+ const crypto_1 = require("crypto");
17
+ const fs_1 = require("fs");
18
+ const os_1 = require("os");
19
+ const path_1 = require("path");
20
+ const connection_1 = require("../../loader/connection");
21
+ const index_1 = require("../../loader/index");
22
+ const serverCapabilities_1 = require("./serverCapabilities");
23
+ /** A small, representative set of FHIR resources used by the integration tests. */
24
+ exports.SAMPLE_PATIENTS = [
25
+ { resourceType: "Patient", id: "p1", active: true },
26
+ { resourceType: "Patient", id: "p2", active: false },
27
+ { resourceType: "Patient", id: "p3", gender: "female" },
28
+ ];
29
+ /**
30
+ * Create a loader integration harness.
31
+ *
32
+ * @returns A harness whose lifecycle is driven by connect()/cleanup().
33
+ */
34
+ function createLoaderIntegrationHarness() {
35
+ let pool = null;
36
+ let databaseConfig = null;
37
+ let nativeJsonSupported = false;
38
+ const createdTables = [];
39
+ const createdDirs = [];
40
+ function requirePool() {
41
+ if (!pool) {
42
+ throw new Error("Harness not connected; call connect() first.");
43
+ }
44
+ return pool;
45
+ }
46
+ function requireConfig() {
47
+ if (!databaseConfig) {
48
+ throw new Error("Harness not connected; call connect() first.");
49
+ }
50
+ return databaseConfig;
51
+ }
52
+ function writeSampleNdjson() {
53
+ const dir = (0, fs_1.mkdtempSync)((0, path_1.join)((0, os_1.tmpdir)(), "sof-loader-it-"));
54
+ createdDirs.push(dir);
55
+ const lines = exports.SAMPLE_PATIENTS.map((r) => JSON.stringify(r)).join("\n");
56
+ (0, fs_1.writeFileSync)((0, path_1.join)(dir, "Patient.ndjson"), lines + "\n", "utf-8");
57
+ return dir;
58
+ }
59
+ async function connect() {
60
+ databaseConfig = (0, connection_1.getDatabaseConfigFromEnv)();
61
+ pool = await (0, connection_1.createConnectionPool)(databaseConfig);
62
+ nativeJsonSupported = await (0, serverCapabilities_1.supportsNativeJsonType)(pool);
63
+ }
64
+ async function cleanup() {
65
+ for (const dir of createdDirs) {
66
+ (0, fs_1.rmSync)(dir, { recursive: true, force: true });
67
+ }
68
+ if (pool) {
69
+ for (const tableName of createdTables) {
70
+ try {
71
+ await pool
72
+ .request()
73
+ .query(`DROP TABLE IF EXISTS [dbo].[${tableName}]`);
74
+ }
75
+ catch {
76
+ // Best-effort cleanup; ignore failures.
77
+ }
78
+ }
79
+ await (0, connection_1.closeConnectionPool)(pool);
80
+ pool = null;
81
+ }
82
+ }
83
+ function makeTableName() {
84
+ const tableName = `jsontest_${(0, crypto_1.randomBytes)(4).toString("hex")}`;
85
+ createdTables.push(tableName);
86
+ return tableName;
87
+ }
88
+ async function createTableWithJsonColumnType(tableName, jsonColumnType) {
89
+ // Mirrors the loader's table shape but with a deliberately chosen json
90
+ // column type so the existing-column mismatch safeguard can be exercised.
91
+ // The type is a test-controlled literal, not external input.
92
+ await requirePool()
93
+ .request()
94
+ .query(`CREATE TABLE [dbo].[${tableName}] (
95
+ [id] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
96
+ [resource_type] NVARCHAR(64) NOT NULL,
97
+ [json] ${jsonColumnType} NOT NULL
98
+ )`);
99
+ }
100
+ async function loadSample(tableName, resourceJsonDataType) {
101
+ const summary = await (0, index_1.loadNdjsonFiles)({
102
+ directory: writeSampleNdjson(),
103
+ database: requireConfig(),
104
+ tableName,
105
+ resourceJsonDataType,
106
+ quiet: true,
107
+ });
108
+ return summary.rowsLoaded;
109
+ }
110
+ async function getJsonColumnType(tableName) {
111
+ const result = await requirePool()
112
+ .request()
113
+ .input("tableName", tableName)
114
+ .query(`SELECT DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
115
+ FROM INFORMATION_SCHEMA.COLUMNS
116
+ WHERE TABLE_NAME = @tableName AND COLUMN_NAME = 'json'`);
117
+ const row = result.recordset[0];
118
+ return { dataType: row.DATA_TYPE, maxLength: row.CHARACTER_MAXIMUM_LENGTH };
119
+ }
120
+ async function getRowCount(tableName) {
121
+ const result = await requirePool()
122
+ .request()
123
+ .query(`SELECT COUNT(*) AS n FROM [dbo].[${tableName}]`);
124
+ return result.recordset[0].n;
125
+ }
126
+ return {
127
+ connect,
128
+ cleanup,
129
+ isNativeJsonSupported: () => nativeJsonSupported,
130
+ makeTableName,
131
+ createTableWithJsonColumnType,
132
+ loadSample,
133
+ getJsonColumnType,
134
+ getRowCount,
135
+ };
136
+ }
137
+ //# sourceMappingURL=loaderIntegration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loaderIntegration.js","sourceRoot":"","sources":["../../../src/tests/utils/loaderIntegration.ts"],"names":[],"mappings":"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"}
@@ -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 FHIR sql-on-fhir-v2 test report schema. Results are stored globally
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;IAyBxB;;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"}
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 FHIR sql-on-fhir-v2 test report schema. Results are stored globally
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
- // Check for test name pattern filtering (used in CI)
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: Tests tagged with #experimental were excluded from this run.");
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":"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"}
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../../src/tests/utils/reporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Server capability probes for integration tests.
3
+ *
4
+ * The native JSON column type is only available on SQL Server 2025 and later.
5
+ * Integration tests that exercise it must skip gracefully on older servers
6
+ * (the CI matrix still runs the suite against 2017/2019/2022), so they probe
7
+ * the live server rather than assuming a version.
8
+ *
9
+ * @author John Grimes
10
+ */
11
+ import type { ConnectionPool } from "mssql";
12
+ /**
13
+ * Determine whether the connected server supports the native `JSON` column type.
14
+ *
15
+ * The probe creates and drops a temporary table with a `JSON` column in a single
16
+ * batch (so it runs on one pooled connection) and reports success. On a server
17
+ * that does not know the type, the statement fails and the probe returns false.
18
+ *
19
+ * @param pool - An open connection pool.
20
+ * @returns `true` if a `JSON`-typed column can be created, `false` otherwise.
21
+ */
22
+ export declare function supportsNativeJsonType(pool: ConnectionPool): Promise<boolean>;
23
+ //# sourceMappingURL=serverCapabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverCapabilities.d.ts","sourceRoot":"","sources":["../../../src/tests/utils/serverCapabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,OAAO,CAAC,CAWlB"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /**
3
+ * Server capability probes for integration tests.
4
+ *
5
+ * The native JSON column type is only available on SQL Server 2025 and later.
6
+ * Integration tests that exercise it must skip gracefully on older servers
7
+ * (the CI matrix still runs the suite against 2017/2019/2022), so they probe
8
+ * the live server rather than assuming a version.
9
+ *
10
+ * @author John Grimes
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.supportsNativeJsonType = supportsNativeJsonType;
14
+ /**
15
+ * Determine whether the connected server supports the native `JSON` column type.
16
+ *
17
+ * The probe creates and drops a temporary table with a `JSON` column in a single
18
+ * batch (so it runs on one pooled connection) and reports success. On a server
19
+ * that does not know the type, the statement fails and the probe returns false.
20
+ *
21
+ * @param pool - An open connection pool.
22
+ * @returns `true` if a `JSON`-typed column can be created, `false` otherwise.
23
+ */
24
+ async function supportsNativeJsonType(pool) {
25
+ try {
26
+ await pool
27
+ .request()
28
+ .query("CREATE TABLE #native_json_probe (j JSON NOT NULL); DROP TABLE #native_json_probe;");
29
+ return true;
30
+ }
31
+ catch {
32
+ return false;
33
+ }
34
+ }
35
+ //# sourceMappingURL=serverCapabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverCapabilities.js","sourceRoot":"","sources":["../../../src/tests/utils/serverCapabilities.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAcH,wDAaC;AAvBD;;;;;;;;;GASG;AACI,KAAK,UAAU,sBAAsB,CAC1C,IAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,IAAI;aACP,OAAO,EAAE;aACT,KAAK,CACJ,mFAAmF,CACpF,CAAC;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -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-v2/refs/heads/master/test_report/test-report.schema.json
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-v2/refs/heads/master/test_report/test-report.schema.json
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
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Unit tests for resource JSON data type validation and normalisation.
3
+ *
4
+ * These cover the trusted-boundary handling of the `resourceJsonDataType`
5
+ * configuration value: the strict two-value allowlist, case-insensitive and
6
+ * whitespace-tolerant matching, normalisation to canonical form, and the
7
+ * meaningful errors raised for empty or unknown values (FR-001, FR-003,
8
+ * FR-004).
9
+ *
10
+ * @author John Grimes
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=validation.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.test.d.ts","sourceRoot":"","sources":["../../src/tests/validation.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ /**
3
+ * Unit tests for resource JSON data type validation and normalisation.
4
+ *
5
+ * These cover the trusted-boundary handling of the `resourceJsonDataType`
6
+ * configuration value: the strict two-value allowlist, case-insensitive and
7
+ * whitespace-tolerant matching, normalisation to canonical form, and the
8
+ * meaningful errors raised for empty or unknown values (FR-001, FR-003,
9
+ * FR-004).
10
+ *
11
+ * @author John Grimes
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ const vitest_1 = require("vitest");
15
+ const validation_1 = require("../validation");
16
+ (0, vitest_1.describe)("validateResourceJsonDataType (type predicate)", () => {
17
+ // The predicate recognises only the exact canonical forms; it does not
18
+ // normalise. Normalisation is the normaliser's job.
19
+ (0, vitest_1.it)("accepts the canonical NVARCHAR(MAX) value", () => {
20
+ (0, vitest_1.expect)((0, validation_1.validateResourceJsonDataType)("NVARCHAR(MAX)")).toBe(true);
21
+ });
22
+ (0, vitest_1.it)("accepts the canonical JSON value", () => {
23
+ (0, vitest_1.expect)((0, validation_1.validateResourceJsonDataType)("JSON")).toBe(true);
24
+ });
25
+ (0, vitest_1.it)("rejects a non-canonical (lower-case) value", () => {
26
+ // The predicate is strict; lower case is only acceptable after
27
+ // normalisation, not to the predicate itself.
28
+ (0, vitest_1.expect)((0, validation_1.validateResourceJsonDataType)("json")).toBe(false);
29
+ });
30
+ (0, vitest_1.it)("rejects an unknown value", () => {
31
+ (0, vitest_1.expect)((0, validation_1.validateResourceJsonDataType)("TEXT")).toBe(false);
32
+ });
33
+ (0, vitest_1.it)("rejects an empty value", () => {
34
+ (0, vitest_1.expect)((0, validation_1.validateResourceJsonDataType)("")).toBe(false);
35
+ });
36
+ });
37
+ (0, vitest_1.describe)("normaliseResourceJsonDataType", () => {
38
+ // Accepts the two allowed values regardless of case.
39
+ (0, vitest_1.it)("accepts NVARCHAR(MAX) and returns it unchanged", () => {
40
+ (0, vitest_1.expect)((0, validation_1.normaliseResourceJsonDataType)("NVARCHAR(MAX)")).toBe("NVARCHAR(MAX)");
41
+ });
42
+ (0, vitest_1.it)("accepts JSON and returns it unchanged", () => {
43
+ (0, vitest_1.expect)((0, validation_1.normaliseResourceJsonDataType)("JSON")).toBe("JSON");
44
+ });
45
+ (0, vitest_1.it)("normalises a lower-case nvarchar(max) to canonical form", () => {
46
+ (0, vitest_1.expect)((0, validation_1.normaliseResourceJsonDataType)("nvarchar(max)")).toBe("NVARCHAR(MAX)");
47
+ });
48
+ (0, vitest_1.it)("normalises a lower-case json to canonical form", () => {
49
+ (0, vitest_1.expect)((0, validation_1.normaliseResourceJsonDataType)("json")).toBe("JSON");
50
+ });
51
+ (0, vitest_1.it)("normalises a mixed-case value to canonical form", () => {
52
+ (0, vitest_1.expect)((0, validation_1.normaliseResourceJsonDataType)("Json")).toBe("JSON");
53
+ });
54
+ // Tolerates surrounding whitespace.
55
+ (0, vitest_1.it)("trims surrounding whitespace before matching", () => {
56
+ (0, vitest_1.expect)((0, validation_1.normaliseResourceJsonDataType)(" JSON ")).toBe("JSON");
57
+ });
58
+ (0, vitest_1.it)("trims and normalises whitespace plus case together", () => {
59
+ (0, vitest_1.expect)((0, validation_1.normaliseResourceJsonDataType)(" nvarchar(max) ")).toBe("NVARCHAR(MAX)");
60
+ });
61
+ // Rejects empty and whitespace-only values with the documented message.
62
+ (0, vitest_1.it)("rejects an empty string with the empty-value error", () => {
63
+ (0, vitest_1.expect)(() => (0, validation_1.normaliseResourceJsonDataType)("")).toThrow("Resource JSON data type cannot be empty.");
64
+ });
65
+ (0, vitest_1.it)("rejects a whitespace-only string with the empty-value error", () => {
66
+ (0, vitest_1.expect)(() => (0, validation_1.normaliseResourceJsonDataType)(" ")).toThrow("Resource JSON data type cannot be empty.");
67
+ });
68
+ // Rejects unknown values, naming the offending value and the allowed set.
69
+ (0, vitest_1.it)("rejects an unknown value with an error naming the value", () => {
70
+ (0, vitest_1.expect)(() => (0, validation_1.normaliseResourceJsonDataType)("TEXT")).toThrow(/TEXT/);
71
+ });
72
+ (0, vitest_1.it)("rejects an unknown value with an error listing the allowed values", () => {
73
+ (0, vitest_1.expect)(() => (0, validation_1.normaliseResourceJsonDataType)("TEXT")).toThrow(/NVARCHAR\(MAX\).*JSON/);
74
+ });
75
+ (0, vitest_1.it)("preserves the original offending value in the error message", () => {
76
+ // The error should echo what the user actually supplied, not a normalised
77
+ // form, so the message is recognisable.
78
+ (0, vitest_1.expect)(() => (0, validation_1.normaliseResourceJsonDataType)("varchar")).toThrow(/varchar/);
79
+ });
80
+ });
81
+ //# sourceMappingURL=validation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.test.js","sourceRoot":"","sources":["../../src/tests/validation.test.ts"],"names":[],"mappings":"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"}
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 sql-on-fhir-v2 repository.
271
+ * Test case structure from the SQL on FHIR repository.
272
272
  */
273
273
  export interface TestCase {
274
274
  title: string;
@@ -1,6 +1,46 @@
1
1
  /**
2
2
  * SQL Server identifier and FHIR resource type validation utilities.
3
3
  */
4
+ /**
5
+ * Canonical storage types allowed for the resources table `json` column.
6
+ *
7
+ * `NVARCHAR(MAX)` is the default and is valid on every supported SQL Server
8
+ * version (2017+). `JSON` is SQL Server 2025's native JSON type.
9
+ */
10
+ export type ResourceJsonDataType = "NVARCHAR(MAX)" | "JSON";
11
+ /**
12
+ * Type predicate that narrows a string to a canonical {@link ResourceJsonDataType}.
13
+ *
14
+ * The check is strict: only the exact canonical forms (`NVARCHAR(MAX)`, `JSON`)
15
+ * are recognised. Case-insensitive and whitespace-tolerant acceptance is the
16
+ * responsibility of {@link normaliseResourceJsonDataType}, which normalises the
17
+ * value before delegating here.
18
+ *
19
+ * @param value - The candidate value to test.
20
+ * @returns `true` if the value is exactly a canonical resource JSON data type.
21
+ */
22
+ export declare function validateResourceJsonDataType(value: string): value is ResourceJsonDataType;
23
+ /**
24
+ * Validate and normalise a configured resource JSON data type.
25
+ *
26
+ * Matching is case-insensitive and tolerant of surrounding whitespace, but the
27
+ * underlying set of accepted values is strictly limited to `NVARCHAR(MAX)` and
28
+ * `JSON`. The value is interpolated into `CREATE TABLE` DDL, so it is validated
29
+ * against the allowlist rather than trusted (Constitution Principle IV); a
30
+ * two-value allowlist removes any injection surface entirely.
31
+ *
32
+ * @param value - The configured value, e.g. from `LoaderOptions` or the
33
+ * `--resource-json-data-type` CLI flag.
34
+ * @returns The canonical, upper-case form (`NVARCHAR(MAX)` or `JSON`) for use in
35
+ * DDL.
36
+ * @throws Error if the value is empty, whitespace-only, or not one of the
37
+ * allowed types. The message names the offending value and the allowed set.
38
+ * @example
39
+ * normaliseResourceJsonDataType(" json "); // "JSON"
40
+ * normaliseResourceJsonDataType("nvarchar(max)"); // "NVARCHAR(MAX)"
41
+ * normaliseResourceJsonDataType("TEXT"); // throws
42
+ */
43
+ export declare function normaliseResourceJsonDataType(value: string): ResourceJsonDataType;
4
44
  /**
5
45
  * Validate a SQL Server identifier (table name, schema name, etc.).
6
46
  *
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyMH;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACX,IAAI,CA2BN;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAU/D;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAenD;AAqCD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAqCvD;AAqED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA6C5D"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG,MAAM,CAAC;AAS5D;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,GACZ,KAAK,IAAI,oBAAoB,CAE/B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,MAAM,GACZ,oBAAoB,CAkBtB;AAyMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACX,IAAI,CA2BN;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAU/D;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAenD;AAqCD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAqCvD;AAqED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA6C5D"}
@@ -3,11 +3,67 @@
3
3
  * SQL Server identifier and FHIR resource type validation utilities.
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.validateResourceJsonDataType = validateResourceJsonDataType;
7
+ exports.normaliseResourceJsonDataType = normaliseResourceJsonDataType;
6
8
  exports.validateSqlServerIdentifier = validateSqlServerIdentifier;
7
9
  exports.validateResourceType = validateResourceType;
8
10
  exports.validateTestId = validateTestId;
9
11
  exports.validateMsSqlType = validateMsSqlType;
10
12
  exports.validateAnsiSqlType = validateAnsiSqlType;
13
+ /**
14
+ * The strict allowlist of canonical resource JSON data types. Kept as a set of
15
+ * the canonical (upper-case) forms so membership checks are exact, mirroring the
16
+ * Set-based style used elsewhere in this module.
17
+ */
18
+ const RESOURCE_JSON_DATA_TYPES = new Set(["NVARCHAR(MAX)", "JSON"]);
19
+ /**
20
+ * Type predicate that narrows a string to a canonical {@link ResourceJsonDataType}.
21
+ *
22
+ * The check is strict: only the exact canonical forms (`NVARCHAR(MAX)`, `JSON`)
23
+ * are recognised. Case-insensitive and whitespace-tolerant acceptance is the
24
+ * responsibility of {@link normaliseResourceJsonDataType}, which normalises the
25
+ * value before delegating here.
26
+ *
27
+ * @param value - The candidate value to test.
28
+ * @returns `true` if the value is exactly a canonical resource JSON data type.
29
+ */
30
+ function validateResourceJsonDataType(value) {
31
+ return RESOURCE_JSON_DATA_TYPES.has(value);
32
+ }
33
+ /**
34
+ * Validate and normalise a configured resource JSON data type.
35
+ *
36
+ * Matching is case-insensitive and tolerant of surrounding whitespace, but the
37
+ * underlying set of accepted values is strictly limited to `NVARCHAR(MAX)` and
38
+ * `JSON`. The value is interpolated into `CREATE TABLE` DDL, so it is validated
39
+ * against the allowlist rather than trusted (Constitution Principle IV); a
40
+ * two-value allowlist removes any injection surface entirely.
41
+ *
42
+ * @param value - The configured value, e.g. from `LoaderOptions` or the
43
+ * `--resource-json-data-type` CLI flag.
44
+ * @returns The canonical, upper-case form (`NVARCHAR(MAX)` or `JSON`) for use in
45
+ * DDL.
46
+ * @throws Error if the value is empty, whitespace-only, or not one of the
47
+ * allowed types. The message names the offending value and the allowed set.
48
+ * @example
49
+ * normaliseResourceJsonDataType(" json "); // "JSON"
50
+ * normaliseResourceJsonDataType("nvarchar(max)"); // "NVARCHAR(MAX)"
51
+ * normaliseResourceJsonDataType("TEXT"); // throws
52
+ */
53
+ function normaliseResourceJsonDataType(value) {
54
+ // Reject empty or whitespace-only input before anything else, so the user
55
+ // gets a precise message rather than a confusing "not allowed" error.
56
+ if (!value || value.trim().length === 0) {
57
+ throw new Error("Resource JSON data type cannot be empty.");
58
+ }
59
+ // Normalise to the canonical form: trim surrounding whitespace and upper-case.
60
+ const canonical = value.trim().toUpperCase();
61
+ // The predicate enforces the strict allowlist and narrows the type.
62
+ if (!validateResourceJsonDataType(canonical)) {
63
+ throw new Error(`Invalid resource JSON data type: '${value}'. Must be one of: NVARCHAR(MAX), JSON.`);
64
+ }
65
+ return canonical;
66
+ }
11
67
  /**
12
68
  * FHIR R4 resource types.
13
69
  * Complete list of all resource types defined in FHIR R4 specification.
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sof-mssql",
3
- "version": "2.2.0",
3
+ "version": "2.4.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",