@dcl/sdk-commands 7.29.1-36591934525.commit-48aa9b5 → 7.29.1-36624944101.commit-bb81ac6
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/code-to-composite/scene-executor.js +1 -18
- package/dist/commands/code-to-composite/scene-executor.js.map +1 -1
- package/dist/commands/sdk-server-logs/index.d.ts +24 -0
- package/dist/commands/sdk-server-logs/index.js +313 -0
- package/dist/commands/sdk-server-logs/index.js.map +1 -0
- package/dist/commands/start/dcl-env.d.ts +16 -0
- package/dist/commands/start/dcl-env.js +51 -0
- package/dist/commands/start/dcl-env.js.map +1 -0
- package/dist/commands/start/index.d.ts +1 -0
- package/dist/commands/start/index.js +24 -6
- package/dist/commands/start/index.js.map +1 -1
- package/dist/commands/start/multiplayer-server.d.ts +35 -0
- package/dist/commands/start/multiplayer-server.js +244 -0
- package/dist/commands/start/multiplayer-server.js.map +1 -0
- package/dist/commands/start/server/routes.d.ts +1 -1
- package/dist/commands/start/server/routes.js +6 -2
- package/dist/commands/start/server/routes.js.map +1 -1
- package/dist/commands/start/server/runtime-env.d.ts +84 -0
- package/dist/commands/start/server/runtime-env.js +415 -0
- package/dist/commands/start/server/runtime-env.js.map +1 -0
- package/dist/commands/start/server/storage-service.d.ts +8 -0
- package/dist/commands/start/server/storage-service.js +243 -0
- package/dist/commands/start/server/storage-service.js.map +1 -0
- package/dist/commands/start/utils.d.ts +32 -0
- package/dist/commands/start/utils.js +72 -0
- package/dist/commands/start/utils.js.map +1 -1
- package/dist/commands/storage/env.d.ts +5 -0
- package/dist/commands/storage/env.js +86 -0
- package/dist/commands/storage/env.js.map +1 -0
- package/dist/commands/storage/index.d.ts +26 -0
- package/dist/commands/storage/index.js +142 -0
- package/dist/commands/storage/index.js.map +1 -0
- package/dist/commands/storage/player.d.ts +5 -0
- package/dist/commands/storage/player.js +143 -0
- package/dist/commands/storage/player.js.map +1 -0
- package/dist/commands/storage/scene.d.ts +5 -0
- package/dist/commands/storage/scene.js +105 -0
- package/dist/commands/storage/scene.js.map +1 -0
- package/dist/commands/storage/shared.d.ts +62 -0
- package/dist/commands/storage/shared.js +260 -0
- package/dist/commands/storage/shared.js.map +1 -0
- package/dist/commands/storage/types.d.ts +56 -0
- package/dist/commands/storage/types.js +23 -0
- package/dist/commands/storage/types.js.map +1 -0
- package/dist/components/analytics.d.ts +75 -1
- package/dist/components/analytics.js +3 -2
- package/dist/components/analytics.js.map +1 -1
- package/dist/logic/auth-chain-headers.d.ts +11 -0
- package/dist/logic/auth-chain-headers.js +25 -0
- package/dist/logic/auth-chain-headers.js.map +1 -0
- package/dist/logic/bundle.js +31 -0
- package/dist/logic/bundle.js.map +1 -1
- package/dist/logic/config.d.ts +1 -0
- package/dist/logic/config.js +7 -0
- package/dist/logic/config.js.map +1 -1
- package/dist/logic/error.d.ts +1 -1
- package/dist/logic/error.js.map +1 -1
- package/dist/logic/exec.d.ts +1 -0
- package/dist/logic/exec.js +2 -2
- package/dist/logic/exec.js.map +1 -1
- package/dist/logic/lang.js +1 -1
- package/dist/logic/lsd-realm.d.ts +5 -0
- package/dist/logic/lsd-realm.js +28 -0
- package/dist/logic/lsd-realm.js.map +1 -0
- package/dist/logic/project-files.js +2 -0
- package/dist/logic/project-files.js.map +1 -1
- package/dist/logic/scene-validations.d.ts +8 -1
- package/dist/logic/scene-validations.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setupStorageEndpoints = setupStorageEndpoints;
|
|
4
|
+
const runtime_env_1 = require("./runtime-env");
|
|
5
|
+
/** Keys live in varchar(255) columns on the deployed service. */
|
|
6
|
+
const MAX_KEY_LENGTH = 255;
|
|
7
|
+
/** At most this many entries per page; also the fallback for a missing or invalid limit. */
|
|
8
|
+
const MAX_PAGE_SIZE = 100;
|
|
9
|
+
/** The deployed pagination helper caps offsets here. */
|
|
10
|
+
const MAX_OFFSET = 100000;
|
|
11
|
+
/** Slack the deployed service allows on top of the per-value limit for the request envelope. */
|
|
12
|
+
const BODY_ENVELOPE_SLACK_BYTES = 1024;
|
|
13
|
+
const ADDRESS_PATTERN = /^0x[a-f0-9]{40}$/;
|
|
14
|
+
/** A `\u0000` escape in JSON.stringify output that is not an escaped backslash followed by the text `u0000`. */
|
|
15
|
+
const NUL_ESCAPE = /(?<!\\)(?:\\\\)*\\u0000/;
|
|
16
|
+
const LONE_SURROGATE = /[\ud800-\udbff](?![\udc00-\udfff])|(?<![\ud800-\udbff])[\udc00-\udfff]/;
|
|
17
|
+
/** The deployed service orders by its database collation, which can differ for non-ASCII and mixed case. */
|
|
18
|
+
function compareByCodePoint(a, b) {
|
|
19
|
+
const left = [...a];
|
|
20
|
+
const right = [...b];
|
|
21
|
+
for (let i = 0; i < Math.min(left.length, right.length); i++) {
|
|
22
|
+
const difference = left[i].codePointAt(0) - right[i].codePointAt(0);
|
|
23
|
+
if (difference !== 0)
|
|
24
|
+
return difference;
|
|
25
|
+
}
|
|
26
|
+
return left.length - right.length;
|
|
27
|
+
}
|
|
28
|
+
function hasLoneSurrogate(value) {
|
|
29
|
+
if (typeof value === 'string')
|
|
30
|
+
return LONE_SURROGATE.test(value);
|
|
31
|
+
if (Array.isArray(value))
|
|
32
|
+
return value.some(hasLoneSurrogate);
|
|
33
|
+
if (value !== null && typeof value === 'object') {
|
|
34
|
+
return Object.entries(value).some(([key, item]) => LONE_SURROGATE.test(key) || hasLoneSurrogate(item));
|
|
35
|
+
}
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Sets up storage-related endpoints for environment variables, scene storage, and player storage.
|
|
40
|
+
*/
|
|
41
|
+
function setupStorageEndpoints(components, router, workspace) {
|
|
42
|
+
const withKeyValidation = async (ctx, next) => {
|
|
43
|
+
const { key } = ctx.params;
|
|
44
|
+
if (!key || [...key].length > MAX_KEY_LENGTH) {
|
|
45
|
+
return { status: 400, body: { message: `Key must be between 1 and ${MAX_KEY_LENGTH} characters` } };
|
|
46
|
+
}
|
|
47
|
+
// Same rule as the SDK: these keys cannot be addressed by path, or stored by the deployed service.
|
|
48
|
+
if (key === '.' || key === '..' || key.includes('\u0000') || LONE_SURROGATE.test(key)) {
|
|
49
|
+
return { status: 400, body: { message: 'Invalid key' } };
|
|
50
|
+
}
|
|
51
|
+
return next();
|
|
52
|
+
};
|
|
53
|
+
const withAddressValidation = async (ctx, next) => {
|
|
54
|
+
const address = (ctx.params.address ?? '').toLowerCase();
|
|
55
|
+
if (!ADDRESS_PATTERN.test(address)) {
|
|
56
|
+
return { status: 400, body: { message: 'Invalid player address' } };
|
|
57
|
+
}
|
|
58
|
+
ctx.params.address = address;
|
|
59
|
+
return next();
|
|
60
|
+
};
|
|
61
|
+
const badRequest = (message) => ({ status: 400, body: { message } });
|
|
62
|
+
const invalidBody = () => badRequest('Invalid JSON body');
|
|
63
|
+
function serverError(what, error) {
|
|
64
|
+
components.logger.error(`Failed to ${what}: ${error}`);
|
|
65
|
+
return { status: 500, body: { message: `Failed to ${what}` } };
|
|
66
|
+
}
|
|
67
|
+
/** The body must be exactly `{ value }`. */
|
|
68
|
+
function readValueFromBody(bodyText) {
|
|
69
|
+
let parsed;
|
|
70
|
+
try {
|
|
71
|
+
parsed = JSON.parse(bodyText);
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return { ok: false };
|
|
75
|
+
}
|
|
76
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
77
|
+
return { ok: false };
|
|
78
|
+
const keys = Object.keys(parsed);
|
|
79
|
+
if (keys.length !== 1 || keys[0] !== 'value')
|
|
80
|
+
return { ok: false };
|
|
81
|
+
return { ok: true, value: parsed.value };
|
|
82
|
+
}
|
|
83
|
+
async function readPut(ctx, limits, options = {}) {
|
|
84
|
+
const bodyText = await ctx.request.text();
|
|
85
|
+
if (Buffer.byteLength(bodyText, 'utf-8') > limits.maxValueSizeBytes + BODY_ENVELOPE_SLACK_BYTES) {
|
|
86
|
+
return { response: { status: 413, body: { message: 'Request body is too large' } } };
|
|
87
|
+
}
|
|
88
|
+
const parsed = readValueFromBody(bodyText);
|
|
89
|
+
if (!parsed.ok || (options.stringOnly && typeof parsed.value !== 'string'))
|
|
90
|
+
return { response: invalidBody() };
|
|
91
|
+
if (!options.allowNul && NUL_ESCAPE.test(JSON.stringify(parsed.value))) {
|
|
92
|
+
return { response: badRequest('Values must not contain the \\u0000 (NUL) character') };
|
|
93
|
+
}
|
|
94
|
+
if (hasLoneSurrogate(parsed.value))
|
|
95
|
+
return { response: badRequest('Values must not contain unpaired surrogates') };
|
|
96
|
+
return { value: parsed.value };
|
|
97
|
+
}
|
|
98
|
+
async function write(what, store, success) {
|
|
99
|
+
try {
|
|
100
|
+
await store();
|
|
101
|
+
return success;
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
if (error instanceof runtime_env_1.StorageLimitExceededError)
|
|
105
|
+
return badRequest(error.message);
|
|
106
|
+
return serverError(what, error);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function listPage(values, searchParams) {
|
|
110
|
+
const prefix = searchParams.get('prefix');
|
|
111
|
+
const matching = Object.entries(values)
|
|
112
|
+
.filter(([key]) => !prefix || key.startsWith(prefix))
|
|
113
|
+
.sort(([a], [b]) => compareByCodePoint(a, b))
|
|
114
|
+
.map(([key, value]) => ({ key, value }));
|
|
115
|
+
const requestedLimit = parseInt(searchParams.get('limit') ?? '', 10);
|
|
116
|
+
const limit = Number.isNaN(requestedLimit) || requestedLimit <= 0 || requestedLimit > MAX_PAGE_SIZE
|
|
117
|
+
? MAX_PAGE_SIZE
|
|
118
|
+
: requestedLimit;
|
|
119
|
+
const offset = Math.min(MAX_OFFSET, Math.max(0, parseInt(searchParams.get('offset') ?? '', 10) || 0));
|
|
120
|
+
return {
|
|
121
|
+
body: JSON.stringify({
|
|
122
|
+
data: matching.slice(offset, offset + limit),
|
|
123
|
+
pagination: { limit, offset, total: matching.length }
|
|
124
|
+
})
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
// Environment variables endpoints (/env/:key)
|
|
128
|
+
router.get('/env/:key', withKeyValidation, async (ctx) => {
|
|
129
|
+
const { key } = ctx.params;
|
|
130
|
+
try {
|
|
131
|
+
const value = (await (0, runtime_env_1.getMergedEnv)(components, workspace.projects[0].workingDirectory)).get(key);
|
|
132
|
+
if (value === undefined)
|
|
133
|
+
return { status: 404, body: { message: `Environment variable '${key}' not found` } };
|
|
134
|
+
return { body: JSON.stringify({ value }) };
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
return serverError(`get environment variable '${key}'`, error);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
router.put('/env/:key', withKeyValidation, async (ctx) => {
|
|
141
|
+
const { key } = ctx.params;
|
|
142
|
+
try {
|
|
143
|
+
const put = await readPut(ctx, runtime_env_1.STORAGE_LIMITS.env, { stringOnly: true, allowNul: true });
|
|
144
|
+
if ('response' in put)
|
|
145
|
+
return put.response;
|
|
146
|
+
return write(`set environment variable '${key}'`, () => (0, runtime_env_1.setEnvValue)(components, key, put.value), {
|
|
147
|
+
status: 204
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
return serverError(`set environment variable '${key}'`, error);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
router.delete('/env/:key', withKeyValidation, async (ctx) => {
|
|
155
|
+
const { key } = ctx.params;
|
|
156
|
+
return write(`delete environment variable '${key}'`, () => (0, runtime_env_1.deleteEnvValue)(components, key).then(() => { }), {
|
|
157
|
+
status: 204
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
// Scene Storage list endpoint (GET /values, optional ?prefix=&limit=&offset=)
|
|
161
|
+
router.get('/values', async (ctx) => {
|
|
162
|
+
try {
|
|
163
|
+
return listPage(await (0, runtime_env_1.getWorldStorage)(components), ctx.url.searchParams);
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
return serverError('list storage values', error);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
// Scene Storage endpoints (/values/:key)
|
|
170
|
+
router.get('/values/:key', withKeyValidation, async (ctx) => {
|
|
171
|
+
const { key } = ctx.params;
|
|
172
|
+
try {
|
|
173
|
+
const value = await (0, runtime_env_1.getWorldValue)(components, key);
|
|
174
|
+
if (value === undefined)
|
|
175
|
+
return { status: 404, body: { message: `Storage key '${key}' not found` } };
|
|
176
|
+
return { body: JSON.stringify({ value }) };
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
return serverError(`get storage value '${key}'`, error);
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
router.put('/values/:key', withKeyValidation, async (ctx) => {
|
|
183
|
+
const { key } = ctx.params;
|
|
184
|
+
try {
|
|
185
|
+
const put = await readPut(ctx, runtime_env_1.STORAGE_LIMITS.world);
|
|
186
|
+
if ('response' in put)
|
|
187
|
+
return put.response;
|
|
188
|
+
return write(`set storage value '${key}'`, () => (0, runtime_env_1.setWorldValue)(components, key, put.value), {
|
|
189
|
+
body: JSON.stringify({ value: put.value })
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
return serverError(`set storage value '${key}'`, error);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
router.delete('/values/:key', withKeyValidation, async (ctx) => {
|
|
197
|
+
const { key } = ctx.params;
|
|
198
|
+
return write(`delete storage value '${key}'`, () => (0, runtime_env_1.deleteWorldValue)(components, key).then(() => { }), {
|
|
199
|
+
status: 204
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
// Player Storage list endpoint (GET /players/:address/values, optional ?prefix=&limit=&offset=)
|
|
203
|
+
router.get('/players/:address/values', withAddressValidation, async (ctx) => {
|
|
204
|
+
const { address } = ctx.params;
|
|
205
|
+
try {
|
|
206
|
+
return listPage(await (0, runtime_env_1.getPlayerStorage)(components, address), ctx.url.searchParams);
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
return serverError(`list player storage values for '${address}'`, error);
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
// Player Storage endpoints (/players/:address/values/:key)
|
|
213
|
+
router.get('/players/:address/values/:key', withAddressValidation, withKeyValidation, async (ctx) => {
|
|
214
|
+
const { address, key } = ctx.params;
|
|
215
|
+
try {
|
|
216
|
+
const value = await (0, runtime_env_1.getPlayerValue)(components, address, key);
|
|
217
|
+
if (value === undefined) {
|
|
218
|
+
return { status: 404, body: { message: `Player storage key '${key}' not found for '${address}'` } };
|
|
219
|
+
}
|
|
220
|
+
return { body: JSON.stringify({ value }) };
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
return serverError(`get player storage value '${key}' for '${address}'`, error);
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
router.put('/players/:address/values/:key', withAddressValidation, withKeyValidation, async (ctx) => {
|
|
227
|
+
const { address, key } = ctx.params;
|
|
228
|
+
try {
|
|
229
|
+
const put = await readPut(ctx, runtime_env_1.STORAGE_LIMITS.player);
|
|
230
|
+
if ('response' in put)
|
|
231
|
+
return put.response;
|
|
232
|
+
return write(`set player storage value '${key}' for '${address}'`, () => (0, runtime_env_1.setPlayerValue)(components, address, key, put.value), { body: JSON.stringify({ value: put.value }) });
|
|
233
|
+
}
|
|
234
|
+
catch (error) {
|
|
235
|
+
return serverError(`set player storage value '${key}' for '${address}'`, error);
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
router.delete('/players/:address/values/:key', withAddressValidation, withKeyValidation, async (ctx) => {
|
|
239
|
+
const { address, key } = ctx.params;
|
|
240
|
+
return write(`delete player storage value '${key}' for '${address}'`, () => (0, runtime_env_1.deletePlayerValue)(components, address, key).then(() => { }), { status: 204 });
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=storage-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-service.js","sourceRoot":"","sources":["../../../../src/commands/start/server/storage-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
declare global {
|
|
2
|
+
namespace NodeJS {
|
|
3
|
+
interface Process {
|
|
4
|
+
resourcesPath?: string;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
}
|
|
1
8
|
/**
|
|
2
9
|
* Get the LAN IP address for external device access (e.g., mobile preview)
|
|
3
10
|
*/
|
|
@@ -6,3 +13,28 @@ export declare function getLanIp(): string | undefined;
|
|
|
6
13
|
* Get the full LAN URL with protocol for external device access
|
|
7
14
|
*/
|
|
8
15
|
export declare function getLanUrl(port: number | string): string | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Detects if the code is running in an Electron environment
|
|
18
|
+
*/
|
|
19
|
+
export declare function isElectronEnvironment(): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Gets the spawn environment, adding ELECTRON_RUN_AS_NODE if running in Electron
|
|
22
|
+
*/
|
|
23
|
+
export declare function getSpawnEnv(): {
|
|
24
|
+
[key: string]: string;
|
|
25
|
+
};
|
|
26
|
+
type NpxLookup = {
|
|
27
|
+
execPath?: string;
|
|
28
|
+
pathEnv?: string;
|
|
29
|
+
npmBin?: string;
|
|
30
|
+
npxBin?: string;
|
|
31
|
+
resourcesPath?: string;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Absolute path to npm's `npx-cli.js`: the npm an Electron host ships first, then the running
|
|
35
|
+
* node's own npm, then every npm on PATH (Windows layout, unix `lib` layout, or an `npm` symlink
|
|
36
|
+
* into the npm package). Null when no npm install is reachable.
|
|
37
|
+
*/
|
|
38
|
+
export declare function findNpxCliJs({ execPath, pathEnv, npmBin: npm, resourcesPath }?: NpxLookup): string | null;
|
|
39
|
+
export declare function findNpxBin({ pathEnv, npxBin: npx }?: NpxLookup): string | null;
|
|
40
|
+
export {};
|
|
@@ -32,10 +32,21 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
35
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
39
|
exports.getLanIp = getLanIp;
|
|
37
40
|
exports.getLanUrl = getLanUrl;
|
|
41
|
+
exports.isElectronEnvironment = isElectronEnvironment;
|
|
42
|
+
exports.getSpawnEnv = getSpawnEnv;
|
|
43
|
+
exports.findNpxCliJs = findNpxCliJs;
|
|
44
|
+
exports.findNpxBin = findNpxBin;
|
|
38
45
|
const os = __importStar(require("os"));
|
|
46
|
+
const fs_1 = __importDefault(require("fs"));
|
|
47
|
+
const path_1 = __importDefault(require("path"));
|
|
48
|
+
const npmBin = /^win/.test(process.platform) ? 'npm.cmd' : 'npm';
|
|
49
|
+
const npxBin = /^win/.test(process.platform) ? 'npx.cmd' : 'npx';
|
|
39
50
|
/**
|
|
40
51
|
* Get the LAN IP address for external device access (e.g., mobile preview)
|
|
41
52
|
*/
|
|
@@ -54,4 +65,65 @@ function getLanUrl(port) {
|
|
|
54
65
|
return undefined;
|
|
55
66
|
return `http://${ip}:${port}`;
|
|
56
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Detects if the code is running in an Electron environment
|
|
70
|
+
*/
|
|
71
|
+
function isElectronEnvironment() {
|
|
72
|
+
return typeof process.versions !== 'undefined' && 'electron' in process.versions;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Gets the spawn environment, adding ELECTRON_RUN_AS_NODE if running in Electron
|
|
76
|
+
*/
|
|
77
|
+
function getSpawnEnv() {
|
|
78
|
+
if (isElectronEnvironment()) {
|
|
79
|
+
return {
|
|
80
|
+
...process.env,
|
|
81
|
+
ELECTRON_RUN_AS_NODE: '1'
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return process.env;
|
|
85
|
+
}
|
|
86
|
+
function npxCliUnderNodeDir(nodeDir) {
|
|
87
|
+
return [
|
|
88
|
+
path_1.default.join(nodeDir, 'node_modules', 'npm', 'bin', 'npx-cli.js'),
|
|
89
|
+
path_1.default.join(nodeDir, '..', 'lib', 'node_modules', 'npm', 'bin', 'npx-cli.js')
|
|
90
|
+
];
|
|
91
|
+
}
|
|
92
|
+
function npxCliBesideNpm(npmPath) {
|
|
93
|
+
try {
|
|
94
|
+
return path_1.default.join(path_1.default.dirname(fs_1.default.realpathSync(npmPath)), 'npx-cli.js');
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Absolute path to npm's `npx-cli.js`: the npm an Electron host ships first, then the running
|
|
102
|
+
* node's own npm, then every npm on PATH (Windows layout, unix `lib` layout, or an `npm` symlink
|
|
103
|
+
* into the npm package). Null when no npm install is reachable.
|
|
104
|
+
*/
|
|
105
|
+
function findNpxCliJs({ execPath = process.execPath, pathEnv = process.env.PATH ?? '', npmBin: npm = npmBin, resourcesPath = process.resourcesPath } = {}) {
|
|
106
|
+
const npmPaths = pathEnv
|
|
107
|
+
.split(path_1.default.delimiter)
|
|
108
|
+
.filter(path_1.default.isAbsolute)
|
|
109
|
+
.map((dir) => path_1.default.join(dir, npm))
|
|
110
|
+
.filter((candidate) => fs_1.default.existsSync(candidate));
|
|
111
|
+
const bundledByElectron = resourcesPath
|
|
112
|
+
? [path_1.default.join(resourcesPath, 'app.asar.unpacked', 'node_modules', 'npm', 'bin', 'npx-cli.js')]
|
|
113
|
+
: [];
|
|
114
|
+
const candidates = [
|
|
115
|
+
...bundledByElectron,
|
|
116
|
+
...npxCliUnderNodeDir(path_1.default.dirname(execPath)),
|
|
117
|
+
...npmPaths.flatMap((npmPath) => npxCliUnderNodeDir(path_1.default.dirname(npmPath))),
|
|
118
|
+
...npmPaths.map(npxCliBesideNpm).filter((candidate) => !!candidate)
|
|
119
|
+
];
|
|
120
|
+
return candidates.find((candidate) => fs_1.default.existsSync(candidate)) ?? null;
|
|
121
|
+
}
|
|
122
|
+
function findNpxBin({ pathEnv = process.env.PATH ?? '', npxBin: npx = npxBin } = {}) {
|
|
123
|
+
const candidates = pathEnv
|
|
124
|
+
.split(path_1.default.delimiter)
|
|
125
|
+
.filter(path_1.default.isAbsolute)
|
|
126
|
+
.map((dir) => path_1.default.join(dir, npx));
|
|
127
|
+
return candidates.find((candidate) => fs_1.default.existsSync(candidate)) ?? null;
|
|
128
|
+
}
|
|
57
129
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/commands/start/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/commands/start/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleEnv = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const error_1 = require("../../logic/error");
|
|
6
|
+
const beautiful_logs_1 = require("../../logic/beautiful-logs");
|
|
7
|
+
const shared_1 = require("./shared");
|
|
8
|
+
/**
|
|
9
|
+
* Handles environment variable operations in the server-side storage service (set, delete, clear)
|
|
10
|
+
*/
|
|
11
|
+
const handleEnv = async (action, key, options) => {
|
|
12
|
+
const { logger, analytics } = options.components;
|
|
13
|
+
const projectRoot = (0, path_1.resolve)(process.cwd(), options.args['--dir'] || '.');
|
|
14
|
+
// Common setup: validate action, workspace, and world
|
|
15
|
+
const { baseURL, worldName, baseParcel, parcels } = await (0, shared_1.setupStorageCommand)(options.components, projectRoot, action, options.args['--target'], ['set', 'delete', 'clear']);
|
|
16
|
+
// Linker dApp options
|
|
17
|
+
const linkOptions = (0, shared_1.getLinkerDappOptions)(options.args);
|
|
18
|
+
// Handle actions
|
|
19
|
+
if (action === 'set') {
|
|
20
|
+
// SET operation
|
|
21
|
+
if (!key) {
|
|
22
|
+
throw new error_1.CliError('STORAGE_MISSING_KEY', 'Missing KEY argument. Usage: storage env set KEY --value VALUE');
|
|
23
|
+
}
|
|
24
|
+
const value = options.args['--value'];
|
|
25
|
+
if (value === undefined) {
|
|
26
|
+
throw new error_1.CliError('STORAGE_MISSING_VALUE', 'Missing --value option. Usage: storage env set KEY --value VALUE');
|
|
27
|
+
}
|
|
28
|
+
logger.info(`Setting environment variable '${key}' to ${baseURL}`);
|
|
29
|
+
const url = `${baseURL}/env/${encodeURIComponent(key)}`;
|
|
30
|
+
const info = (0, shared_1.createStorageInfo)('env', 'set', url, worldName, baseParcel, parcels, key, value);
|
|
31
|
+
const result = await (0, shared_1.makeAuthenticatedRequest)(options.components, info, linkOptions, 'PUT', url, { value });
|
|
32
|
+
if (result.success) {
|
|
33
|
+
analytics.track('Storage Env Set Success', { key });
|
|
34
|
+
(0, beautiful_logs_1.printSuccess)(logger, `Environment variable '${key}' set successfully!`, '');
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
analytics.track('Storage Env Set Failure', { key });
|
|
38
|
+
(0, beautiful_logs_1.printError)(logger, `Failed to set environment variable '${key}':`, new Error(result.error || 'Unknown error'));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else if (action === 'delete') {
|
|
42
|
+
// DELETE operation
|
|
43
|
+
if (!key) {
|
|
44
|
+
throw new error_1.CliError('STORAGE_MISSING_KEY', 'Missing KEY argument. Usage: storage env delete KEY');
|
|
45
|
+
}
|
|
46
|
+
logger.info(`Deleting environment variable '${key}' from ${baseURL}`);
|
|
47
|
+
const url = `${baseURL}/env/${encodeURIComponent(key)}`;
|
|
48
|
+
const info = (0, shared_1.createStorageInfo)('env', 'delete', url, worldName, baseParcel, parcels, key);
|
|
49
|
+
const result = await (0, shared_1.makeAuthenticatedRequest)(options.components, info, linkOptions, 'DELETE', url);
|
|
50
|
+
if (result.success) {
|
|
51
|
+
analytics.track('Storage Env Delete Success', { key });
|
|
52
|
+
(0, beautiful_logs_1.printSuccess)(logger, `Environment variable '${key}' deleted successfully!`, '');
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
analytics.track('Storage Env Delete Failure', { key });
|
|
56
|
+
(0, beautiful_logs_1.printError)(logger, `Failed to delete environment variable '${key}':`, new Error(result.error || 'Unknown error'));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else if (action === 'clear') {
|
|
60
|
+
// CLEAR operation
|
|
61
|
+
const hasConfirm = options.args['--confirm'];
|
|
62
|
+
if (!hasConfirm) {
|
|
63
|
+
const confirmed = await (0, shared_1.confirmAction)('Are you sure you want to delete ALL environment variables? This cannot be undone.');
|
|
64
|
+
if (!confirmed) {
|
|
65
|
+
logger.info('Operation cancelled.');
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
logger.info(`Clearing all environment variables from ${baseURL}`);
|
|
70
|
+
const url = `${baseURL}/env`;
|
|
71
|
+
const info = (0, shared_1.createStorageInfo)('env', 'clear', url, worldName, baseParcel, parcels);
|
|
72
|
+
const result = await (0, shared_1.makeAuthenticatedRequest)(options.components, info, linkOptions, 'DELETE', url, undefined, {
|
|
73
|
+
'X-Confirm-Delete-All': 'true'
|
|
74
|
+
});
|
|
75
|
+
if (result.success) {
|
|
76
|
+
analytics.track('Storage Env Clear Success', {});
|
|
77
|
+
(0, beautiful_logs_1.printSuccess)(logger, 'All environment variables cleared successfully!', '');
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
analytics.track('Storage Env Clear Failure', {});
|
|
81
|
+
(0, beautiful_logs_1.printError)(logger, 'Failed to clear environment variables:', new Error(result.error || 'Unknown error'));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
exports.handleEnv = handleEnv;
|
|
86
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/commands/storage/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Result } from 'arg';
|
|
2
|
+
import { CliComponents } from '../../components';
|
|
3
|
+
export interface Options {
|
|
4
|
+
args: Result<typeof args>;
|
|
5
|
+
components: CliComponents;
|
|
6
|
+
}
|
|
7
|
+
export declare const args: {
|
|
8
|
+
'--help': BooleanConstructor;
|
|
9
|
+
'-h': string;
|
|
10
|
+
'--dir': StringConstructor;
|
|
11
|
+
'--target': StringConstructor;
|
|
12
|
+
'-t': string;
|
|
13
|
+
'--port': NumberConstructor;
|
|
14
|
+
'-p': string;
|
|
15
|
+
'--https': BooleanConstructor;
|
|
16
|
+
'--no-browser': BooleanConstructor;
|
|
17
|
+
'-b': string;
|
|
18
|
+
'--value': StringConstructor;
|
|
19
|
+
'-v': string;
|
|
20
|
+
'--address': StringConstructor;
|
|
21
|
+
'-a': string;
|
|
22
|
+
'--confirm': BooleanConstructor;
|
|
23
|
+
'-c': string;
|
|
24
|
+
};
|
|
25
|
+
export declare function help(options: Options): void;
|
|
26
|
+
export declare function main(options: Options): Promise<void>;
|