mythik 0.1.2 → 0.1.4

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 (104) hide show
  1. package/README.md +64 -16
  2. package/dist/actions/dispatcher.d.ts.map +1 -1
  3. package/dist/actions/dispatcher.js +21 -2
  4. package/dist/actions/dispatcher.js.map +1 -1
  5. package/dist/expressions/handlers/let.d.ts +6 -0
  6. package/dist/expressions/handlers/let.d.ts.map +1 -1
  7. package/dist/expressions/handlers/let.js +29 -4
  8. package/dist/expressions/handlers/let.js.map +1 -1
  9. package/dist/expressions/handlers/template.d.ts.map +1 -1
  10. package/dist/expressions/handlers/template.js +2 -1
  11. package/dist/expressions/handlers/template.js.map +1 -1
  12. package/dist/renderer/prop-schemas.js +1 -1
  13. package/dist/renderer/prop-schemas.js.map +1 -1
  14. package/dist/security/api-spec-validator.d.ts.map +1 -1
  15. package/dist/security/api-spec-validator.js +4 -0
  16. package/dist/security/api-spec-validator.js.map +1 -1
  17. package/dist/security/spec-validator.d.ts.map +1 -1
  18. package/dist/security/spec-validator.js +43 -31
  19. package/dist/security/spec-validator.js.map +1 -1
  20. package/dist/server.d.ts +7 -0
  21. package/dist/server.d.ts.map +1 -1
  22. package/dist/server.js +3 -0
  23. package/dist/server.js.map +1 -1
  24. package/dist/spec-stores/sql-versioned.d.ts +38 -0
  25. package/dist/spec-stores/sql-versioned.d.ts.map +1 -0
  26. package/dist/spec-stores/sql-versioned.js +186 -0
  27. package/dist/spec-stores/sql-versioned.js.map +1 -0
  28. package/dist/spec-stores/sql.d.ts +21 -0
  29. package/dist/spec-stores/sql.d.ts.map +1 -0
  30. package/dist/spec-stores/sql.js +65 -0
  31. package/dist/spec-stores/sql.js.map +1 -0
  32. package/dist/spec-stores/sqlserver-versioned.d.ts +5 -30
  33. package/dist/spec-stores/sqlserver-versioned.d.ts.map +1 -1
  34. package/dist/spec-stores/sqlserver-versioned.js +16 -245
  35. package/dist/spec-stores/sqlserver-versioned.js.map +1 -1
  36. package/dist/spec-stores/sqlserver.d.ts +4 -11
  37. package/dist/spec-stores/sqlserver.d.ts.map +1 -1
  38. package/dist/spec-stores/sqlserver.js +16 -66
  39. package/dist/spec-stores/sqlserver.js.map +1 -1
  40. package/dist/sql/ddl.d.ts +7 -0
  41. package/dist/sql/ddl.d.ts.map +1 -0
  42. package/dist/sql/ddl.js +134 -0
  43. package/dist/sql/ddl.js.map +1 -0
  44. package/dist/sql/drivers/mysql.d.ts +25 -0
  45. package/dist/sql/drivers/mysql.d.ts.map +1 -0
  46. package/dist/sql/drivers/mysql.js +329 -0
  47. package/dist/sql/drivers/mysql.js.map +1 -0
  48. package/dist/sql/drivers/postgres.d.ts +30 -0
  49. package/dist/sql/drivers/postgres.d.ts.map +1 -0
  50. package/dist/sql/drivers/postgres.js +321 -0
  51. package/dist/sql/drivers/postgres.js.map +1 -0
  52. package/dist/sql/drivers/sqlite.d.ts +28 -0
  53. package/dist/sql/drivers/sqlite.d.ts.map +1 -0
  54. package/dist/sql/drivers/sqlite.js +369 -0
  55. package/dist/sql/drivers/sqlite.js.map +1 -0
  56. package/dist/sql/drivers/sqlserver.d.ts +46 -0
  57. package/dist/sql/drivers/sqlserver.d.ts.map +1 -0
  58. package/dist/sql/drivers/sqlserver.js +405 -0
  59. package/dist/sql/drivers/sqlserver.js.map +1 -0
  60. package/dist/sql/errors.d.ts +22 -0
  61. package/dist/sql/errors.d.ts.map +1 -0
  62. package/dist/sql/errors.js +27 -0
  63. package/dist/sql/errors.js.map +1 -0
  64. package/dist/sql/factory.d.ts +3 -0
  65. package/dist/sql/factory.d.ts.map +1 -0
  66. package/dist/sql/factory.js +24 -0
  67. package/dist/sql/factory.js.map +1 -0
  68. package/dist/sql/index.d.ts +17 -0
  69. package/dist/sql/index.d.ts.map +1 -0
  70. package/dist/sql/index.js +9 -0
  71. package/dist/sql/index.js.map +1 -0
  72. package/dist/sql/named-params.d.ts +8 -0
  73. package/dist/sql/named-params.d.ts.map +1 -0
  74. package/dist/sql/named-params.js +182 -0
  75. package/dist/sql/named-params.js.map +1 -0
  76. package/dist/sql/types.d.ts +49 -0
  77. package/dist/sql/types.d.ts.map +1 -0
  78. package/dist/sql/types.js +2 -0
  79. package/dist/sql/types.js.map +1 -0
  80. package/dist/types.d.ts +1 -1
  81. package/dist/types.d.ts.map +1 -1
  82. package/docs/consumer/README.md +1 -1
  83. package/docs/consumer/WHERE-TO-LOOK.md +4 -4
  84. package/docs/consumer/ai-context-api.md +44 -0
  85. package/docs/consumer/ai-context-primitives.md +3 -0
  86. package/docs/consumer/ai-context-runtime-semantics.md +8 -3
  87. package/docs/consumer/ai-context.md +123 -39
  88. package/docs/consumer/reference-doc.md +30 -8
  89. package/docs/wiki/compiled/README.md +1 -1
  90. package/docs/wiki/compiled/_lint.md +13 -8
  91. package/docs/wiki/compiled/action-fetch.md +7 -2
  92. package/docs/wiki/compiled/concept-action-chains.md +62 -24
  93. package/docs/wiki/compiled/concept-package-layout.md +11 -9
  94. package/docs/wiki/compiled/concept-public-package-names.md +24 -13
  95. package/docs/wiki/compiled/concept-shape-animations.md +1 -1
  96. package/docs/wiki/compiled/concept-spec-stores-catalog.md +28 -16
  97. package/docs/wiki/compiled/concept-transactions.md +20 -12
  98. package/docs/wiki/compiled/expression-let-ref.md +36 -18
  99. package/docs/wiki/compiled/expression-template.md +28 -17
  100. package/docs/wiki/compiled/path-ui-loading-error.md +5 -0
  101. package/docs/wiki/compiled/pattern-fetch-vs-datasources.md +5 -0
  102. package/docs/wiki/compiled/pattern-loading-content-empty.md +3 -2
  103. package/docs/wiki/compiled/primitive-select.md +16 -2
  104. package/package.json +25 -2
@@ -0,0 +1,321 @@
1
+ import { compileNamedParams as compileSqlNamedParams } from '../named-params.js';
2
+ import { missingSqlDriverDependencyError, SqlDriverError } from '../errors.js';
3
+ const POSTGRES_CAPABILITIES = {
4
+ dialect: 'postgres',
5
+ namedParams: true,
6
+ positionalParams: true,
7
+ nativeJson: true,
8
+ nativeBoolean: true,
9
+ returning: true,
10
+ upsert: true,
11
+ transactions: true,
12
+ };
13
+ function isRecord(value) {
14
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
15
+ }
16
+ function connectionConfig(connection) {
17
+ if (typeof connection === 'string') {
18
+ return { connectionString: connection };
19
+ }
20
+ return isRecord(connection) ? connection : {};
21
+ }
22
+ function trimStatement(statement) {
23
+ return statement.trim().replace(/;\s*$/, '');
24
+ }
25
+ function hasOrderBy(statement) {
26
+ return /\border\s+by\b/i.test(statement);
27
+ }
28
+ function whereClause(where) {
29
+ const sql = trimStatement(where.sql);
30
+ return /^where\b/i.test(sql) ? sql : `WHERE ${sql}`;
31
+ }
32
+ function requireIdentifier(identifier) {
33
+ if (identifier.trim() === '') {
34
+ throw new SqlDriverError('PostgreSQL identifier cannot be empty.', {
35
+ code: 'SQL_IDENTIFIER_INVALID',
36
+ dialect: 'postgres',
37
+ });
38
+ }
39
+ return identifier;
40
+ }
41
+ function normalizeModule(mod) {
42
+ return mod.default ?? mod;
43
+ }
44
+ async function loadPgModule() {
45
+ try {
46
+ return (await import('pg'));
47
+ }
48
+ catch (error) {
49
+ throw missingSqlDriverDependencyError({
50
+ label: 'PostgreSQL',
51
+ dialect: 'postgres',
52
+ packageName: 'pg',
53
+ cause: error,
54
+ });
55
+ }
56
+ }
57
+ function postgresValue(value) {
58
+ if (value === undefined)
59
+ return null;
60
+ if (value === null)
61
+ return null;
62
+ if (value instanceof Date)
63
+ return value;
64
+ if (Buffer.isBuffer(value))
65
+ return value;
66
+ if (typeof value === 'object')
67
+ return JSON.stringify(value);
68
+ return value;
69
+ }
70
+ function postgresParams(params) {
71
+ if (params === undefined)
72
+ return undefined;
73
+ if (Array.isArray(params))
74
+ return params.map(postgresValue);
75
+ throw new SqlDriverError('PostgreSQL driver requires positional params after compilation.', {
76
+ code: 'SQL_PARAMS_INVALID',
77
+ dialect: 'postgres',
78
+ });
79
+ }
80
+ function normalizeStatement(statement, params) {
81
+ const source = typeof statement === 'string' ? { sql: statement, params } : statement;
82
+ if (isRecord(source.params)) {
83
+ return compileSqlNamedParams('postgres', source.sql, source.params);
84
+ }
85
+ return source;
86
+ }
87
+ function requireObjectParams(statement, purpose) {
88
+ if (statement.params === undefined)
89
+ return {};
90
+ if (!isRecord(statement.params)) {
91
+ throw new SqlDriverError(`${purpose} requires named object params.`, {
92
+ code: 'SQL_PARAMS_INVALID',
93
+ dialect: 'postgres',
94
+ });
95
+ }
96
+ return statement.params;
97
+ }
98
+ function uniqueParamName(base, used) {
99
+ const safeBase = base.replace(/[^A-Za-z0-9_]/g, '_').replace(/^[^A-Za-z_]+/, '') || 'value';
100
+ let name = safeBase;
101
+ let suffix = 1;
102
+ while (used.has(name)) {
103
+ suffix += 1;
104
+ name = `${safeBase}_${suffix}`;
105
+ }
106
+ used.add(name);
107
+ return name;
108
+ }
109
+ function insertIdFromRows(rows) {
110
+ const first = rows[0];
111
+ if (first && Object.prototype.hasOwnProperty.call(first, 'id'))
112
+ return first.id;
113
+ return undefined;
114
+ }
115
+ export function createPostgresDriver(config, deps = {}) {
116
+ let pgModule;
117
+ let poolInstance;
118
+ const loadPg = deps.loadPg ?? loadPgModule;
119
+ function mapError(error, code = 'SQL_DRIVER_QUERY_FAILED') {
120
+ if (error instanceof SqlDriverError)
121
+ return error;
122
+ return new SqlDriverError(error instanceof Error ? error.message : 'PostgreSQL driver error.', {
123
+ code,
124
+ dialect: 'postgres',
125
+ cause: error,
126
+ });
127
+ }
128
+ async function pg() {
129
+ if (pgModule)
130
+ return pgModule;
131
+ try {
132
+ pgModule = normalizeModule(await loadPg());
133
+ return pgModule;
134
+ }
135
+ catch (error) {
136
+ if (error instanceof SqlDriverError)
137
+ throw error;
138
+ throw missingSqlDriverDependencyError({
139
+ label: 'PostgreSQL',
140
+ dialect: 'postgres',
141
+ packageName: 'pg',
142
+ cause: error,
143
+ });
144
+ }
145
+ }
146
+ async function pool() {
147
+ if (poolInstance)
148
+ return poolInstance;
149
+ const mod = await pg();
150
+ poolInstance = new mod.Pool(connectionConfig(config.connection));
151
+ return poolInstance;
152
+ }
153
+ async function runQuery(target, statement, params) {
154
+ const normalized = normalizeStatement(statement, params);
155
+ const source = target ?? (await pool());
156
+ const result = await source.query(normalized.sql, postgresParams(normalized.params));
157
+ return result.rows;
158
+ }
159
+ async function runExec(target, statement, params) {
160
+ const normalized = normalizeStatement(statement, params);
161
+ const source = target ?? (await pool());
162
+ const result = await source.query(normalized.sql, postgresParams(normalized.params));
163
+ const rows = result.rows;
164
+ return {
165
+ rows,
166
+ affectedRows: result.rowCount ?? rows.length,
167
+ insertId: insertIdFromRows(result.rows),
168
+ };
169
+ }
170
+ const driver = {
171
+ dialect: 'postgres',
172
+ capabilities: POSTGRES_CAPABILITIES,
173
+ async connect() {
174
+ await pool();
175
+ },
176
+ async close() {
177
+ await poolInstance?.end();
178
+ poolInstance = undefined;
179
+ },
180
+ async query(statement, params) {
181
+ try {
182
+ return await runQuery(undefined, statement, params);
183
+ }
184
+ catch (error) {
185
+ throw mapError(error);
186
+ }
187
+ },
188
+ async exec(statement, params) {
189
+ try {
190
+ return await runExec(undefined, statement, params);
191
+ }
192
+ catch (error) {
193
+ throw mapError(error);
194
+ }
195
+ },
196
+ async transaction(run) {
197
+ const client = await (await pool()).connect();
198
+ await client.query('BEGIN');
199
+ try {
200
+ const result = await run({
201
+ query: (statement, params) => runQuery(client, statement, params),
202
+ exec: (statement, params) => runExec(client, statement, params),
203
+ });
204
+ await client.query('COMMIT');
205
+ return result;
206
+ }
207
+ catch (error) {
208
+ await client.query('ROLLBACK');
209
+ throw error;
210
+ }
211
+ finally {
212
+ client.release();
213
+ }
214
+ },
215
+ quoteIdent(identifier) {
216
+ return `"${requireIdentifier(identifier).replace(/"/g, '""')}"`;
217
+ },
218
+ quoteQualified(...identifiers) {
219
+ return identifiers.map((identifier) => driver.quoteIdent(identifier)).join('.');
220
+ },
221
+ compileNamedParams(statement, params) {
222
+ return compileSqlNamedParams('postgres', statement, params);
223
+ },
224
+ paginate(statement, limit, offset) {
225
+ const cleanLimit = Math.trunc(limit);
226
+ const cleanOffset = Math.trunc(offset);
227
+ if (!Number.isFinite(cleanLimit) || cleanLimit < 0 || !Number.isFinite(cleanOffset) || cleanOffset < 0) {
228
+ throw new SqlDriverError('PostgreSQL pagination limit and offset must be finite non-negative numbers.', {
229
+ code: 'SQL_PAGINATION_INVALID',
230
+ dialect: 'postgres',
231
+ });
232
+ }
233
+ const base = trimStatement(statement);
234
+ const ordered = hasOrderBy(base) ? base : `${base} ORDER BY 1`;
235
+ return `${ordered} LIMIT ${cleanLimit} OFFSET ${cleanOffset}`;
236
+ },
237
+ countQuery(statement) {
238
+ return `SELECT COUNT(*) AS total FROM (${trimStatement(statement)}) AS _mythik_count`;
239
+ },
240
+ totalsQuery(statement) {
241
+ return `SELECT * FROM (${trimStatement(statement)}) AS _mythik_totals`;
242
+ },
243
+ buildInsertReturning(table, values, returning = ['*']) {
244
+ const columns = Object.keys(values);
245
+ if (columns.length === 0) {
246
+ throw new SqlDriverError('PostgreSQL insert requires at least one value.', {
247
+ code: 'SQL_VALUES_EMPTY',
248
+ dialect: 'postgres',
249
+ });
250
+ }
251
+ const used = new Set();
252
+ const params = {};
253
+ const placeholders = columns.map((column) => {
254
+ const name = uniqueParamName(column, used);
255
+ params[name] = values[column];
256
+ return `@${name}`;
257
+ });
258
+ const projection = returning.includes('*') ? '*' : returning.map((column) => driver.quoteIdent(column)).join(', ');
259
+ return {
260
+ sql: `INSERT INTO ${driver.quoteIdent(table)} (${columns.map((column) => driver.quoteIdent(column)).join(', ')}) VALUES (${placeholders.join(', ')}) RETURNING ${projection}`,
261
+ params,
262
+ };
263
+ },
264
+ buildUpdateReturning(table, values, where, returning = ['*']) {
265
+ const columns = Object.keys(values);
266
+ if (columns.length === 0) {
267
+ throw new SqlDriverError('PostgreSQL update requires at least one value.', {
268
+ code: 'SQL_VALUES_EMPTY',
269
+ dialect: 'postgres',
270
+ });
271
+ }
272
+ const params = { ...requireObjectParams(where, 'PostgreSQL update') };
273
+ const used = new Set(Object.keys(params));
274
+ const assignments = columns.map((column) => {
275
+ const name = uniqueParamName(`set_${column}`, used);
276
+ params[name] = values[column];
277
+ return `${driver.quoteIdent(column)} = @${name}`;
278
+ });
279
+ const projection = returning.includes('*') ? '*' : returning.map((column) => driver.quoteIdent(column)).join(', ');
280
+ return {
281
+ sql: `UPDATE ${driver.quoteIdent(table)} SET ${assignments.join(', ')} ${whereClause(where)} RETURNING ${projection}`,
282
+ params,
283
+ };
284
+ },
285
+ buildDelete(table, where) {
286
+ return {
287
+ sql: `DELETE FROM ${driver.quoteIdent(table)} ${whereClause(where)}`,
288
+ params: where.params,
289
+ };
290
+ },
291
+ buildUpsert(table, values, keys) {
292
+ if (keys.length === 0) {
293
+ throw new SqlDriverError('PostgreSQL upsert requires at least one conflict key.', {
294
+ code: 'SQL_KEYS_EMPTY',
295
+ dialect: 'postgres',
296
+ });
297
+ }
298
+ const insert = driver.buildInsertReturning(table, values, ['*']);
299
+ const columns = Object.keys(values);
300
+ const conflict = keys.map((key) => driver.quoteIdent(key)).join(', ');
301
+ const updateColumns = columns.filter((column) => !keys.includes(column));
302
+ const action = updateColumns.length === 0
303
+ ? 'DO NOTHING'
304
+ : `DO UPDATE SET ${updateColumns
305
+ .map((column) => `${driver.quoteIdent(column)} = EXCLUDED.${driver.quoteIdent(column)}`)
306
+ .join(', ')}`;
307
+ return {
308
+ sql: insert.sql.replace(/\sRETURNING\s\*$/i, ` ON CONFLICT (${conflict}) ${action} RETURNING *`),
309
+ params: insert.params,
310
+ };
311
+ },
312
+ async tableExists(table) {
313
+ const [schema, name] = table.includes('.') ? table.split('.', 2) : ['public', table];
314
+ const rows = await driver.query('SELECT table_name FROM information_schema.tables WHERE table_schema = @schema AND table_name = @name', { schema, name });
315
+ return rows.length > 0;
316
+ },
317
+ mapError,
318
+ };
319
+ return driver;
320
+ }
321
+ //# sourceMappingURL=postgres.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../../src/sql/drivers/postgres.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { SqlDriver, SqlDriverConfig } from '../types.js';
2
+ type SqlitePrimitive = string | number | bigint | Buffer | null;
3
+ interface BetterSqliteRunResult {
4
+ changes: number;
5
+ lastInsertRowid: number | bigint;
6
+ }
7
+ interface BetterSqliteStatement {
8
+ all(...params: SqlitePrimitive[]): Record<string, unknown>[];
9
+ all(params: Record<string, SqlitePrimitive>): Record<string, unknown>[];
10
+ get(...params: SqlitePrimitive[]): Record<string, unknown> | undefined;
11
+ get(params: Record<string, SqlitePrimitive>): Record<string, unknown> | undefined;
12
+ run(...params: SqlitePrimitive[]): BetterSqliteRunResult;
13
+ run(params: Record<string, SqlitePrimitive>): BetterSqliteRunResult;
14
+ }
15
+ interface BetterSqliteDatabase {
16
+ prepare(sql: string): BetterSqliteStatement;
17
+ exec(sql: string): void;
18
+ close(): void;
19
+ }
20
+ interface BetterSqliteConstructor {
21
+ new (filename?: string, options?: Record<string, unknown>): BetterSqliteDatabase;
22
+ }
23
+ export interface SqliteDriverDeps {
24
+ loadDatabase?: () => Promise<BetterSqliteConstructor>;
25
+ }
26
+ export declare function createSqliteDriver(config: SqlDriverConfig, deps?: SqliteDriverDeps): SqlDriver;
27
+ export {};
28
+ //# sourceMappingURL=sqlite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/sql/drivers/sqlite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAA8D,MAAM,aAAa,CAAC;AAE1H,KAAK,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAGhE,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC;CAClC;AAED,UAAU,qBAAqB;IAC7B,GAAG,CAAC,GAAG,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC7D,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACxE,GAAG,CAAC,GAAG,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACvE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAClF,GAAG,CAAC,GAAG,MAAM,EAAE,eAAe,EAAE,GAAG,qBAAqB,CAAC;IACzD,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,qBAAqB,CAAC;CACrE;AAED,UAAU,oBAAoB;IAC5B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAAC;IAC5C,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,IAAI,IAAI,CAAC;CACf;AAED,UAAU,uBAAuB;IAC/B,KAAK,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,oBAAoB,CAAC;CAClF;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,uBAAuB,CAAC,CAAC;CACvD;AA0JD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,GAAE,gBAAqB,GAAG,SAAS,CA4QlG"}