@meetploy/cli 1.0.6 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/types.d.ts +7 -0
- package/dist/commands/types.js +114 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface TypesCommandOptions {
|
|
2
|
+
output?: string;
|
|
3
|
+
}
|
|
4
|
+
export declare function typesCommand(options?: TypesCommandOptions): Promise<void>;
|
|
5
|
+
export declare function parseTypesArgs(args: string[]): TypesCommandOptions;
|
|
6
|
+
export declare function printTypesHelp(): void;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { readFile, writeFile, mkdir } from "node:fs/promises";
|
|
2
|
+
import { join, dirname } from "node:path";
|
|
3
|
+
import { parse as parseYaml } from "yaml";
|
|
4
|
+
function generateEnvType(config) {
|
|
5
|
+
const imports = [];
|
|
6
|
+
const properties = [];
|
|
7
|
+
properties.push("\tAI_URL: string;");
|
|
8
|
+
properties.push("\tAI_TOKEN: string;");
|
|
9
|
+
if (config.db) {
|
|
10
|
+
imports.push("D1Database");
|
|
11
|
+
for (const bindingName of Object.keys(config.db)) {
|
|
12
|
+
properties.push(`\t${bindingName}: D1Database;`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
if (config.queue) {
|
|
16
|
+
imports.push("QueueBinding");
|
|
17
|
+
for (const bindingName of Object.keys(config.queue)) {
|
|
18
|
+
properties.push(`\t${bindingName}: QueueBinding;`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (config.workflow) {
|
|
22
|
+
imports.push("WorkflowBinding");
|
|
23
|
+
for (const bindingName of Object.keys(config.workflow)) {
|
|
24
|
+
properties.push(`\t${bindingName}: WorkflowBinding;`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const lines = [
|
|
28
|
+
"// This file is auto-generated by `ploy types`. Do not edit manually.",
|
|
29
|
+
"",
|
|
30
|
+
];
|
|
31
|
+
if (imports.length > 0) {
|
|
32
|
+
lines.push(`import type { ${imports.join(", ")} } from "@meetploy/types";`);
|
|
33
|
+
lines.push("");
|
|
34
|
+
}
|
|
35
|
+
lines.push("export interface Env {");
|
|
36
|
+
lines.push(...properties);
|
|
37
|
+
lines.push("}");
|
|
38
|
+
lines.push("");
|
|
39
|
+
return lines.join("\n");
|
|
40
|
+
}
|
|
41
|
+
async function readPloyConfig(directory) {
|
|
42
|
+
try {
|
|
43
|
+
const ployYamlPath = join(directory, "ploy.yaml");
|
|
44
|
+
const content = await readFile(ployYamlPath, "utf-8");
|
|
45
|
+
return parseYaml(content);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
if (error && typeof error === "object" && "code" in error) {
|
|
49
|
+
if (error.code === "ENOENT") {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function getOutputPath(options) {
|
|
57
|
+
if (options.output) {
|
|
58
|
+
return options.output;
|
|
59
|
+
}
|
|
60
|
+
return "env.d.ts";
|
|
61
|
+
}
|
|
62
|
+
export async function typesCommand(options = {}) {
|
|
63
|
+
const cwd = process.cwd();
|
|
64
|
+
const config = await readPloyConfig(cwd);
|
|
65
|
+
if (!config) {
|
|
66
|
+
console.error("Error: ploy.yaml not found in current directory");
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
const hasBindings = config.db || config.queue || config.workflow;
|
|
70
|
+
if (!hasBindings) {
|
|
71
|
+
console.log("No bindings found in ploy.yaml. Generating Env with AI_URL only.");
|
|
72
|
+
}
|
|
73
|
+
const content = generateEnvType(config);
|
|
74
|
+
const outputPath = getOutputPath(options);
|
|
75
|
+
const fullOutputPath = join(cwd, outputPath);
|
|
76
|
+
const outputDir = dirname(fullOutputPath);
|
|
77
|
+
await mkdir(outputDir, { recursive: true });
|
|
78
|
+
await writeFile(fullOutputPath, content, "utf-8");
|
|
79
|
+
console.log(`Generated ${outputPath}`);
|
|
80
|
+
}
|
|
81
|
+
export function parseTypesArgs(args) {
|
|
82
|
+
const options = {};
|
|
83
|
+
for (let i = 0; i < args.length; i++) {
|
|
84
|
+
const arg = args[i];
|
|
85
|
+
if (arg === "-o" || arg === "--output") {
|
|
86
|
+
const nextArg = args[i + 1];
|
|
87
|
+
if (!nextArg || nextArg.startsWith("-")) {
|
|
88
|
+
console.error(`Error: ${arg} requires a path argument`);
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
options.output = nextArg;
|
|
92
|
+
i++;
|
|
93
|
+
}
|
|
94
|
+
else if (arg === "-h" || arg === "--help") {
|
|
95
|
+
printTypesHelp();
|
|
96
|
+
process.exit(0);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return options;
|
|
100
|
+
}
|
|
101
|
+
export function printTypesHelp() {
|
|
102
|
+
console.log("Usage: ploy types [options]");
|
|
103
|
+
console.log("");
|
|
104
|
+
console.log("Generate TypeScript types from ploy.yaml bindings");
|
|
105
|
+
console.log("");
|
|
106
|
+
console.log("Options:");
|
|
107
|
+
console.log(" -o, --output <path> Output file path (default: env.d.ts)");
|
|
108
|
+
console.log(" -h, --help Show this help message");
|
|
109
|
+
console.log("");
|
|
110
|
+
console.log("Examples:");
|
|
111
|
+
console.log(" ploy types Generate env.d.ts in current directory");
|
|
112
|
+
console.log(" ploy types -o src/env.d.ts Generate types to specific path");
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/commands/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAiB1C,SAAS,eAAe,CAAC,MAAkB;IAC1C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAa,EAAE,CAAC;IAGhC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACrC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAGvC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3B,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YAClD,UAAU,CAAC,IAAI,CAAC,KAAK,WAAW,eAAe,CAAC,CAAC;QAClD,CAAC;IACF,CAAC;IAGD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7B,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,UAAU,CAAC,IAAI,CAAC,KAAK,WAAW,iBAAiB,CAAC,CAAC;QACpD,CAAC;IACF,CAAC;IAGD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAChC,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxD,UAAU,CAAC,IAAI,CAAC,KAAK,WAAW,oBAAoB,CAAC,CAAC;QACvD,CAAC;IACF,CAAC;IAGD,MAAM,KAAK,GAAa;QACvB,uEAAuE;QACvE,EAAE;KACF,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,SAAiB;IAC9C,IAAI,CAAC;QACJ,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,SAAS,CAAC,OAAO,CAAe,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;YAC3D,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;QACD,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC;AAED,SAAS,aAAa,CAAC,OAA4B;IAClD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,OAAO,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAA+B,EAAE;IACnE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAG1B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IAEzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAGD,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC;IAEjE,IAAI,CAAC,WAAW,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CACV,kEAAkE,CAClE,CAAC;IACH,CAAC;IAGD,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAGxC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAG7C,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1C,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAG5C,MAAM,SAAS,CAAC,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAElD,OAAO,CAAC,GAAG,CAAC,aAAa,UAAU,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAc;IAC5C,MAAM,OAAO,GAAwB,EAAE,CAAC;IAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,2BAA2B,CAAC,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;YACD,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;YACzB,CAAC,EAAE,CAAC;QACL,CAAC;aAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7C,cAAc,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc;IAC7B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CACV,wEAAwE,CACxE,CAAC;IACF,OAAO,CAAC,GAAG,CACV,iEAAiE,CACjE,CAAC;AACH,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { spawn } from "node:child_process";
|
|
3
|
+
import { typesCommand, parseTypesArgs } from "./commands/types.js";
|
|
3
4
|
const args = process.argv.slice(2);
|
|
4
5
|
const command = args[0];
|
|
5
6
|
if (!command) {
|
|
6
7
|
console.error("Usage: ploy <command>");
|
|
7
8
|
console.error("\nAvailable commands:");
|
|
8
9
|
console.error(" dev Start development server");
|
|
10
|
+
console.error(" types Generate TypeScript types from ploy.yaml");
|
|
9
11
|
process.exit(1);
|
|
10
12
|
}
|
|
11
13
|
if (command === "dev") {
|
|
@@ -18,10 +20,15 @@ if (command === "dev") {
|
|
|
18
20
|
process.exit(code ?? 0);
|
|
19
21
|
});
|
|
20
22
|
}
|
|
23
|
+
else if (command === "types") {
|
|
24
|
+
const options = parseTypesArgs(args.slice(1));
|
|
25
|
+
typesCommand(options);
|
|
26
|
+
}
|
|
21
27
|
else {
|
|
22
28
|
console.error(`Unknown command: ${command}`);
|
|
23
29
|
console.error("\nAvailable commands:");
|
|
24
30
|
console.error(" dev Start development server using wrangler");
|
|
31
|
+
console.error(" types Generate TypeScript types from ploy.yaml");
|
|
25
32
|
process.exit(1);
|
|
26
33
|
}
|
|
27
34
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,IAAI,CAAC,OAAO,EAAE,CAAC;IACd,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;IACvB,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE;QAChD,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACJ,CAAC;KAAM,CAAC;IACP,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEnE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,IAAI,CAAC,OAAO,EAAE,CAAC;IACd,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;IACvB,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE;QAChD,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACJ,CAAC;KAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,YAAY,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;KAAM,CAAC;IACP,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAClE,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAEnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meetploy/cli",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"lint": "eslint . && prettier --check ."
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"wrangler": "4.45.1"
|
|
33
|
+
"wrangler": "4.45.1",
|
|
34
|
+
"yaml": "^2.7.0"
|
|
34
35
|
}
|
|
35
36
|
}
|