@akashic/headless-driver 1.11.36 → 2.0.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.
Files changed (139) hide show
  1. package/CHANGELOG.md +1725 -0
  2. package/README.md +30 -0
  3. package/lib/ExecuteVmScriptV1.d.ts +2 -2
  4. package/lib/ExecuteVmScriptV1.js +2 -2
  5. package/lib/ExecuteVmScriptV2.d.ts +2 -2
  6. package/lib/ExecuteVmScriptV2.js +2 -2
  7. package/lib/ExecuteVmScriptV3.d.ts +2 -2
  8. package/lib/ExecuteVmScriptV3.js +2 -2
  9. package/lib/Looper.d.ts +24 -0
  10. package/lib/Looper.js +79 -0
  11. package/lib/index.d.ts +3 -11
  12. package/lib/index.js +3 -11
  13. package/lib/play/AMFlowClientManager.d.ts +1 -1
  14. package/lib/play/Play.d.ts +1 -1
  15. package/lib/play/PlayManager.d.ts +5 -5
  16. package/lib/play/amflow/AMFlowClient.d.ts +4 -4
  17. package/lib/play/amflow/AMFlowStore.d.ts +3 -3
  18. package/lib/play/amflow/index.d.ts +4 -0
  19. package/lib/play/amflow/index.js +16 -0
  20. package/lib/play/amflow/types.d.ts +2 -2
  21. package/lib/play/index.d.ts +5 -0
  22. package/lib/play/index.js +17 -0
  23. package/lib/runner/Platform.d.ts +25 -0
  24. package/lib/runner/Platform.js +34 -0
  25. package/lib/runner/Runner.d.ts +110 -0
  26. package/lib/runner/Runner.js +101 -0
  27. package/lib/runner/RunnerManager.d.ts +6 -6
  28. package/lib/runner/RunnerManager.js +2 -2
  29. package/lib/runner/index.d.ts +7 -0
  30. package/lib/runner/index.js +19 -0
  31. package/lib/runner/types.d.ts +15 -0
  32. package/lib/runner/types.js +2 -0
  33. package/lib/runner/v1/RunnerV1.d.ts +26 -0
  34. package/lib/runner/v1/RunnerV1.js +230 -0
  35. package/lib/runner/v1/index.d.ts +3 -0
  36. package/lib/runner/v1/index.js +19 -0
  37. package/lib/runner/v1/platform/NullAudioPlayer.d.ts +3 -0
  38. package/lib/runner/v1/platform/NullAudioPlayer.js +7 -0
  39. package/lib/runner/v1/platform/NullGlyphFactory.d.ts +6 -0
  40. package/lib/runner/v1/platform/NullGlyphFactory.js +18 -0
  41. package/lib/runner/v1/platform/NullRenderer.d.ts +16 -0
  42. package/lib/runner/v1/platform/NullRenderer.js +46 -0
  43. package/lib/runner/v1/platform/NullSurface.d.ts +7 -0
  44. package/lib/runner/v1/platform/NullSurface.js +18 -0
  45. package/lib/runner/v1/platform/NullVideoPlayer.d.ts +4 -0
  46. package/lib/runner/v1/platform/NullVideoPlayer.js +10 -0
  47. package/lib/runner/v1/platform/PlatformV1.d.ts +22 -0
  48. package/lib/runner/v1/platform/PlatformV1.js +67 -0
  49. package/lib/runner/v1/platform/ResourceFactory.d.ts +18 -0
  50. package/lib/runner/v1/platform/ResourceFactory.js +53 -0
  51. package/lib/runner/v1/platform/assets/NodeScriptAsset.d.ts +16 -0
  52. package/lib/runner/v1/platform/assets/NodeScriptAsset.js +36 -0
  53. package/lib/runner/v1/platform/assets/NodeTextAsset.d.ts +11 -0
  54. package/lib/runner/v1/platform/assets/NodeTextAsset.js +23 -0
  55. package/lib/runner/v1/platform/assets/NullAudioAsset.d.ts +4 -0
  56. package/lib/runner/v1/platform/assets/NullAudioAsset.js +10 -0
  57. package/lib/runner/v1/platform/assets/NullImageAsset.d.ts +6 -0
  58. package/lib/runner/v1/platform/assets/NullImageAsset.js +18 -0
  59. package/lib/runner/v1/platform/assets/NullVideoAsset.d.ts +10 -0
  60. package/lib/runner/v1/platform/assets/NullVideoAsset.js +25 -0
  61. package/lib/runner/v2/RunnerV2.d.ts +26 -0
  62. package/lib/runner/v2/RunnerV2.js +229 -0
  63. package/lib/runner/v2/index.d.ts +3 -0
  64. package/lib/runner/v2/index.js +19 -0
  65. package/lib/runner/v2/platform/NullAudioPlayer.d.ts +3 -0
  66. package/lib/runner/v2/platform/NullAudioPlayer.js +7 -0
  67. package/lib/runner/v2/platform/NullGlyphFactory.d.ts +6 -0
  68. package/lib/runner/v2/platform/NullGlyphFactory.js +18 -0
  69. package/lib/runner/v2/platform/NullRenderer.d.ts +20 -0
  70. package/lib/runner/v2/platform/NullRenderer.js +58 -0
  71. package/lib/runner/v2/platform/NullSurface.d.ts +7 -0
  72. package/lib/runner/v2/platform/NullSurface.js +18 -0
  73. package/lib/runner/v2/platform/NullVideoPlayer.d.ts +4 -0
  74. package/lib/runner/v2/platform/NullVideoPlayer.js +10 -0
  75. package/lib/runner/v2/platform/PlatformV2.d.ts +23 -0
  76. package/lib/runner/v2/platform/PlatformV2.js +70 -0
  77. package/lib/runner/v2/platform/ResourceFactory.d.ts +18 -0
  78. package/lib/runner/v2/platform/ResourceFactory.js +53 -0
  79. package/lib/runner/v2/platform/assets/NodeScriptAsset.d.ts +16 -0
  80. package/lib/runner/v2/platform/assets/NodeScriptAsset.js +36 -0
  81. package/lib/runner/v2/platform/assets/NodeTextAsset.d.ts +11 -0
  82. package/lib/runner/v2/platform/assets/NodeTextAsset.js +23 -0
  83. package/lib/runner/v2/platform/assets/NullAudioAsset.d.ts +4 -0
  84. package/lib/runner/v2/platform/assets/NullAudioAsset.js +10 -0
  85. package/lib/runner/v2/platform/assets/NullImageAsset.d.ts +6 -0
  86. package/lib/runner/v2/platform/assets/NullImageAsset.js +18 -0
  87. package/lib/runner/v2/platform/assets/NullVideoAsset.d.ts +10 -0
  88. package/lib/runner/v2/platform/assets/NullVideoAsset.js +25 -0
  89. package/lib/runner/v3/RunnerV3.d.ts +38 -0
  90. package/lib/runner/v3/RunnerV3.js +245 -0
  91. package/lib/runner/v3/engineFiles.d.ts +2 -0
  92. package/lib/runner/v3/engineFiles.js +31 -0
  93. package/lib/runner/v3/index.d.ts +5 -0
  94. package/lib/runner/v3/index.js +21 -0
  95. package/lib/runner/v3/platform/NodeCanvasResourceFactory.d.ts +22 -0
  96. package/lib/runner/v3/platform/NodeCanvasResourceFactory.js +57 -0
  97. package/lib/runner/v3/platform/NullResourceFactory.d.ts +21 -0
  98. package/lib/runner/v3/platform/NullResourceFactory.js +54 -0
  99. package/lib/runner/v3/platform/PlatformV3.d.ts +23 -0
  100. package/lib/runner/v3/platform/PlatformV3.js +94 -0
  101. package/lib/runner/v3/platform/assets/Asset.d.ts +14 -0
  102. package/lib/runner/v3/platform/assets/Asset.js +30 -0
  103. package/lib/runner/v3/platform/assets/NodeScriptAsset.d.ts +19 -0
  104. package/lib/runner/v3/platform/assets/NodeScriptAsset.js +48 -0
  105. package/lib/runner/v3/platform/assets/NodeTextAsset.d.ts +14 -0
  106. package/lib/runner/v3/platform/assets/NodeTextAsset.js +35 -0
  107. package/lib/runner/v3/platform/audios/NullAudioAsset.d.ts +15 -0
  108. package/lib/runner/v3/platform/audios/NullAudioAsset.js +28 -0
  109. package/lib/runner/v3/platform/audios/NullAudioPlayer.d.ts +17 -0
  110. package/lib/runner/v3/platform/audios/NullAudioPlayer.js +34 -0
  111. package/lib/runner/v3/platform/graphics/canvas/CompositeOperationConverter.d.ts +6 -0
  112. package/lib/runner/v3/platform/graphics/canvas/CompositeOperationConverter.js +78 -0
  113. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasGlyph.d.ts +16 -0
  114. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasGlyph.js +25 -0
  115. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasGlyphFactory.d.ts +24 -0
  116. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasGlyphFactory.js +204 -0
  117. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasImageAsset.d.ts +16 -0
  118. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasImageAsset.js +78 -0
  119. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasRenderer.d.ts +26 -0
  120. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasRenderer.js +72 -0
  121. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasSurface.d.ts +14 -0
  122. package/lib/runner/v3/platform/graphics/canvas/NodeCanvasSurface.js +25 -0
  123. package/lib/runner/v3/platform/graphics/null/NullGlyph.d.ts +16 -0
  124. package/lib/runner/v3/platform/graphics/null/NullGlyph.js +25 -0
  125. package/lib/runner/v3/platform/graphics/null/NullGlyphFactory.d.ts +14 -0
  126. package/lib/runner/v3/platform/graphics/null/NullGlyphFactory.js +22 -0
  127. package/lib/runner/v3/platform/graphics/null/NullImageAsset.d.ts +13 -0
  128. package/lib/runner/v3/platform/graphics/null/NullImageAsset.js +24 -0
  129. package/lib/runner/v3/platform/graphics/null/NullRenderer.d.ts +21 -0
  130. package/lib/runner/v3/platform/graphics/null/NullRenderer.js +60 -0
  131. package/lib/runner/v3/platform/graphics/null/NullSurface.d.ts +14 -0
  132. package/lib/runner/v3/platform/graphics/null/NullSurface.js +26 -0
  133. package/lib/runner/v3/platform/videos/NullVideoAsset.d.ts +20 -0
  134. package/lib/runner/v3/platform/videos/NullVideoAsset.js +37 -0
  135. package/lib/runner/v3/platform/videos/NullVideoPlayer.d.ts +14 -0
  136. package/lib/runner/v3/platform/videos/NullVideoPlayer.js +25 -0
  137. package/lib/runner/v3/requireEngineFiles.d.ts +5 -0
  138. package/lib/runner/v3/requireEngineFiles.js +21 -0
  139. package/package.json +26 -18
package/README.md CHANGED
@@ -1 +1,31 @@
1
+ <p align="center">
2
+ <img src="https://github.com/akashic-games/headless-driver/blob/master/img/akashic.png"/>
3
+ </p>
4
+
1
5
  # headless-driver
6
+
7
+ ## インストール
8
+ Node.jsが必要です。次のコマンドでインストールできます。
9
+
10
+ ```sh
11
+ npm i
12
+ ```
13
+
14
+ ## ビルド
15
+
16
+ ```sh
17
+ npm run build
18
+ ```
19
+
20
+ ## 環境変数
21
+
22
+ | 環境変数 | 説明 | 注釈 |
23
+ |--------|-----|-----|
24
+ | `ENGINE_FILES_V3_PATH` | engine-files v3 のビルド成果物のパス。<br> この値が指定された場合、 対象の engine-files を akashic-engine v3 コンテンツ実行時に利用します。 | エンジン開発用のオプションです。通常、ゲーム開発時に利用する必要はありません。 |
25
+
26
+ ## ライセンス
27
+ 本リポジトリは MIT License の元で公開されています。
28
+ 詳しくは [LICENSE](https://github.com/akashic-games/headless-driver/blob/master/LICENSE) をご覧ください。
29
+
30
+ ただし、画像ファイルおよび音声ファイルは
31
+ [CC BY 2.1 JP](https://creativecommons.org/licenses/by/2.1/jp/) の元で公開されています。
@@ -1,4 +1,4 @@
1
- import { RunnerParameters } from "@akashic/headless-driver-runner";
2
- import { RunnerV1 } from "@akashic/headless-driver-runner-v1";
1
+ import type { RunnerParameters } from "./runner";
2
+ import { RunnerV1 } from "./runner/v1";
3
3
  export declare function createRunnerV1(params: RunnerParameters): RunnerV1;
4
4
  export declare function getFilePath(): string;
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getFilePath = exports.createRunnerV1 = void 0;
4
- const headless_driver_runner_v1_1 = require("@akashic/headless-driver-runner-v1");
4
+ const v1_1 = require("./runner/v1");
5
5
  function createRunnerV1(params) {
6
- return new headless_driver_runner_v1_1.RunnerV1(params);
6
+ return new v1_1.RunnerV1(params);
7
7
  }
8
8
  exports.createRunnerV1 = createRunnerV1;
9
9
  function getFilePath() {
@@ -1,4 +1,4 @@
1
- import { RunnerParameters } from "@akashic/headless-driver-runner";
2
- import { RunnerV2 } from "@akashic/headless-driver-runner-v2";
1
+ import type { RunnerParameters } from "./runner";
2
+ import { RunnerV2 } from "./runner/v2";
3
3
  export declare function createRunnerV2(params: RunnerParameters): RunnerV2;
4
4
  export declare function getFilePath(): string;
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getFilePath = exports.createRunnerV2 = void 0;
4
- const headless_driver_runner_v2_1 = require("@akashic/headless-driver-runner-v2");
4
+ const v2_1 = require("./runner/v2");
5
5
  function createRunnerV2(params) {
6
- return new headless_driver_runner_v2_1.RunnerV2(params);
6
+ return new v2_1.RunnerV2(params);
7
7
  }
8
8
  exports.createRunnerV2 = createRunnerV2;
9
9
  function getFilePath() {
@@ -1,4 +1,4 @@
1
- import { RunnerParameters } from "@akashic/headless-driver-runner";
2
- import { RunnerV3 } from "@akashic/headless-driver-runner-v3";
1
+ import type { RunnerParameters } from "./runner";
2
+ import { RunnerV3 } from "./runner/v3";
3
3
  export declare function createRunnerV3(params: RunnerParameters): RunnerV3;
4
4
  export declare function getFilePath(): string;
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getFilePath = exports.createRunnerV3 = void 0;
4
- const headless_driver_runner_v3_1 = require("@akashic/headless-driver-runner-v3");
4
+ const v3_1 = require("./runner/v3");
5
5
  function createRunnerV3(params) {
6
- return new headless_driver_runner_v3_1.RunnerV3(params);
6
+ return new v3_1.RunnerV3(params);
7
7
  }
8
8
  exports.createRunnerV3 = createRunnerV3;
9
9
  function getFilePath() {
@@ -0,0 +1,24 @@
1
+ export declare class Looper {
2
+ private _running;
3
+ private _fun;
4
+ private _timerId;
5
+ private _prev;
6
+ private _errorHandler;
7
+ /**
8
+ * コンテンツの一時停止を外部からリクエストされているか
9
+ */
10
+ private _debugStarted;
11
+ /**
12
+ * game-driverがプレイを続行する状態になっているかどうか
13
+ */
14
+ private _platformStarted;
15
+ constructor(fun: (deltaTime: number) => number, errorHandler: (err: any) => void);
16
+ start(): void;
17
+ stop(): void;
18
+ debugStart(): void;
19
+ debugStop(): void;
20
+ debugStep(ms: number): void;
21
+ private _update;
22
+ private _start;
23
+ private _stop;
24
+ }
package/lib/Looper.js ADDED
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Looper = void 0;
4
+ class Looper {
5
+ constructor(fun, errorHandler) {
6
+ this._fun = fun;
7
+ this._timerId = null;
8
+ this._prev = 0;
9
+ this._errorHandler = errorHandler;
10
+ this._running = false;
11
+ this._debugStarted = true;
12
+ this._platformStarted = false;
13
+ }
14
+ start() {
15
+ this._platformStarted = true;
16
+ this._update();
17
+ }
18
+ stop() {
19
+ this._platformStarted = false;
20
+ this._update();
21
+ }
22
+ debugStart() {
23
+ this._debugStarted = true;
24
+ this._update();
25
+ }
26
+ debugStop() {
27
+ this._debugStarted = false;
28
+ this._update();
29
+ }
30
+ debugStep(ms) {
31
+ try {
32
+ this._fun(ms);
33
+ }
34
+ catch (e) {
35
+ this._errorHandler(e);
36
+ }
37
+ }
38
+ _update() {
39
+ const needsCallRunning = this._debugStarted && this._platformStarted;
40
+ if (!this._running && needsCallRunning) {
41
+ this._start();
42
+ }
43
+ else if (this._running && !needsCallRunning) {
44
+ this._stop();
45
+ }
46
+ }
47
+ _start() {
48
+ this._running = true;
49
+ try {
50
+ this._fun(0);
51
+ }
52
+ catch (e) {
53
+ this._errorHandler(e);
54
+ return;
55
+ }
56
+ this._prev = Date.now();
57
+ this._timerId = setInterval(() => {
58
+ const now = Date.now();
59
+ try {
60
+ this._fun(now - this._prev);
61
+ }
62
+ catch (e) {
63
+ this._errorHandler(e);
64
+ this._platformStarted = false;
65
+ this._stop(); // TODO: 例外発生時止めてしまうのがいいのか検討
66
+ }
67
+ this._prev = now;
68
+ }, 16);
69
+ }
70
+ _stop() {
71
+ if (this._timerId != null) {
72
+ clearInterval(this._timerId);
73
+ }
74
+ this._running = false;
75
+ this._timerId = null;
76
+ this._prev = 0;
77
+ }
78
+ }
79
+ exports.Looper = Looper;
package/lib/index.d.ts CHANGED
@@ -1,12 +1,4 @@
1
- export * from "./play/amflow/AMFlowClient";
2
- export * from "./play/Content";
3
- export * from "./play/Play";
4
- export * from "./play/AMFlowClientManager";
5
- export * from "./play/amflow/types";
6
- export * from "./play/PlayManager";
7
- export * from "./runner/RunnerManager";
1
+ export * from "./runner";
2
+ export * from "./play";
8
3
  export * from "./Logger";
9
- export * from "@akashic/headless-driver-runner";
10
- export * from "@akashic/headless-driver-runner-v1";
11
- export * from "@akashic/headless-driver-runner-v2";
12
- export * from "@akashic/headless-driver-runner-v3";
4
+ export * from "./Looper";
package/lib/index.js CHANGED
@@ -10,15 +10,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./play/amflow/AMFlowClient"), exports);
14
- __exportStar(require("./play/Content"), exports);
15
- __exportStar(require("./play/Play"), exports);
16
- __exportStar(require("./play/AMFlowClientManager"), exports);
17
- __exportStar(require("./play/amflow/types"), exports);
18
- __exportStar(require("./play/PlayManager"), exports);
19
- __exportStar(require("./runner/RunnerManager"), exports);
13
+ __exportStar(require("./runner"), exports);
14
+ __exportStar(require("./play"), exports);
20
15
  __exportStar(require("./Logger"), exports);
21
- __exportStar(require("@akashic/headless-driver-runner"), exports);
22
- __exportStar(require("@akashic/headless-driver-runner-v1"), exports);
23
- __exportStar(require("@akashic/headless-driver-runner-v2"), exports);
24
- __exportStar(require("@akashic/headless-driver-runner-v3"), exports);
16
+ __exportStar(require("./Looper"), exports);
@@ -1,4 +1,4 @@
1
- import { Permission } from "@akashic/amflow";
1
+ import type { Permission } from "@akashic/amflow";
2
2
  import { AMFlowClient } from "./amflow/AMFlowClient";
3
3
  export declare class AMFlowClientManager {
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { ContentLocation } from "./Content";
1
+ import type { ContentLocation } from "./Content";
2
2
  export declare type PlayStatus = "preparing" | "running" | "suspending" | "broken";
3
3
  export declare type Play = ContentLocation & BasePlay;
4
4
  export interface BasePlay {
@@ -1,8 +1,8 @@
1
- import { Permission } from "@akashic/amflow";
2
- import { AMFlowClient } from "./amflow/AMFlowClient";
3
- import { DumpedPlaylog } from "./amflow/types";
4
- import { ContentLocation } from "./Content";
5
- import { Play, PlayStatus } from "./Play";
1
+ import type { Permission } from "@akashic/amflow";
2
+ import type { AMFlowClient } from "./amflow/AMFlowClient";
3
+ import type { DumpedPlaylog } from "./amflow/types";
4
+ import type { ContentLocation } from "./Content";
5
+ import type { Play, PlayStatus } from "./Play";
6
6
  export declare type PlayManagerParameters = ContentLocation;
7
7
  export interface PlayFilter {
8
8
  status: PlayStatus;
@@ -1,8 +1,8 @@
1
- import { AMFlow, GetStartPointOptions, GetTickListOptions, Permission, StartPoint } from "@akashic/amflow";
2
- import { Event, StorageData, StorageKey, StorageReadKey, StorageValue, Tick, TickList } from "@akashic/playlog";
1
+ import type { AMFlow, GetStartPointOptions, GetTickListOptions, Permission, StartPoint } from "@akashic/amflow";
2
+ import type { Event, StorageData, StorageKey, StorageReadKey, StorageValue, Tick, TickList } from "@akashic/playlog";
3
3
  import { Trigger } from "@akashic/trigger";
4
- import { AMFlowStore } from "./AMFlowStore";
5
- import { DumpedPlaylog } from "./types";
4
+ import type { AMFlowStore } from "./AMFlowStore";
5
+ import type { DumpedPlaylog } from "./types";
6
6
  export declare type AMFlowState = "connecting" | "open" | "closing" | "closed";
7
7
  /**
8
8
  * Runnerと1対1で対応するAMFlow実装。
@@ -1,7 +1,7 @@
1
- import { GetStartPointOptions, GetTickListOptions, Permission, StartPoint } from "@akashic/amflow";
2
- import { Event, Tick, TickList } from "@akashic/playlog";
1
+ import type { GetStartPointOptions, GetTickListOptions, Permission, StartPoint } from "@akashic/amflow";
2
+ import type { Event, Tick, TickList } from "@akashic/playlog";
3
3
  import { Trigger } from "@akashic/trigger";
4
- import { DumpedPlaylog } from "./types";
4
+ import type { DumpedPlaylog } from "./types";
5
5
  /**
6
6
  * AMFlow のストア。
7
7
  * 一つのプレーに対して一つ存在する。
@@ -0,0 +1,4 @@
1
+ export * from "./AMFlowClient";
2
+ export * from "./AMFlowStore";
3
+ export * from "./ErrorFactory";
4
+ export * from "./types";
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./AMFlowClient"), exports);
14
+ __exportStar(require("./AMFlowStore"), exports);
15
+ __exportStar(require("./ErrorFactory"), exports);
16
+ __exportStar(require("./types"), exports);
@@ -1,5 +1,5 @@
1
- import { StartPoint } from "@akashic/amflow";
2
- import { TickList } from "@akashic/playlog";
1
+ import type { StartPoint } from "@akashic/amflow";
2
+ import type { TickList } from "@akashic/playlog";
3
3
  export interface DumpedPlaylog {
4
4
  tickList: TickList | null;
5
5
  startPoints: StartPoint[];
@@ -0,0 +1,5 @@
1
+ export * from "./AMFlowClientManager";
2
+ export * from "./Play";
3
+ export * from "./PlayManager";
4
+ export * from "./Content";
5
+ export * from "./amflow";
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./AMFlowClientManager"), exports);
14
+ __exportStar(require("./Play"), exports);
15
+ __exportStar(require("./PlayManager"), exports);
16
+ __exportStar(require("./Content"), exports);
17
+ __exportStar(require("./amflow"), exports);
@@ -0,0 +1,25 @@
1
+ import type { AMFlow } from "@akashic/amflow";
2
+ import type { RunnerRenderingMode } from "./types";
3
+ export interface PlatformParameters {
4
+ assetBaseUrl: string;
5
+ configurationBaseUrl?: string;
6
+ amflow: AMFlow;
7
+ sendToExternalHandler: (data: any) => void;
8
+ trusted?: boolean;
9
+ renderingMode?: RunnerRenderingMode;
10
+ errorHandler: (err: any) => void;
11
+ loadFileHandler: (url: string, callback: (err: Error | null, data?: string) => void) => void;
12
+ }
13
+ export declare abstract class Platform {
14
+ amflow: AMFlow;
15
+ assetBaseUrl: string;
16
+ configurationBaseUrl: string | undefined;
17
+ trusted: boolean;
18
+ renderingMode: RunnerRenderingMode;
19
+ protected sendToExternalHandler: (data: any) => void;
20
+ protected errorHandler: (err: any) => void;
21
+ protected loadFileHandler: (url: string, callback: (err: Error | null, data?: string) => void) => void;
22
+ constructor(param: PlatformParameters);
23
+ sendToExternal(_playId: string, data: any): void;
24
+ loadGameConfiguration: (url: string, callback: (err: Error | null, data?: string | undefined) => void) => void;
25
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Platform = void 0;
4
+ class Platform {
5
+ constructor(param) {
6
+ var _a;
7
+ // eslint-disable-next-line @typescript-eslint/typedef
8
+ this.loadGameConfiguration = (url, callback) => {
9
+ this.loadFileHandler(url, (err, str) => {
10
+ if (err) {
11
+ callback(err);
12
+ }
13
+ else if (!str) {
14
+ callback(new Error("Platform#loadGameConfiguration(): No data received"));
15
+ }
16
+ else {
17
+ callback(null, JSON.parse(str));
18
+ }
19
+ });
20
+ };
21
+ this.assetBaseUrl = param.assetBaseUrl;
22
+ this.configurationBaseUrl = param.configurationBaseUrl;
23
+ this.amflow = param.amflow;
24
+ this.trusted = !!param.trusted;
25
+ this.renderingMode = (_a = param.renderingMode) !== null && _a !== void 0 ? _a : "none";
26
+ this.sendToExternalHandler = param.sendToExternalHandler;
27
+ this.errorHandler = param.errorHandler;
28
+ this.loadFileHandler = param.loadFileHandler;
29
+ }
30
+ sendToExternal(_playId, data) {
31
+ this.sendToExternalHandler(data);
32
+ }
33
+ }
34
+ exports.Platform = Platform;
@@ -0,0 +1,110 @@
1
+ import type { AMFlow } from "@akashic/amflow";
2
+ import { Trigger } from "@akashic/trigger";
3
+ import type { Platform } from "./Platform";
4
+ import type { RunnerAdvanceConditionFunc, RunnerExecutionMode, RunnerPlayer, RunnerPointEvent, RunnerRenderingMode } from "./types";
5
+ export interface RunnerParameters {
6
+ contentUrl: string;
7
+ assetBaseUrl: string;
8
+ configurationUrl: string;
9
+ configurationBaseUrl?: string;
10
+ playId: string;
11
+ playToken: string;
12
+ runnerId: string;
13
+ amflow: AMFlow;
14
+ executionMode: RunnerExecutionMode;
15
+ trusted?: boolean;
16
+ renderingMode?: RunnerRenderingMode;
17
+ loadFileHandler: (url: string, callback: (err: Error | null, data?: string) => void) => void;
18
+ external?: {
19
+ [key: string]: string;
20
+ };
21
+ gameArgs?: any;
22
+ player?: RunnerPlayer;
23
+ externalValue?: {
24
+ [key: string]: any;
25
+ };
26
+ }
27
+ export interface RunnerStartParameters {
28
+ /**
29
+ * コンテンツの進行を一時停止するかどうか。
30
+ * 初期値は `false` 。
31
+ */
32
+ paused?: boolean;
33
+ }
34
+ export declare abstract class Runner {
35
+ abstract readonly engineVersion: string;
36
+ /**
37
+ * g の名前空間のオブジェクト。`g.game` は `undefined` であることに注意。
38
+ */
39
+ abstract readonly g: any;
40
+ abstract platform: Platform | null;
41
+ errorTrigger: Trigger<Error>;
42
+ sendToExternalTrigger: Trigger<any>;
43
+ private params;
44
+ get runnerId(): string;
45
+ get playId(): string;
46
+ get playToken(): string;
47
+ get contentUrl(): string;
48
+ get assetBaseUrl(): string;
49
+ get configurationUrl(): string;
50
+ get configurationBaseUrl(): string | undefined;
51
+ get amflow(): AMFlow;
52
+ get executionMode(): RunnerExecutionMode;
53
+ get trusted(): boolean;
54
+ get renderingMode(): RunnerRenderingMode;
55
+ get loadFileHandler(): (url: string, callback: (err: Error | null, data?: string) => void) => void;
56
+ get gameArgs(): any;
57
+ get player(): RunnerPlayer | undefined;
58
+ get external(): {
59
+ [key: string]: string;
60
+ } | undefined;
61
+ get externalValue(): {
62
+ [key: string]: any;
63
+ } | undefined;
64
+ constructor(params: RunnerParameters);
65
+ /**
66
+ * Runner を開始する。
67
+ * @param params 起動時に必要なパラメータ。
68
+ * @returns `g.game` のインスタンス。起動に失敗した場合は `null` 。
69
+ */
70
+ abstract start(params?: RunnerStartParameters): any;
71
+ /**
72
+ * Runner を停止する。
73
+ */
74
+ abstract stop(): void;
75
+ /**
76
+ * Runner を一時停止する。
77
+ */
78
+ abstract pause(): void;
79
+ /**
80
+ * Runner を再開する。
81
+ */
82
+ abstract resume(): void;
83
+ /**
84
+ * Runner を指定ミリ秒だけ進行する。
85
+ * @param ms 進行するミリ秒。
86
+ */
87
+ abstract advance(ms: number): void;
88
+ /**
89
+ * Runner を一フレーム進行する。
90
+ */
91
+ abstract step(): void;
92
+ /**
93
+ * Runner に対して任意のポイントイベントを発火させる。
94
+ * @param event 発火させるポイントイベント
95
+ */
96
+ abstract firePointEvent(event: RunnerPointEvent): void;
97
+ /**
98
+ * 実行中コンテンツのプライマリサーフェスを取得する。
99
+ * @returns プライマリサーフェスのインスタンス。
100
+ */
101
+ abstract getPrimarySurface(): any;
102
+ /**
103
+ * 引数に指定した関数が真を返すまでゲームの状態を進める。
104
+ * @param condition 進めるまでの条件となる関数。
105
+ * @param timeout タイムアウトまでのミリ秒数。省略時は `5000` 。ゲーム内時間ではなく実時間である点に注意。
106
+ */
107
+ advanceUntil(condition: RunnerAdvanceConditionFunc, timeout?: number): Promise<void>;
108
+ protected abstract _stepMinimal(): void;
109
+ protected onError(error: Error): void;
110
+ }
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Runner = void 0;
13
+ const trigger_1 = require("@akashic/trigger");
14
+ class Runner {
15
+ constructor(params) {
16
+ this.errorTrigger = new trigger_1.Trigger();
17
+ this.sendToExternalTrigger = new trigger_1.Trigger();
18
+ this.params = params;
19
+ }
20
+ get runnerId() {
21
+ return this.params.runnerId;
22
+ }
23
+ get playId() {
24
+ return this.params.playId;
25
+ }
26
+ get playToken() {
27
+ return this.params.playToken;
28
+ }
29
+ get contentUrl() {
30
+ return this.params.contentUrl;
31
+ }
32
+ get assetBaseUrl() {
33
+ return this.params.assetBaseUrl;
34
+ }
35
+ get configurationUrl() {
36
+ return this.params.configurationUrl;
37
+ }
38
+ get configurationBaseUrl() {
39
+ return this.params.configurationBaseUrl;
40
+ }
41
+ get amflow() {
42
+ return this.params.amflow;
43
+ }
44
+ get executionMode() {
45
+ return this.params.executionMode;
46
+ }
47
+ get trusted() {
48
+ return !!this.params.trusted;
49
+ }
50
+ get renderingMode() {
51
+ var _a;
52
+ return (_a = this.params.renderingMode) !== null && _a !== void 0 ? _a : "none";
53
+ }
54
+ get loadFileHandler() {
55
+ return this.params.loadFileHandler;
56
+ }
57
+ get gameArgs() {
58
+ return this.params.gameArgs;
59
+ }
60
+ get player() {
61
+ return this.params.player;
62
+ }
63
+ get external() {
64
+ return this.params.external;
65
+ }
66
+ get externalValue() {
67
+ return this.params.externalValue;
68
+ }
69
+ /**
70
+ * 引数に指定した関数が真を返すまでゲームの状態を進める。
71
+ * @param condition 進めるまでの条件となる関数。
72
+ * @param timeout タイムアウトまでのミリ秒数。省略時は `5000` 。ゲーム内時間ではなく実時間である点に注意。
73
+ */
74
+ advanceUntil(condition, timeout = 5000) {
75
+ return __awaiter(this, void 0, void 0, function* () {
76
+ return new Promise((resolve, reject) => {
77
+ const limit = Date.now() + timeout;
78
+ const handler = () => {
79
+ if (limit < Date.now()) {
80
+ return void reject(new Error("Runner#advanceUntil(): processing timeout"));
81
+ }
82
+ try {
83
+ if (condition())
84
+ return void resolve();
85
+ this._stepMinimal();
86
+ }
87
+ catch (e) {
88
+ return void reject(e);
89
+ }
90
+ setImmediate(handler);
91
+ };
92
+ handler();
93
+ });
94
+ });
95
+ }
96
+ onError(error) {
97
+ this.stop();
98
+ this.errorTrigger.fire(error);
99
+ }
100
+ }
101
+ exports.Runner = Runner;
@@ -1,10 +1,10 @@
1
- import { RunnerExecutionMode, RunnerPlayer, RunnerRenderingMode } from "@akashic/headless-driver-runner";
2
- import { RunnerV1, RunnerV1Game } from "@akashic/headless-driver-runner-v1";
3
- import { RunnerV2, RunnerV2Game } from "@akashic/headless-driver-runner-v2";
4
- import { RunnerV3, RunnerV3Game } from "@akashic/headless-driver-runner-v3";
5
1
  import { NodeVM } from "vm2";
6
- import { AMFlowClient } from "../play/amflow/AMFlowClient";
7
- import { PlayManager } from "../play/PlayManager";
2
+ import type { AMFlowClient } from "../play/amflow/AMFlowClient";
3
+ import type { PlayManager } from "../play/PlayManager";
4
+ import type { RunnerExecutionMode, RunnerPlayer, RunnerRenderingMode } from "./types";
5
+ import type { RunnerV1, RunnerV1Game } from "./v1";
6
+ import type { RunnerV2, RunnerV2Game } from "./v2";
7
+ import type { RunnerV3, RunnerV3Game } from "./v3";
8
8
  export interface CreateRunnerParameters {
9
9
  playId: string;
10
10
  amflow: AMFlowClient;
@@ -13,13 +13,13 @@ exports.RunnerManager = void 0;
13
13
  const fs = require("fs");
14
14
  const path = require("path");
15
15
  const url = require("url");
16
- const requireEngineFiles_1 = require("@akashic/headless-driver-runner-v3/lib/requireEngineFiles");
17
16
  const vm2_1 = require("vm2");
17
+ const ExecVmScriptV3 = require("..//ExecuteVmScriptV3");
18
18
  const ExecVmScriptV1 = require("../ExecuteVmScriptV1");
19
19
  const ExecVmScriptV2 = require("../ExecuteVmScriptV2");
20
- const ExecVmScriptV3 = require("../ExecuteVmScriptV3");
21
20
  const Logger_1 = require("../Logger");
22
21
  const utils_1 = require("../utils");
22
+ const requireEngineFiles_1 = require("./v3/requireEngineFiles");
23
23
  /**
24
24
  * Runner を管理するマネージャ。
25
25
  */