mythik-cli 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.
@@ -0,0 +1,90 @@
1
+ import { createSqlDriver, getSqlStoreDdl } from 'mythik/server';
2
+ import { formatError, formatSuccess } from '../output.js';
3
+ const SQL_DIALECTS = ['sqlserver', 'postgres', 'mysql', 'sqlite'];
4
+ function isSqlDialect(value) {
5
+ return SQL_DIALECTS.includes(value);
6
+ }
7
+ function parseOptionalBoolean(value) {
8
+ if (typeof value === 'boolean')
9
+ return value;
10
+ if (value === undefined)
11
+ return undefined;
12
+ if (/^(true|1|yes)$/i.test(value))
13
+ return true;
14
+ if (/^(false|0|no)$/i.test(value))
15
+ return false;
16
+ return undefined;
17
+ }
18
+ export function connectionFor(options) {
19
+ if (options.dialect === 'sqlite') {
20
+ return { filename: options.target ?? './mythik.db' };
21
+ }
22
+ if (options.dialect === 'sqlserver' && options.url === undefined && options.server) {
23
+ const port = options.port === undefined ? undefined : Number(options.port);
24
+ const sqlOptions = {};
25
+ const encrypt = parseOptionalBoolean(options.encrypt);
26
+ if (encrypt !== undefined)
27
+ sqlOptions.encrypt = encrypt;
28
+ if (options.trustServerCertificate === true)
29
+ sqlOptions.trustServerCertificate = true;
30
+ return {
31
+ server: options.server,
32
+ ...(options.database ? { database: options.database } : {}),
33
+ ...(options.user ? { user: options.user } : {}),
34
+ ...(options.password ? { password: options.password } : {}),
35
+ ...(Number.isFinite(port) ? { port } : {}),
36
+ ...(Object.keys(sqlOptions).length > 0 ? { options: sqlOptions } : {}),
37
+ };
38
+ }
39
+ return options.url ?? undefined;
40
+ }
41
+ function ddlOutput(dialect) {
42
+ return getSqlStoreDdl(dialect).join('\n\n');
43
+ }
44
+ export async function runInitStore(options) {
45
+ if (!isSqlDialect(options.dialect)) {
46
+ return {
47
+ output: formatError({
48
+ what: 'Unsupported SQL dialect',
49
+ why: `Received "${String(options.dialect)}"`,
50
+ fix: `Use one of: ${SQL_DIALECTS.join(', ')}`,
51
+ }),
52
+ exitCode: 1,
53
+ };
54
+ }
55
+ if (options.dryRun === true) {
56
+ return {
57
+ output: ddlOutput(options.dialect),
58
+ exitCode: 0,
59
+ };
60
+ }
61
+ const driver = createSqlDriver({ dialect: options.dialect, connection: connectionFor(options) });
62
+ try {
63
+ await driver.connect();
64
+ for (const statement of getSqlStoreDdl(options.dialect)) {
65
+ await driver.exec(statement);
66
+ }
67
+ const target = options.dialect === 'sqlite' ? ` at ${options.target ?? './mythik.db'}` : '';
68
+ return {
69
+ output: formatSuccess(`Initialized ${options.dialect} Mythik store${target}`),
70
+ exitCode: 0,
71
+ };
72
+ }
73
+ catch (error) {
74
+ const target = options.dialect === 'sqlite' ? ` Target: ${options.target ?? './mythik.db'}.` : '';
75
+ return {
76
+ output: formatError({
77
+ what: `Could not initialize ${options.dialect} Mythik store`,
78
+ why: `${error instanceof Error ? error.message : String(error)}${target}`,
79
+ fix: options.dialect === 'sqlite'
80
+ ? 'Install optional dependency better-sqlite3 and verify the target path is writable'
81
+ : 'Use --dry-run to inspect DDL, or provide a reachable database URL',
82
+ }),
83
+ exitCode: 1,
84
+ };
85
+ }
86
+ finally {
87
+ await driver.close();
88
+ }
89
+ }
90
+ //# sourceMappingURL=init-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-store.js","sourceRoot":"","sources":["../../src/commands/init-store.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,13 @@ export interface InitFlags {
4
4
  url?: string;
5
5
  key?: string;
6
6
  dir?: string;
7
+ filename?: string;
8
+ connection?: string;
9
+ server?: string;
10
+ database?: string;
11
+ user?: string;
12
+ password?: string;
13
+ port?: string;
7
14
  }
8
15
  export declare function runInit(flags: InitFlags, cwd: string): Promise<CommandResult>;
9
16
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAqFnF"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAInD,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAqFnF"}
@@ -1,6 +1,7 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
3
  import { formatSuccess, formatError } from '../output.js';
4
+ import { isSqlStoreType } from '../config.js';
4
5
  export async function runInit(flags, cwd) {
5
6
  const rcPath = path.join(cwd, '.mythikrc');
6
7
  if (fs.existsSync(rcPath)) {
@@ -90,17 +91,51 @@ function buildConfig(flags) {
90
91
  }
91
92
  config.supabase = { url: flags.url, apiKey: flags.key };
92
93
  }
94
+ else if (flags.store && isSqlStoreType(flags.store)) {
95
+ config.sql = buildSqlConfig(flags);
96
+ }
93
97
  else if (flags.store === 'file') {
94
98
  config.file = { dir: flags.dir ?? './specs' };
95
99
  }
96
100
  return config;
97
101
  }
102
+ function buildSqlConfig(flags) {
103
+ if (!flags.store || !isSqlStoreType(flags.store)) {
104
+ throw new Error('SQL store requires a supported SQL dialect');
105
+ }
106
+ if (flags.store === 'sqlite') {
107
+ return {
108
+ dialect: 'sqlite',
109
+ connection: { filename: flags.filename ?? flags.url ?? './mythik.db' },
110
+ };
111
+ }
112
+ if (flags.store === 'sqlserver') {
113
+ return {
114
+ dialect: 'sqlserver',
115
+ connection: {
116
+ server: flags.server ?? flags.url ?? '',
117
+ database: flags.database ?? '',
118
+ user: flags.user,
119
+ password: flags.password,
120
+ port: flags.port ? Number.parseInt(flags.port, 10) : undefined,
121
+ },
122
+ };
123
+ }
124
+ return {
125
+ dialect: flags.store,
126
+ connection: flags.connection ?? flags.url ?? '',
127
+ };
128
+ }
98
129
  async function interactiveInit() {
99
130
  const { select, input, password } = await import('@inquirer/prompts');
100
131
  const store = await select({
101
132
  message: 'Select store type:',
102
133
  choices: [
103
134
  { value: 'supabase', name: 'Supabase' },
135
+ { value: 'sqlite', name: 'SQLite' },
136
+ { value: 'postgres', name: 'PostgreSQL' },
137
+ { value: 'mysql', name: 'MySQL' },
138
+ { value: 'sqlserver', name: 'SQL Server' },
104
139
  { value: 'file', name: 'File (local JSON)' },
105
140
  { value: 'memory', name: 'Memory (testing)' },
106
141
  ],
@@ -115,6 +150,29 @@ async function interactiveInit() {
115
150
  const dir = await input({ message: 'Specs directory:', default: './specs' });
116
151
  config.file = { dir };
117
152
  }
153
+ else if (store === 'sqlite') {
154
+ const filename = await input({ message: 'SQLite database file:', default: './mythik.db' });
155
+ config.sql = { dialect: 'sqlite', connection: { filename } };
156
+ }
157
+ else if (store === 'postgres' || store === 'mysql') {
158
+ const url = await input({ message: `${store === 'postgres' ? 'PostgreSQL' : 'MySQL'} URL:` });
159
+ config.sql = { dialect: store, connection: url };
160
+ }
161
+ else if (store === 'sqlserver') {
162
+ const server = await input({ message: 'SQL Server host:' });
163
+ const database = await input({ message: 'Database name:' });
164
+ const user = await input({ message: 'User:', default: '' });
165
+ const passwordValue = await password({ message: 'Password:', mask: '*' });
166
+ config.sql = {
167
+ dialect: 'sqlserver',
168
+ connection: {
169
+ server,
170
+ database,
171
+ user: user || undefined,
172
+ password: passwordValue || undefined,
173
+ },
174
+ };
175
+ }
118
176
  return config;
119
177
  }
120
178
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,3 +1,14 @@
1
+ import type { SqlDialect } from 'mythik/server';
2
+ export declare const SUPPORTED_STORE_TYPES: readonly ["supabase", "sqlserver", "postgres", "mysql", "sqlite", "file", "memory"];
3
+ export type MythikStoreType = (typeof SUPPORTED_STORE_TYPES)[number];
4
+ export interface MythikSqlConfig {
5
+ dialect: SqlDialect;
6
+ connection?: unknown;
7
+ table?: string;
8
+ versionsTable?: string;
9
+ environmentsTable?: string;
10
+ snapshotInterval?: number;
11
+ }
1
12
  export interface MythikConfig {
2
13
  store: string;
3
14
  supabase?: {
@@ -8,6 +19,7 @@ export interface MythikConfig {
8
19
  file?: {
9
20
  dir: string;
10
21
  };
22
+ sql?: MythikSqlConfig;
11
23
  sqlserver?: {
12
24
  server: string;
13
25
  database: string;
@@ -23,5 +35,7 @@ export interface LoadConfigOptions {
23
35
  flags?: Record<string, string>;
24
36
  }
25
37
  export declare function loadConfig(options?: LoadConfigOptions): MythikConfig;
38
+ export declare function withStoreTableOverride(config: MythikConfig, table: string): MythikConfig;
26
39
  export declare function resolveEnvVars(config: MythikConfig): MythikConfig;
40
+ export declare function isSqlStoreType(store: string): store is SqlDialect;
27
41
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,IAAI,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB,SAAS,CAAC,EAAE;QACV,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,YAAY,CAsCxE;AAkDD,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAkBjE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,eAAO,MAAM,qBAAqB,qFAQxB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,UAAU,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,IAAI,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,SAAS,CAAC,EAAE;QACV,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,YAAY,CA4CxE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAMxF;AAqGD,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAuBjE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,UAAU,CAEjE"}
package/dist/config.js CHANGED
@@ -1,5 +1,14 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
+ export const SUPPORTED_STORE_TYPES = [
4
+ 'supabase',
5
+ 'sqlserver',
6
+ 'postgres',
7
+ 'mysql',
8
+ 'sqlite',
9
+ 'file',
10
+ 'memory',
11
+ ];
3
12
  export function loadConfig(options = {}) {
4
13
  const cwd = options.cwd ?? process.cwd();
5
14
  const flags = options.flags ?? {};
@@ -28,13 +37,32 @@ export function loadConfig(options = {}) {
28
37
  }
29
38
  // --table flag overrides store table for any store type
30
39
  if (flags.table) {
40
+ if (config.sql)
41
+ config.sql.table = flags.table;
31
42
  if (config.sqlserver)
32
43
  config.sqlserver.table = flags.table;
33
44
  if (config.supabase)
34
45
  config.supabase.table = flags.table;
35
46
  }
47
+ if (flags.versionsTable && config.sql)
48
+ config.sql.versionsTable = flags.versionsTable;
49
+ if (flags.environmentsTable && config.sql)
50
+ config.sql.environmentsTable = flags.environmentsTable;
51
+ if (flags.snapshotInterval && config.sql) {
52
+ config.sql.snapshotInterval = parsePositiveInteger(flags.snapshotInterval, 'snapshotInterval');
53
+ }
36
54
  return config;
37
55
  }
56
+ export function withStoreTableOverride(config, table) {
57
+ const clone = structuredClone(config);
58
+ if (clone.sql)
59
+ clone.sql.table = table;
60
+ if (clone.sqlserver)
61
+ clone.sqlserver.table = table;
62
+ if (clone.supabase)
63
+ clone.supabase.table = table;
64
+ return clone;
65
+ }
38
66
  function findRcFile(startDir) {
39
67
  let dir = path.resolve(startDir);
40
68
  const root = path.parse(dir).root;
@@ -59,6 +87,23 @@ function buildConfigFromFlags(flags) {
59
87
  database: flags.database ?? flags.db ?? '',
60
88
  user: flags.user ?? undefined,
61
89
  password: flags.password ?? undefined,
90
+ port: flags.port ? parsePositiveInteger(flags.port, 'port') : undefined,
91
+ };
92
+ config.sql = {
93
+ dialect: 'sqlserver',
94
+ connection: sqlServerConnectionFromLegacy(config.sqlserver),
95
+ };
96
+ }
97
+ else if (flags.store === 'postgres' || flags.store === 'mysql') {
98
+ config.sql = {
99
+ dialect: flags.store,
100
+ connection: flags.connection ?? flags.url ?? '',
101
+ };
102
+ }
103
+ else if (flags.store === 'sqlite') {
104
+ config.sql = {
105
+ dialect: 'sqlite',
106
+ connection: { filename: flags.filename ?? flags.target ?? flags.url ?? ':memory:' },
62
107
  };
63
108
  }
64
109
  else if (flags.store === 'file') {
@@ -78,6 +123,46 @@ function buildConfigFromEnv() {
78
123
  else if (store === 'file') {
79
124
  config.file = { dir: process.env.MYTHIK_FILE_DIR ?? './specs' };
80
125
  }
126
+ else if (store === 'postgres' || store === 'mysql') {
127
+ config.sql = {
128
+ dialect: store,
129
+ connection: process.env.MYTHIK_DATABASE_URL ?? '',
130
+ };
131
+ }
132
+ else if (store === 'sqlite') {
133
+ config.sql = {
134
+ dialect: 'sqlite',
135
+ connection: { filename: process.env.MYTHIK_SQLITE_FILE ?? './mythik.db' },
136
+ };
137
+ }
138
+ else if (store === 'sqlserver') {
139
+ config.sqlserver = {
140
+ server: process.env.MYTHIK_SQLSERVER_SERVER ?? '',
141
+ database: process.env.MYTHIK_SQLSERVER_DATABASE ?? '',
142
+ user: process.env.MYTHIK_SQLSERVER_USER || undefined,
143
+ password: process.env.MYTHIK_SQLSERVER_PASSWORD || undefined,
144
+ port: process.env.MYTHIK_SQLSERVER_PORT
145
+ ? parsePositiveInteger(process.env.MYTHIK_SQLSERVER_PORT, 'MYTHIK_SQLSERVER_PORT')
146
+ : undefined,
147
+ trustedConnection: process.env.MYTHIK_SQLSERVER_TRUSTED_CONNECTION
148
+ ? parseBoolean(process.env.MYTHIK_SQLSERVER_TRUSTED_CONNECTION)
149
+ : undefined,
150
+ };
151
+ config.sql = {
152
+ dialect: 'sqlserver',
153
+ connection: sqlServerConnectionFromLegacy(config.sqlserver),
154
+ };
155
+ }
156
+ if (process.env.MYTHIK_TABLE && config.sql)
157
+ config.sql.table = process.env.MYTHIK_TABLE;
158
+ if (process.env.MYTHIK_VERSIONS_TABLE && config.sql)
159
+ config.sql.versionsTable = process.env.MYTHIK_VERSIONS_TABLE;
160
+ if (process.env.MYTHIK_ENVIRONMENTS_TABLE && config.sql) {
161
+ config.sql.environmentsTable = process.env.MYTHIK_ENVIRONMENTS_TABLE;
162
+ }
163
+ if (process.env.MYTHIK_SNAPSHOT_INTERVAL && config.sql) {
164
+ config.sql.snapshotInterval = parsePositiveInteger(process.env.MYTHIK_SNAPSHOT_INTERVAL, 'MYTHIK_SNAPSHOT_INTERVAL');
165
+ }
81
166
  return config;
82
167
  }
83
168
  export function resolveEnvVars(config) {
@@ -97,8 +182,15 @@ export function resolveEnvVars(config) {
97
182
  if (clone.sqlserver.password)
98
183
  clone.sqlserver.password = resolveValue(clone.sqlserver.password);
99
184
  }
185
+ if (clone.sql) {
186
+ clone.sql = resolveSqlEnvVars(clone.sql);
187
+ }
188
+ normalizeSqlConfig(clone);
100
189
  return clone;
101
190
  }
191
+ export function isSqlStoreType(store) {
192
+ return store === 'sqlserver' || store === 'postgres' || store === 'mysql' || store === 'sqlite';
193
+ }
102
194
  function resolveValue(value) {
103
195
  if (!value.startsWith('$'))
104
196
  return value;
@@ -109,4 +201,62 @@ function resolveValue(value) {
109
201
  }
110
202
  return resolved;
111
203
  }
204
+ function resolveSqlEnvVars(config) {
205
+ const next = structuredClone(config);
206
+ if (typeof next.connection === 'string') {
207
+ next.connection = resolveValue(next.connection);
208
+ }
209
+ else if (next.connection && typeof next.connection === 'object' && !Array.isArray(next.connection)) {
210
+ const connection = next.connection;
211
+ for (const [key, value] of Object.entries(connection)) {
212
+ if (typeof value === 'string')
213
+ connection[key] = resolveValue(value);
214
+ }
215
+ }
216
+ return next;
217
+ }
218
+ function normalizeSqlConfig(config) {
219
+ if (!isSqlStoreType(config.store))
220
+ return;
221
+ if (!config.sql) {
222
+ if (config.store === 'sqlserver' && config.sqlserver) {
223
+ config.sql = {
224
+ dialect: 'sqlserver',
225
+ connection: sqlServerConnectionFromLegacy(config.sqlserver),
226
+ table: config.sqlserver.table,
227
+ };
228
+ }
229
+ else {
230
+ config.sql = { dialect: config.store };
231
+ }
232
+ }
233
+ if (config.sql.dialect !== config.store) {
234
+ config.sql = { ...config.sql, dialect: config.store };
235
+ }
236
+ }
237
+ function sqlServerConnectionFromLegacy(sqlserver) {
238
+ const connection = {
239
+ server: sqlserver.server,
240
+ database: sqlserver.database,
241
+ };
242
+ if (sqlserver.user)
243
+ connection.user = sqlserver.user;
244
+ if (sqlserver.password)
245
+ connection.password = sqlserver.password;
246
+ if (sqlserver.port)
247
+ connection.port = sqlserver.port;
248
+ if (sqlserver.trustedConnection !== undefined)
249
+ connection.trustedConnection = sqlserver.trustedConnection;
250
+ return connection;
251
+ }
252
+ function parsePositiveInteger(value, name) {
253
+ const parsed = Number.parseInt(value, 10);
254
+ if (!Number.isFinite(parsed) || parsed < 1) {
255
+ throw new Error(`${name} must be a positive integer`);
256
+ }
257
+ return parsed;
258
+ }
259
+ function parseBoolean(value) {
260
+ return ['1', 'true', 'yes', 'on'].includes(value.toLowerCase());
261
+ }
112
262
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,6 @@
1
- import type { SpecStore, VersionedSpecStore, EnvironmentStore } from 'mythik';
2
- import type { MythikConfig } from '../config.js';
1
+ import type { EnvironmentStore, SpecStore, VersionedSpecStore } from 'mythik';
2
+ import { type MythikConfig } from '../config.js';
3
3
  export declare function resolveStore(config: MythikConfig): SpecStore;
4
- /**
5
- * Resolve a VersionedSpecStore + EnvironmentStore from config.
6
- * Currently only memory store has a versioned implementation.
7
- */
8
4
  export declare function resolveVersionedStore(config: MythikConfig): {
9
5
  store: VersionedSpecStore;
10
6
  envStore: EnvironmentStore;
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/stores/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjD,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAyB5D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAE,CA+BrH"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/stores/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAkB9E,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,cAAc,CAAC;AAoDtB,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAuB5D;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG;IAC3D,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,gBAAgB,CAAC;CAC5B,CAwCA"}
@@ -1,5 +1,54 @@
1
- import { MemorySpecStore, SupabaseSpecStore, MemoryVersionedSpecStore, MemoryEnvironmentStore, SupabaseVersionedSpecStore, SupabaseEnvironmentStore } from 'mythik';
2
- import { FileSpecStore, SqlServerSpecStore, SqlServerVersionedSpecStore, SqlServerEnvironmentStore } from 'mythik/server';
1
+ import { MemoryEnvironmentStore, MemorySpecStore, MemoryVersionedSpecStore, SupabaseEnvironmentStore, SupabaseSpecStore, SupabaseVersionedSpecStore, } from 'mythik';
2
+ import { createSqlDriver, FileSpecStore, SqlEnvironmentStore, SqlSpecStore, SqlVersionedSpecStore, } from 'mythik/server';
3
+ import { isSqlStoreType, SUPPORTED_STORE_TYPES, } from '../config.js';
4
+ function requireSqlConfig(config) {
5
+ if (!isSqlStoreType(config.store)) {
6
+ throw new Error(`Store "${config.store}" is not a SQL dialect store.`);
7
+ }
8
+ if (!config.sql) {
9
+ throw new Error(`SQL config for "${config.store}" is missing.`);
10
+ }
11
+ if (config.sql.dialect !== config.store) {
12
+ throw new Error(`SQL config dialect "${config.sql.dialect}" does not match store "${config.store}".`);
13
+ }
14
+ return config.sql;
15
+ }
16
+ function createDriverBackedStore(config) {
17
+ const sql = requireSqlConfig(config);
18
+ const driver = createSqlDriver({ dialect: sql.dialect, connection: sql.connection });
19
+ return new SqlSpecStore({ driver, table: sql.table, closeDriver: true });
20
+ }
21
+ function sharedDriverHandle(driver, ref) {
22
+ return {
23
+ get dialect() { return driver.dialect; },
24
+ get capabilities() { return driver.capabilities; },
25
+ connect: () => driver.connect(),
26
+ close: async () => {
27
+ if (ref.closed)
28
+ return;
29
+ ref.count -= 1;
30
+ if (ref.count <= 0) {
31
+ ref.closed = true;
32
+ await driver.close();
33
+ }
34
+ },
35
+ transaction: (run) => driver.transaction(run),
36
+ query: (statement, params) => driver.query(statement, params),
37
+ exec: (statement, params) => driver.exec(statement, params),
38
+ quoteIdent: (identifier) => driver.quoteIdent(identifier),
39
+ quoteQualified: (...identifiers) => driver.quoteQualified(...identifiers),
40
+ compileNamedParams: (statement, params) => driver.compileNamedParams(statement, params),
41
+ paginate: (statement, limit, offset) => driver.paginate(statement, limit, offset),
42
+ countQuery: (statement) => driver.countQuery(statement),
43
+ totalsQuery: (statement) => driver.totalsQuery(statement),
44
+ buildInsertReturning: (table, values, returning) => driver.buildInsertReturning(table, values, returning),
45
+ buildUpdateReturning: (table, values, where, returning) => driver.buildUpdateReturning(table, values, where, returning),
46
+ buildDelete: (table, where) => driver.buildDelete(table, where),
47
+ buildUpsert: (table, values, keys) => driver.buildUpsert(table, values, keys),
48
+ tableExists: (table) => driver.tableExists(table),
49
+ mapError: (error) => driver.mapError(error),
50
+ };
51
+ }
3
52
  export function resolveStore(config) {
4
53
  switch (config.store) {
5
54
  case 'supabase':
@@ -8,38 +57,24 @@ export function resolveStore(config) {
8
57
  }
9
58
  return new SupabaseSpecStore(config.supabase);
10
59
  case 'sqlserver':
11
- if (!config.sqlserver?.server || !config.sqlserver?.database) {
12
- throw new Error('SQL Server config requires "server" and "database"');
13
- }
14
- return new SqlServerSpecStore(config.sqlserver);
60
+ case 'postgres':
61
+ case 'mysql':
62
+ case 'sqlite':
63
+ return createDriverBackedStore(config);
15
64
  case 'file':
16
65
  return new FileSpecStore({ directory: config.file?.dir ?? './specs' });
17
66
  case 'memory':
18
67
  return new MemorySpecStore();
19
68
  default:
20
- throw new Error(`Unknown store: "${config.store}". Available: supabase, sqlserver, file, memory`);
69
+ throw new Error(`Unknown store: "${config.store}". Available: ${SUPPORTED_STORE_TYPES.join(', ')}`);
21
70
  }
22
71
  }
23
- /**
24
- * Resolve a VersionedSpecStore + EnvironmentStore from config.
25
- * Currently only memory store has a versioned implementation.
26
- */
27
72
  export function resolveVersionedStore(config) {
28
73
  if (config.store === 'memory') {
29
74
  const store = new MemoryVersionedSpecStore();
30
75
  const envStore = new MemoryEnvironmentStore();
31
76
  return { store, envStore };
32
77
  }
33
- if (config.store === 'sqlserver') {
34
- if (!config.sqlserver?.server || !config.sqlserver?.database) {
35
- throw new Error('SQL Server config requires "server" and "database"');
36
- }
37
- const store = new SqlServerVersionedSpecStore(config.sqlserver);
38
- // Environment store uses its own fixed table — don't pass the --table override
39
- const { table: _, ...envConfig } = config.sqlserver;
40
- const envStore = new SqlServerEnvironmentStore(envConfig);
41
- return { store, envStore };
42
- }
43
78
  if (config.store === 'supabase') {
44
79
  if (!config.supabase?.url || !config.supabase?.apiKey) {
45
80
  throw new Error('Supabase config requires "url" and "apiKey"');
@@ -49,6 +84,25 @@ export function resolveVersionedStore(config) {
49
84
  const envStore = new SupabaseEnvironmentStore(envConfig);
50
85
  return { store, envStore };
51
86
  }
52
- throw new Error(`Versioned store not yet available for "${config.store}". Currently supported: memory, sqlserver, supabase.`);
87
+ if (isSqlStoreType(config.store)) {
88
+ const sql = requireSqlConfig(config);
89
+ const driver = createSqlDriver({ dialect: sql.dialect, connection: sql.connection });
90
+ const closeRef = { count: 2, closed: false };
91
+ return {
92
+ store: new SqlVersionedSpecStore({
93
+ driver: sharedDriverHandle(driver, closeRef),
94
+ table: sql.table,
95
+ versionsTable: sql.versionsTable,
96
+ snapshotInterval: sql.snapshotInterval,
97
+ closeDriver: true,
98
+ }),
99
+ envStore: new SqlEnvironmentStore({
100
+ driver: sharedDriverHandle(driver, closeRef),
101
+ table: sql.environmentsTable,
102
+ closeDriver: true,
103
+ }),
104
+ };
105
+ }
106
+ throw new Error(`Versioned store not yet available for "${config.store}". Currently supported: memory, sqlserver, postgres, mysql, sqlite, supabase.`);
53
107
  }
54
108
  //# sourceMappingURL=resolver.js.map