roku-debug 0.21.18 → 0.21.20
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 +23 -0
- package/dist/LaunchConfiguration.d.ts +7 -0
- package/dist/adapters/DebugProtocolAdapter.d.ts +1 -1
- package/dist/adapters/DebugProtocolAdapter.js.map +1 -1
- package/dist/adapters/TelnetAdapter.d.ts +2 -0
- package/dist/adapters/TelnetAdapter.js +6 -0
- package/dist/adapters/TelnetAdapter.js.map +1 -1
- package/dist/adapters/customVariables/ifGetMessagePort.js +3 -2
- package/dist/adapters/customVariables/ifGetMessagePort.js.map +1 -1
- package/dist/adapters/customVariables/ifImageMetadata.js +4 -4
- package/dist/adapters/customVariables/ifImageMetadata.js.map +1 -1
- package/dist/adapters/customVariables/ifRegion.js +2 -2
- package/dist/adapters/customVariables/ifRegion.js.map +1 -1
- package/dist/adapters/customVariables/ifSGNodeChildren.js +1 -1
- package/dist/adapters/customVariables/ifSGNodeChildren.js.map +1 -1
- package/dist/adapters/customVariables/ifSGNodeField.js +1 -1
- package/dist/adapters/customVariables/ifSGNodeField.js.map +1 -1
- package/dist/adapters/customVariables/ifSGNodeHttpAgentAccess.js +3 -2
- package/dist/adapters/customVariables/ifSGNodeHttpAgentAccess.js.map +1 -1
- package/dist/adapters/customVariables/ifSGScreen.js +3 -3
- package/dist/adapters/customVariables/ifSGScreen.js.map +1 -1
- package/dist/adapters/customVariables/ifSocket.js +6 -6
- package/dist/adapters/customVariables/ifSocket.js.map +1 -1
- package/dist/adapters/customVariables/ifSprite.js +2 -2
- package/dist/adapters/customVariables/ifSprite.js.map +1 -1
- package/dist/adapters/customVariables/ifVideoPlayer.js +2 -2
- package/dist/adapters/customVariables/ifVideoPlayer.js.map +1 -1
- package/dist/adapters/customVariables/ifXMLElement.js +4 -4
- package/dist/adapters/customVariables/ifXMLElement.js.map +1 -1
- package/dist/adapters/customVariables/ifXMLList.js +4 -4
- package/dist/adapters/customVariables/ifXMLList.js.map +1 -1
- package/dist/bsc/BscProject.d.ts +27 -0
- package/dist/bsc/BscProject.js +50 -0
- package/dist/bsc/BscProject.js.map +1 -0
- package/dist/bsc/BscProjectThreaded.d.ts +45 -0
- package/dist/bsc/BscProjectThreaded.js +90 -0
- package/dist/bsc/BscProjectThreaded.js.map +1 -0
- package/dist/bsc/threading/BscProjectWorkerPool.d.ts +5 -0
- package/dist/bsc/threading/BscProjectWorkerPool.js +29 -0
- package/dist/bsc/threading/BscProjectWorkerPool.js.map +1 -0
- package/dist/bsc/threading/ThreadMessageHandler.d.ts +99 -0
- package/dist/bsc/threading/ThreadMessageHandler.js +138 -0
- package/dist/bsc/threading/ThreadMessageHandler.js.map +1 -0
- package/dist/bsc/threading/ThreadRunner.d.ts +30 -0
- package/dist/bsc/threading/ThreadRunner.js +50 -0
- package/dist/bsc/threading/ThreadRunner.js.map +1 -0
- package/dist/bsc/threading/WorkerPool.d.ts +38 -0
- package/dist/bsc/threading/WorkerPool.js +78 -0
- package/dist/bsc/threading/WorkerPool.js.map +1 -0
- package/dist/debugSession/BrightScriptDebugSession.d.ts +16 -0
- package/dist/debugSession/BrightScriptDebugSession.js +342 -23
- package/dist/debugSession/BrightScriptDebugSession.js.map +1 -1
- package/dist/debugSession/ecpRegistryUtils.d.ts +11 -0
- package/dist/debugSession/ecpRegistryUtils.js +168 -0
- package/dist/debugSession/ecpRegistryUtils.js.map +1 -0
- package/dist/interfaces.d.ts +12 -0
- package/dist/managers/BreakpointManager.d.ts +10 -0
- package/dist/managers/BreakpointManager.js +15 -5
- package/dist/managers/BreakpointManager.js.map +1 -1
- package/dist/managers/ProjectManager.d.ts +31 -12
- package/dist/managers/ProjectManager.js +61 -9
- package/dist/managers/ProjectManager.js.map +1 -1
- package/dist/util.d.ts +10 -1
- package/dist/util.js +36 -0
- package/dist/util.js.map +1 -1
- package/package.json +2 -2
- package/roku-debug-0.21.20.tgz +0 -0
- package/roku-debug-0.21.18.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifSprite.js","sourceRoot":"","sources":["../../../src/adapters/customVariables/ifSprite.ts"],"names":[],"mappings":";;;AAAA,8FAAsF;AAEtF,mCAAwD;AAExD,uFAAuF;AACvF,SAAgB,qBAAqB,CAAC,OAA6B,EAAE,UAAkB,EAAE,SAA4B;IACjH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,gCAAY,CAAC,OAAO;QAC1B,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;QACjD,YAAY,EAAE,GAAG,UAAU,SAAS;QACpC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,gCAAY,CAAC,OAAO;QAC1B,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;QACjD,YAAY,EAAE,GAAG,UAAU,SAAS;QACpC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,gCAAY,CAAC,OAAO;QAC1B,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;QACjD,YAAY,EAAE,GAAG,UAAU,SAAS;QACpC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,gCAAY,CAAC,OAAO;QAC1B,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;QACjD,YAAY,EAAE,GAAG,UAAU,oBAAoB;QAC/C,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,gCAAY,CAAC,OAAO;QAC1B,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;QACjD,YAAY,EAAE,GAAG,UAAU,mBAAmB;QAC9C,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,gCAAY,CAAC,OAAO;QAC1B,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;QACjD,YAAY,EAAE,GAAG,UAAU,uBAAuB;QAClD,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"ifSprite.js","sourceRoot":"","sources":["../../../src/adapters/customVariables/ifSprite.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,8 +23,8 @@ function pushIfVideoPlayerVariables(adapter, expression, container) {
|
|
|
23
23
|
});
|
|
24
24
|
(0, utils_1.pushCustomVariableToContainer)(adapter, container, {
|
|
25
25
|
name: '$captionRenderer',
|
|
26
|
-
type:
|
|
27
|
-
presentationHint: { kind: 'virtual'
|
|
26
|
+
type: VariablesResponse_1.VariableType.Object,
|
|
27
|
+
presentationHint: { kind: 'virtual' },
|
|
28
28
|
evaluateName: `${expression}.GetCaptionRenderer()`,
|
|
29
29
|
value: '',
|
|
30
30
|
children: []
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifVideoPlayer.js","sourceRoot":"","sources":["../../../src/adapters/customVariables/ifVideoPlayer.ts"],"names":[],"mappings":";;;AAAA,8FAAsF;AAEtF,mCAAwD;AAExD,4FAA4F;AAC5F,SAAgB,0BAA0B,CAAC,OAA6B,EAAE,UAAkB,EAAE,SAA4B;IACtH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,gCAAY,CAAC,OAAO;QAC1B,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;QACjD,YAAY,EAAE,GAAG,UAAU,wBAAwB;QACnD,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,gCAAY,CAAC,KAAK;QACxB,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACrC,YAAY,EAAE,GAAG,UAAU,mBAAmB;QAC9C,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"ifVideoPlayer.js","sourceRoot":"","sources":["../../../src/adapters/customVariables/ifVideoPlayer.ts"],"names":[],"mappings":";;;AAAA,8FAAsF;AAEtF,mCAAwD;AAExD,4FAA4F;AAC5F,SAAgB,0BAA0B,CAAC,OAA6B,EAAE,UAAkB,EAAE,SAA4B;IACtH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,gCAAY,CAAC,OAAO;QAC1B,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;QACjD,YAAY,EAAE,GAAG,UAAU,wBAAwB;QACnD,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,gCAAY,CAAC,KAAK;QACxB,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACrC,YAAY,EAAE,GAAG,UAAU,mBAAmB;QAC9C,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,gCAAY,CAAC,MAAM;QACzB,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACrC,YAAY,EAAE,GAAG,UAAU,uBAAuB;QAClD,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;AACP,CAAC;AA3BD,gEA2BC"}
|
|
@@ -39,16 +39,16 @@ function pushIfXMLElementVariables(adapter, expression, container) {
|
|
|
39
39
|
});
|
|
40
40
|
(0, utils_1.pushCustomVariableToContainer)(adapter, container, {
|
|
41
41
|
name: '$childElements',
|
|
42
|
-
type:
|
|
43
|
-
presentationHint: { kind: 'virtual'
|
|
42
|
+
type: VariablesResponse_1.VariableType.List,
|
|
43
|
+
presentationHint: { kind: 'virtual' },
|
|
44
44
|
evaluateName: `${expression}.GetChildElements()`,
|
|
45
45
|
value: '',
|
|
46
46
|
children: []
|
|
47
47
|
});
|
|
48
48
|
(0, utils_1.pushCustomVariableToContainer)(adapter, container, {
|
|
49
49
|
name: '$childNodes',
|
|
50
|
-
type:
|
|
51
|
-
presentationHint: { kind: 'virtual'
|
|
50
|
+
type: VariablesResponse_1.VariableType.List,
|
|
51
|
+
presentationHint: { kind: 'virtual' },
|
|
52
52
|
evaluateName: `${expression}.GetChildNodes()`,
|
|
53
53
|
value: '',
|
|
54
54
|
children: []
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifXMLElement.js","sourceRoot":"","sources":["../../../src/adapters/customVariables/ifXMLElement.ts"],"names":[],"mappings":";;;AAAA,8FAAsF;AAEtF,mCAAwD;AAExD,2FAA2F;AAC3F,SAAgB,yBAAyB,CAAC,OAA6B,EAAE,UAAkB,EAAE,SAA4B;IACrH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,EAAE;QACR,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;QACjD,YAAY,EAAE,GAAG,UAAU,YAAY;QACvC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,gCAAY,CAAC,gBAAgB;QACnC,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACrC,YAAY,EAAE,GAAG,UAAU,kBAAkB;QAC7C,KAAK,EAAE,gCAAY,CAAC,gBAAgB;QACpC,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,gCAAY,CAAC,MAAM;QACzB,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;QACjD,YAAY,EAAE,GAAG,UAAU,YAAY;QACvC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,gCAAY,CAAC,MAAM;QACzB,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;QACjD,YAAY,EAAE,GAAG,UAAU,YAAY;QACvC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"ifXMLElement.js","sourceRoot":"","sources":["../../../src/adapters/customVariables/ifXMLElement.ts"],"names":[],"mappings":";;;AAAA,8FAAsF;AAEtF,mCAAwD;AAExD,2FAA2F;AAC3F,SAAgB,yBAAyB,CAAC,OAA6B,EAAE,UAAkB,EAAE,SAA4B;IACrH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,EAAE;QACR,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;QACjD,YAAY,EAAE,GAAG,UAAU,YAAY;QACvC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,gCAAY,CAAC,gBAAgB;QACnC,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACrC,YAAY,EAAE,GAAG,UAAU,kBAAkB;QAC7C,KAAK,EAAE,gCAAY,CAAC,gBAAgB;QACpC,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,gCAAY,CAAC,MAAM;QACzB,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;QACjD,YAAY,EAAE,GAAG,UAAU,YAAY;QACvC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,gCAAY,CAAC,MAAM;QACzB,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;QACjD,YAAY,EAAE,GAAG,UAAU,YAAY;QACvC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,gCAAY,CAAC,IAAI;QACvB,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACrC,YAAY,EAAE,GAAG,UAAU,qBAAqB;QAChD,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,gCAAY,CAAC,IAAI;QACvB,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACrC,YAAY,EAAE,GAAG,UAAU,kBAAkB;QAC7C,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;AACP,CAAC;AAtDD,8DAsDC"}
|
|
@@ -7,8 +7,8 @@ const utils_1 = require("./utils");
|
|
|
7
7
|
function pushIfXMLListVariables(adapter, expression, container) {
|
|
8
8
|
(0, utils_1.pushCustomVariableToContainer)(adapter, container, {
|
|
9
9
|
name: '$attributes',
|
|
10
|
-
type:
|
|
11
|
-
presentationHint: { kind: 'virtual'
|
|
10
|
+
type: VariablesResponse_1.VariableType.List,
|
|
11
|
+
presentationHint: { kind: 'virtual' },
|
|
12
12
|
evaluateName: `${expression}.GetAttributes()`,
|
|
13
13
|
value: '',
|
|
14
14
|
children: []
|
|
@@ -23,8 +23,8 @@ function pushIfXMLListVariables(adapter, expression, container) {
|
|
|
23
23
|
});
|
|
24
24
|
(0, utils_1.pushCustomVariableToContainer)(adapter, container, {
|
|
25
25
|
name: '$childElements',
|
|
26
|
-
type:
|
|
27
|
-
presentationHint: { kind: 'virtual'
|
|
26
|
+
type: VariablesResponse_1.VariableType.List,
|
|
27
|
+
presentationHint: { kind: 'virtual' },
|
|
28
28
|
evaluateName: `${expression}.GetChildElements()`,
|
|
29
29
|
value: '',
|
|
30
30
|
children: []
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifXMLList.js","sourceRoot":"","sources":["../../../src/adapters/customVariables/ifXMLList.ts"],"names":[],"mappings":";;;AAAA,8FAAsF;AAEtF,mCAAwD;AAExD,wFAAwF;AACxF,SAAgB,sBAAsB,CAAC,OAA6B,EAAE,UAAkB,EAAE,SAA4B;IAClH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"ifXMLList.js","sourceRoot":"","sources":["../../../src/adapters/customVariables/ifXMLList.ts"],"names":[],"mappings":";;;AAAA,8FAAsF;AAEtF,mCAAwD;AAExD,wFAAwF;AACxF,SAAgB,sBAAsB,CAAC,OAA6B,EAAE,UAAkB,EAAE,SAA4B;IAClH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,gCAAY,CAAC,IAAI;QACvB,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACrC,YAAY,EAAE,GAAG,UAAU,kBAAkB;QAC7C,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,gCAAY,CAAC,MAAM;QACzB,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;QACjD,YAAY,EAAE,GAAG,UAAU,YAAY;QACvC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IAEH,IAAA,qCAA6B,EAAC,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,gCAAY,CAAC,IAAI;QACvB,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACrC,YAAY,EAAE,GAAG,UAAU,qBAAqB;QAChD,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;AACP,CAAC;AA3BD,wDA2BC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ProgramBuilder } from 'brighterscript';
|
|
2
|
+
import type { MaybePromise } from '../interfaces';
|
|
3
|
+
import type { DebugProtocol } from '@vscode/debugprotocol';
|
|
4
|
+
/**
|
|
5
|
+
* Class that wraps the BrighterScript ProgramBuilder
|
|
6
|
+
*/
|
|
7
|
+
export declare class BscProject {
|
|
8
|
+
private programBuilder;
|
|
9
|
+
/**
|
|
10
|
+
* Activate the ProgramBuilder and run it (using any options provided)
|
|
11
|
+
* @param options
|
|
12
|
+
*/
|
|
13
|
+
activate(options: Parameters<ProgramBuilder['run']>[0]): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Get all of the functions available for all scopes for this file.
|
|
16
|
+
* @param relativePath path to the file relative to rootDir
|
|
17
|
+
* @returns
|
|
18
|
+
*/
|
|
19
|
+
getScopeFunctionsForFile(options: {
|
|
20
|
+
relativePath: string;
|
|
21
|
+
}): MaybePromise<Array<ScopeFunction>>;
|
|
22
|
+
dispose(): void;
|
|
23
|
+
}
|
|
24
|
+
export interface ScopeFunction {
|
|
25
|
+
name: string;
|
|
26
|
+
completionItemKind: DebugProtocol.CompletionItemType;
|
|
27
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BscProject = void 0;
|
|
4
|
+
const brighterscript_1 = require("brighterscript");
|
|
5
|
+
/**
|
|
6
|
+
* Class that wraps the BrighterScript ProgramBuilder
|
|
7
|
+
*/
|
|
8
|
+
class BscProject {
|
|
9
|
+
/**
|
|
10
|
+
* Activate the ProgramBuilder and run it (using any options provided)
|
|
11
|
+
* @param options
|
|
12
|
+
*/
|
|
13
|
+
async activate(options) {
|
|
14
|
+
this.programBuilder = new brighterscript_1.ProgramBuilder();
|
|
15
|
+
await this.programBuilder.run(options);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get all of the functions available for all scopes for this file.
|
|
19
|
+
* @param relativePath path to the file relative to rootDir
|
|
20
|
+
* @returns
|
|
21
|
+
*/
|
|
22
|
+
getScopeFunctionsForFile(options) {
|
|
23
|
+
//remove the leading `pkg:/` if it exists
|
|
24
|
+
const file = this.programBuilder.program.getFile(options === null || options === void 0 ? void 0 : options.relativePath);
|
|
25
|
+
const scopes = this.programBuilder.program.getScopesForFile(file);
|
|
26
|
+
const result = new Map();
|
|
27
|
+
for (let scope of scopes) {
|
|
28
|
+
scope.getAllCallables();
|
|
29
|
+
for (let container of scope.getAllCallables()) {
|
|
30
|
+
if (result.has(container.callable.name)) {
|
|
31
|
+
result.set(container.callable.name, result.get(container.callable.name) + 1);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
result.set(container.callable.name, 1);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return [...result].map(([name, count]) => {
|
|
39
|
+
return {
|
|
40
|
+
name: name,
|
|
41
|
+
completionItemKind: count === scopes.length ? 'function' : 'text'
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
dispose() {
|
|
46
|
+
return this.programBuilder.dispose();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.BscProject = BscProject;
|
|
50
|
+
//# sourceMappingURL=BscProject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BscProject.js","sourceRoot":"","sources":["../../src/bsc/BscProject.ts"],"names":[],"mappings":";;;AAAA,mDAAgD;AAIhD;;GAEG;AACH,MAAa,UAAU;IAGnB;;;OAGG;IACI,KAAK,CAAC,QAAQ,CAAC,OAA6C;QAC/D,IAAI,CAAC,cAAc,GAAG,IAAI,+BAAc,EAAE,CAAC;QAC3C,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACI,wBAAwB,CAAC,OAAiC;QAC7D,yCAAyC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAElE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QAEzC,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,IAAI,SAAS,IAAI,KAAK,CAAC,eAAe,EAAE,EAAE;gBAC3C,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBACrC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;iBAChF;qBAAM;oBACH,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;iBAC1C;aACJ;SACJ;QAED,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;YACrC,OAAO;gBACH,IAAI,EAAE,IAAI;gBACV,kBAAkB,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM;aACpE,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;IACzC,CAAC;CACJ;AA9CD,gCA8CC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type ProgramBuilder } from 'brighterscript';
|
|
2
|
+
import type { ExtractMethods, DisposableLike, MaybePromise } from '../interfaces';
|
|
3
|
+
import type { BscProject, ScopeFunction } from './BscProject';
|
|
4
|
+
export declare class BscProjectThreaded implements ExtractMethods<BscProject> {
|
|
5
|
+
logger: import("@rokucommunity/logger/dist/Logger").Logger;
|
|
6
|
+
private worker;
|
|
7
|
+
private messageHandler;
|
|
8
|
+
private activateDeferred;
|
|
9
|
+
/**
|
|
10
|
+
* Has this project finished activating (either resolved or rejected...)
|
|
11
|
+
*/
|
|
12
|
+
get isActivated(): boolean;
|
|
13
|
+
activate(options: Parameters<ProgramBuilder['run']>[0]): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Get all of the functions avaiable for all scopes for this file.
|
|
16
|
+
* @param relativePath path to the file relative to rootDir
|
|
17
|
+
* @returns
|
|
18
|
+
*/
|
|
19
|
+
getScopeFunctionsForFile(options: {
|
|
20
|
+
relativePath: string;
|
|
21
|
+
}): MaybePromise<Array<ScopeFunction>>;
|
|
22
|
+
/**
|
|
23
|
+
* Send a request with the standard structure
|
|
24
|
+
* @param name the name of the request
|
|
25
|
+
* @param data the array of data to send
|
|
26
|
+
* @returns the response from the request
|
|
27
|
+
*/
|
|
28
|
+
private sendStandardRequest;
|
|
29
|
+
/**
|
|
30
|
+
* If the client sends a request, it will be processed here
|
|
31
|
+
*/
|
|
32
|
+
private processRequest;
|
|
33
|
+
/**
|
|
34
|
+
* If the client sends an update, it will be processed here
|
|
35
|
+
*/
|
|
36
|
+
private processUpdate;
|
|
37
|
+
/**
|
|
38
|
+
* List of disposables to clean up when this instance is disposed
|
|
39
|
+
*/
|
|
40
|
+
disposables: DisposableLike[];
|
|
41
|
+
/**
|
|
42
|
+
* Clean up all resources used by this instance
|
|
43
|
+
*/
|
|
44
|
+
dispose(): void;
|
|
45
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BscProjectThreaded = void 0;
|
|
4
|
+
const brighterscript_1 = require("brighterscript");
|
|
5
|
+
const BscProjectWorkerPool_1 = require("./threading/BscProjectWorkerPool");
|
|
6
|
+
const ThreadMessageHandler_1 = require("./threading/ThreadMessageHandler");
|
|
7
|
+
const util_1 = require("../util");
|
|
8
|
+
const logging_1 = require("../logging");
|
|
9
|
+
class BscProjectThreaded {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.logger = logging_1.logger.createLogger('[BscProjectThreaded]');
|
|
12
|
+
this.activateDeferred = new brighterscript_1.Deferred();
|
|
13
|
+
/**
|
|
14
|
+
* List of disposables to clean up when this instance is disposed
|
|
15
|
+
*/
|
|
16
|
+
this.disposables = [];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Has this project finished activating (either resolved or rejected...)
|
|
20
|
+
*/
|
|
21
|
+
get isActivated() {
|
|
22
|
+
return this.activateDeferred.isCompleted;
|
|
23
|
+
}
|
|
24
|
+
async activate(options) {
|
|
25
|
+
const timeEnd = this.logger.timeStart('log', 'activate');
|
|
26
|
+
// start a new worker thread or get an unused existing thread
|
|
27
|
+
this.worker = BscProjectWorkerPool_1.bscProjectWorkerPool.getWorker();
|
|
28
|
+
//link the message handler to the worker
|
|
29
|
+
this.messageHandler = new ThreadMessageHandler_1.ThreadMessageHandler({
|
|
30
|
+
name: 'MainThread',
|
|
31
|
+
port: this.worker,
|
|
32
|
+
onRequest: this.processRequest.bind(this),
|
|
33
|
+
onUpdate: this.processUpdate.bind(this)
|
|
34
|
+
});
|
|
35
|
+
//set up some disposables to be cleaned up
|
|
36
|
+
this.disposables.push(this.messageHandler,
|
|
37
|
+
//when disposed, move the worker back to the pool so it can be used again
|
|
38
|
+
() => BscProjectWorkerPool_1.bscProjectWorkerPool.releaseWorker(this.worker));
|
|
39
|
+
//send the request to the worker to activate itself
|
|
40
|
+
try {
|
|
41
|
+
await this.messageHandler.sendRequest('activate', { data: [options] });
|
|
42
|
+
this.activateDeferred.resolve();
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
this.activateDeferred.reject(e);
|
|
46
|
+
}
|
|
47
|
+
timeEnd();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get all of the functions avaiable for all scopes for this file.
|
|
51
|
+
* @param relativePath path to the file relative to rootDir
|
|
52
|
+
* @returns
|
|
53
|
+
*/
|
|
54
|
+
getScopeFunctionsForFile(options) {
|
|
55
|
+
return this.sendStandardRequest('getScopeFunctionsForFile', options);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Send a request with the standard structure
|
|
59
|
+
* @param name the name of the request
|
|
60
|
+
* @param data the array of data to send
|
|
61
|
+
* @returns the response from the request
|
|
62
|
+
*/
|
|
63
|
+
async sendStandardRequest(name, ...data) {
|
|
64
|
+
await this.activateDeferred.promise;
|
|
65
|
+
const response = await this.messageHandler.sendRequest(name, {
|
|
66
|
+
data: data
|
|
67
|
+
});
|
|
68
|
+
return response.data;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* If the client sends a request, it will be processed here
|
|
72
|
+
*/
|
|
73
|
+
processRequest(request) {
|
|
74
|
+
//the thread does not currently send any requests
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* If the client sends an update, it will be processed here
|
|
78
|
+
*/
|
|
79
|
+
processUpdate(update) {
|
|
80
|
+
//the thread does not currently send any requests
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Clean up all resources used by this instance
|
|
84
|
+
*/
|
|
85
|
+
dispose() {
|
|
86
|
+
util_1.util.applyDispose(this.disposables);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.BscProjectThreaded = BscProjectThreaded;
|
|
90
|
+
//# sourceMappingURL=BscProjectThreaded.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BscProjectThreaded.js","sourceRoot":"","sources":["../../src/bsc/BscProjectThreaded.ts"],"names":[],"mappings":";;;AAAA,mDAA+D;AAG/D,2EAAwE;AAExE,2EAAwE;AAExE,kCAA+B;AAC/B,wCAAoC;AAGpC,MAAa,kBAAkB;IAA/B;QAEW,WAAM,GAAG,gBAAM,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;QAMpD,qBAAgB,GAAG,IAAI,yBAAQ,EAAE,CAAC;QA6E1C;;WAEG;QACI,gBAAW,GAAqB,EAAE,CAAC;IAQ9C,CAAC;IAtFG;;OAEG;IACH,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,OAA6C;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAEzD,6DAA6D;QAC7D,IAAI,CAAC,MAAM,GAAG,2CAAoB,CAAC,SAAS,EAAE,CAAC;QAE/C,wCAAwC;QACxC,IAAI,CAAC,cAAc,GAAG,IAAI,2CAAoB,CAAa;YACvD,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YACzC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;SAC1C,CAAC,CAAC;QAEH,0CAA0C;QAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,CACjB,IAAI,CAAC,cAAc;QACnB,yEAAyE;QACzE,GAAG,EAAE,CAAC,2CAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CACxD,CAAC;QAEF,mDAAmD;QACnD,IAAI;YACA,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACvE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;SACnC;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACnC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED;;;;OAIG;IACI,wBAAwB,CAAC,OAAiC;QAC7D,OAAO,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,mBAAmB,CAAI,IAA6B,EAAE,GAAG,IAAW;QAC9E,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;QACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAI,IAAI,EAAE;YAC5D,IAAI,EAAE,IAAI;SACb,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,OAAsB;QACzC,iDAAiD;IACrD,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,MAAqB;QACvC,iDAAiD;IACrD,CAAC;IAOD;;OAEG;IACI,OAAO;QACV,WAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;CACJ;AAhGD,gDAgGC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.bscProjectWorkerPool = void 0;
|
|
4
|
+
const worker_threads_1 = require("worker_threads");
|
|
5
|
+
const worker_threads_2 = require("worker_threads");
|
|
6
|
+
const BscProject_1 = require("../BscProject");
|
|
7
|
+
const WorkerPool_1 = require("./WorkerPool");
|
|
8
|
+
const ThreadRunner_1 = require("./ThreadRunner");
|
|
9
|
+
//if this script is running in a Worker, start the project runner
|
|
10
|
+
/* istanbul ignore next */
|
|
11
|
+
if (!worker_threads_2.isMainThread) {
|
|
12
|
+
const runner = new ThreadRunner_1.ThreadRunner(() => {
|
|
13
|
+
return new BscProject_1.BscProject();
|
|
14
|
+
});
|
|
15
|
+
runner.run(worker_threads_2.parentPort);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A pool of workers that gets pre-baked and reused so we don't pay the worker thread penalty every time we need a new worker.
|
|
19
|
+
*/
|
|
20
|
+
exports.bscProjectWorkerPool = new WorkerPool_1.WorkerPool(() => {
|
|
21
|
+
return new worker_threads_1.Worker(__filename, {
|
|
22
|
+
//wire up ts-node if we're running in ts-node
|
|
23
|
+
execArgv: /\.ts$/i.test(__filename)
|
|
24
|
+
? ['--require', 'ts-node/register']
|
|
25
|
+
/* istanbul ignore next */
|
|
26
|
+
: undefined
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=BscProjectWorkerPool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BscProjectWorkerPool.js","sourceRoot":"","sources":["../../../src/bsc/threading/BscProjectWorkerPool.ts"],"names":[],"mappings":";;;AAAA,mDAAwC;AACxC,mDAA0D;AAC1D,8CAA2C;AAC3C,6CAA0C;AAC1C,iDAA8C;AAE9C,iEAAiE;AACjE,0BAA0B;AAC1B,IAAI,CAAC,6BAAY,EAAE;IACf,MAAM,MAAM,GAAG,IAAI,2BAAY,CAAC,GAAG,EAAE;QACjC,OAAO,IAAI,uBAAU,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,CAAC,2BAAU,CAAC,CAAC;CAC1B;AAED;;GAEG;AACU,QAAA,oBAAoB,GAAG,IAAI,uBAAU,CAAC,GAAG,EAAE;IACpD,OAAO,IAAI,uBAAM,CACb,UAAU,EACV;QACI,6CAA6C;QAC7C,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;YAC/B,CAAC,CAAC,CAAC,WAAW,EAAE,kBAAkB,CAAC;YACnC,0BAA0B;YAC1B,CAAC,CAAC,SAAS;KAClB,CACJ,CAAC;AACN,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { parentPort } from 'worker_threads';
|
|
3
|
+
interface PseudoMessagePort {
|
|
4
|
+
on: (name: 'message', cb: (message: any) => any) => any;
|
|
5
|
+
postMessage: typeof parentPort['postMessage'];
|
|
6
|
+
}
|
|
7
|
+
export declare class ThreadMessageHandler<T, TRequestName = MethodNames<T>> {
|
|
8
|
+
constructor(options: {
|
|
9
|
+
name?: string;
|
|
10
|
+
port: PseudoMessagePort;
|
|
11
|
+
onRequest?: (message: WorkerRequest) => any;
|
|
12
|
+
onResponse?: (message: WorkerResponse) => any;
|
|
13
|
+
onUpdate?: (message: WorkerUpdate) => any;
|
|
14
|
+
});
|
|
15
|
+
/**
|
|
16
|
+
* An optional name to help with debugging this handler
|
|
17
|
+
*/
|
|
18
|
+
readonly name: string;
|
|
19
|
+
private port;
|
|
20
|
+
private disposables;
|
|
21
|
+
private emitter;
|
|
22
|
+
private activeRequests;
|
|
23
|
+
/**
|
|
24
|
+
* Get the response with this ID
|
|
25
|
+
* @param id the ID of the response
|
|
26
|
+
* @returns the message
|
|
27
|
+
*/
|
|
28
|
+
private onResponse;
|
|
29
|
+
/**
|
|
30
|
+
* A unique sequence for identifying messages
|
|
31
|
+
*/
|
|
32
|
+
private idSequence;
|
|
33
|
+
/**
|
|
34
|
+
* Send a request to the worker, and wait for a response.
|
|
35
|
+
* @param name the name of the request
|
|
36
|
+
* @param options the request options
|
|
37
|
+
* @param options.data an array of data that will be passed in as params to the target function
|
|
38
|
+
* @param options.id an id for this request
|
|
39
|
+
*/
|
|
40
|
+
sendRequest<R>(name: TRequestName, options?: {
|
|
41
|
+
data: any[];
|
|
42
|
+
id?: number;
|
|
43
|
+
}): Promise<WorkerResponse<R>>;
|
|
44
|
+
/**
|
|
45
|
+
* Send a request to the worker, and wait for a response.
|
|
46
|
+
* @param request the request we are responding to
|
|
47
|
+
* @param options options for this request
|
|
48
|
+
*/
|
|
49
|
+
sendResponse(request: WorkerMessage, options?: {
|
|
50
|
+
data: any;
|
|
51
|
+
} | {
|
|
52
|
+
error: Error;
|
|
53
|
+
} | undefined): void;
|
|
54
|
+
/**
|
|
55
|
+
* Send a request to the worker, and wait for a response.
|
|
56
|
+
* @param name the name of the request
|
|
57
|
+
* @param options options for the update
|
|
58
|
+
* @param options.data an array of data that will be passed in as params to the target function
|
|
59
|
+
* @param options.id an id for this update
|
|
60
|
+
*/
|
|
61
|
+
sendUpdate<T>(name: string, options?: {
|
|
62
|
+
data?: any[];
|
|
63
|
+
id?: number;
|
|
64
|
+
}): void;
|
|
65
|
+
/**
|
|
66
|
+
* Convert an Error object into a plain object so it can be serialized
|
|
67
|
+
* @param error the error to object-ify
|
|
68
|
+
* @returns an object version of an error
|
|
69
|
+
*/
|
|
70
|
+
private errorToObject;
|
|
71
|
+
dispose(): void;
|
|
72
|
+
}
|
|
73
|
+
export interface WorkerRequest<TData = any> {
|
|
74
|
+
id: number;
|
|
75
|
+
type: 'request';
|
|
76
|
+
name: string;
|
|
77
|
+
data?: TData;
|
|
78
|
+
}
|
|
79
|
+
export interface WorkerResponse<TData = any> {
|
|
80
|
+
id: number;
|
|
81
|
+
type: 'response';
|
|
82
|
+
name: string;
|
|
83
|
+
data?: TData;
|
|
84
|
+
/**
|
|
85
|
+
* An error occurred on the remote side. There will be no `.data` value
|
|
86
|
+
*/
|
|
87
|
+
error?: Error;
|
|
88
|
+
}
|
|
89
|
+
export interface WorkerUpdate<TData = any> {
|
|
90
|
+
id: number;
|
|
91
|
+
type: 'update';
|
|
92
|
+
name: string;
|
|
93
|
+
data?: TData;
|
|
94
|
+
}
|
|
95
|
+
export declare type WorkerMessage<T = any> = WorkerRequest<T> | WorkerResponse<T> | WorkerUpdate<T>;
|
|
96
|
+
export declare type MethodNames<T> = {
|
|
97
|
+
[K in keyof T]: T[K] extends (...args: any[]) => any ? K : never;
|
|
98
|
+
}[keyof T];
|
|
99
|
+
export {};
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ThreadMessageHandler = void 0;
|
|
4
|
+
const EventEmitter = require("eventemitter3");
|
|
5
|
+
const brighterscript_1 = require("brighterscript");
|
|
6
|
+
const util_1 = require("../../util");
|
|
7
|
+
class ThreadMessageHandler {
|
|
8
|
+
constructor(options) {
|
|
9
|
+
this.disposables = [];
|
|
10
|
+
this.emitter = new EventEmitter();
|
|
11
|
+
this.activeRequests = new Map();
|
|
12
|
+
/**
|
|
13
|
+
* A unique sequence for identifying messages
|
|
14
|
+
*/
|
|
15
|
+
this.idSequence = 0;
|
|
16
|
+
this.name = options === null || options === void 0 ? void 0 : options.name;
|
|
17
|
+
this.port = options === null || options === void 0 ? void 0 : options.port;
|
|
18
|
+
const listener = (message) => {
|
|
19
|
+
var _a, _b, _c;
|
|
20
|
+
switch (message.type) {
|
|
21
|
+
case 'request':
|
|
22
|
+
(_a = options === null || options === void 0 ? void 0 : options.onRequest) === null || _a === void 0 ? void 0 : _a.call(options, message);
|
|
23
|
+
break;
|
|
24
|
+
case 'response':
|
|
25
|
+
(_b = options === null || options === void 0 ? void 0 : options.onResponse) === null || _b === void 0 ? void 0 : _b.call(options, message);
|
|
26
|
+
this.emitter.emit(`${message.type}-${message.id}`, message);
|
|
27
|
+
break;
|
|
28
|
+
case 'update':
|
|
29
|
+
(_c = options === null || options === void 0 ? void 0 : options.onUpdate) === null || _c === void 0 ? void 0 : _c.call(options, message);
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
options === null || options === void 0 ? void 0 : options.port.on('message', listener);
|
|
34
|
+
this.disposables.push(() => this.emitter.removeAllListeners(), () => (options === null || options === void 0 ? void 0 : options.port).off('message', listener));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get the response with this ID
|
|
38
|
+
* @param id the ID of the response
|
|
39
|
+
* @returns the message
|
|
40
|
+
*/
|
|
41
|
+
onResponse(id) {
|
|
42
|
+
const deferred = new brighterscript_1.Deferred();
|
|
43
|
+
//store this request so we can resolve it later, or reject if this class is disposed
|
|
44
|
+
this.activeRequests.set(id, {
|
|
45
|
+
id: id,
|
|
46
|
+
deferred: deferred
|
|
47
|
+
});
|
|
48
|
+
this.emitter.once(`response-${id}`, (response) => {
|
|
49
|
+
deferred.resolve(response);
|
|
50
|
+
this.activeRequests.delete(id);
|
|
51
|
+
});
|
|
52
|
+
return deferred.promise;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Send a request to the worker, and wait for a response.
|
|
56
|
+
* @param name the name of the request
|
|
57
|
+
* @param options the request options
|
|
58
|
+
* @param options.data an array of data that will be passed in as params to the target function
|
|
59
|
+
* @param options.id an id for this request
|
|
60
|
+
*/
|
|
61
|
+
async sendRequest(name, options) {
|
|
62
|
+
var _a, _b;
|
|
63
|
+
const request = {
|
|
64
|
+
type: 'request',
|
|
65
|
+
name: name,
|
|
66
|
+
data: (_a = options === null || options === void 0 ? void 0 : options.data) !== null && _a !== void 0 ? _a : [],
|
|
67
|
+
id: (_b = options === null || options === void 0 ? void 0 : options.id) !== null && _b !== void 0 ? _b : this.idSequence++
|
|
68
|
+
};
|
|
69
|
+
const responsePromise = this.onResponse(request.id);
|
|
70
|
+
this.port.postMessage(request);
|
|
71
|
+
const response = await responsePromise;
|
|
72
|
+
if ('error' in response) {
|
|
73
|
+
//throw the error so it causes a rejected promise (like we'd expect)
|
|
74
|
+
throw new Error(`Worker thread encountered an error: ${JSON.stringify(response.error.stack)}`);
|
|
75
|
+
}
|
|
76
|
+
return response;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Send a request to the worker, and wait for a response.
|
|
80
|
+
* @param request the request we are responding to
|
|
81
|
+
* @param options options for this request
|
|
82
|
+
*/
|
|
83
|
+
sendResponse(request, options) {
|
|
84
|
+
const response = {
|
|
85
|
+
type: 'response',
|
|
86
|
+
name: request.name,
|
|
87
|
+
id: request.id
|
|
88
|
+
};
|
|
89
|
+
if ('error' in options) {
|
|
90
|
+
//hack: turn the error into a plain json object
|
|
91
|
+
response.error = this.errorToObject(options.error);
|
|
92
|
+
}
|
|
93
|
+
else if ('data' in options) {
|
|
94
|
+
response.data = options.data;
|
|
95
|
+
}
|
|
96
|
+
this.port.postMessage(response);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Send a request to the worker, and wait for a response.
|
|
100
|
+
* @param name the name of the request
|
|
101
|
+
* @param options options for the update
|
|
102
|
+
* @param options.data an array of data that will be passed in as params to the target function
|
|
103
|
+
* @param options.id an id for this update
|
|
104
|
+
*/
|
|
105
|
+
sendUpdate(name, options) {
|
|
106
|
+
var _a, _b;
|
|
107
|
+
let update = {
|
|
108
|
+
type: 'update',
|
|
109
|
+
name: name,
|
|
110
|
+
data: (_a = options === null || options === void 0 ? void 0 : options.data) !== null && _a !== void 0 ? _a : [],
|
|
111
|
+
id: (_b = options === null || options === void 0 ? void 0 : options.id) !== null && _b !== void 0 ? _b : this.idSequence++
|
|
112
|
+
};
|
|
113
|
+
this.port.postMessage(update);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Convert an Error object into a plain object so it can be serialized
|
|
117
|
+
* @param error the error to object-ify
|
|
118
|
+
* @returns an object version of an error
|
|
119
|
+
*/
|
|
120
|
+
errorToObject(error) {
|
|
121
|
+
var _a, _b;
|
|
122
|
+
return {
|
|
123
|
+
name: error.name,
|
|
124
|
+
message: error.message,
|
|
125
|
+
stack: error.stack,
|
|
126
|
+
cause: ((_a = error.cause) === null || _a === void 0 ? void 0 : _a.message) && ((_b = error.cause) === null || _b === void 0 ? void 0 : _b.stack) ? this.errorToObject(error.cause) : error.cause
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
dispose() {
|
|
130
|
+
util_1.util.applyDispose(this.disposables);
|
|
131
|
+
//reject all active requests
|
|
132
|
+
for (const request of this.activeRequests.values()) {
|
|
133
|
+
request.deferred.reject(new Error(`Request ${request.id} has been rejected because MessageHandler is now disposed`));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
exports.ThreadMessageHandler = ThreadMessageHandler;
|
|
138
|
+
//# sourceMappingURL=ThreadMessageHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThreadMessageHandler.js","sourceRoot":"","sources":["../../../src/bsc/threading/ThreadMessageHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { MessagePort } from 'worker_threads';
|
|
3
|
+
/**
|
|
4
|
+
* Runner logic for Running a Project in a worker thread.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ThreadRunner<T extends ThreadRunnerSubject> {
|
|
7
|
+
private subjectFactory;
|
|
8
|
+
constructor(subjectFactory: () => T);
|
|
9
|
+
private requestInterceptors;
|
|
10
|
+
/**
|
|
11
|
+
* The instance of the object this runner will communicate with. It should have methods with the same names as the request being sent.
|
|
12
|
+
*/
|
|
13
|
+
private subject;
|
|
14
|
+
private messageHandler;
|
|
15
|
+
run(parentPort: MessagePort): void;
|
|
16
|
+
/**
|
|
17
|
+
* Fired anytime we get an `activate` request from the client. This allows us to clean up the previous project and make a new one
|
|
18
|
+
*/
|
|
19
|
+
private onActivate;
|
|
20
|
+
}
|
|
21
|
+
export interface ThreadRunnerSubject {
|
|
22
|
+
/**
|
|
23
|
+
* Called whenever a new subject has been activated
|
|
24
|
+
*/
|
|
25
|
+
activate(...args: any[]): void | Promise<any>;
|
|
26
|
+
/**
|
|
27
|
+
* Called whenever a subject will no longer be used. Allows for cleaning up a subject.
|
|
28
|
+
*/
|
|
29
|
+
dispose(): void | Promise<any>;
|
|
30
|
+
}
|