@dcl/sdk-commands 7.29.1-36625469671.commit-2d5ffac → 7.29.1-36716815278.commit-ab46c81

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.
Files changed (69) hide show
  1. package/dist/commands/code-to-composite/scene-executor.js +18 -1
  2. package/dist/commands/code-to-composite/scene-executor.js.map +1 -1
  3. package/dist/commands/start/index.d.ts +0 -1
  4. package/dist/commands/start/index.js +6 -24
  5. package/dist/commands/start/index.js.map +1 -1
  6. package/dist/commands/start/server/routes.d.ts +1 -1
  7. package/dist/commands/start/server/routes.js +2 -6
  8. package/dist/commands/start/server/routes.js.map +1 -1
  9. package/dist/commands/start/utils.d.ts +0 -32
  10. package/dist/commands/start/utils.js +0 -72
  11. package/dist/commands/start/utils.js.map +1 -1
  12. package/dist/components/analytics.d.ts +1 -75
  13. package/dist/components/analytics.js +2 -3
  14. package/dist/components/analytics.js.map +1 -1
  15. package/dist/logic/bundle.js +1 -32
  16. package/dist/logic/bundle.js.map +1 -1
  17. package/dist/logic/config.d.ts +0 -1
  18. package/dist/logic/config.js +0 -7
  19. package/dist/logic/config.js.map +1 -1
  20. package/dist/logic/error.d.ts +1 -1
  21. package/dist/logic/error.js.map +1 -1
  22. package/dist/logic/exec.d.ts +0 -1
  23. package/dist/logic/exec.js +2 -2
  24. package/dist/logic/exec.js.map +1 -1
  25. package/dist/logic/lang.js +1 -1
  26. package/dist/logic/project-files.js +0 -2
  27. package/dist/logic/project-files.js.map +1 -1
  28. package/dist/logic/scene-validations.d.ts +1 -8
  29. package/dist/logic/scene-validations.js.map +1 -1
  30. package/package.json +4 -4
  31. package/dist/commands/sdk-server-logs/index.d.ts +0 -24
  32. package/dist/commands/sdk-server-logs/index.js +0 -313
  33. package/dist/commands/sdk-server-logs/index.js.map +0 -1
  34. package/dist/commands/start/dcl-env.d.ts +0 -16
  35. package/dist/commands/start/dcl-env.js +0 -51
  36. package/dist/commands/start/dcl-env.js.map +0 -1
  37. package/dist/commands/start/multiplayer-server.d.ts +0 -35
  38. package/dist/commands/start/multiplayer-server.js +0 -244
  39. package/dist/commands/start/multiplayer-server.js.map +0 -1
  40. package/dist/commands/start/server/runtime-env.d.ts +0 -84
  41. package/dist/commands/start/server/runtime-env.js +0 -415
  42. package/dist/commands/start/server/runtime-env.js.map +0 -1
  43. package/dist/commands/start/server/storage-service.d.ts +0 -8
  44. package/dist/commands/start/server/storage-service.js +0 -243
  45. package/dist/commands/start/server/storage-service.js.map +0 -1
  46. package/dist/commands/storage/env.d.ts +0 -5
  47. package/dist/commands/storage/env.js +0 -86
  48. package/dist/commands/storage/env.js.map +0 -1
  49. package/dist/commands/storage/index.d.ts +0 -26
  50. package/dist/commands/storage/index.js +0 -142
  51. package/dist/commands/storage/index.js.map +0 -1
  52. package/dist/commands/storage/player.d.ts +0 -5
  53. package/dist/commands/storage/player.js +0 -143
  54. package/dist/commands/storage/player.js.map +0 -1
  55. package/dist/commands/storage/scene.d.ts +0 -5
  56. package/dist/commands/storage/scene.js +0 -105
  57. package/dist/commands/storage/scene.js.map +0 -1
  58. package/dist/commands/storage/shared.d.ts +0 -62
  59. package/dist/commands/storage/shared.js +0 -260
  60. package/dist/commands/storage/shared.js.map +0 -1
  61. package/dist/commands/storage/types.d.ts +0 -56
  62. package/dist/commands/storage/types.js +0 -23
  63. package/dist/commands/storage/types.js.map +0 -1
  64. package/dist/logic/auth-chain-headers.d.ts +0 -11
  65. package/dist/logic/auth-chain-headers.js +0 -25
  66. package/dist/logic/auth-chain-headers.js.map +0 -1
  67. package/dist/logic/lsd-realm.d.ts +0 -5
  68. package/dist/logic/lsd-realm.js +0 -28
  69. package/dist/logic/lsd-realm.js.map +0 -1
@@ -1,243 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage-service.js","sourceRoot":"","sources":["../../../../src/commands/start/server/storage-service.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { Options } from './types';
2
- /**
3
- * Handles environment variable operations in the server-side storage service (set, delete, clear)
4
- */
5
- export declare const handleEnv: (action: string, key: string | undefined, options: Options) => Promise<void>;
@@ -1,86 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/commands/storage/env.ts"],"names":[],"mappings":";;;AAAA,+BAA8B;AAE9B,6CAA4C;AAC5C,+DAAqE;AACrE,qCAMiB;AAEjB;;GAEG;AACI,MAAM,SAAS,GAAG,KAAK,EAAE,MAAc,EAAE,GAAuB,EAAE,OAAgB,EAAiB,EAAE;IAC1G,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,UAAU,CAAA;IAChD,MAAM,WAAW,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAA;IAExE,sDAAsD;IACtD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,4BAAmB,EAC3E,OAAO,CAAC,UAAU,EAClB,WAAW,EACX,MAAM,EACN,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EACxB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAC3B,CAAA;IAED,sBAAsB;IACtB,MAAM,WAAW,GAAG,IAAA,6BAAoB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAEtD,iBAAiB;IACjB,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,gBAAgB;QAChB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,gBAAQ,CAAC,qBAAqB,EAAE,gEAAgE,CAAC,CAAA;QAC7G,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACrC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,gBAAQ,CAAC,uBAAuB,EAAE,kEAAkE,CAAC,CAAA;QACjH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,iCAAiC,GAAG,QAAQ,OAAO,EAAE,CAAC,CAAA;QAElE,MAAM,GAAG,GAAG,GAAG,OAAO,QAAQ,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAA;QACvD,MAAM,IAAI,GAAG,IAAA,0BAAiB,EAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QAE7F,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAwB,EAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAE3G,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,SAAS,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;YACnD,IAAA,6BAAY,EAAC,MAAM,EAAE,yBAAyB,GAAG,qBAAqB,EAAE,EAAE,CAAC,CAAA;QAC7E,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;YACnD,IAAA,2BAAU,EAAC,MAAM,EAAE,uCAAuC,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC,CAAC,CAAA;QAChH,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,mBAAmB;QACnB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,gBAAQ,CAAC,qBAAqB,EAAE,qDAAqD,CAAC,CAAA;QAClG,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,kCAAkC,GAAG,UAAU,OAAO,EAAE,CAAC,CAAA;QAErE,MAAM,GAAG,GAAG,GAAG,OAAO,QAAQ,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAA;QACvD,MAAM,IAAI,GAAG,IAAA,0BAAiB,EAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;QAEzF,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAwB,EAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAA;QAEnG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,SAAS,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;YACtD,IAAA,6BAAY,EAAC,MAAM,EAAE,yBAAyB,GAAG,yBAAyB,EAAE,EAAE,CAAC,CAAA;QACjF,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;YACtD,IAAA,2BAAU,EAAC,MAAM,EAAE,0CAA0C,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC,CAAC,CAAA;QACnH,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QAC9B,kBAAkB;QAClB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAE5C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,SAAS,GAAG,MAAM,IAAA,sBAAa,EACnC,mFAAmF,CACpF,CAAA;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;gBACnC,OAAM;YACR,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,2CAA2C,OAAO,EAAE,CAAC,CAAA;QAEjE,MAAM,GAAG,GAAG,GAAG,OAAO,MAAM,CAAA;QAC5B,MAAM,IAAI,GAAG,IAAA,0BAAiB,EAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;QAEnF,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAwB,EAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE;YAC7G,sBAAsB,EAAE,MAAM;SAC/B,CAAC,CAAA;QAEF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,SAAS,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAA;YAChD,IAAA,6BAAY,EAAC,MAAM,EAAE,iDAAiD,EAAE,EAAE,CAAC,CAAA;QAC7E,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAA;YAChD,IAAA,2BAAU,EAAC,MAAM,EAAE,wCAAwC,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC,CAAC,CAAA;QAC1G,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AA7FY,QAAA,SAAS,aA6FrB"}
@@ -1,26 +0,0 @@
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>;
@@ -1,142 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.args = void 0;
4
- exports.help = help;
5
- exports.main = main;
6
- const args_1 = require("../../logic/args");
7
- const analytics_1 = require("../../components/analytics");
8
- const error_1 = require("../../logic/error");
9
- const config_1 = require("../../logic/config");
10
- const env_1 = require("./env");
11
- const scene_1 = require("./scene");
12
- const player_1 = require("./player");
13
- exports.args = (0, args_1.declareArgs)({
14
- '--help': Boolean,
15
- '-h': '--help',
16
- '--dir': String,
17
- '--target': String,
18
- '-t': '--target',
19
- '--port': Number,
20
- '-p': '--port',
21
- '--https': Boolean,
22
- '--no-browser': Boolean,
23
- '-b': '--no-browser',
24
- '--value': String,
25
- '-v': '--value',
26
- '--address': String,
27
- '-a': '--address',
28
- '--confirm': Boolean,
29
- '-c': '--confirm'
30
- });
31
- const STORAGE_SERVER_ORG = 'https://storage.decentraland.org';
32
- function help(options) {
33
- options.components.logger.log(`
34
- Usage: 'sdk-commands storage [subcommand] [action] [KEY] [options]'
35
- Manages server-side storage including environment variables, scene storage, and player storage.
36
- This data is stored in Decentraland's remote storage service, not in the local filesystem.
37
- Uses the scene.json in the project directory: worldConfiguration.name for a World, or the scene's base parcel for a Genesis City scene.
38
-
39
- Subcommands:
40
- env Manage environment variables
41
- scene Manage scene storage
42
- player Manage player storage
43
-
44
- Options:
45
- -h, --help Displays complete help
46
- -v, --value [value] The value to set for a storage key
47
- -a, --address [addr] Player address (for player storage operations)
48
- -c, --confirm Skip confirmation prompts for destructive operations
49
- -t, --target [URL] Target storage server URL (default: ${STORAGE_SERVER_ORG})
50
- --dir [path] Path to the project directory
51
- -p, --port [port] Select a custom port for the linker dApp
52
- -b, --no-browser Do not open a new browser window
53
- --https Use HTTPS for the linker dApp
54
-
55
- Target options:
56
- - https://storage.decentraland.org (production - default)
57
- - https://storage.decentraland.zone (staging)
58
- - http://localhost:<port> (local development)
59
-
60
- Environment Variables (storage env):
61
- storage env set KEY --value VALUE Set an environment variable
62
- storage env delete KEY Delete an environment variable
63
- storage env clear --confirm Delete all environment variables
64
-
65
- Scene Storage (storage scene):
66
- storage scene set KEY --value VALUE Set a scene storage value
67
- storage scene get KEY Get a scene storage value
68
- storage scene delete KEY Delete a scene storage value
69
- storage scene clear --confirm Delete all scene storage data
70
-
71
- Player Storage (storage player):
72
- storage player set KEY --value VALUE --address 0xABCD Set a player storage value
73
- storage player get KEY --address 0xABCD Get a player storage value
74
- storage player delete KEY --address 0xABCD Delete a player storage value
75
- storage player clear --address 0xABCD --confirm Delete all data for a player
76
- storage player clear --confirm Delete all player data (all players)
77
-
78
- Examples:
79
- - Set an environment variable:
80
- $ sdk-commands storage env set API_KEY --value "my-secret-key"
81
-
82
- - Get a scene storage value:
83
- $ sdk-commands storage scene get high_score
84
-
85
- - Set player storage:
86
- $ sdk-commands storage player set level --value 10 --address 0x1234...
87
-
88
- - Clear all environment variables with confirmation:
89
- $ sdk-commands storage env clear --confirm
90
-
91
- - Deploy to staging:
92
- $ sdk-commands storage env set MY_KEY --value my_value --target https://storage.decentraland.zone
93
-
94
- - Deploy to local development server:
95
- $ sdk-commands storage scene set test_key --value test_value --target http://localhost:8000
96
- `);
97
- }
98
- async function main(options) {
99
- // Parse positional arguments: storage [subcommand] [action] [KEY?]
100
- const positionalArgs = options.args._.filter((arg) => !arg.startsWith('-'));
101
- if (positionalArgs.length === 0) {
102
- throw new error_1.CliError('STORAGE_MISSING_SUBCOMMAND', 'Missing subcommand. Usage: storage [env|scene|player] [action] [KEY] [options]\nRun "sdk-commands storage --help" for more information.');
103
- }
104
- const [subcommand, action, key] = positionalArgs;
105
- // Validate subcommand
106
- if (!['env', 'scene', 'player'].includes(subcommand)) {
107
- throw new error_1.CliError('STORAGE_INVALID_SUBCOMMAND', `Invalid subcommand '${subcommand}'. Use: env, scene, or player\nRun "sdk-commands storage --help" for more information.`);
108
- }
109
- // Validate action is provided
110
- if (!action) {
111
- throw new error_1.CliError('STORAGE_MISSING_ACTION', `Missing action for '${subcommand}'. Run "sdk-commands storage --help" for more information.`);
112
- }
113
- // Use storage-specific analytics; pass augmented options so handlers use it without mutating shared components
114
- const storageAnalytics = await (0, analytics_1.createAnalyticsComponent)(options.components, {
115
- writeKey: (0, config_1.getStorageSegmentKey)()
116
- });
117
- const storageOptions = {
118
- ...options,
119
- components: { ...options.components, analytics: storageAnalytics }
120
- };
121
- try {
122
- if (subcommand === 'env') {
123
- await (0, env_1.handleEnv)(action, key, storageOptions);
124
- }
125
- else if (subcommand === 'scene') {
126
- await (0, scene_1.handleScene)(action, key, storageOptions);
127
- }
128
- else if (subcommand === 'player') {
129
- await (0, player_1.handlePlayer)(action, key, storageOptions);
130
- }
131
- }
132
- catch (error) {
133
- if (error instanceof error_1.CliError) {
134
- throw error;
135
- }
136
- throw new error_1.CliError('STORAGE_OPERATION_FAILED', `Storage operation failed: ${error.message}`);
137
- }
138
- finally {
139
- await storageAnalytics.stop();
140
- }
141
- }
142
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/storage/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { Options } from './types';
2
- /**
3
- * Handles player storage operations in the server-side storage service (get, set, delete, clear)
4
- */
5
- export declare const handlePlayer: (action: string, key: string | undefined, options: Options) => Promise<void>;