@uns-kit/database 2.0.46

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 (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +91 -0
  3. package/dist/client.d.ts +19 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +120 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/drivers/oracle.d.ts +4 -0
  8. package/dist/drivers/oracle.d.ts.map +1 -0
  9. package/dist/drivers/oracle.js +96 -0
  10. package/dist/drivers/oracle.js.map +1 -0
  11. package/dist/drivers/pg.d.ts +4 -0
  12. package/dist/drivers/pg.d.ts.map +1 -0
  13. package/dist/drivers/pg.js +84 -0
  14. package/dist/drivers/pg.js.map +1 -0
  15. package/dist/drivers/sqlite.d.ts +4 -0
  16. package/dist/drivers/sqlite.d.ts.map +1 -0
  17. package/dist/drivers/sqlite.js +38 -0
  18. package/dist/drivers/sqlite.js.map +1 -0
  19. package/dist/index.d.ts +7 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +7 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/params.d.ts +4 -0
  24. package/dist/params.d.ts.map +1 -0
  25. package/dist/params.js +193 -0
  26. package/dist/params.js.map +1 -0
  27. package/dist/placeholders.d.ts +168 -0
  28. package/dist/placeholders.d.ts.map +1 -0
  29. package/dist/placeholders.js +51 -0
  30. package/dist/placeholders.js.map +1 -0
  31. package/dist/schema.d.ts +2208 -0
  32. package/dist/schema.d.ts.map +1 -0
  33. package/dist/schema.js +81 -0
  34. package/dist/schema.js.map +1 -0
  35. package/dist/sql-modes.d.ts +3 -0
  36. package/dist/sql-modes.d.ts.map +1 -0
  37. package/dist/sql-modes.js +10 -0
  38. package/dist/sql-modes.js.map +1 -0
  39. package/dist/sql.d.ts +6 -0
  40. package/dist/sql.d.ts.map +1 -0
  41. package/dist/sql.js +14 -0
  42. package/dist/sql.js.map +1 -0
  43. package/dist/types.d.ts +31 -0
  44. package/dist/types.d.ts.map +1 -0
  45. package/dist/types.js +2 -0
  46. package/dist/types.js.map +1 -0
  47. package/package.json +58 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
package/dist/schema.js ADDED
@@ -0,0 +1,81 @@
1
+ import { z } from "zod";
2
+ import { hostValueSchema, secretValueSchema } from "./placeholders.js";
3
+ const positiveInt = z.number().int().positive();
4
+ const sqlDirSchema = z.string().min(1).optional();
5
+ const sslModeSchema = z.union([
6
+ z.boolean(),
7
+ z.object({
8
+ rejectUnauthorized: z.boolean().default(true),
9
+ ca: z.string().optional(),
10
+ cert: z.string().optional(),
11
+ key: z.string().optional(),
12
+ servername: z.string().optional(),
13
+ }).strict(),
14
+ ]);
15
+ export const postgresDatabaseSchema = z.object({
16
+ dialect: z.literal("pg"),
17
+ host: hostValueSchema,
18
+ port: positiveInt.default(5432),
19
+ database: z.string().min(1),
20
+ user: z.string().min(1),
21
+ password: secretValueSchema.optional(),
22
+ usePool: z.boolean().default(true),
23
+ ssl: sslModeSchema.optional(),
24
+ sqlDir: sqlDirSchema,
25
+ applicationName: z.string().min(1).optional(),
26
+ statementTimeoutMs: z.number().int().nonnegative().optional(),
27
+ connectionTimeoutMs: z.number().int().nonnegative().optional(),
28
+ idleTimeoutMs: z.number().int().nonnegative().optional(),
29
+ maxPoolSize: positiveInt.optional(),
30
+ minPoolSize: z.number().int().nonnegative().optional(),
31
+ }).strict();
32
+ export const sqliteDatabaseSchema = z.object({
33
+ dialect: z.literal("sqlite"),
34
+ filename: z.string().min(1),
35
+ sqlDir: sqlDirSchema,
36
+ readonly: z.boolean().optional(),
37
+ fileMustExist: z.boolean().optional(),
38
+ timeoutMs: z.number().int().nonnegative().optional(),
39
+ }).strict();
40
+ const oracleDatabaseBaseSchema = z.object({
41
+ dialect: z.literal("oracle"),
42
+ user: z.string().min(1),
43
+ password: secretValueSchema.optional(),
44
+ usePool: z.boolean().default(true),
45
+ connectString: z.string().min(1).optional(),
46
+ host: hostValueSchema.optional(),
47
+ port: positiveInt.default(1521),
48
+ serviceName: z.string().min(1).optional(),
49
+ sid: z.string().min(1).optional(),
50
+ sqlDir: sqlDirSchema,
51
+ poolMin: z.number().int().nonnegative().optional(),
52
+ poolMax: positiveInt.optional(),
53
+ poolIncrement: positiveInt.optional(),
54
+ stmtCacheSize: positiveInt.optional(),
55
+ }).strict();
56
+ export const oracleDatabaseSchema = oracleDatabaseBaseSchema.superRefine((value, ctx) => {
57
+ if (!value.connectString && !value.host) {
58
+ ctx.addIssue({
59
+ code: z.ZodIssueCode.custom,
60
+ message: "oracle connection requires either connectString or host",
61
+ path: ["connectString"],
62
+ });
63
+ }
64
+ if (!value.connectString && !value.serviceName && !value.sid) {
65
+ ctx.addIssue({
66
+ code: z.ZodIssueCode.custom,
67
+ message: "oracle connection requires serviceName or sid when connectString is omitted",
68
+ path: ["serviceName"],
69
+ });
70
+ }
71
+ });
72
+ export const databaseConnectionSchema = z.union([
73
+ postgresDatabaseSchema,
74
+ sqliteDatabaseSchema,
75
+ oracleDatabaseSchema,
76
+ ]);
77
+ export const databasesConfigSchema = z.record(z.string().min(1), databaseConnectionSchema);
78
+ export const databaseProjectExtrasSchema = z.object({
79
+ databases: databasesConfigSchema,
80
+ });
81
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEvE,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;AAChD,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAElD,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC;IAC5B,CAAC,CAAC,OAAO,EAAE;IACX,CAAC,CAAC,MAAM,CAAC;QACP,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QAC7C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC1B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAClC,CAAC,CAAC,MAAM,EAAE;CACZ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACxB,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACtC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,GAAG,EAAE,aAAa,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,YAAY;IACpB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7C,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAC7D,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAC9D,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACxD,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;IACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;CACvD,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC5B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,YAAY;IACpB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;CACrD,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACtC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3C,IAAI,EAAE,eAAe,CAAC,QAAQ,EAAE;IAChC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACzC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjC,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAClD,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC/B,aAAa,EAAE,WAAW,CAAC,QAAQ,EAAE;IACrC,aAAa,EAAE,WAAW,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC,KAA+C,EAAE,GAAG,EAAE,EAAE;IAChI,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACxC,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,yDAAyD;YAClE,IAAI,EAAE,CAAC,eAAe,CAAC;SACxB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7D,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,6EAA6E;YACtF,IAAI,EAAE,CAAC,aAAa,CAAC;SACtB,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC9C,sBAAsB;IACtB,oBAAoB;IACpB,oBAAoB;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAC3C,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EACjB,wBAAwB,CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,SAAS,EAAE,qBAAqB;CACjC,CAAC,CAAC","sourcesContent":["import { z } from \"zod\";\nimport { hostValueSchema, secretValueSchema } from \"./placeholders.js\";\n\nconst positiveInt = z.number().int().positive();\nconst sqlDirSchema = z.string().min(1).optional();\n\nconst sslModeSchema = z.union([\n z.boolean(),\n z.object({\n rejectUnauthorized: z.boolean().default(true),\n ca: z.string().optional(),\n cert: z.string().optional(),\n key: z.string().optional(),\n servername: z.string().optional(),\n }).strict(),\n]);\n\nexport const postgresDatabaseSchema = z.object({\n dialect: z.literal(\"pg\"),\n host: hostValueSchema,\n port: positiveInt.default(5432),\n database: z.string().min(1),\n user: z.string().min(1),\n password: secretValueSchema.optional(),\n usePool: z.boolean().default(true),\n ssl: sslModeSchema.optional(),\n sqlDir: sqlDirSchema,\n applicationName: z.string().min(1).optional(),\n statementTimeoutMs: z.number().int().nonnegative().optional(),\n connectionTimeoutMs: z.number().int().nonnegative().optional(),\n idleTimeoutMs: z.number().int().nonnegative().optional(),\n maxPoolSize: positiveInt.optional(),\n minPoolSize: z.number().int().nonnegative().optional(),\n}).strict();\n\nexport const sqliteDatabaseSchema = z.object({\n dialect: z.literal(\"sqlite\"),\n filename: z.string().min(1),\n sqlDir: sqlDirSchema,\n readonly: z.boolean().optional(),\n fileMustExist: z.boolean().optional(),\n timeoutMs: z.number().int().nonnegative().optional(),\n}).strict();\n\nconst oracleDatabaseBaseSchema = z.object({\n dialect: z.literal(\"oracle\"),\n user: z.string().min(1),\n password: secretValueSchema.optional(),\n usePool: z.boolean().default(true),\n connectString: z.string().min(1).optional(),\n host: hostValueSchema.optional(),\n port: positiveInt.default(1521),\n serviceName: z.string().min(1).optional(),\n sid: z.string().min(1).optional(),\n sqlDir: sqlDirSchema,\n poolMin: z.number().int().nonnegative().optional(),\n poolMax: positiveInt.optional(),\n poolIncrement: positiveInt.optional(),\n stmtCacheSize: positiveInt.optional(),\n}).strict();\n\nexport const oracleDatabaseSchema = oracleDatabaseBaseSchema.superRefine((value: z.infer<typeof oracleDatabaseBaseSchema>, ctx) => {\n if (!value.connectString && !value.host) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"oracle connection requires either connectString or host\",\n path: [\"connectString\"],\n });\n }\n\n if (!value.connectString && !value.serviceName && !value.sid) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"oracle connection requires serviceName or sid when connectString is omitted\",\n path: [\"serviceName\"],\n });\n }\n});\n\nexport const databaseConnectionSchema = z.union([\n postgresDatabaseSchema,\n sqliteDatabaseSchema,\n oracleDatabaseSchema,\n]);\n\nexport const databasesConfigSchema = z.record(\n z.string().min(1),\n databaseConnectionSchema\n);\n\nexport const databaseProjectExtrasSchema = z.object({\n databases: databasesConfigSchema,\n});\n\nexport type PostgresDatabaseConfig = z.infer<typeof postgresDatabaseSchema>;\nexport type SqliteDatabaseConfig = z.infer<typeof sqliteDatabaseSchema>;\nexport type OracleDatabaseConfig = z.infer<typeof oracleDatabaseSchema>;\nexport type DatabaseConnectionConfig = z.infer<typeof databaseConnectionSchema>;\nexport type DatabasesConfig = z.infer<typeof databasesConfigSchema>;\nexport type DatabaseProjectExtras = z.infer<typeof databaseProjectExtrasSchema>;\n"]}
@@ -0,0 +1,3 @@
1
+ import type { SqlParams } from "./types.js";
2
+ export declare function mapSqlPlusParamsToOracleBinds(sqlText: string, params: SqlParams): string;
3
+ //# sourceMappingURL=sql-modes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-modes.d.ts","sourceRoot":"","sources":["../src/sql-modes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,CAQxF"}
@@ -0,0 +1,10 @@
1
+ export function mapSqlPlusParamsToOracleBinds(sqlText, params) {
2
+ return sqlText
3
+ .replace(/&([a-zA-Z_][a-zA-Z0-9_]*)/g, (match, paramName) => {
4
+ return Object.prototype.hasOwnProperty.call(params, paramName) ? `:${paramName}` : match;
5
+ })
6
+ .replace(/':([a-zA-Z_][a-zA-Z0-9_]*)'/g, (match, paramName) => {
7
+ return Object.prototype.hasOwnProperty.call(params, paramName) ? `:${paramName}` : match;
8
+ });
9
+ }
10
+ //# sourceMappingURL=sql-modes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-modes.js","sourceRoot":"","sources":["../src/sql-modes.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,6BAA6B,CAAC,OAAe,EAAE,MAAiB;IAC9E,OAAO,OAAO;SACX,OAAO,CAAC,4BAA4B,EAAE,CAAC,KAAK,EAAE,SAAiB,EAAE,EAAE;QAClE,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3F,CAAC,CAAC;SACD,OAAO,CAAC,8BAA8B,EAAE,CAAC,KAAK,EAAE,SAAiB,EAAE,EAAE;QACpE,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3F,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["import type { SqlParams } from \"./types.js\";\n\nexport function mapSqlPlusParamsToOracleBinds(sqlText: string, params: SqlParams): string {\n return sqlText\n .replace(/&([a-zA-Z_][a-zA-Z0-9_]*)/g, (match, paramName: string) => {\n return Object.prototype.hasOwnProperty.call(params, paramName) ? `:${paramName}` : match;\n })\n .replace(/':([a-zA-Z_][a-zA-Z0-9_]*)'/g, (match, paramName: string) => {\n return Object.prototype.hasOwnProperty.call(params, paramName) ? `:${paramName}` : match;\n });\n}\n"]}
package/dist/sql.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export interface LoadSqlOptions {
2
+ baseDir?: string;
3
+ }
4
+ export declare function loadSqlFile(filePath: string, options?: LoadSqlOptions): Promise<string>;
5
+ export declare function resolveSqlFilePath(filePath: string, baseDir?: string): string;
6
+ //# sourceMappingURL=sql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAMjG;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAI7E"}
package/dist/sql.js ADDED
@@ -0,0 +1,14 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ export async function loadSqlFile(filePath, options = {}) {
4
+ const resolvedPath = path.isAbsolute(filePath)
5
+ ? filePath
6
+ : path.resolve(options.baseDir ?? process.cwd(), filePath);
7
+ return fs.readFile(resolvedPath, "utf8");
8
+ }
9
+ export function resolveSqlFilePath(filePath, baseDir) {
10
+ return path.isAbsolute(filePath)
11
+ ? filePath
12
+ : path.resolve(baseDir ?? process.cwd(), filePath);
13
+ }
14
+ //# sourceMappingURL=sql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql.js","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAM7B,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,UAA0B,EAAE;IAC9E,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC5C,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE7D,OAAO,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,OAAgB;IACnE,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC9B,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;AACvD,CAAC","sourcesContent":["import fs from \"node:fs/promises\";\nimport path from \"node:path\";\n\nexport interface LoadSqlOptions {\n baseDir?: string;\n}\n\nexport async function loadSqlFile(filePath: string, options: LoadSqlOptions = {}): Promise<string> {\n const resolvedPath = path.isAbsolute(filePath)\n ? filePath\n : path.resolve(options.baseDir ?? process.cwd(), filePath);\n\n return fs.readFile(resolvedPath, \"utf8\");\n}\n\nexport function resolveSqlFilePath(filePath: string, baseDir?: string): string {\n return path.isAbsolute(filePath)\n ? filePath\n : path.resolve(baseDir ?? process.cwd(), filePath);\n}\n"]}
@@ -0,0 +1,31 @@
1
+ export type DatabaseDialect = "pg" | "sqlite" | "oracle";
2
+ export type SqlParams = Record<string, unknown>;
3
+ export interface CompiledSqlStatement {
4
+ text: string;
5
+ values: unknown[] | Record<string, unknown>;
6
+ parameterOrder: string[];
7
+ }
8
+ export interface DatabaseQueryResult<T = Record<string, unknown>> {
9
+ rows: T[];
10
+ rowCount: number;
11
+ }
12
+ export interface DatabaseExecuteResult {
13
+ rowCount: number;
14
+ }
15
+ export interface DatabaseClient {
16
+ readonly dialect: DatabaseDialect;
17
+ readonly name?: string;
18
+ readonly sqlDir?: string;
19
+ query<T = Record<string, unknown>>(sqlText: string, params?: SqlParams): Promise<DatabaseQueryResult<T>>;
20
+ execute(sqlText: string, params?: SqlParams): Promise<DatabaseExecuteResult>;
21
+ queryFile<T = Record<string, unknown>>(filePath: string, params?: SqlParams): Promise<DatabaseQueryResult<T>>;
22
+ executeFile(filePath: string, params?: SqlParams): Promise<DatabaseExecuteResult>;
23
+ close(): Promise<void>;
24
+ }
25
+ export interface DatabaseAdapter {
26
+ readonly dialect: DatabaseDialect;
27
+ query<T = Record<string, unknown>>(statement: CompiledSqlStatement): Promise<DatabaseQueryResult<T>>;
28
+ execute(statement: CompiledSqlStatement): Promise<DatabaseExecuteResult>;
29
+ close(): Promise<void>;
30
+ }
31
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEhD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC9D,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;IACzG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC7E,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9G,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,OAAO,CAAC,SAAS,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACzE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["export type DatabaseDialect = \"pg\" | \"sqlite\" | \"oracle\";\n\nexport type SqlParams = Record<string, unknown>;\n\nexport interface CompiledSqlStatement {\n text: string;\n values: unknown[] | Record<string, unknown>;\n parameterOrder: string[];\n}\n\nexport interface DatabaseQueryResult<T = Record<string, unknown>> {\n rows: T[];\n rowCount: number;\n}\n\nexport interface DatabaseExecuteResult {\n rowCount: number;\n}\n\nexport interface DatabaseClient {\n readonly dialect: DatabaseDialect;\n readonly name?: string;\n readonly sqlDir?: string;\n query<T = Record<string, unknown>>(sqlText: string, params?: SqlParams): Promise<DatabaseQueryResult<T>>;\n execute(sqlText: string, params?: SqlParams): Promise<DatabaseExecuteResult>;\n queryFile<T = Record<string, unknown>>(filePath: string, params?: SqlParams): Promise<DatabaseQueryResult<T>>;\n executeFile(filePath: string, params?: SqlParams): Promise<DatabaseExecuteResult>;\n close(): Promise<void>;\n}\n\nexport interface DatabaseAdapter {\n readonly dialect: DatabaseDialect;\n query<T = Record<string, unknown>>(statement: CompiledSqlStatement): Promise<DatabaseQueryResult<T>>;\n execute(statement: CompiledSqlStatement): Promise<DatabaseExecuteResult>;\n close(): Promise<void>;\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@uns-kit/database",
3
+ "version": "2.0.46",
4
+ "description": "Database helpers for UNS services with config-driven connections, SQL file loading, and portable named-parameter compilation.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "author": "Kristjan Cuznar <kristjancuznar0@gmail.com>",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/uns-datahub/uns-kit.git",
11
+ "directory": "packages/uns-database"
12
+ },
13
+ "keywords": [
14
+ "uns",
15
+ "database",
16
+ "postgres",
17
+ "sqlite",
18
+ "oracle",
19
+ "typescript"
20
+ ],
21
+ "files": [
22
+ "dist"
23
+ ],
24
+ "exports": {
25
+ ".": {
26
+ "types": "./dist/index.d.ts",
27
+ "import": "./dist/index.js"
28
+ },
29
+ "./*": "./dist/*"
30
+ },
31
+ "main": "dist/index.js",
32
+ "types": "dist/index.d.ts",
33
+ "dependencies": {
34
+ "zod": "^3",
35
+ "@uns-kit/core": "2.0.46"
36
+ },
37
+ "peerDependencies": {
38
+ "better-sqlite3": "^11.0.0",
39
+ "oracledb": "^6.0.0",
40
+ "pg": "^8.0.0"
41
+ },
42
+ "peerDependenciesMeta": {
43
+ "better-sqlite3": {
44
+ "optional": true
45
+ },
46
+ "oracledb": {
47
+ "optional": true
48
+ },
49
+ "pg": {
50
+ "optional": true
51
+ }
52
+ },
53
+ "scripts": {
54
+ "build": "tsc -p tsconfig.build.json",
55
+ "typecheck": "tsc -p tsconfig.json --noEmit",
56
+ "postversion": "node ../../scripts/update-cli-package-version.cjs"
57
+ }
58
+ }