@dcl/sdk-commands 7.20.4-22581991550.commit-9c72184 → 7.20.4-22623908379.commit-46ce898
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/start/explorer-alpha.js +4 -0
- package/dist/commands/start/explorer-alpha.js.map +1 -1
- package/dist/commands/start/index.d.ts +1 -1
- package/dist/commands/start/index.js +6 -23
- package/dist/commands/start/index.js.map +1 -1
- package/dist/commands/start/server/routes.js +0 -2
- package/dist/commands/start/server/routes.js.map +1 -1
- package/dist/commands/start/types.d.ts +0 -3
- package/dist/commands/start/utils.d.ts +0 -34
- package/dist/commands/start/utils.js +0 -104
- package/dist/commands/start/utils.js.map +1 -1
- package/dist/components/analytics.d.ts +1 -70
- package/dist/components/analytics.js +2 -3
- package/dist/components/analytics.js.map +1 -1
- package/dist/logic/bundle.js +10 -32
- package/dist/logic/bundle.js.map +1 -1
- package/dist/logic/composite.d.ts +1 -0
- package/dist/logic/composite.js +13 -1
- package/dist/logic/composite.js.map +1 -1
- package/dist/logic/config.d.ts +0 -1
- package/dist/logic/config.js +0 -7
- 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 +0 -1
- 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/scene-validations.d.ts +1 -8
- package/dist/logic/scene-validations.js.map +1 -1
- package/package.json +3 -3
- package/dist/commands/sdk-server-logs/index.d.ts +0 -21
- package/dist/commands/sdk-server-logs/index.js +0 -262
- package/dist/commands/sdk-server-logs/index.js.map +0 -1
- package/dist/commands/start/hammurabi-server.d.ts +0 -19
- package/dist/commands/start/hammurabi-server.js +0 -78
- package/dist/commands/start/hammurabi-server.js.map +0 -1
- package/dist/commands/start/server/runtime-env.d.ts +0 -71
- package/dist/commands/start/server/runtime-env.js +0 -226
- package/dist/commands/start/server/runtime-env.js.map +0 -1
- package/dist/commands/start/server/storage-service.d.ts +0 -8
- package/dist/commands/start/server/storage-service.js +0 -156
- package/dist/commands/start/server/storage-service.js.map +0 -1
- package/dist/commands/storage/env.d.ts +0 -5
- package/dist/commands/storage/env.js +0 -86
- package/dist/commands/storage/env.js.map +0 -1
- package/dist/commands/storage/index.d.ts +0 -26
- package/dist/commands/storage/index.js +0 -142
- package/dist/commands/storage/index.js.map +0 -1
- package/dist/commands/storage/player.d.ts +0 -5
- package/dist/commands/storage/player.js +0 -143
- package/dist/commands/storage/player.js.map +0 -1
- package/dist/commands/storage/scene.d.ts +0 -5
- package/dist/commands/storage/scene.js +0 -105
- package/dist/commands/storage/scene.js.map +0 -1
- package/dist/commands/storage/shared.d.ts +0 -62
- package/dist/commands/storage/shared.js +0 -249
- package/dist/commands/storage/shared.js.map +0 -1
- package/dist/commands/storage/types.d.ts +0 -56
- package/dist/commands/storage/types.js +0 -23
- package/dist/commands/storage/types.js.map +0 -1
- package/dist/logic/auth-chain-headers.d.ts +0 -11
- package/dist/logic/auth-chain-headers.js +0 -25
- package/dist/logic/auth-chain-headers.js.map +0 -1
package/dist/logic/composite.js
CHANGED
|
@@ -62,10 +62,22 @@ async function getAllComposites(components, workingDirectory) {
|
|
|
62
62
|
withErrors = true;
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
+
// Compute composite's highest entity number
|
|
66
|
+
let maxCompositeEntity = 0;
|
|
67
|
+
for (const composite of Object.values(composites)) {
|
|
68
|
+
for (const component of composite.components) {
|
|
69
|
+
for (const entityId of component.data.keys()) {
|
|
70
|
+
const entityNumber = (entityId & 0xffff) >>> 0;
|
|
71
|
+
if (entityNumber > maxCompositeEntity) {
|
|
72
|
+
maxCompositeEntity = entityNumber;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
65
77
|
// generate CRDT binary
|
|
66
78
|
const crdtFilePath = path_1.default.join(workingDirectory, 'main.crdt');
|
|
67
79
|
const crdtData = (0, inspector_1.dumpEngineToCrdtCommands)(engine);
|
|
68
80
|
await components.fs.writeFile(crdtFilePath, crdtData);
|
|
69
|
-
return { compositeLines, watchFiles, scripts, withErrors };
|
|
81
|
+
return { compositeLines, watchFiles, scripts, withErrors, maxCompositeEntity };
|
|
70
82
|
}
|
|
71
83
|
//# sourceMappingURL=composite.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composite.js","sourceRoot":"","sources":["../../src/logic/composite.ts"],"names":[],"mappings":";;;;;AAqBA,
|
|
1
|
+
{"version":3,"file":"composite.js","sourceRoot":"","sources":["../../src/logic/composite.ts"],"names":[],"mappings":"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"}
|
package/dist/logic/config.d.ts
CHANGED
|
@@ -20,6 +20,5 @@ export declare function isEditor(): boolean;
|
|
|
20
20
|
export declare function isCI(): boolean;
|
|
21
21
|
export declare function getCatalystBaseUrl(components: Pick<CliComponents, 'config'>): Promise<string>;
|
|
22
22
|
export declare function getSegmentKey(): "sFdziRVDJo0taOnGzTZwafEL9nLIANZ3" | "mjCV5Dc4VAKXLJAH5g7LyHyW1jrIR3to";
|
|
23
|
-
export declare function getStorageSegmentKey(): "CU6aHB0OedZQxKVcH9lMMnkDx1MMxROY" | "SXbdxJJqFKdDQ0hnt4I4E3Ejc2FAK6V7";
|
|
24
23
|
export declare function getLandRegistry(components: Pick<CliComponents, 'config'>): Promise<string | undefined>;
|
|
25
24
|
export declare function getEstateRegistry(components: Pick<CliComponents, 'config'>): Promise<string | undefined>;
|
package/dist/logic/config.js
CHANGED
|
@@ -10,7 +10,6 @@ exports.isEditor = isEditor;
|
|
|
10
10
|
exports.isCI = isCI;
|
|
11
11
|
exports.getCatalystBaseUrl = getCatalystBaseUrl;
|
|
12
12
|
exports.getSegmentKey = getSegmentKey;
|
|
13
|
-
exports.getStorageSegmentKey = getStorageSegmentKey;
|
|
14
13
|
exports.getLandRegistry = getLandRegistry;
|
|
15
14
|
exports.getEstateRegistry = getEstateRegistry;
|
|
16
15
|
const path_1 = __importDefault(require("path"));
|
|
@@ -78,12 +77,6 @@ function getSegmentKey() {
|
|
|
78
77
|
? /* istanbul ignore next */ 'sFdziRVDJo0taOnGzTZwafEL9nLIANZ3'
|
|
79
78
|
: 'mjCV5Dc4VAKXLJAH5g7LyHyW1jrIR3to';
|
|
80
79
|
}
|
|
81
|
-
function getStorageSegmentKey() {
|
|
82
|
-
const isProduction = !process.env.DEVELOPER_MODE;
|
|
83
|
-
return isProduction
|
|
84
|
-
? /* istanbul ignore next */ 'CU6aHB0OedZQxKVcH9lMMnkDx1MMxROY'
|
|
85
|
-
: 'SXbdxJJqFKdDQ0hnt4I4E3Ejc2FAK6V7';
|
|
86
|
-
}
|
|
87
80
|
/* istanbul ignore next */
|
|
88
81
|
async function getLandRegistry(components) {
|
|
89
82
|
return (0, config_1.readStringConfig)(components, 'DCL_LAND_REGISTRY_ADDRESS');
|
package/dist/logic/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/logic/config.ts"],"names":[],"mappings":";;;;;AAYA,sDAEC;AAMD,0FAsBC;AAKD,gEAiBC;AAKD,4BAEC;AAED,oBAEC;AAED,gDAGC;AAED,sCAKC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/logic/config.ts"],"names":[],"mappings":"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"}
|
package/dist/logic/error.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type CliErrorName = 'COMMAND_NOT_VALID' | 'COMMAND_NOT_FOUND' | 'DEPLOY_WORKSPACE_NOT_SUPPORTED' | 'DEPLOY_INVALID_PROJECT_TYPE' | 'DEPLOY_INVALID_ARGUMENTS' | 'DEPLOY_UPLOAD_FAILED' | 'EXPORT_STATIC_BASE_URL_REQUIRED' | 'EXPORT_STATIC_INVALID_REALM_NAME' | 'EXPORT_STATIC_INVALID_OUTPUT_DIRECTORY' | 'INIT_DIR_NOT_EMPTY' | 'INIT_INVALID_ARGUMENTS' | 'INIT_INVALID_PROJECT' | 'INIT_INVALID_TEMPLATE_ZIP_URL' | 'QUESTS_INVALID_TARGET' | 'QUESTS_INVALID_JSON' | 'QUESTS_INVALID_QUEST_JSON' | 'QUESTS_FILE_DOES_NOT_EXIST' | 'QUESTS_CREATION_CANCELLED' | 'QUESTS_INVALID_ADDRESS' | 'QUESTS_INVALID_UUID' | 'CONFIG_NOT_PROVIDED' | 'GET_CONTEXT_FILES_LIST_FAILED' | 'GET_CONTEXT_FILES_DOWNLOAD_FAILED' | 'ACCOUNT_INVALID_PRIVATE_KEY' | 'ARGS_ARG_ERROR' | 'COMMANDS_INVALID_FOLDER' | 'COMMANDS_INVALID_INDEX_FILE' | 'PROJECT_FILES_DUPLICATE_FILE' | 'PROJECT_FILES_INVALID_PACKAGE_JSON' | 'PROJECT_VALIDATIONS_PACKAGE_JSON_REQUIRED' | 'PROJECT_VALIDATIONS_INVALID_PROJECT_KIND' | 'BUNDLE_SCENE_MAIN_REQUIRED' | 'BUNDLE_SCENE_RUNTIME_VERSION_REQUIRED' | 'BUNDLE_TSCONFIG_REQUIRED' | 'BUNDLE_NO_INPUT_FILES' | 'BUNDLE_REBUILD_FAILED' | 'BUNDLE_TYPE_CHECKER_FAILED' | 'PORTABLE_EXPERIENCE_SW_INVALID_SCENE_JSON' | 'PORTABLE_EXPERIENCE_SW_INVALID_WEARABLE_JSON' | 'SCENE_VALIDATIONS_INVALID_SCENE_JSON' | 'SCENE_VALIDATIONS_DUPLICATE_PARCELS' | 'SCENE_VALIDATIONS_BASE_PARCEL_REQUIRED' | 'SCENE_VALIDATIONS_COORDINATES_OUTSIDE_LIMITS' | 'SCENE_VALIDATIONS_PARCELS_NOT_CONNECTED' | 'SCENE_VALIDATIONS_INVALID_MAIN_FORMAT' | 'SCENE_VALIDATIONS_MAX_FILE_SIZE_EXCEEDED' | 'WORKSPACE_VALIDATIONS_INVALID_WORKSPACE_JSON' | 'WORKSPACE_VALIDATIONS_INVALID_WORKSPACE_JSON_READ' | 'CODE_TO_COMPOSITE_BUILD_FAILED' | 'CODE_TO_COMPOSITE_BUNDLE_NOT_FOUND' | 'CODE_TO_COMPOSITE_EXECUTION_FAILED'
|
|
1
|
+
export type CliErrorName = 'COMMAND_NOT_VALID' | 'COMMAND_NOT_FOUND' | 'DEPLOY_WORKSPACE_NOT_SUPPORTED' | 'DEPLOY_INVALID_PROJECT_TYPE' | 'DEPLOY_INVALID_ARGUMENTS' | 'DEPLOY_UPLOAD_FAILED' | 'EXPORT_STATIC_BASE_URL_REQUIRED' | 'EXPORT_STATIC_INVALID_REALM_NAME' | 'EXPORT_STATIC_INVALID_OUTPUT_DIRECTORY' | 'INIT_DIR_NOT_EMPTY' | 'INIT_INVALID_ARGUMENTS' | 'INIT_INVALID_PROJECT' | 'INIT_INVALID_TEMPLATE_ZIP_URL' | 'QUESTS_INVALID_TARGET' | 'QUESTS_INVALID_JSON' | 'QUESTS_INVALID_QUEST_JSON' | 'QUESTS_FILE_DOES_NOT_EXIST' | 'QUESTS_CREATION_CANCELLED' | 'QUESTS_INVALID_ADDRESS' | 'QUESTS_INVALID_UUID' | 'CONFIG_NOT_PROVIDED' | 'GET_CONTEXT_FILES_LIST_FAILED' | 'GET_CONTEXT_FILES_DOWNLOAD_FAILED' | 'ACCOUNT_INVALID_PRIVATE_KEY' | 'ARGS_ARG_ERROR' | 'COMMANDS_INVALID_FOLDER' | 'COMMANDS_INVALID_INDEX_FILE' | 'PROJECT_FILES_DUPLICATE_FILE' | 'PROJECT_FILES_INVALID_PACKAGE_JSON' | 'PROJECT_VALIDATIONS_PACKAGE_JSON_REQUIRED' | 'PROJECT_VALIDATIONS_INVALID_PROJECT_KIND' | 'BUNDLE_SCENE_MAIN_REQUIRED' | 'BUNDLE_SCENE_RUNTIME_VERSION_REQUIRED' | 'BUNDLE_TSCONFIG_REQUIRED' | 'BUNDLE_NO_INPUT_FILES' | 'BUNDLE_REBUILD_FAILED' | 'BUNDLE_TYPE_CHECKER_FAILED' | 'PORTABLE_EXPERIENCE_SW_INVALID_SCENE_JSON' | 'PORTABLE_EXPERIENCE_SW_INVALID_WEARABLE_JSON' | 'SCENE_VALIDATIONS_INVALID_SCENE_JSON' | 'SCENE_VALIDATIONS_DUPLICATE_PARCELS' | 'SCENE_VALIDATIONS_BASE_PARCEL_REQUIRED' | 'SCENE_VALIDATIONS_COORDINATES_OUTSIDE_LIMITS' | 'SCENE_VALIDATIONS_PARCELS_NOT_CONNECTED' | 'SCENE_VALIDATIONS_INVALID_MAIN_FORMAT' | 'SCENE_VALIDATIONS_MAX_FILE_SIZE_EXCEEDED' | 'WORKSPACE_VALIDATIONS_INVALID_WORKSPACE_JSON' | 'WORKSPACE_VALIDATIONS_INVALID_WORKSPACE_JSON_READ' | 'CODE_TO_COMPOSITE_BUILD_FAILED' | 'CODE_TO_COMPOSITE_BUNDLE_NOT_FOUND' | 'CODE_TO_COMPOSITE_EXECUTION_FAILED';
|
|
2
2
|
export declare class CliError<T extends CliErrorName> extends Error {
|
|
3
3
|
name: T;
|
|
4
4
|
message: string;
|
package/dist/logic/error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/logic/error.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/logic/error.ts"],"names":[],"mappings":";;;AAkEA,MAAa,QAAiC,SAAQ,KAAK;IACzD,YAAmB,OAAU,UAAe,EAAS,UAAkB,EAAE,EAAS,KAAc;QAC9F,KAAK,EAAE,CAAA;QADU,SAAI,GAAJ,IAAI,CAAqB;QAAS,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAS;IAEhG,CAAC;CACF;AAJD,4BAIC"}
|
package/dist/logic/exec.d.ts
CHANGED
package/dist/logic/exec.js
CHANGED
|
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createProcessSpawnerComponent = createProcessSpawnerComponent;
|
|
4
4
|
function createProcessSpawnerComponent(spawnFn) {
|
|
5
5
|
return {
|
|
6
|
-
exec(cwd, command, args, { env, silent
|
|
6
|
+
exec(cwd, command, args, { env, silent } = {}) {
|
|
7
7
|
return new Promise((resolve, reject) => {
|
|
8
8
|
const child = spawnFn(command, args, {
|
|
9
|
-
shell,
|
|
9
|
+
shell: true,
|
|
10
10
|
cwd,
|
|
11
11
|
env: { ...process.env, NODE_ENV: '', ...env }
|
|
12
12
|
});
|
package/dist/logic/exec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/logic/exec.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/logic/exec.ts"],"names":[],"mappings":";;AAWA,sEAwCC;AAxCD,SAAgB,6BAA6B,CAAC,OAAqB;IACjE,OAAO;QACL,IAAI,CAAC,GAAW,EAAE,OAAe,EAAE,IAAc,EAAE,EAAE,GAAG,EAAE,MAAM,KAAuB,EAAE;YACvF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE;oBACnC,KAAK,EAAE,IAAI;oBACX,GAAG;oBACH,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE;iBAC9C,CAAC,CAAA;gBAEF,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;oBACjC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBACnC,CAAC;gBAED,MAAM,OAAO,GAAG,GAAG,EAAE;oBACnB,IAAI,CAAC,KAAK,CAAC,MAAM;wBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAC1C,CAAC,CAAA;gBAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;gBAC9B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;gBAC7B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;gBAE3B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE;oBACjC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;oBAC/B,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;oBAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;oBAE5B,sDAAsD;oBACtD,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;wBAChC,MAAM,CAAC,GAAG,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;wBACxC,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,sBAAsB,IAAI,2CAA2C,CAAC,CAAC,CAAA;wBACrG,OAAM;oBACR,CAAC;oBAED,OAAO,CAAC,SAAS,CAAC,CAAA;gBACpB,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/dist/logic/lang.js
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
import { Scene } from '@dcl/schemas';
|
|
2
2
|
import { CliComponents } from '../components';
|
|
3
|
-
/**
|
|
4
|
-
* Extended Scene type that includes authoritativeMultiplayer flag
|
|
5
|
-
* for enabling Authoritative Server integration.
|
|
6
|
-
*/
|
|
7
|
-
export type SceneWithMultiplayer = Scene & {
|
|
8
|
-
authoritativeMultiplayer?: boolean;
|
|
9
|
-
};
|
|
10
3
|
export interface IFile {
|
|
11
4
|
path: string;
|
|
12
5
|
content: Buffer;
|
|
@@ -27,7 +20,7 @@ export declare function assertValidScene(components: Pick<CliComponents, 'logger
|
|
|
27
20
|
*/
|
|
28
21
|
export declare function getValidSceneJson(components: Pick<CliComponents, 'fs' | 'logger'>, projectRoot: string, opts?: {
|
|
29
22
|
log?: boolean;
|
|
30
|
-
}): Promise<
|
|
23
|
+
}): Promise<Scene>;
|
|
31
24
|
export declare function getBaseCoords(scene: Scene): {
|
|
32
25
|
x: number;
|
|
33
26
|
y: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-validations.js","sourceRoot":"","sources":["../../src/logic/scene-validations.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"scene-validations.js","sourceRoot":"","sources":["../../src/logic/scene-validations.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dcl/sdk-commands",
|
|
3
3
|
"description": "",
|
|
4
|
-
"version": "7.20.4-
|
|
4
|
+
"version": "7.20.4-22623908379.commit-46ce898",
|
|
5
5
|
"author": "Decentraland",
|
|
6
6
|
"bin": {
|
|
7
7
|
"sdk-commands": "./dist/index.js"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@dcl/crypto": "^3.4.4",
|
|
11
|
-
"@dcl/ecs": "7.20.4-
|
|
11
|
+
"@dcl/ecs": "7.20.4-22623908379.commit-46ce898",
|
|
12
12
|
"@dcl/gltf-validator-ts": "1.0.14",
|
|
13
13
|
"@dcl/hashing": "1.1.3",
|
|
14
14
|
"@dcl/inspector": "7.25.0",
|
|
@@ -80,5 +80,5 @@
|
|
|
80
80
|
"displayName": "SDK",
|
|
81
81
|
"tsconfig": "./tsconfig.json"
|
|
82
82
|
},
|
|
83
|
-
"commit": "
|
|
83
|
+
"commit": "46ce8981334e95bd4d0a007d64be2c875a526129"
|
|
84
84
|
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Result } from 'arg';
|
|
2
|
-
import { CliComponents } from '../../components';
|
|
3
|
-
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
|
-
};
|
|
19
|
-
export declare function help(options: Options): void;
|
|
20
|
-
export declare function main(options: Options): Promise<void>;
|
|
21
|
-
export {};
|
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.args = void 0;
|
|
7
|
-
exports.help = help;
|
|
8
|
-
exports.main = main;
|
|
9
|
-
const path_1 = require("path");
|
|
10
|
-
const fp_future_1 = __importDefault(require("fp-future"));
|
|
11
|
-
const crypto_1 = require("@dcl/crypto");
|
|
12
|
-
const crypto_2 = require("@dcl/crypto/dist/crypto");
|
|
13
|
-
const eth_connect_1 = require("eth-connect");
|
|
14
|
-
const args_1 = require("../../logic/args");
|
|
15
|
-
const beautiful_logs_1 = require("../../logic/beautiful-logs");
|
|
16
|
-
const account_1 = require("../../logic/account");
|
|
17
|
-
const auth_chain_headers_1 = require("../../logic/auth-chain-headers");
|
|
18
|
-
const routes_1 = require("../../linker-dapp/routes");
|
|
19
|
-
const run_dapp_1 = require("../../run-dapp");
|
|
20
|
-
const workspace_validations_1 = require("../../logic/workspace-validations");
|
|
21
|
-
const scene_validations_1 = require("../../logic/scene-validations");
|
|
22
|
-
exports.args = (0, args_1.declareArgs)({
|
|
23
|
-
'--help': Boolean,
|
|
24
|
-
'-h': '--help',
|
|
25
|
-
'--dir': String,
|
|
26
|
-
'--target': String,
|
|
27
|
-
'-t': '--target',
|
|
28
|
-
'--port': Number,
|
|
29
|
-
'-p': '--port',
|
|
30
|
-
'--https': Boolean,
|
|
31
|
-
'--no-browser': Boolean,
|
|
32
|
-
'-b': '--no-browser'
|
|
33
|
-
});
|
|
34
|
-
const DEFAULT_SERVER = 'https://multiplayer-server.decentraland.org';
|
|
35
|
-
function help(options) {
|
|
36
|
-
options.components.logger.log(`
|
|
37
|
-
Usage: 'sdk-commands sdk-server-logs [options]'
|
|
38
|
-
Streams real-time logs from the multiplayer server for your scene.
|
|
39
|
-
The scene identifier is automatically determined from scene.json:
|
|
40
|
-
- Worlds: uses worldConfiguration.name
|
|
41
|
-
- Genesis city scenes: uses scene.base parcel
|
|
42
|
-
|
|
43
|
-
Options:
|
|
44
|
-
-h, --help Displays complete help
|
|
45
|
-
-t, --target [URL] Target multiplayer server URL (default: ${DEFAULT_SERVER})
|
|
46
|
-
--dir [path] Path to the project directory
|
|
47
|
-
-p, --port [port] Select a custom port for the linker dApp
|
|
48
|
-
-b, --no-browser Do not open a new browser window
|
|
49
|
-
--https Use HTTPS for the linker dApp
|
|
50
|
-
|
|
51
|
-
Examples:
|
|
52
|
-
- View logs for your scene (run from project directory):
|
|
53
|
-
$ sdk-commands sdk-server-logs
|
|
54
|
-
|
|
55
|
-
- Connect to local development server:
|
|
56
|
-
$ sdk-commands sdk-server-logs --target http://localhost:8000
|
|
57
|
-
|
|
58
|
-
- Use private key for authentication (no browser):
|
|
59
|
-
$ DCL_PRIVATE_KEY=0x... sdk-commands sdk-server-logs
|
|
60
|
-
`);
|
|
61
|
-
}
|
|
62
|
-
function setServerLogsRoutes(router, components, awaitResponse, signCallback) {
|
|
63
|
-
const { logger } = components;
|
|
64
|
-
const resolveLinkerPromise = () => setTimeout(() => awaitResponse.resolve(), 100);
|
|
65
|
-
const rejectLinkerPromise = (e) => setTimeout(() => awaitResponse.reject(e), 100);
|
|
66
|
-
router.post('/api/logs', async (ctx) => {
|
|
67
|
-
const value = (await ctx.request.json());
|
|
68
|
-
if (!value.address || !value.authChain) {
|
|
69
|
-
const errorMessage = `Invalid payload: ${Object.keys(value).join(' - ')}`;
|
|
70
|
-
logger.error(errorMessage);
|
|
71
|
-
resolveLinkerPromise();
|
|
72
|
-
return { status: 400, body: { success: false, error: errorMessage } };
|
|
73
|
-
}
|
|
74
|
-
try {
|
|
75
|
-
await signCallback(value);
|
|
76
|
-
resolveLinkerPromise();
|
|
77
|
-
return { body: { success: true } };
|
|
78
|
-
}
|
|
79
|
-
catch (e) {
|
|
80
|
-
rejectLinkerPromise(e);
|
|
81
|
-
return { status: 400, body: { success: false, error: e.message } };
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
return router;
|
|
85
|
-
}
|
|
86
|
-
async function getAddressAndSignature(components, awaitResponse, payload, sceneIdentifier, targetUrl, linkOptions, signCallback) {
|
|
87
|
-
// If DCL_PRIVATE_KEY is set, sign directly without the linker dapp
|
|
88
|
-
if (process.env.DCL_PRIVATE_KEY) {
|
|
89
|
-
const wallet = (0, account_1.createWallet)(process.env.DCL_PRIVATE_KEY);
|
|
90
|
-
const authChain = crypto_1.Authenticator.createSimpleAuthChain(payload, wallet.address, (0, crypto_2.ethSign)((0, eth_connect_1.hexToBytes)(wallet.privateKey), payload));
|
|
91
|
-
const linkerResponse = { authChain, address: wallet.address };
|
|
92
|
-
await signCallback(linkerResponse);
|
|
93
|
-
awaitResponse.resolve();
|
|
94
|
-
return {};
|
|
95
|
-
}
|
|
96
|
-
// Use linker dapp for signing - pass the payload as the rootCID
|
|
97
|
-
const { router: commonRouter } = (0, routes_1.setRoutes)(components, {
|
|
98
|
-
rootCID: payload,
|
|
99
|
-
baseParcel: '0,0',
|
|
100
|
-
parcels: ['0,0'],
|
|
101
|
-
skipValidations: true,
|
|
102
|
-
debug: !!process.env.DEBUG,
|
|
103
|
-
isWorld: true,
|
|
104
|
-
world: sceneIdentifier,
|
|
105
|
-
targetUrl,
|
|
106
|
-
action: 'view-logs'
|
|
107
|
-
});
|
|
108
|
-
const router = setServerLogsRoutes(commonRouter, components, awaitResponse, signCallback);
|
|
109
|
-
components.logger.info('You need to sign to access server logs');
|
|
110
|
-
const { program } = await (0, run_dapp_1.runDapp)(components, router, { ...linkOptions, uri: `/` });
|
|
111
|
-
return { program };
|
|
112
|
-
}
|
|
113
|
-
async function streamLogs(components, logsUrl, authHeaders) {
|
|
114
|
-
const { logger, fetch: fetchComponent } = components;
|
|
115
|
-
logger.info('\nConnecting to server logs...');
|
|
116
|
-
try {
|
|
117
|
-
const response = await fetchComponent.fetch(logsUrl, {
|
|
118
|
-
method: 'GET',
|
|
119
|
-
headers: {
|
|
120
|
-
...authHeaders,
|
|
121
|
-
Accept: 'text/event-stream'
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
if (!response.ok) {
|
|
125
|
-
const errorText = await response.text();
|
|
126
|
-
throw new Error(`Server returned ${response.status}: ${errorText}`);
|
|
127
|
-
}
|
|
128
|
-
const contentType = response.headers.get('content-type') || '';
|
|
129
|
-
if (!contentType.includes('text/event-stream') && !contentType.includes('application/stream')) {
|
|
130
|
-
throw new Error('Server does not support SSE streaming');
|
|
131
|
-
}
|
|
132
|
-
logger.info('Streaming logs in real-time (press CTRL+C to stop)');
|
|
133
|
-
if (response.body) {
|
|
134
|
-
const decoder = new TextDecoder();
|
|
135
|
-
let buffer = '';
|
|
136
|
-
for await (const chunk of response.body) {
|
|
137
|
-
buffer += decoder.decode(chunk, { stream: true });
|
|
138
|
-
const lines = buffer.split('\n');
|
|
139
|
-
buffer = lines.pop() || '';
|
|
140
|
-
for (const line of lines) {
|
|
141
|
-
if (line.trim()) {
|
|
142
|
-
formatAndPrintLog(logger, line);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
logger.info('\n======================= End Scene Logs =======================');
|
|
148
|
-
}
|
|
149
|
-
catch (e) {
|
|
150
|
-
(0, beautiful_logs_1.printError)(logger, 'Failed to stream logs:', e);
|
|
151
|
-
process.exit(1);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
function formatAndPrintLog(logger, log) {
|
|
155
|
-
// If log is a string, try to parse as JSON
|
|
156
|
-
let logObj = log;
|
|
157
|
-
if (typeof log === 'string') {
|
|
158
|
-
try {
|
|
159
|
-
logObj = JSON.parse(log);
|
|
160
|
-
}
|
|
161
|
-
catch {
|
|
162
|
-
// If not JSON, just print the string
|
|
163
|
-
logger.log(log);
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
// Extract common log fields
|
|
168
|
-
const timestamp = logObj.timestamp || logObj.time || new Date().toISOString();
|
|
169
|
-
const level = (logObj.level || logObj.severity || 'INFO').toUpperCase();
|
|
170
|
-
const message = logObj.message || logObj.msg || JSON.stringify(logObj);
|
|
171
|
-
// Format timestamp
|
|
172
|
-
const date = new Date(timestamp);
|
|
173
|
-
const formattedTime = date.toISOString().replace('T', ' ').substring(0, 19);
|
|
174
|
-
// Format the log message with timestamp
|
|
175
|
-
const formattedMessage = `[${formattedTime}] [${level}] ${message}`;
|
|
176
|
-
// Map log levels to logger methods
|
|
177
|
-
const normalizedLevel = level.toLowerCase();
|
|
178
|
-
switch (normalizedLevel) {
|
|
179
|
-
case 'error':
|
|
180
|
-
logger.error(formattedMessage);
|
|
181
|
-
break;
|
|
182
|
-
case 'warn':
|
|
183
|
-
case 'warning':
|
|
184
|
-
logger.warn(formattedMessage);
|
|
185
|
-
break;
|
|
186
|
-
case 'debug':
|
|
187
|
-
logger.debug(formattedMessage);
|
|
188
|
-
break;
|
|
189
|
-
case 'info':
|
|
190
|
-
case 'trace':
|
|
191
|
-
default:
|
|
192
|
-
logger.info(formattedMessage);
|
|
193
|
-
break;
|
|
194
|
-
}
|
|
195
|
-
// If there are additional fields, print them
|
|
196
|
-
const additionalFields = Object.keys(logObj).filter((key) => !['timestamp', 'time', 'level', 'severity', 'message', 'msg'].includes(key));
|
|
197
|
-
if (additionalFields.length > 0) {
|
|
198
|
-
const additional = {};
|
|
199
|
-
additionalFields.forEach((key) => {
|
|
200
|
-
additional[key] = logObj[key];
|
|
201
|
-
});
|
|
202
|
-
logger.log(` ${JSON.stringify(additional)}`);
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
async function main(options) {
|
|
206
|
-
const { logger } = options.components;
|
|
207
|
-
const projectRoot = (0, path_1.resolve)(process.cwd(), options.args['--dir'] || '.');
|
|
208
|
-
// Validate workspace exists
|
|
209
|
-
await (0, workspace_validations_1.getValidWorkspace)(options.components, projectRoot);
|
|
210
|
-
const sceneJson = await (0, scene_validations_1.getValidSceneJson)(options.components, projectRoot);
|
|
211
|
-
const worldName = sceneJson.worldConfiguration?.name;
|
|
212
|
-
const isWorld = !!worldName;
|
|
213
|
-
const sceneIdentifier = isWorld ? worldName : sceneJson.scene.base;
|
|
214
|
-
// Determine target URL
|
|
215
|
-
const baseURL = options.args['--target'] || DEFAULT_SERVER;
|
|
216
|
-
// Build the logs URL
|
|
217
|
-
const logsUrl = `${baseURL}/logs`;
|
|
218
|
-
logger.info(`Viewing logs for ${isWorld ? 'world' : 'scene'}: ${sceneIdentifier}`);
|
|
219
|
-
logger.info(`Target: ${logsUrl}`);
|
|
220
|
-
// Build the pathname for signing
|
|
221
|
-
const pathname = '/logs';
|
|
222
|
-
// Linker dApp options
|
|
223
|
-
const linkerPort = options.args['--port'];
|
|
224
|
-
const openBrowser = !options.args['--no-browser'];
|
|
225
|
-
const isHttps = !!options.args['--https'];
|
|
226
|
-
const linkOptions = { linkerPort, openBrowser, isHttps };
|
|
227
|
-
const awaitResponse = (0, fp_future_1.default)();
|
|
228
|
-
const timestamp = String(Date.now());
|
|
229
|
-
// Build metadata following the standard signedFetch format
|
|
230
|
-
const metadata = JSON.stringify({
|
|
231
|
-
parcel: sceneJson.scene.base,
|
|
232
|
-
realm: { serverName: isWorld ? worldName : 'main' },
|
|
233
|
-
realmName: isWorld ? worldName : 'main',
|
|
234
|
-
sceneId: isWorld ? worldName : undefined
|
|
235
|
-
});
|
|
236
|
-
// Build the payload to sign: method:path:timestamp:metadata
|
|
237
|
-
const payload = ['get', pathname, timestamp, metadata].join(':').toLowerCase();
|
|
238
|
-
let authHeaders = {};
|
|
239
|
-
const { program } = await getAddressAndSignature(options.components, awaitResponse, payload, sceneIdentifier, baseURL, linkOptions, async (linkerResponse) => {
|
|
240
|
-
authHeaders = (0, auth_chain_headers_1.createAuthChainHeaders)(linkerResponse.authChain, timestamp, metadata);
|
|
241
|
-
});
|
|
242
|
-
try {
|
|
243
|
-
await awaitResponse;
|
|
244
|
-
logger.info('Authentication successful!');
|
|
245
|
-
// Close the browser window
|
|
246
|
-
if (program) {
|
|
247
|
-
await program.stop();
|
|
248
|
-
}
|
|
249
|
-
// Start streaming logs
|
|
250
|
-
await streamLogs(options.components, logsUrl, authHeaders);
|
|
251
|
-
}
|
|
252
|
-
catch (e) {
|
|
253
|
-
(0, beautiful_logs_1.printError)(logger, 'Failed to authenticate:', e);
|
|
254
|
-
throw e;
|
|
255
|
-
}
|
|
256
|
-
finally {
|
|
257
|
-
if (program) {
|
|
258
|
-
void program.stop();
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/sdk-server-logs/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { ChildProcess } from 'child_process';
|
|
2
|
-
import { CliComponents } from '../../components';
|
|
3
|
-
import { PreviewComponents } from './types';
|
|
4
|
-
import { ProjectUnion } from '../../logic/project-validations';
|
|
5
|
-
/**
|
|
6
|
-
* Starts the Multiplayer Server process using npx to install and run in one step
|
|
7
|
-
*/
|
|
8
|
-
export declare function startHammurabiServer(components: Pick<CliComponents, 'logger'>, workingDir: string, realm: string): ChildProcess;
|
|
9
|
-
/**
|
|
10
|
-
* Spawns the multiplayer server for the project.
|
|
11
|
-
* In the auth-server SDK, all scenes are authoritative multiplayer.
|
|
12
|
-
* Uses npx to handle installation and execution in a single step (works in Electron).
|
|
13
|
-
*
|
|
14
|
-
* @param components - Preview components including logger
|
|
15
|
-
* @param project - The project to start the multiplayer server for
|
|
16
|
-
* @param realm - The realm URL to pass to the hammurabi server
|
|
17
|
-
* @returns The ChildProcess if started, undefined otherwise
|
|
18
|
-
*/
|
|
19
|
-
export declare function spawnAuthServer(components: PreviewComponents, project: ProjectUnion, realm: string): ChildProcess | undefined;
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.startHammurabiServer = startHammurabiServer;
|
|
4
|
-
exports.spawnAuthServer = spawnAuthServer;
|
|
5
|
-
const child_process_1 = require("child_process");
|
|
6
|
-
const beautiful_logs_1 = require("../../logic/beautiful-logs");
|
|
7
|
-
const log_1 = require("../../components/log");
|
|
8
|
-
const utils_1 = require("./utils");
|
|
9
|
-
const HAMMURABI_PACKAGE = '@dcl/hammurabi-server';
|
|
10
|
-
const HAMMURABI_VERSION = 'next';
|
|
11
|
-
/**
|
|
12
|
-
* Registers cleanup handlers on the global process object
|
|
13
|
-
* Returns a function to remove the handlers
|
|
14
|
-
*/
|
|
15
|
-
function registerProcessCleanup(cleanup) {
|
|
16
|
-
process.on('SIGTERM', cleanup);
|
|
17
|
-
process.on('SIGINT', cleanup);
|
|
18
|
-
process.on('exit', cleanup);
|
|
19
|
-
return () => {
|
|
20
|
-
process.off('SIGTERM', cleanup);
|
|
21
|
-
process.off('SIGINT', cleanup);
|
|
22
|
-
process.off('exit', cleanup);
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Starts the Multiplayer Server process using npx to install and run in one step
|
|
27
|
-
*/
|
|
28
|
-
function startHammurabiServer(components, workingDir, realm) {
|
|
29
|
-
(0, beautiful_logs_1.printProgressInfo)(components.logger, `Starting ${log_1.colors.bold('Multiplayer Server')} with realm: ${log_1.colors.bold(realm)}`);
|
|
30
|
-
const npxArgs = ['--yes', `${HAMMURABI_PACKAGE}@${HAMMURABI_VERSION}`, `--realm=${realm}`];
|
|
31
|
-
const npxCliJs = (0, utils_1.findNpxCliJs)();
|
|
32
|
-
// In Electron, override npm_config_prefix because npm derives its prefix from process.execPath,
|
|
33
|
-
// which points to the Electron Helper binary. This causes npm to look for a `lib/` directory
|
|
34
|
-
// inside the Helper bundle, which doesn't exist (ENOENT).
|
|
35
|
-
const env = (0, utils_1.isElectronEnvironment)() ? { ...(0, utils_1.getSpawnEnv)(), npm_config_prefix: workingDir } : (0, utils_1.getSpawnEnv)();
|
|
36
|
-
// If npx-cli.js was found, run it directly via process.execPath (node in regular env,
|
|
37
|
-
// Electron Helper with ELECTRON_RUN_AS_NODE=1 in Electron). Otherwise fall back to npx binary.
|
|
38
|
-
const hammurabiProcess = npxCliJs
|
|
39
|
-
? (0, child_process_1.spawn)(process.execPath, [npxCliJs, ...npxArgs], { cwd: workingDir, shell: false, stdio: 'inherit', env })
|
|
40
|
-
: (0, child_process_1.spawn)((0, utils_1.getNpxBin)(), npxArgs, { cwd: workingDir, shell: false, stdio: 'inherit', env });
|
|
41
|
-
hammurabiProcess.on('error', (error) => {
|
|
42
|
-
(0, beautiful_logs_1.printWarning)(components.logger, `Multiplayer Server process error: ${error.message}`);
|
|
43
|
-
});
|
|
44
|
-
// Register cleanup handlers
|
|
45
|
-
const cleanup = () => {
|
|
46
|
-
if (!hammurabiProcess.killed) {
|
|
47
|
-
hammurabiProcess.kill('SIGTERM');
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
const removeCleanup = registerProcessCleanup(cleanup);
|
|
51
|
-
hammurabiProcess.on('close', (code) => {
|
|
52
|
-
removeCleanup();
|
|
53
|
-
if (code !== 0 && code !== null) {
|
|
54
|
-
(0, beautiful_logs_1.printWarning)(components.logger, `Multiplayer Server exited with code ${code}`);
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
return hammurabiProcess;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Spawns the multiplayer server for the project.
|
|
61
|
-
* In the auth-server SDK, all scenes are authoritative multiplayer.
|
|
62
|
-
* Uses npx to handle installation and execution in a single step (works in Electron).
|
|
63
|
-
*
|
|
64
|
-
* @param components - Preview components including logger
|
|
65
|
-
* @param project - The project to start the multiplayer server for
|
|
66
|
-
* @param realm - The realm URL to pass to the hammurabi server
|
|
67
|
-
* @returns The ChildProcess if started, undefined otherwise
|
|
68
|
-
*/
|
|
69
|
-
function spawnAuthServer(components, project, realm) {
|
|
70
|
-
try {
|
|
71
|
-
return startHammurabiServer(components, project.workingDirectory, realm);
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
(0, beautiful_logs_1.printWarning)(components.logger, `Failed to start Multiplayer Server: ${error.message}`);
|
|
75
|
-
return undefined;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=hammurabi-server.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hammurabi-server.js","sourceRoot":"","sources":["../../../src/commands/start/hammurabi-server.ts"],"names":[],"mappings":"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"}
|