@quenty/studio-bridge 0.1.1-canary.656.73a74af.0 → 0.2.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 +37 -1
- package/build-scripts/transform-add-session-attribute.luau +17 -0
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +0 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/plugin/plugin-injector.d.ts.map +1 -1
- package/dist/src/plugin/plugin-injector.js +11 -34
- package/dist/src/plugin/plugin-injector.js.map +1 -1
- package/dist/src/process/index.d.ts +0 -2
- package/dist/src/process/index.d.ts.map +1 -1
- package/dist/src/process/index.js +0 -1
- package/dist/src/process/index.js.map +1 -1
- package/dist/src/server/studio-bridge-server.d.ts +1 -1
- package/dist/src/server/studio-bridge-server.d.ts.map +1 -1
- package/dist/src/server/studio-bridge-server.js +38 -12
- package/dist/src/server/studio-bridge-server.js.map +1 -1
- package/dist/src/server/studio-bridge-server.test.js +94 -19
- package/dist/src/server/studio-bridge-server.test.js.map +1 -1
- package/dist/src/server/web-socket-protocol.d.ts +7 -1
- package/dist/src/server/web-socket-protocol.d.ts.map +1 -1
- package/dist/src/server/web-socket-protocol.js +8 -4
- package/dist/src/server/web-socket-protocol.js.map +1 -1
- package/dist/src/server/web-socket-protocol.smoke.test.js +18 -9
- package/dist/src/server/web-socket-protocol.smoke.test.js.map +1 -1
- package/dist/src/server/web-socket-protocol.test.js +47 -5
- package/dist/src/server/web-socket-protocol.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/src/index.ts +0 -1
- package/src/plugin/plugin-injector.ts +19 -45
- package/src/process/index.ts +0 -3
- package/src/server/studio-bridge-server.test.ts +113 -21
- package/src/server/studio-bridge-server.ts +66 -15
- package/src/server/web-socket-protocol.smoke.test.ts +18 -9
- package/src/server/web-socket-protocol.test.ts +61 -5
- package/src/server/web-socket-protocol.ts +15 -4
- package/templates/default-test-place/default.project.json +1 -1
- package/templates/studio-bridge-plugin/default.project.json +1 -1
- package/templates/studio-bridge-plugin/{plugin-template.server.lua → src/StudioBridgePlugin.server.lua} +18 -4
- package/dist/src/process/place-builder.d.ts +0 -16
- package/dist/src/process/place-builder.d.ts.map +0 -1
- package/dist/src/process/place-builder.js +0 -45
- package/dist/src/process/place-builder.js.map +0 -1
- package/src/process/place-builder.ts +0 -63
package/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,13 @@
|
|
|
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
|
-
|
|
6
|
+
# 0.2.0 (2026-02-17)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* Fix spinner design showing stuff ([814cd91](https://github.com/Quenty/NevermoreEngine/commit/814cd915358079f7d628a9739d0cd56e472b52f6))
|
|
12
|
+
* Local testing works consistently and in batch mode ([67d6ba1](https://github.com/Quenty/NevermoreEngine/commit/67d6ba1d3625dc76f7a54ac13e75da2cc82ccc64))
|
|
7
13
|
|
|
8
14
|
|
|
9
15
|
### Features
|
|
@@ -13,3 +19,33 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
13
19
|
* Refactor studio bridge ([8afe642](https://github.com/Quenty/NevermoreEngine/commit/8afe6424b6635eaa0155734c085934051de88da6))
|
|
14
20
|
* Use reporting system for studio bridge too (a bit ugly) ([20b675c](https://github.com/Quenty/NevermoreEngine/commit/20b675cb22cb46c88b556f4afdda2700dd1258dd))
|
|
15
21
|
* Use yargs in studio-bridge cli ([2203601](https://github.com/Quenty/NevermoreEngine/commit/220360168e79d57cd576150134949d8f2325a38f))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# v0.2.0 (Tue Feb 17 2026)
|
|
28
|
+
|
|
29
|
+
#### 🚀 Enhancement
|
|
30
|
+
|
|
31
|
+
- feat: Open cloud deploy and testing results [#656](https://github.com/Quenty/NevermoreEngine/pull/656) ([@Quenty](https://github.com/Quenty))
|
|
32
|
+
- feat: Use yargs in studio-bridge cli ([@Quenty](https://github.com/Quenty))
|
|
33
|
+
- feat: Add a terminal mode to studio-bridge for easier debugging ([@Quenty](https://github.com/Quenty))
|
|
34
|
+
- feat: Use reporting system for studio bridge too (a bit ugly) ([@Quenty](https://github.com/Quenty))
|
|
35
|
+
- feat: Refactor studio bridge ([@Quenty](https://github.com/Quenty))
|
|
36
|
+
- feat: Add initial studio-bridge package that can replace run-in-roblox ([@Quenty](https://github.com/Quenty))
|
|
37
|
+
|
|
38
|
+
#### 🐛 Bug Fix
|
|
39
|
+
|
|
40
|
+
- fix: Fix spinner design showing stuff ([@Quenty](https://github.com/Quenty))
|
|
41
|
+
- fix: Local testing works consistently and in batch mode ([@Quenty](https://github.com/Quenty))
|
|
42
|
+
- refactor: plugin-template.server.lua -> StudioBridgePlugin ([@Quenty](https://github.com/Quenty))
|
|
43
|
+
- refactor: Handle studio brdige sessions appropriately ([@Quenty](https://github.com/Quenty))
|
|
44
|
+
- refactor: Lifecycle of constructed places is handled properly ([@Quenty](https://github.com/Quenty))
|
|
45
|
+
- refactor: Better life-cycle management of the build-context ([@Quenty](https://github.com/Quenty))
|
|
46
|
+
- refactor: Remove unused code and cleanup code here ([@Quenty](https://github.com/Quenty))
|
|
47
|
+
- refactor: Unify rojo building process in plugin ([@Quenty](https://github.com/Quenty))
|
|
48
|
+
|
|
49
|
+
#### Authors: 1
|
|
50
|
+
|
|
51
|
+
- James Onnen ([@Quenty](https://github.com/Quenty))
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
local fs = require("@lune/fs")
|
|
2
|
+
local process = require("@lune/process")
|
|
3
|
+
local roblox = require("@lune/roblox")
|
|
4
|
+
|
|
5
|
+
local inputPath = process.args[1]
|
|
6
|
+
local outputPath = process.args[2]
|
|
7
|
+
local sessionId = process.args[3]
|
|
8
|
+
|
|
9
|
+
if not inputPath or not outputPath or not sessionId then
|
|
10
|
+
process.exit(1)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
local contents = fs.readFile(inputPath)
|
|
14
|
+
local game = roblox.deserializePlace(contents)
|
|
15
|
+
game:GetService("Workspace"):SetAttribute("StudioBridgeSessionId", sessionId)
|
|
16
|
+
local output = roblox.serializePlace(game)
|
|
17
|
+
fs.writeFile(outputPath, output)
|
package/dist/src/index.d.ts
CHANGED
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
export { StudioBridgeServer as StudioBridge } from './server/studio-bridge-server.js';
|
|
13
13
|
export type { StudioBridgeServerOptions, ExecuteOptions, StudioBridgeResult, StudioBridgePhase, } from './server/studio-bridge-server.js';
|
|
14
14
|
export type { OutputLevel } from './server/web-socket-protocol.js';
|
|
15
|
-
export { buildMinimalPlaceAsync } from './process/place-builder.js';
|
|
16
15
|
export { findStudioPathAsync, findPluginsFolder, launchStudioAsync, } from './process/studio-process-manager.js';
|
|
17
16
|
export { injectPluginAsync } from './plugin/plugin-injector.js';
|
|
18
17
|
export { encodeMessage, decodePluginMessage, } from './server/web-socket-protocol.js';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,IAAI,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACtF,YAAY,EACV,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGnE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,IAAI,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACtF,YAAY,EACV,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGnE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,aAAa,EACb,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,iCAAiC,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
*/
|
|
12
12
|
export { StudioBridgeServer as StudioBridge } from './server/studio-bridge-server.js';
|
|
13
13
|
// Lower-level exports for advanced usage / testing
|
|
14
|
-
export { buildMinimalPlaceAsync } from './process/place-builder.js';
|
|
15
14
|
export { findStudioPathAsync, findPluginsFolder, launchStudioAsync, } from './process/studio-process-manager.js';
|
|
16
15
|
export { injectPluginAsync } from './plugin/plugin-injector.js';
|
|
17
16
|
export { encodeMessage, decodePluginMessage, } from './server/web-socket-protocol.js';
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,IAAI,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAStF,mDAAmD;AACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,IAAI,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAStF,mDAAmD;AACnD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,aAAa,EACb,mBAAmB,GACpB,MAAM,iCAAiC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-injector.d.ts","sourceRoot":"","sources":["../../../src/plugin/plugin-injector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"plugin-injector.d.ts","sourceRoot":"","sources":["../../../src/plugin/plugin-injector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,cAAc,CAAC,CA8BzB"}
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
* Handles building and injecting the Studio plugin .rbxm file into Roblox
|
|
3
3
|
* Studio's plugins folder via rojo, and cleaning it up afterwards.
|
|
4
4
|
*/
|
|
5
|
-
import
|
|
6
|
-
import * as path from 'path';
|
|
7
|
-
import { BuildContext, rojoBuildAsync, substituteTemplate, resolveTemplatePath, } from '@quenty/nevermore-template-helpers';
|
|
5
|
+
import { BuildContext, TemplateHelper, resolveTemplatePath, } from '@quenty/nevermore-template-helpers';
|
|
8
6
|
import { findPluginsFolder } from '../process/studio-process-manager.js';
|
|
9
7
|
const templateDir = resolveTemplatePath(import.meta.url, 'studio-bridge-plugin');
|
|
10
8
|
/**
|
|
@@ -12,45 +10,24 @@ const templateDir = resolveTemplatePath(import.meta.url, 'studio-bridge-plugin')
|
|
|
12
10
|
*/
|
|
13
11
|
export async function injectPluginAsync(options) {
|
|
14
12
|
const { port, sessionId } = options;
|
|
15
|
-
const
|
|
16
|
-
const luaSource = substituteTemplate(luaTemplate, {
|
|
17
|
-
PORT: String(port),
|
|
18
|
-
SESSION_ID: sessionId,
|
|
19
|
-
});
|
|
20
|
-
// Build plugin model in temp dir, output directly to Studio plugins folder
|
|
21
|
-
const ctx = await BuildContext.createAsync({
|
|
22
|
-
mode: 'temp',
|
|
13
|
+
const buildContext = await BuildContext.createAsync({
|
|
23
14
|
prefix: 'studio-bridge-plugin-',
|
|
24
15
|
});
|
|
25
16
|
try {
|
|
26
|
-
await
|
|
27
|
-
// Copy the project JSON from the template dir into the temp build dir
|
|
28
|
-
const projectJson = await fs.readFile(path.join(templateDir, 'default.project.json'), 'utf-8');
|
|
29
|
-
const projectPath = await ctx.writeFileAsync('default.project.json', projectJson);
|
|
17
|
+
await TemplateHelper.createDirectoryContentsAsync(templateDir, buildContext.buildDir, { PORT: String(port), SESSION_ID: sessionId }, false);
|
|
30
18
|
const pluginFileName = `studio-bridge-${sessionId}.rbxm`;
|
|
31
|
-
await rojoBuildAsync({
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
let cleaned = false;
|
|
19
|
+
const pluginPath = await buildContext.rojoBuildAsync({
|
|
20
|
+
projectPath: buildContext.resolvePath('default.project.json'),
|
|
21
|
+
plugin: pluginFileName,
|
|
22
|
+
pluginsFolder: findPluginsFolder(),
|
|
23
|
+
});
|
|
37
24
|
return {
|
|
38
|
-
pluginPath,
|
|
39
|
-
cleanupAsync:
|
|
40
|
-
if (cleaned)
|
|
41
|
-
return;
|
|
42
|
-
cleaned = true;
|
|
43
|
-
try {
|
|
44
|
-
await fs.unlink(pluginPath);
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
// File may already be gone
|
|
48
|
-
}
|
|
49
|
-
},
|
|
25
|
+
pluginPath: pluginPath,
|
|
26
|
+
cleanupAsync: () => buildContext.cleanupAsync(),
|
|
50
27
|
};
|
|
51
28
|
}
|
|
52
29
|
catch (err) {
|
|
53
|
-
await
|
|
30
|
+
await buildContext.cleanupAsync();
|
|
54
31
|
throw err;
|
|
55
32
|
}
|
|
56
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-injector.js","sourceRoot":"","sources":["../../../src/plugin/plugin-injector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"plugin-injector.js","sourceRoot":"","sources":["../../../src/plugin/plugin-injector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,YAAY,EACZ,cAAc,EACd,mBAAmB,GACpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,MAAM,WAAW,GAAG,mBAAmB,CACrC,MAAM,CAAC,IAAI,CAAC,GAAG,EACf,sBAAsB,CACvB,CAAC;AAcF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA4B;IAE5B,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAEpC,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC;QAClD,MAAM,EAAE,uBAAuB;KAChC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,4BAA4B,CAC/C,WAAW,EACX,YAAY,CAAC,QAAQ,EACrB,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAC7C,KAAK,CACN,CAAC;QAEF,MAAM,cAAc,GAAG,iBAAiB,SAAS,OAAO,CAAC;QACzD,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC;YACnD,WAAW,EAAE,YAAY,CAAC,WAAW,CAAC,sBAAsB,CAAC;YAC7D,MAAM,EAAE,cAAc;YACtB,aAAa,EAAE,iBAAiB,EAAE;SACnC,CAAC,CAAC;QAEH,OAAO;YACL,UAAU,EAAE,UAAW;YACvB,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE;SAChD,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
1
|
export { findStudioPathAsync, findPluginsFolder, launchStudioAsync, } from './studio-process-manager.js';
|
|
2
2
|
export type { StudioProcess } from './studio-process-manager.js';
|
|
3
|
-
export { buildMinimalPlaceAsync } from './place-builder.js';
|
|
4
|
-
export type { BuiltPlace } from './place-builder.js';
|
|
5
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/process/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/process/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/process/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/process/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"studio-bridge-server.d.ts","sourceRoot":"","sources":["../../../src/server/studio-bridge-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"studio-bridge-server.d.ts","sourceRoot":"","sources":["../../../src/server/studio-bridge-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH,OAAO,EACL,KAAK,WAAW,EAGjB,MAAM,0BAA0B,CAAC;AAyBlC,MAAM,MAAM,iBAAiB,GACzB,UAAU,GACV,WAAW,GACX,YAAY,GACZ,WAAW,GACX,MAAM,CAAC;AAEX,MAAM,WAAW,yBAAyB;IACxC;gEAC4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAoCD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAuB;IAErC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmD;IAC5E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAEhD,OAAO,CAAC,IAAI,CAA8B;IAC1C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,gBAAgB,CAAwB;gBAEpC,OAAO,GAAE,yBAA8B;IAWnD;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA6EjC;;;OAGG;IACG,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA2CxE;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BhC,OAAO,CAAC,sBAAsB;IAwF9B,OAAO,CAAC,2BAA2B;YA6GrB,sBAAsB;CAiCrC"}
|
|
@@ -9,12 +9,15 @@
|
|
|
9
9
|
* await server.stopAsync();
|
|
10
10
|
*/
|
|
11
11
|
import { randomUUID } from 'crypto';
|
|
12
|
+
import * as path from 'path';
|
|
12
13
|
import { WebSocketServer } from 'ws';
|
|
13
14
|
import { OutputHelper } from '@quenty/cli-output-helpers';
|
|
15
|
+
import { BuildContext, resolvePackagePath, resolveTemplatePath, } from '@quenty/nevermore-template-helpers';
|
|
14
16
|
import { encodeMessage, decodePluginMessage, } from './web-socket-protocol.js';
|
|
15
17
|
import { injectPluginAsync, } from '../plugin/plugin-injector.js';
|
|
16
18
|
import { launchStudioAsync, } from '../process/studio-process-manager.js';
|
|
17
|
-
|
|
19
|
+
const defaultProjectPath = resolveTemplatePath(import.meta.url, path.join('default-test-place', 'default.project.json'));
|
|
20
|
+
const sessionAttributeTransformScript = resolvePackagePath(import.meta.url, 'build-scripts', 'transform-add-session-attribute.luau');
|
|
18
21
|
// ---------------------------------------------------------------------------
|
|
19
22
|
// Implementation
|
|
20
23
|
// ---------------------------------------------------------------------------
|
|
@@ -45,7 +48,7 @@ export class StudioBridgeServer {
|
|
|
45
48
|
_wss;
|
|
46
49
|
_pluginHandle;
|
|
47
50
|
_studioProc;
|
|
48
|
-
|
|
51
|
+
_placeBuildContext;
|
|
49
52
|
_connectedClient;
|
|
50
53
|
constructor(options = {}) {
|
|
51
54
|
this._sessionId = options.sessionId ?? randomUUID();
|
|
@@ -66,15 +69,26 @@ export class StudioBridgeServer {
|
|
|
66
69
|
}
|
|
67
70
|
this._state = 'starting';
|
|
68
71
|
try {
|
|
72
|
+
this._placeBuildContext = await BuildContext.createAsync({
|
|
73
|
+
prefix: 'studio-bridge-',
|
|
74
|
+
});
|
|
69
75
|
// 0. Build a minimal place if none was provided
|
|
70
76
|
let placePath = this._placePath;
|
|
71
77
|
if (!placePath) {
|
|
72
78
|
this._onPhase?.('building');
|
|
73
|
-
|
|
74
|
-
|
|
79
|
+
const builtPlacePath = this._placeBuildContext.resolvePath('minimal.rbxl');
|
|
80
|
+
await this._placeBuildContext.rojoBuildAsync({
|
|
81
|
+
projectPath: defaultProjectPath,
|
|
82
|
+
output: builtPlacePath,
|
|
83
|
+
});
|
|
84
|
+
placePath = builtPlacePath;
|
|
75
85
|
}
|
|
76
|
-
//
|
|
77
|
-
|
|
86
|
+
// 0b. Stamp session ID attribute onto the place file
|
|
87
|
+
const transformedPlacePath = this._placeBuildContext.resolvePath('studio-bridge-with-session-id.rbxl');
|
|
88
|
+
await this._placeBuildContext.executeLuneTransformScriptAsync(sessionAttributeTransformScript, placePath, transformedPlacePath, this._sessionId);
|
|
89
|
+
placePath = transformedPlacePath;
|
|
90
|
+
// 1. Start WebSocket server (unique path rejects wrong connections at HTTP upgrade level)
|
|
91
|
+
this._wss = new WebSocketServer({ port: 0, path: `/${this._sessionId}` });
|
|
78
92
|
const port = await startWsServerAsync(this._wss);
|
|
79
93
|
OutputHelper.verbose(`[StudioBridge] WebSocket server listening on port ${port}`);
|
|
80
94
|
// 2. Inject plugin (no scriptContent — scripts are sent via execute messages)
|
|
@@ -118,6 +132,7 @@ export class StudioBridgeServer {
|
|
|
118
132
|
// Send execute message
|
|
119
133
|
this._connectedClient.send(encodeMessage({
|
|
120
134
|
type: 'execute',
|
|
135
|
+
sessionId: this._sessionId,
|
|
121
136
|
payload: { script: options.scriptContent },
|
|
122
137
|
}));
|
|
123
138
|
// Wait for result
|
|
@@ -150,7 +165,11 @@ export class StudioBridgeServer {
|
|
|
150
165
|
// Send shutdown to connected client
|
|
151
166
|
if (this._connectedClient) {
|
|
152
167
|
try {
|
|
153
|
-
this._connectedClient.send(encodeMessage({
|
|
168
|
+
this._connectedClient.send(encodeMessage({
|
|
169
|
+
type: 'shutdown',
|
|
170
|
+
sessionId: this._sessionId,
|
|
171
|
+
payload: {},
|
|
172
|
+
}));
|
|
154
173
|
}
|
|
155
174
|
catch {
|
|
156
175
|
// ignore
|
|
@@ -179,14 +198,17 @@ export class StudioBridgeServer {
|
|
|
179
198
|
if (!msg || msg.type !== 'hello') {
|
|
180
199
|
return;
|
|
181
200
|
}
|
|
182
|
-
if (msg.
|
|
183
|
-
|
|
201
|
+
if (msg.sessionId !== this._sessionId ||
|
|
202
|
+
msg.payload.sessionId !== this._sessionId) {
|
|
203
|
+
OutputHelper.verbose(`[StudioBridge] Rejecting hello with wrong session ID`);
|
|
204
|
+
ws.close();
|
|
184
205
|
return;
|
|
185
206
|
}
|
|
186
207
|
// Handshake accepted
|
|
187
208
|
OutputHelper.verbose('[StudioBridge] Handshake accepted');
|
|
188
209
|
ws.send(encodeMessage({
|
|
189
210
|
type: 'welcome',
|
|
211
|
+
sessionId: this._sessionId,
|
|
190
212
|
payload: { sessionId: this._sessionId },
|
|
191
213
|
}));
|
|
192
214
|
ws.off('message', onMessage);
|
|
@@ -256,6 +278,10 @@ export class StudioBridgeServer {
|
|
|
256
278
|
OutputHelper.verbose(`[StudioBridge] Ignoring malformed message: ${data.slice(0, 200)}`);
|
|
257
279
|
return;
|
|
258
280
|
}
|
|
281
|
+
if (msg.sessionId !== this._sessionId) {
|
|
282
|
+
OutputHelper.verbose(`[StudioBridge] Ignoring message with wrong session ID`);
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
259
285
|
switch (msg.type) {
|
|
260
286
|
case 'output': {
|
|
261
287
|
for (const entry of msg.payload.messages) {
|
|
@@ -317,9 +343,9 @@ export class StudioBridgeServer {
|
|
|
317
343
|
this._pluginHandle = undefined;
|
|
318
344
|
}
|
|
319
345
|
// Remove auto-built place
|
|
320
|
-
if (this.
|
|
321
|
-
await this.
|
|
322
|
-
this.
|
|
346
|
+
if (this._placeBuildContext) {
|
|
347
|
+
await this._placeBuildContext.cleanupAsync();
|
|
348
|
+
this._placeBuildContext = undefined;
|
|
323
349
|
}
|
|
324
350
|
// Close WebSocket server — terminate lingering connections first so
|
|
325
351
|
// the 'close' callback fires promptly.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"studio-bridge-server.js","sourceRoot":"","sources":["../../../src/server/studio-bridge-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"studio-bridge-server.js","sourceRoot":"","sources":["../../../src/server/studio-bridge-server.ts"],"names":[],"mappings":"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"}
|