@syncular/cli 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/args.d.ts +6 -0
- package/dist/args.d.ts.map +1 -0
- package/dist/args.js +92 -0
- package/dist/args.js.map +1 -0
- package/dist/commands/create.d.ts +8 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +423 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +15 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/migrate.d.ts +4 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +114 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +118 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.d.ts +18 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +108 -0
- package/dist/constants.js.map +1 -0
- package/dist/create-libraries-wizard.d.ts +8 -0
- package/dist/create-libraries-wizard.d.ts.map +1 -0
- package/dist/create-libraries-wizard.js +428 -0
- package/dist/create-libraries-wizard.js.map +1 -0
- package/dist/doctor.d.ts +3 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +53 -0
- package/dist/doctor.js.map +1 -0
- package/dist/help.d.ts +2 -0
- package/dist/help.d.ts.map +1 -0
- package/dist/help.js +52 -0
- package/dist/help.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/interactive.d.ts +5 -0
- package/dist/interactive.d.ts.map +1 -0
- package/dist/interactive.js +180 -0
- package/dist/interactive.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +118 -0
- package/dist/main.js.map +1 -0
- package/dist/output.d.ts +3 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +8 -0
- package/dist/output.js.map +1 -0
- package/dist/template.d.ts +8 -0
- package/dist/template.d.ts.map +1 -0
- package/dist/template.js +26 -0
- package/dist/template.js.map +1 -0
- package/dist/types.d.ts +101 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/package.json +52 -0
- package/templates/demo/index.html.tpl +12 -0
- package/templates/demo/package.json.tpl +40 -0
- package/templates/demo/src/client/App.tsx.tpl +137 -0
- package/templates/demo/src/client/main.tsx.tpl +15 -0
- package/templates/demo/src/client/styles.css.tpl +93 -0
- package/templates/demo/src/client/syncular.ts.tpl +109 -0
- package/templates/demo/src/server/index.ts.tpl +58 -0
- package/templates/demo/src/shared/db.ts.tpl +40 -0
- package/templates/demo/syncular-migrate.ts.tpl +79 -0
- package/templates/demo/syncular-typegen.ts.tpl +23 -0
- package/templates/demo/syncular.config.json.tpl +7 -0
- package/templates/demo/tsconfig.json.tpl +12 -0
- package/templates/demo/vite.config.ts.tpl +15 -0
- package/templates/libraries/syncular-electron.ts.tpl +36 -0
- package/templates/libraries/syncular-expo.ts.tpl +32 -0
- package/templates/libraries/syncular-migrate.ts.tpl +81 -0
- package/templates/libraries/syncular-proxy-api.ts.tpl +32 -0
- package/templates/libraries/syncular-react-native.ts.tpl +32 -0
- package/templates/libraries/syncular-react.ts.tpl +27 -0
- package/templates/libraries/syncular-server.postgres.ts.tpl +40 -0
- package/templates/libraries/syncular-server.sqlite.ts.tpl +34 -0
- package/templates/libraries/syncular-typegen.ts.tpl +29 -0
- package/templates/libraries/syncular-vanilla.ts.tpl +38 -0
- package/templates/libraries/syncular.config.json.tpl +9 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import process from 'node:process';
|
|
2
|
+
import { configPathFromArgs, loadMigrationAdapter } from '../config.js';
|
|
3
|
+
function parseChecksumMode(args) {
|
|
4
|
+
const value = args.flagValues.get('--on-checksum-mismatch');
|
|
5
|
+
if (!value)
|
|
6
|
+
return 'error';
|
|
7
|
+
if (value === 'error' || value === 'reset')
|
|
8
|
+
return value;
|
|
9
|
+
return {
|
|
10
|
+
error: 'Invalid value for --on-checksum-mismatch. Use "error" or "reset".',
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function formatStatusResult(result) {
|
|
14
|
+
const pendingLabel = result.pendingVersions.length === 0
|
|
15
|
+
? '(none)'
|
|
16
|
+
: result.pendingVersions.join(', ');
|
|
17
|
+
return {
|
|
18
|
+
title: 'Migrate Status',
|
|
19
|
+
ok: true,
|
|
20
|
+
lines: [
|
|
21
|
+
`Current version: ${result.currentVersion}`,
|
|
22
|
+
`Target version: ${result.targetVersion}`,
|
|
23
|
+
`Pending versions: ${pendingLabel}`,
|
|
24
|
+
...(result.trackingTable
|
|
25
|
+
? [`Tracking table: ${result.trackingTable}`]
|
|
26
|
+
: []),
|
|
27
|
+
],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export async function runMigrateStatus(args) {
|
|
31
|
+
const cwd = process.cwd();
|
|
32
|
+
const configPath = configPathFromArgs(args, cwd);
|
|
33
|
+
const loaded = await loadMigrationAdapter({ configPath });
|
|
34
|
+
if ('error' in loaded) {
|
|
35
|
+
return {
|
|
36
|
+
title: 'Migrate Status',
|
|
37
|
+
ok: false,
|
|
38
|
+
lines: [loaded.error],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const result = await loaded.adapter.status({ cwd });
|
|
43
|
+
return formatStatusResult(result);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
47
|
+
return {
|
|
48
|
+
title: 'Migrate Status',
|
|
49
|
+
ok: false,
|
|
50
|
+
lines: [`Adapter status() failed: ${message}`],
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export async function runMigrateUp(args) {
|
|
55
|
+
const modeValue = parseChecksumMode(args);
|
|
56
|
+
if (typeof modeValue !== 'string') {
|
|
57
|
+
return {
|
|
58
|
+
title: 'Migrate Up',
|
|
59
|
+
ok: false,
|
|
60
|
+
lines: [modeValue.error],
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
if (modeValue === 'reset' && !args.flags.has('--yes')) {
|
|
64
|
+
return {
|
|
65
|
+
title: 'Migrate Up',
|
|
66
|
+
ok: false,
|
|
67
|
+
lines: [
|
|
68
|
+
'Reset mode requires explicit confirmation.',
|
|
69
|
+
'Re-run with: --on-checksum-mismatch reset --yes',
|
|
70
|
+
],
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
const cwd = process.cwd();
|
|
74
|
+
const dryRun = args.flags.has('--dry-run');
|
|
75
|
+
const configPath = configPathFromArgs(args, cwd);
|
|
76
|
+
const loaded = await loadMigrationAdapter({ configPath });
|
|
77
|
+
if ('error' in loaded) {
|
|
78
|
+
return {
|
|
79
|
+
title: 'Migrate Up',
|
|
80
|
+
ok: false,
|
|
81
|
+
lines: [loaded.error],
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
const result = await loaded.adapter.up({
|
|
86
|
+
cwd,
|
|
87
|
+
onChecksumMismatch: modeValue,
|
|
88
|
+
dryRun,
|
|
89
|
+
});
|
|
90
|
+
const appliedLabel = result.appliedVersions.length === 0
|
|
91
|
+
? '(none)'
|
|
92
|
+
: result.appliedVersions.join(', ');
|
|
93
|
+
return {
|
|
94
|
+
title: 'Migrate Up',
|
|
95
|
+
ok: true,
|
|
96
|
+
lines: [
|
|
97
|
+
`Applied versions: ${appliedLabel}`,
|
|
98
|
+
`Current version: ${result.currentVersion}`,
|
|
99
|
+
`Checksum mismatch mode: ${modeValue}`,
|
|
100
|
+
...(result.wasReset ? ['Reset occurred: yes'] : ['Reset occurred: no']),
|
|
101
|
+
...(result.dryRun ? ['Dry run: yes'] : dryRun ? ['Dry run: yes'] : []),
|
|
102
|
+
],
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
107
|
+
return {
|
|
108
|
+
title: 'Migrate Up',
|
|
109
|
+
ok: false,
|
|
110
|
+
lines: [`Adapter up() failed: ${message}`],
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { MigrationAdapter, ParsedArgs } from './types';
|
|
2
|
+
export declare function loadMigrationAdapter(args: {
|
|
3
|
+
configPath: string;
|
|
4
|
+
}): Promise<{
|
|
5
|
+
adapter: MigrationAdapter;
|
|
6
|
+
} | {
|
|
7
|
+
error: string;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function configPathFromArgs(args: ParsedArgs, cwd: string): string;
|
|
10
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAqB,MAAM,SAAS,CAAC;AAuF/E,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA0C7D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGxE"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { dirname, resolve } from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { DEFAULT_CONFIG_PATH, DEFAULT_MIGRATE_EXPORT } from './constants.js';
|
|
5
|
+
function isRecord(value) {
|
|
6
|
+
return typeof value === 'object' && value !== null;
|
|
7
|
+
}
|
|
8
|
+
function parseConfig(value) {
|
|
9
|
+
if (!isRecord(value)) {
|
|
10
|
+
return { error: 'Config must be a JSON object.' };
|
|
11
|
+
}
|
|
12
|
+
const config = {};
|
|
13
|
+
if (value.project !== undefined) {
|
|
14
|
+
if (!isRecord(value.project)) {
|
|
15
|
+
return {
|
|
16
|
+
error: 'Config field "project" must be an object when provided.',
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const migrateValue = value.migrate;
|
|
21
|
+
if (migrateValue !== undefined) {
|
|
22
|
+
if (!isRecord(migrateValue)) {
|
|
23
|
+
return { error: 'Config field "migrate" must be an object.' };
|
|
24
|
+
}
|
|
25
|
+
const adapter = migrateValue.adapter;
|
|
26
|
+
const exportName = migrateValue.export;
|
|
27
|
+
if (typeof adapter !== 'string' || adapter.length === 0) {
|
|
28
|
+
return {
|
|
29
|
+
error: 'Config field "migrate.adapter" must be a non-empty string.',
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
if (exportName !== undefined &&
|
|
33
|
+
(typeof exportName !== 'string' || exportName.length === 0)) {
|
|
34
|
+
return {
|
|
35
|
+
error: 'Config field "migrate.export" must be a non-empty string when provided.',
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
config.migrate = {
|
|
39
|
+
adapter,
|
|
40
|
+
...(exportName ? { export: exportName } : {}),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
return config;
|
|
44
|
+
}
|
|
45
|
+
async function loadConfig(configPath) {
|
|
46
|
+
let raw;
|
|
47
|
+
try {
|
|
48
|
+
raw = await readFile(configPath, 'utf8');
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return {
|
|
52
|
+
error: `Config not found at ${configPath}. Run "syncular init" first.`,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
let parsed;
|
|
56
|
+
try {
|
|
57
|
+
parsed = JSON.parse(raw);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return {
|
|
61
|
+
error: `Config at ${configPath} is not valid JSON.`,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const normalized = parseConfig(parsed);
|
|
65
|
+
if ('error' in normalized) {
|
|
66
|
+
return {
|
|
67
|
+
error: `${normalized.error} (path: ${configPath})`,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
return { config: normalized };
|
|
71
|
+
}
|
|
72
|
+
function isMigrationAdapter(value) {
|
|
73
|
+
if (!isRecord(value))
|
|
74
|
+
return false;
|
|
75
|
+
return typeof value.status === 'function' && typeof value.up === 'function';
|
|
76
|
+
}
|
|
77
|
+
export async function loadMigrationAdapter(args) {
|
|
78
|
+
const loaded = await loadConfig(args.configPath);
|
|
79
|
+
if ('error' in loaded)
|
|
80
|
+
return loaded;
|
|
81
|
+
const migrate = loaded.config.migrate;
|
|
82
|
+
if (!migrate) {
|
|
83
|
+
return {
|
|
84
|
+
error: 'Config does not define "migrate". Run "syncular init" to scaffold adapter files.',
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const adapterModulePath = resolve(dirname(args.configPath), migrate.adapter);
|
|
88
|
+
const adapterExportName = migrate.export ?? DEFAULT_MIGRATE_EXPORT;
|
|
89
|
+
let moduleValue;
|
|
90
|
+
try {
|
|
91
|
+
const moduleUrl = pathToFileURL(adapterModulePath).href;
|
|
92
|
+
moduleValue = await import(moduleUrl);
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
96
|
+
return {
|
|
97
|
+
error: `Failed to load migrate adapter module (${adapterModulePath}): ${message}`,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
if (!isRecord(moduleValue)) {
|
|
101
|
+
return {
|
|
102
|
+
error: `Adapter module ${adapterModulePath} did not load as an object module.`,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
const exportValue = moduleValue[adapterExportName];
|
|
106
|
+
if (!isMigrationAdapter(exportValue)) {
|
|
107
|
+
return {
|
|
108
|
+
error: `Adapter export "${adapterExportName}" in ${adapterModulePath} is missing ` +
|
|
109
|
+
'required methods: status() and up().',
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
return { adapter: exportValue };
|
|
113
|
+
}
|
|
114
|
+
export function configPathFromArgs(args, cwd) {
|
|
115
|
+
const configured = args.flagValues.get('--config') ?? DEFAULT_CONFIG_PATH;
|
|
116
|
+
return resolve(cwd, configured);
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ClientDialect, ClientDialectTemplateData, ElectronDialect, ElectronDialectTemplateData, LibrariesTarget, ServerDialect, ServerDialectTemplateData } from './types';
|
|
2
|
+
export declare const CLI_VERSION: string;
|
|
3
|
+
export declare const DEFAULT_CONFIG_PATH = "syncular.config.json";
|
|
4
|
+
export declare const DEFAULT_MIGRATE_EXPORT = "migrationRunner";
|
|
5
|
+
export declare const LIBRARIES_TARGETS: LibrariesTarget[];
|
|
6
|
+
export declare const DEFAULT_LIBRARIES_TARGETS: LibrariesTarget[];
|
|
7
|
+
export declare const CLIENT_DIALECT_TEMPLATES: Record<ClientDialect, ClientDialectTemplateData>;
|
|
8
|
+
export declare const ELECTRON_DIALECT_TEMPLATES: Record<ElectronDialect, ElectronDialectTemplateData>;
|
|
9
|
+
export declare const SERVER_DIALECT_TEMPLATES: Record<ServerDialect, ServerDialectTemplateData>;
|
|
10
|
+
export declare const BASE_CLIENT_PACKAGES: string[];
|
|
11
|
+
export declare const BASE_SCRIPT_COMMANDS: {
|
|
12
|
+
readonly migrateStatus: "syncular migrate status --config syncular.config.json";
|
|
13
|
+
readonly migrate: "syncular migrate up --config syncular.config.json";
|
|
14
|
+
readonly migrateReset: "syncular migrate up --config syncular.config.json --on-checksum-mismatch reset --yes";
|
|
15
|
+
readonly typegen: "bun run scripts/syncular-typegen.ts";
|
|
16
|
+
readonly prepare: "bun run db:migrate && bun run db:typegen";
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,yBAAyB,EACzB,eAAe,EACf,2BAA2B,EAC3B,eAAe,EACf,aAAa,EACb,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,WAAW,QAA6C,CAAC;AACtE,eAAO,MAAM,mBAAmB,yBAAyB,CAAC;AAC1D,eAAO,MAAM,sBAAsB,oBAAoB,CAAC;AAExD,eAAO,MAAM,iBAAiB,EAAE,eAAe,EAQ9C,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,eAAe,EAAwB,CAAC;AAEhF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAC3C,aAAa,EACb,yBAAyB,CA6C1B,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAC7C,eAAe,EACf,2BAA2B,CAmB5B,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAC3C,aAAa,EACb,yBAAyB,CA4B1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAIhC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;CAOvB,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import process from 'node:process';
|
|
2
|
+
export const CLI_VERSION = process.env.npm_package_version ?? '0.0.0';
|
|
3
|
+
export const DEFAULT_CONFIG_PATH = 'syncular.config.json';
|
|
4
|
+
export const DEFAULT_MIGRATE_EXPORT = 'migrationRunner';
|
|
5
|
+
export const LIBRARIES_TARGETS = [
|
|
6
|
+
'server',
|
|
7
|
+
'react',
|
|
8
|
+
'vanilla',
|
|
9
|
+
'expo',
|
|
10
|
+
'react-native',
|
|
11
|
+
'electron',
|
|
12
|
+
'proxy-api',
|
|
13
|
+
];
|
|
14
|
+
export const DEFAULT_LIBRARIES_TARGETS = ['server', 'react'];
|
|
15
|
+
export const CLIENT_DIALECT_TEMPLATES = {
|
|
16
|
+
'wa-sqlite': {
|
|
17
|
+
id: 'wa-sqlite',
|
|
18
|
+
label: 'Browser WA-SQLite',
|
|
19
|
+
importStatement: "import { createWaSqliteDb } from '@syncular/dialect-wa-sqlite';",
|
|
20
|
+
dbFactoryLine: "return createWaSqliteDb<DB>({ fileName: 'app.sqlite' });",
|
|
21
|
+
installPackages: ['@syncular/dialect-wa-sqlite'],
|
|
22
|
+
},
|
|
23
|
+
pglite: {
|
|
24
|
+
id: 'pglite',
|
|
25
|
+
label: 'Browser PGlite',
|
|
26
|
+
importStatement: "import { createPgliteDb } from '@syncular/dialect-pglite';",
|
|
27
|
+
dbFactoryLine: 'return createPgliteDb<DB>();',
|
|
28
|
+
installPackages: ['@syncular/dialect-pglite'],
|
|
29
|
+
},
|
|
30
|
+
'bun-sqlite': {
|
|
31
|
+
id: 'bun-sqlite',
|
|
32
|
+
label: 'Bun SQLite',
|
|
33
|
+
importStatement: "import { createBunSqliteDb } from '@syncular/dialect-bun-sqlite';",
|
|
34
|
+
dbFactoryLine: "return createBunSqliteDb<DB>({ path: './data/client.sqlite' });",
|
|
35
|
+
installPackages: ['@syncular/dialect-bun-sqlite'],
|
|
36
|
+
},
|
|
37
|
+
'better-sqlite3': {
|
|
38
|
+
id: 'better-sqlite3',
|
|
39
|
+
label: 'Node better-sqlite3',
|
|
40
|
+
importStatement: "import { createBetterSqlite3Db } from '@syncular/dialect-better-sqlite3';",
|
|
41
|
+
dbFactoryLine: "return createBetterSqlite3Db<DB>({ path: './data/client.sqlite' });",
|
|
42
|
+
installPackages: ['@syncular/dialect-better-sqlite3'],
|
|
43
|
+
},
|
|
44
|
+
sqlite3: {
|
|
45
|
+
id: 'sqlite3',
|
|
46
|
+
label: 'Node sqlite3',
|
|
47
|
+
importStatement: "import { createSqlite3Db } from '@syncular/dialect-sqlite3';",
|
|
48
|
+
dbFactoryLine: "return createSqlite3Db<DB>({ path: './data/client.sqlite' });",
|
|
49
|
+
installPackages: ['@syncular/dialect-sqlite3'],
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
export const ELECTRON_DIALECT_TEMPLATES = {
|
|
53
|
+
'electron-sqlite': {
|
|
54
|
+
id: 'electron-sqlite',
|
|
55
|
+
label: 'Electron IPC SQLite',
|
|
56
|
+
importStatement: "import { createElectronSqliteDbFromWindow } from '@syncular/dialect-electron-sqlite';",
|
|
57
|
+
dbFactoryLine: 'return createElectronSqliteDbFromWindow<DB>();',
|
|
58
|
+
installPackages: ['@syncular/dialect-electron-sqlite'],
|
|
59
|
+
},
|
|
60
|
+
'better-sqlite3': {
|
|
61
|
+
id: 'better-sqlite3',
|
|
62
|
+
label: 'Node better-sqlite3',
|
|
63
|
+
importStatement: "import { createBetterSqlite3Db } from '@syncular/dialect-better-sqlite3';",
|
|
64
|
+
dbFactoryLine: "return createBetterSqlite3Db<DB>({ path: './data/electron-client.sqlite' });",
|
|
65
|
+
installPackages: ['@syncular/dialect-better-sqlite3'],
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
export const SERVER_DIALECT_TEMPLATES = {
|
|
69
|
+
postgres: {
|
|
70
|
+
id: 'postgres',
|
|
71
|
+
label: 'Postgres',
|
|
72
|
+
installPackages: [
|
|
73
|
+
'@syncular/server',
|
|
74
|
+
'@syncular/server-hono',
|
|
75
|
+
'@syncular/server-dialect-postgres',
|
|
76
|
+
'kysely',
|
|
77
|
+
'pg',
|
|
78
|
+
'hono',
|
|
79
|
+
],
|
|
80
|
+
templateFile: 'libraries/syncular-server.postgres.ts.tpl',
|
|
81
|
+
},
|
|
82
|
+
sqlite: {
|
|
83
|
+
id: 'sqlite',
|
|
84
|
+
label: 'SQLite',
|
|
85
|
+
installPackages: [
|
|
86
|
+
'@syncular/server',
|
|
87
|
+
'@syncular/server-hono',
|
|
88
|
+
'@syncular/server-dialect-sqlite',
|
|
89
|
+
'@syncular/dialect-bun-sqlite',
|
|
90
|
+
'kysely',
|
|
91
|
+
'hono',
|
|
92
|
+
],
|
|
93
|
+
templateFile: 'libraries/syncular-server.sqlite.ts.tpl',
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
export const BASE_CLIENT_PACKAGES = [
|
|
97
|
+
'@syncular/client',
|
|
98
|
+
'@syncular/transport-http',
|
|
99
|
+
'kysely',
|
|
100
|
+
];
|
|
101
|
+
export const BASE_SCRIPT_COMMANDS = {
|
|
102
|
+
migrateStatus: 'syncular migrate status --config syncular.config.json',
|
|
103
|
+
migrate: 'syncular migrate up --config syncular.config.json',
|
|
104
|
+
migrateReset: 'syncular migrate up --config syncular.config.json --on-checksum-mismatch reset --yes',
|
|
105
|
+
typegen: 'bun run scripts/syncular-typegen.ts',
|
|
106
|
+
prepare: 'bun run db:migrate && bun run db:typegen',
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CommandResult, ParsedArgs } from './types';
|
|
2
|
+
interface CreateLibrariesWizardProps {
|
|
3
|
+
args: ParsedArgs;
|
|
4
|
+
onClose?: (result: CommandResult | null) => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function CreateLibrariesWizardApp(props: CreateLibrariesWizardProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=create-libraries-wizard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-libraries-wizard.d.ts","sourceRoot":"","sources":["../src/create-libraries-wizard.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAEV,aAAa,EAIb,UAAU,EAEX,MAAM,SAAS,CAAC;AAmBjB,UAAU,0BAA0B;IAClC,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC;CAClD;AA4OD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,0BAA0B,2CAkTzE"}
|