create-chaaskit 0.1.4 → 0.1.6
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/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +12 -21
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/sync.d.ts +7 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +360 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/managed-routes.d.ts +10 -0
- package/dist/lib/managed-routes.d.ts.map +1 -0
- package/dist/lib/managed-routes.js +110 -0
- package/dist/lib/managed-routes.js.map +1 -0
- package/dist/lib/routes-updater.d.ts +26 -0
- package/dist/lib/routes-updater.d.ts.map +1 -0
- package/dist/lib/routes-updater.js +102 -0
- package/dist/lib/routes-updater.js.map +1 -0
- package/dist/lib/types.d.ts +15 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/wrapper-gen.d.ts +10 -0
- package/dist/lib/wrapper-gen.d.ts.map +1 -0
- package/dist/lib/wrapper-gen.js +27 -0
- package/dist/lib/wrapper-gen.js.map +1 -0
- package/package.json +1 -1
- package/dist/templates/app/routes/chat._index.tsx +0 -11
- package/dist/templates/app/routes/chat.admin._index.tsx +0 -10
- package/dist/templates/app/routes/chat.admin.promo-codes.tsx +0 -10
- package/dist/templates/app/routes/chat.admin.teams.$teamId.tsx +0 -10
- package/dist/templates/app/routes/chat.admin.teams._index.tsx +0 -10
- package/dist/templates/app/routes/chat.admin.users.tsx +0 -10
- package/dist/templates/app/routes/chat.admin.waitlist.tsx +0 -10
- package/dist/templates/app/routes/chat.api-keys.tsx +0 -10
- package/dist/templates/app/routes/chat.automations.tsx +0 -10
- package/dist/templates/app/routes/chat.documents.tsx +0 -10
- package/dist/templates/app/routes/chat.team.$teamId.settings.tsx +0 -10
- package/dist/templates/app/routes/chat.thread.$threadId.tsx +0 -11
- package/dist/templates/app/routes/invite.$token.tsx +0 -10
- package/dist/templates/app/routes/oauth.consent.tsx +0 -10
- package/dist/templates/app/routes/pricing.tsx +0 -10
- package/dist/templates/app/routes/verify-email.tsx +0 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAkBA,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqG/F"}
|
package/dist/commands/init.js
CHANGED
|
@@ -5,6 +5,8 @@ import chalk from 'chalk';
|
|
|
5
5
|
import ora from 'ora';
|
|
6
6
|
import prompts from 'prompts';
|
|
7
7
|
import { spawn } from 'child_process';
|
|
8
|
+
import { managedRoutes } from '../lib/managed-routes.js';
|
|
9
|
+
import { generateWrapper } from '../lib/wrapper-gen.js';
|
|
8
10
|
const __filename = fileURLToPath(import.meta.url);
|
|
9
11
|
const __dirname = path.dirname(__filename);
|
|
10
12
|
// Convert project name to database name (replace dashes/spaces with underscores, lowercase)
|
|
@@ -112,8 +114,8 @@ async function copyTemplateFiles(templatesPath, targetPath, projectName) {
|
|
|
112
114
|
await fs.ensureDir(path.join(targetPath, 'prisma', 'schema'));
|
|
113
115
|
await fs.ensureDir(path.join(targetPath, 'public'));
|
|
114
116
|
// Copy template files
|
|
115
|
-
// Note:
|
|
116
|
-
//
|
|
117
|
+
// Note: Thin wrapper routes are generated from the route registry (single source of truth).
|
|
118
|
+
// Only user-owned templates (login, register, etc.) are copied from the templates directory.
|
|
117
119
|
const templates = [
|
|
118
120
|
// React Router app files
|
|
119
121
|
{ src: 'app/routes.ts', dest: 'app/routes.ts' },
|
|
@@ -124,32 +126,15 @@ async function copyTemplateFiles(templatesPath, targetPath, projectName) {
|
|
|
124
126
|
{ src: 'app/styles/app.css', dest: 'app/styles/app.css' },
|
|
125
127
|
// ClientOnly re-export for convenience
|
|
126
128
|
{ src: 'app/components/ClientOnly.tsx', dest: 'app/components/ClientOnly.tsx' },
|
|
127
|
-
//
|
|
129
|
+
// User-owned route templates (full custom pages, NOT thin wrappers)
|
|
128
130
|
{ src: 'app/routes/_index.tsx', dest: 'app/routes/_index.tsx' },
|
|
129
131
|
{ src: 'app/routes/login.tsx', dest: 'app/routes/login.tsx' },
|
|
130
132
|
{ src: 'app/routes/register.tsx', dest: 'app/routes/register.tsx' },
|
|
131
133
|
{ src: 'app/routes/shared.$shareId.tsx', dest: 'app/routes/shared.$shareId.tsx' },
|
|
132
134
|
{ src: 'app/routes/terms.tsx', dest: 'app/routes/terms.tsx' },
|
|
133
135
|
{ src: 'app/routes/privacy.tsx', dest: 'app/routes/privacy.tsx' },
|
|
134
|
-
|
|
135
|
-
{ src: 'app/routes/invite.$token.tsx', dest: 'app/routes/invite.$token.tsx' },
|
|
136
|
-
{ src: 'app/routes/pricing.tsx', dest: 'app/routes/pricing.tsx' },
|
|
137
|
-
{ src: 'app/routes/oauth.consent.tsx', dest: 'app/routes/oauth.consent.tsx' },
|
|
138
|
-
// Authenticated routes (under basePath, e.g., /chat/*)
|
|
139
|
-
// Layout route that handles authentication for all chat.* routes
|
|
136
|
+
// Layout route (user-owned, handles auth guard)
|
|
140
137
|
{ src: 'app/routes/chat.tsx', dest: 'app/routes/chat.tsx' },
|
|
141
|
-
{ src: 'app/routes/chat._index.tsx', dest: 'app/routes/chat._index.tsx' },
|
|
142
|
-
{ src: 'app/routes/chat.thread.$threadId.tsx', dest: 'app/routes/chat.thread.$threadId.tsx' },
|
|
143
|
-
{ src: 'app/routes/chat.api-keys.tsx', dest: 'app/routes/chat.api-keys.tsx' },
|
|
144
|
-
{ src: 'app/routes/chat.documents.tsx', dest: 'app/routes/chat.documents.tsx' },
|
|
145
|
-
{ src: 'app/routes/chat.automations.tsx', dest: 'app/routes/chat.automations.tsx' },
|
|
146
|
-
{ src: 'app/routes/chat.team.$teamId.settings.tsx', dest: 'app/routes/chat.team.$teamId.settings.tsx' },
|
|
147
|
-
{ src: 'app/routes/chat.admin._index.tsx', dest: 'app/routes/chat.admin._index.tsx' },
|
|
148
|
-
{ src: 'app/routes/chat.admin.users.tsx', dest: 'app/routes/chat.admin.users.tsx' },
|
|
149
|
-
{ src: 'app/routes/chat.admin.waitlist.tsx', dest: 'app/routes/chat.admin.waitlist.tsx' },
|
|
150
|
-
{ src: 'app/routes/chat.admin.promo-codes.tsx', dest: 'app/routes/chat.admin.promo-codes.tsx' },
|
|
151
|
-
{ src: 'app/routes/chat.admin.teams._index.tsx', dest: 'app/routes/chat.admin.teams._index.tsx' },
|
|
152
|
-
{ src: 'app/routes/chat.admin.teams.$teamId.tsx', dest: 'app/routes/chat.admin.teams.$teamId.tsx' },
|
|
153
138
|
// Config
|
|
154
139
|
{ src: 'config/app.config.ts', dest: 'config/app.config.ts' },
|
|
155
140
|
{ src: 'react-router.config.ts', dest: 'react-router.config.ts' },
|
|
@@ -199,6 +184,12 @@ async function copyTemplateFiles(templatesPath, targetPath, projectName) {
|
|
|
199
184
|
}
|
|
200
185
|
}
|
|
201
186
|
}
|
|
187
|
+
// Generate thin wrapper route files from the route registry (single source of truth)
|
|
188
|
+
for (const route of managedRoutes) {
|
|
189
|
+
const destPath = path.join(targetPath, 'app', route.file);
|
|
190
|
+
const content = generateWrapper(route);
|
|
191
|
+
await fs.outputFile(destPath, content);
|
|
192
|
+
}
|
|
202
193
|
}
|
|
203
194
|
function runCommand(command, args, options) {
|
|
204
195
|
return new Promise((resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAaA,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AA4BD,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwRnE"}
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import prompts from 'prompts';
|
|
6
|
+
import { createRequire } from 'module';
|
|
7
|
+
import { generateWrapper, isThinWrapper } from '../lib/wrapper-gen.js';
|
|
8
|
+
import { insertRoutes, routeExistsInConfig } from '../lib/routes-updater.js';
|
|
9
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
10
|
+
const __dirname = path.dirname(__filename);
|
|
11
|
+
/**
|
|
12
|
+
* The framework files that sync manages (these are files consumers shouldn't
|
|
13
|
+
* normally customize, or should be kept in sync with the template).
|
|
14
|
+
*/
|
|
15
|
+
const FRAMEWORK_FILES = [
|
|
16
|
+
'app/root.tsx',
|
|
17
|
+
'app/entry.client.tsx',
|
|
18
|
+
'app/entry.server.tsx',
|
|
19
|
+
'app/components/ClientOnly.tsx',
|
|
20
|
+
'server.js',
|
|
21
|
+
];
|
|
22
|
+
export async function sync(options = {}) {
|
|
23
|
+
const cwd = process.cwd();
|
|
24
|
+
const { dryRun, yes } = options;
|
|
25
|
+
if (dryRun) {
|
|
26
|
+
console.log(chalk.dim('(dry run — no files will be written)\n'));
|
|
27
|
+
}
|
|
28
|
+
// Step 1: Load route registry from installed @chaaskit/client
|
|
29
|
+
const managedRoutes = await loadRouteRegistry(cwd);
|
|
30
|
+
if (!managedRoutes)
|
|
31
|
+
return;
|
|
32
|
+
const clientPkg = await loadClientPackageVersion(cwd);
|
|
33
|
+
console.log(`Reading route registry from ${chalk.cyan(`@chaaskit/client@${clientPkg}`)}...\n`);
|
|
34
|
+
// Step 2: Check managed routes
|
|
35
|
+
const routeStatuses = await checkManagedRoutes(cwd, managedRoutes);
|
|
36
|
+
// Step 3: Check framework files
|
|
37
|
+
const frameworkStatuses = await checkFrameworkFiles(cwd);
|
|
38
|
+
// Step 4: Check routes.ts for missing entries
|
|
39
|
+
const routesFilePath = path.join(cwd, 'app', 'routes.ts');
|
|
40
|
+
let routesContent = '';
|
|
41
|
+
let routesFileExists = false;
|
|
42
|
+
try {
|
|
43
|
+
routesContent = await fs.readFile(routesFilePath, 'utf-8');
|
|
44
|
+
routesFileExists = true;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// routes.ts doesn't exist
|
|
48
|
+
}
|
|
49
|
+
const missingFromRoutesTs = routesFileExists
|
|
50
|
+
? managedRoutes.filter((r) => !routeExistsInConfig(routesContent, r.file))
|
|
51
|
+
: [];
|
|
52
|
+
// Step 5: Present status
|
|
53
|
+
const newRoutes = routeStatuses.filter((s) => s.status === 'new');
|
|
54
|
+
const updatableRoutes = routeStatuses.filter((s) => s.status === 'updatable');
|
|
55
|
+
const customizedRoutes = routeStatuses.filter((s) => s.status === 'customized');
|
|
56
|
+
const upToDateRoutes = routeStatuses.filter((s) => s.status === 'up-to-date');
|
|
57
|
+
const newFramework = frameworkStatuses.filter((s) => s.status === 'new');
|
|
58
|
+
const differsFramework = frameworkStatuses.filter((s) => s.status === 'differs');
|
|
59
|
+
const upToDateFramework = frameworkStatuses.filter((s) => s.status === 'up-to-date');
|
|
60
|
+
if (newRoutes.length > 0) {
|
|
61
|
+
console.log(chalk.green('New routes:'));
|
|
62
|
+
for (const s of newRoutes) {
|
|
63
|
+
console.log(` ${chalk.green('+')} app/${s.route.file} ${chalk.dim(s.route.title)}`);
|
|
64
|
+
}
|
|
65
|
+
console.log();
|
|
66
|
+
}
|
|
67
|
+
if (updatableRoutes.length > 0) {
|
|
68
|
+
console.log(chalk.yellow('Updatable routes (thin wrappers with outdated content):'));
|
|
69
|
+
for (const s of updatableRoutes) {
|
|
70
|
+
console.log(` ${chalk.yellow('~')} app/${s.route.file} ${chalk.dim(s.route.title)}`);
|
|
71
|
+
}
|
|
72
|
+
console.log();
|
|
73
|
+
}
|
|
74
|
+
if (customizedRoutes.length > 0) {
|
|
75
|
+
console.log(chalk.blue('User-customized routes (skipped):'));
|
|
76
|
+
for (const s of customizedRoutes) {
|
|
77
|
+
console.log(` ${chalk.blue('•')} app/${s.route.file} ${chalk.dim('(not a thin wrapper)')}`);
|
|
78
|
+
}
|
|
79
|
+
console.log();
|
|
80
|
+
}
|
|
81
|
+
if (differsFramework.length > 0 || newFramework.length > 0) {
|
|
82
|
+
console.log(chalk.yellow('Framework updates:'));
|
|
83
|
+
for (const s of newFramework) {
|
|
84
|
+
console.log(` ${chalk.green('+')} ${s.relativePath} ${chalk.dim('(new)')}`);
|
|
85
|
+
}
|
|
86
|
+
for (const s of differsFramework) {
|
|
87
|
+
console.log(` ${chalk.yellow('~')} ${s.relativePath} ${chalk.dim('(differs from template)')}`);
|
|
88
|
+
}
|
|
89
|
+
console.log();
|
|
90
|
+
}
|
|
91
|
+
// Only count routes that have their file AND are in routes.ts
|
|
92
|
+
const missingOnlyFromRoutesTs = missingFromRoutesTs.filter((r) => {
|
|
93
|
+
// Only show as missing from routes.ts if the file exists or will be created
|
|
94
|
+
const routeStatus = routeStatuses.find((s) => s.route.file === r.file);
|
|
95
|
+
return routeStatus && (routeStatus.status === 'up-to-date' || routeStatus.status === 'updatable' || routeStatus.status === 'customized');
|
|
96
|
+
});
|
|
97
|
+
if (missingOnlyFromRoutesTs.length > 0) {
|
|
98
|
+
console.log(chalk.yellow('Missing from routes.ts:'));
|
|
99
|
+
for (const r of missingOnlyFromRoutesTs) {
|
|
100
|
+
console.log(` ${chalk.yellow('+')} ${r.file}`);
|
|
101
|
+
}
|
|
102
|
+
console.log();
|
|
103
|
+
}
|
|
104
|
+
const totalUpToDate = upToDateRoutes.length + upToDateFramework.length;
|
|
105
|
+
if (totalUpToDate > 0) {
|
|
106
|
+
console.log(chalk.dim(`Up to date (${totalUpToDate} files)`));
|
|
107
|
+
console.log();
|
|
108
|
+
}
|
|
109
|
+
// Check if there's anything to do
|
|
110
|
+
const hasNewRoutes = newRoutes.length > 0;
|
|
111
|
+
const hasUpdatableRoutes = updatableRoutes.length > 0;
|
|
112
|
+
const hasFrameworkUpdates = differsFramework.length > 0 || newFramework.length > 0;
|
|
113
|
+
const hasMissingRouteEntries = missingFromRoutesTs.length > 0 &&
|
|
114
|
+
(hasNewRoutes || missingOnlyFromRoutesTs.length > 0);
|
|
115
|
+
if (!hasNewRoutes && !hasUpdatableRoutes && !hasFrameworkUpdates && !hasMissingRouteEntries) {
|
|
116
|
+
console.log(chalk.green('Everything is up to date!'));
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (dryRun) {
|
|
120
|
+
console.log(chalk.dim('Dry run complete. No files were written.'));
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
// Step 6: Confirm and execute
|
|
124
|
+
let createdRoutes = 0;
|
|
125
|
+
let updatedRoutes = 0;
|
|
126
|
+
let routesAddedToConfig = 0;
|
|
127
|
+
let frameworkUpdated = 0;
|
|
128
|
+
// Create new routes + update outdated thin wrappers
|
|
129
|
+
if (hasNewRoutes || hasUpdatableRoutes) {
|
|
130
|
+
const routeActions = [
|
|
131
|
+
...(hasNewRoutes ? [`create ${newRoutes.length} new route(s)`] : []),
|
|
132
|
+
...(hasUpdatableRoutes ? [`update ${updatableRoutes.length} outdated wrapper(s)`] : []),
|
|
133
|
+
];
|
|
134
|
+
const routeMsg = `${routeActions.join(' and ')}${hasNewRoutes ? ' (and add to routes.ts)' : ''}`;
|
|
135
|
+
let confirm = yes;
|
|
136
|
+
if (!confirm) {
|
|
137
|
+
const response = await prompts({
|
|
138
|
+
type: 'confirm',
|
|
139
|
+
name: 'value',
|
|
140
|
+
message: `${routeMsg}?`,
|
|
141
|
+
initial: true,
|
|
142
|
+
});
|
|
143
|
+
confirm = response.value;
|
|
144
|
+
}
|
|
145
|
+
if (confirm) {
|
|
146
|
+
for (const s of newRoutes) {
|
|
147
|
+
const filePath = path.join(cwd, 'app', s.route.file);
|
|
148
|
+
await fs.ensureDir(path.dirname(filePath));
|
|
149
|
+
await fs.writeFile(filePath, s.expected, 'utf-8');
|
|
150
|
+
createdRoutes++;
|
|
151
|
+
}
|
|
152
|
+
for (const s of updatableRoutes) {
|
|
153
|
+
const filePath = path.join(cwd, 'app', s.route.file);
|
|
154
|
+
await fs.writeFile(filePath, s.expected, 'utf-8');
|
|
155
|
+
updatedRoutes++;
|
|
156
|
+
}
|
|
157
|
+
// Update routes.ts with new route entries
|
|
158
|
+
if (routesFileExists && newRoutes.length > 0) {
|
|
159
|
+
// Re-read routes.ts (in case it changed)
|
|
160
|
+
routesContent = await fs.readFile(routesFilePath, 'utf-8');
|
|
161
|
+
const newRoutesToAdd = newRoutes
|
|
162
|
+
.map((s) => s.route)
|
|
163
|
+
.filter((r) => !routeExistsInConfig(routesContent, r.file));
|
|
164
|
+
if (newRoutesToAdd.length > 0) {
|
|
165
|
+
const result = insertRoutes(routesContent, newRoutesToAdd);
|
|
166
|
+
if (result.added.length > 0) {
|
|
167
|
+
await fs.writeFile(routesFilePath, result.content, 'utf-8');
|
|
168
|
+
routesAddedToConfig = result.added.length;
|
|
169
|
+
}
|
|
170
|
+
if (result.manual.length > 0) {
|
|
171
|
+
console.log();
|
|
172
|
+
console.log(chalk.yellow('Could not auto-insert these routes (routes.ts structure not recognized):'));
|
|
173
|
+
console.log(chalk.yellow('Add them manually to app/routes.ts:'));
|
|
174
|
+
console.log();
|
|
175
|
+
for (const line of result.manual) {
|
|
176
|
+
console.log(` ${line}`);
|
|
177
|
+
}
|
|
178
|
+
console.log();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
// Also handle routes that exist as files but are missing from routes.ts
|
|
185
|
+
if (missingOnlyFromRoutesTs.length > 0 && routesFileExists) {
|
|
186
|
+
let confirm = yes;
|
|
187
|
+
if (!confirm) {
|
|
188
|
+
const response = await prompts({
|
|
189
|
+
type: 'confirm',
|
|
190
|
+
name: 'value',
|
|
191
|
+
message: `Add ${missingOnlyFromRoutesTs.length} existing route(s) to routes.ts?`,
|
|
192
|
+
initial: true,
|
|
193
|
+
});
|
|
194
|
+
confirm = response.value;
|
|
195
|
+
}
|
|
196
|
+
if (confirm) {
|
|
197
|
+
routesContent = await fs.readFile(routesFilePath, 'utf-8');
|
|
198
|
+
const toAdd = missingOnlyFromRoutesTs.filter((r) => !routeExistsInConfig(routesContent, r.file));
|
|
199
|
+
if (toAdd.length > 0) {
|
|
200
|
+
const result = insertRoutes(routesContent, toAdd);
|
|
201
|
+
if (result.added.length > 0) {
|
|
202
|
+
await fs.writeFile(routesFilePath, result.content, 'utf-8');
|
|
203
|
+
routesAddedToConfig += result.added.length;
|
|
204
|
+
}
|
|
205
|
+
if (result.manual.length > 0) {
|
|
206
|
+
console.log();
|
|
207
|
+
console.log(chalk.yellow('Add these routes manually to app/routes.ts:'));
|
|
208
|
+
for (const line of result.manual) {
|
|
209
|
+
console.log(` ${line}`);
|
|
210
|
+
}
|
|
211
|
+
console.log();
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Framework file updates
|
|
217
|
+
if (hasFrameworkUpdates) {
|
|
218
|
+
let confirm = yes;
|
|
219
|
+
if (!confirm) {
|
|
220
|
+
const response = await prompts({
|
|
221
|
+
type: 'confirm',
|
|
222
|
+
name: 'value',
|
|
223
|
+
message: `Update ${differsFramework.length + newFramework.length} framework file(s)?`,
|
|
224
|
+
initial: true,
|
|
225
|
+
});
|
|
226
|
+
confirm = response.value;
|
|
227
|
+
}
|
|
228
|
+
if (confirm) {
|
|
229
|
+
for (const s of [...newFramework, ...differsFramework]) {
|
|
230
|
+
const filePath = path.join(cwd, s.relativePath);
|
|
231
|
+
await fs.ensureDir(path.dirname(filePath));
|
|
232
|
+
await fs.writeFile(filePath, s.templateContent, 'utf-8');
|
|
233
|
+
frameworkUpdated++;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
// Step 7: Summary
|
|
238
|
+
console.log();
|
|
239
|
+
if (createdRoutes > 0) {
|
|
240
|
+
console.log(chalk.green(`✓ Created ${createdRoutes} route file(s)`));
|
|
241
|
+
}
|
|
242
|
+
if (updatedRoutes > 0) {
|
|
243
|
+
console.log(chalk.green(`✓ Updated ${updatedRoutes} route wrapper(s)`));
|
|
244
|
+
}
|
|
245
|
+
if (routesAddedToConfig > 0) {
|
|
246
|
+
console.log(chalk.green(`✓ Added ${routesAddedToConfig} route(s) to app/routes.ts`));
|
|
247
|
+
}
|
|
248
|
+
if (frameworkUpdated > 0) {
|
|
249
|
+
console.log(chalk.green(`✓ Updated ${frameworkUpdated} framework file(s)`));
|
|
250
|
+
}
|
|
251
|
+
const totalChanges = createdRoutes + updatedRoutes + routesAddedToConfig + frameworkUpdated;
|
|
252
|
+
if (totalChanges === 0) {
|
|
253
|
+
console.log(chalk.dim('No changes made.'));
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
console.log();
|
|
257
|
+
console.log('Next steps:');
|
|
258
|
+
console.log(` ${chalk.cyan('pnpm db:generate && pnpm db:push')} (if schema changed)`);
|
|
259
|
+
console.log(` Restart your dev server`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Load the managedRoutes array from the installed @chaaskit/client package.
|
|
264
|
+
*/
|
|
265
|
+
async function loadRouteRegistry(cwd) {
|
|
266
|
+
try {
|
|
267
|
+
// Use createRequire to resolve from the project's node_modules
|
|
268
|
+
const require = createRequire(path.join(cwd, 'package.json'));
|
|
269
|
+
const registryPath = require.resolve('@chaaskit/client/route-registry');
|
|
270
|
+
const registry = await import(registryPath);
|
|
271
|
+
return registry.managedRoutes;
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
console.error(chalk.red('Could not load route registry from @chaaskit/client.\n' +
|
|
275
|
+
'Make sure @chaaskit/client is installed and up to date:\n' +
|
|
276
|
+
' pnpm install @chaaskit/client@latest'));
|
|
277
|
+
return null;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Get the installed @chaaskit/client version.
|
|
282
|
+
*/
|
|
283
|
+
async function loadClientPackageVersion(cwd) {
|
|
284
|
+
try {
|
|
285
|
+
const pkgPath = path.join(cwd, 'node_modules', '@chaaskit', 'client', 'package.json');
|
|
286
|
+
const pkg = JSON.parse(await fs.readFile(pkgPath, 'utf-8'));
|
|
287
|
+
return pkg.version || 'unknown';
|
|
288
|
+
}
|
|
289
|
+
catch {
|
|
290
|
+
return 'unknown';
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Check each managed route against local files.
|
|
295
|
+
*/
|
|
296
|
+
async function checkManagedRoutes(cwd, managedRoutes) {
|
|
297
|
+
const results = [];
|
|
298
|
+
for (const route of managedRoutes) {
|
|
299
|
+
const filePath = path.join(cwd, 'app', route.file);
|
|
300
|
+
const expected = generateWrapper(route);
|
|
301
|
+
if (!(await fs.pathExists(filePath))) {
|
|
302
|
+
results.push({ route, status: 'new', expected });
|
|
303
|
+
continue;
|
|
304
|
+
}
|
|
305
|
+
const actual = await fs.readFile(filePath, 'utf-8');
|
|
306
|
+
if (!isThinWrapper(actual)) {
|
|
307
|
+
results.push({ route, status: 'customized', actual });
|
|
308
|
+
continue;
|
|
309
|
+
}
|
|
310
|
+
if (actual === expected) {
|
|
311
|
+
results.push({ route, status: 'up-to-date' });
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
results.push({ route, status: 'updatable', expected, actual });
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return results;
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Check framework files against templates.
|
|
321
|
+
*/
|
|
322
|
+
async function checkFrameworkFiles(cwd) {
|
|
323
|
+
const results = [];
|
|
324
|
+
const templatesPath = getTemplatesPath();
|
|
325
|
+
for (const relativePath of FRAMEWORK_FILES) {
|
|
326
|
+
const templatePath = path.join(templatesPath, relativePath);
|
|
327
|
+
const localPath = path.join(cwd, relativePath);
|
|
328
|
+
let templateContent;
|
|
329
|
+
try {
|
|
330
|
+
templateContent = await fs.readFile(templatePath, 'utf-8');
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
// Template doesn't exist, skip this file
|
|
334
|
+
continue;
|
|
335
|
+
}
|
|
336
|
+
let localContent;
|
|
337
|
+
try {
|
|
338
|
+
localContent = await fs.readFile(localPath, 'utf-8');
|
|
339
|
+
}
|
|
340
|
+
catch {
|
|
341
|
+
results.push({ relativePath, status: 'new', templateContent });
|
|
342
|
+
continue;
|
|
343
|
+
}
|
|
344
|
+
if (localContent === templateContent) {
|
|
345
|
+
results.push({ relativePath, status: 'up-to-date' });
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
results.push({ relativePath, status: 'differs', templateContent, localContent });
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
return results;
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Get the path to the templates directory in the create-chaaskit package.
|
|
355
|
+
*/
|
|
356
|
+
function getTemplatesPath() {
|
|
357
|
+
// When running from dist/commands/, templates are at ../templates
|
|
358
|
+
return path.join(__dirname, '..', 'templates');
|
|
359
|
+
}
|
|
360
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE7E,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAqB3C;;;GAGG;AACH,MAAM,eAAe,GAAG;IACtB,cAAc;IACd,sBAAsB;IACtB,sBAAsB;IACtB,+BAA+B;IAC/B,WAAW;CACZ,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,UAAuB,EAAE;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAEhC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,8DAA8D;IAC9D,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,CAAC,aAAa;QAAE,OAAO;IAE3B,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAAC,GAAG,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CACT,+BAA+B,KAAK,CAAC,IAAI,CAAC,oBAAoB,SAAS,EAAE,CAAC,OAAO,CAClF,CAAC;IAEF,+BAA+B;IAC/B,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAEnE,gCAAgC;IAChC,MAAM,iBAAiB,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAEzD,8CAA8C;IAC9C,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAC1D,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,CAAC;QACH,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC3D,gBAAgB,GAAG,IAAI,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;IAC5B,CAAC;IAED,MAAM,mBAAmB,GAAG,gBAAgB;QAC1C,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC,CAAC,EAAE,CAAC;IAEP,yBAAyB;IACzB,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;IAClE,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;IAC9E,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;IAChF,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;IAE9E,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;IACzE,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IACjF,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;IAErF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QACxC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAC,CAAC;QACrF,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC7D,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAChD,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;QACnG,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,8DAA8D;IAC9D,MAAM,uBAAuB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/D,4EAA4E;QAC5E,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QACvE,OAAO,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,YAAY,IAAI,WAAW,CAAC,MAAM,KAAK,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;IAC3I,CAAC,CAAC,CAAC;IAEH,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACrD,KAAK,MAAM,CAAC,IAAI,uBAAuB,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC;IACvE,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,aAAa,SAAS,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,kCAAkC;IAClC,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1C,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;IACtD,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IACnF,MAAM,sBAAsB,GAC1B,mBAAmB,CAAC,MAAM,GAAG,CAAC;QAC9B,CAAC,YAAY,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEvD,IAAI,CAAC,YAAY,IAAI,CAAC,kBAAkB,IAAI,CAAC,mBAAmB,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,8BAA8B;IAC9B,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,oDAAoD;IACpD,IAAI,YAAY,IAAI,kBAAkB,EAAE,CAAC;QACvC,MAAM,YAAY,GAAG;YACnB,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,SAAS,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,UAAU,eAAe,CAAC,MAAM,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACxF,CAAC;QACF,MAAM,QAAQ,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAEjG,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;gBAC7B,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,GAAG,QAAQ,GAAG;gBACvB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC3B,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC3C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAS,EAAE,OAAO,CAAC,CAAC;gBACnD,aAAa,EAAE,CAAC;YAClB,CAAC;YAED,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAS,EAAE,OAAO,CAAC,CAAC;gBACnD,aAAa,EAAE,CAAC;YAClB,CAAC;YAED,0CAA0C;YAC1C,IAAI,gBAAgB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7C,yCAAyC;gBACzC,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;gBAE3D,MAAM,cAAc,GAAG,SAAS;qBAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;qBACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBAE9D,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;oBAC3D,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC5B,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;wBAC5D,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC5C,CAAC;oBACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC7B,OAAO,CAAC,GAAG,EAAE,CAAC;wBACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,0EAA0E,CAC3E,CACF,CAAC;wBACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAC;wBACjE,OAAO,CAAC,GAAG,EAAE,CAAC;wBACd,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;4BACjC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;wBAC3B,CAAC;wBACD,OAAO,CAAC,GAAG,EAAE,CAAC;oBAChB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,EAAE,CAAC;QAC3D,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;gBAC7B,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,OAAO,uBAAuB,CAAC,MAAM,kCAAkC;gBAChF,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC3B,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,uBAAuB,CAAC,MAAM,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CACnD,CAAC;YACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;gBAClD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC5D,mBAAmB,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC7C,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAC5D,CAAC;oBACF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;wBACjC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;oBAC3B,CAAC;oBACD,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,IAAI,mBAAmB,EAAE,CAAC;QACxB,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;gBAC7B,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,UAAU,gBAAgB,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,qBAAqB;gBACrF,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC3B,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,EAAE,GAAG,gBAAgB,CAAC,EAAE,CAAC;gBACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;gBAChD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC3C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,eAAgB,EAAE,OAAO,CAAC,CAAC;gBAC1D,gBAAgB,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,aAAa,gBAAgB,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,aAAa,mBAAmB,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,mBAAmB,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,mBAAmB,4BAA4B,CAAC,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,gBAAgB,oBAAoB,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,YAAY,GAAG,aAAa,GAAG,aAAa,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;IAC5F,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,uBAAuB,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,GAAW;IAC1C,IAAI,CAAC;QACH,+DAA+D;QAC/D,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAC5C,OAAO,QAAQ,CAAC,aAA+B,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,wDAAwD;YACtD,2DAA2D;YAC3D,wCAAwC,CAC3C,CACF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,wBAAwB,CAAC,GAAW;IACjD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACtF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5D,OAAO,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAC/B,GAAW,EACX,aAA6B;IAE7B,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAExC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACjD,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;YACtD,SAAS;QACX,CAAC;QAED,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAAC,GAAW;IAC5C,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IAEzC,KAAK,MAAM,YAAY,IAAI,eAAe,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAE/C,IAAI,eAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,eAAe,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;YACzC,SAAS;QACX,CAAC;QAED,IAAI,YAAoB,CAAC;QACzB,IAAI,CAAC;YACH,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YAC/D,SAAS;QACX,CAAC;QAED,IAAI,YAAY,KAAK,eAAe,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB;IACvB,kEAAkE;IAClE,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import { init } from './commands/init.js';
|
|
|
4
4
|
import { dev } from './commands/dev.js';
|
|
5
5
|
import { build } from './commands/build.js';
|
|
6
6
|
import { dbSync } from './commands/db-sync.js';
|
|
7
|
+
import { sync } from './commands/sync.js';
|
|
7
8
|
import { addInfra } from './commands/add-infra.js';
|
|
8
9
|
const program = new Command();
|
|
9
10
|
program
|
|
@@ -45,6 +46,15 @@ program
|
|
|
45
46
|
.action(async (options) => {
|
|
46
47
|
await dbSync(options);
|
|
47
48
|
});
|
|
49
|
+
// Sync routes and framework files
|
|
50
|
+
program
|
|
51
|
+
.command('sync')
|
|
52
|
+
.description('Sync routes and framework files from @chaaskit/client')
|
|
53
|
+
.option('--dry-run', 'Show changes without writing files')
|
|
54
|
+
.option('-y, --yes', 'Non-interactive mode (accept all changes)')
|
|
55
|
+
.action(async (options) => {
|
|
56
|
+
await sync(options);
|
|
57
|
+
});
|
|
48
58
|
// Add infrastructure-as-code
|
|
49
59
|
program
|
|
50
60
|
.command('add-infra <provider>')
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,yCAAyC,CAAC;KACtD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,uBAAuB;AACvB,OAAO;KACJ,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,uBAAuB,EAAE,iBAAiB,EAAE,SAAS,CAAC;KAC7D,MAAM,CAAC,gBAAgB,EAAE,8BAA8B,CAAC;KACxD,MAAM,CAAC,WAAW,EAAE,yBAAyB,CAAC;KAC9C,MAAM,CAAC,YAAY,EAAE,0BAA0B,CAAC;KAChD,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;IACrC,MAAM,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEL,wCAAwC;AACxC,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,mBAAmB,EAAE,cAAc,EAAE,MAAM,CAAC;KACnD,MAAM,CAAC,sBAAsB,EAAE,eAAe,EAAE,MAAM,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,mCAAmC;AACnC,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,KAAK,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEL,uBAAuB;AACvB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,aAAa,EAAE,sCAAsC,CAAC;KAC7D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,6BAA6B;AAC7B,OAAO;KACJ,OAAO,CAAC,sBAAsB,CAAC;KAC/B,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,2BAA2B,EAAE,gCAAgC,CAAC;KACrE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;IAClC,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,yCAAyC,CAAC;KACtD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,uBAAuB;AACvB,OAAO;KACJ,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,uBAAuB,EAAE,iBAAiB,EAAE,SAAS,CAAC;KAC7D,MAAM,CAAC,gBAAgB,EAAE,8BAA8B,CAAC;KACxD,MAAM,CAAC,WAAW,EAAE,yBAAyB,CAAC;KAC9C,MAAM,CAAC,YAAY,EAAE,0BAA0B,CAAC;KAChD,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;IACrC,MAAM,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEL,wCAAwC;AACxC,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,mBAAmB,EAAE,cAAc,EAAE,MAAM,CAAC;KACnD,MAAM,CAAC,sBAAsB,EAAE,eAAe,EAAE,MAAM,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,mCAAmC;AACnC,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,KAAK,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEL,uBAAuB;AACvB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,aAAa,EAAE,sCAAsC,CAAC;KAC7D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,kCAAkC;AAClC,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,WAAW,EAAE,oCAAoC,CAAC;KACzD,MAAM,CAAC,WAAW,EAAE,2CAA2C,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC;AAEL,6BAA6B;AAC7B,OAAO;KACJ,OAAO,CAAC,sBAAsB,CAAC;KAC/B,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,2BAA2B,EAAE,gCAAgC,CAAC;KACrE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;IAClC,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ManagedRoute } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Local copy of the managed routes registry for use during `create-chaaskit create`.
|
|
4
|
+
*
|
|
5
|
+
* This must be kept in sync with @chaaskit/client/route-registry.
|
|
6
|
+
* The `sync` command loads the registry dynamically from node_modules at runtime,
|
|
7
|
+
* but `create` needs a static copy because @chaaskit/client isn't installed yet.
|
|
8
|
+
*/
|
|
9
|
+
export declare const managedRoutes: ManagedRoute[];
|
|
10
|
+
//# sourceMappingURL=managed-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managed-routes.d.ts","sourceRoot":"","sources":["../../src/lib/managed-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,YAAY,EAqGvC,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local copy of the managed routes registry for use during `create-chaaskit create`.
|
|
3
|
+
*
|
|
4
|
+
* This must be kept in sync with @chaaskit/client/route-registry.
|
|
5
|
+
* The `sync` command loads the registry dynamically from node_modules at runtime,
|
|
6
|
+
* but `create` needs a static copy because @chaaskit/client isn't installed yet.
|
|
7
|
+
*/
|
|
8
|
+
export const managedRoutes = [
|
|
9
|
+
// Authenticated routes (under basePath layout)
|
|
10
|
+
{
|
|
11
|
+
file: 'routes/chat._index.tsx',
|
|
12
|
+
title: 'Chat',
|
|
13
|
+
importPath: '@chaaskit/client/routes/ChatRoute',
|
|
14
|
+
skeleton: 'chat',
|
|
15
|
+
route: { path: '', section: 'authenticated' },
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
file: 'routes/chat.thread.$threadId.tsx',
|
|
19
|
+
title: 'Chat',
|
|
20
|
+
importPath: '@chaaskit/client/routes/ChatRoute',
|
|
21
|
+
skeleton: 'chat',
|
|
22
|
+
route: { path: 'thread/:threadId', section: 'authenticated' },
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
file: 'routes/chat.api-keys.tsx',
|
|
26
|
+
title: 'API Keys',
|
|
27
|
+
importPath: '@chaaskit/client/routes/ApiKeysRoute',
|
|
28
|
+
route: { path: 'api-keys', section: 'authenticated' },
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
file: 'routes/chat.documents.tsx',
|
|
32
|
+
title: 'Documents',
|
|
33
|
+
importPath: '@chaaskit/client/routes/DocumentsRoute',
|
|
34
|
+
route: { path: 'documents', section: 'authenticated' },
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
file: 'routes/chat.automations.tsx',
|
|
38
|
+
title: 'Automations',
|
|
39
|
+
importPath: '@chaaskit/client/routes/AutomationsRoute',
|
|
40
|
+
route: { path: 'automations', section: 'authenticated' },
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
file: 'routes/chat.team.$teamId.settings.tsx',
|
|
44
|
+
title: 'Team Settings',
|
|
45
|
+
importPath: '@chaaskit/client/routes/TeamSettingsRoute',
|
|
46
|
+
route: { path: 'team/:teamId/settings', section: 'authenticated' },
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
file: 'routes/chat.admin._index.tsx',
|
|
50
|
+
title: 'Admin Dashboard',
|
|
51
|
+
importPath: '@chaaskit/client/routes/AdminDashboardRoute',
|
|
52
|
+
route: { path: 'admin', section: 'authenticated' },
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
file: 'routes/chat.admin.users.tsx',
|
|
56
|
+
title: 'Admin Users',
|
|
57
|
+
importPath: '@chaaskit/client/routes/AdminUsersRoute',
|
|
58
|
+
route: { path: 'admin/users', section: 'authenticated' },
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
file: 'routes/chat.admin.waitlist.tsx',
|
|
62
|
+
title: 'Admin Waitlist',
|
|
63
|
+
importPath: '@chaaskit/client/routes/AdminWaitlistRoute',
|
|
64
|
+
route: { path: 'admin/waitlist', section: 'authenticated' },
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
file: 'routes/chat.admin.promo-codes.tsx',
|
|
68
|
+
title: 'Admin Promo Codes',
|
|
69
|
+
importPath: '@chaaskit/client/routes/AdminPromoCodesRoute',
|
|
70
|
+
route: { path: 'admin/promo-codes', section: 'authenticated' },
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
file: 'routes/chat.admin.teams._index.tsx',
|
|
74
|
+
title: 'Admin Teams',
|
|
75
|
+
importPath: '@chaaskit/client/routes/AdminTeamsRoute',
|
|
76
|
+
route: { path: 'admin/teams', section: 'authenticated' },
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
file: 'routes/chat.admin.teams.$teamId.tsx',
|
|
80
|
+
title: 'Admin Team',
|
|
81
|
+
importPath: '@chaaskit/client/routes/AdminTeamRoute',
|
|
82
|
+
route: { path: 'admin/teams/:teamId', section: 'authenticated' },
|
|
83
|
+
},
|
|
84
|
+
// Public routes
|
|
85
|
+
{
|
|
86
|
+
file: 'routes/pricing.tsx',
|
|
87
|
+
title: 'Pricing',
|
|
88
|
+
importPath: '@chaaskit/client/routes/PricingRoute',
|
|
89
|
+
route: { path: 'pricing', section: 'public' },
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
file: 'routes/verify-email.tsx',
|
|
93
|
+
title: 'Verify Email',
|
|
94
|
+
importPath: '@chaaskit/client/routes/VerifyEmailRoute',
|
|
95
|
+
route: { path: 'verify-email', section: 'public' },
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
file: 'routes/invite.$token.tsx',
|
|
99
|
+
title: 'Accept Invite',
|
|
100
|
+
importPath: '@chaaskit/client/routes/AcceptInviteRoute',
|
|
101
|
+
route: { path: 'invite/:token', section: 'public' },
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
file: 'routes/oauth.consent.tsx',
|
|
105
|
+
title: 'OAuth Consent',
|
|
106
|
+
importPath: '@chaaskit/client/routes/OAuthConsentRoute',
|
|
107
|
+
route: { path: 'oauth/consent', section: 'public' },
|
|
108
|
+
},
|
|
109
|
+
];
|
|
110
|
+
//# sourceMappingURL=managed-routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managed-routes.js","sourceRoot":"","sources":["../../src/lib/managed-routes.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAmB;IAC3C,+CAA+C;IAC/C;QACE,IAAI,EAAE,wBAAwB;QAC9B,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,mCAAmC;QAC/C,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE;KAC9C;IACD;QACE,IAAI,EAAE,kCAAkC;QACxC,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,mCAAmC;QAC/C,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,eAAe,EAAE;KAC9D;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,KAAK,EAAE,UAAU;QACjB,UAAU,EAAE,sCAAsC;QAClD,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE;KACtD;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,WAAW;QAClB,UAAU,EAAE,wCAAwC;QACpD,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE;KACvD;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,KAAK,EAAE,aAAa;QACpB,UAAU,EAAE,0CAA0C;QACtD,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE;KACzD;IACD;QACE,IAAI,EAAE,uCAAuC;QAC7C,KAAK,EAAE,eAAe;QACtB,UAAU,EAAE,2CAA2C;QACvD,KAAK,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,eAAe,EAAE;KACnE;IACD;QACE,IAAI,EAAE,8BAA8B;QACpC,KAAK,EAAE,iBAAiB;QACxB,UAAU,EAAE,6CAA6C;QACzD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE;KACnD;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,KAAK,EAAE,aAAa;QACpB,UAAU,EAAE,yCAAyC;QACrD,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE;KACzD;IACD;QACE,IAAI,EAAE,gCAAgC;QACtC,KAAK,EAAE,gBAAgB;QACvB,UAAU,EAAE,4CAA4C;QACxD,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,eAAe,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,mCAAmC;QACzC,KAAK,EAAE,mBAAmB;QAC1B,UAAU,EAAE,8CAA8C;QAC1D,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,eAAe,EAAE;KAC/D;IACD;QACE,IAAI,EAAE,oCAAoC;QAC1C,KAAK,EAAE,aAAa;QACpB,UAAU,EAAE,yCAAyC;QACrD,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE;KACzD;IACD;QACE,IAAI,EAAE,qCAAqC;QAC3C,KAAK,EAAE,YAAY;QACnB,UAAU,EAAE,wCAAwC;QACpD,KAAK,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,eAAe,EAAE;KACjE;IACD,gBAAgB;IAChB;QACE,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,sCAAsC;QAClD,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE;KAC9C;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,0CAA0C;QACtD,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE;KACnD;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,KAAK,EAAE,eAAe;QACtB,UAAU,EAAE,2CAA2C;QACvD,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE;KACpD;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,KAAK,EAAE,eAAe;QACtB,UAAU,EAAE,2CAA2C;QACvD,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE;KACpD;CACF,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ManagedRoute } from './types.js';
|
|
2
|
+
interface InsertionResult {
|
|
3
|
+
content: string;
|
|
4
|
+
added: string[];
|
|
5
|
+
manual: string[];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Generate a route() call for routes.ts from a ManagedRoute entry.
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateRouteCall(r: ManagedRoute): string;
|
|
11
|
+
/**
|
|
12
|
+
* Insert missing route entries into routes.ts content.
|
|
13
|
+
*
|
|
14
|
+
* Parses the file structure to find:
|
|
15
|
+
* - The layout('routes/chat.tsx' line (boundary between public/authenticated)
|
|
16
|
+
* - The closing `]),` of the layout's children array
|
|
17
|
+
*
|
|
18
|
+
* Returns updated content plus lists of what was added and what needs manual insertion.
|
|
19
|
+
*/
|
|
20
|
+
export declare function insertRoutes(routesContent: string, missingRoutes: ManagedRoute[]): InsertionResult;
|
|
21
|
+
/**
|
|
22
|
+
* Check if a route file path already exists in routes.ts content.
|
|
23
|
+
*/
|
|
24
|
+
export declare function routeExistsInConfig(routesContent: string, filePath: string): boolean;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=routes-updater.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes-updater.d.ts","sourceRoot":"","sources":["../../src/lib/routes-updater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAQzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,YAAY,EAAE,GAC5B,eAAe,CAiFjB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpF"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate a route() call for routes.ts from a ManagedRoute entry.
|
|
3
|
+
*/
|
|
4
|
+
export function generateRouteCall(r) {
|
|
5
|
+
if (r.route.section === 'public') {
|
|
6
|
+
return ` route('${r.route.path}', '${r.file}'),`;
|
|
7
|
+
}
|
|
8
|
+
if (r.route.path === '') {
|
|
9
|
+
return ` route(base, '${r.file}'),`;
|
|
10
|
+
}
|
|
11
|
+
return ` route(\`\${base}/${r.route.path}\`, '${r.file}'),`;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Insert missing route entries into routes.ts content.
|
|
15
|
+
*
|
|
16
|
+
* Parses the file structure to find:
|
|
17
|
+
* - The layout('routes/chat.tsx' line (boundary between public/authenticated)
|
|
18
|
+
* - The closing `]),` of the layout's children array
|
|
19
|
+
*
|
|
20
|
+
* Returns updated content plus lists of what was added and what needs manual insertion.
|
|
21
|
+
*/
|
|
22
|
+
export function insertRoutes(routesContent, missingRoutes) {
|
|
23
|
+
if (missingRoutes.length === 0) {
|
|
24
|
+
return { content: routesContent, added: [], manual: [] };
|
|
25
|
+
}
|
|
26
|
+
const lines = routesContent.split('\n');
|
|
27
|
+
const added = [];
|
|
28
|
+
const manual = [];
|
|
29
|
+
// Find the layout line: layout('routes/chat.tsx'
|
|
30
|
+
let layoutLineIdx = -1;
|
|
31
|
+
for (let i = 0; i < lines.length; i++) {
|
|
32
|
+
if (lines[i].match(/layout\s*\(\s*['"]routes\/chat\.tsx['"]/)) {
|
|
33
|
+
layoutLineIdx = i;
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (layoutLineIdx === -1) {
|
|
38
|
+
// Can't find layout boundary - all routes need manual insertion
|
|
39
|
+
for (const r of missingRoutes) {
|
|
40
|
+
manual.push(generateRouteCall(r));
|
|
41
|
+
}
|
|
42
|
+
return { content: routesContent, added, manual };
|
|
43
|
+
}
|
|
44
|
+
// Find the closing `]),` of the layout's children array by tracking bracket depth
|
|
45
|
+
let layoutCloseIdx = -1;
|
|
46
|
+
let depth = 0;
|
|
47
|
+
let foundOpenBracket = false;
|
|
48
|
+
for (let i = layoutLineIdx; i < lines.length; i++) {
|
|
49
|
+
for (const ch of lines[i]) {
|
|
50
|
+
if (ch === '[') {
|
|
51
|
+
depth++;
|
|
52
|
+
foundOpenBracket = true;
|
|
53
|
+
}
|
|
54
|
+
else if (ch === ']') {
|
|
55
|
+
depth--;
|
|
56
|
+
if (foundOpenBracket && depth === 0) {
|
|
57
|
+
layoutCloseIdx = i;
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (layoutCloseIdx !== -1)
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
if (layoutCloseIdx === -1) {
|
|
66
|
+
// Can't find layout close - all routes need manual insertion
|
|
67
|
+
for (const r of missingRoutes) {
|
|
68
|
+
manual.push(generateRouteCall(r));
|
|
69
|
+
}
|
|
70
|
+
return { content: routesContent, added, manual };
|
|
71
|
+
}
|
|
72
|
+
// Separate missing routes into public and authenticated
|
|
73
|
+
const publicRoutes = missingRoutes.filter((r) => r.route.section === 'public');
|
|
74
|
+
const authRoutes = missingRoutes.filter((r) => r.route.section === 'authenticated');
|
|
75
|
+
// Insert authenticated routes before the layout close line
|
|
76
|
+
if (authRoutes.length > 0) {
|
|
77
|
+
const authLines = authRoutes.map((r) => generateRouteCall(r));
|
|
78
|
+
// Insert before layoutCloseIdx
|
|
79
|
+
lines.splice(layoutCloseIdx, 0, ...authLines);
|
|
80
|
+
added.push(...authRoutes.map((r) => r.file));
|
|
81
|
+
// Adjust layoutCloseIdx for the inserted lines
|
|
82
|
+
layoutCloseIdx += authLines.length;
|
|
83
|
+
// Also adjust layoutLineIdx reference isn't needed since we insert public before it
|
|
84
|
+
}
|
|
85
|
+
// Recalculate layoutLineIdx after auth insertions (it may have shifted if auth was inserted before)
|
|
86
|
+
// Actually auth routes are inserted after layoutLineIdx, so layoutLineIdx stays the same.
|
|
87
|
+
// Insert public routes before the layout line
|
|
88
|
+
if (publicRoutes.length > 0) {
|
|
89
|
+
const publicLines = publicRoutes.map((r) => generateRouteCall(r));
|
|
90
|
+
// Insert before layoutLineIdx (just before the layout block)
|
|
91
|
+
lines.splice(layoutLineIdx, 0, ...publicLines);
|
|
92
|
+
added.push(...publicRoutes.map((r) => r.file));
|
|
93
|
+
}
|
|
94
|
+
return { content: lines.join('\n'), added, manual };
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Check if a route file path already exists in routes.ts content.
|
|
98
|
+
*/
|
|
99
|
+
export function routeExistsInConfig(routesContent, filePath) {
|
|
100
|
+
return routesContent.includes(`'${filePath}'`) || routesContent.includes(`"${filePath}"`);
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=routes-updater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes-updater.js","sourceRoot":"","sources":["../../src/lib/routes-updater.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mirrors the ManagedRoute type from @chaaskit/client/route-registry.
|
|
3
|
+
* Duplicated here to avoid a compile-time dependency on @chaaskit/client.
|
|
4
|
+
*/
|
|
5
|
+
export interface ManagedRoute {
|
|
6
|
+
file: string;
|
|
7
|
+
title: string;
|
|
8
|
+
importPath: string;
|
|
9
|
+
skeleton?: 'chat';
|
|
10
|
+
route: {
|
|
11
|
+
path: string;
|
|
12
|
+
section: 'public' | 'authenticated';
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,QAAQ,GAAG,eAAe,CAAC;KACrC,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ManagedRoute } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generate the thin wrapper file content for a managed route.
|
|
4
|
+
*/
|
|
5
|
+
export declare function generateWrapper(r: ManagedRoute): string;
|
|
6
|
+
/**
|
|
7
|
+
* Detect if a file's content is a thin wrapper (managed by the registry).
|
|
8
|
+
*/
|
|
9
|
+
export declare function isThinWrapper(content: string): boolean;
|
|
10
|
+
//# sourceMappingURL=wrapper-gen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrapper-gen.d.ts","sourceRoot":"","sources":["../../src/lib/wrapper-gen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAevD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAKtD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate the thin wrapper file content for a managed route.
|
|
3
|
+
*/
|
|
4
|
+
export function generateWrapper(r) {
|
|
5
|
+
const skeleton = r.skeleton ? `\n skeleton: '${r.skeleton}',` : '';
|
|
6
|
+
return [
|
|
7
|
+
`import { createRoute } from '@chaaskit/client/ssr-utils';`,
|
|
8
|
+
``,
|
|
9
|
+
`const route = createRoute({`,
|
|
10
|
+
` title: '${r.title}',`,
|
|
11
|
+
` load: () => import('${r.importPath}'),${skeleton}`,
|
|
12
|
+
`});`,
|
|
13
|
+
``,
|
|
14
|
+
`export const meta = route.meta;`,
|
|
15
|
+
`export const links = route.links;`,
|
|
16
|
+
`export default route.default;`,
|
|
17
|
+
``,
|
|
18
|
+
].join('\n');
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Detect if a file's content is a thin wrapper (managed by the registry).
|
|
22
|
+
*/
|
|
23
|
+
export function isThinWrapper(content) {
|
|
24
|
+
return (content.includes("from '@chaaskit/client/ssr-utils'") &&
|
|
25
|
+
content.includes('createRoute('));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=wrapper-gen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrapper-gen.js","sourceRoot":"","sources":["../../src/lib/wrapper-gen.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,CAAe;IAC7C,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,OAAO;QACL,2DAA2D;QAC3D,EAAE;QACF,6BAA6B;QAC7B,aAAa,CAAC,CAAC,KAAK,IAAI;QACxB,yBAAyB,CAAC,CAAC,UAAU,MAAM,QAAQ,EAAE;QACrD,KAAK;QACL,EAAE;QACF,iCAAiC;QACjC,mCAAmC;QACnC,+BAA+B;QAC/B,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CACjC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { createRoute } from '@chaaskit/client/ssr-utils';
|
|
2
|
-
|
|
3
|
-
const route = createRoute({
|
|
4
|
-
title: 'Chat',
|
|
5
|
-
load: () => import('@chaaskit/client/routes/ChatRoute'),
|
|
6
|
-
skeleton: 'chat',
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
export const meta = route.meta;
|
|
10
|
-
export const links = route.links;
|
|
11
|
-
export default route.default;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { createRoute } from '@chaaskit/client/ssr-utils';
|
|
2
|
-
|
|
3
|
-
const route = createRoute({
|
|
4
|
-
title: 'Admin Dashboard',
|
|
5
|
-
load: () => import('@chaaskit/client/routes/AdminDashboardRoute'),
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export const meta = route.meta;
|
|
9
|
-
export const links = route.links;
|
|
10
|
-
export default route.default;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { createRoute } from '@chaaskit/client/ssr-utils';
|
|
2
|
-
|
|
3
|
-
const route = createRoute({
|
|
4
|
-
title: 'Admin Promo Codes',
|
|
5
|
-
load: () => import('@chaaskit/client/routes/AdminPromoCodesRoute'),
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export const meta = route.meta;
|
|
9
|
-
export const links = route.links;
|
|
10
|
-
export default route.default;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { createRoute } from '@chaaskit/client/ssr-utils';
|
|
2
|
-
|
|
3
|
-
const route = createRoute({
|
|
4
|
-
title: 'Admin - Team Details',
|
|
5
|
-
load: () => import('@chaaskit/client/routes/AdminTeamRoute'),
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export const meta = route.meta;
|
|
9
|
-
export const links = route.links;
|
|
10
|
-
export default route.default;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { createRoute } from '@chaaskit/client/ssr-utils';
|
|
2
|
-
|
|
3
|
-
const route = createRoute({
|
|
4
|
-
title: 'Admin - Teams',
|
|
5
|
-
load: () => import('@chaaskit/client/routes/AdminTeamsRoute'),
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export const meta = route.meta;
|
|
9
|
-
export const links = route.links;
|
|
10
|
-
export default route.default;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { createRoute } from '@chaaskit/client/ssr-utils';
|
|
2
|
-
|
|
3
|
-
const route = createRoute({
|
|
4
|
-
title: 'Admin - Users',
|
|
5
|
-
load: () => import('@chaaskit/client/routes/AdminUsersRoute'),
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export const meta = route.meta;
|
|
9
|
-
export const links = route.links;
|
|
10
|
-
export default route.default;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { createRoute } from '@chaaskit/client/ssr-utils';
|
|
2
|
-
|
|
3
|
-
const route = createRoute({
|
|
4
|
-
title: 'Admin Waitlist',
|
|
5
|
-
load: () => import('@chaaskit/client/routes/AdminWaitlistRoute'),
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export const meta = route.meta;
|
|
9
|
-
export const links = route.links;
|
|
10
|
-
export default route.default;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { createRoute } from '@chaaskit/client/ssr-utils';
|
|
2
|
-
|
|
3
|
-
const route = createRoute({
|
|
4
|
-
title: 'API Keys',
|
|
5
|
-
load: () => import('@chaaskit/client/routes/ApiKeysRoute'),
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export const meta = route.meta;
|
|
9
|
-
export const links = route.links;
|
|
10
|
-
export default route.default;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { createRoute } from '@chaaskit/client/ssr-utils';
|
|
2
|
-
|
|
3
|
-
const route = createRoute({
|
|
4
|
-
title: 'Automations',
|
|
5
|
-
load: () => import('@chaaskit/client/routes/AutomationsRoute'),
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export const meta = route.meta;
|
|
9
|
-
export const links = route.links;
|
|
10
|
-
export default route.default;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { createRoute } from '@chaaskit/client/ssr-utils';
|
|
2
|
-
|
|
3
|
-
const route = createRoute({
|
|
4
|
-
title: 'Documents',
|
|
5
|
-
load: () => import('@chaaskit/client/routes/DocumentsRoute'),
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export const meta = route.meta;
|
|
9
|
-
export const links = route.links;
|
|
10
|
-
export default route.default;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { createRoute } from '@chaaskit/client/ssr-utils';
|
|
2
|
-
|
|
3
|
-
const route = createRoute({
|
|
4
|
-
title: 'Team Settings',
|
|
5
|
-
load: () => import('@chaaskit/client/routes/TeamSettingsRoute'),
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export const meta = route.meta;
|
|
9
|
-
export const links = route.links;
|
|
10
|
-
export default route.default;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { createRoute } from '@chaaskit/client/ssr-utils';
|
|
2
|
-
|
|
3
|
-
const route = createRoute({
|
|
4
|
-
title: 'Chat',
|
|
5
|
-
load: () => import('@chaaskit/client/routes/ChatRoute'),
|
|
6
|
-
skeleton: 'chat',
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
export const meta = route.meta;
|
|
10
|
-
export const links = route.links;
|
|
11
|
-
export default route.default;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { createRoute } from '@chaaskit/client/ssr-utils';
|
|
2
|
-
|
|
3
|
-
const route = createRoute({
|
|
4
|
-
title: 'Accept Invitation',
|
|
5
|
-
load: () => import('@chaaskit/client/routes/AcceptInviteRoute'),
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export const meta = route.meta;
|
|
9
|
-
export const links = route.links;
|
|
10
|
-
export default route.default;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { createRoute } from '@chaaskit/client/ssr-utils';
|
|
2
|
-
|
|
3
|
-
const route = createRoute({
|
|
4
|
-
title: 'OAuth Consent',
|
|
5
|
-
load: () => import('@chaaskit/client/routes/OAuthConsentRoute'),
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export const meta = route.meta;
|
|
9
|
-
export const links = route.links;
|
|
10
|
-
export default route.default;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { createRoute } from '@chaaskit/client/ssr-utils';
|
|
2
|
-
|
|
3
|
-
const route = createRoute({
|
|
4
|
-
title: 'Pricing',
|
|
5
|
-
load: () => import('@chaaskit/client/routes/PricingRoute'),
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export const meta = route.meta;
|
|
9
|
-
export const links = route.links;
|
|
10
|
-
export default route.default;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { createRoute } from '@chaaskit/client/ssr-utils';
|
|
2
|
-
|
|
3
|
-
const route = createRoute({
|
|
4
|
-
title: 'Verify Email',
|
|
5
|
-
load: () => import('@chaaskit/client/routes/VerifyEmailRoute'),
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export const meta = route.meta;
|
|
9
|
-
export const links = route.links;
|
|
10
|
-
export default route.default;
|