decocms 0.16.0 → 2.135.1
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 +52 -77
- package/bin/deco.js +33 -0
- package/package.json +29 -60
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -373
- package/dist/cli.js.map +0 -1
- package/dist/commands/add/add.d.ts +0 -7
- package/dist/commands/add/add.d.ts.map +0 -1
- package/dist/commands/add/add.js +0 -90
- package/dist/commands/add/add.js.map +0 -1
- package/dist/commands/auth/login.d.ts +0 -2
- package/dist/commands/auth/login.d.ts.map +0 -1
- package/dist/commands/auth/login.js +0 -125
- package/dist/commands/auth/login.js.map +0 -1
- package/dist/commands/auth/whoami.d.ts +0 -2
- package/dist/commands/auth/whoami.d.ts.map +0 -1
- package/dist/commands/auth/whoami.js +0 -51
- package/dist/commands/auth/whoami.js.map +0 -1
- package/dist/commands/config/configure.d.ts +0 -2
- package/dist/commands/config/configure.d.ts.map +0 -1
- package/dist/commands/config/configure.js +0 -51
- package/dist/commands/config/configure.js.map +0 -1
- package/dist/commands/create/create.d.ts +0 -3
- package/dist/commands/create/create.d.ts.map +0 -1
- package/dist/commands/create/create.js +0 -238
- package/dist/commands/create/create.js.map +0 -1
- package/dist/commands/dev/dev.d.ts +0 -8
- package/dist/commands/dev/dev.d.ts.map +0 -1
- package/dist/commands/dev/dev.js +0 -64
- package/dist/commands/dev/dev.js.map +0 -1
- package/dist/commands/dev/link.d.ts +0 -8
- package/dist/commands/dev/link.d.ts.map +0 -1
- package/dist/commands/dev/link.js +0 -124
- package/dist/commands/dev/link.js.map +0 -1
- package/dist/commands/gen/gen.d.ts +0 -11
- package/dist/commands/gen/gen.d.ts.map +0 -1
- package/dist/commands/gen/gen.js +0 -341
- package/dist/commands/gen/gen.js.map +0 -1
- package/dist/commands/hosting/deploy.d.ts +0 -19
- package/dist/commands/hosting/deploy.d.ts.map +0 -1
- package/dist/commands/hosting/deploy.js +0 -194
- package/dist/commands/hosting/deploy.js.map +0 -1
- package/dist/commands/hosting/list.d.ts +0 -6
- package/dist/commands/hosting/list.d.ts.map +0 -1
- package/dist/commands/hosting/list.js +0 -26
- package/dist/commands/hosting/list.js.map +0 -1
- package/dist/commands/hosting/promote.d.ts +0 -11
- package/dist/commands/hosting/promote.d.ts.map +0 -1
- package/dist/commands/hosting/promote.js +0 -153
- package/dist/commands/hosting/promote.js.map +0 -1
- package/dist/commands/update/update.d.ts +0 -4
- package/dist/commands/update/update.d.ts.map +0 -1
- package/dist/commands/update/update.js +0 -242
- package/dist/commands/update/update.js.map +0 -1
- package/dist/commands/update/upgrade.d.ts +0 -4
- package/dist/commands/update/upgrade.d.ts.map +0 -1
- package/dist/commands/update/upgrade.js +0 -157
- package/dist/commands/update/upgrade.js.map +0 -1
- package/dist/lib/config.d.ts +0 -309
- package/dist/lib/config.d.ts.map +0 -1
- package/dist/lib/config.js +0 -262
- package/dist/lib/config.js.map +0 -1
- package/dist/lib/constants.d.ts +0 -10
- package/dist/lib/constants.d.ts.map +0 -1
- package/dist/lib/constants.js +0 -16
- package/dist/lib/constants.js.map +0 -1
- package/dist/lib/fs.d.ts +0 -40
- package/dist/lib/fs.d.ts.map +0 -1
- package/dist/lib/fs.js +0 -162
- package/dist/lib/fs.js.map +0 -1
- package/dist/lib/mcp.d.ts +0 -34
- package/dist/lib/mcp.d.ts.map +0 -1
- package/dist/lib/mcp.js +0 -19
- package/dist/lib/mcp.js.map +0 -1
- package/dist/lib/parse-binding-tool.d.ts +0 -12
- package/dist/lib/parse-binding-tool.d.ts.map +0 -1
- package/dist/lib/parse-binding-tool.js +0 -15
- package/dist/lib/parse-binding-tool.js.map +0 -1
- package/dist/lib/prompt-ide-setup.d.ts +0 -27
- package/dist/lib/prompt-ide-setup.d.ts.map +0 -1
- package/dist/lib/prompt-ide-setup.js +0 -158
- package/dist/lib/prompt-ide-setup.js.map +0 -1
- package/dist/lib/prompt-integrations.d.ts +0 -7
- package/dist/lib/prompt-integrations.d.ts.map +0 -1
- package/dist/lib/prompt-integrations.js +0 -84
- package/dist/lib/prompt-integrations.js.map +0 -1
- package/dist/lib/prompt-workspace.d.ts +0 -2
- package/dist/lib/prompt-workspace.d.ts.map +0 -1
- package/dist/lib/prompt-workspace.js +0 -93
- package/dist/lib/prompt-workspace.js.map +0 -1
- package/dist/lib/runtime.d.ts +0 -5
- package/dist/lib/runtime.d.ts.map +0 -1
- package/dist/lib/runtime.js +0 -15
- package/dist/lib/runtime.js.map +0 -1
- package/dist/lib/session.d.ts +0 -39
- package/dist/lib/session.d.ts.map +0 -1
- package/dist/lib/session.js +0 -124
- package/dist/lib/session.js.map +0 -1
- package/dist/lib/slugify.d.ts +0 -13
- package/dist/lib/slugify.d.ts.map +0 -1
- package/dist/lib/slugify.js +0 -27
- package/dist/lib/slugify.js.map +0 -1
- package/dist/lib/supabase.d.ts +0 -5
- package/dist/lib/supabase.d.ts.map +0 -1
- package/dist/lib/supabase.js +0 -19
- package/dist/lib/supabase.js.map +0 -1
- package/dist/lib/wrangler.d.ts +0 -9
- package/dist/lib/wrangler.d.ts.map +0 -1
- package/dist/lib/wrangler.js +0 -118
- package/dist/lib/wrangler.js.map +0 -1
- package/dist/rules/deco-chat.mdc +0 -902
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
import inquirer from "inquirer";
|
|
2
|
-
import { promises as fs } from "fs";
|
|
3
|
-
import { spawn } from "child_process";
|
|
4
|
-
import { dirname, join } from "path";
|
|
5
|
-
import { fileURLToPath } from "url";
|
|
6
|
-
import { copy, ensureDir } from "../../lib/fs.js";
|
|
7
|
-
import { readWranglerConfig, writeWranglerConfig, } from "../../lib/config.js";
|
|
8
|
-
import { slugify } from "../../lib/slugify.js";
|
|
9
|
-
import { promptWorkspace } from "../../lib/prompt-workspace.js";
|
|
10
|
-
import { genEnv } from "../gen/gen.js";
|
|
11
|
-
import { promptIDESetup, writeIDEConfig } from "../../lib/prompt-ide-setup.js";
|
|
12
|
-
import process from "node:process";
|
|
13
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
14
|
-
const __dirname = dirname(__filename);
|
|
15
|
-
const DEFAULT_TEMPLATE = {
|
|
16
|
-
name: "Deco MCP app",
|
|
17
|
-
description: "A Deco MCP app",
|
|
18
|
-
repo: "deco-cx/deco-create",
|
|
19
|
-
branch: "main",
|
|
20
|
-
wranglerRoot: "server",
|
|
21
|
-
pathsToIgnore: [".cursorindexingignore", ".specstory", "plans"],
|
|
22
|
-
};
|
|
23
|
-
function runCommand(command, args, cwd) {
|
|
24
|
-
return new Promise((resolve) => {
|
|
25
|
-
const process = spawn(command, args, {
|
|
26
|
-
cwd,
|
|
27
|
-
stdio: "pipe",
|
|
28
|
-
});
|
|
29
|
-
process.on("close", (code) => {
|
|
30
|
-
resolve(code === 0);
|
|
31
|
-
});
|
|
32
|
-
process.on("error", () => {
|
|
33
|
-
resolve(false);
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
const PATHS_TO_IGNORE_ALWAYS = [".git"];
|
|
38
|
-
async function downloadTemplate(template, targetDir) {
|
|
39
|
-
// For the base template, use the local copy
|
|
40
|
-
if (template.name === "base") {
|
|
41
|
-
const templatePath = join(__dirname, "../../../template/base");
|
|
42
|
-
await ensureDir(targetDir);
|
|
43
|
-
await copy(templatePath, targetDir, { overwrite: true });
|
|
44
|
-
console.log(`✅ Template '${template.name}' copied successfully!`);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
// For remote templates, use git clone
|
|
48
|
-
const tempDir = join(process.cwd(), `.temp-${Date.now()}`);
|
|
49
|
-
try {
|
|
50
|
-
const success = await runCommand("git", [
|
|
51
|
-
"clone",
|
|
52
|
-
"--depth",
|
|
53
|
-
"1",
|
|
54
|
-
"--branch",
|
|
55
|
-
template.branch || "main",
|
|
56
|
-
`https://github.com/${template.repo}.git`,
|
|
57
|
-
tempDir,
|
|
58
|
-
]);
|
|
59
|
-
if (!success) {
|
|
60
|
-
throw new Error(`Failed to clone template repository: ${template.repo}`);
|
|
61
|
-
}
|
|
62
|
-
const pathsToIgnore = [
|
|
63
|
-
...(template.pathsToIgnore || []),
|
|
64
|
-
...PATHS_TO_IGNORE_ALWAYS,
|
|
65
|
-
];
|
|
66
|
-
for (const path of pathsToIgnore) {
|
|
67
|
-
const pathToRemove = join(tempDir, path);
|
|
68
|
-
const isDirectory = await fs
|
|
69
|
-
.stat(pathToRemove)
|
|
70
|
-
.then((stat) => stat.isDirectory());
|
|
71
|
-
await fs
|
|
72
|
-
.rm(pathToRemove, isDirectory ? { recursive: true, force: true } : { force: true })
|
|
73
|
-
.catch(() => {
|
|
74
|
-
console.warn(`Failed to remove ${path} from the original template: ${pathToRemove}`);
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
const templatePath = join(tempDir, template.path || "");
|
|
78
|
-
try {
|
|
79
|
-
await fs.access(templatePath);
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
throw new Error(`Template '${template.name}' not found in repository`);
|
|
83
|
-
}
|
|
84
|
-
await ensureDir(targetDir);
|
|
85
|
-
await copy(templatePath, targetDir, { overwrite: true });
|
|
86
|
-
console.log(`✅ Template '${template.name}' downloaded successfully!`);
|
|
87
|
-
}
|
|
88
|
-
finally {
|
|
89
|
-
await fs.rm(tempDir, { recursive: true, force: true }).catch(() => { });
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
async function customizeTemplate({ targetDir, projectName, workspace, wranglerRoot, }) {
|
|
93
|
-
const packageJsonPath = join(targetDir, "package.json");
|
|
94
|
-
try {
|
|
95
|
-
const packageJsonContent = await fs.readFile(packageJsonPath, "utf-8");
|
|
96
|
-
const packageJson = JSON.parse(packageJsonContent);
|
|
97
|
-
packageJson.name = projectName;
|
|
98
|
-
await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
|
99
|
-
}
|
|
100
|
-
catch (error) {
|
|
101
|
-
console.warn("⚠️ Could not customize package.json:", error instanceof Error ? error.message : String(error));
|
|
102
|
-
}
|
|
103
|
-
// Write config file with project name and workspace
|
|
104
|
-
if (workspace) {
|
|
105
|
-
try {
|
|
106
|
-
// Read current config from target directory
|
|
107
|
-
const currentConfig = await readWranglerConfig(wranglerRoot || targetDir);
|
|
108
|
-
// For now, use empty bindings - we can enhance this later with prompt integrations
|
|
109
|
-
const bindings = [];
|
|
110
|
-
// Merge with new project name and workspace - preserve all existing config
|
|
111
|
-
const newConfig = {
|
|
112
|
-
...currentConfig,
|
|
113
|
-
name: projectName,
|
|
114
|
-
scope: workspace,
|
|
115
|
-
deco: {
|
|
116
|
-
...currentConfig.deco,
|
|
117
|
-
workspace,
|
|
118
|
-
bindings,
|
|
119
|
-
},
|
|
120
|
-
};
|
|
121
|
-
// Write the new config file
|
|
122
|
-
await writeWranglerConfig(newConfig, wranglerRoot || targetDir);
|
|
123
|
-
// Generate environment variables file
|
|
124
|
-
const envContent = await genEnv({
|
|
125
|
-
workspace: workspace,
|
|
126
|
-
local: false,
|
|
127
|
-
bindings: newConfig.deco.bindings || [],
|
|
128
|
-
});
|
|
129
|
-
const outputPath = join(wranglerRoot || targetDir, "deco.gen.ts");
|
|
130
|
-
await fs.writeFile(outputPath, envContent);
|
|
131
|
-
console.log(`✅ Environment types written to: ${outputPath}`);
|
|
132
|
-
}
|
|
133
|
-
catch (error) {
|
|
134
|
-
console.warn("⚠️ Could not update config file:", error instanceof Error ? error.message : String(error));
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
export async function createCommand(projectName, config = {}) {
|
|
139
|
-
try {
|
|
140
|
-
const selectedTemplate = DEFAULT_TEMPLATE;
|
|
141
|
-
const finalProjectName = slugify(projectName ||
|
|
142
|
-
(await inquirer.prompt([
|
|
143
|
-
{
|
|
144
|
-
type: "input",
|
|
145
|
-
name: "projectName",
|
|
146
|
-
message: "Enter project name:",
|
|
147
|
-
validate: (value) => {
|
|
148
|
-
if (!value.trim()) {
|
|
149
|
-
return "Project name cannot be empty";
|
|
150
|
-
}
|
|
151
|
-
if (!/^[a-z0-9-]+$/.test(value)) {
|
|
152
|
-
return "Project name can only contain lowercase letters, numbers, and hyphens";
|
|
153
|
-
}
|
|
154
|
-
return true;
|
|
155
|
-
},
|
|
156
|
-
},
|
|
157
|
-
])).projectName);
|
|
158
|
-
// Prompt user to select workspace
|
|
159
|
-
let workspace = config?.workspace;
|
|
160
|
-
try {
|
|
161
|
-
workspace = await promptWorkspace(config?.local, workspace);
|
|
162
|
-
console.log(`📁 Selected workspace: ${workspace}`);
|
|
163
|
-
}
|
|
164
|
-
catch (error) {
|
|
165
|
-
console.error(error);
|
|
166
|
-
console.warn("⚠️ Could not select workspace. Please run 'deco login' to authenticate for a better experience.");
|
|
167
|
-
// Continue without workspace
|
|
168
|
-
}
|
|
169
|
-
const targetDir = join(process.cwd(), finalProjectName);
|
|
170
|
-
try {
|
|
171
|
-
await fs.access(targetDir);
|
|
172
|
-
const { overwrite } = await inquirer.prompt([
|
|
173
|
-
{
|
|
174
|
-
type: "list",
|
|
175
|
-
name: "overwrite",
|
|
176
|
-
message: `Directory '${finalProjectName}' already exists. Overwrite?`,
|
|
177
|
-
choices: ["No", "Yes"],
|
|
178
|
-
},
|
|
179
|
-
]);
|
|
180
|
-
if (overwrite === "No") {
|
|
181
|
-
console.log("❌ Project creation cancelled.");
|
|
182
|
-
return;
|
|
183
|
-
}
|
|
184
|
-
await fs.rm(targetDir, { recursive: true });
|
|
185
|
-
}
|
|
186
|
-
catch {
|
|
187
|
-
// Directory doesn't exist, that's fine
|
|
188
|
-
}
|
|
189
|
-
const wranglerRoot = join(targetDir, selectedTemplate.wranglerRoot || "");
|
|
190
|
-
const { initGit } = await inquirer.prompt([
|
|
191
|
-
{
|
|
192
|
-
type: "list",
|
|
193
|
-
name: "initGit",
|
|
194
|
-
message: "Initialize a git repository?",
|
|
195
|
-
choices: ["No", "Yes"],
|
|
196
|
-
},
|
|
197
|
-
]);
|
|
198
|
-
// Prompt user to install MCP configuration for IDE
|
|
199
|
-
const mcpResult = workspace
|
|
200
|
-
? await promptIDESetup({ workspace, app: finalProjectName }, targetDir)
|
|
201
|
-
: null;
|
|
202
|
-
console.log(`📦 Downloading template '${selectedTemplate.name}'...`);
|
|
203
|
-
await downloadTemplate(selectedTemplate, targetDir);
|
|
204
|
-
if (mcpResult) {
|
|
205
|
-
await writeIDEConfig(mcpResult);
|
|
206
|
-
}
|
|
207
|
-
await customizeTemplate({
|
|
208
|
-
targetDir,
|
|
209
|
-
projectName: finalProjectName,
|
|
210
|
-
workspace,
|
|
211
|
-
wranglerRoot,
|
|
212
|
-
});
|
|
213
|
-
if (initGit === "Yes") {
|
|
214
|
-
try {
|
|
215
|
-
const success = await runCommand("git", ["init"], targetDir);
|
|
216
|
-
if (success) {
|
|
217
|
-
console.log(`✅ Git repository initialized in '${finalProjectName}'`);
|
|
218
|
-
}
|
|
219
|
-
else {
|
|
220
|
-
console.warn("⚠️ Failed to initialize git repository");
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
catch (error) {
|
|
224
|
-
console.warn("⚠️ Could not initialize git repository:", error instanceof Error ? error.message : String(error));
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
console.log(`\n🎉 Project '${finalProjectName}' created successfully!`);
|
|
228
|
-
console.log(`\nNext steps:`);
|
|
229
|
-
console.log(` cd ${finalProjectName}`);
|
|
230
|
-
console.log(` npm install`);
|
|
231
|
-
console.log(` npm run dev`);
|
|
232
|
-
}
|
|
233
|
-
catch (error) {
|
|
234
|
-
console.error("❌ Failed to create project:", error instanceof Error ? error.message : String(error));
|
|
235
|
-
process.exit(1);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
//# sourceMappingURL=create.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/create/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/commands/dev/dev.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,qBAAqB;IACpC,mBAAmB,CAAC,EAAE;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuE3E"}
|
package/dist/commands/dev/dev.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { spawn } from "child_process";
|
|
2
|
-
import { getConfig, readWranglerConfig } from "../../lib/config.js";
|
|
3
|
-
import { ensureDevEnvironment } from "../../lib/wrangler.js";
|
|
4
|
-
import { link } from "./link.js";
|
|
5
|
-
import process from "node:process";
|
|
6
|
-
export async function devCommand(opts) {
|
|
7
|
-
try {
|
|
8
|
-
// 1. Ensure development environment is set up
|
|
9
|
-
console.log("🔧 Setting up development environment...");
|
|
10
|
-
await ensureDevEnvironment(opts);
|
|
11
|
-
// 2. Get configuration
|
|
12
|
-
const _config = await getConfig().catch(() => ({
|
|
13
|
-
workspace: "default",
|
|
14
|
-
bindings: [],
|
|
15
|
-
local: false,
|
|
16
|
-
enable_workflows: true,
|
|
17
|
-
}));
|
|
18
|
-
const wranglerConfig = await readWranglerConfig();
|
|
19
|
-
const app = typeof wranglerConfig.name === "string" ? wranglerConfig.name : "my-app";
|
|
20
|
-
console.log(`📦 Starting development server for '${app}'...`);
|
|
21
|
-
// 3. TODO: Check/setup MCP configuration when we port those utilities
|
|
22
|
-
// const latest = await hasMCPPreferences(config.workspace, app);
|
|
23
|
-
// if (!latest) {
|
|
24
|
-
// const mcpConfig = await promptIDESetup({
|
|
25
|
-
// workspace: config.workspace,
|
|
26
|
-
// app,
|
|
27
|
-
// });
|
|
28
|
-
// if (mcpConfig) {
|
|
29
|
-
// await writeIDEConfig(mcpConfig);
|
|
30
|
-
// }
|
|
31
|
-
// }
|
|
32
|
-
// 4. Start development server with tunnel integration
|
|
33
|
-
console.log("🚀 Starting development server with tunnel...");
|
|
34
|
-
// Use link command with wrangler dev as subprocess
|
|
35
|
-
await link({
|
|
36
|
-
port: 8787,
|
|
37
|
-
onBeforeRegister: () => {
|
|
38
|
-
console.log("🔗 Starting Wrangler development server...");
|
|
39
|
-
const wranglerProcess = spawn("npx", ["wrangler", "dev"], {
|
|
40
|
-
stdio: "inherit",
|
|
41
|
-
shell: true,
|
|
42
|
-
});
|
|
43
|
-
// Handle process termination
|
|
44
|
-
const cleanup = () => {
|
|
45
|
-
console.log("\n⏹️ Stopping development server...");
|
|
46
|
-
wranglerProcess.kill("SIGINT");
|
|
47
|
-
process.exit(0);
|
|
48
|
-
};
|
|
49
|
-
process.on("SIGINT", cleanup);
|
|
50
|
-
process.on("SIGTERM", cleanup);
|
|
51
|
-
wranglerProcess.on("error", (error) => {
|
|
52
|
-
console.error("❌ Failed to start Wrangler:", error.message);
|
|
53
|
-
process.exit(1);
|
|
54
|
-
});
|
|
55
|
-
return wranglerProcess;
|
|
56
|
-
},
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
console.error("❌ Development server failed:", error instanceof Error ? error.message : String(error));
|
|
61
|
-
process.exit(1);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=dev.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/commands/dev/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,OAAO,MAAM,cAAc,CAAC;AASnC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAA2B;IAC1D,IAAI,CAAC;QACH,8CAA8C;QAC9C,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAEjC,uBAAuB;QACvB,MAAM,OAAO,GAAG,MAAM,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7C,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,KAAK;YACZ,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC,CAAC;QAEJ,MAAM,cAAc,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAClD,MAAM,GAAG,GACP,OAAO,cAAc,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;QAE3E,OAAO,CAAC,GAAG,CAAC,uCAAuC,GAAG,MAAM,CAAC,CAAC;QAE9D,sEAAsE;QACtE,iEAAiE;QACjE,iBAAiB;QACjB,6CAA6C;QAC7C,mCAAmC;QACnC,WAAW;QACX,QAAQ;QACR,qBAAqB;QACrB,uCAAuC;QACvC,MAAM;QACN,IAAI;QAEJ,sDAAsD;QACtD,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAE7D,mDAAmD;QACnD,MAAM,IAAI,CAAC;YACT,IAAI,EAAE,IAAI;YACV,gBAAgB,EAAE,GAAG,EAAE;gBACrB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;gBAE1D,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE;oBACxD,KAAK,EAAE,SAAS;oBAChB,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;gBAEH,6BAA6B;gBAC7B,MAAM,OAAO,GAAG,GAAG,EAAE;oBACnB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;oBACpD,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC;gBAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAE/B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBACpC,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;gBAEH,OAAO,eAAe,CAAC;YACzB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,8BAA8B,EAC9B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ChildProcess } from "child_process";
|
|
2
|
-
interface LinkOptions {
|
|
3
|
-
port?: number;
|
|
4
|
-
onBeforeRegister?: () => void | ChildProcess;
|
|
5
|
-
}
|
|
6
|
-
export declare const link: ({ port, onBeforeRegister, }?: LinkOptions) => Promise<void>;
|
|
7
|
-
export {};
|
|
8
|
-
//# sourceMappingURL=link.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/commands/dev/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAS,MAAM,eAAe,CAAC;AAWpD,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,IAAI,GAAG,YAAY,CAAC;CAC9C;AA6ID,eAAO,MAAM,IAAI,GAAU,8BAGxB,WAAgB,kBAWlB,CAAC"}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { spawn } from "child_process";
|
|
2
|
-
import { connect } from "@deco-cx/warp-node";
|
|
3
|
-
import chalk from "chalk";
|
|
4
|
-
import { getAppDomain, getConfig, readWranglerConfig, } from "../../lib/config.js";
|
|
5
|
-
import { createServer } from "net";
|
|
6
|
-
import process from "node:process";
|
|
7
|
-
function copyToClipboard(text) {
|
|
8
|
-
try {
|
|
9
|
-
let command;
|
|
10
|
-
let args = [];
|
|
11
|
-
switch (process.platform) {
|
|
12
|
-
case "darwin":
|
|
13
|
-
command = "pbcopy";
|
|
14
|
-
break;
|
|
15
|
-
case "win32":
|
|
16
|
-
command = "clip";
|
|
17
|
-
break;
|
|
18
|
-
case "linux":
|
|
19
|
-
command = "xclip";
|
|
20
|
-
args = ["-selection", "clipboard"];
|
|
21
|
-
break;
|
|
22
|
-
default:
|
|
23
|
-
return Promise.resolve(false);
|
|
24
|
-
}
|
|
25
|
-
return new Promise((resolve) => {
|
|
26
|
-
const clipProcess = spawn(command, args, { stdio: "pipe" });
|
|
27
|
-
clipProcess.stdin.write(text);
|
|
28
|
-
clipProcess.stdin.end();
|
|
29
|
-
clipProcess.on("close", (code) => {
|
|
30
|
-
resolve(code === 0);
|
|
31
|
-
});
|
|
32
|
-
clipProcess.on("error", () => {
|
|
33
|
-
resolve(false);
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
return Promise.resolve(false);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
async function findRunningAddr(port) {
|
|
42
|
-
const LOCALHOST_ENDPOINTS = ["localhost", "127.0.0.1", "0.0.0.0"];
|
|
43
|
-
for (const endpoint of LOCALHOST_ENDPOINTS) {
|
|
44
|
-
try {
|
|
45
|
-
const server = createServer();
|
|
46
|
-
await new Promise((resolve, reject) => {
|
|
47
|
-
server.listen(port, endpoint, () => {
|
|
48
|
-
server.close();
|
|
49
|
-
resolve();
|
|
50
|
-
});
|
|
51
|
-
server.on("error", reject);
|
|
52
|
-
});
|
|
53
|
-
// Port is available on this endpoint, continue checking others
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
// Port is in use on this endpoint
|
|
57
|
-
return endpoint;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
// Port is available on all endpoints
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
async function waitForPort(port) {
|
|
64
|
-
let addr = await findRunningAddr(port);
|
|
65
|
-
if (addr) {
|
|
66
|
-
return addr;
|
|
67
|
-
}
|
|
68
|
-
console.log(chalk.yellow(`Waiting for port ${port} to become available...`));
|
|
69
|
-
while (!addr) {
|
|
70
|
-
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
71
|
-
addr = await findRunningAddr(port);
|
|
72
|
-
}
|
|
73
|
-
console.log(chalk.green(`Port ${port} is now available!`));
|
|
74
|
-
return addr;
|
|
75
|
-
}
|
|
76
|
-
async function monitorPortAvailability(port) {
|
|
77
|
-
while (true) {
|
|
78
|
-
const isAvailable = await findRunningAddr(port);
|
|
79
|
-
if (!isAvailable) {
|
|
80
|
-
console.log(chalk.red(`⚠️ Warning: Port ${port} is no longer available!`));
|
|
81
|
-
}
|
|
82
|
-
await new Promise((resolve) => setTimeout(resolve, 2000)); // Check every 2 seconds
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
async function register(port, domain, onBeforeRegister) {
|
|
86
|
-
const server = `wss://${domain}`;
|
|
87
|
-
try {
|
|
88
|
-
// Start port monitoring in the background
|
|
89
|
-
monitorPortAvailability(port).catch((err) => {
|
|
90
|
-
console.error("Port monitoring error:", err);
|
|
91
|
-
});
|
|
92
|
-
onBeforeRegister?.();
|
|
93
|
-
// Wait for port to become available before connecting
|
|
94
|
-
const host = await waitForPort(port);
|
|
95
|
-
const localAddr = `http://${host}:${port}`;
|
|
96
|
-
const tunnel = await connect({
|
|
97
|
-
domain,
|
|
98
|
-
localAddr,
|
|
99
|
-
server,
|
|
100
|
-
apiKey: process.env.DECO_TUNNEL_SERVER_TOKEN ??
|
|
101
|
-
"c309424a-2dc4-46fe-bfc7-a7c10df59477",
|
|
102
|
-
});
|
|
103
|
-
await tunnel.registered;
|
|
104
|
-
const serverUrl = `https://${domain}`;
|
|
105
|
-
const copied = await copyToClipboard(serverUrl);
|
|
106
|
-
console.log(`\nTunnel started \n -> 🌐 ${chalk.bold("Preview")}: ${chalk.cyan(serverUrl)}${copied ? chalk.dim(" (copied to clipboard)") : ""}`);
|
|
107
|
-
await tunnel.closed;
|
|
108
|
-
}
|
|
109
|
-
catch (err) {
|
|
110
|
-
console.log("Tunnel connection error, retrying in 500ms...", err);
|
|
111
|
-
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
112
|
-
return register(port, domain);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
export const link = async ({ port = 8787, onBeforeRegister, } = {}) => {
|
|
116
|
-
// Get config to extract workspace and app
|
|
117
|
-
const config = await getConfig({});
|
|
118
|
-
const wranglerConfig = await readWranglerConfig();
|
|
119
|
-
const app = typeof wranglerConfig.name === "string" ? wranglerConfig.name : "my-app";
|
|
120
|
-
// Generate app domain based on workspace and app name
|
|
121
|
-
const appDomain = getAppDomain(config.workspace, app);
|
|
122
|
-
await register(port, appDomain, onBeforeRegister);
|
|
123
|
-
};
|
|
124
|
-
//# sourceMappingURL=link.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/commands/dev/link.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { type DecoBinding } from "../../lib/config.js";
|
|
2
|
-
interface Options {
|
|
3
|
-
workspace: string;
|
|
4
|
-
local?: boolean;
|
|
5
|
-
bindings: DecoBinding[];
|
|
6
|
-
selfUrl?: string;
|
|
7
|
-
}
|
|
8
|
-
export declare function format(content: string): Promise<string>;
|
|
9
|
-
export declare const genEnv: ({ workspace, local, bindings, selfUrl, }: Options) => Promise<string>;
|
|
10
|
-
export {};
|
|
11
|
-
//# sourceMappingURL=gen.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gen.d.ts","sourceRoot":"","sources":["../../../src/commands/gen/gen.ts"],"names":[],"mappings":"AAKA,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAI3E,UAAU,OAAO;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA8BD,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUvD;AAoID,eAAO,MAAM,MAAM,GAAU,0CAK1B,OAAO,oBAiPT,CAAC"}
|