@quenty/studio-bridge 0.15.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/src/commands/process/launch/launch.d.ts +4 -0
- package/dist/src/commands/process/launch/launch.d.ts.map +1 -1
- package/dist/src/commands/process/launch/launch.js +18 -3
- package/dist/src/commands/process/launch/launch.js.map +1 -1
- package/dist/src/commands/process/launch/launch.test.js +20 -3
- package/dist/src/commands/process/launch/launch.test.js.map +1 -1
- package/dist/src/process/studio-process-manager.d.ts +21 -2
- package/dist/src/process/studio-process-manager.d.ts.map +1 -1
- package/dist/src/process/studio-process-manager.js +32 -5
- package/dist/src/process/studio-process-manager.js.map +1 -1
- package/dist/src/process/studio-process-manager.test.js +18 -1
- package/dist/src/process/studio-process-manager.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/commands/process/launch/launch.test.ts +26 -3
- package/src/commands/process/launch/launch.ts +28 -5
- package/src/process/studio-process-manager.test.ts +36 -1
- package/src/process/studio-process-manager.ts +44 -5
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [0.16.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/studio-bridge@0.15.0...@quenty/studio-bridge@0.16.0) (2026-07-12)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- Launch with placeId + universeId options ([#723](https://github.com/Quenty/NevermoreEngine/issues/723)) ([5e2da87](https://github.com/Quenty/NevermoreEngine/commit/5e2da87544c5b587bdc2e919b4805a20381c57f1))
|
|
11
|
+
|
|
6
12
|
# [0.15.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/studio-bridge@0.14.0...@quenty/studio-bridge@0.15.0) (2026-05-26)
|
|
7
13
|
|
|
8
14
|
**Note:** Version bump only for package @quenty/studio-bridge
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export interface LaunchOptions {
|
|
5
5
|
placePath?: string;
|
|
6
|
+
placeId?: number;
|
|
7
|
+
universeId?: number;
|
|
6
8
|
}
|
|
7
9
|
export interface LaunchResult {
|
|
8
10
|
launched: boolean;
|
|
@@ -11,6 +13,8 @@ export interface LaunchResult {
|
|
|
11
13
|
export declare function launchHandlerAsync(options?: LaunchOptions): Promise<LaunchResult>;
|
|
12
14
|
interface LaunchArgs {
|
|
13
15
|
place?: string;
|
|
16
|
+
placeId?: number;
|
|
17
|
+
universeId?: number;
|
|
14
18
|
}
|
|
15
19
|
export declare const launchCommand: import("../../framework/define-command.js").CommandDefinition<LaunchArgs, LaunchResult>;
|
|
16
20
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../../../../src/commands/process/launch/launch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../../../../src/commands/process/launch/launch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,kBAAkB,CACtC,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAYvB;AAED,UAAU,UAAU;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,yFA0BxB,CAAC"}
|
|
@@ -5,10 +5,13 @@ import { defineCommand } from '../../framework/define-command.js';
|
|
|
5
5
|
import { arg } from '../../framework/arg-builder.js';
|
|
6
6
|
import { launchStudioAsync } from '../../../process/studio-process-manager.js';
|
|
7
7
|
export async function launchHandlerAsync(options = {}) {
|
|
8
|
-
await launchStudioAsync(options
|
|
8
|
+
await launchStudioAsync(options);
|
|
9
|
+
const target = options.placeId != null
|
|
10
|
+
? `place ${options.placeId}${options.universeId != null ? ` (universe ${options.universeId})` : ''}`
|
|
11
|
+
: options.placePath;
|
|
9
12
|
return {
|
|
10
13
|
launched: true,
|
|
11
|
-
summary: `Studio launched${
|
|
14
|
+
summary: `Studio launched${target ? ` with ${target}` : ''}`,
|
|
12
15
|
};
|
|
13
16
|
}
|
|
14
17
|
export const launchCommand = defineCommand({
|
|
@@ -20,7 +23,19 @@ export const launchCommand = defineCommand({
|
|
|
20
23
|
scope: 'standalone',
|
|
21
24
|
args: {
|
|
22
25
|
place: arg.option({ description: 'Path to a .rbxl place file' }),
|
|
26
|
+
placeId: arg.option({
|
|
27
|
+
description: 'Cloud place id to open in Studio (edit mode, via the EditPlace deep-link)',
|
|
28
|
+
type: 'number',
|
|
29
|
+
}),
|
|
30
|
+
universeId: arg.option({
|
|
31
|
+
description: 'Cloud universe id for the place (recommended with --place-id)',
|
|
32
|
+
type: 'number',
|
|
33
|
+
}),
|
|
23
34
|
},
|
|
24
|
-
handler: async (args) => launchHandlerAsync({
|
|
35
|
+
handler: async (args) => launchHandlerAsync({
|
|
36
|
+
placePath: args.place,
|
|
37
|
+
placeId: args.placeId,
|
|
38
|
+
universeId: args.universeId,
|
|
39
|
+
}),
|
|
25
40
|
});
|
|
26
41
|
//# sourceMappingURL=launch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../../../../../src/commands/process/launch/launch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../../../../../src/commands/process/launch/launch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAa/E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAyB,EAAE;IAE3B,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,MAAM,GACV,OAAO,CAAC,OAAO,IAAI,IAAI;QACrB,CAAC,CAAC,SAAS,OAAO,CAAC,OAAO,GACtB,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,cAAc,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EACrE,EAAE;QACJ,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IACxB,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,kBAAkB,MAAM,CAAC,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;KAC7D,CAAC;AACJ,CAAC;AAQD,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAA2B;IACnE,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,sBAAsB;IACnC,QAAQ,EAAE,gBAAgB;IAC1B,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE;QACJ,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC;QAChE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC;YAClB,WAAW,EACT,2EAA2E;YAC7E,IAAI,EAAE,QAAQ;SACf,CAAC;QACF,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC;YACrB,WAAW,EACT,+DAA+D;YACjE,IAAI,EAAE,QAAQ;SACf,CAAC;KACH;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACtB,kBAAkB,CAAC;QACjB,SAAS,EAAE,IAAI,CAAC,KAAK;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC;CACL,CAAC,CAAC"}
|
|
@@ -22,13 +22,30 @@ describe('launchHandlerAsync', () => {
|
|
|
22
22
|
const result = await launchHandlerAsync({
|
|
23
23
|
placePath: '/tmp/game.rbxl',
|
|
24
24
|
});
|
|
25
|
-
expect(launchStudioAsync).toHaveBeenCalledWith(
|
|
25
|
+
expect(launchStudioAsync).toHaveBeenCalledWith({
|
|
26
|
+
placePath: '/tmp/game.rbxl',
|
|
27
|
+
});
|
|
26
28
|
expect(result.launched).toBe(true);
|
|
27
29
|
expect(result.summary).toBe('Studio launched with /tmp/game.rbxl');
|
|
28
30
|
});
|
|
29
|
-
it('passes
|
|
31
|
+
it('passes cloud place + universe ids to launchStudioAsync', async () => {
|
|
32
|
+
const result = await launchHandlerAsync({
|
|
33
|
+
placeId: 84760113521251,
|
|
34
|
+
universeId: 9893751595,
|
|
35
|
+
});
|
|
36
|
+
expect(launchStudioAsync).toHaveBeenCalledWith({
|
|
37
|
+
placeId: 84760113521251,
|
|
38
|
+
universeId: 9893751595,
|
|
39
|
+
});
|
|
40
|
+
expect(result.summary).toBe('Studio launched with place 84760113521251 (universe 9893751595)');
|
|
41
|
+
});
|
|
42
|
+
it('summarizes a cloud place id without a universe id', async () => {
|
|
43
|
+
const result = await launchHandlerAsync({ placeId: 123 });
|
|
44
|
+
expect(result.summary).toBe('Studio launched with place 123');
|
|
45
|
+
});
|
|
46
|
+
it('passes an empty options object when nothing is specified', async () => {
|
|
30
47
|
await launchHandlerAsync({});
|
|
31
|
-
expect(launchStudioAsync).toHaveBeenCalledWith(
|
|
48
|
+
expect(launchStudioAsync).toHaveBeenCalledWith({});
|
|
32
49
|
});
|
|
33
50
|
it('returns correct summary without place path', async () => {
|
|
34
51
|
const result = await launchHandlerAsync({});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.test.js","sourceRoot":"","sources":["../../../../../src/commands/process/launch/launch.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,wDAAwD;AACxD,EAAE,CAAC,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3D,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;QAC3C,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;KACnB,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAE/E,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAE1C,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;YACtC,SAAS,EAAE,gBAAgB;SAC5B,CAAC,CAAC;QAEH,MAAM,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"launch.test.js","sourceRoot":"","sources":["../../../../../src/commands/process/launch/launch.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,wDAAwD;AACxD,EAAE,CAAC,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3D,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;QAC3C,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;KACnB,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAE/E,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAE1C,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;YACtC,SAAS,EAAE,gBAAgB;SAC5B,CAAC,CAAC;QAEH,MAAM,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC;YAC7C,SAAS,EAAE,gBAAgB;SAC5B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;YACtC,OAAO,EAAE,cAAc;YACvB,UAAU,EAAE,UAAU;SACvB,CAAC,CAAC;QAEH,MAAM,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC;YAC7C,OAAO,EAAE,cAAc;YACvB,UAAU,EAAE,UAAU;SACvB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CACzB,iEAAiE,CAClE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAE1D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAE7B,MAAM,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAE5C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,qBAAqB,CAChD,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAC9B,CAAC;QAEF,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -18,12 +18,31 @@ export interface StudioProcess {
|
|
|
18
18
|
/** Kill the Studio process (idempotent, best-effort) */
|
|
19
19
|
killAsync: () => Promise<void>;
|
|
20
20
|
}
|
|
21
|
+
export interface LaunchStudioOptions {
|
|
22
|
+
/** Path to a local `.rbxl` place file to open. */
|
|
23
|
+
placePath?: string;
|
|
24
|
+
/** Cloud place id to open in Studio (via the `EditPlace` deep-link). */
|
|
25
|
+
placeId?: number;
|
|
26
|
+
/** Cloud universe id for the place (recommended alongside `placeId`). */
|
|
27
|
+
universeId?: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Resolve the single argument handed to `RobloxStudioBeta`: a cloud
|
|
31
|
+
* `roblox-studio:` EditPlace deep-link when a `placeId` is given, otherwise
|
|
32
|
+
* the local `.rbxl` path (or `''` to open Studio with no place). The deep-link
|
|
33
|
+
* is exactly what the OS protocol handler passes to Studio, so Studio opens the
|
|
34
|
+
* cloud place in edit mode using the current logged-in session.
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildStudioLaunchArg(options: LaunchStudioOptions): string;
|
|
21
37
|
/**
|
|
22
|
-
* Launch Roblox Studio with
|
|
38
|
+
* Launch Roblox Studio with a local place file or a cloud place.
|
|
39
|
+
*
|
|
40
|
+
* Accepts a `LaunchStudioOptions` object (`{ placePath | placeId, universeId }`)
|
|
41
|
+
* or, for backward compatibility, a bare `.rbxl` path string.
|
|
23
42
|
*
|
|
24
43
|
* Uses Node's built-in `spawn` with `detached: true` + `unref()` so that
|
|
25
44
|
* Studio survives after the CLI process exits. execa's internal Job Object
|
|
26
45
|
* on Windows kills children on parent exit, so we avoid it here.
|
|
27
46
|
*/
|
|
28
|
-
export declare function launchStudioAsync(
|
|
47
|
+
export declare function launchStudioAsync(options?: LaunchStudioOptions | string): Promise<StudioProcess>;
|
|
29
48
|
//# sourceMappingURL=studio-process-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"studio-process-manager.d.ts","sourceRoot":"","sources":["../../../src/process/studio-process-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAIzD;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAS3D;AA0DD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAgC1C;AAED,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,OAAO,EAAE,YAAY,CAAC;IACtB,wDAAwD;IACxD,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,
|
|
1
|
+
{"version":3,"file":"studio-process-manager.d.ts","sourceRoot":"","sources":["../../../src/process/studio-process-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAIzD;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAS3D;AA0DD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAgC1C;AAED,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,OAAO,EAAE,YAAY,CAAC;IACtB,wDAAwD;IACxD,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAczE;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,mBAAmB,GAAG,MAAW,GACzC,OAAO,CAAC,aAAa,CAAC,CAyCxB"}
|
|
@@ -100,19 +100,46 @@ export function findPluginsFolder() {
|
|
|
100
100
|
throw new Error(`Unsupported platform: ${process.platform}`);
|
|
101
101
|
}
|
|
102
102
|
/**
|
|
103
|
-
*
|
|
103
|
+
* Resolve the single argument handed to `RobloxStudioBeta`: a cloud
|
|
104
|
+
* `roblox-studio:` EditPlace deep-link when a `placeId` is given, otherwise
|
|
105
|
+
* the local `.rbxl` path (or `''` to open Studio with no place). The deep-link
|
|
106
|
+
* is exactly what the OS protocol handler passes to Studio, so Studio opens the
|
|
107
|
+
* cloud place in edit mode using the current logged-in session.
|
|
108
|
+
*/
|
|
109
|
+
export function buildStudioLaunchArg(options) {
|
|
110
|
+
if (options.placeId != null) {
|
|
111
|
+
const parts = [
|
|
112
|
+
'roblox-studio:1',
|
|
113
|
+
'launchmode:edit',
|
|
114
|
+
'task:EditPlace',
|
|
115
|
+
`placeId:${options.placeId}`,
|
|
116
|
+
];
|
|
117
|
+
if (options.universeId != null) {
|
|
118
|
+
parts.push(`universeId:${options.universeId}`);
|
|
119
|
+
}
|
|
120
|
+
return parts.join('+');
|
|
121
|
+
}
|
|
122
|
+
return options.placePath ?? '';
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Launch Roblox Studio with a local place file or a cloud place.
|
|
126
|
+
*
|
|
127
|
+
* Accepts a `LaunchStudioOptions` object (`{ placePath | placeId, universeId }`)
|
|
128
|
+
* or, for backward compatibility, a bare `.rbxl` path string.
|
|
104
129
|
*
|
|
105
130
|
* Uses Node's built-in `spawn` with `detached: true` + `unref()` so that
|
|
106
131
|
* Studio survives after the CLI process exits. execa's internal Job Object
|
|
107
132
|
* on Windows kills children on parent exit, so we avoid it here.
|
|
108
133
|
*/
|
|
109
|
-
export async function launchStudioAsync(
|
|
134
|
+
export async function launchStudioAsync(options = {}) {
|
|
135
|
+
const resolved = typeof options === 'string' ? { placePath: options } : options;
|
|
136
|
+
const launchArg = buildStudioLaunchArg(resolved);
|
|
110
137
|
if (process.platform === 'linux') {
|
|
111
|
-
return launchStudioLinuxAsync(
|
|
138
|
+
return launchStudioLinuxAsync(launchArg);
|
|
112
139
|
}
|
|
113
140
|
const studioExe = await findStudioPathAsync();
|
|
114
|
-
OutputHelper.verbose(`[StudioBridge] ${studioExe} "${
|
|
115
|
-
const proc = spawn(studioExe,
|
|
141
|
+
OutputHelper.verbose(`[StudioBridge] ${studioExe} "${launchArg}"`);
|
|
142
|
+
const proc = spawn(studioExe, launchArg ? [launchArg] : [], {
|
|
116
143
|
detached: true,
|
|
117
144
|
stdio: 'ignore',
|
|
118
145
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"studio-process-manager.js","sourceRoot":"","sources":["../../../src/process/studio-process-manager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"studio-process-manager.js","sourceRoot":"","sources":["../../../src/process/studio-process-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
import { describe, it, expect, afterEach } from 'vitest';
|
|
2
|
-
import { findPluginsFolder } from './studio-process-manager.js';
|
|
2
|
+
import { findPluginsFolder, buildStudioLaunchArg, } from './studio-process-manager.js';
|
|
3
|
+
describe('buildStudioLaunchArg', () => {
|
|
4
|
+
it('builds an EditPlace deep-link from place + universe ids', () => {
|
|
5
|
+
expect(buildStudioLaunchArg({ placeId: 84760113521251, universeId: 9893751595 })).toBe('roblox-studio:1+launchmode:edit+task:EditPlace+placeId:84760113521251+universeId:9893751595');
|
|
6
|
+
});
|
|
7
|
+
it('omits universeId from the deep-link when not provided', () => {
|
|
8
|
+
expect(buildStudioLaunchArg({ placeId: 123 })).toBe('roblox-studio:1+launchmode:edit+task:EditPlace+placeId:123');
|
|
9
|
+
});
|
|
10
|
+
it('prefers the cloud place id over a local place path', () => {
|
|
11
|
+
expect(buildStudioLaunchArg({ placeId: 5, placePath: '/tmp/game.rbxl' })).toContain('placeId:5');
|
|
12
|
+
});
|
|
13
|
+
it('returns the local place path when no place id is given', () => {
|
|
14
|
+
expect(buildStudioLaunchArg({ placePath: '/tmp/game.rbxl' })).toBe('/tmp/game.rbxl');
|
|
15
|
+
});
|
|
16
|
+
it('returns an empty string for no place at all', () => {
|
|
17
|
+
expect(buildStudioLaunchArg({})).toBe('');
|
|
18
|
+
});
|
|
19
|
+
});
|
|
3
20
|
describe('findPluginsFolder', () => {
|
|
4
21
|
const originalPlatform = process.platform;
|
|
5
22
|
const originalEnv = { ...process.env };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"studio-process-manager.test.js","sourceRoot":"","sources":["../../../src/process/studio-process-manager.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"studio-process-manager.test.js","sourceRoot":"","sources":["../../../src/process/studio-process-manager.test.ts"],"names":[],"mappings":"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"}
|