mythik-server 0.1.2 → 0.1.3

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 (39) hide show
  1. package/README.md +45 -27
  2. package/dist/audit.js +1 -1
  3. package/dist/audit.js.map +1 -1
  4. package/dist/auth/db-auth-provider.d.ts +2 -2
  5. package/dist/auth/db-auth-provider.d.ts.map +1 -1
  6. package/dist/auth/db-auth-provider.js +17 -15
  7. package/dist/auth/db-auth-provider.js.map +1 -1
  8. package/dist/auth/scope-filter.d.ts +7 -1
  9. package/dist/auth/scope-filter.d.ts.map +1 -1
  10. package/dist/auth/scope-filter.js +24 -4
  11. package/dist/auth/scope-filter.js.map +1 -1
  12. package/dist/catalog-builder.d.ts +2 -1
  13. package/dist/catalog-builder.d.ts.map +1 -1
  14. package/dist/catalog-builder.js +24 -13
  15. package/dist/catalog-builder.js.map +1 -1
  16. package/dist/connection.d.ts +4 -2
  17. package/dist/connection.d.ts.map +1 -1
  18. package/dist/connection.js +74 -7
  19. package/dist/connection.js.map +1 -1
  20. package/dist/crud-builder.d.ts +8 -3
  21. package/dist/crud-builder.d.ts.map +1 -1
  22. package/dist/crud-builder.js +40 -16
  23. package/dist/crud-builder.js.map +1 -1
  24. package/dist/middleware/error-handler.js +1 -1
  25. package/dist/middleware/error-handler.js.map +1 -1
  26. package/dist/query-engine.d.ts +12 -4
  27. package/dist/query-engine.d.ts.map +1 -1
  28. package/dist/query-engine.js +12 -17
  29. package/dist/query-engine.js.map +1 -1
  30. package/dist/server.d.ts.map +1 -1
  31. package/dist/server.js +111 -159
  32. package/dist/server.js.map +1 -1
  33. package/dist/spec-serving.d.ts +7 -3
  34. package/dist/spec-serving.d.ts.map +1 -1
  35. package/dist/spec-serving.js +36 -12
  36. package/dist/spec-serving.js.map +1 -1
  37. package/dist/types.d.ts +34 -11
  38. package/dist/types.d.ts.map +1 -1
  39. package/package.json +2 -3
package/README.md CHANGED
@@ -50,13 +50,18 @@ below for what it actually checks.
50
50
 
51
51
  ## What you get
52
52
 
53
- - **`createServer({ spec, database })`** — main bootstrap. Reads an
54
- ApiSpec, opens the database connection, registers all declared
55
- endpoints, and exposes a `start(port)` method.
56
-
57
- - **Endpoint patterns** — your ApiSpec declares each endpoint as one
58
- of four shapes; the server wires the route, validates inputs,
59
- enforces auth, and applies RLS automatically:
53
+ - **`createServer({ spec, database })`** — main bootstrap. Reads an
54
+ ApiSpec, opens the database connection, registers all declared
55
+ endpoints, and exposes a `start(port)` method.
56
+
57
+ - **Dialect-aware SQL runtime** — generated CRUD, catalogs,
58
+ pagination, auth provider queries, and scope filters compile through
59
+ the selected database driver. Supported dialects are SQL Server,
60
+ PostgreSQL, MySQL, and SQLite.
61
+
62
+ - **Endpoint patterns** — your ApiSpec declares each endpoint as one
63
+ of four shapes; the server wires the route, validates inputs,
64
+ enforces auth, and applies RLS automatically:
60
65
  - `query` — read with parameters
61
66
  - `handler` — custom business logic with an escape hatch
62
67
  - `crud` — create / read / update / delete a table row
@@ -79,23 +84,36 @@ below for what it actually checks.
79
84
  ```ts
80
85
  import { createServer } from 'mythik-server';
81
86
 
82
- const server = createServer({
83
- spec: './api-spec.json',
84
- database: {
85
- server: process.env.DB_SERVER!,
86
- database: process.env.DB_NAME!,
87
- user: process.env.DB_USER!,
88
- password: process.env.DB_PASSWORD!,
89
- trustServerCertificate: true,
90
- },
91
- });
92
-
93
- await server.start(3010);
94
- ```
95
-
96
- `./api-spec.json` is a Mythik ApiSpec describing endpoints, auth
97
- policy, catalogs, and CRUD shape. See `ai-context.md` (bundled in the
98
- `mythik` package) for the ApiSpec schema and patterns.
87
+ const server = createServer({
88
+ spec: './api-spec.json',
89
+ database: {
90
+ type: 'postgres',
91
+ connectionString: process.env.DATABASE_URL!,
92
+ },
93
+ });
94
+
95
+ await server.start(3010);
96
+ ```
97
+
98
+ `./api-spec.json` is a Mythik ApiSpec describing endpoints, auth
99
+ policy, catalogs, and CRUD shape. See `ai-context.md` (bundled in the
100
+ `mythik` package) for the ApiSpec schema and patterns.
101
+
102
+ For local demos and tests, SQLite is a one-file option:
103
+
104
+ ```ts
105
+ const server = createServer({
106
+ spec: './api-spec.json',
107
+ database: { type: 'sqlite', filename: './mythik.db' },
108
+ });
109
+ ```
110
+
111
+ Set `spec.dialect` in the ApiSpec to match the server database when
112
+ Mythik should generate CRUD/catalog/pagination/scope SQL for that
113
+ dialect. Custom SQL remains dialect-native; Mythik compiles named
114
+ params (`@name`) but does not translate a SQL Server query into
115
+ PostgreSQL/MySQL/SQLite SQL at runtime. MySQL generated upsert SQL
116
+ targets MySQL 8.0.19+.
99
117
 
100
118
  ## ApiSpec philosophy
101
119
 
@@ -160,9 +178,9 @@ to detect; in Mythik both `roleAccess` (frontend) and `policies`
160
178
 
161
179
  ## Status
162
180
 
163
- `v0.1.2` public release. Use with `mythik contract` to cross-check
164
- frontend specs against backend endpoints before deployment. APIs are
165
- documented for real-world feedback as the framework evolves.
181
+ Public release line. Use with `mythik contract` to cross-check
182
+ frontend specs against backend endpoints before deployment. APIs are
183
+ documented for real-world feedback as the framework evolves.
166
184
 
167
185
  ## License
168
186
 
package/dist/audit.js CHANGED
@@ -19,7 +19,7 @@ function getTimestamp(timezone) {
19
19
  });
20
20
  const parts = formatter.formatToParts(new Date());
21
21
  const get = (type) => parts.find(p => p.type === type)?.value ?? '0';
22
- // Use Date.UTC so mssql sends the value as-is to SQL Server (no local timezone conversion)
22
+ // Use Date.UTC so SQL Server receives the value as-is (no local timezone conversion)
23
23
  return new Date(Date.UTC(parseInt(get('year')), parseInt(get('month')) - 1, parseInt(get('day')), parseInt(get('hour')), parseInt(get('minute')), parseInt(get('second'))));
24
24
  }
25
25
  /**
package/dist/audit.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,SAAS,YAAY,CAAC,QAAiB;IACrC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,IAAI,EAAE,CAAC;IAEjC,gEAAgE;IAChE,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QACjD,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,CAAC,IAAkC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC;IAEnG,2FAA2F;IAC3F,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CACtB,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EACrB,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAC1B,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EACpB,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EACrB,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EACvB,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CACxB,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAA+B,EAC/B,KAAkB,EAClB,QAAuB,EACvB,SAA8B;IAE9B,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEzC,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,SAAS,IAAI,QAAQ;YAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;QACpE,IAAI,KAAK,CAAC,SAAS;YAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;IACrD,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,IAAI,QAAQ;QAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;IACpE,IAAI,KAAK,CAAC,SAAS;QAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,SAAS,YAAY,CAAC,QAAiB;IACrC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,IAAI,EAAE,CAAC;IAEjC,gEAAgE;IAChE,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QACjD,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,CAAC,IAAkC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC;IAEnG,qFAAqF;IACrF,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CACtB,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EACrB,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAC1B,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EACpB,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EACrB,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EACvB,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CACxB,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAA+B,EAC/B,KAAkB,EAClB,QAAuB,EACvB,SAA8B;IAE9B,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEzC,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,SAAS,IAAI,QAAQ;YAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;QACpE,IAAI,KAAK,CAAC,SAAS;YAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;IACrD,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,IAAI,QAAQ;QAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;IACpE,IAAI,KAAK,CAAC,SAAS;QAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;AACrD,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { ConnectionPool } from 'mssql';
1
+ import type { SqlDriver } from 'mythik/server';
2
2
  import type { ProviderConfig, JwtConfig, LoginResponse } from './types.js';
3
3
  import { type RefreshStore } from './refresh-store.js';
4
4
  export interface DbAuthProvider {
@@ -6,5 +6,5 @@ export interface DbAuthProvider {
6
6
  refresh(refreshToken: string): Promise<LoginResponse>;
7
7
  getRefreshStore(): RefreshStore;
8
8
  }
9
- export declare function createDbAuthProvider(config: ProviderConfig, jwtConfig: JwtConfig, pool: ConnectionPool): DbAuthProvider;
9
+ export declare function createDbAuthProvider(config: ProviderConfig, jwtConfig: JwtConfig, db: SqlDriver): DbAuthProvider;
10
10
  //# sourceMappingURL=db-auth-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"db-auth-provider.d.ts","sourceRoot":"","sources":["../../src/auth/db-auth-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAqB,MAAM,YAAY,CAAC;AAG9F,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE3E,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAClE,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACtD,eAAe,IAAI,YAAY,CAAC;CACjC;AAYD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,cAAc,GACnB,cAAc,CAiIhB"}
1
+ {"version":3,"file":"db-auth-provider.d.ts","sourceRoot":"","sources":["../../src/auth/db-auth-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAqB,MAAM,YAAY,CAAC;AAG9F,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAG3E,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAClE,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACtD,eAAe,IAAI,YAAY,CAAC;CACjC;AAYD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,SAAS,GACZ,cAAc,CA6HhB"}
@@ -1,6 +1,7 @@
1
1
  import { createJwtStrategy } from './jwt-strategy.js';
2
2
  import { getPasswordVerifier } from './password-verifier.js';
3
3
  import { createRefreshStore } from './refresh-store.js';
4
+ import { assertValidIdentifier } from '../validation/identifier-guard.js';
4
5
  /** Case-insensitive field lookup — SQL Server column casing varies by driver/config */
5
6
  function getField(row, fieldName) {
6
7
  if (fieldName in row)
@@ -12,38 +13,34 @@ function getField(row, fieldName) {
12
13
  }
13
14
  return undefined;
14
15
  }
15
- export function createDbAuthProvider(config, jwtConfig, pool) {
16
+ export function createDbAuthProvider(config, jwtConfig, db) {
16
17
  const jwtStrategy = createJwtStrategy(jwtConfig);
17
18
  const passwordVerifier = getPasswordVerifier(config.passwordHash);
18
19
  const refreshStore = createRefreshStore(jwtConfig.refreshExpiresIn ?? 10080);
19
20
  const expiresInSeconds = (jwtConfig.expiresIn ?? 60) * 60;
20
21
  const claimsMapping = jwtConfig.claims ?? {};
21
22
  async function queryList(sql, username) {
22
- const req = pool.request();
23
- req.input('username', username);
24
- const result = await req.query(sql);
25
- return result.recordset.map((r) => {
23
+ const rows = await db.query(sql, { username });
24
+ return rows.map((r) => {
26
25
  const keys = Object.keys(r);
27
26
  return r.val ?? r[keys[0]];
28
27
  });
29
28
  }
30
29
  async function queryScalar(sql, username) {
31
- const req = pool.request();
32
- req.input('username', username);
33
- const result = await req.query(sql);
34
- if (!result.recordset[0])
30
+ const rows = await db.query(sql, { username });
31
+ if (!rows[0])
35
32
  return null;
36
- const row = result.recordset[0];
33
+ const row = rows[0];
37
34
  const keys = Object.keys(row);
38
35
  return row.val ?? row[keys[0]] ?? null;
39
36
  }
40
37
  async function lookupUser(username) {
41
- const req = pool.request();
42
- req.input('username', username);
38
+ assertValidIdentifier(config.usersTable, 'auth.provider.usersTable');
39
+ assertValidIdentifier(config.usernameColumn, 'auth.provider.usernameColumn');
43
40
  const condition = config.activeCondition ? ` AND ${config.activeCondition}` : '';
44
- const sql = `SELECT * FROM ${config.usersTable} WHERE ${config.usernameColumn} = @username${condition}`;
45
- const result = await req.query(sql);
46
- return result.recordset[0] ?? null;
41
+ const sql = `SELECT * FROM ${quoteIdentifierPath(db, config.usersTable)} WHERE ${quoteIdentifierPath(db, config.usernameColumn)} = @username${condition}`;
42
+ const rows = await db.query(sql, { username });
43
+ return rows[0] ?? null;
47
44
  }
48
45
  async function buildUserInfo(username, userRow) {
49
46
  const promises = [
@@ -127,4 +124,9 @@ export function createDbAuthProvider(config, jwtConfig, pool) {
127
124
  }
128
125
  return { login, refresh, getRefreshStore };
129
126
  }
127
+ function quoteIdentifierPath(driver, identifier) {
128
+ return identifier.includes('.')
129
+ ? driver.quoteQualified(...identifier.split('.'))
130
+ : driver.quoteIdent(identifier);
131
+ }
130
132
  //# sourceMappingURL=db-auth-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"db-auth-provider.js","sourceRoot":"","sources":["../../src/auth/db-auth-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db-auth-provider.js","sourceRoot":"","sources":["../../src/auth/db-auth-provider.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,18 @@
1
1
  import type { ScopeFilterConfig } from './types.js';
2
+ import type { SqlDriver } from 'mythik/server';
2
3
  /** @internal Alias used when Mythik wraps a source query before applying scope filters. */
3
4
  export declare const SCOPE_ALIAS = "_scoped";
4
5
  export interface ScopeClause {
5
6
  sql: string;
6
7
  params: Record<string, unknown>;
7
8
  }
9
+ export interface ScopeWhereOptions {
10
+ columnOverride?: string;
11
+ driver?: SqlDriver;
12
+ qualifier?: string | null;
13
+ }
8
14
  export declare function resolveActiveScope(headerValue: string | undefined, type: 'int' | 'string' | undefined): unknown | null;
9
- export declare function buildScopeWhereClause(config: ScopeFilterConfig, userScope: unknown[], activeScope: unknown | undefined, userRoles: string[], columnOverride?: string): ScopeClause | null;
15
+ export declare function buildScopeWhereClause(config: ScopeFilterConfig, userScope: unknown[], activeScope: unknown | undefined, userRoles: string[], columnOverrideOrOptions?: string | ScopeWhereOptions): ScopeClause | null;
10
16
  export declare function validateScopeForInsert(config: ScopeFilterConfig, body: Record<string, unknown>, userScope: unknown[], userRoles: string[]): boolean;
11
17
  export declare function wrapQueryWithScopeFilter(originalSql: string, scopeClause: ScopeClause): string;
12
18
  //# sourceMappingURL=scope-filter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scope-filter.d.ts","sourceRoot":"","sources":["../../src/auth/scope-filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGpD,2FAA2F;AAC3F,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,GACjC,OAAO,GAAG,IAAI,CAKhB;AAMD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,OAAO,EAAE,EACpB,WAAW,EAAE,OAAO,GAAG,SAAS,EAChC,SAAS,EAAE,MAAM,EAAE,EACnB,cAAc,CAAC,EAAE,MAAM,GACtB,WAAW,GAAG,IAAI,CA4BpB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,EAAE,OAAO,EAAE,EACpB,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAST;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,GACvB,MAAM,CAER"}
1
+ {"version":3,"file":"scope-filter.d.ts","sourceRoot":"","sources":["../../src/auth/scope-filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG/C,2FAA2F;AAC3F,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,GACjC,OAAO,GAAG,IAAI,CAKhB;AAMD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,OAAO,EAAE,EACpB,WAAW,EAAE,OAAO,GAAG,SAAS,EAChC,SAAS,EAAE,MAAM,EAAE,EACnB,uBAAuB,CAAC,EAAE,MAAM,GAAG,iBAAiB,GACnD,WAAW,GAAG,IAAI,CA8BpB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,EAAE,OAAO,EAAE,EACpB,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAST;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,GACvB,MAAM,CAER"}
@@ -12,16 +12,18 @@ export function resolveActiveScope(headerValue, type) {
12
12
  function hasBypassRole(bypassRoles, userRoles) {
13
13
  return bypassRoles.some(role => userRoles.includes(role));
14
14
  }
15
- export function buildScopeWhereClause(config, userScope, activeScope, userRoles, columnOverride) {
15
+ export function buildScopeWhereClause(config, userScope, activeScope, userRoles, columnOverrideOrOptions) {
16
16
  const bypassRoles = config.bypassRoles ?? [];
17
17
  if (hasBypassRole(bypassRoles, userRoles))
18
18
  return null;
19
- const column = columnOverride ?? config.column;
19
+ const options = normalizeScopeWhereOptions(columnOverrideOrOptions);
20
+ const column = options.columnOverride ?? config.column;
20
21
  assertValidIdentifier(column, 'scopeFilter.column');
21
22
  const mode = config.mode ?? 'all';
23
+ const columnSql = scopeColumnSql(column, options);
22
24
  if (mode === 'select') {
23
25
  return {
24
- sql: `${SCOPE_ALIAS}.${column} = @_activeScope`,
26
+ sql: `${columnSql} = @_activeScope`,
25
27
  params: { _activeScope: activeScope },
26
28
  };
27
29
  }
@@ -33,7 +35,7 @@ export function buildScopeWhereClause(config, userScope, activeScope, userRoles,
33
35
  const params = {};
34
36
  userScope.forEach((val, i) => { params[`_scope${i}`] = val; });
35
37
  return {
36
- sql: `${SCOPE_ALIAS}.${column} IN (${paramNames.join(', ')})`,
38
+ sql: `${columnSql} IN (${paramNames.join(', ')})`,
37
39
  params,
38
40
  };
39
41
  }
@@ -50,4 +52,22 @@ export function validateScopeForInsert(config, body, userScope, userRoles) {
50
52
  export function wrapQueryWithScopeFilter(originalSql, scopeClause) {
51
53
  return `SELECT * FROM (\n${originalSql}\n) AS ${SCOPE_ALIAS}\nWHERE ${scopeClause.sql}`;
52
54
  }
55
+ function normalizeScopeWhereOptions(value) {
56
+ if (typeof value === 'string')
57
+ return { columnOverride: value };
58
+ return value ?? {};
59
+ }
60
+ function scopeColumnSql(column, options) {
61
+ const columnSql = options.driver ? quoteIdentifierPath(options.driver, column) : column;
62
+ const qualifier = options.qualifier === undefined ? SCOPE_ALIAS : options.qualifier;
63
+ if (qualifier === null || qualifier === '')
64
+ return columnSql;
65
+ assertValidIdentifier(qualifier, 'scopeFilter.qualifier');
66
+ return `${qualifier}.${columnSql}`;
67
+ }
68
+ function quoteIdentifierPath(driver, identifier) {
69
+ return identifier.includes('.')
70
+ ? driver.quoteQualified(...identifier.split('.'))
71
+ : driver.quoteIdent(identifier);
72
+ }
53
73
  //# sourceMappingURL=scope-filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scope-filter.js","sourceRoot":"","sources":["../../src/auth/scope-filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope-filter.js","sourceRoot":"","sources":["../../src/auth/scope-filter.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import type { CatalogConfig } from './types.js';
2
- export declare function buildCatalogQuery(config: CatalogConfig): string | null;
2
+ import type { SqlDriver } from 'mythik/server';
3
+ export declare function buildCatalogQuery(driver: SqlDriver, config: CatalogConfig): string | null;
3
4
  //# sourceMappingURL=catalog-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-builder.d.ts","sourceRoot":"","sources":["../src/catalog-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAiCtE"}
1
+ {"version":3,"file":"catalog-builder.d.ts","sourceRoot":"","sources":["../src/catalog-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAoCzF"}
@@ -1,5 +1,5 @@
1
1
  import { assertValidIdentifier } from './validation/identifier-guard.js';
2
- export function buildCatalogQuery(config) {
2
+ export function buildCatalogQuery(driver, config) {
3
3
  if (config.static)
4
4
  return null;
5
5
  if (!config.from)
@@ -8,28 +8,39 @@ export function buildCatalogQuery(config) {
8
8
  if (config.distinct) {
9
9
  assertValidIdentifier(config.distinct, 'catalog.distinct');
10
10
  const orderByClause = config.orderBy
11
- ? `ORDER BY ${bracketOrderBy(config.orderBy)}`
12
- : `ORDER BY [${config.distinct}] ASC`;
13
- return `SELECT DISTINCT [${config.distinct}] AS [value], [${config.distinct}] AS [label] FROM [${config.from}] ${orderByClause}`;
11
+ ? `ORDER BY ${quoteOrderBy(driver, config.orderBy)}`
12
+ : `ORDER BY ${quoteIdentifierPath(driver, config.distinct)} ASC`;
13
+ return `SELECT DISTINCT ${quoteIdentifierPath(driver, config.distinct)} AS ${driver.quoteIdent('value')}, ${quoteIdentifierPath(driver, config.distinct)} AS ${driver.quoteIdent('label')} FROM ${quoteIdentifierPath(driver, config.from)} ${orderByClause}`;
14
14
  }
15
15
  assertValidIdentifier(config.value, 'catalog.value');
16
16
  assertValidIdentifier(config.label, 'catalog.label');
17
- const selectParts = [`[${config.value}] AS [value]`, `[${config.label}] AS [label]`];
17
+ const selectParts = [
18
+ `${quoteIdentifierPath(driver, config.value)} AS ${driver.quoteIdent('value')}`,
19
+ `${quoteIdentifierPath(driver, config.label)} AS ${driver.quoteIdent('label')}`,
20
+ ];
18
21
  if (config.extra) {
19
22
  for (const field of config.extra) {
20
23
  assertValidIdentifier(field, 'catalog.extra');
21
- selectParts.push(`[${field}]`);
24
+ selectParts.push(quoteIdentifierPath(driver, field));
22
25
  }
23
26
  }
24
27
  const whereClause = config.where ? ` WHERE ${config.where}` : '';
25
28
  const orderByClause = config.orderBy
26
- ? `ORDER BY ${bracketOrderBy(config.orderBy)}`
27
- : `ORDER BY [${config.label}] ASC`;
28
- return `SELECT ${selectParts.join(', ')} FROM [${config.from}]${whereClause} ${orderByClause}`;
29
+ ? `ORDER BY ${quoteOrderBy(driver, config.orderBy)}`
30
+ : `ORDER BY ${quoteIdentifierPath(driver, config.label)} ASC`;
31
+ return `SELECT ${selectParts.join(', ')} FROM ${quoteIdentifierPath(driver, config.from)}${whereClause} ${orderByClause}`;
29
32
  }
30
- function bracketOrderBy(orderBy) {
31
- return orderBy.replace(/^(\w+)(\s+(?:ASC|DESC))?$/i, (_match, col, dir) => {
32
- return `[${col}]${dir ?? ''}`;
33
- });
33
+ function quoteIdentifierPath(driver, identifier) {
34
+ return identifier.includes('.')
35
+ ? driver.quoteQualified(...identifier.split('.'))
36
+ : driver.quoteIdent(identifier);
37
+ }
38
+ function quoteOrderBy(driver, orderBy) {
39
+ const match = /^([a-zA-Z_][a-zA-Z0-9_.]*)(\s+(?:ASC|DESC))?$/i.exec(orderBy.trim());
40
+ if (!match)
41
+ return orderBy;
42
+ const [, column, direction] = match;
43
+ assertValidIdentifier(column, 'catalog.orderBy');
44
+ return `${quoteIdentifierPath(driver, column)}${direction ?? ''}`;
34
45
  }
35
46
  //# sourceMappingURL=catalog-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-builder.js","sourceRoot":"","sources":["../src/catalog-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,MAAM,UAAU,iBAAiB,CAAC,MAAqB;IACrD,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAE/B,IAAI,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAE9B,qBAAqB,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAEnD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAC3D,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO;YAClC,CAAC,CAAC,YAAY,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YAC9C,CAAC,CAAC,aAAa,MAAM,CAAC,QAAQ,OAAO,CAAC;QACxC,OAAO,oBAAoB,MAAM,CAAC,QAAQ,kBAAkB,MAAM,CAAC,QAAQ,sBAAsB,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;IACnI,CAAC;IAED,qBAAqB,CAAC,MAAM,CAAC,KAAM,EAAE,eAAe,CAAC,CAAC;IACtD,qBAAqB,CAAC,MAAM,CAAC,KAAM,EAAE,eAAe,CAAC,CAAC;IAEtD,MAAM,WAAW,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,cAAc,EAAE,IAAI,MAAM,CAAC,KAAK,cAAc,CAAC,CAAC;IAErF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjC,qBAAqB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;YAC9C,WAAW,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO;QAClC,CAAC,CAAC,YAAY,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QAC9C,CAAC,CAAC,aAAa,MAAM,CAAC,KAAK,OAAO,CAAC;IAErC,OAAO,UAAU,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,IAAI,IAAI,WAAW,IAAI,aAAa,EAAE,CAAC;AACjG,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACrC,OAAO,OAAO,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC,MAAM,EAAE,GAAW,EAAE,GAAuB,EAAE,EAAE;QACpG,OAAO,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"catalog-builder.js","sourceRoot":"","sources":["../src/catalog-builder.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
- import { type ConnectionPool } from 'mssql';
1
+ import type { SqlDialect, SqlDriver, SqlDriverConfig } from 'mythik/server';
2
2
  import type { ConnectionConfig } from './types.js';
3
- export declare function createConnectionPool(config: ConnectionConfig): Promise<ConnectionPool>;
3
+ export declare function resolveDatabaseDialect(config: ConnectionConfig, expectedDialect?: SqlDialect): SqlDialect;
4
+ export declare function toSqlDriverConfig(config: ConnectionConfig, expectedDialect?: SqlDialect): SqlDriverConfig;
5
+ export declare function createDatabaseDriver(config: ConnectionConfig, expectedDialect?: SqlDialect): SqlDriver;
4
6
  //# sourceMappingURL=connection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnD,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,CAgB5F"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,EACV,gBAAgB,EAKjB,MAAM,YAAY,CAAC;AAgBpB,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,EAAE,eAAe,CAAC,EAAE,UAAU,GAAG,UAAU,CAazG;AAsCD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,eAAe,CAAC,EAAE,UAAU,GAAG,eAAe,CA4BzG;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,EAAE,eAAe,CAAC,EAAE,UAAU,GAAG,SAAS,CAEtG"}
@@ -1,18 +1,85 @@
1
- import sql from 'mssql';
1
+ import { createSqlDriver } from 'mythik/server';
2
2
  import { resolveEnvVars } from './spec-loader.js';
3
- export async function createConnectionPool(config) {
3
+ const warnedLegacyDefaultConfigs = new WeakSet();
4
+ function withoutType(config) {
5
+ const { type: _type, ...rest } = config;
6
+ return rest;
7
+ }
8
+ function normalizePort(value, fallback) {
9
+ if (value === undefined || value === null || value === '')
10
+ return fallback;
11
+ const parsed = typeof value === 'number' ? value : Number(value);
12
+ return Number.isFinite(parsed) ? parsed : fallback;
13
+ }
14
+ export function resolveDatabaseDialect(config, expectedDialect) {
15
+ const declaredDialect = config.type ?? 'sqlserver';
16
+ if (expectedDialect && declaredDialect !== expectedDialect) {
17
+ throw new Error(`Database dialect mismatch: ApiSpec requested "${expectedDialect}" but database config is "${declaredDialect}".`);
18
+ }
19
+ if (!config.type && (!expectedDialect || expectedDialect === 'sqlserver') && !warnedLegacyDefaultConfigs.has(config)) {
20
+ warnedLegacyDefaultConfigs.add(config);
21
+ console.warn('Mythik server database config omitted "type"; defaulting to "sqlserver" for backwards compatibility.');
22
+ }
23
+ return expectedDialect ?? declaredDialect;
24
+ }
25
+ function sqlServerConnection(config) {
4
26
  const resolved = resolveEnvVars(config);
5
- const pool = new sql.ConnectionPool({
27
+ return {
6
28
  server: resolved.server,
7
29
  database: resolved.database,
8
30
  user: resolved.user,
9
31
  password: resolved.password,
10
- port: resolved.port ?? 1433,
32
+ port: normalizePort(resolved.port, 1433),
11
33
  options: {
12
34
  trustServerCertificate: resolved.trustServerCertificate ?? true,
35
+ trustedConnection: resolved.trustedConnection ?? false,
13
36
  },
14
- });
15
- await pool.connect();
16
- return pool;
37
+ };
38
+ }
39
+ function postgresConnection(config) {
40
+ const resolved = resolveEnvVars(config);
41
+ if (resolved.connectionString) {
42
+ return { ...withoutType(resolved), connectionString: resolved.connectionString };
43
+ }
44
+ return withoutType(resolved);
45
+ }
46
+ function mysqlConnection(config) {
47
+ const resolved = resolveEnvVars(config);
48
+ if (resolved.uri) {
49
+ return resolved.uri;
50
+ }
51
+ return withoutType(resolved);
52
+ }
53
+ function sqliteConnection(config) {
54
+ const resolved = resolveEnvVars(config);
55
+ return withoutType(resolved);
56
+ }
57
+ export function toSqlDriverConfig(config, expectedDialect) {
58
+ const dialect = resolveDatabaseDialect(config, expectedDialect);
59
+ if (dialect === 'sqlserver') {
60
+ return {
61
+ dialect,
62
+ connection: sqlServerConnection(config),
63
+ };
64
+ }
65
+ if (dialect === 'postgres') {
66
+ return {
67
+ dialect,
68
+ connection: postgresConnection(config),
69
+ };
70
+ }
71
+ if (dialect === 'mysql') {
72
+ return {
73
+ dialect,
74
+ connection: mysqlConnection(config),
75
+ };
76
+ }
77
+ return {
78
+ dialect,
79
+ connection: sqliteConnection(config),
80
+ };
81
+ }
82
+ export function createDatabaseDriver(config, expectedDialect) {
83
+ return createSqlDriver(toSqlDriverConfig(config, expectedDialect));
17
84
  }
18
85
  //# sourceMappingURL=connection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA,OAAO,GAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAwB;IACjE,MAAM,QAAQ,GAAG,cAAc,CAAC,MAA4C,CAAC,CAAC;IAE9E,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC;QAClC,MAAM,EAAE,QAAQ,CAAC,MAAgB;QACjC,QAAQ,EAAE,QAAQ,CAAC,QAAkB;QACrC,IAAI,EAAE,QAAQ,CAAC,IAA0B;QACzC,QAAQ,EAAE,QAAQ,CAAC,QAA8B;QACjD,IAAI,EAAG,QAAQ,CAAC,IAAe,IAAI,IAAI;QACvC,OAAO,EAAE;YACP,sBAAsB,EAAG,QAAQ,CAAC,sBAAkC,IAAI,IAAI;SAC7E;KACF,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,18 @@
1
+ import type { SqlDriver, SqlStatement } from 'mythik/server';
1
2
  export declare function filterFields(body: Record<string, unknown>, allowedFields: string[]): Record<string, unknown>;
2
- export declare function buildInsertQuery(table: string, fields: Record<string, unknown>, primaryKey?: string): {
3
+ export declare function buildInsertQuery(driver: SqlDriver, table: string, fields: Record<string, unknown>): {
3
4
  sql: string;
4
5
  params: Record<string, unknown>;
5
6
  };
6
- export declare function buildUpdateQuery(table: string, primaryKey: string, pkValue: unknown, fields: Record<string, unknown>): {
7
+ export declare function buildUpdateQuery(driver: SqlDriver, table: string, primaryKey: string, pkValue: unknown, fields: Record<string, unknown>, extraWhere?: SqlStatement): {
7
8
  sql: string;
8
9
  params: Record<string, unknown>;
9
10
  };
10
- export declare function buildDeleteQuery(table: string, primaryKey: string, pkValue: unknown): {
11
+ export declare function buildDeleteQuery(driver: SqlDriver, table: string, primaryKey: string, pkValue: unknown, extraWhere?: SqlStatement): {
12
+ sql: string;
13
+ params: Record<string, unknown>;
14
+ };
15
+ export declare function buildSelectByPrimaryKeyQuery(driver: SqlDriver, table: string, primaryKey: string, pkValue: unknown, extraWhere?: SqlStatement): {
11
16
  sql: string;
12
17
  params: Record<string, unknown>;
13
18
  };
@@ -1 +1 @@
1
- {"version":3,"file":"crud-builder.d.ts","sourceRoot":"","sources":["../src/crud-builder.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAS5G;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,UAAU,CAAC,EAAE,MAAM,GAClB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAelD;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAUlD;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,GACf;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAKlD"}
1
+ {"version":3,"file":"crud-builder.d.ts","sourceRoot":"","sources":["../src/crud-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7D,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAS5G;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAQlD;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,UAAU,CAAC,EAAE,YAAY,GACxB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAQlD;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,YAAY,GACxB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAKlD;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,YAAY,GACxB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAQlD"}