@cmssy/cli 0.22.3 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -650
- package/dist/cli.js +706 -328
- package/package.json +26 -73
- package/templates/block/Component.module.css.tpl +12 -0
- package/templates/block/Component.tsx.tpl +15 -0
- package/templates/block/block.ts.tpl +11 -0
- package/templates/init/app/[[...path]]/page.tsx +19 -0
- package/templates/init/app/api/draft/route.ts +5 -0
- package/templates/init/blocks/hero/Hero.module.css +131 -0
- package/templates/init/blocks/hero/Hero.tsx +100 -0
- package/templates/init/blocks/hero/block.ts +21 -0
- package/templates/init/cmssy/blocks.ts +5 -0
- package/templates/init/cmssy/editor.tsx +10 -0
- package/templates/init/cmssy.config.ts +8 -0
- package/templates/init/env.example +4 -0
- package/templates/init/next.config.mjs +8 -0
- package/templates/init/proxy.ts +32 -0
- package/config.d.ts +0 -3
- package/config.js +0 -4
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/commands/add-source.d.ts +0 -13
- package/dist/commands/add-source.d.ts.map +0 -1
- package/dist/commands/add-source.js +0 -273
- package/dist/commands/add-source.js.map +0 -1
- package/dist/commands/build.d.ts +0 -7
- package/dist/commands/build.d.ts.map +0 -1
- package/dist/commands/build.js +0 -127
- package/dist/commands/build.js.map +0 -1
- package/dist/commands/codegen.d.ts +0 -7
- package/dist/commands/codegen.d.ts.map +0 -1
- package/dist/commands/codegen.js +0 -150
- package/dist/commands/codegen.js.map +0 -1
- package/dist/commands/configure.d.ts +0 -6
- package/dist/commands/configure.d.ts.map +0 -1
- package/dist/commands/configure.js +0 -39
- package/dist/commands/configure.js.map +0 -1
- package/dist/commands/create.d.ts +0 -18
- package/dist/commands/create.d.ts.map +0 -1
- package/dist/commands/create.js +0 -403
- package/dist/commands/create.js.map +0 -1
- package/dist/commands/dev.d.ts +0 -6
- package/dist/commands/dev.d.ts.map +0 -1
- package/dist/commands/dev.js +0 -144
- package/dist/commands/dev.js.map +0 -1
- package/dist/commands/doctor.d.ts +0 -2
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js +0 -230
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/init.d.ts +0 -6
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -414
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/lib.d.ts +0 -17
- package/dist/commands/lib.d.ts.map +0 -1
- package/dist/commands/lib.js +0 -132
- package/dist/commands/lib.js.map +0 -1
- package/dist/commands/link.d.ts +0 -8
- package/dist/commands/link.d.ts.map +0 -1
- package/dist/commands/link.js +0 -116
- package/dist/commands/link.js.map +0 -1
- package/dist/commands/migrate.d.ts +0 -2
- package/dist/commands/migrate.d.ts.map +0 -1
- package/dist/commands/migrate.js +0 -231
- package/dist/commands/migrate.js.map +0 -1
- package/dist/commands/package.d.ts +0 -14
- package/dist/commands/package.d.ts.map +0 -1
- package/dist/commands/package.js +0 -137
- package/dist/commands/package.js.map +0 -1
- package/dist/commands/publish-block-buildtime.d.ts +0 -8
- package/dist/commands/publish-block-buildtime.d.ts.map +0 -1
- package/dist/commands/publish-block-buildtime.js +0 -290
- package/dist/commands/publish-block-buildtime.js.map +0 -1
- package/dist/commands/publish-template.d.ts +0 -22
- package/dist/commands/publish-template.d.ts.map +0 -1
- package/dist/commands/publish-template.js +0 -345
- package/dist/commands/publish-template.js.map +0 -1
- package/dist/commands/publish.d.ts +0 -15
- package/dist/commands/publish.d.ts.map +0 -1
- package/dist/commands/publish.js +0 -1003
- package/dist/commands/publish.js.map +0 -1
- package/dist/commands/skills.d.ts +0 -11
- package/dist/commands/skills.d.ts.map +0 -1
- package/dist/commands/skills.js +0 -178
- package/dist/commands/skills.js.map +0 -1
- package/dist/commands/sync.d.ts +0 -6
- package/dist/commands/sync.d.ts.map +0 -1
- package/dist/commands/sync.js +0 -208
- package/dist/commands/sync.js.map +0 -1
- package/dist/commands/test.d.ts +0 -8
- package/dist/commands/test.d.ts.map +0 -1
- package/dist/commands/test.js +0 -60
- package/dist/commands/test.js.map +0 -1
- package/dist/commands/upload.d.ts +0 -11
- package/dist/commands/upload.d.ts.map +0 -1
- package/dist/commands/upload.js +0 -128
- package/dist/commands/upload.js.map +0 -1
- package/dist/commands/workspaces.d.ts +0 -2
- package/dist/commands/workspaces.d.ts.map +0 -1
- package/dist/commands/workspaces.js +0 -62
- package/dist/commands/workspaces.js.map +0 -1
- package/dist/dev-ui/app.js +0 -1284
- package/dist/dev-ui/index.html +0 -1511
- package/dist/dev-ui-react/App.tsx +0 -164
- package/dist/dev-ui-react/__tests__/previewData.test.ts +0 -193
- package/dist/dev-ui-react/components/BlocksList.tsx +0 -232
- package/dist/dev-ui-react/components/Editor.tsx +0 -469
- package/dist/dev-ui-react/components/Preview.tsx +0 -146
- package/dist/dev-ui-react/hooks/useBlocks.ts +0 -80
- package/dist/dev-ui-react/index.html +0 -13
- package/dist/dev-ui-react/main.tsx +0 -8
- package/dist/dev-ui-react/styles.css +0 -856
- package/dist/dev-ui-react/types.ts +0 -45
- package/dist/skills/claude/cmssy-block.md +0 -454
- package/dist/skills/claude/cmssy-mcp-content.md +0 -231
- package/dist/test-helpers/index.d.ts +0 -23
- package/dist/test-helpers/index.d.ts.map +0 -1
- package/dist/test-helpers/index.js +0 -50
- package/dist/test-helpers/index.js.map +0 -1
- package/dist/types/block-config.d.ts +0 -6
- package/dist/types/block-config.d.ts.map +0 -1
- package/dist/types/block-config.js +0 -12
- package/dist/types/block-config.js.map +0 -1
- package/dist/types/publish-job.d.ts +0 -61
- package/dist/types/publish-job.d.ts.map +0 -1
- package/dist/types/publish-job.js +0 -13
- package/dist/types/publish-job.js.map +0 -1
- package/dist/utils/api-error.d.ts +0 -10
- package/dist/utils/api-error.d.ts.map +0 -1
- package/dist/utils/api-error.js +0 -55
- package/dist/utils/api-error.js.map +0 -1
- package/dist/utils/block-config.d.ts +0 -87
- package/dist/utils/block-config.d.ts.map +0 -1
- package/dist/utils/block-config.js +0 -214
- package/dist/utils/block-config.js.map +0 -1
- package/dist/utils/blocks-meta-cache.d.ts +0 -28
- package/dist/utils/blocks-meta-cache.d.ts.map +0 -1
- package/dist/utils/blocks-meta-cache.js +0 -72
- package/dist/utils/blocks-meta-cache.js.map +0 -1
- package/dist/utils/builder.d.ts +0 -34
- package/dist/utils/builder.d.ts.map +0 -1
- package/dist/utils/builder.js +0 -140
- package/dist/utils/builder.js.map +0 -1
- package/dist/utils/cmssy-config.d.ts +0 -16
- package/dist/utils/cmssy-config.d.ts.map +0 -1
- package/dist/utils/cmssy-config.js +0 -19
- package/dist/utils/cmssy-config.js.map +0 -1
- package/dist/utils/config.d.ts +0 -9
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js +0 -51
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/dependency-check.d.ts +0 -21
- package/dist/utils/dependency-check.d.ts.map +0 -1
- package/dist/utils/dependency-check.js +0 -56
- package/dist/utils/dependency-check.js.map +0 -1
- package/dist/utils/dev-generator/api-routes/blocks.d.ts +0 -3
- package/dist/utils/dev-generator/api-routes/blocks.d.ts.map +0 -1
- package/dist/utils/dev-generator/api-routes/blocks.js +0 -194
- package/dist/utils/dev-generator/api-routes/blocks.js.map +0 -1
- package/dist/utils/dev-generator/api-routes/config.d.ts +0 -2
- package/dist/utils/dev-generator/api-routes/config.d.ts.map +0 -1
- package/dist/utils/dev-generator/api-routes/config.js +0 -107
- package/dist/utils/dev-generator/api-routes/config.js.map +0 -1
- package/dist/utils/dev-generator/api-routes/preview.d.ts +0 -2
- package/dist/utils/dev-generator/api-routes/preview.d.ts.map +0 -1
- package/dist/utils/dev-generator/api-routes/preview.js +0 -50
- package/dist/utils/dev-generator/api-routes/preview.js.map +0 -1
- package/dist/utils/dev-generator/api-routes/workspaces.d.ts +0 -2
- package/dist/utils/dev-generator/api-routes/workspaces.d.ts.map +0 -1
- package/dist/utils/dev-generator/api-routes/workspaces.js +0 -128
- package/dist/utils/dev-generator/api-routes/workspaces.js.map +0 -1
- package/dist/utils/dev-generator/helpers.d.ts +0 -23
- package/dist/utils/dev-generator/helpers.d.ts.map +0 -1
- package/dist/utils/dev-generator/helpers.js +0 -128
- package/dist/utils/dev-generator/helpers.js.map +0 -1
- package/dist/utils/dev-generator/home-page.d.ts +0 -2
- package/dist/utils/dev-generator/home-page.d.ts.map +0 -1
- package/dist/utils/dev-generator/home-page.js +0 -643
- package/dist/utils/dev-generator/home-page.js.map +0 -1
- package/dist/utils/dev-generator/index.d.ts +0 -11
- package/dist/utils/dev-generator/index.d.ts.map +0 -1
- package/dist/utils/dev-generator/index.js +0 -85
- package/dist/utils/dev-generator/index.js.map +0 -1
- package/dist/utils/dev-generator/layout.d.ts +0 -3
- package/dist/utils/dev-generator/layout.d.ts.map +0 -1
- package/dist/utils/dev-generator/layout.js +0 -63
- package/dist/utils/dev-generator/layout.js.map +0 -1
- package/dist/utils/dev-generator/next-config.d.ts +0 -3
- package/dist/utils/dev-generator/next-config.d.ts.map +0 -1
- package/dist/utils/dev-generator/next-config.js +0 -111
- package/dist/utils/dev-generator/next-config.js.map +0 -1
- package/dist/utils/dev-generator/preview-pages.d.ts +0 -3
- package/dist/utils/dev-generator/preview-pages.d.ts.map +0 -1
- package/dist/utils/dev-generator/preview-pages.js +0 -833
- package/dist/utils/dev-generator/preview-pages.js.map +0 -1
- package/dist/utils/dev-generator.d.ts +0 -12
- package/dist/utils/dev-generator.d.ts.map +0 -1
- package/dist/utils/dev-generator.js +0 -1752
- package/dist/utils/dev-generator.js.map +0 -1
- package/dist/utils/field-schema.d.ts +0 -13
- package/dist/utils/field-schema.d.ts.map +0 -1
- package/dist/utils/field-schema.js +0 -182
- package/dist/utils/field-schema.js.map +0 -1
- package/dist/utils/graphql.d.ts +0 -39
- package/dist/utils/graphql.d.ts.map +0 -1
- package/dist/utils/graphql.js +0 -138
- package/dist/utils/graphql.js.map +0 -1
- package/dist/utils/lib-manifest.d.ts +0 -7
- package/dist/utils/lib-manifest.d.ts.map +0 -1
- package/dist/utils/lib-manifest.js +0 -59
- package/dist/utils/lib-manifest.js.map +0 -1
- package/dist/utils/publish-helpers.d.ts +0 -43
- package/dist/utils/publish-helpers.d.ts.map +0 -1
- package/dist/utils/publish-helpers.js +0 -215
- package/dist/utils/publish-helpers.js.map +0 -1
- package/dist/utils/publish-helpers.test.d.ts +0 -2
- package/dist/utils/publish-helpers.test.d.ts.map +0 -1
- package/dist/utils/publish-helpers.test.js +0 -24
- package/dist/utils/publish-helpers.test.js.map +0 -1
- package/dist/utils/resolve-workspace.d.ts +0 -6
- package/dist/utils/resolve-workspace.d.ts.map +0 -1
- package/dist/utils/resolve-workspace.js +0 -32
- package/dist/utils/resolve-workspace.js.map +0 -1
- package/dist/utils/scanner.d.ts +0 -42
- package/dist/utils/scanner.d.ts.map +0 -1
- package/dist/utils/scanner.js +0 -156
- package/dist/utils/scanner.js.map +0 -1
- package/dist/utils/schema-diff.d.ts +0 -22
- package/dist/utils/schema-diff.d.ts.map +0 -1
- package/dist/utils/schema-diff.js +0 -107
- package/dist/utils/schema-diff.js.map +0 -1
- package/dist/utils/source-collector.d.ts +0 -19
- package/dist/utils/source-collector.d.ts.map +0 -1
- package/dist/utils/source-collector.js +0 -565
- package/dist/utils/source-collector.js.map +0 -1
- package/dist/utils/theme-builder.d.ts +0 -12
- package/dist/utils/theme-builder.d.ts.map +0 -1
- package/dist/utils/theme-builder.js +0 -117
- package/dist/utils/theme-builder.js.map +0 -1
- package/dist/utils/type-generator.d.ts +0 -9
- package/dist/utils/type-generator.d.ts.map +0 -1
- package/dist/utils/type-generator.js +0 -86
- package/dist/utils/type-generator.js.map +0 -1
- package/dist/utils/version.d.ts +0 -10
- package/dist/utils/version.d.ts.map +0 -1
- package/dist/utils/version.js +0 -30
- package/dist/utils/version.js.map +0 -1
- package/dist/utils/versions.d.ts.map +0 -1
- package/dist/utils/versions.js.map +0 -1
- package/src/dev-app/app/api/blocks/[name]/config/route.ts +0 -140
- package/src/dev-app/app/api/blocks/route.ts +0 -61
- package/src/dev-app/app/api/config/route.ts +0 -98
- package/src/dev-app/app/api/context/route.ts +0 -126
- package/src/dev-app/app/api/preview/[name]/route.ts +0 -137
- package/src/dev-app/app/api/workspaces/route.ts +0 -124
- package/src/dev-app/app/layout.tsx +0 -18
- package/src/dev-app/app/page.tsx +0 -1785
- package/test.d.ts +0 -1
- package/test.js +0 -2
|
@@ -1,273 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import fs from "fs-extra";
|
|
3
|
-
import { GraphQLClient } from "graphql-request";
|
|
4
|
-
import inquirer from "inquirer";
|
|
5
|
-
import ora from "ora";
|
|
6
|
-
import path from "path";
|
|
7
|
-
import { hasConfig, loadConfig } from "../utils/config.js";
|
|
8
|
-
import { ADD_BLOCK_SOURCE_CODE_MUTATION, GET_WORKSPACE_BLOCKS_QUERY, } from "../utils/graphql.js";
|
|
9
|
-
/**
|
|
10
|
-
* Read original source code for AI Block Builder (editable in Sandpack).
|
|
11
|
-
* Combines the main component file with type definitions into a single file.
|
|
12
|
-
*/
|
|
13
|
-
async function readOriginalSourceCode(packagePath) {
|
|
14
|
-
const srcDir = path.join(packagePath, "src");
|
|
15
|
-
// Find main component file (not index.tsx, but the actual component)
|
|
16
|
-
const files = fs.readdirSync(srcDir);
|
|
17
|
-
let mainComponentFile;
|
|
18
|
-
let sourceCode;
|
|
19
|
-
// Look for component files (excluding index.tsx and .d.ts files)
|
|
20
|
-
for (const file of files) {
|
|
21
|
-
if ((file.endsWith(".tsx") || file.endsWith(".ts")) &&
|
|
22
|
-
!file.startsWith("index") &&
|
|
23
|
-
!file.endsWith(".d.ts")) {
|
|
24
|
-
mainComponentFile = path.join(srcDir, file);
|
|
25
|
-
break;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
// If no main component found, try index.tsx
|
|
29
|
-
if (!mainComponentFile) {
|
|
30
|
-
const indexPath = path.join(srcDir, "index.tsx");
|
|
31
|
-
if (fs.existsSync(indexPath)) {
|
|
32
|
-
mainComponentFile = indexPath;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
if (mainComponentFile && fs.existsSync(mainComponentFile)) {
|
|
36
|
-
// Read the main component
|
|
37
|
-
let content = fs.readFileSync(mainComponentFile, "utf-8");
|
|
38
|
-
// Read block.d.ts if exists and inline the types
|
|
39
|
-
const blockDtsPath = path.join(srcDir, "block.d.ts");
|
|
40
|
-
if (fs.existsSync(blockDtsPath)) {
|
|
41
|
-
const blockDts = fs.readFileSync(blockDtsPath, "utf-8");
|
|
42
|
-
// Extract interface/type definitions from block.d.ts
|
|
43
|
-
const typeMatch = blockDts.match(/(?:export\s+)?(?:interface|type)\s+BlockContent[\s\S]*?(?=(?:export\s+)?(?:interface|type)|$)/);
|
|
44
|
-
if (typeMatch) {
|
|
45
|
-
// Remove the import from block.d.ts and add inline type
|
|
46
|
-
content = content.replace(/import\s*{\s*BlockContent\s*}\s*from\s*["']\.\/block(?:\.d)?["'];?\n?/, "");
|
|
47
|
-
// Add inline interface at the top
|
|
48
|
-
const inlineInterface = `interface BlockContent {
|
|
49
|
-
[key: string]: any;
|
|
50
|
-
}\n\n`;
|
|
51
|
-
// Insert after imports
|
|
52
|
-
const lastImportMatch = content.match(/^(import[\s\S]*?from\s*['"][^'"]+['"];?\n)/m);
|
|
53
|
-
if (lastImportMatch) {
|
|
54
|
-
const insertPos = content.lastIndexOf(lastImportMatch[0]) + lastImportMatch[0].length;
|
|
55
|
-
content =
|
|
56
|
-
content.slice(0, insertPos) +
|
|
57
|
-
"\n" +
|
|
58
|
-
inlineInterface +
|
|
59
|
-
content.slice(insertPos);
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
content = inlineInterface + content;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
sourceCode = content;
|
|
67
|
-
}
|
|
68
|
-
// Read CSS
|
|
69
|
-
const cssPath = path.join(srcDir, "index.css");
|
|
70
|
-
const sourceCss = fs.existsSync(cssPath)
|
|
71
|
-
? fs.readFileSync(cssPath, "utf-8")
|
|
72
|
-
: undefined;
|
|
73
|
-
// Read dependencies from package.json
|
|
74
|
-
const pkgPath = path.join(packagePath, "package.json");
|
|
75
|
-
let dependencies;
|
|
76
|
-
if (fs.existsSync(pkgPath)) {
|
|
77
|
-
const pkg = fs.readJsonSync(pkgPath);
|
|
78
|
-
if (pkg.dependencies && Object.keys(pkg.dependencies).length > 0) {
|
|
79
|
-
dependencies = pkg.dependencies;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return { sourceCode, sourceCss, dependencies };
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Upload source code for a single block to workspace.
|
|
86
|
-
* Reusable from both `cmssy add-source` and `cmssy publish --with-source`.
|
|
87
|
-
*/
|
|
88
|
-
export async function uploadBlockSource(blockName, blockPath, blockId, client) {
|
|
89
|
-
let sourceCode;
|
|
90
|
-
let sourceCss;
|
|
91
|
-
let dependencies;
|
|
92
|
-
try {
|
|
93
|
-
const result = await readOriginalSourceCode(blockPath);
|
|
94
|
-
sourceCode = result.sourceCode;
|
|
95
|
-
sourceCss = result.sourceCss;
|
|
96
|
-
dependencies = result.dependencies;
|
|
97
|
-
}
|
|
98
|
-
catch (error) {
|
|
99
|
-
throw new Error(`Failed to read source for ${blockName}: ${error.message}`);
|
|
100
|
-
}
|
|
101
|
-
if (!sourceCode) {
|
|
102
|
-
return false;
|
|
103
|
-
}
|
|
104
|
-
const input = {
|
|
105
|
-
blockId,
|
|
106
|
-
sourceCode,
|
|
107
|
-
};
|
|
108
|
-
if (sourceCss) {
|
|
109
|
-
input.sourceCss = sourceCss;
|
|
110
|
-
}
|
|
111
|
-
if (dependencies) {
|
|
112
|
-
input.dependencies = dependencies;
|
|
113
|
-
}
|
|
114
|
-
await client.request(ADD_BLOCK_SOURCE_CODE_MUTATION, { input });
|
|
115
|
-
return true;
|
|
116
|
-
}
|
|
117
|
-
export async function addSourceCommand(blockNames = [], options) {
|
|
118
|
-
console.log(chalk.blue.bold("\n📦 Cmssy - Add Source Code\n"));
|
|
119
|
-
// Check configuration
|
|
120
|
-
if (!hasConfig()) {
|
|
121
|
-
console.error(chalk.red("✖ Not configured. Run: cmssy link\n"));
|
|
122
|
-
process.exit(1);
|
|
123
|
-
}
|
|
124
|
-
const config = loadConfig();
|
|
125
|
-
// Get workspace ID
|
|
126
|
-
let workspaceId = options.workspace;
|
|
127
|
-
if (!workspaceId) {
|
|
128
|
-
if (config.workspaceId) {
|
|
129
|
-
workspaceId = config.workspaceId;
|
|
130
|
-
console.log(chalk.gray(`Using workspace ID from .env: ${workspaceId}\n`));
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
const answer = await inquirer.prompt([
|
|
134
|
-
{
|
|
135
|
-
type: "input",
|
|
136
|
-
name: "workspaceId",
|
|
137
|
-
message: "Enter Workspace ID:",
|
|
138
|
-
validate: (input) => {
|
|
139
|
-
if (!input) {
|
|
140
|
-
return "Workspace ID is required (or set CMSSY_WORKSPACE_ID in .env)";
|
|
141
|
-
}
|
|
142
|
-
return true;
|
|
143
|
-
},
|
|
144
|
-
},
|
|
145
|
-
]);
|
|
146
|
-
workspaceId = answer.workspaceId;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
// Find cmssy.config.js
|
|
150
|
-
const configPath = path.join(process.cwd(), "cmssy.config.js");
|
|
151
|
-
if (!fs.existsSync(configPath)) {
|
|
152
|
-
console.error(chalk.red("✖ Not a cmssy project (missing cmssy.config.js)\n"));
|
|
153
|
-
process.exit(1);
|
|
154
|
-
}
|
|
155
|
-
// Create GraphQL client
|
|
156
|
-
const client = new GraphQLClient(config.apiUrl, {
|
|
157
|
-
headers: {
|
|
158
|
-
"Content-Type": "application/json",
|
|
159
|
-
Authorization: `Bearer ${config.apiToken}`,
|
|
160
|
-
"X-Workspace-ID": workspaceId,
|
|
161
|
-
},
|
|
162
|
-
});
|
|
163
|
-
// Fetch workspace blocks
|
|
164
|
-
const spinner = ora("Fetching workspace blocks...").start();
|
|
165
|
-
let workspaceBlocks;
|
|
166
|
-
try {
|
|
167
|
-
const result = await client.request(GET_WORKSPACE_BLOCKS_QUERY);
|
|
168
|
-
workspaceBlocks = result.workspaceBlocks;
|
|
169
|
-
spinner.succeed(`Found ${workspaceBlocks.length} blocks in workspace`);
|
|
170
|
-
}
|
|
171
|
-
catch (error) {
|
|
172
|
-
spinner.fail("Failed to fetch workspace blocks");
|
|
173
|
-
console.error(chalk.red(error.message));
|
|
174
|
-
process.exit(1);
|
|
175
|
-
}
|
|
176
|
-
// Find blocks directory
|
|
177
|
-
const blocksDir = path.join(process.cwd(), "blocks");
|
|
178
|
-
if (!fs.existsSync(blocksDir)) {
|
|
179
|
-
console.error(chalk.red("✖ No blocks directory found\n"));
|
|
180
|
-
process.exit(1);
|
|
181
|
-
}
|
|
182
|
-
// Get list of local blocks
|
|
183
|
-
const localBlocks = fs
|
|
184
|
-
.readdirSync(blocksDir, { withFileTypes: true })
|
|
185
|
-
.filter((d) => d.isDirectory())
|
|
186
|
-
.map((d) => d.name);
|
|
187
|
-
// Filter blocks to process
|
|
188
|
-
let blocksToProcess;
|
|
189
|
-
if (options.all) {
|
|
190
|
-
blocksToProcess = localBlocks;
|
|
191
|
-
}
|
|
192
|
-
else if (blockNames.length > 0) {
|
|
193
|
-
blocksToProcess = blockNames.filter((name) => localBlocks.includes(name));
|
|
194
|
-
const missing = blockNames.filter((name) => !localBlocks.includes(name));
|
|
195
|
-
if (missing.length > 0) {
|
|
196
|
-
console.warn(chalk.yellow(`Warning: Blocks not found locally: ${missing.join(", ")}`));
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
else {
|
|
200
|
-
// Interactive selection
|
|
201
|
-
const choices = localBlocks.map((name) => {
|
|
202
|
-
const wsBlock = workspaceBlocks.find((b) => b.blockType === name);
|
|
203
|
-
const hasSource = wsBlock?.sourceUrl
|
|
204
|
-
? chalk.green(" (has source)")
|
|
205
|
-
: chalk.gray(" (no source)");
|
|
206
|
-
return {
|
|
207
|
-
name: `${name}${hasSource}`,
|
|
208
|
-
value: name,
|
|
209
|
-
checked: !wsBlock?.sourceUrl,
|
|
210
|
-
};
|
|
211
|
-
});
|
|
212
|
-
const answer = await inquirer.prompt([
|
|
213
|
-
{
|
|
214
|
-
type: "checkbox",
|
|
215
|
-
name: "blocks",
|
|
216
|
-
message: "Select blocks to add source code:",
|
|
217
|
-
choices,
|
|
218
|
-
},
|
|
219
|
-
]);
|
|
220
|
-
blocksToProcess = answer.blocks;
|
|
221
|
-
}
|
|
222
|
-
if (blocksToProcess.length === 0) {
|
|
223
|
-
console.log(chalk.yellow("\n⚠ No blocks selected\n"));
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
console.log(chalk.cyan(`\nAdding source to ${blocksToProcess.length} block(s):\n`));
|
|
227
|
-
let successCount = 0;
|
|
228
|
-
let errorCount = 0;
|
|
229
|
-
for (const blockName of blocksToProcess) {
|
|
230
|
-
const blockPath = path.join(blocksDir, blockName);
|
|
231
|
-
const wsBlock = workspaceBlocks.find((b) => b.blockType === blockName);
|
|
232
|
-
if (!wsBlock) {
|
|
233
|
-
console.log(chalk.yellow(` ⚠ ${blockName}: Not found in workspace (publish it first)`));
|
|
234
|
-
continue;
|
|
235
|
-
}
|
|
236
|
-
const blockSpinner = ora(`Adding source to ${blockName}...`).start();
|
|
237
|
-
try {
|
|
238
|
-
// Read source code
|
|
239
|
-
const { sourceCode, sourceCss, dependencies } = await readOriginalSourceCode(blockPath);
|
|
240
|
-
if (!sourceCode) {
|
|
241
|
-
blockSpinner.warn(`${blockName}: No source code found`);
|
|
242
|
-
continue;
|
|
243
|
-
}
|
|
244
|
-
// Upload via mutation
|
|
245
|
-
const input = {
|
|
246
|
-
blockId: wsBlock.id,
|
|
247
|
-
sourceCode,
|
|
248
|
-
};
|
|
249
|
-
if (sourceCss) {
|
|
250
|
-
input.sourceCss = sourceCss;
|
|
251
|
-
}
|
|
252
|
-
if (dependencies) {
|
|
253
|
-
input.dependencies = dependencies;
|
|
254
|
-
}
|
|
255
|
-
await client.request(ADD_BLOCK_SOURCE_CODE_MUTATION, { input });
|
|
256
|
-
blockSpinner.succeed(chalk.green(`${blockName}: Source added`));
|
|
257
|
-
successCount++;
|
|
258
|
-
}
|
|
259
|
-
catch (error) {
|
|
260
|
-
blockSpinner.fail(chalk.red(`${blockName}: Failed`));
|
|
261
|
-
console.error(chalk.red(` Error: ${error.message}`));
|
|
262
|
-
errorCount++;
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
console.log("");
|
|
266
|
-
if (errorCount === 0) {
|
|
267
|
-
console.log(chalk.green.bold(`✓ ${successCount} block(s) updated successfully\n`));
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
console.log(chalk.yellow(`⚠ ${successCount} succeeded, ${errorCount} failed\n`));
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
//# sourceMappingURL=add-source.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add-source.js","sourceRoot":"","sources":["../../src/commands/add-source.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/build.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAeA,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,iBA8IvD"}
|
package/dist/commands/build.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import fs from "fs-extra";
|
|
3
|
-
import ora from "ora";
|
|
4
|
-
import path from "path";
|
|
5
|
-
import { loadConfig } from "../utils/cmssy-config.js";
|
|
6
|
-
import { scanResources, scanTheme } from "../utils/scanner.js";
|
|
7
|
-
import { buildResource } from "../utils/builder.js";
|
|
8
|
-
import { updateBlockInCache } from "../utils/blocks-meta-cache.js";
|
|
9
|
-
import { getFieldTypes } from "../utils/field-schema.js";
|
|
10
|
-
import { checkBlockDependencies, printMissingDeps, } from "../utils/dependency-check.js";
|
|
11
|
-
import { buildThemeCSS } from "../utils/theme-builder.js";
|
|
12
|
-
export async function buildCommand(options) {
|
|
13
|
-
const spinner = ora("Starting build...").start();
|
|
14
|
-
try {
|
|
15
|
-
const config = await loadConfig();
|
|
16
|
-
const framework = options.framework || config.framework;
|
|
17
|
-
// Scan for blocks and templates (strict mode - throw errors)
|
|
18
|
-
// If --block is provided, only scan those specific blocks
|
|
19
|
-
const resources = await scanResources({
|
|
20
|
-
strict: true,
|
|
21
|
-
loadConfig: true,
|
|
22
|
-
validateSchema: true,
|
|
23
|
-
loadPreview: false,
|
|
24
|
-
requirePackageJson: true,
|
|
25
|
-
names: options.block,
|
|
26
|
-
});
|
|
27
|
-
// If --block was provided but no matches found, show available blocks
|
|
28
|
-
if (options.block && options.block.length > 0 && resources.length === 0) {
|
|
29
|
-
spinner.fail(`No matching blocks found: ${options.block.join(", ")}`);
|
|
30
|
-
// Quick scan to list available blocks (minimal, no validation)
|
|
31
|
-
const allResources = await scanResources({
|
|
32
|
-
strict: false,
|
|
33
|
-
loadConfig: false,
|
|
34
|
-
validateSchema: false,
|
|
35
|
-
loadPreview: false,
|
|
36
|
-
requirePackageJson: false,
|
|
37
|
-
});
|
|
38
|
-
console.log(chalk.yellow("\nAvailable blocks/templates:"));
|
|
39
|
-
allResources.forEach((r) => console.log(` - ${r.name}`));
|
|
40
|
-
process.exit(1);
|
|
41
|
-
}
|
|
42
|
-
if (resources.length === 0) {
|
|
43
|
-
spinner.warn("No blocks or templates found");
|
|
44
|
-
process.exit(0);
|
|
45
|
-
}
|
|
46
|
-
// Check block dependencies
|
|
47
|
-
const blocksWithDeps = resources
|
|
48
|
-
.filter((r) => r.type === "block" && r.blockConfig?.dependencies)
|
|
49
|
-
.map((r) => ({ name: r.name, config: r.blockConfig }));
|
|
50
|
-
const missingDeps = checkBlockDependencies(blocksWithDeps, process.cwd());
|
|
51
|
-
if (missingDeps.length > 0) {
|
|
52
|
-
spinner.warn("Missing block dependencies");
|
|
53
|
-
printMissingDeps(missingDeps);
|
|
54
|
-
spinner.start();
|
|
55
|
-
}
|
|
56
|
-
spinner.text = `Building ${resources.length} resources...`;
|
|
57
|
-
const outDir = path.join(process.cwd(), config.build?.outDir || "public");
|
|
58
|
-
// Fetch field types from backend (used for type generation)
|
|
59
|
-
const fieldTypes = await getFieldTypes();
|
|
60
|
-
// Build in parallel with concurrency limit
|
|
61
|
-
const CONCURRENCY = 8;
|
|
62
|
-
const buildOptions = {
|
|
63
|
-
framework,
|
|
64
|
-
minify: config.build?.minify ?? true,
|
|
65
|
-
sourcemap: config.build?.sourcemap ?? true,
|
|
66
|
-
outputMode: "versioned",
|
|
67
|
-
generatePackageJson: true,
|
|
68
|
-
generateTypes: true,
|
|
69
|
-
strict: true,
|
|
70
|
-
fieldTypes,
|
|
71
|
-
};
|
|
72
|
-
const results = [];
|
|
73
|
-
// Process in batches for controlled parallelism
|
|
74
|
-
for (let i = 0; i < resources.length; i += CONCURRENCY) {
|
|
75
|
-
const batch = resources.slice(i, i + CONCURRENCY);
|
|
76
|
-
const batchResults = await Promise.all(batch.map(async (resource) => {
|
|
77
|
-
try {
|
|
78
|
-
await buildResource(resource, outDir, buildOptions);
|
|
79
|
-
return { resource, success: true };
|
|
80
|
-
}
|
|
81
|
-
catch (error) {
|
|
82
|
-
return { resource, success: false, error };
|
|
83
|
-
}
|
|
84
|
-
}));
|
|
85
|
-
results.push(...batchResults);
|
|
86
|
-
}
|
|
87
|
-
// Log results and update cache
|
|
88
|
-
let successCount = 0;
|
|
89
|
-
let errorCount = 0;
|
|
90
|
-
for (const { resource, success, error } of results) {
|
|
91
|
-
if (success) {
|
|
92
|
-
successCount++;
|
|
93
|
-
console.log(chalk.green(` ✓ ${resource.packageJson.name}@${resource.packageJson.version}`));
|
|
94
|
-
// Update metadata cache with fresh data
|
|
95
|
-
if (resource.blockConfig) {
|
|
96
|
-
updateBlockInCache(resource.name, resource.type, resource.blockConfig, resource.packageJson?.version);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
errorCount++;
|
|
101
|
-
console.error(chalk.red(` ✖ ${resource.name}:`), error);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
// Build theme CSS if theme/config.ts exists
|
|
105
|
-
const themeConfig = await scanTheme();
|
|
106
|
-
if (themeConfig) {
|
|
107
|
-
const css = buildThemeCSS(themeConfig);
|
|
108
|
-
const themeCssPath = path.join(outDir, "theme.css");
|
|
109
|
-
fs.ensureDirSync(path.dirname(themeCssPath));
|
|
110
|
-
fs.writeFileSync(themeCssPath, css);
|
|
111
|
-
console.log(chalk.green(` ✓ theme.css (${themeConfig.name})`));
|
|
112
|
-
}
|
|
113
|
-
if (errorCount === 0) {
|
|
114
|
-
spinner.succeed(`Build complete! ${successCount} resources built`);
|
|
115
|
-
console.log(chalk.cyan(`\nOutput directory: ${outDir}\n`));
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
spinner.warn(`Build completed with errors: ${successCount} succeeded, ${errorCount} failed`);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
catch (error) {
|
|
122
|
-
spinner.fail("Build failed");
|
|
123
|
-
console.error(chalk.red("Error:"), error);
|
|
124
|
-
process.exit(1);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
//# sourceMappingURL=build.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/commands/codegen.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAgCD,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,iBAiJ3D"}
|
package/dist/commands/codegen.js
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* cmssy codegen - Generate TypeScript types from workspace public GraphQL schema.
|
|
3
|
-
*
|
|
4
|
-
* Thin wrapper over @graphql-codegen/cli. Generates codegen config pointing
|
|
5
|
-
* to the workspace's public API, then runs codegen.
|
|
6
|
-
*/
|
|
7
|
-
import chalk from "chalk";
|
|
8
|
-
import ora from "ora";
|
|
9
|
-
import fs from "fs-extra";
|
|
10
|
-
import path from "path";
|
|
11
|
-
import { loadConfig } from "../utils/config.js";
|
|
12
|
-
const DEFAULT_OUTPUT = "src/graphql/types.ts";
|
|
13
|
-
const CODEGEN_CONFIG_FILE = "codegen.ts";
|
|
14
|
-
function getWorkspaceApiUrl(apiUrl, workspaceSlug) {
|
|
15
|
-
// apiUrl = "https://api.cmssy.io/graphql" → base = "https://api.cmssy.io"
|
|
16
|
-
const base = apiUrl.replace(/\/graphql$/, "");
|
|
17
|
-
return `${base}/public/${workspaceSlug}/graphql`;
|
|
18
|
-
}
|
|
19
|
-
function generateCodegenConfig(schemaUrl, output) {
|
|
20
|
-
return `import type { CodegenConfig } from "@graphql-codegen/cli";
|
|
21
|
-
|
|
22
|
-
const config: CodegenConfig = {
|
|
23
|
-
schema: ${JSON.stringify(schemaUrl)},
|
|
24
|
-
generates: {
|
|
25
|
-
${JSON.stringify(output)}: {
|
|
26
|
-
plugins: ["typescript", "typescript-operations"],
|
|
27
|
-
config: {
|
|
28
|
-
avoidOptionals: true,
|
|
29
|
-
enumsAsTypes: true,
|
|
30
|
-
immutableTypes: true,
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
export default config;
|
|
37
|
-
`;
|
|
38
|
-
}
|
|
39
|
-
export async function codegenCommand(options) {
|
|
40
|
-
const config = loadConfig();
|
|
41
|
-
const output = options.output || DEFAULT_OUTPUT;
|
|
42
|
-
// --init: generate a codegen.ts with a placeholder schema URL.
|
|
43
|
-
// No --workspace required - the user can fill in the slug themselves
|
|
44
|
-
// before running `cmssy codegen`. Keeps `cmssy codegen --init` working
|
|
45
|
-
// on a fresh project before the user has run `cmssy link`.
|
|
46
|
-
if (options.init) {
|
|
47
|
-
const configPath = path.join(process.cwd(), CODEGEN_CONFIG_FILE);
|
|
48
|
-
if (fs.existsSync(configPath)) {
|
|
49
|
-
// The only warning path - skipping an existing config - goes to stderr.
|
|
50
|
-
console.warn(chalk.yellow(`⚠ ${CODEGEN_CONFIG_FILE} already exists. Skipping.`));
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
const placeholderUrl = options.workspace
|
|
54
|
-
? getWorkspaceApiUrl(config.apiUrl, options.workspace)
|
|
55
|
-
: getWorkspaceApiUrl(config.apiUrl, "<your-workspace-slug>");
|
|
56
|
-
const configContent = generateCodegenConfig(placeholderUrl, output);
|
|
57
|
-
fs.writeFileSync(configPath, configContent);
|
|
58
|
-
// Success + guidance go to stdout so pipes and scripts work.
|
|
59
|
-
console.log(chalk.green(`✔ Created ${CODEGEN_CONFIG_FILE}`));
|
|
60
|
-
if (!options.workspace) {
|
|
61
|
-
console.log(chalk.dim(` Replace <your-workspace-slug> in ${CODEGEN_CONFIG_FILE} with your slug (see \`cmssy workspaces\`).`));
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
console.log(chalk.dim(`\nInstall codegen dependencies:\n npm install -D @graphql-codegen/cli @graphql-codegen/typescript @graphql-codegen/typescript-operations\n\nThen run:\n cmssy codegen --workspace <slug>`));
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
// The public schema URL is keyed by workspace *slug*, not ID. `cmssy link`
|
|
68
|
-
// stores the workspace ObjectId in CMSSY_WORKSPACE_ID, so we can't use it
|
|
69
|
-
// here without an extra API round-trip. Require --workspace explicitly
|
|
70
|
-
// and tell the user exactly what's needed.
|
|
71
|
-
const workspaceSlug = options.workspace;
|
|
72
|
-
if (!workspaceSlug) {
|
|
73
|
-
const hint = config.workspaceId
|
|
74
|
-
? chalk.gray("\n Tip: CMSSY_WORKSPACE_ID is set (an ID, not a slug). Pass the slug from `cmssy workspaces` via --workspace.")
|
|
75
|
-
: "";
|
|
76
|
-
console.error(chalk.red("✖ Missing workspace slug. Use: cmssy codegen --workspace <slug>") + hint);
|
|
77
|
-
process.exit(1);
|
|
78
|
-
}
|
|
79
|
-
const schemaUrl = getWorkspaceApiUrl(config.apiUrl, workspaceSlug);
|
|
80
|
-
// Check if codegen.ts exists
|
|
81
|
-
const configPath = path.join(process.cwd(), CODEGEN_CONFIG_FILE);
|
|
82
|
-
const hasConfig = fs.existsSync(configPath);
|
|
83
|
-
const spinner = ora("Generating TypeScript types from workspace schema...").start();
|
|
84
|
-
try {
|
|
85
|
-
if (hasConfig) {
|
|
86
|
-
// Use existing codegen.ts config
|
|
87
|
-
const { execSync } = await import("child_process");
|
|
88
|
-
execSync("npx graphql-codegen --config codegen.ts", {
|
|
89
|
-
cwd: process.cwd(),
|
|
90
|
-
stdio: "inherit",
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
// Run codegen inline without config file
|
|
95
|
-
const { execSync } = await import("child_process");
|
|
96
|
-
// Write a temporary codegen config, run, then delete
|
|
97
|
-
const tempConfig = generateCodegenConfig(schemaUrl, output);
|
|
98
|
-
const tempDir = fs.mkdtempSync(path.join(process.cwd(), ".codegen-"));
|
|
99
|
-
const tempPath = path.join(tempDir, "codegen.ts");
|
|
100
|
-
fs.writeFileSync(tempPath, tempConfig);
|
|
101
|
-
try {
|
|
102
|
-
execSync(`npx graphql-codegen --config "${tempPath}"`, {
|
|
103
|
-
cwd: process.cwd(),
|
|
104
|
-
stdio: "inherit",
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
finally {
|
|
108
|
-
fs.removeSync(tempDir);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
// Also download schema.graphql for reference
|
|
112
|
-
const schemaDir = hasConfig
|
|
113
|
-
? path.dirname(path.join(process.cwd(), CODEGEN_CONFIG_FILE))
|
|
114
|
-
: path.dirname(output);
|
|
115
|
-
const schemaPath = path.join(schemaDir, "schema.graphql");
|
|
116
|
-
fs.ensureDirSync(schemaDir);
|
|
117
|
-
try {
|
|
118
|
-
const { getIntrospectionQuery, buildClientSchema, printSchema } = await import("graphql");
|
|
119
|
-
const response = await fetch(schemaUrl, {
|
|
120
|
-
method: "POST",
|
|
121
|
-
headers: { "Content-Type": "application/json" },
|
|
122
|
-
body: JSON.stringify({ query: getIntrospectionQuery() }),
|
|
123
|
-
});
|
|
124
|
-
if (response.ok) {
|
|
125
|
-
const json = (await response.json());
|
|
126
|
-
const schema = buildClientSchema(json.data);
|
|
127
|
-
fs.writeFileSync(schemaPath, printSchema(schema));
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
catch {
|
|
131
|
-
// Schema download is best-effort
|
|
132
|
-
}
|
|
133
|
-
spinner.succeed(chalk.green(`Types generated at ${chalk.bold(output)}`));
|
|
134
|
-
if (fs.existsSync(schemaPath)) {
|
|
135
|
-
console.warn(chalk.dim(` Schema saved to ${schemaPath}`));
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
catch (error) {
|
|
139
|
-
spinner.fail(chalk.red("Failed to generate types"));
|
|
140
|
-
const msg = error instanceof Error ? error.message : String(error);
|
|
141
|
-
if (msg.includes("graphql-codegen")) {
|
|
142
|
-
console.error(chalk.yellow("\nMissing dependencies. Install them:\n npm install -D @graphql-codegen/cli @graphql-codegen/typescript @graphql-codegen/typescript-operations"));
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
console.error(chalk.red(msg));
|
|
146
|
-
}
|
|
147
|
-
process.exit(1);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
//# sourceMappingURL=codegen.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/commands/codegen.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../../src/commands/configure.ts"],"names":[],"mappings":"AAIA,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,iBA+C/D"}
|