@cimplify/cli 0.15.2 → 0.16.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/LICENSE +21 -0
- package/README.md +2 -2
- package/dist/add-SXC6RUPQ.mjs +140 -0
- package/dist/{add-KRIIKAS4.mjs → add-XQVQLD3F.mjs} +4 -4
- package/dist/ai-NQH5L4I6.mjs +17 -0
- package/dist/{assets-CWB72PZG.mjs → assets-FZGVOQXH.mjs} +12 -7
- package/dist/{auth-step-up-Z6KOTTV7.mjs → auth-step-up-67LCPDNL.mjs} +5 -5
- package/dist/build-J4ZUIOPX.mjs +625 -0
- package/dist/{cancel-ZHVVILOU.mjs → cancel-VGJHZJ4J.mjs} +4 -4
- package/dist/capture-RAJ2B3BH.mjs +69 -0
- package/dist/chunk-25ZPFHLF.mjs +51 -0
- package/dist/chunk-47ZXSY47.mjs +52 -0
- package/dist/{chunk-NK6VC264.mjs → chunk-54J3XR4T.mjs} +2 -2
- package/dist/chunk-5HP2INMY.mjs +10631 -0
- package/dist/chunk-7JR6JCFF.mjs +32 -0
- package/dist/chunk-7PQL7E7K.mjs +68 -0
- package/dist/chunk-AKACUJ3W.mjs +81 -0
- package/dist/chunk-BYNE553A.mjs +2945 -0
- package/dist/{chunk-NYXA6X56.mjs → chunk-CLQYPTJ2.mjs} +31 -11
- package/dist/chunk-CNZAOVSK.mjs +104 -0
- package/dist/chunk-CPBESPWK.mjs +5576 -0
- package/dist/{chunk-GRR5U2M5.mjs → chunk-DYWUPHV3.mjs} +11 -7
- package/dist/chunk-EAV2P4N3.mjs +1941 -0
- package/dist/{chunk-KN2YSKXZ.mjs → chunk-EDZSOL5O.mjs} +14 -6
- package/dist/chunk-EGQIPYUN.mjs +696 -0
- package/dist/{chunk-DMLQBAGC.mjs → chunk-EOO4UOQD.mjs} +1 -1
- package/dist/chunk-EYEMPIMP.mjs +74 -0
- package/dist/chunk-G2ZEFSQJ.mjs +46 -0
- package/dist/{chunk-TH4XENKH.mjs → chunk-I4HNHPEM.mjs} +1 -1
- package/dist/chunk-JEVSFNPT.mjs +363 -0
- package/dist/chunk-JKECUAAV.mjs +2169 -0
- package/dist/chunk-KMHORI4Y.mjs +638 -0
- package/dist/chunk-KNPYBZ6B.mjs +502 -0
- package/dist/{chunk-3QUK5BPY.mjs → chunk-KOD4GBQ5.mjs} +8 -1
- package/dist/chunk-KQNZKV6E.mjs +535 -0
- package/dist/{chunk-MXYUAJEW.mjs → chunk-LLRUOIMU.mjs} +5 -2
- package/dist/{chunk-F2UI225N.mjs → chunk-LNMITJ4Z.mjs} +6 -6
- package/dist/chunk-MEM3MDV4.mjs +6463 -0
- package/dist/chunk-NY4YT7O6.mjs +84 -0
- package/dist/{chunk-A6WHBSXZ.mjs → chunk-Q6CF4C3E.mjs} +15 -13
- package/dist/chunk-RP66A52P.mjs +86 -0
- package/dist/{chunk-I2UP7YTG.mjs → chunk-SAXGWS2K.mjs} +1 -1
- package/dist/chunk-SCKQ4XSD.mjs +41 -0
- package/dist/chunk-SF44L2OD.mjs +1152 -0
- package/dist/chunk-SGT5IJVW.mjs +28 -0
- package/dist/{chunk-WEAB6HHQ.mjs → chunk-SS4JTMIV.mjs} +8 -8
- package/dist/chunk-T4MW3PD4.mjs +1456 -0
- package/dist/chunk-THATLMEX.mjs +1227 -0
- package/dist/{chunk-MLE4MVYC.mjs → chunk-TT4YI33G.mjs} +2 -2
- package/dist/chunk-TYV2SVFN.mjs +101 -0
- package/dist/chunk-VHK7WBO3.mjs +189 -0
- package/dist/chunk-VSA44UKR.mjs +391 -0
- package/dist/chunk-XL54SQJ3.mjs +42 -0
- package/dist/{chunk-5KYR6WJB.mjs → chunk-XQAHREKO.mjs} +17 -1
- package/dist/chunk-ZUCDXRFI.mjs +2011 -0
- package/dist/create-4S2EAUR3.mjs +10 -0
- package/dist/credits-NJOAOPPW.mjs +33 -0
- package/dist/{deploy-JE6TUYCL.mjs → deploy-26Y4UGZZ.mjs} +14 -14
- package/dist/dev-MOYURRWQ.mjs +401 -0
- package/dist/dev-WL43Q7VD.mjs +8 -0
- package/dist/dispatcher.mjs +131 -30
- package/dist/{doctor-HFB4IBYK.mjs → doctor-E6ETD2GJ.mjs} +12 -19
- package/dist/{domains-BZKGIDF4.mjs → domains-LOTQMVOR.mjs} +6 -6
- package/dist/engine-runtime-fetch-CIE7S7PB.mjs +10 -0
- package/dist/{env-FZNXKLGL.mjs → env-3PDFC5XF.mjs} +7 -7
- package/dist/env-MOTYOPM5.mjs +19 -0
- package/dist/explain-K5QEVWCD.mjs +251 -0
- package/dist/{inspect-X3M7WSTL.mjs → inspect-Q3E2DHYY.mjs} +3 -3
- package/dist/inspect-SJ4WBAXO.mjs +86 -0
- package/dist/introspect-7F34YN5V.mjs +9 -0
- package/dist/kernel-DEGWMHFL.mjs +662 -0
- package/dist/kernel-plugin.js +6862 -0
- package/dist/keys-W5SN3DPK.mjs +71 -0
- package/dist/lines-XGJYTQ7P.mjs +56 -0
- package/dist/{link-4NM2QMI5.mjs → link-NKUAVNM2.mjs} +6 -5
- package/dist/{lint-DDZ7HUQN.mjs → lint-G4YPQSSO.mjs} +2 -2
- package/dist/{list-2MFOQKKQ.mjs → list-TDR7K2JB.mjs} +3 -3
- package/dist/lock-EJPW2LM3.mjs +57 -0
- package/dist/{login-RLMDEWAL.mjs → login-AYLU7JU7.mjs} +10 -8
- package/dist/{logout-Z57X6HPE.mjs → logout-3M6VMHLH.mjs} +2 -2
- package/dist/{logs-36BLYJHJ.mjs → logs-4EL5SOXN.mjs} +5 -5
- package/dist/logs-4QQGG2XY.mjs +44 -0
- package/dist/mcp-4R2R6E5M.mjs +1077 -0
- package/dist/{mock-EVER34IX.mjs → mock-AK24GSP2.mjs} +2 -2
- package/dist/outdated-JEKCVLTG.mjs +58 -0
- package/dist/port-SBZ7X3EH.mjs +2408 -0
- package/dist/{projects-4XRNHJAH.mjs → projects-7JKTC5WJ.mjs} +9 -7
- package/dist/publish-QQCX47HK.mjs +20 -0
- package/dist/remix-NLLYD3BI.mjs +125 -0
- package/dist/repo-Z4G4EW3N.mjs +9 -0
- package/dist/report-M7F4ZYP7.mjs +2 -0
- package/dist/rollback-2WQ2CW7T.mjs +43 -0
- package/dist/{rollback-WCRWXSE3.mjs → rollback-ZGU32HGT.mjs} +6 -6
- package/dist/scene-HXARHUM7.mjs +324 -0
- package/dist/{status-VA326DWD.mjs → status-C3ZSLZ7Q.mjs} +5 -5
- package/dist/status-WEQOC25K.mjs +18 -0
- package/dist/test-ZPBWV4VX.mjs +233 -0
- package/dist/testers-A3LMXOJJ.mjs +49 -0
- package/dist/{unlink-H3BO3DOQ.mjs → unlink-4G4FE4RJ.mjs} +2 -2
- package/dist/{update-YYOTN7MG.mjs → update-GHKKM5FS.mjs} +4 -4
- package/dist/{whoami-CQPPARRS.mjs → whoami-3QQN6G2A.mjs} +3 -3
- package/dist/workshop-CD74D2LK.mjs +1703 -0
- package/package.json +11 -7
- package/templates/storefront-auto/app/products/[slug]/page.tsx +1 -1
- package/templates/storefront-auto/package.json +1 -1
- package/templates/storefront-bakery/package.json +1 -1
- package/templates/storefront-fashion/app/products/[slug]/page.tsx +1 -1
- package/templates/storefront-fashion/package.json +1 -1
- package/templates/storefront-grocery/package.json +1 -1
- package/templates/storefront-pharmacy/app/products/[slug]/page.tsx +1 -1
- package/templates/storefront-pharmacy/package.json +1 -1
- package/templates/storefront-restaurant/package.json +1 -1
- package/templates/storefront-retail/app/products/[slug]/page.tsx +1 -1
- package/templates/storefront-retail/package.json +1 -1
- package/templates/storefront-services/package.json +1 -1
- package/dist/chunk-ARIDYKLO.mjs +0 -6463
- package/dist/dev-V7JSUVOI.mjs +0 -8
- package/dist/explain-O5AC73EE.mjs +0 -251
- package/dist/introspect-2NGESQZE.mjs +0 -8
- package/dist/repo-X3KZ5R64.mjs +0 -9
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { CliError, CLI_ERROR_CODE } from './chunk-
|
|
2
|
+
import { CliError, CLI_ERROR_CODE } from './chunk-KOD4GBQ5.mjs';
|
|
3
3
|
|
|
4
4
|
// src/api-client.ts
|
|
5
5
|
var DEFAULT_API_BASE_URL = "https://api.cimplify.io";
|
|
@@ -13,6 +13,7 @@ var HEADER_ACCEPT = "Accept";
|
|
|
13
13
|
var HEADER_USER_AGENT = "User-Agent";
|
|
14
14
|
var BEARER_PREFIX = "Bearer ";
|
|
15
15
|
var CONTENT_TYPE_JSON = "application/json";
|
|
16
|
+
var CONTENT_TYPE_OCTET_STREAM = "application/octet-stream";
|
|
16
17
|
var USER_AGENT = "cimplify-cli";
|
|
17
18
|
var METHOD_GET = "GET";
|
|
18
19
|
var METHOD_POST = "POST";
|
|
@@ -60,10 +61,26 @@ var ApiClient = class _ApiClient {
|
|
|
60
61
|
delete(pathname, options) {
|
|
61
62
|
return this.request(METHOD_DELETE, pathname, void 0, options);
|
|
62
63
|
}
|
|
63
|
-
|
|
64
|
+
putBytes(pathname, bytes, options) {
|
|
65
|
+
return this.send(METHOD_PUT, pathname, { contentType: CONTENT_TYPE_OCTET_STREAM, payload: bytes }, options);
|
|
66
|
+
}
|
|
67
|
+
request(method, pathname, body, options) {
|
|
68
|
+
const encoded = body === void 0 ? void 0 : { contentType: CONTENT_TYPE_JSON, payload: JSON.stringify(body) };
|
|
69
|
+
return this.send(method, pathname, encoded, options);
|
|
70
|
+
}
|
|
71
|
+
async getBytes(pathname, options) {
|
|
72
|
+
const { response, url } = await this.exchange(METHOD_GET, pathname, void 0, options, CONTENT_TYPE_OCTET_STREAM);
|
|
73
|
+
if (!response.ok) return parseResponse(response, METHOD_GET, url);
|
|
74
|
+
return new Uint8Array(await response.arrayBuffer());
|
|
75
|
+
}
|
|
76
|
+
async send(method, pathname, body, options) {
|
|
77
|
+
const { response, url } = await this.exchange(method, pathname, body, options, CONTENT_TYPE_JSON);
|
|
78
|
+
return parseResponse(response, method, url);
|
|
79
|
+
}
|
|
80
|
+
async exchange(method, pathname, body, options, accept) {
|
|
64
81
|
const url = this.buildUrl(pathname, options?.query);
|
|
65
82
|
const headers = {
|
|
66
|
-
[HEADER_ACCEPT]:
|
|
83
|
+
[HEADER_ACCEPT]: accept,
|
|
67
84
|
[HEADER_USER_AGENT]: USER_AGENT
|
|
68
85
|
};
|
|
69
86
|
if (this.apiKey) {
|
|
@@ -72,11 +89,8 @@ var ApiClient = class _ApiClient {
|
|
|
72
89
|
if (this.stepUpToken) {
|
|
73
90
|
headers[HEADER_STEP_UP] = `${BEARER_PREFIX}${this.stepUpToken}`;
|
|
74
91
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
headers[HEADER_CONTENT_TYPE] = CONTENT_TYPE_JSON;
|
|
78
|
-
payload = JSON.stringify(body);
|
|
79
|
-
}
|
|
92
|
+
if (body !== void 0) headers[HEADER_CONTENT_TYPE] = body.contentType;
|
|
93
|
+
const payload = body?.payload;
|
|
80
94
|
const controller = new AbortController();
|
|
81
95
|
const timeoutMs = options?.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
82
96
|
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
@@ -103,7 +117,7 @@ var ApiClient = class _ApiClient {
|
|
|
103
117
|
`${method} ${url} was redirected. Point ${ENV_API_BASE_URL} (or --base-url) at ${DEFAULT_API_BASE_URL}.`
|
|
104
118
|
);
|
|
105
119
|
}
|
|
106
|
-
return
|
|
120
|
+
return { response, url };
|
|
107
121
|
}
|
|
108
122
|
buildUrl(pathname, query) {
|
|
109
123
|
const base = pathname.startsWith("/") ? pathname : `/${pathname}`;
|
|
@@ -164,7 +178,13 @@ async function parseResponse(response, method, url) {
|
|
|
164
178
|
{ remediation: "cimplify auth step-up" }
|
|
165
179
|
);
|
|
166
180
|
}
|
|
167
|
-
throw new CliError(code, message);
|
|
181
|
+
throw new CliError(code, message, { details: { status: response.status } });
|
|
182
|
+
}
|
|
183
|
+
var STATUS_SERVICE_UNAVAILABLE = 503;
|
|
184
|
+
function isServiceUnavailable(error) {
|
|
185
|
+
if (!(error instanceof CliError)) return false;
|
|
186
|
+
const details = error.details;
|
|
187
|
+
return details?.status === STATUS_SERVICE_UNAVAILABLE;
|
|
168
188
|
}
|
|
169
189
|
function mapStatusToCode(status) {
|
|
170
190
|
if (status === STATUS_UNAUTHORIZED) return CLI_ERROR_CODE.AUTH_FAILED;
|
|
@@ -196,4 +216,4 @@ function truncate(value, max = 200) {
|
|
|
196
216
|
return value.length > max ? `${value.slice(0, max)}\u2026` : value;
|
|
197
217
|
}
|
|
198
218
|
|
|
199
|
-
export { ApiClient, DEFAULT_API_BASE_URL, ENV_API_BASE_URL, SDK_ENV_API_URL, resolveBaseUrl };
|
|
219
|
+
export { ApiClient, DEFAULT_API_BASE_URL, ENV_API_BASE_URL, SDK_ENV_API_URL, isServiceUnavailable, resolveBaseUrl };
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { MANIFEST_FILE, LOCKFILE, serializeLockfile, currentLockfile } from './chunk-T4MW3PD4.mjs';
|
|
3
|
+
import { quoteTomlString } from './chunk-KQNZKV6E.mjs';
|
|
4
|
+
import { PINNED_TYPESCRIPT_VERSION, PINNED_SDK_VERSION } from './chunk-AKACUJ3W.mjs';
|
|
5
|
+
|
|
6
|
+
// src/interactives/templates/common.ts
|
|
7
|
+
var VITEST_VERSION = "^4.1.10";
|
|
8
|
+
function packageJson(name) {
|
|
9
|
+
const pkg = {
|
|
10
|
+
name,
|
|
11
|
+
private: true,
|
|
12
|
+
type: "module",
|
|
13
|
+
scripts: { dev: "cimplify dev", test: "vitest run", check: "tsc --noEmit" },
|
|
14
|
+
dependencies: { "@cimplify/sdk": `^${PINNED_SDK_VERSION}` },
|
|
15
|
+
devDependencies: { typescript: PINNED_TYPESCRIPT_VERSION, vitest: VITEST_VERSION }
|
|
16
|
+
};
|
|
17
|
+
return `${JSON.stringify(pkg, null, 2)}
|
|
18
|
+
`;
|
|
19
|
+
}
|
|
20
|
+
var TSCONFIG = `{
|
|
21
|
+
"compilerOptions": {
|
|
22
|
+
"target": "ES2022",
|
|
23
|
+
"module": "ESNext",
|
|
24
|
+
"moduleResolution": "bundler",
|
|
25
|
+
"lib": ["ES2022", "DOM"],
|
|
26
|
+
"strict": true,
|
|
27
|
+
"noEmit": true,
|
|
28
|
+
"isolatedModules": true,
|
|
29
|
+
"skipLibCheck": true,
|
|
30
|
+
"types": []
|
|
31
|
+
},
|
|
32
|
+
"include": ["src", "tests"]
|
|
33
|
+
}
|
|
34
|
+
`;
|
|
35
|
+
var GITIGNORE = "node_modules\n.cimplify\n";
|
|
36
|
+
function manifest(title, spec) {
|
|
37
|
+
let out = `[interactive]
|
|
38
|
+
name = ${quoteTomlString(title)}
|
|
39
|
+
description = ${quoteTomlString(spec.description)}
|
|
40
|
+
category = "${spec.category}"
|
|
41
|
+
|
|
42
|
+
`;
|
|
43
|
+
out += `[profile]
|
|
44
|
+
kind = "${spec.profile}"
|
|
45
|
+
`;
|
|
46
|
+
if (spec.game) out += `game = "game_api"
|
|
47
|
+
`;
|
|
48
|
+
if (spec.engineFeatures !== void 0) out += `engine_features = [${spec.engineFeatures.map(quoteTomlString).join(", ")}]
|
|
49
|
+
`;
|
|
50
|
+
out += `
|
|
51
|
+
[entries]
|
|
52
|
+
client = "src/client.ts"
|
|
53
|
+
`;
|
|
54
|
+
if (spec.game) out += `conformance = "src/conformance.ts"
|
|
55
|
+
`;
|
|
56
|
+
const caps = Object.keys(spec.capabilities);
|
|
57
|
+
if (caps.length > 0) {
|
|
58
|
+
out += "\n[capabilities]\n";
|
|
59
|
+
for (const c of caps) out += `${quoteTomlString(c)} = ${quoteTomlString(spec.capabilities[c])}
|
|
60
|
+
`;
|
|
61
|
+
}
|
|
62
|
+
if (spec.economy) out += `
|
|
63
|
+
${spec.economy}`;
|
|
64
|
+
if (spec.extraManifest) out += `
|
|
65
|
+
${spec.extraManifest}`;
|
|
66
|
+
out += `
|
|
67
|
+
[rating]
|
|
68
|
+
violence = "none"
|
|
69
|
+
sexuality = "none"
|
|
70
|
+
language = "none"
|
|
71
|
+
fear = "none"
|
|
72
|
+
simulated_gambling = false
|
|
73
|
+
|
|
74
|
+
[delivery]
|
|
75
|
+
min_device_tier = "${spec.minDeviceTier ?? "low"}"
|
|
76
|
+
download_size = "2 MiB"
|
|
77
|
+
|
|
78
|
+
[[delivery.groups]]
|
|
79
|
+
name = "core"
|
|
80
|
+
before_play = true
|
|
81
|
+
assets = ["assets/core/**"]
|
|
82
|
+
|
|
83
|
+
[[delivery.groups]]
|
|
84
|
+
name = "extras"
|
|
85
|
+
assets = ["assets/**"]
|
|
86
|
+
`;
|
|
87
|
+
return out;
|
|
88
|
+
}
|
|
89
|
+
function titleFromName(name) {
|
|
90
|
+
return name.split(/[-_\s]+/).filter((w) => w.length > 0).map((w) => w[0].toUpperCase() + w.slice(1)).join(" ");
|
|
91
|
+
}
|
|
92
|
+
function materialize(name, spec) {
|
|
93
|
+
const title = titleFromName(name);
|
|
94
|
+
return [
|
|
95
|
+
{ path: MANIFEST_FILE, content: manifest(title, spec) },
|
|
96
|
+
{ path: LOCKFILE, content: serializeLockfile(currentLockfile()) },
|
|
97
|
+
{ path: "package.json", content: packageJson(name) },
|
|
98
|
+
{ path: "tsconfig.json", content: TSCONFIG },
|
|
99
|
+
{ path: ".gitignore", content: GITIGNORE },
|
|
100
|
+
...spec.files.map((f) => ({ path: f.path, content: f.content.replaceAll("__TITLE__", title) }))
|
|
101
|
+
];
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export { materialize, titleFromName };
|