sof-mssql 2.3.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.
- package/README.md +88 -0
- package/dist/fhirpath/jsonSafeEmptiness.test.d.ts +19 -0
- package/dist/fhirpath/jsonSafeEmptiness.test.d.ts.map +1 -0
- package/dist/fhirpath/jsonSafeEmptiness.test.js +80 -0
- package/dist/fhirpath/jsonSafeEmptiness.test.js.map +1 -0
- package/dist/fhirpath/visitor.d.ts.map +1 -1
- package/dist/fhirpath/visitor.js +20 -12
- package/dist/fhirpath/visitor.js.map +1 -1
- package/dist/load.d.ts +9 -0
- package/dist/load.d.ts.map +1 -1
- package/dist/load.js +4 -0
- package/dist/load.js.map +1 -1
- package/dist/loader/feedback.integration.test.d.ts +14 -0
- package/dist/loader/feedback.integration.test.d.ts.map +1 -0
- package/dist/loader/feedback.integration.test.js +76 -0
- package/dist/loader/feedback.integration.test.js.map +1 -0
- package/dist/loader/index.d.ts.map +1 -1
- package/dist/loader/index.js +19 -6
- package/dist/loader/index.js.map +1 -1
- package/dist/loader/jsonColumn.integration.test.d.ts +13 -0
- package/dist/loader/jsonColumn.integration.test.d.ts.map +1 -0
- package/dist/loader/jsonColumn.integration.test.js +86 -0
- package/dist/loader/jsonColumn.integration.test.js.map +1 -0
- package/dist/loader/tables.d.ts +96 -3
- package/dist/loader/tables.d.ts.map +1 -1
- package/dist/loader/tables.js +182 -16
- package/dist/loader/tables.js.map +1 -1
- package/dist/loader/tables.test.d.ts +12 -0
- package/dist/loader/tables.test.d.ts.map +1 -0
- package/dist/loader/tables.test.js +130 -0
- package/dist/loader/tables.test.js.map +1 -0
- package/dist/loader/types.d.ts +9 -0
- package/dist/loader/types.d.ts.map +1 -1
- package/dist/tests/load.test.d.ts +11 -0
- package/dist/tests/load.test.d.ts.map +1 -0
- package/dist/tests/load.test.js +37 -0
- package/dist/tests/load.test.js.map +1 -0
- package/dist/tests/utils/database.d.ts.map +1 -1
- package/dist/tests/utils/database.js +51 -3
- package/dist/tests/utils/database.js.map +1 -1
- package/dist/tests/utils/loaderIntegration.d.ts +59 -0
- package/dist/tests/utils/loaderIntegration.d.ts.map +1 -0
- package/dist/tests/utils/loaderIntegration.js +137 -0
- package/dist/tests/utils/loaderIntegration.js.map +1 -0
- package/dist/tests/utils/serverCapabilities.d.ts +23 -0
- package/dist/tests/utils/serverCapabilities.d.ts.map +1 -0
- package/dist/tests/utils/serverCapabilities.js +35 -0
- package/dist/tests/utils/serverCapabilities.js.map +1 -0
- package/dist/tests/validation.test.d.ts +13 -0
- package/dist/tests/validation.test.d.ts.map +1 -0
- package/dist/tests/validation.test.js +81 -0
- package/dist/tests/validation.test.js.map +1 -0
- package/dist/validation.d.ts +40 -0
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +56 -0
- package/dist/validation.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/tests/utils/database.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/tests/utils/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared harness for database-backed loader integration tests.
|
|
3
|
+
*
|
|
4
|
+
* Encapsulates the connection pool lifecycle, native-JSON capability probe,
|
|
5
|
+
* sample NDJSON generation, and per-test table/temp-directory cleanup so the
|
|
6
|
+
* individual integration test files stay focused on assertions. The native
|
|
7
|
+
* JSON type is only available on SQL Server 2025+, so callers gate JSON-specific
|
|
8
|
+
* cases on isNativeJsonSupported().
|
|
9
|
+
*
|
|
10
|
+
* @author John Grimes
|
|
11
|
+
*/
|
|
12
|
+
/** A small, representative set of FHIR resources used by the integration tests. */
|
|
13
|
+
export declare const SAMPLE_PATIENTS: ({
|
|
14
|
+
resourceType: string;
|
|
15
|
+
id: string;
|
|
16
|
+
active: boolean;
|
|
17
|
+
gender?: undefined;
|
|
18
|
+
} | {
|
|
19
|
+
resourceType: string;
|
|
20
|
+
id: string;
|
|
21
|
+
gender: string;
|
|
22
|
+
active?: undefined;
|
|
23
|
+
})[];
|
|
24
|
+
/** The effective type of a json column read from INFORMATION_SCHEMA. */
|
|
25
|
+
export interface JsonColumnType {
|
|
26
|
+
/** The INFORMATION_SCHEMA DATA_TYPE (e.g. `nvarchar` or `json`). */
|
|
27
|
+
dataType: string;
|
|
28
|
+
/** The CHARACTER_MAXIMUM_LENGTH (-1 for MAX, null for the native type). */
|
|
29
|
+
maxLength: number | null;
|
|
30
|
+
}
|
|
31
|
+
/** Helpers bound to a single connection pool for one integration test file. */
|
|
32
|
+
export interface LoaderIntegrationHarness {
|
|
33
|
+
/** Open the pool and probe native-JSON support. Call from beforeAll. */
|
|
34
|
+
connect(): Promise<void>;
|
|
35
|
+
/** Drop created tables, remove temp dirs and close the pool. Call from afterAll. */
|
|
36
|
+
cleanup(): Promise<void>;
|
|
37
|
+
/** Whether the connected server supports the native JSON column type. */
|
|
38
|
+
isNativeJsonSupported(): boolean;
|
|
39
|
+
/** Generate and register a unique, valid table name. */
|
|
40
|
+
makeTableName(): string;
|
|
41
|
+
/**
|
|
42
|
+
* Create a loader-shaped table whose `json` column uses the given SQL type,
|
|
43
|
+
* for exercising the existing-column mismatch safeguard.
|
|
44
|
+
*/
|
|
45
|
+
createTableWithJsonColumnType(tableName: string, jsonColumnType: string): Promise<void>;
|
|
46
|
+
/** Load the sample NDJSON into a table, returning the rows loaded. */
|
|
47
|
+
loadSample(tableName: string, resourceJsonDataType?: string): Promise<number>;
|
|
48
|
+
/** Read the effective type of a table's json column. */
|
|
49
|
+
getJsonColumnType(tableName: string): Promise<JsonColumnType>;
|
|
50
|
+
/** Count the rows in a table. */
|
|
51
|
+
getRowCount(tableName: string): Promise<number>;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Create a loader integration harness.
|
|
55
|
+
*
|
|
56
|
+
* @returns A harness whose lifecycle is driven by connect()/cleanup().
|
|
57
|
+
*/
|
|
58
|
+
export declare function createLoaderIntegrationHarness(): LoaderIntegrationHarness;
|
|
59
|
+
//# sourceMappingURL=loaderIntegration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loaderIntegration.d.ts","sourceRoot":"","sources":["../../../src/tests/utils/loaderIntegration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAgBH,mFAAmF;AACnF,eAAO,MAAM,eAAe;;;;;;;;;;IAI3B,CAAC;AAEF,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,+EAA+E;AAC/E,MAAM,WAAW,wBAAwB;IACvC,wEAAwE;IACxE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,oFAAoF;IACpF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,yEAAyE;IACzE,qBAAqB,IAAI,OAAO,CAAC;IACjC,wDAAwD;IACxD,aAAa,IAAI,MAAM,CAAC;IACxB;;;OAGG;IACH,6BAA6B,CAC3B,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,sEAAsE;IACtE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9E,wDAAwD;IACxD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC9D,iCAAiC;IACjC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACjD;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,IAAI,wBAAwB,CA0HzE"}
|
|
@@ -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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"}
|
|
@@ -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"}
|
|
@@ -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":";AAAA;;;;;;;;;;GAUG;;AAEH,mCAA8C;AAC9C,8CAGuB;AAEvB,IAAA,iBAAQ,EAAC,+CAA+C,EAAE,GAAG,EAAE;IAC7D,uEAAuE;IACvE,oDAAoD;IACpD,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,IAAA,eAAM,EAAC,IAAA,yCAA4B,EAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,IAAA,eAAM,EAAC,IAAA,yCAA4B,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,+DAA+D;QAC/D,8CAA8C;QAC9C,IAAA,eAAM,EAAC,IAAA,yCAA4B,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,IAAA,eAAM,EAAC,IAAA,yCAA4B,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,IAAA,eAAM,EAAC,IAAA,yCAA4B,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,qDAAqD;IACrD,IAAA,WAAE,EAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,IAAA,eAAM,EAAC,IAAA,0CAA6B,EAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CACzD,eAAe,CAChB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,IAAA,eAAM,EAAC,IAAA,0CAA6B,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,IAAA,eAAM,EAAC,IAAA,0CAA6B,EAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CACzD,eAAe,CAChB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,IAAA,eAAM,EAAC,IAAA,0CAA6B,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,IAAA,eAAM,EAAC,IAAA,0CAA6B,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,oCAAoC;IACpC,IAAA,WAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,IAAA,eAAM,EAAC,IAAA,0CAA6B,EAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,IAAA,eAAM,EAAC,IAAA,0CAA6B,EAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAC3D,eAAe,CAChB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,wEAAwE;IACxE,IAAA,WAAE,EAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAA,0CAA6B,EAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CACrD,0CAA0C,CAC3C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAA,0CAA6B,EAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CACxD,0CAA0C,CAC3C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,IAAA,WAAE,EAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAA,0CAA6B,EAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAA,0CAA6B,EAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CACzD,uBAAuB,CACxB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,0EAA0E;QAC1E,wCAAwC;QACxC,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAA,0CAA6B,EAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/validation.d.ts
CHANGED
|
@@ -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
|
*
|
package/dist/validation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
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"}
|
package/dist/validation.js
CHANGED
|
@@ -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.
|
package/dist/validation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":";AAAA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED