sof-mssql 1.0.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 (135) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +346 -0
  3. package/dist/cli.d.ts +7 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +85 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/fhirpath/transpiler.d.ts +18 -0
  8. package/dist/fhirpath/transpiler.d.ts.map +1 -0
  9. package/dist/fhirpath/transpiler.js +82 -0
  10. package/dist/fhirpath/transpiler.js.map +1 -0
  11. package/dist/fhirpath/visitor.d.ts +153 -0
  12. package/dist/fhirpath/visitor.d.ts.map +1 -0
  13. package/dist/fhirpath/visitor.js +1295 -0
  14. package/dist/fhirpath/visitor.js.map +1 -0
  15. package/dist/generated/grammar/fhirpathLexer.d.ts +88 -0
  16. package/dist/generated/grammar/fhirpathLexer.d.ts.map +1 -0
  17. package/dist/generated/grammar/fhirpathLexer.js +598 -0
  18. package/dist/generated/grammar/fhirpathLexer.js.map +1 -0
  19. package/dist/generated/grammar/fhirpathListener.d.ts +589 -0
  20. package/dist/generated/grammar/fhirpathListener.d.ts.map +1 -0
  21. package/dist/generated/grammar/fhirpathListener.js +4 -0
  22. package/dist/generated/grammar/fhirpathListener.js.map +1 -0
  23. package/dist/generated/grammar/fhirpathParser.d.ts +470 -0
  24. package/dist/generated/grammar/fhirpathParser.d.ts.map +1 -0
  25. package/dist/generated/grammar/fhirpathParser.js +3022 -0
  26. package/dist/generated/grammar/fhirpathParser.js.map +1 -0
  27. package/dist/generated/grammar/fhirpathVisitor.d.ts +372 -0
  28. package/dist/generated/grammar/fhirpathVisitor.d.ts.map +1 -0
  29. package/dist/generated/grammar/fhirpathVisitor.js +4 -0
  30. package/dist/generated/grammar/fhirpathVisitor.js.map +1 -0
  31. package/dist/index.d.ts +28 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +42 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/load.d.ts +14 -0
  36. package/dist/load.d.ts.map +1 -0
  37. package/dist/load.js +115 -0
  38. package/dist/load.js.map +1 -0
  39. package/dist/loader/connection.d.ts +36 -0
  40. package/dist/loader/connection.d.ts.map +1 -0
  41. package/dist/loader/connection.js +106 -0
  42. package/dist/loader/connection.js.map +1 -0
  43. package/dist/loader/discovery.d.ts +38 -0
  44. package/dist/loader/discovery.d.ts.map +1 -0
  45. package/dist/loader/discovery.js +107 -0
  46. package/dist/loader/discovery.js.map +1 -0
  47. package/dist/loader/index.d.ts +24 -0
  48. package/dist/loader/index.d.ts.map +1 -0
  49. package/dist/loader/index.js +193 -0
  50. package/dist/loader/index.js.map +1 -0
  51. package/dist/loader/progress.d.ts +70 -0
  52. package/dist/loader/progress.d.ts.map +1 -0
  53. package/dist/loader/progress.js +206 -0
  54. package/dist/loader/progress.js.map +1 -0
  55. package/dist/loader/stream.d.ts +21 -0
  56. package/dist/loader/stream.d.ts.map +1 -0
  57. package/dist/loader/stream.js +103 -0
  58. package/dist/loader/stream.js.map +1 -0
  59. package/dist/loader/tables.d.ts +43 -0
  60. package/dist/loader/tables.d.ts.map +1 -0
  61. package/dist/loader/tables.js +88 -0
  62. package/dist/loader/tables.js.map +1 -0
  63. package/dist/loader/types.d.ts +134 -0
  64. package/dist/loader/types.d.ts.map +1 -0
  65. package/dist/loader/types.js +8 -0
  66. package/dist/loader/types.js.map +1 -0
  67. package/dist/parser.d.ts +60 -0
  68. package/dist/parser.d.ts.map +1 -0
  69. package/dist/parser.js +226 -0
  70. package/dist/parser.js.map +1 -0
  71. package/dist/queryGenerator/ColumnExpressionGenerator.d.ts +52 -0
  72. package/dist/queryGenerator/ColumnExpressionGenerator.d.ts.map +1 -0
  73. package/dist/queryGenerator/ColumnExpressionGenerator.js +144 -0
  74. package/dist/queryGenerator/ColumnExpressionGenerator.js.map +1 -0
  75. package/dist/queryGenerator/ForEachProcessor.d.ts +127 -0
  76. package/dist/queryGenerator/ForEachProcessor.d.ts.map +1 -0
  77. package/dist/queryGenerator/ForEachProcessor.js +351 -0
  78. package/dist/queryGenerator/ForEachProcessor.js.map +1 -0
  79. package/dist/queryGenerator/PathParser.d.ts +64 -0
  80. package/dist/queryGenerator/PathParser.d.ts.map +1 -0
  81. package/dist/queryGenerator/PathParser.js +164 -0
  82. package/dist/queryGenerator/PathParser.js.map +1 -0
  83. package/dist/queryGenerator/SelectClauseBuilder.d.ts +63 -0
  84. package/dist/queryGenerator/SelectClauseBuilder.d.ts.map +1 -0
  85. package/dist/queryGenerator/SelectClauseBuilder.js +196 -0
  86. package/dist/queryGenerator/SelectClauseBuilder.js.map +1 -0
  87. package/dist/queryGenerator/SelectCombinationExpander.d.ts +42 -0
  88. package/dist/queryGenerator/SelectCombinationExpander.d.ts.map +1 -0
  89. package/dist/queryGenerator/SelectCombinationExpander.js +95 -0
  90. package/dist/queryGenerator/SelectCombinationExpander.js.map +1 -0
  91. package/dist/queryGenerator/WhereClauseBuilder.d.ts +20 -0
  92. package/dist/queryGenerator/WhereClauseBuilder.d.ts.map +1 -0
  93. package/dist/queryGenerator/WhereClauseBuilder.js +63 -0
  94. package/dist/queryGenerator/WhereClauseBuilder.js.map +1 -0
  95. package/dist/queryGenerator/index.d.ts +10 -0
  96. package/dist/queryGenerator/index.d.ts.map +1 -0
  97. package/dist/queryGenerator/index.js +19 -0
  98. package/dist/queryGenerator/index.js.map +1 -0
  99. package/dist/queryGenerator.d.ts +61 -0
  100. package/dist/queryGenerator.d.ts.map +1 -0
  101. package/dist/queryGenerator.js +187 -0
  102. package/dist/queryGenerator.js.map +1 -0
  103. package/dist/tests/sqlOnFhir.test.d.ts +11 -0
  104. package/dist/tests/sqlOnFhir.test.d.ts.map +1 -0
  105. package/dist/tests/sqlOnFhir.test.js +24 -0
  106. package/dist/tests/sqlOnFhir.test.js.map +1 -0
  107. package/dist/tests/utils/database.d.ts +38 -0
  108. package/dist/tests/utils/database.d.ts.map +1 -0
  109. package/dist/tests/utils/database.js +258 -0
  110. package/dist/tests/utils/database.js.map +1 -0
  111. package/dist/tests/utils/generator.d.ts +58 -0
  112. package/dist/tests/utils/generator.d.ts.map +1 -0
  113. package/dist/tests/utils/generator.js +195 -0
  114. package/dist/tests/utils/generator.js.map +1 -0
  115. package/dist/tests/utils/reporter.d.ts +83 -0
  116. package/dist/tests/utils/reporter.d.ts.map +1 -0
  117. package/dist/tests/utils/reporter.js +245 -0
  118. package/dist/tests/utils/reporter.js.map +1 -0
  119. package/dist/tests/utils/sqlOnFhir.d.ts +33 -0
  120. package/dist/tests/utils/sqlOnFhir.d.ts.map +1 -0
  121. package/dist/tests/utils/sqlOnFhir.js +281 -0
  122. package/dist/tests/utils/sqlOnFhir.js.map +1 -0
  123. package/dist/tests/utils/testContext.d.ts +18 -0
  124. package/dist/tests/utils/testContext.d.ts.map +1 -0
  125. package/dist/tests/utils/testContext.js +25 -0
  126. package/dist/tests/utils/testContext.js.map +1 -0
  127. package/dist/tests/utils/types.d.ts +31 -0
  128. package/dist/tests/utils/types.d.ts.map +1 -0
  129. package/dist/tests/utils/types.js +9 -0
  130. package/dist/tests/utils/types.js.map +1 -0
  131. package/dist/types.d.ts +288 -0
  132. package/dist/types.d.ts.map +1 -0
  133. package/dist/types.js +6 -0
  134. package/dist/types.js.map +1 -0
  135. package/package.json +76 -0
package/dist/index.js ADDED
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ /**
3
+ * SQL on FHIR MS SQL Server library.
4
+ * Main API for transpiling ViewDefinitions to T-SQL queries.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.SqlOnFhir = exports.Transpiler = exports.QueryGenerator = exports.ViewDefinitionParser = void 0;
8
+ var parser_js_1 = require("./parser.js");
9
+ Object.defineProperty(exports, "ViewDefinitionParser", { enumerable: true, get: function () { return parser_js_1.ViewDefinitionParser; } });
10
+ var queryGenerator_1 = require("./queryGenerator");
11
+ Object.defineProperty(exports, "QueryGenerator", { enumerable: true, get: function () { return queryGenerator_1.QueryGenerator; } });
12
+ var transpiler_1 = require("./fhirpath/transpiler");
13
+ Object.defineProperty(exports, "Transpiler", { enumerable: true, get: function () { return transpiler_1.Transpiler; } });
14
+ const parser_js_2 = require("./parser.js");
15
+ const queryGenerator_2 = require("./queryGenerator");
16
+ /**
17
+ * Main class for SQL on FHIR operations.
18
+ */
19
+ class SqlOnFhir {
20
+ queryGenerator;
21
+ constructor(options = {}) {
22
+ this.queryGenerator = new queryGenerator_2.QueryGenerator(options);
23
+ }
24
+ /**
25
+ * Transpile a ViewDefinition to a T-SQL query.
26
+ *
27
+ * @param viewDefinition - The ViewDefinition to transpile
28
+ */
29
+ transpile(viewDefinition) {
30
+ let viewDef;
31
+ if (typeof viewDefinition === "string" ||
32
+ (typeof viewDefinition === "object" && "resourceType" in viewDefinition)) {
33
+ viewDef = parser_js_2.ViewDefinitionParser.parseViewDefinition(viewDefinition);
34
+ }
35
+ else {
36
+ viewDef = viewDefinition;
37
+ }
38
+ return this.queryGenerator.generateQuery(viewDef);
39
+ }
40
+ }
41
+ exports.SqlOnFhir = SqlOnFhir;
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAYH,yCAAmD;AAA1C,iHAAA,oBAAoB,OAAA;AAC7B,mDAAyE;AAAhE,gHAAA,cAAc,OAAA;AACvB,oDAAsE;AAA7D,wGAAA,UAAU,OAAA;AAEnB,2CAAmD;AACnD,qDAAyE;AAQzE;;GAEG;AACH,MAAa,SAAS;IACH,cAAc,CAAiB;IAEhD,YAAY,UAAiC,EAAE;QAC7C,IAAI,CAAC,cAAc,GAAG,IAAI,+BAAc,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,cAAmC;QAC3C,IAAI,OAAuB,CAAC;QAE5B,IACE,OAAO,cAAc,KAAK,QAAQ;YAClC,CAAC,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,IAAI,cAAc,CAAC,EACxE,CAAC;YACD,OAAO,GAAG,gCAAoB,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,cAAgC,CAAC;QAC7C,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;CACF;AA1BD,8BA0BC"}
package/dist/load.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI command for loading NDJSON files into SQL Server.
4
+ *
5
+ * @author John Grimes
6
+ */
7
+ import { Command } from "commander";
8
+ /**
9
+ * Create the load command.
10
+ *
11
+ * @returns Commander command for loading NDJSON files.
12
+ */
13
+ export declare function createLoadCommand(): Command;
14
+ //# sourceMappingURL=load.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../src/load.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgGpC;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAwC3C"}
package/dist/load.js ADDED
@@ -0,0 +1,115 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * CLI command for loading NDJSON files into SQL Server.
5
+ *
6
+ * @author John Grimes
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.createLoadCommand = createLoadCommand;
10
+ const commander_1 = require("commander");
11
+ const index_js_1 = require("./loader/index.js");
12
+ /**
13
+ * Get database configuration for dry-run mode.
14
+ *
15
+ * @param commandOptions - Command options.
16
+ * @returns Database configuration with dummy values.
17
+ */
18
+ function getDryRunDatabaseConfig(commandOptions) {
19
+ return {
20
+ host: commandOptions.host ?? "localhost",
21
+ port: commandOptions.port ?? 1433,
22
+ user: commandOptions.user ?? "sa",
23
+ password: commandOptions.password ?? "dummy",
24
+ database: commandOptions.database ?? "dummy",
25
+ trustServerCertificate: commandOptions.trustServerCertificate,
26
+ };
27
+ }
28
+ /**
29
+ * Build loader options from command options.
30
+ *
31
+ * @param directory - Directory to load from.
32
+ * @param commandOptions - Command options.
33
+ * @returns Loader options.
34
+ */
35
+ function buildLoaderOptions(directory, commandOptions) {
36
+ const database = commandOptions.dryRun
37
+ ? getDryRunDatabaseConfig(commandOptions)
38
+ : (0, index_js_1.getDatabaseConfigFromEnv)({
39
+ host: commandOptions.host,
40
+ port: commandOptions.port,
41
+ user: commandOptions.user,
42
+ password: commandOptions.password,
43
+ database: commandOptions.database,
44
+ trustServerCertificate: commandOptions.trustServerCertificate,
45
+ });
46
+ return {
47
+ directory,
48
+ database,
49
+ pattern: commandOptions.pattern,
50
+ resourceType: commandOptions.resourceType,
51
+ tableName: commandOptions.tableName,
52
+ schemaName: commandOptions.schemaName,
53
+ createTable: commandOptions.createTable,
54
+ truncate: commandOptions.truncate,
55
+ batchSize: commandOptions.batchSize,
56
+ parallel: commandOptions.parallel,
57
+ continueOnError: commandOptions.continueOnError,
58
+ dryRun: commandOptions.dryRun,
59
+ verbose: commandOptions.verbose,
60
+ quiet: commandOptions.quiet,
61
+ progress: commandOptions.progress,
62
+ };
63
+ }
64
+ /**
65
+ * Handle the load command action.
66
+ *
67
+ * @param directory - Directory to load from.
68
+ * @param commandOptions - Command options.
69
+ */
70
+ async function handleLoadCommand(directory, commandOptions) {
71
+ try {
72
+ const options = buildLoaderOptions(directory, commandOptions);
73
+ const summary = await (0, index_js_1.loadNdjsonFiles)(options);
74
+ if (summary.filesFailed > 0) {
75
+ process.exit(1);
76
+ }
77
+ }
78
+ catch (err) {
79
+ console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
80
+ process.exit(1);
81
+ }
82
+ }
83
+ /**
84
+ * Create the load command.
85
+ *
86
+ * @returns Commander command for loading NDJSON files.
87
+ */
88
+ function createLoadCommand() {
89
+ const command = new commander_1.Command("load");
90
+ command
91
+ .description("Load NDJSON files into SQL Server")
92
+ .argument("<directory>", "Directory containing NDJSON files")
93
+ .option("--host <host>", "Database server hostname")
94
+ .option("--port <port>", "Database server port", parseInt)
95
+ .option("--user <user>", "Database username")
96
+ .option("--password <password>", "Database password")
97
+ .option("--database <database>", "Database name")
98
+ .option("--trust-server-certificate", "Trust server certificate", false)
99
+ .option("--pattern <pattern>", "File naming pattern (default: {ResourceType}.ndjson)")
100
+ .option("--resource-type <type>", "Only load specific resource type")
101
+ .option("--table-name <name>", "Table name (default: fhir_resources)")
102
+ .option("--schema-name <name>", "Schema name (default: dbo)")
103
+ .option("--no-create-table", "Do not create table if it doesn't exist")
104
+ .option("--truncate", "Truncate table before loading", false)
105
+ .option("--batch-size <size>", "Number of rows per batch", parseInt, 1000)
106
+ .option("--parallel <count>", "Number of files to process in parallel", parseInt, 4)
107
+ .option("--continue-on-error", "Continue loading other files if one fails", false)
108
+ .option("--dry-run", "Show what would be loaded without loading", false)
109
+ .option("--verbose", "Enable verbose logging", false)
110
+ .option("--quiet", "Minimal output", false)
111
+ .option("--progress", "Show progress bar", false)
112
+ .action(handleLoadCommand);
113
+ return command;
114
+ }
115
+ //# sourceMappingURL=load.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../src/load.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Database connection management for NDJSON loader.
3
+ *
4
+ * @author John Grimes
5
+ */
6
+ import { type ConnectionPool } from "mssql";
7
+ import type { DatabaseConfig } from "./types.js";
8
+ /**
9
+ * Create a connection pool to the SQL Server database.
10
+ *
11
+ * @param config - Database connection configuration.
12
+ * @returns Promise that resolves to the connection pool.
13
+ */
14
+ export declare function createConnectionPool(config: DatabaseConfig): Promise<ConnectionPool>;
15
+ /**
16
+ * Close a connection pool safely.
17
+ *
18
+ * @param pool - The connection pool to close.
19
+ */
20
+ export declare function closeConnectionPool(pool: ConnectionPool): Promise<void>;
21
+ /**
22
+ * Test database connection.
23
+ *
24
+ * @param pool - The connection pool to test.
25
+ * @returns Promise that resolves to true if connection is successful.
26
+ */
27
+ export declare function testConnection(pool: ConnectionPool): Promise<boolean>;
28
+ /**
29
+ * Get database connection configuration from environment variables.
30
+ * Falls back to provided defaults or throws if required variables are missing.
31
+ *
32
+ * @param overrides - Optional configuration overrides.
33
+ * @returns Database configuration.
34
+ */
35
+ export declare function getDatabaseConfigFromEnv(overrides?: Partial<DatabaseConfig>): DatabaseConfig;
36
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/loader/connection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAY,EAAE,KAAK,cAAc,EAA4B,MAAM,OAAO,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,cAAc,CAAC,CA0BzB;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7E;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3E;AAED;;;;;;GAMG;AAEH,wBAAgB,wBAAwB,CACtC,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAClC,cAAc,CA8BhB"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ /**
3
+ * Database connection management for NDJSON loader.
4
+ *
5
+ * @author John Grimes
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.createConnectionPool = createConnectionPool;
12
+ exports.closeConnectionPool = closeConnectionPool;
13
+ exports.testConnection = testConnection;
14
+ exports.getDatabaseConfigFromEnv = getDatabaseConfigFromEnv;
15
+ const mssql_1 = __importDefault(require("mssql"));
16
+ /**
17
+ * Create a connection pool to the SQL Server database.
18
+ *
19
+ * @param config - Database connection configuration.
20
+ * @returns Promise that resolves to the connection pool.
21
+ */
22
+ async function createConnectionPool(config) {
23
+ // Build the mssql configuration object.
24
+ const sqlConfig = {
25
+ server: config.host,
26
+ port: config.port ?? 1433,
27
+ user: config.user,
28
+ password: config.password,
29
+ database: config.database,
30
+ options: {
31
+ trustServerCertificate: config.trustServerCertificate ?? false,
32
+ // Enable multiple active result sets for parallel operations.
33
+ enableArithAbort: true,
34
+ },
35
+ pool: {
36
+ // Configure connection pool for bulk operations.
37
+ max: 10,
38
+ min: 0,
39
+ idleTimeoutMillis: 30000,
40
+ },
41
+ };
42
+ // Create and connect the pool.
43
+ const pool = new mssql_1.default.ConnectionPool(sqlConfig);
44
+ await pool.connect();
45
+ return pool;
46
+ }
47
+ /**
48
+ * Close a connection pool safely.
49
+ *
50
+ * @param pool - The connection pool to close.
51
+ */
52
+ async function closeConnectionPool(pool) {
53
+ try {
54
+ await pool.close();
55
+ }
56
+ catch {
57
+ // Silently ignore errors when closing - we're likely cleaning up anyway.
58
+ }
59
+ }
60
+ /**
61
+ * Test database connection.
62
+ *
63
+ * @param pool - The connection pool to test.
64
+ * @returns Promise that resolves to true if connection is successful.
65
+ */
66
+ async function testConnection(pool) {
67
+ try {
68
+ const result = await pool.request().query("SELECT 1 AS test");
69
+ return result.recordset.length === 1;
70
+ }
71
+ catch {
72
+ return false;
73
+ }
74
+ }
75
+ /**
76
+ * Get database connection configuration from environment variables.
77
+ * Falls back to provided defaults or throws if required variables are missing.
78
+ *
79
+ * @param overrides - Optional configuration overrides.
80
+ * @returns Database configuration.
81
+ */
82
+ // eslint-disable-next-line complexity -- Configuration parsing is inherently complex
83
+ function getDatabaseConfigFromEnv(overrides) {
84
+ const host = overrides?.host ?? process.env.MSSQL_HOST;
85
+ const user = overrides?.user ?? process.env.MSSQL_USER;
86
+ const password = overrides?.password ?? process.env.MSSQL_PASSWORD;
87
+ const database = overrides?.database ?? process.env.MSSQL_DATABASE;
88
+ if (!host || !user || !password || !database) {
89
+ throw new Error("Missing required database configuration. " +
90
+ "Provide via --host, --user, --password, --database flags " +
91
+ "or MSSQL_HOST, MSSQL_USER, MSSQL_PASSWORD, MSSQL_DATABASE environment variables.");
92
+ }
93
+ const port = overrides?.port ??
94
+ (process.env.MSSQL_PORT ? parseInt(process.env.MSSQL_PORT, 10) : 1433);
95
+ const trustServerCertificate = overrides?.trustServerCertificate ??
96
+ process.env.MSSQL_TRUST_SERVER_CERTIFICATE === "true";
97
+ return {
98
+ host,
99
+ port,
100
+ user,
101
+ password,
102
+ database,
103
+ trustServerCertificate,
104
+ };
105
+ }
106
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/loader/connection.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;AAWH,oDA4BC;AAOD,kDAMC;AAQD,wCAOC;AAUD,4DAgCC;AA3GD,kDAA2E;AAG3E;;;;;GAKG;AACI,KAAK,UAAU,oBAAoB,CACxC,MAAsB;IAEtB,wCAAwC;IACxC,MAAM,SAAS,GAAc;QAC3B,MAAM,EAAE,MAAM,CAAC,IAAI;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE;YACP,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,IAAI,KAAK;YAC9D,8DAA8D;YAC9D,gBAAgB,EAAE,IAAI;SACvB;QACD,IAAI,EAAE;YACJ,iDAAiD;YACjD,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,CAAC;YACN,iBAAiB,EAAE,KAAK;SACzB;KACF,CAAC;IAEF,+BAA+B;IAC/B,MAAM,IAAI,GAAG,IAAI,eAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IAErB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,mBAAmB,CAAC,IAAoB;IAC5D,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;IAC3E,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,cAAc,CAAC,IAAoB;IACvD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,qFAAqF;AACrF,SAAgB,wBAAwB,CACtC,SAAmC;IAEnC,MAAM,IAAI,GAAG,SAAS,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACvD,MAAM,IAAI,GAAG,SAAS,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACvD,MAAM,QAAQ,GAAG,SAAS,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACnE,MAAM,QAAQ,GAAG,SAAS,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAEnE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,2CAA2C;YACzC,2DAA2D;YAC3D,kFAAkF,CACrF,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GACR,SAAS,EAAE,IAAI;QACf,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEzE,MAAM,sBAAsB,GAC1B,SAAS,EAAE,sBAAsB;QACjC,OAAO,CAAC,GAAG,CAAC,8BAA8B,KAAK,MAAM,CAAC;IAExD,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,QAAQ;QACR,QAAQ;QACR,sBAAsB;KACvB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * File discovery for NDJSON loader.
3
+ * Scans directories and matches files against configurable patterns.
4
+ *
5
+ * @author John Grimes
6
+ */
7
+ import type { DiscoveredFile, LoaderOptions } from "./types.js";
8
+ /**
9
+ * Discover NDJSON files in a directory matching the specified pattern.
10
+ *
11
+ * @param options - Loader options containing directory and pattern.
12
+ * @returns Array of discovered files with metadata.
13
+ */
14
+ export declare function discoverFiles(options: LoaderOptions): DiscoveredFile[];
15
+ /**
16
+ * Parse a filename against a pattern to extract resource type.
17
+ *
18
+ * Pattern placeholders:
19
+ * - {ResourceType} - Required, matches the FHIR resource type.
20
+ *
21
+ * Example:
22
+ * - Pattern: "{ResourceType}.ndjson" matches "Patient.ndjson" → { resourceType: "Patient" }
23
+ *
24
+ * @param filename - The filename to parse.
25
+ * @param pattern - The pattern to match against.
26
+ * @returns Metadata if the filename matches, undefined otherwise.
27
+ */
28
+ export declare function parseFilename(filename: string, pattern: string): {
29
+ resourceType: string;
30
+ } | undefined;
31
+ /**
32
+ * Group discovered files by resource type.
33
+ *
34
+ * @param files - Array of discovered files.
35
+ * @returns Map of resource type to files.
36
+ */
37
+ export declare function groupFilesByResourceType(files: DiscoveredFile[]): Map<string, DiscoveredFile[]>;
38
+ //# sourceMappingURL=discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/loader/discovery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAShE;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,EAAE,CAwCtE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CA+BtC;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,cAAc,EAAE,GACtB,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAU/B"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ /**
3
+ * File discovery for NDJSON loader.
4
+ * Scans directories and matches files against configurable patterns.
5
+ *
6
+ * @author John Grimes
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.discoverFiles = discoverFiles;
10
+ exports.parseFilename = parseFilename;
11
+ exports.groupFilesByResourceType = groupFilesByResourceType;
12
+ const fs_1 = require("fs");
13
+ const path_1 = require("path");
14
+ /**
15
+ * Default file pattern.
16
+ * Format: {ResourceType}.ndjson
17
+ * Example: Patient.ndjson
18
+ */
19
+ const DEFAULT_PATTERN = "{ResourceType}.ndjson";
20
+ /**
21
+ * Discover NDJSON files in a directory matching the specified pattern.
22
+ *
23
+ * @param options - Loader options containing directory and pattern.
24
+ * @returns Array of discovered files with metadata.
25
+ */
26
+ function discoverFiles(options) {
27
+ const pattern = options.pattern ?? DEFAULT_PATTERN;
28
+ const files = [];
29
+ // Get all files from the directory.
30
+ const entries = (0, fs_1.readdirSync)(options.directory);
31
+ for (const entry of entries) {
32
+ const filePath = (0, path_1.join)(options.directory, entry);
33
+ const stats = (0, fs_1.statSync)(filePath);
34
+ // Skip directories.
35
+ if (stats.isDirectory()) {
36
+ continue;
37
+ }
38
+ // Parse the filename against the pattern.
39
+ const metadata = parseFilename(entry, pattern);
40
+ // Skip files that don't match the pattern.
41
+ if (!metadata) {
42
+ continue;
43
+ }
44
+ // Apply resource type filter if specified.
45
+ if (options.resourceType &&
46
+ metadata.resourceType !== options.resourceType) {
47
+ continue;
48
+ }
49
+ files.push({
50
+ path: filePath,
51
+ resourceType: metadata.resourceType,
52
+ size: stats.size,
53
+ });
54
+ }
55
+ return files;
56
+ }
57
+ /**
58
+ * Parse a filename against a pattern to extract resource type.
59
+ *
60
+ * Pattern placeholders:
61
+ * - {ResourceType} - Required, matches the FHIR resource type.
62
+ *
63
+ * Example:
64
+ * - Pattern: "{ResourceType}.ndjson" matches "Patient.ndjson" → { resourceType: "Patient" }
65
+ *
66
+ * @param filename - The filename to parse.
67
+ * @param pattern - The pattern to match against.
68
+ * @returns Metadata if the filename matches, undefined otherwise.
69
+ */
70
+ function parseFilename(filename, pattern) {
71
+ // Convert the pattern to a regular expression.
72
+ // Replace {ResourceType} with a named capture group that matches word characters.
73
+ // FHIR resource types are PascalCase (e.g., Patient, Observation).
74
+ let regexPattern = pattern.replace("{ResourceType}", "(?<resourceType>[A-Z][A-Za-z0-9]*)");
75
+ // Escape special regex characters in the pattern (dots, etc.).
76
+ regexPattern = regexPattern.replace(/\./g, "\\.");
77
+ // Anchor the pattern to match the entire filename.
78
+ regexPattern = `^${regexPattern}$`;
79
+ const regex = new RegExp(regexPattern);
80
+ const match = regex.exec(filename);
81
+ if (!match?.groups) {
82
+ return undefined;
83
+ }
84
+ const { resourceType } = match.groups;
85
+ if (!resourceType) {
86
+ return undefined;
87
+ }
88
+ return {
89
+ resourceType,
90
+ };
91
+ }
92
+ /**
93
+ * Group discovered files by resource type.
94
+ *
95
+ * @param files - Array of discovered files.
96
+ * @returns Map of resource type to files.
97
+ */
98
+ function groupFilesByResourceType(files) {
99
+ const grouped = new Map();
100
+ for (const file of files) {
101
+ const existing = grouped.get(file.resourceType) ?? [];
102
+ existing.push(file);
103
+ grouped.set(file.resourceType, existing);
104
+ }
105
+ return grouped;
106
+ }
107
+ //# sourceMappingURL=discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/loader/discovery.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAmBH,sCAwCC;AAeD,sCAkCC;AAQD,4DAYC;AA9HD,2BAA2C;AAC3C,+BAA4B;AAG5B;;;;GAIG;AACH,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAEhD;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,OAAsB;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC;IACnD,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,oCAAoC;IACpC,MAAM,OAAO,GAAG,IAAA,gBAAW,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE/C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,IAAA,aAAQ,EAAC,QAAQ,CAAC,CAAC;QAEjC,oBAAoB;QACpB,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QAED,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE/C,2CAA2C;QAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,SAAS;QACX,CAAC;QAED,2CAA2C;QAC3C,IACE,OAAO,CAAC,YAAY;YACpB,QAAQ,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,EAC9C,CAAC;YACD,SAAS;QACX,CAAC;QAED,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,aAAa,CAC3B,QAAgB,EAChB,OAAe;IAEf,+CAA+C;IAC/C,kFAAkF;IAClF,mEAAmE;IACnE,IAAI,YAAY,GAAG,OAAO,CAAC,OAAO,CAChC,gBAAgB,EAChB,oCAAoC,CACrC,CAAC;IAEF,+DAA+D;IAC/D,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAElD,mDAAmD;IACnD,YAAY,GAAG,IAAI,YAAY,GAAG,CAAC;IAEnC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEnC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;IAEtC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,YAAY;KACb,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,wBAAwB,CACtC,KAAuB;IAEvB,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEpD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Main orchestration for NDJSON loader.
3
+ * Coordinates file discovery, table management, and loading operations.
4
+ *
5
+ * @author John Grimes
6
+ */
7
+ import type { LoaderOptions, LoaderSummary } from "./types.js";
8
+ /**
9
+ * Load NDJSON files from a directory into SQL Server.
10
+ *
11
+ * @param options - Loader options.
12
+ * @returns Promise that resolves to the loader summary.
13
+ */
14
+ export declare function loadNdjsonFiles(options: LoaderOptions): Promise<LoaderSummary>;
15
+ /**
16
+ * Export all loader functionality.
17
+ */
18
+ export * from "./types.js";
19
+ export * from "./connection.js";
20
+ export * from "./discovery.js";
21
+ export * from "./tables.js";
22
+ export * from "./stream.js";
23
+ export * from "./progress.js";
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/loader/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAEV,aAAa,EAEb,aAAa,EACd,MAAM,YAAY,CAAC;AAiNpB;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,aAAa,CAAC,CA6BxB;AAED;;GAEG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}