sof-mssql 1.0.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +175 -35
  2. package/dist/fhirpath/transpiler.d.ts +40 -2
  3. package/dist/fhirpath/transpiler.d.ts.map +1 -1
  4. package/dist/fhirpath/transpiler.js +85 -15
  5. package/dist/fhirpath/transpiler.js.map +1 -1
  6. package/dist/load.d.ts.map +1 -1
  7. package/dist/load.js +3 -0
  8. package/dist/load.js.map +1 -1
  9. package/dist/loader/connection.d.ts.map +1 -1
  10. package/dist/loader/connection.js +6 -0
  11. package/dist/loader/connection.js.map +1 -1
  12. package/dist/loader/tables.d.ts.map +1 -1
  13. package/dist/loader/tables.js +7 -0
  14. package/dist/loader/tables.js.map +1 -1
  15. package/dist/loader/types.d.ts +2 -0
  16. package/dist/loader/types.d.ts.map +1 -1
  17. package/dist/parser.d.ts +22 -1
  18. package/dist/parser.d.ts.map +1 -1
  19. package/dist/parser.js +101 -10
  20. package/dist/parser.js.map +1 -1
  21. package/dist/queryGenerator/RepeatProcessor.d.ts +177 -0
  22. package/dist/queryGenerator/RepeatProcessor.d.ts.map +1 -0
  23. package/dist/queryGenerator/RepeatProcessor.js +336 -0
  24. package/dist/queryGenerator/RepeatProcessor.js.map +1 -0
  25. package/dist/queryGenerator/SelectClauseBuilder.d.ts +45 -0
  26. package/dist/queryGenerator/SelectClauseBuilder.d.ts.map +1 -1
  27. package/dist/queryGenerator/SelectClauseBuilder.js +150 -0
  28. package/dist/queryGenerator/SelectClauseBuilder.js.map +1 -1
  29. package/dist/queryGenerator/WhereClauseBuilder.d.ts +1 -0
  30. package/dist/queryGenerator/WhereClauseBuilder.d.ts.map +1 -1
  31. package/dist/queryGenerator/WhereClauseBuilder.js +6 -2
  32. package/dist/queryGenerator/WhereClauseBuilder.js.map +1 -1
  33. package/dist/queryGenerator/index.d.ts +1 -0
  34. package/dist/queryGenerator/index.d.ts.map +1 -1
  35. package/dist/queryGenerator/index.js +3 -1
  36. package/dist/queryGenerator/index.js.map +1 -1
  37. package/dist/queryGenerator.d.ts +61 -1
  38. package/dist/queryGenerator.d.ts.map +1 -1
  39. package/dist/queryGenerator.js +176 -13
  40. package/dist/queryGenerator.js.map +1 -1
  41. package/dist/tests/utils/generator.js +11 -11
  42. package/dist/tests/utils/generator.js.map +1 -1
  43. package/dist/tests/utils/sqlOnFhir.d.ts.map +1 -1
  44. package/dist/tests/utils/sqlOnFhir.js +39 -4
  45. package/dist/tests/utils/sqlOnFhir.js.map +1 -1
  46. package/dist/tests/utils/testContext.d.ts +3 -6
  47. package/dist/tests/utils/testContext.d.ts.map +1 -1
  48. package/dist/tests/utils/testContext.js +5 -9
  49. package/dist/tests/utils/testContext.js.map +1 -1
  50. package/dist/types.d.ts +14 -0
  51. package/dist/types.d.ts.map +1 -1
  52. package/dist/validation.d.ts +66 -0
  53. package/dist/validation.d.ts.map +1 -0
  54. package/dist/validation.js +449 -0
  55. package/dist/validation.js.map +1 -0
  56. package/package.json +3 -2
@@ -6,13 +6,10 @@
6
6
  /**
7
7
  * Generate a unique test ID for database isolation.
8
8
  *
9
- * The test ID is composed of:
10
- * - Process ID (to handle multi-process execution)
11
- * - Timestamp (for temporal uniqueness)
12
- * - Counter (for uniqueness within same millisecond)
13
- * - UUID (for guaranteed uniqueness)
9
+ * Uses a cryptographically secure V4 UUID which guarantees global uniqueness
10
+ * across processes, machines, and time.
14
11
  *
15
- * @returns Unique test identifier
12
+ * @returns Unique test identifier (V4 UUID)
16
13
  */
17
14
  export declare function generateTestId(): string;
18
15
  //# sourceMappingURL=testContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"testContext.d.ts","sourceRoot":"","sources":["../../../src/tests/utils/testContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
1
+ {"version":3,"file":"testContext.d.ts","sourceRoot":"","sources":["../../../src/tests/utils/testContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;;GAOG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
@@ -6,20 +6,16 @@
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.generateTestId = generateTestId;
9
- const crypto_1 = require("crypto");
10
- let testIdCounter = 0;
9
+ const node_crypto_1 = require("node:crypto");
11
10
  /**
12
11
  * Generate a unique test ID for database isolation.
13
12
  *
14
- * The test ID is composed of:
15
- * - Process ID (to handle multi-process execution)
16
- * - Timestamp (for temporal uniqueness)
17
- * - Counter (for uniqueness within same millisecond)
18
- * - UUID (for guaranteed uniqueness)
13
+ * Uses a cryptographically secure V4 UUID which guarantees global uniqueness
14
+ * across processes, machines, and time.
19
15
  *
20
- * @returns Unique test identifier
16
+ * @returns Unique test identifier (V4 UUID)
21
17
  */
22
18
  function generateTestId() {
23
- return `test_${process.pid}_${Date.now()}_${testIdCounter++}_${(0, crypto_1.randomUUID)()}`;
19
+ return (0, node_crypto_1.randomUUID)();
24
20
  }
25
21
  //# sourceMappingURL=testContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"testContext.js","sourceRoot":"","sources":["../../../src/tests/utils/testContext.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAiBH,wCAEC;AAjBD,mCAAoC;AAEpC,IAAI,aAAa,GAAG,CAAC,CAAC;AAEtB;;;;;;;;;;GAUG;AACH,SAAgB,cAAc;IAC5B,OAAO,QAAQ,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,aAAa,EAAE,IAAI,IAAA,mBAAU,GAAE,EAAE,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"testContext.js","sourceRoot":"","sources":["../../../src/tests/utils/testContext.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAYH,wCAEC;AAZD,6CAAyC;AAEzC;;;;;;;GAOG;AACH,SAAgB,cAAc;IAC5B,OAAO,IAAA,wBAAU,GAAE,CAAC;AACtB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -24,6 +24,7 @@ export interface UnvalidatedColumn {
24
24
  description?: unknown;
25
25
  collection?: unknown;
26
26
  type?: unknown;
27
+ tag?: unknown;
27
28
  [key: string]: unknown;
28
29
  }
29
30
  /**
@@ -35,6 +36,7 @@ export interface UnvalidatedSelect {
35
36
  select?: UnvalidatedSelect[];
36
37
  forEach?: unknown;
37
38
  forEachOrNull?: unknown;
39
+ repeat?: unknown;
38
40
  unionAll?: UnvalidatedSelect[];
39
41
  where?: unknown[];
40
42
  [key: string]: unknown;
@@ -85,6 +87,7 @@ export interface ViewDefinitionSelect extends UnvalidatedSelect {
85
87
  select?: ViewDefinitionSelect[];
86
88
  forEach?: string;
87
89
  forEachOrNull?: string;
90
+ repeat?: string[];
88
91
  unionAll?: ViewDefinitionSelect[];
89
92
  where?: ViewDefinitionWhere[];
90
93
  }
@@ -94,6 +97,17 @@ export interface ViewDefinitionColumn extends UnvalidatedColumn {
94
97
  description?: string;
95
98
  collection?: boolean;
96
99
  type?: string;
100
+ tag?: ViewDefinitionColumnTag[];
101
+ }
102
+ /**
103
+ * ViewDefinition column tag for implementation-specific directives.
104
+ * Tags provide database-specific type hints or other metadata.
105
+ *
106
+ * Example: { name: "tsql/type", value: "NVARCHAR(50)" }
107
+ */
108
+ export interface ViewDefinitionColumnTag {
109
+ name: string;
110
+ value: string;
97
111
  }
98
112
  export interface ViewDefinitionWhere {
99
113
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AAEH;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,yBAAyB;IAC/D,YAAY,EAAE,gBAAgB,CAAC;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACpC,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,MAAM,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAClC,KAAK,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,uBAAuB,EAAE,CAAC;CACjC;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,oBAAoB,CAAC,EAAE,eAAe,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,YAAY,CAAC;IACjC,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,aAAa,CAAC;IACnC,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,oBAAoB,CAAC,EAAE,eAAe,CAAC;IACvC,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,wBAAwB,CAAC,EAAE,mBAAmB,CAAC;IAC/C,oBAAoB,CAAC,EAAE,eAAe,CAAC;IACvC,sBAAsB,CAAC,EAAE,iBAAiB,CAAC;IAC3C,iBAAiB,CAAC,EAAE,YAAY,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,CAAC,EAAE,eAAe,CAAC;IACvC,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,cAAc,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,KAAK;IACpB,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAGD,MAAM,WAAW,OAAO;CAAG;AAC3B,MAAM,WAAW,GAAG;CAAG;AACvB,MAAM,WAAW,UAAU;CAAG;AAC9B,MAAM,WAAW,UAAU;CAAG;AAC9B,MAAM,WAAW,KAAK;CAAG;AACzB,MAAM,WAAW,QAAQ;CAAG;AAC5B,MAAM,WAAW,QAAQ;CAAG;AAC5B,MAAM,WAAW,SAAS;CAAG;AAC7B,MAAM,WAAW,KAAK;CAAG;AACzB,MAAM,WAAW,KAAK;CAAG;AACzB,MAAM,WAAW,UAAU;CAAG;AAC9B,MAAM,WAAW,WAAW;CAAG;AAC/B,MAAM,WAAW,SAAS;CAAG;AAC7B,MAAM,WAAW,MAAM;CAAG;AAC1B,MAAM,WAAW,WAAW;CAAG;AAC/B,MAAM,WAAW,eAAe;CAAG;AACnC,MAAM,WAAW,UAAU;CAAG;AAC9B,MAAM,WAAW,mBAAmB;CAAG;AACvC,MAAM,WAAW,eAAe;CAAG;AACnC,MAAM,WAAW,iBAAiB;CAAG;AACrC,MAAM,WAAW,MAAM;CAAG;AAE1B;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * SQL Server identifier and FHIR resource type validation utilities.
3
+ */
4
+ /**
5
+ * Validate a SQL Server identifier (table name, schema name, etc.).
6
+ *
7
+ * SQL Server identifier rules:
8
+ * - Can start with: letter (A-Z, a-z), underscore (_), @, or #
9
+ * - Followed by: letters, digits (0-9), underscore, @, #, or $
10
+ * - Maximum length: 128 characters
11
+ * - Must not be a reserved word
12
+ *
13
+ * @param identifier - The identifier to validate
14
+ * @param type - The type of identifier (for error messages)
15
+ * @throws Error if the identifier is invalid
16
+ */
17
+ export declare function validateSqlServerIdentifier(identifier: string, type: string): void;
18
+ /**
19
+ * Validate a FHIR resource type against the R4 specification.
20
+ *
21
+ * @param resourceType - The resource type to validate
22
+ * @throws Error if the resource type is not valid
23
+ */
24
+ export declare function validateResourceType(resourceType: string): void;
25
+ /**
26
+ * Validate a test ID format.
27
+ * Test IDs must be valid UUIDs (version 4).
28
+ *
29
+ * @param testId - The test ID to validate
30
+ * @throws Error if the test ID format is invalid
31
+ */
32
+ export declare function validateTestId(testId: string): void;
33
+ /**
34
+ * Validate MS SQL Server type specification.
35
+ *
36
+ * Ensures the type is a valid SQL Server data type with correct syntax.
37
+ * Supports all common SQL Server types including:
38
+ * - Integer types: BIT, TINYINT, SMALLINT, INT, BIGINT
39
+ * - Decimal types: DECIMAL, NUMERIC, MONEY, SMALLMONEY, FLOAT, REAL
40
+ * - Date/time types: DATE, TIME, DATETIME, DATETIME2, DATETIMEOFFSET, SMALLDATETIME
41
+ * - String types: CHAR, VARCHAR, TEXT, NCHAR, NVARCHAR, NTEXT (with MAX or size)
42
+ * - Binary types: BINARY, VARBINARY, IMAGE (with MAX or size)
43
+ * - Other: UNIQUEIDENTIFIER, XML, SQL_VARIANT
44
+ *
45
+ * @param sqlType - SQL Server type string (e.g., 'NVARCHAR(MAX)', 'INT', 'DECIMAL(38,18)')
46
+ * @throws Error if type is invalid
47
+ */
48
+ export declare function validateMsSqlType(sqlType: string): void;
49
+ /**
50
+ * Validate and convert ANSI/ISO SQL type specification to MS SQL Server type.
51
+ *
52
+ * Supports ANSI/ISO SQL standard types from SQL-92, SQL:1999, and later versions.
53
+ * Converts standard types to their MS SQL Server equivalents and validates the result.
54
+ *
55
+ * Examples:
56
+ * - 'INTEGER' → 'INT'
57
+ * - 'CHARACTER(50)' → 'CHAR(50)'
58
+ * - 'BOOLEAN' → 'BIT'
59
+ * - 'TIMESTAMP' → 'DATETIME2'
60
+ *
61
+ * @param ansiType - ANSI/ISO SQL type string (e.g., 'INTEGER', 'CHARACTER(20)', 'DECIMAL(10,2)')
62
+ * @returns MS SQL Server equivalent type
63
+ * @throws Error if type is invalid or unsupported
64
+ */
65
+ export declare function validateAnsiSqlType(ansiType: string): string;
66
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,449 @@
1
+ "use strict";
2
+ /**
3
+ * SQL Server identifier and FHIR resource type validation utilities.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.validateSqlServerIdentifier = validateSqlServerIdentifier;
7
+ exports.validateResourceType = validateResourceType;
8
+ exports.validateTestId = validateTestId;
9
+ exports.validateMsSqlType = validateMsSqlType;
10
+ exports.validateAnsiSqlType = validateAnsiSqlType;
11
+ /**
12
+ * FHIR R4 resource types.
13
+ * Complete list of all resource types defined in FHIR R4 specification.
14
+ */
15
+ const FHIR_R4_RESOURCE_TYPES = new Set([
16
+ "Account",
17
+ "ActivityDefinition",
18
+ "AdverseEvent",
19
+ "AllergyIntolerance",
20
+ "Appointment",
21
+ "AppointmentResponse",
22
+ "AuditEvent",
23
+ "Basic",
24
+ "Binary",
25
+ "BiologicallyDerivedProduct",
26
+ "BodyStructure",
27
+ "Bundle",
28
+ "CapabilityStatement",
29
+ "CarePlan",
30
+ "CareTeam",
31
+ "CatalogEntry",
32
+ "ChargeItem",
33
+ "ChargeItemDefinition",
34
+ "Claim",
35
+ "ClaimResponse",
36
+ "ClinicalImpression",
37
+ "CodeSystem",
38
+ "Communication",
39
+ "CommunicationRequest",
40
+ "CompartmentDefinition",
41
+ "Composition",
42
+ "ConceptMap",
43
+ "Condition",
44
+ "Consent",
45
+ "Contract",
46
+ "Coverage",
47
+ "CoverageEligibilityRequest",
48
+ "CoverageEligibilityResponse",
49
+ "DetectedIssue",
50
+ "Device",
51
+ "DeviceDefinition",
52
+ "DeviceMetric",
53
+ "DeviceRequest",
54
+ "DeviceUseStatement",
55
+ "DiagnosticReport",
56
+ "DocumentManifest",
57
+ "DocumentReference",
58
+ "DomainResource",
59
+ "EffectEvidenceSynthesis",
60
+ "Encounter",
61
+ "Endpoint",
62
+ "EnrollmentRequest",
63
+ "EnrollmentResponse",
64
+ "EpisodeOfCare",
65
+ "EventDefinition",
66
+ "Evidence",
67
+ "EvidenceVariable",
68
+ "ExampleScenario",
69
+ "ExplanationOfBenefit",
70
+ "FamilyMemberHistory",
71
+ "Flag",
72
+ "Goal",
73
+ "GraphDefinition",
74
+ "Group",
75
+ "GuidanceResponse",
76
+ "HealthcareService",
77
+ "ImagingStudy",
78
+ "Immunization",
79
+ "ImmunizationEvaluation",
80
+ "ImmunizationRecommendation",
81
+ "ImplementationGuide",
82
+ "InsurancePlan",
83
+ "Invoice",
84
+ "Library",
85
+ "Linkage",
86
+ "List",
87
+ "Location",
88
+ "Measure",
89
+ "MeasureReport",
90
+ "Media",
91
+ "Medication",
92
+ "MedicationAdministration",
93
+ "MedicationDispense",
94
+ "MedicationKnowledge",
95
+ "MedicationRequest",
96
+ "MedicationStatement",
97
+ "MedicinalProduct",
98
+ "MedicinalProductAuthorization",
99
+ "MedicinalProductContraindication",
100
+ "MedicinalProductIndication",
101
+ "MedicinalProductIngredient",
102
+ "MedicinalProductInteraction",
103
+ "MedicinalProductManufactured",
104
+ "MedicinalProductPackaged",
105
+ "MedicinalProductPharmaceutical",
106
+ "MedicinalProductUndesirableEffect",
107
+ "MessageDefinition",
108
+ "MessageHeader",
109
+ "MolecularSequence",
110
+ "NamingSystem",
111
+ "NutritionOrder",
112
+ "Observation",
113
+ "ObservationDefinition",
114
+ "OperationDefinition",
115
+ "OperationOutcome",
116
+ "Organization",
117
+ "OrganizationAffiliation",
118
+ "Parameters",
119
+ "Patient",
120
+ "PaymentNotice",
121
+ "PaymentReconciliation",
122
+ "Person",
123
+ "PlanDefinition",
124
+ "Practitioner",
125
+ "PractitionerRole",
126
+ "Procedure",
127
+ "Provenance",
128
+ "Questionnaire",
129
+ "QuestionnaireResponse",
130
+ "RelatedPerson",
131
+ "RequestGroup",
132
+ "ResearchDefinition",
133
+ "ResearchElementDefinition",
134
+ "ResearchStudy",
135
+ "ResearchSubject",
136
+ "Resource",
137
+ "RiskAssessment",
138
+ "RiskEvidenceSynthesis",
139
+ "Schedule",
140
+ "SearchParameter",
141
+ "ServiceRequest",
142
+ "Slot",
143
+ "Specimen",
144
+ "SpecimenDefinition",
145
+ "StructureDefinition",
146
+ "StructureMap",
147
+ "Subscription",
148
+ "Substance",
149
+ "SubstanceNucleicAcid",
150
+ "SubstancePolymer",
151
+ "SubstanceProtein",
152
+ "SubstanceReferenceInformation",
153
+ "SubstanceSourceMaterial",
154
+ "SubstanceSpecification",
155
+ "SupplyDelivery",
156
+ "SupplyRequest",
157
+ "Task",
158
+ "TerminologyCapabilities",
159
+ "TestReport",
160
+ "TestScript",
161
+ "ValueSet",
162
+ "VerificationResult",
163
+ "VisionPrescription",
164
+ ]);
165
+ /**
166
+ * SQL Server reserved words that cannot be used as identifiers without quoting.
167
+ * This is a subset of commonly used reserved words.
168
+ */
169
+ const SQL_SERVER_RESERVED_WORDS = new Set([
170
+ "SELECT",
171
+ "FROM",
172
+ "WHERE",
173
+ "INSERT",
174
+ "UPDATE",
175
+ "DELETE",
176
+ "DROP",
177
+ "CREATE",
178
+ "ALTER",
179
+ "TABLE",
180
+ "INDEX",
181
+ "VIEW",
182
+ "PROCEDURE",
183
+ "FUNCTION",
184
+ "TRIGGER",
185
+ "DATABASE",
186
+ "SCHEMA",
187
+ "USER",
188
+ "ROLE",
189
+ "GRANT",
190
+ "REVOKE",
191
+ "JOIN",
192
+ "UNION",
193
+ "ORDER",
194
+ "GROUP",
195
+ "HAVING",
196
+ "AS",
197
+ "ON",
198
+ "IN",
199
+ "EXISTS",
200
+ "BETWEEN",
201
+ "LIKE",
202
+ "AND",
203
+ "OR",
204
+ "NOT",
205
+ "NULL",
206
+ "IS",
207
+ ]);
208
+ /**
209
+ * Validate a SQL Server identifier (table name, schema name, etc.).
210
+ *
211
+ * SQL Server identifier rules:
212
+ * - Can start with: letter (A-Z, a-z), underscore (_), @, or #
213
+ * - Followed by: letters, digits (0-9), underscore, @, #, or $
214
+ * - Maximum length: 128 characters
215
+ * - Must not be a reserved word
216
+ *
217
+ * @param identifier - The identifier to validate
218
+ * @param type - The type of identifier (for error messages)
219
+ * @throws Error if the identifier is invalid
220
+ */
221
+ function validateSqlServerIdentifier(identifier, type) {
222
+ // Check for empty identifier
223
+ if (!identifier || identifier.trim().length === 0) {
224
+ throw new Error(`${type} cannot be empty.`);
225
+ }
226
+ // Check length
227
+ if (identifier.length > 128) {
228
+ throw new Error(`${type} '${identifier}' exceeds maximum length of 128 characters.`);
229
+ }
230
+ // Check pattern: must start with letter, underscore, @, or #
231
+ // Followed by letters, digits, underscore, @, #, or $
232
+ if (!/^[a-zA-Z_@#][a-zA-Z0-9_@#$]*$/.test(identifier)) {
233
+ throw new Error(`${type} '${identifier}' contains invalid characters. Must start with a letter, underscore, @, or #, followed by letters, digits, underscore, @, #, or $.`);
234
+ }
235
+ // Check for reserved words (case-insensitive)
236
+ if (SQL_SERVER_RESERVED_WORDS.has(identifier.toUpperCase())) {
237
+ throw new Error(`${type} '${identifier}' is a SQL Server reserved word and cannot be used as an identifier.`);
238
+ }
239
+ }
240
+ /**
241
+ * Validate a FHIR resource type against the R4 specification.
242
+ *
243
+ * @param resourceType - The resource type to validate
244
+ * @throws Error if the resource type is not valid
245
+ */
246
+ function validateResourceType(resourceType) {
247
+ if (!resourceType || resourceType.trim().length === 0) {
248
+ throw new Error("Resource type cannot be empty.");
249
+ }
250
+ if (!FHIR_R4_RESOURCE_TYPES.has(resourceType)) {
251
+ throw new Error(`Invalid FHIR resource type: '${resourceType}'. Must be a valid FHIR R4 resource type.`);
252
+ }
253
+ }
254
+ /**
255
+ * Validate a test ID format.
256
+ * Test IDs must be valid UUIDs (version 4).
257
+ *
258
+ * @param testId - The test ID to validate
259
+ * @throws Error if the test ID format is invalid
260
+ */
261
+ function validateTestId(testId) {
262
+ if (!testId || testId.trim().length === 0) {
263
+ throw new Error("Test ID cannot be empty.");
264
+ }
265
+ // UUID v4 format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
266
+ // where x is any hexadecimal digit and y is one of 8, 9, a, or b
267
+ const uuidV4Pattern = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
268
+ if (!uuidV4Pattern.test(testId)) {
269
+ throw new Error(`Invalid test ID format: '${testId}'. Must be a valid UUID v4.`);
270
+ }
271
+ }
272
+ /**
273
+ * Valid MS SQL Server base type names.
274
+ */
275
+ const VALID_SQL_SERVER_TYPES = new Set([
276
+ "BIT",
277
+ "TINYINT",
278
+ "SMALLINT",
279
+ "INT",
280
+ "BIGINT",
281
+ "DECIMAL",
282
+ "NUMERIC",
283
+ "MONEY",
284
+ "SMALLMONEY",
285
+ "FLOAT",
286
+ "REAL",
287
+ "DATE",
288
+ "TIME",
289
+ "DATETIME",
290
+ "DATETIME2",
291
+ "DATETIMEOFFSET",
292
+ "SMALLDATETIME",
293
+ "CHAR",
294
+ "VARCHAR",
295
+ "TEXT",
296
+ "NCHAR",
297
+ "NVARCHAR",
298
+ "NTEXT",
299
+ "BINARY",
300
+ "VARBINARY",
301
+ "IMAGE",
302
+ "UNIQUEIDENTIFIER",
303
+ "XML",
304
+ "SQL_VARIANT",
305
+ ]);
306
+ /**
307
+ * Validate MS SQL Server type specification.
308
+ *
309
+ * Ensures the type is a valid SQL Server data type with correct syntax.
310
+ * Supports all common SQL Server types including:
311
+ * - Integer types: BIT, TINYINT, SMALLINT, INT, BIGINT
312
+ * - Decimal types: DECIMAL, NUMERIC, MONEY, SMALLMONEY, FLOAT, REAL
313
+ * - Date/time types: DATE, TIME, DATETIME, DATETIME2, DATETIMEOFFSET, SMALLDATETIME
314
+ * - String types: CHAR, VARCHAR, TEXT, NCHAR, NVARCHAR, NTEXT (with MAX or size)
315
+ * - Binary types: BINARY, VARBINARY, IMAGE (with MAX or size)
316
+ * - Other: UNIQUEIDENTIFIER, XML, SQL_VARIANT
317
+ *
318
+ * @param sqlType - SQL Server type string (e.g., 'NVARCHAR(MAX)', 'INT', 'DECIMAL(38,18)')
319
+ * @throws Error if type is invalid
320
+ */
321
+ function validateMsSqlType(sqlType) {
322
+ if (!sqlType || sqlType.trim().length === 0) {
323
+ throw new Error("SQL Server type cannot be empty.");
324
+ }
325
+ const trimmedType = sqlType.trim();
326
+ // Extract base type and parameters by finding the opening parenthesis
327
+ const openParenIndex = trimmedType.indexOf("(");
328
+ const baseTypePart = openParenIndex === -1
329
+ ? trimmedType
330
+ : trimmedType.substring(0, openParenIndex).trim();
331
+ const paramsPart = openParenIndex === -1 ? "" : trimmedType.substring(openParenIndex);
332
+ // Validate base type name: letters, digits, underscore
333
+ if (!/^[A-Z_][A-Z0-9_]*$/i.test(baseTypePart)) {
334
+ throw new Error(`Invalid MS SQL Server type format: '${sqlType}'. Must be a valid SQL Server data type such as INT, NVARCHAR(MAX), DECIMAL(38,18), DATETIME2(7), or DATETIMEOFFSET(3).`);
335
+ }
336
+ // Validate parameters if present: (size) or (precision,scale) where size can be MAX
337
+ if (paramsPart && !/^\(\s*(\d+|MAX)(\s*,\s*\d+)?\s*\)$/i.test(paramsPart)) {
338
+ throw new Error(`Invalid MS SQL Server type format: '${sqlType}'. Must be a valid SQL Server data type such as INT, NVARCHAR(MAX), DECIMAL(38,18), DATETIME2(7), or DATETIMEOFFSET(3).`);
339
+ }
340
+ // Check if base type is valid
341
+ const baseType = baseTypePart.toUpperCase();
342
+ if (!VALID_SQL_SERVER_TYPES.has(baseType)) {
343
+ throw new Error(`Unknown MS SQL Server type: '${baseType}'. Must be a valid SQL Server data type such as INT, NVARCHAR, DECIMAL, DATETIME2, or DATETIMEOFFSET.`);
344
+ }
345
+ }
346
+ /**
347
+ * Mapping of ANSI/ISO SQL standard types to MS SQL Server equivalents.
348
+ * Based on ISO/IEC 9075 SQL standard and SQL Server data type synonyms.
349
+ */
350
+ const ANSI_TO_MSSQL_TYPE_MAP = new Map([
351
+ // Character types (SQL-92 and later)
352
+ ["CHARACTER", "CHAR"],
353
+ ["CHAR", "CHAR"],
354
+ ["CHARACTER VARYING", "VARCHAR"],
355
+ ["CHAR VARYING", "VARCHAR"],
356
+ ["NATIONAL CHARACTER", "NCHAR"],
357
+ ["NATIONAL CHAR", "NCHAR"],
358
+ ["NATIONAL CHARACTER VARYING", "NVARCHAR"],
359
+ ["NATIONAL CHAR VARYING", "NVARCHAR"],
360
+ // Numeric types - exact (SQL-92)
361
+ ["INTEGER", "INT"],
362
+ ["INT", "INT"],
363
+ ["SMALLINT", "SMALLINT"],
364
+ ["BIGINT", "BIGINT"],
365
+ ["DECIMAL", "DECIMAL"],
366
+ ["DEC", "DECIMAL"],
367
+ ["NUMERIC", "NUMERIC"],
368
+ // Numeric types - approximate (SQL-92)
369
+ ["FLOAT", "FLOAT"],
370
+ ["REAL", "REAL"],
371
+ ["DOUBLE PRECISION", "FLOAT"],
372
+ // Date/time types (SQL-92 and later)
373
+ ["DATE", "DATE"],
374
+ ["TIME", "TIME"],
375
+ // Note: ANSI TIMESTAMP maps to DATETIME2, not SQL Server's TIMESTAMP (which is for row versioning)
376
+ ["TIMESTAMP", "DATETIME2"],
377
+ // Boolean (SQL:1999)
378
+ // Note: SQL Server doesn't have native BOOLEAN, BIT is the closest equivalent
379
+ ["BOOLEAN", "BIT"],
380
+ // Binary types
381
+ ["BINARY VARYING", "VARBINARY"],
382
+ ]);
383
+ /**
384
+ * Parse an ANSI/ISO SQL type into base type and parameters.
385
+ *
386
+ * @param typeString - The type string to parse
387
+ * @returns Object with baseType and parameters
388
+ */
389
+ function parseAnsiSqlType(typeString) {
390
+ const openParenIndex = typeString.indexOf("(");
391
+ const baseTypePart = openParenIndex === -1
392
+ ? typeString
393
+ : typeString.substring(0, openParenIndex).trim();
394
+ const paramsPart = openParenIndex === -1 ? "" : typeString.substring(openParenIndex);
395
+ return {
396
+ baseType: baseTypePart.trim().toUpperCase(),
397
+ parameters: paramsPart,
398
+ };
399
+ }
400
+ /**
401
+ * Validate and convert ANSI/ISO SQL type specification to MS SQL Server type.
402
+ *
403
+ * Supports ANSI/ISO SQL standard types from SQL-92, SQL:1999, and later versions.
404
+ * Converts standard types to their MS SQL Server equivalents and validates the result.
405
+ *
406
+ * Examples:
407
+ * - 'INTEGER' → 'INT'
408
+ * - 'CHARACTER(50)' → 'CHAR(50)'
409
+ * - 'BOOLEAN' → 'BIT'
410
+ * - 'TIMESTAMP' → 'DATETIME2'
411
+ *
412
+ * @param ansiType - ANSI/ISO SQL type string (e.g., 'INTEGER', 'CHARACTER(20)', 'DECIMAL(10,2)')
413
+ * @returns MS SQL Server equivalent type
414
+ * @throws Error if type is invalid or unsupported
415
+ */
416
+ function validateAnsiSqlType(ansiType) {
417
+ if (!ansiType || ansiType.trim().length === 0) {
418
+ throw new Error("ANSI SQL type cannot be empty.");
419
+ }
420
+ const trimmedType = ansiType.trim();
421
+ const { baseType, parameters } = parseAnsiSqlType(trimmedType);
422
+ // Validate base type: must start with letter, followed by letters and spaces
423
+ if (!/^[A-Z][A-Z\s]*$/i.test(baseType)) {
424
+ throw new Error(`Invalid ANSI SQL type format: '${ansiType}'. Must be a valid ANSI/ISO SQL type such as INTEGER, CHARACTER(50), or DECIMAL(10,2).`);
425
+ }
426
+ // Validate parameters if present: (size) or (precision,scale) where size can be MAX
427
+ if (parameters && !/^\(\s*(\d+|MAX)(\s*,\s*\d+)?\s*\)$/i.test(parameters)) {
428
+ throw new Error(`Invalid ANSI SQL type format: '${ansiType}'. Must be a valid ANSI/ISO SQL type such as INTEGER, CHARACTER(50), or DECIMAL(10,2).`);
429
+ }
430
+ // Look up MS SQL Server equivalent
431
+ const mssqlBaseType = ANSI_TO_MSSQL_TYPE_MAP.get(baseType);
432
+ if (!mssqlBaseType) {
433
+ // Check if it's already a valid SQL Server type (pass-through)
434
+ const mssqlType = baseType + parameters;
435
+ try {
436
+ validateMsSqlType(mssqlType);
437
+ return mssqlType;
438
+ }
439
+ catch {
440
+ throw new Error(`Unsupported ANSI SQL type: '${baseType}'. Must be a valid ANSI/ISO SQL standard type such as INTEGER, CHARACTER, DECIMAL, TIMESTAMP, or BOOLEAN.`);
441
+ }
442
+ }
443
+ // Construct MS SQL Server type with parameters
444
+ const mssqlType = mssqlBaseType + parameters;
445
+ // Validate the resulting MS SQL Server type
446
+ validateMsSqlType(mssqlType);
447
+ return mssqlType;
448
+ }
449
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}