canopycms 0.0.5 → 0.0.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/LICENSE +21 -0
- package/dist/auth/plugin.d.ts +9 -0
- package/dist/auth/plugin.d.ts.map +1 -1
- package/dist/branch-workspace.d.ts +11 -0
- package/dist/branch-workspace.d.ts.map +1 -1
- package/dist/branch-workspace.js +21 -1
- package/dist/branch-workspace.js.map +1 -1
- package/dist/cli/generate-ai-content.d.ts +1 -0
- package/dist/cli/generate-ai-content.d.ts.map +1 -1
- package/dist/cli/generate-ai-content.js +3 -3
- package/dist/cli/generate-ai-content.js.map +1 -1
- package/dist/cli/init.d.ts +2 -0
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +30 -19
- package/dist/cli/init.js.map +1 -1
- package/dist/content-reader.d.ts +0 -2
- package/dist/content-reader.d.ts.map +1 -1
- package/dist/content-reader.js +17 -13
- package/dist/content-reader.js.map +1 -1
- package/dist/context.js +5 -5
- package/dist/context.js.map +1 -1
- package/dist/paths/branch.js +1 -1
- package/dist/paths/branch.js.map +1 -1
- package/package.json +71 -78
- package/src/cli/init.ts +0 -462
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024-present Rice University
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/auth/plugin.d.ts
CHANGED
|
@@ -48,6 +48,15 @@ export interface AuthPlugin {
|
|
|
48
48
|
verifyTokenOnly?(context: unknown): Promise<{
|
|
49
49
|
userId: CanopyUserId;
|
|
50
50
|
} | null>;
|
|
51
|
+
/**
|
|
52
|
+
* Optional: create a function that refreshes the auth cache for this plugin.
|
|
53
|
+
* Used by the worker daemon and CLI run-once to populate the file-based auth cache.
|
|
54
|
+
* Returns undefined if this plugin doesn't support cache refresh (e.g., missing credentials).
|
|
55
|
+
*/
|
|
56
|
+
createCacheRefresher?(cachePath: string): (() => Promise<{
|
|
57
|
+
userCount: number;
|
|
58
|
+
groupCount: number;
|
|
59
|
+
}>) | undefined;
|
|
51
60
|
}
|
|
52
61
|
/**
|
|
53
62
|
* Factory function type for creating auth plugins
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/auth/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE3D;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;OAMG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAE7D;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;IAEvE;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IAEvE;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IAEvE;;OAEG;IACH,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;IAEpD;;;;OAIG;IACH,oBAAoB,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,aAAa,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IAEzF;;;;OAIG;IACH,eAAe,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,YAAY,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/auth/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE3D;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;OAMG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAE7D;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;IAEvE;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IAEvE;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IAEvE;;OAEG;IACH,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;IAEpD;;;;OAIG;IACH,oBAAoB,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,aAAa,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IAEzF;;;;OAIG;IACH,eAAe,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,YAAY,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;IAE5E;;;;OAIG;IACH,oBAAoB,CAAC,CACnB,SAAS,EAAE,MAAM,GAChB,CAAC,MAAM,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,GAAG,SAAS,CAAA;CAC1E;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,OAAO,GAAG,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK,UAAU,CAAA"}
|
|
@@ -22,4 +22,15 @@ export declare class BranchWorkspaceManager {
|
|
|
22
22
|
openOrCreateBranch(options: OpenBranchOptions): Promise<BranchContext>;
|
|
23
23
|
}
|
|
24
24
|
export { loadBranchContext } from './branch-metadata';
|
|
25
|
+
/**
|
|
26
|
+
* Load an existing branch context, or create the workspace if it doesn't exist yet.
|
|
27
|
+
*/
|
|
28
|
+
export declare function loadOrCreateBranchContext(options: {
|
|
29
|
+
config: CanopyConfig;
|
|
30
|
+
branchName: string;
|
|
31
|
+
mode: OperatingMode;
|
|
32
|
+
basePathOverride?: string;
|
|
33
|
+
createdBy: CanopyUserId;
|
|
34
|
+
remoteUrl?: string;
|
|
35
|
+
}): Promise<BranchContext>;
|
|
25
36
|
//# sourceMappingURL=branch-workspace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branch-workspace.d.ts","sourceRoot":"","sources":["../src/branch-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAG5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AASrD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,aAAa,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,SAAS,EAAE,YAAY,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAEzB,MAAM,EAAE,YAAY;YAIlB,kBAAkB;IAgD1B,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;CAsC7E;AAED,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"branch-workspace.d.ts","sourceRoot":"","sources":["../src/branch-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAG5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AASrD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,aAAa,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,SAAS,EAAE,YAAY,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAEzB,MAAM,EAAE,YAAY;YAIlB,kBAAkB;IAgD1B,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;CAsC7E;AAED,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAErD;;GAEG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,EAAE;IACvD,MAAM,EAAE,YAAY,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,aAAa,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,YAAY,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG,OAAO,CAAC,aAAa,CAAC,CAezB"}
|
package/dist/branch-workspace.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ensureBranchRoot } from './paths';
|
|
2
|
-
import { getBranchMetadataFileManager } from './branch-metadata';
|
|
2
|
+
import { getBranchMetadataFileManager, loadBranchContext } from './branch-metadata';
|
|
3
3
|
import { GitManager } from './git-manager';
|
|
4
4
|
import { createDebugLogger } from './utils/debug';
|
|
5
5
|
const log = createDebugLogger({ prefix: 'BranchWorkspace' });
|
|
@@ -84,4 +84,24 @@ export class BranchWorkspaceManager {
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
export { loadBranchContext } from './branch-metadata';
|
|
87
|
+
/**
|
|
88
|
+
* Load an existing branch context, or create the workspace if it doesn't exist yet.
|
|
89
|
+
*/
|
|
90
|
+
export async function loadOrCreateBranchContext(options) {
|
|
91
|
+
const existing = await loadBranchContext({
|
|
92
|
+
branchName: options.branchName,
|
|
93
|
+
mode: options.mode,
|
|
94
|
+
basePathOverride: options.basePathOverride,
|
|
95
|
+
});
|
|
96
|
+
if (existing)
|
|
97
|
+
return existing;
|
|
98
|
+
const manager = new BranchWorkspaceManager(options.config);
|
|
99
|
+
return manager.openOrCreateBranch({
|
|
100
|
+
branchName: options.branchName,
|
|
101
|
+
mode: options.mode,
|
|
102
|
+
basePathOverride: options.basePathOverride,
|
|
103
|
+
createdBy: options.createdBy,
|
|
104
|
+
remoteUrl: options.remoteUrl,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
87
107
|
//# sourceMappingURL=branch-workspace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branch-workspace.js","sourceRoot":"","sources":["../src/branch-workspace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"branch-workspace.js","sourceRoot":"","sources":["../src/branch-workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-ai-content.d.ts","sourceRoot":"","sources":["../../src/cli/generate-ai-content.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,UAAU,2BAA2B;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"generate-ai-content.d.ts","sourceRoot":"","sources":["../../src/cli/generate-ai-content.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,UAAU,2BAA2B;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAkF9F"}
|
|
@@ -7,7 +7,7 @@ import path from 'node:path';
|
|
|
7
7
|
import { generateAIContentFiles } from '../build/generate-ai-content';
|
|
8
8
|
import { getErrorMessage } from '../utils/error';
|
|
9
9
|
export async function generateAIContentCLI(options) {
|
|
10
|
-
const { projectDir, outputDir = 'public/ai', configPath } = options;
|
|
10
|
+
const { projectDir, outputDir = 'public/ai', configPath, appDir = 'app' } = options;
|
|
11
11
|
console.log('\nCanopyCMS generate-ai-content\n');
|
|
12
12
|
// Load adopter's canopycms config
|
|
13
13
|
const canopyConfigPath = path.join(projectDir, 'canopycms.config.ts');
|
|
@@ -26,7 +26,7 @@ export async function generateAIContentCLI(options) {
|
|
|
26
26
|
? configExport.server
|
|
27
27
|
: configExport;
|
|
28
28
|
// Load entry schema registry
|
|
29
|
-
const schemasPath = path.join(projectDir, '
|
|
29
|
+
const schemasPath = path.join(projectDir, appDir, 'schemas.ts');
|
|
30
30
|
let entrySchemaRegistry = {};
|
|
31
31
|
try {
|
|
32
32
|
const schemasModule = (await import(schemasPath));
|
|
@@ -34,7 +34,7 @@ export async function generateAIContentCLI(options) {
|
|
|
34
34
|
schemasModule.entrySchemaRegistry ?? schemasModule;
|
|
35
35
|
}
|
|
36
36
|
catch {
|
|
37
|
-
console.warn(
|
|
37
|
+
console.warn(` No ${appDir}/schemas.ts found, using empty entry schema registry`);
|
|
38
38
|
}
|
|
39
39
|
// Load AI config if specified
|
|
40
40
|
let aiConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-ai-content.js","sourceRoot":"","sources":["../../src/cli/generate-ai-content.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"generate-ai-content.js","sourceRoot":"","sources":["../../src/cli/generate-ai-content.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/init.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env tsx
|
|
2
|
+
import type { AuthPlugin } from '../auth/plugin';
|
|
2
3
|
export interface InitOptions {
|
|
3
4
|
mode: 'prod-sim' | 'dev';
|
|
4
5
|
appDir: string;
|
|
@@ -29,6 +30,7 @@ export declare function initDeployAws(options: InitDeployOptions): Promise<void>
|
|
|
29
30
|
*/
|
|
30
31
|
export declare function workerRunOnce(options: {
|
|
31
32
|
projectDir: string;
|
|
33
|
+
authPlugin?: AuthPlugin;
|
|
32
34
|
}): Promise<void>;
|
|
33
35
|
export {};
|
|
34
36
|
//# sourceMappingURL=init.d.ts.map
|
package/dist/cli/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":";AAmBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,GAAG,KAAK,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;IACvB,EAAE,EAAE,OAAO,CAAA;CACZ;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;CACxB;AAwDD;;;GAGG;AACH,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmE9D;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C7E;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAC3C,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqEhB"}
|
package/dist/cli/init.js
CHANGED
|
@@ -87,8 +87,9 @@ export async function init(options) {
|
|
|
87
87
|
'1. Install dependencies:',
|
|
88
88
|
` npm install canopycms canopycms-next canopycms-auth-clerk canopycms-auth-dev`,
|
|
89
89
|
'',
|
|
90
|
-
'2.
|
|
91
|
-
"
|
|
90
|
+
'2. Wrap your Next.js config:',
|
|
91
|
+
" import { withCanopy } from 'canopycms-next'",
|
|
92
|
+
' export default withCanopy({ /* your config */ })',
|
|
92
93
|
'',
|
|
93
94
|
'3. Customize ' + appDir + '/schemas.ts with your content schema',
|
|
94
95
|
'',
|
|
@@ -154,30 +155,19 @@ export async function workerRunOnce(options) {
|
|
|
154
155
|
return;
|
|
155
156
|
}
|
|
156
157
|
// For prod-sim without GitHub, just refresh auth cache
|
|
157
|
-
const authMode = process.env.CANOPY_AUTH_MODE || 'dev';
|
|
158
158
|
const cachePath = process.env.CANOPY_AUTH_CACHE_PATH ??
|
|
159
159
|
path.join(operatingStrategy(mode).getWorkspaceRoot(options.projectDir), '.cache');
|
|
160
160
|
let refreshAuthCache;
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
161
|
+
const authMode = process.env.CANOPY_AUTH_MODE || 'dev';
|
|
162
|
+
if (options.authPlugin?.createCacheRefresher) {
|
|
163
|
+
const refresher = options.authPlugin.createCacheRefresher(cachePath);
|
|
164
|
+
if (refresher) {
|
|
165
165
|
refreshAuthCache = async () => {
|
|
166
|
-
const result = await
|
|
167
|
-
secretKey: clerkSecretKey,
|
|
168
|
-
cachePath,
|
|
169
|
-
});
|
|
166
|
+
const result = await refresher();
|
|
170
167
|
console.log(` ${result.userCount} users, ${result.groupCount} groups`);
|
|
171
168
|
};
|
|
172
169
|
}
|
|
173
170
|
}
|
|
174
|
-
else if (authMode === 'dev') {
|
|
175
|
-
const { refreshDevCache } = await import('canopycms-auth-dev/cache-writer');
|
|
176
|
-
refreshAuthCache = async () => {
|
|
177
|
-
const result = await refreshDevCache({ cachePath });
|
|
178
|
-
console.log(` ${result.userCount} users, ${result.groupCount} groups`);
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
171
|
console.log(`\nCanopyCMS worker run-once (mode: ${mode}, auth: ${authMode})\n`);
|
|
182
172
|
// Refresh auth cache
|
|
183
173
|
if (refreshAuthCache) {
|
|
@@ -327,7 +317,26 @@ async function main() {
|
|
|
327
317
|
console.error('Usage: canopycms worker run-once');
|
|
328
318
|
process.exit(1);
|
|
329
319
|
}
|
|
330
|
-
|
|
320
|
+
// Resolve auth plugin from the adopter's installed packages.
|
|
321
|
+
// Uses variable-based import() so TypeScript doesn't resolve against canopycms's own deps.
|
|
322
|
+
const authMode = process.env.CANOPY_AUTH_MODE || 'dev';
|
|
323
|
+
let authPlugin;
|
|
324
|
+
try {
|
|
325
|
+
if (authMode === 'clerk') {
|
|
326
|
+
const pkg = 'canopycms-auth-clerk';
|
|
327
|
+
const { createClerkAuthPlugin } = await import(pkg);
|
|
328
|
+
authPlugin = createClerkAuthPlugin({});
|
|
329
|
+
}
|
|
330
|
+
else if (authMode === 'dev') {
|
|
331
|
+
const pkg = 'canopycms-auth-dev';
|
|
332
|
+
const { createDevAuthPlugin } = await import(pkg);
|
|
333
|
+
authPlugin = createDevAuthPlugin();
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
catch {
|
|
337
|
+
console.warn(`Could not load auth plugin for mode "${authMode}" — skipping cache refresh`);
|
|
338
|
+
}
|
|
339
|
+
await workerRunOnce({ projectDir: process.cwd(), authPlugin });
|
|
331
340
|
}
|
|
332
341
|
else if (command === 'generate-ai-content') {
|
|
333
342
|
const { generateAIContentCLI } = await import('./generate-ai-content');
|
|
@@ -335,6 +344,7 @@ async function main() {
|
|
|
335
344
|
projectDir: process.cwd(),
|
|
336
345
|
outputDir: typeof flags['output'] === 'string' ? flags['output'] : undefined,
|
|
337
346
|
configPath: typeof flags['config'] === 'string' ? flags['config'] : undefined,
|
|
347
|
+
appDir: typeof flags['app-dir'] === 'string' ? flags['app-dir'] : undefined,
|
|
338
348
|
});
|
|
339
349
|
}
|
|
340
350
|
else {
|
|
@@ -356,6 +366,7 @@ async function main() {
|
|
|
356
366
|
console.log(' generate-ai-content Generate static AI-ready content files');
|
|
357
367
|
console.log(' --output <dir> Output directory (default: public/ai)');
|
|
358
368
|
console.log(' --config <path> Path to AI content config file');
|
|
369
|
+
console.log(' --app-dir <path> App directory (default: app)');
|
|
359
370
|
process.exit(0);
|
|
360
371
|
}
|
|
361
372
|
}
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAA;AACnC,OAAO,EACL,eAAe,EACf,aAAa,EACb,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,aAAa,EACb,iBAAiB,GAClB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAkBrD,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,SAAS,CACtB,QAAgB,EAChB,OAAe,EACf,OAAoD;IAEpD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAA;IAE3D,IAAI,MAAM,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,oCAAoC;QACtC,CAAC;aAAM,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAClC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,YAAY,mBAAmB,CAAC,CAAA;YACpD,OAAO,KAAK,CAAA;QACd,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;gBAChC,OAAO,EAAE,GAAG,YAAY,6BAA6B;gBACrD,YAAY,EAAE,KAAK;aACpB,CAAC,CAAA;YACF,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACxC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,YAAY,EAAE,CAAC,CAAA;gBACnC,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAC9C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,YAAY,EAAE,CAAC,CAAA;IACzC,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,MAAc,EAAE,OAAe;IACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAA;IACzD,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAA;IACrC,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,kBAAkB,CAAA;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAoB;IAC7C,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;IACvE,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,CAAA;IAE3C,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;IAEzB,iBAAiB;IACjB,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,EAC5C,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,EAC/B,SAAS,CACV,CAAA;IACD,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC,EAC9C,MAAM,aAAa,CAAC,EAAE,YAAY,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAClE,SAAS,CACV,CAAA;IACD,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,eAAe,EAAE,EAAE,SAAS,CAAC,CAAA;IAChG,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,uCAAuC,CAAC,EACtE,MAAM,QAAQ,CAAC;QACb,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY;KAC7C,CAAC,EACF,SAAS,CACV,CAAA;IACD,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC,EAC9C,MAAM,QAAQ,CAAC,EAAE,YAAY,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAC7D,SAAS,CACV,CAAA;IACD,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAA;QAC3F,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,uBAAuB,CAAC,EACtD,MAAM,OAAO,CAAC,EAAE,YAAY,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAC5D,SAAS,CACV,CAAA;IACH,CAAC;IAED,oBAAoB;IACpB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IACzD,IAAI,MAAM,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;QACzD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC1C,MAAM,EAAE,CAAC,UAAU,CAAC,aAAa,EAAE,kDAAkD,CAAC,CAAA;YACtF,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IAED,CAAC,CAAC,IAAI,CACJ;QACE,0BAA0B;QAC1B,iFAAiF;QACjF,EAAE;QACF,6CAA6C;QAC7C,qCAAqC;QACrC,EAAE;QACF,eAAe,GAAG,MAAM,GAAG,sCAAsC;QACjE,EAAE;QACF,qBAAqB;QACrB,sCAAsC;KACvC,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,YAAY,CACb,CAAA;IAED,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA0B;IAC5D,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;IACrD,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,CAAA;IAE3C,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAEpC,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,EAAE,MAAM,aAAa,EAAE,EAAE,SAAS,CAAC,CAAA;IAC1F,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kCAAkC,CAAC,EACzD,MAAM,iBAAiB,EAAE,EACzB,SAAS,CACV,CAAA;IAED,wDAAwD;IACxD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;IAC9D,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;IAClE,MAAM,UAAU,GAAG,CAAC,MAAM,UAAU,CAAC,cAAc,CAAC,CAAC;QACnD,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,iBAAiB,CAAC,CAAC;YACrC,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,IAAI,CAAA;IAEV,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QACtD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACtC,CAAC,CAAC,IAAI,CACJ;gBACE,6BAA6B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG;gBACzD,EAAE;gBACF,yEAAyE;aAC1E,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,aAAa,CACd,CAAA;QACH,CAAC;IACH,CAAC;IAED,CAAC,CAAC,IAAI,CACJ,2GAA2G,EAC3G,gBAAgB,CACjB,CAAA;IAED,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA+B;IACjE,8DAA8D;IAC9D,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAA;IAEvE,2CAA2C;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAA;IACpE,IAAI,IAAI,GAAwB,UAAU,CAAA;IAC1C,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACzD,2EAA2E;QAC3E,IAAI,kCAAkC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3D,IAAI,GAAG,MAAM,CAAA;QACf,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;QAC5C,OAAM;IACR,CAAC;IAED,uDAAuD;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,KAAK,CAAA;IACtD,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAClC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;IAEnF,IAAI,gBAAmD,CAAA;IAEvD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAA;QACnD,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAA;YAC/E,gBAAgB,GAAG,KAAK,IAAI,EAAE;gBAC5B,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;oBACrC,SAAS,EAAE,cAAc;oBACzB,SAAS;iBACV,CAAC,CAAA;gBACF,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,SAAS,WAAW,MAAM,CAAC,UAAU,SAAS,CAAC,CAAA;YACzE,CAAC,CAAA;QACH,CAAC;IACH,CAAC;SAAM,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC9B,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAA;QAC3E,gBAAgB,GAAG,KAAK,IAAI,EAAE;YAC5B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;YACnD,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,SAAS,WAAW,MAAM,CAAC,UAAU,SAAS,CAAC,CAAA;QACzE,CAAC,CAAA;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,sCAAsC,IAAI,WAAW,QAAQ,KAAK,CAAC,CAAA;IAE/E,qBAAqB;IACrB,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;QACvC,MAAM,gBAAgB,EAAE,CAAA;QACxB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IACrC,CAAC;IAED,4CAA4C;IAC5C,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAA;IAC1E,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,IAAI,IAAI,CAAA;IACR,OAAO,CAAC,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;QAC3D,2DAA2D;QAC3D,oDAAoD;QACpD,OAAO,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAA;QAC1F,MAAM,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QACvD,SAAS,EAAE,CAAA;IACb,CAAC;IAED,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,UAAU,CAAC,CAAA;IAC/C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IACjC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AACvB,CAAC;AAED,iFAAiF;AACjF,SAAS,UAAU,CAAC,IAAc;IAIhC,MAAM,KAAK,GAAqC,EAAE,CAAA;IAClD,MAAM,UAAU,GAAa,EAAE,CAAA;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACxB,gBAAgB;YAChB,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,iBAAiB,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACpE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;YACnB,CAAC;iBAAM,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YACxB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;AAC9B,CAAC;AAED,iBAAiB;AACjB,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAClC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;IAE7B,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,cAAc,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAA;QACxD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;QAErC,IAAI,IAAwB,CAAA;QAC5B,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;YAC5D,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC;aAAM,IAAI,cAAc,EAAE,CAAC;YAC1B,IAAI,GAAG,KAAK,CAAA;QACd,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC;gBAC5B,OAAO,EAAE,uBAAuB;gBAChC,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,KAAc,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,oCAAoC,EAAE;oBACnF;wBACE,KAAK,EAAE,UAAmB;wBAC1B,KAAK,EAAE,UAAU;wBACjB,IAAI,EAAE,+CAA+C;qBACtD;iBACF;gBACD,YAAY,EAAE,KAAc;aAC7B,CAAC,CAAA;YACF,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvB,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;gBAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YACD,IAAI,GAAG,MAAM,CAAA;QACf,CAAC;QAED,IAAI,MAAc,CAAA;QAClB,IAAI,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;QAC3B,CAAC;aAAM,IAAI,cAAc,EAAE,CAAC;YAC1B,MAAM,GAAG,KAAK,CAAA;QAChB,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;gBAC1B,OAAO,EAAE,gBAAgB;gBACzB,WAAW,EAAE,KAAK;gBAClB,YAAY,EAAE,KAAK;aACpB,CAAC,CAAA;YACF,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvB,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;gBAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YACD,MAAM,GAAG,MAAM,CAAA;QACjB,CAAC;QAED,IAAI,EAAW,CAAA;QACf,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;YAC5B,EAAE,GAAG,KAAK,CAAA;QACZ,CAAC;aAAM,IAAI,cAAc,EAAE,CAAC;YAC1B,EAAE,GAAG,IAAI,CAAA;QACX,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;gBAC7B,OAAO,EAAE,8BAA8B;gBACvC,YAAY,EAAE,IAAI;aACnB,CAAC,CAAA;YACF,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvB,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;gBAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YACD,EAAE,GAAG,MAAM,CAAA;QACb,CAAC;QAED,MAAM,IAAI,CAAC;YACT,IAAI;YACJ,MAAM;YACN,EAAE;YACF,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE;YACzB,KAAK;YACL,cAAc;SACf,CAAC,CAAA;IACJ,CAAC;SAAM,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAA;YACjD,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAA;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,MAAM,aAAa,CAAC;YAClB,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE;YACzB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI;YAC9B,cAAc,EAAE,KAAK,CAAC,iBAAiB,CAAC,KAAK,IAAI;SAClD,CAAC,CAAA;IACJ,CAAC;SAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;QAChC,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAA;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,MAAM,aAAa,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IACpD,CAAC;SAAM,IAAI,OAAO,KAAK,qBAAqB,EAAE,CAAC;QAC7C,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAA;QACtE,MAAM,oBAAoB,CAAC;YACzB,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE;YACzB,SAAS,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;YAC5E,UAAU,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9E,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;QAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACxB,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAA;QACvE,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAA;QACtE,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAA;QACrE,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAA;QAC5E,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAA;QAChF,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;QACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAA;QAC1E,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAA;QAChF,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;QACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAA;QACpF,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAA;QAC/E,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAA;QAC9E,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAA;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,qFAAqF;AACrF,yDAAyD;AACzD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,UAAU,CAAC,CAAA;AAE9E,IAAI,WAAW,EAAE,CAAC;IAChB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
package/dist/content-reader.d.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { BranchWorkspaceManager } from './branch-workspace';
|
|
2
1
|
import { type LogicalPath, type EntrySlug } from './paths';
|
|
3
2
|
import type { CanopyServices } from './services';
|
|
4
3
|
import type { BranchContext } from './types';
|
|
5
4
|
import type { CanopyUser } from './user';
|
|
6
5
|
export interface ContentReaderOptions {
|
|
7
6
|
services: CanopyServices;
|
|
8
|
-
workspaceManager?: BranchWorkspaceManager;
|
|
9
7
|
basePathOverride?: string;
|
|
10
8
|
defaultBranch?: string;
|
|
11
9
|
createdBy?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-reader.d.ts","sourceRoot":"","sources":["../src/content-reader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"content-reader.d.ts","sourceRoot":"","sources":["../src/content-reader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,WAAW,EAAqB,KAAK,SAAS,EAAE,MAAM,SAAS,CAAA;AAEjG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAIxC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,cAAc,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;CACrE;AAED,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,SAAS,EAAE,WAAW,CAAA;IACtB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gFAAgF;IAChF,IAAI,EAAE,UAAU,CAAA;IAChB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,EAChB,KAAK,EAAE,gBAAgB,EACvB,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACxC;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,oBAAoB,KAAG,aA+KnE,CAAA"}
|
package/dist/content-reader.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { loadBranchContext, loadOrCreateBranchContext } from './branch-workspace';
|
|
2
2
|
import { ContentStore, ContentStoreError } from './content-store';
|
|
3
3
|
import { resolveBranchPaths } from './paths';
|
|
4
4
|
import { isDeployedStatic, isBuildMode } from './build-mode';
|
|
@@ -11,31 +11,35 @@ export const createContentReader = (options) => {
|
|
|
11
11
|
const services = options.services;
|
|
12
12
|
const operatingMode = services.config.mode;
|
|
13
13
|
const basePathOverride = options.basePathOverride;
|
|
14
|
-
const workspaceManager = options.workspaceManager ?? new BranchWorkspaceManager(services.config);
|
|
15
14
|
const defaultBranch = options.defaultBranch ?? services.config.defaultBaseBranch ?? 'main';
|
|
16
15
|
const allowCreateBranch = options.allowCreateBranch ?? true;
|
|
17
16
|
const createdBy = options.createdBy ?? 'canopycms-content-reader';
|
|
18
17
|
const resolveBranchContext = async (branchName) => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
// Check custom resolver first (e.g., from HTTP handler)
|
|
19
|
+
if (options.getBranchContext) {
|
|
20
|
+
const existing = await options.getBranchContext(branchName);
|
|
21
|
+
if (existing)
|
|
22
|
+
return existing;
|
|
23
|
+
}
|
|
24
|
+
if (allowCreateBranch) {
|
|
25
|
+
return loadOrCreateBranchContext({
|
|
26
|
+
config: services.config,
|
|
22
27
|
branchName,
|
|
23
28
|
mode: operatingMode,
|
|
24
29
|
basePathOverride,
|
|
30
|
+
createdBy,
|
|
31
|
+
remoteUrl: services.config.defaultRemoteUrl,
|
|
25
32
|
});
|
|
26
|
-
if (existing) {
|
|
27
|
-
return existing;
|
|
28
|
-
}
|
|
29
|
-
if (!allowCreateBranch) {
|
|
30
|
-
throw new ContentStoreError(`Branch not found: ${branchName}`);
|
|
31
33
|
}
|
|
32
|
-
|
|
34
|
+
// Not allowed to create — must exist
|
|
35
|
+
const existing = await loadBranchContext({
|
|
33
36
|
branchName,
|
|
34
37
|
mode: operatingMode,
|
|
35
38
|
basePathOverride,
|
|
36
|
-
createdBy,
|
|
37
|
-
remoteUrl: services.config.defaultRemoteUrl,
|
|
38
39
|
});
|
|
40
|
+
if (!existing)
|
|
41
|
+
throw new ContentStoreError(`Branch not found: ${branchName}`);
|
|
42
|
+
return existing;
|
|
39
43
|
};
|
|
40
44
|
const resolveStore = async (branchName) => {
|
|
41
45
|
const context = await resolveBranchContext(branchName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-reader.js","sourceRoot":"","sources":["../src/content-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"content-reader.js","sourceRoot":"","sources":["../src/content-reader.ts"],"names":[],"mappings":"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"}
|
package/dist/context.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isDeployedStatic, isBuildMode, STATIC_DEPLOY_USER } from './build-mode';
|
|
2
2
|
import { createContentReader } from './content-reader';
|
|
3
3
|
import { createLogicalPath, parseSlug, resolveBranchPaths } from './paths';
|
|
4
|
-
import {
|
|
4
|
+
import { loadOrCreateBranchContext } from './branch-workspace';
|
|
5
5
|
import { buildContentTree as buildContentTreeImpl, } from './content-tree';
|
|
6
6
|
/**
|
|
7
7
|
* Create a Canopy context that manages auth + content reading.
|
|
@@ -60,13 +60,13 @@ export function createCanopyContext(options) {
|
|
|
60
60
|
const buildContentTree = async (options) => {
|
|
61
61
|
const operatingMode = services.config.mode;
|
|
62
62
|
const defaultBranch = services.config.defaultBaseBranch ?? 'main';
|
|
63
|
-
const branchContext = await
|
|
63
|
+
const branchContext = await loadOrCreateBranchContext({
|
|
64
|
+
config: services.config,
|
|
64
65
|
branchName: defaultBranch,
|
|
65
66
|
mode: operatingMode,
|
|
67
|
+
createdBy: 'canopycms-context',
|
|
68
|
+
remoteUrl: services.config.defaultRemoteUrl,
|
|
66
69
|
});
|
|
67
|
-
if (!branchContext) {
|
|
68
|
-
return [];
|
|
69
|
-
}
|
|
70
70
|
const { branchRoot } = resolveBranchPaths(branchContext, operatingMode);
|
|
71
71
|
const contentRootName = services.config.contentRoot || 'content';
|
|
72
72
|
const { flatSchema } = await services.branchSchemaCache.getSchema(branchRoot, services.entrySchemaRegistry, contentRootName);
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,kBAAkB,EAAkB,MAAM,SAAS,CAAA;AAC1F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/paths/branch.js
CHANGED
|
@@ -17,7 +17,7 @@ export class BranchPathError extends Error {
|
|
|
17
17
|
export function sanitizeBranchName(branchName) {
|
|
18
18
|
const replaced = branchName.replace(/[^a-zA-Z0-9._-]/g, '-');
|
|
19
19
|
const squashed = replaced.replace(/-+/g, '-');
|
|
20
|
-
const trimmedDots = squashed.replace(/^\.+/, '').replace(
|
|
20
|
+
const trimmedDots = squashed.replace(/^\.+/, '').replace(/(?<!\.)\.+$/, '');
|
|
21
21
|
return (trimmedDots || 'branch');
|
|
22
22
|
}
|
|
23
23
|
const resolveContentBranchesRoot = (mode, override) => {
|
package/dist/paths/branch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/paths/branch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,IAAI,MAAM,WAAW,CAAA;AAG5B,OAAO,EAAiB,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAepE,MAAM,OAAO,eAAgB,SAAQ,KAAK;CAAG;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAA;IAC5D,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC7C,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/paths/branch.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
|
+
"//": "@codemirror/language, @lezer/highlight: workaround — @mdxeditor/editor uses cm6-theme-basic-light which peer-requires these but mdxeditor doesn't declare them as dependencies",
|
|
2
3
|
"name": "canopycms",
|
|
3
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.6",
|
|
4
5
|
"description": "CanopyCMS core package: schema-driven content, branch-aware editing, and editor UI for Next.js.",
|
|
5
6
|
"license": "MIT",
|
|
6
7
|
"repository": {
|
|
7
8
|
"type": "git",
|
|
8
|
-
"url": "https://github.com/safeinsights/canopycms.git",
|
|
9
|
+
"url": "git+https://github.com/safeinsights/canopycms.git",
|
|
9
10
|
"directory": "packages/canopycms"
|
|
10
11
|
},
|
|
11
12
|
"private": false,
|
|
@@ -13,92 +14,68 @@
|
|
|
13
14
|
"main": "dist/index.js",
|
|
14
15
|
"types": "dist/index.d.ts",
|
|
15
16
|
"bin": {
|
|
16
|
-
"canopycms": "./
|
|
17
|
+
"canopycms": "./dist/cli/init.js"
|
|
17
18
|
},
|
|
18
19
|
"exports": {
|
|
19
|
-
".":
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"./
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
"./
|
|
28
|
-
|
|
29
|
-
|
|
20
|
+
".": {
|
|
21
|
+
"import": "./dist/index.js",
|
|
22
|
+
"types": "./dist/index.d.ts"
|
|
23
|
+
},
|
|
24
|
+
"./client": {
|
|
25
|
+
"import": "./dist/client.js",
|
|
26
|
+
"types": "./dist/client.d.ts"
|
|
27
|
+
},
|
|
28
|
+
"./server": {
|
|
29
|
+
"import": "./dist/server.js",
|
|
30
|
+
"types": "./dist/server.d.ts"
|
|
31
|
+
},
|
|
32
|
+
"./auth": {
|
|
33
|
+
"import": "./dist/auth/index.js",
|
|
34
|
+
"types": "./dist/auth/index.d.ts"
|
|
35
|
+
},
|
|
36
|
+
"./auth/cache": {
|
|
37
|
+
"import": "./dist/auth/cache.js",
|
|
38
|
+
"types": "./dist/auth/cache.d.ts"
|
|
39
|
+
},
|
|
40
|
+
"./http": {
|
|
41
|
+
"import": "./dist/http/index.js",
|
|
42
|
+
"types": "./dist/http/index.d.ts"
|
|
43
|
+
},
|
|
44
|
+
"./task-queue": {
|
|
45
|
+
"import": "./dist/task-queue/index.js",
|
|
46
|
+
"types": "./dist/task-queue/index.d.ts"
|
|
47
|
+
},
|
|
48
|
+
"./worker/task-queue": {
|
|
49
|
+
"import": "./dist/worker/task-queue.js",
|
|
50
|
+
"types": "./dist/worker/task-queue.d.ts"
|
|
51
|
+
},
|
|
52
|
+
"./worker/cms-worker": {
|
|
53
|
+
"import": "./dist/worker/cms-worker.js",
|
|
54
|
+
"types": "./dist/worker/cms-worker.d.ts"
|
|
55
|
+
},
|
|
56
|
+
"./ai": {
|
|
57
|
+
"import": "./dist/ai/index.js",
|
|
58
|
+
"types": "./dist/ai/index.d.ts"
|
|
59
|
+
},
|
|
60
|
+
"./build": {
|
|
61
|
+
"import": "./dist/build/index.js",
|
|
62
|
+
"types": "./dist/build/index.d.ts"
|
|
63
|
+
},
|
|
64
|
+
"./test-utils": {
|
|
65
|
+
"import": "./dist/test-utils/index.js",
|
|
66
|
+
"types": "./dist/test-utils/index.d.ts"
|
|
67
|
+
}
|
|
30
68
|
},
|
|
31
69
|
"files": [
|
|
32
70
|
"dist"
|
|
33
71
|
],
|
|
34
|
-
"publishConfig": {
|
|
35
|
-
"exports": {
|
|
36
|
-
".": {
|
|
37
|
-
"import": "./dist/index.js",
|
|
38
|
-
"types": "./dist/index.d.ts"
|
|
39
|
-
},
|
|
40
|
-
"./client": {
|
|
41
|
-
"import": "./dist/client.js",
|
|
42
|
-
"types": "./dist/client.d.ts"
|
|
43
|
-
},
|
|
44
|
-
"./server": {
|
|
45
|
-
"import": "./dist/server.js",
|
|
46
|
-
"types": "./dist/server.d.ts"
|
|
47
|
-
},
|
|
48
|
-
"./auth": {
|
|
49
|
-
"import": "./dist/auth/index.js",
|
|
50
|
-
"types": "./dist/auth/index.d.ts"
|
|
51
|
-
},
|
|
52
|
-
"./auth/cache": {
|
|
53
|
-
"import": "./dist/auth/cache.js",
|
|
54
|
-
"types": "./dist/auth/cache.d.ts"
|
|
55
|
-
},
|
|
56
|
-
"./http": {
|
|
57
|
-
"import": "./dist/http/index.js",
|
|
58
|
-
"types": "./dist/http/index.d.ts"
|
|
59
|
-
},
|
|
60
|
-
"./task-queue": {
|
|
61
|
-
"import": "./dist/task-queue/index.js",
|
|
62
|
-
"types": "./dist/task-queue/index.d.ts"
|
|
63
|
-
},
|
|
64
|
-
"./worker/task-queue": {
|
|
65
|
-
"import": "./dist/worker/task-queue.js",
|
|
66
|
-
"types": "./dist/worker/task-queue.d.ts"
|
|
67
|
-
},
|
|
68
|
-
"./worker/cms-worker": {
|
|
69
|
-
"import": "./dist/worker/cms-worker.js",
|
|
70
|
-
"types": "./dist/worker/cms-worker.d.ts"
|
|
71
|
-
},
|
|
72
|
-
"./ai": {
|
|
73
|
-
"import": "./dist/ai/index.js",
|
|
74
|
-
"types": "./dist/ai/index.d.ts"
|
|
75
|
-
},
|
|
76
|
-
"./build": {
|
|
77
|
-
"import": "./dist/build/index.js",
|
|
78
|
-
"types": "./dist/build/index.d.ts"
|
|
79
|
-
}
|
|
80
|
-
},
|
|
81
|
-
"bin": {
|
|
82
|
-
"canopycms": "./dist/cli/init.js"
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
"scripts": {
|
|
86
|
-
"prebuild": "npx tsx scripts/generate-client.ts",
|
|
87
|
-
"build": "tsc -p tsconfig.build.json",
|
|
88
|
-
"postbuild": "node scripts/postbuild.mjs",
|
|
89
|
-
"lint": "eslint src/",
|
|
90
|
-
"test": "vitest run",
|
|
91
|
-
"typecheck": "tsc --noEmit",
|
|
92
|
-
"generate:client": "npx tsx scripts/generate-client.ts",
|
|
93
|
-
"storybook": "storybook dev -p 6006 -c .storybook",
|
|
94
|
-
"storybook:build": "storybook build -c .storybook"
|
|
95
|
-
},
|
|
96
72
|
"engines": {
|
|
97
73
|
"node": ">=18"
|
|
98
74
|
},
|
|
99
75
|
"dependencies": {
|
|
100
76
|
"@clack/prompts": "^1.1.0",
|
|
101
77
|
"@dnd-kit/core": "^6.3.1",
|
|
78
|
+
"@tabler/icons-react": "^3.36.0",
|
|
102
79
|
"@dnd-kit/sortable": "^8.0.0",
|
|
103
80
|
"@dnd-kit/utilities": "^3.2.2",
|
|
104
81
|
"@emotion/react": "^11.13.3",
|
|
@@ -107,6 +84,8 @@
|
|
|
107
84
|
"@mantine/hooks": "^7.14.2",
|
|
108
85
|
"@mantine/modals": "^7.14.2",
|
|
109
86
|
"@mantine/notifications": "^7.14.2",
|
|
87
|
+
"@codemirror/language": "^6.0.0",
|
|
88
|
+
"@lezer/highlight": "^1.0.0",
|
|
110
89
|
"@mdxeditor/editor": "^3.52.4",
|
|
111
90
|
"@octokit/rest": "^20.0.2",
|
|
112
91
|
"chokidar": "^4.0.3",
|
|
@@ -139,7 +118,21 @@
|
|
|
139
118
|
"autoprefixer": "^10.4.20",
|
|
140
119
|
"jsdom": "^24.1.3",
|
|
141
120
|
"postcss": "^8.4.47",
|
|
121
|
+
"react": "^18.3.1",
|
|
122
|
+
"react-dom": "^18.3.1",
|
|
142
123
|
"storybook": "^8.6.14",
|
|
143
|
-
"tsx": "^4.19.0"
|
|
124
|
+
"tsx": "^4.19.0",
|
|
125
|
+
"vitest": "^1.6.0"
|
|
126
|
+
},
|
|
127
|
+
"scripts": {
|
|
128
|
+
"prebuild": "npx tsx scripts/generate-client.ts",
|
|
129
|
+
"build": "tsc -p tsconfig.build.json",
|
|
130
|
+
"postbuild": "node scripts/postbuild.mjs",
|
|
131
|
+
"lint": "eslint src/",
|
|
132
|
+
"test": "vitest run",
|
|
133
|
+
"typecheck": "tsc --noEmit",
|
|
134
|
+
"generate:client": "npx tsx scripts/generate-client.ts",
|
|
135
|
+
"storybook": "storybook dev -p 6006 -c .storybook",
|
|
136
|
+
"storybook:build": "storybook build -c .storybook"
|
|
144
137
|
}
|
|
145
|
-
}
|
|
138
|
+
}
|
package/src/cli/init.ts
DELETED
|
@@ -1,462 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env tsx
|
|
2
|
-
|
|
3
|
-
import fs from 'node:fs/promises'
|
|
4
|
-
import { realpathSync } from 'node:fs'
|
|
5
|
-
import path from 'node:path'
|
|
6
|
-
import { fileURLToPath } from 'node:url'
|
|
7
|
-
import * as p from '@clack/prompts'
|
|
8
|
-
import {
|
|
9
|
-
canopyCmsConfig,
|
|
10
|
-
canopyContext,
|
|
11
|
-
schemasTemplate,
|
|
12
|
-
apiRoute,
|
|
13
|
-
editPage,
|
|
14
|
-
aiConfig,
|
|
15
|
-
aiRoute,
|
|
16
|
-
dockerfileCms,
|
|
17
|
-
githubWorkflowCms,
|
|
18
|
-
} from './templates'
|
|
19
|
-
import { operatingStrategy } from '../operating-mode'
|
|
20
|
-
|
|
21
|
-
export interface InitOptions {
|
|
22
|
-
mode: 'prod-sim' | 'dev'
|
|
23
|
-
appDir: string
|
|
24
|
-
projectDir: string
|
|
25
|
-
force: boolean
|
|
26
|
-
nonInteractive: boolean
|
|
27
|
-
ai: boolean
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
interface InitDeployOptions {
|
|
31
|
-
cloud: 'aws'
|
|
32
|
-
projectDir: string
|
|
33
|
-
force: boolean
|
|
34
|
-
nonInteractive: boolean
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
async function fileExists(filePath: string): Promise<boolean> {
|
|
38
|
-
try {
|
|
39
|
-
await fs.stat(filePath)
|
|
40
|
-
return true
|
|
41
|
-
} catch {
|
|
42
|
-
return false
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Write a file, prompting for overwrite confirmation if it already exists.
|
|
48
|
-
* Returns true if the file was written, false if skipped.
|
|
49
|
-
*/
|
|
50
|
-
async function writeFile(
|
|
51
|
-
filePath: string,
|
|
52
|
-
content: string,
|
|
53
|
-
options: { force: boolean; nonInteractive: boolean },
|
|
54
|
-
): Promise<boolean> {
|
|
55
|
-
const relativePath = path.relative(process.cwd(), filePath)
|
|
56
|
-
|
|
57
|
-
if (await fileExists(filePath)) {
|
|
58
|
-
if (options.force) {
|
|
59
|
-
// --force: overwrite without asking
|
|
60
|
-
} else if (options.nonInteractive) {
|
|
61
|
-
p.log.warn(`skip: ${relativePath} (already exists)`)
|
|
62
|
-
return false
|
|
63
|
-
} else {
|
|
64
|
-
const overwrite = await p.confirm({
|
|
65
|
-
message: `${relativePath} already exists. Overwrite?`,
|
|
66
|
-
initialValue: false,
|
|
67
|
-
})
|
|
68
|
-
if (p.isCancel(overwrite) || !overwrite) {
|
|
69
|
-
p.log.warn(`skip: ${relativePath}`)
|
|
70
|
-
return false
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
await fs.mkdir(path.dirname(filePath), { recursive: true })
|
|
76
|
-
await fs.writeFile(filePath, content, 'utf-8')
|
|
77
|
-
p.log.success(`created: ${relativePath}`)
|
|
78
|
-
return true
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Compute the relative path from a file inside appDir to the project root.
|
|
83
|
-
* e.g. appDir="app" depth=1 → "../", appDir="src/app" depth=2 → "../../"
|
|
84
|
-
*/
|
|
85
|
-
function configImportPath(appDir: string, subdirs: number): string {
|
|
86
|
-
const appDepth = appDir.split('/').filter(Boolean).length
|
|
87
|
-
const totalDepth = appDepth + subdirs
|
|
88
|
-
return '../'.repeat(totalDepth) + 'canopycms.config'
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Framework integration: generates the files needed to add CanopyCMS
|
|
93
|
-
* editing to a Next.js app. Cloud-agnostic.
|
|
94
|
-
*/
|
|
95
|
-
export async function init(options: InitOptions): Promise<void> {
|
|
96
|
-
const { projectDir, mode, appDir, ai, force, nonInteractive } = options
|
|
97
|
-
const writeOpts = { force, nonInteractive }
|
|
98
|
-
|
|
99
|
-
p.intro('CanopyCMS init')
|
|
100
|
-
|
|
101
|
-
// Generate files
|
|
102
|
-
await writeFile(
|
|
103
|
-
path.join(projectDir, 'canopycms.config.ts'),
|
|
104
|
-
await canopyCmsConfig({ mode }),
|
|
105
|
-
writeOpts,
|
|
106
|
-
)
|
|
107
|
-
await writeFile(
|
|
108
|
-
path.join(projectDir, appDir, 'lib/canopy.ts'),
|
|
109
|
-
await canopyContext({ configImport: configImportPath(appDir, 1) }),
|
|
110
|
-
writeOpts,
|
|
111
|
-
)
|
|
112
|
-
await writeFile(path.join(projectDir, appDir, 'schemas.ts'), await schemasTemplate(), writeOpts)
|
|
113
|
-
await writeFile(
|
|
114
|
-
path.join(projectDir, appDir, 'api/canopycms/[...canopycms]/route.ts'),
|
|
115
|
-
await apiRoute({
|
|
116
|
-
canopyImport: '../'.repeat(3) + 'lib/canopy',
|
|
117
|
-
}),
|
|
118
|
-
writeOpts,
|
|
119
|
-
)
|
|
120
|
-
await writeFile(
|
|
121
|
-
path.join(projectDir, appDir, 'edit/page.tsx'),
|
|
122
|
-
await editPage({ configImport: configImportPath(appDir, 1) }),
|
|
123
|
-
writeOpts,
|
|
124
|
-
)
|
|
125
|
-
if (ai) {
|
|
126
|
-
await writeFile(path.join(projectDir, appDir, 'ai/config.ts'), await aiConfig(), writeOpts)
|
|
127
|
-
await writeFile(
|
|
128
|
-
path.join(projectDir, appDir, 'ai/[...path]/route.ts'),
|
|
129
|
-
await aiRoute({ configImport: configImportPath(appDir, 2) }),
|
|
130
|
-
writeOpts,
|
|
131
|
-
)
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// Update .gitignore
|
|
135
|
-
const gitignorePath = path.join(projectDir, '.gitignore')
|
|
136
|
-
if (await fileExists(gitignorePath)) {
|
|
137
|
-
const content = await fs.readFile(gitignorePath, 'utf-8')
|
|
138
|
-
if (!content.includes('.canopy-prod-sim')) {
|
|
139
|
-
await fs.appendFile(gitignorePath, '\n# CanopyCMS\n.canopy-prod-sim/\n.canopy-dev/\n')
|
|
140
|
-
p.log.success('updated: .gitignore')
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
p.note(
|
|
145
|
-
[
|
|
146
|
-
'1. Install dependencies:',
|
|
147
|
-
` npm install canopycms canopycms-next canopycms-auth-clerk canopycms-auth-dev`,
|
|
148
|
-
'',
|
|
149
|
-
'2. Add transpilePackages to next.config.ts:',
|
|
150
|
-
" transpilePackages: ['canopycms']",
|
|
151
|
-
'',
|
|
152
|
-
'3. Customize ' + appDir + '/schemas.ts with your content schema',
|
|
153
|
-
'',
|
|
154
|
-
'4. Run: npm run dev',
|
|
155
|
-
'5. Visit: http://localhost:3000/edit',
|
|
156
|
-
].join('\n'),
|
|
157
|
-
'Next steps',
|
|
158
|
-
)
|
|
159
|
-
|
|
160
|
-
p.outro('Done!')
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Cloud deployment artifacts: generates AWS-specific files
|
|
165
|
-
* (Dockerfile, CI workflow).
|
|
166
|
-
*/
|
|
167
|
-
export async function initDeployAws(options: InitDeployOptions): Promise<void> {
|
|
168
|
-
const { projectDir, force, nonInteractive } = options
|
|
169
|
-
const writeOpts = { force, nonInteractive }
|
|
170
|
-
|
|
171
|
-
p.intro('CanopyCMS init-deploy aws')
|
|
172
|
-
|
|
173
|
-
await writeFile(path.join(projectDir, 'Dockerfile.cms'), await dockerfileCms(), writeOpts)
|
|
174
|
-
await writeFile(
|
|
175
|
-
path.join(projectDir, '.github/workflows/deploy-cms.yml'),
|
|
176
|
-
await githubWorkflowCms(),
|
|
177
|
-
writeOpts,
|
|
178
|
-
)
|
|
179
|
-
|
|
180
|
-
// Check if next.config already has CANOPY_BUILD support
|
|
181
|
-
const nextConfigPath = path.join(projectDir, 'next.config.ts')
|
|
182
|
-
const nextConfigMjsPath = path.join(projectDir, 'next.config.mjs')
|
|
183
|
-
const configPath = (await fileExists(nextConfigPath))
|
|
184
|
-
? nextConfigPath
|
|
185
|
-
: (await fileExists(nextConfigMjsPath))
|
|
186
|
-
? nextConfigMjsPath
|
|
187
|
-
: null
|
|
188
|
-
|
|
189
|
-
if (configPath) {
|
|
190
|
-
const content = await fs.readFile(configPath, 'utf-8')
|
|
191
|
-
if (!content.includes('CANOPY_BUILD')) {
|
|
192
|
-
p.note(
|
|
193
|
-
[
|
|
194
|
-
`Add dual build support to ${path.basename(configPath)}:`,
|
|
195
|
-
'',
|
|
196
|
-
" output: process.env.CANOPY_BUILD === 'cms' ? 'standalone' : 'export',",
|
|
197
|
-
].join('\n'),
|
|
198
|
-
'Manual step',
|
|
199
|
-
)
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
p.note(
|
|
204
|
-
'CDK constructs are available via the canopycms-cdk package.\nSee the deployment plan for CDK stack setup.',
|
|
205
|
-
'AWS deployment',
|
|
206
|
-
)
|
|
207
|
-
|
|
208
|
-
p.outro('Done!')
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
/**
|
|
212
|
-
* Worker run-once: process pending tasks, sync git, refresh auth cache, then exit.
|
|
213
|
-
* Used in prod-sim to trigger worker operations without a persistent daemon.
|
|
214
|
-
*/
|
|
215
|
-
export async function workerRunOnce(options: { projectDir: string }): Promise<void> {
|
|
216
|
-
// Dynamic import to avoid loading worker deps when not needed
|
|
217
|
-
const { getTaskQueueDir } = await import('../worker/task-queue-config')
|
|
218
|
-
|
|
219
|
-
// Determine workspace and mode from config
|
|
220
|
-
const cfgPath = path.join(options.projectDir, 'canopycms.config.ts')
|
|
221
|
-
let mode: 'prod' | 'prod-sim' = 'prod-sim'
|
|
222
|
-
try {
|
|
223
|
-
const configContent = await fs.readFile(cfgPath, 'utf-8')
|
|
224
|
-
// Match the mode property in the config object, not in comments or strings
|
|
225
|
-
if (/^\s*mode:\s*['"]prod['"]\s*[,}]/m.test(configContent)) {
|
|
226
|
-
mode = 'prod'
|
|
227
|
-
}
|
|
228
|
-
} catch {
|
|
229
|
-
// Default to prod-sim
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
const taskDir = getTaskQueueDir({ mode })
|
|
233
|
-
if (!taskDir) {
|
|
234
|
-
console.log('Worker not needed in dev mode')
|
|
235
|
-
return
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
// For prod-sim without GitHub, just refresh auth cache
|
|
239
|
-
const authMode = process.env.CANOPY_AUTH_MODE || 'dev'
|
|
240
|
-
const cachePath =
|
|
241
|
-
process.env.CANOPY_AUTH_CACHE_PATH ??
|
|
242
|
-
path.join(operatingStrategy(mode).getWorkspaceRoot(options.projectDir), '.cache')
|
|
243
|
-
|
|
244
|
-
let refreshAuthCache: (() => Promise<void>) | undefined
|
|
245
|
-
|
|
246
|
-
if (authMode === 'clerk') {
|
|
247
|
-
const clerkSecretKey = process.env.CLERK_SECRET_KEY
|
|
248
|
-
if (clerkSecretKey) {
|
|
249
|
-
const { refreshClerkCache } = await import('canopycms-auth-clerk/cache-writer')
|
|
250
|
-
refreshAuthCache = async () => {
|
|
251
|
-
const result = await refreshClerkCache({
|
|
252
|
-
secretKey: clerkSecretKey,
|
|
253
|
-
cachePath,
|
|
254
|
-
})
|
|
255
|
-
console.log(` ${result.userCount} users, ${result.groupCount} groups`)
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
} else if (authMode === 'dev') {
|
|
259
|
-
const { refreshDevCache } = await import('canopycms-auth-dev/cache-writer')
|
|
260
|
-
refreshAuthCache = async () => {
|
|
261
|
-
const result = await refreshDevCache({ cachePath })
|
|
262
|
-
console.log(` ${result.userCount} users, ${result.groupCount} groups`)
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
console.log(`\nCanopyCMS worker run-once (mode: ${mode}, auth: ${authMode})\n`)
|
|
267
|
-
|
|
268
|
-
// Refresh auth cache
|
|
269
|
-
if (refreshAuthCache) {
|
|
270
|
-
console.log('Refreshing auth cache...')
|
|
271
|
-
await refreshAuthCache()
|
|
272
|
-
console.log('Auth cache refreshed')
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
// Process task queue (if any pending tasks)
|
|
276
|
-
const { dequeueTask, completeTask } = await import('../worker/task-queue')
|
|
277
|
-
let taskCount = 0
|
|
278
|
-
let task
|
|
279
|
-
while ((task = await dequeueTask(taskDir)) !== null) {
|
|
280
|
-
console.log(`Processing task: ${task.action} (${task.id})`)
|
|
281
|
-
// In prod-sim without GitHub, just mark tasks as completed
|
|
282
|
-
// A real worker would execute the GitHub operations
|
|
283
|
-
console.warn(` WARNING: Task skipped — GitHub operations require the full worker daemon`)
|
|
284
|
-
await completeTask(taskDir, task.id, { skipped: true })
|
|
285
|
-
taskCount++
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
if (taskCount > 0) {
|
|
289
|
-
console.log(`Processed ${taskCount} task(s)`)
|
|
290
|
-
} else {
|
|
291
|
-
console.log('No pending tasks')
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
console.log('\nDone')
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
/** Parse CLI flags from argv, returning values and remaining positional args. */
|
|
298
|
-
function parseFlags(args: string[]): {
|
|
299
|
-
flags: Record<string, string | boolean>
|
|
300
|
-
positional: string[]
|
|
301
|
-
} {
|
|
302
|
-
const flags: Record<string, string | boolean> = {}
|
|
303
|
-
const positional: string[] = []
|
|
304
|
-
|
|
305
|
-
for (let i = 0; i < args.length; i++) {
|
|
306
|
-
const arg = args[i]
|
|
307
|
-
if (arg.startsWith('--')) {
|
|
308
|
-
const key = arg.slice(2)
|
|
309
|
-
// Boolean flags
|
|
310
|
-
if (key === 'force' || key === 'non-interactive' || key === 'no-ai') {
|
|
311
|
-
flags[key] = true
|
|
312
|
-
} else if (i + 1 < args.length && !args[i + 1].startsWith('--')) {
|
|
313
|
-
flags[key] = args[++i]
|
|
314
|
-
}
|
|
315
|
-
} else {
|
|
316
|
-
positional.push(arg)
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
return { flags, positional }
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
// CLI entrypoint
|
|
324
|
-
async function main() {
|
|
325
|
-
const args = process.argv.slice(2)
|
|
326
|
-
const { flags, positional } = parseFlags(args)
|
|
327
|
-
const command = positional[0]
|
|
328
|
-
|
|
329
|
-
if (command === 'init') {
|
|
330
|
-
const nonInteractive = flags['non-interactive'] === true
|
|
331
|
-
const force = flags['force'] === true
|
|
332
|
-
|
|
333
|
-
let mode: 'dev' | 'prod-sim'
|
|
334
|
-
if (flags['mode'] === 'dev' || flags['mode'] === 'prod-sim') {
|
|
335
|
-
mode = flags['mode']
|
|
336
|
-
} else if (nonInteractive) {
|
|
337
|
-
mode = 'dev'
|
|
338
|
-
} else {
|
|
339
|
-
const result = await p.select({
|
|
340
|
-
message: 'Which operating mode?',
|
|
341
|
-
options: [
|
|
342
|
-
{ value: 'dev' as const, label: 'dev', hint: 'Direct editing in current checkout' },
|
|
343
|
-
{
|
|
344
|
-
value: 'prod-sim' as const,
|
|
345
|
-
label: 'prod-sim',
|
|
346
|
-
hint: 'Simulates production with local branch clones',
|
|
347
|
-
},
|
|
348
|
-
],
|
|
349
|
-
initialValue: 'dev' as const,
|
|
350
|
-
})
|
|
351
|
-
if (p.isCancel(result)) {
|
|
352
|
-
p.cancel('Init cancelled.')
|
|
353
|
-
process.exit(0)
|
|
354
|
-
}
|
|
355
|
-
mode = result
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
let appDir: string
|
|
359
|
-
if (typeof flags['app-dir'] === 'string') {
|
|
360
|
-
appDir = flags['app-dir']
|
|
361
|
-
} else if (nonInteractive) {
|
|
362
|
-
appDir = 'app'
|
|
363
|
-
} else {
|
|
364
|
-
const result = await p.text({
|
|
365
|
-
message: 'App directory?',
|
|
366
|
-
placeholder: 'app',
|
|
367
|
-
defaultValue: 'app',
|
|
368
|
-
})
|
|
369
|
-
if (p.isCancel(result)) {
|
|
370
|
-
p.cancel('Init cancelled.')
|
|
371
|
-
process.exit(0)
|
|
372
|
-
}
|
|
373
|
-
appDir = result
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
let ai: boolean
|
|
377
|
-
if (flags['no-ai'] === true) {
|
|
378
|
-
ai = false
|
|
379
|
-
} else if (nonInteractive) {
|
|
380
|
-
ai = true
|
|
381
|
-
} else {
|
|
382
|
-
const result = await p.confirm({
|
|
383
|
-
message: 'Include AI content endpoint?',
|
|
384
|
-
initialValue: true,
|
|
385
|
-
})
|
|
386
|
-
if (p.isCancel(result)) {
|
|
387
|
-
p.cancel('Init cancelled.')
|
|
388
|
-
process.exit(0)
|
|
389
|
-
}
|
|
390
|
-
ai = result
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
await init({
|
|
394
|
-
mode,
|
|
395
|
-
appDir,
|
|
396
|
-
ai,
|
|
397
|
-
projectDir: process.cwd(),
|
|
398
|
-
force,
|
|
399
|
-
nonInteractive,
|
|
400
|
-
})
|
|
401
|
-
} else if (command === 'init-deploy') {
|
|
402
|
-
const cloud = positional[1]
|
|
403
|
-
if (cloud !== 'aws') {
|
|
404
|
-
console.error('Usage: canopycms init-deploy aws')
|
|
405
|
-
console.error('Only "aws" is currently supported.')
|
|
406
|
-
process.exit(1)
|
|
407
|
-
}
|
|
408
|
-
await initDeployAws({
|
|
409
|
-
cloud: 'aws',
|
|
410
|
-
projectDir: process.cwd(),
|
|
411
|
-
force: flags['force'] === true,
|
|
412
|
-
nonInteractive: flags['non-interactive'] === true,
|
|
413
|
-
})
|
|
414
|
-
} else if (command === 'worker') {
|
|
415
|
-
const subcommand = positional[1]
|
|
416
|
-
if (subcommand !== 'run-once') {
|
|
417
|
-
console.error('Usage: canopycms worker run-once')
|
|
418
|
-
process.exit(1)
|
|
419
|
-
}
|
|
420
|
-
await workerRunOnce({ projectDir: process.cwd() })
|
|
421
|
-
} else if (command === 'generate-ai-content') {
|
|
422
|
-
const { generateAIContentCLI } = await import('./generate-ai-content')
|
|
423
|
-
await generateAIContentCLI({
|
|
424
|
-
projectDir: process.cwd(),
|
|
425
|
-
outputDir: typeof flags['output'] === 'string' ? flags['output'] : undefined,
|
|
426
|
-
configPath: typeof flags['config'] === 'string' ? flags['config'] : undefined,
|
|
427
|
-
})
|
|
428
|
-
} else {
|
|
429
|
-
console.log('CanopyCMS CLI')
|
|
430
|
-
console.log('')
|
|
431
|
-
console.log('Commands:')
|
|
432
|
-
console.log(' init Add CanopyCMS to a Next.js app')
|
|
433
|
-
console.log(' --mode <dev|prod-sim> Operating mode (default: dev)')
|
|
434
|
-
console.log(' --app-dir <path> App directory (default: app)')
|
|
435
|
-
console.log(' --no-ai Skip AI content endpoint generation')
|
|
436
|
-
console.log(' --force Overwrite existing files without asking')
|
|
437
|
-
console.log(' --non-interactive Use defaults, no prompts')
|
|
438
|
-
console.log('')
|
|
439
|
-
console.log(' init-deploy aws Generate AWS deployment artifacts')
|
|
440
|
-
console.log(' --force Overwrite existing files without asking')
|
|
441
|
-
console.log(' --non-interactive Use defaults, no prompts')
|
|
442
|
-
console.log('')
|
|
443
|
-
console.log(' worker run-once Process tasks, sync git, refresh auth cache')
|
|
444
|
-
console.log(' generate-ai-content Generate static AI-ready content files')
|
|
445
|
-
console.log(' --output <dir> Output directory (default: public/ai)')
|
|
446
|
-
console.log(' --config <path> Path to AI content config file')
|
|
447
|
-
process.exit(0)
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
// Only run when executed directly as a CLI, not when imported in tests.
|
|
452
|
-
// Use realpathSync to resolve symlinks — npx creates a symlink in node_modules/.bin/
|
|
453
|
-
// that won't match import.meta.url's resolved real path.
|
|
454
|
-
const __filename = fileURLToPath(import.meta.url)
|
|
455
|
-
const isDirectRun = realpathSync(process.argv[1]) === realpathSync(__filename)
|
|
456
|
-
|
|
457
|
-
if (isDirectRun) {
|
|
458
|
-
main().catch((err) => {
|
|
459
|
-
console.error('Error:', err instanceof Error ? err.message : String(err))
|
|
460
|
-
process.exit(1)
|
|
461
|
-
})
|
|
462
|
-
}
|