@datamoc/mw_games 0.5.4 → 0.7.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/README.md +58 -3
- package/dist/actors/Appearances.d.ts.map +1 -1
- package/dist/actors/Appearances.js.map +1 -1
- package/dist/actors/Aura.d.ts.map +1 -1
- package/dist/actors/Aura.js.map +1 -1
- package/dist/actors/EntityTemplate.d.ts.map +1 -1
- package/dist/actors/EntityTemplate.js.map +1 -1
- package/dist/actors/Inventory.d.ts.map +1 -1
- package/dist/actors/Inventory.js +6 -1
- package/dist/actors/Inventory.js.map +1 -1
- package/dist/actors/Support.d.ts.map +1 -1
- package/dist/actors/Support.js.map +1 -1
- package/dist/actors/index.d.ts +1 -1
- package/dist/actors/index.d.ts.map +1 -1
- package/dist/actors/index.js.map +1 -1
- package/dist/actors/skillCheck.d.ts.map +1 -1
- package/dist/actors/skillCheck.js.map +1 -1
- package/dist/assets/Streaming.d.ts.map +1 -1
- package/dist/assets/Streaming.js.map +1 -1
- package/dist/assets/binary.d.ts.map +1 -1
- package/dist/assets/binary.js.map +1 -1
- package/dist/assets/loader.d.ts +15 -4
- package/dist/assets/loader.d.ts.map +1 -1
- package/dist/assets/loader.js +8 -23
- package/dist/assets/loader.js.map +1 -1
- package/dist/audio/Midi.d.ts.map +1 -1
- package/dist/audio/Midi.js +17 -3
- package/dist/audio/Midi.js.map +1 -1
- package/dist/audio/Music.d.ts.map +1 -1
- package/dist/audio/Music.js +8 -1
- package/dist/audio/Music.js.map +1 -1
- package/dist/audio/Synth.d.ts.map +1 -1
- package/dist/audio/Synth.js +1 -1
- package/dist/audio/Synth.js.map +1 -1
- package/dist/battle/BattleAI.js.map +1 -1
- package/dist/board/Army.d.ts.map +1 -1
- package/dist/board/Army.js.map +1 -1
- package/dist/board/Classics.d.ts.map +1 -1
- package/dist/board/Classics.js +310 -133
- package/dist/board/Classics.js.map +1 -1
- package/dist/board/FogOfWar.d.ts.map +1 -1
- package/dist/board/FogOfWar.js +12 -4
- package/dist/board/FogOfWar.js.map +1 -1
- package/dist/board/HexSkirmish.d.ts.map +1 -1
- package/dist/board/HexSkirmish.js +12 -4
- package/dist/board/HexSkirmish.js.map +1 -1
- package/dist/board/Tactics.d.ts.map +1 -1
- package/dist/board/Tactics.js +71 -26
- package/dist/board/Tactics.js.map +1 -1
- package/dist/board/chess.d.ts.map +1 -1
- package/dist/board/chess.js +8 -4
- package/dist/board/chess.js.map +1 -1
- package/dist/board/index.d.ts +2 -2
- package/dist/board/index.d.ts.map +1 -1
- package/dist/board/index.js +1 -1
- package/dist/board/index.js.map +1 -1
- package/dist/{roguelike → core}/Blob.d.ts +22 -11
- package/dist/core/Blob.d.ts.map +1 -0
- package/dist/{roguelike → core}/Blob.js +51 -28
- package/dist/core/Blob.js.map +1 -0
- package/dist/core/Csv.d.ts.map +1 -1
- package/dist/core/Csv.js +8 -2
- package/dist/core/Csv.js.map +1 -1
- package/dist/core/Input.d.ts.map +1 -1
- package/dist/core/Input.js +17 -4
- package/dist/core/Input.js.map +1 -1
- package/dist/core/Loading.d.ts.map +1 -1
- package/dist/core/Loading.js.map +1 -1
- package/dist/core/Motion.d.ts +27 -0
- package/dist/core/Motion.d.ts.map +1 -0
- package/dist/core/Motion.js +102 -0
- package/dist/core/Motion.js.map +1 -0
- package/dist/core/Multiplayer.d.ts.map +1 -1
- package/dist/core/Multiplayer.js.map +1 -1
- package/dist/core/PlayerInput.d.ts.map +1 -1
- package/dist/core/PlayerInput.js.map +1 -1
- package/dist/core/Replay.d.ts.map +1 -1
- package/dist/core/Replay.js.map +1 -1
- package/dist/core/Sanitize.d.ts.map +1 -1
- package/dist/core/Sanitize.js.map +1 -1
- package/dist/core/Save.d.ts.map +1 -1
- package/dist/core/Save.js.map +1 -1
- package/dist/core/Tween.d.ts +22 -2
- package/dist/core/Tween.d.ts.map +1 -1
- package/dist/core/Tween.js +30 -7
- package/dist/core/Tween.js.map +1 -1
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -0
- package/dist/core/index.js.map +1 -1
- package/dist/i18n/Content.js +1 -2
- package/dist/i18n/Content.js.map +1 -1
- package/dist/i18n/EditSession.d.ts.map +1 -1
- package/dist/i18n/EditSession.js.map +1 -1
- package/dist/i18n/Fluent.d.ts.map +1 -1
- package/dist/i18n/Fluent.js +5 -1
- package/dist/i18n/Fluent.js.map +1 -1
- package/dist/i18n/FormatSpec.d.ts.map +1 -1
- package/dist/i18n/FormatSpec.js +3 -1
- package/dist/i18n/FormatSpec.js.map +1 -1
- package/dist/i18n/Validate.d.ts.map +1 -1
- package/dist/i18n/Validate.js +10 -2
- package/dist/i18n/Validate.js.map +1 -1
- package/dist/i18n/index.d.ts +1 -1
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +27 -4
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mw_games.global.js +97 -94
- package/dist/mwl/actors.d.ts +16 -0
- package/dist/mwl/actors.d.ts.map +1 -0
- package/dist/mwl/actors.js +25 -0
- package/dist/mwl/actors.js.map +1 -0
- package/dist/mwl/catalog.d.ts +13 -0
- package/dist/mwl/catalog.d.ts.map +1 -0
- package/dist/mwl/catalog.js +52 -0
- package/dist/mwl/catalog.js.map +1 -0
- package/dist/mwl/compiler.d.ts +45 -0
- package/dist/mwl/compiler.d.ts.map +1 -0
- package/dist/mwl/compiler.js +69 -0
- package/dist/mwl/compiler.js.map +1 -0
- package/dist/mwl/content.d.ts +54 -0
- package/dist/mwl/content.d.ts.map +1 -0
- package/dist/mwl/content.js +97 -0
- package/dist/mwl/content.js.map +1 -0
- package/dist/mwl/expression.d.ts +21 -0
- package/dist/mwl/expression.d.ts.map +1 -0
- package/dist/mwl/expression.js +100 -0
- package/dist/mwl/expression.js.map +1 -0
- package/dist/mwl/grammar.d.ts +39 -0
- package/dist/mwl/grammar.d.ts.map +1 -0
- package/dist/mwl/grammar.js +204 -0
- package/dist/mwl/grammar.js.map +1 -0
- package/dist/mwl/hooks.d.ts +81 -0
- package/dist/mwl/hooks.d.ts.map +1 -0
- package/dist/mwl/hooks.js +78 -0
- package/dist/mwl/hooks.js.map +1 -0
- package/dist/mwl/index.d.ts +21 -0
- package/dist/mwl/index.d.ts.map +1 -0
- package/dist/mwl/index.js +11 -0
- package/dist/mwl/index.js.map +1 -0
- package/dist/mwl/persistence.d.ts +15 -0
- package/dist/mwl/persistence.d.ts.map +1 -0
- package/dist/mwl/persistence.js +33 -0
- package/dist/mwl/persistence.js.map +1 -0
- package/dist/mwl/runtime.d.ts +169 -0
- package/dist/mwl/runtime.d.ts.map +1 -0
- package/dist/mwl/runtime.js +519 -0
- package/dist/mwl/runtime.js.map +1 -0
- package/dist/mwl/schema.d.ts +20 -0
- package/dist/mwl/schema.d.ts.map +1 -0
- package/dist/mwl/schema.js +351 -0
- package/dist/mwl/schema.js.map +1 -0
- package/dist/roguelike/ContentRoll.d.ts.map +1 -1
- package/dist/roguelike/ContentRoll.js.map +1 -1
- package/dist/roguelike/Doors.d.ts.map +1 -1
- package/dist/roguelike/Doors.js.map +1 -1
- package/dist/roguelike/DungeonParity.d.ts.map +1 -1
- package/dist/roguelike/DungeonParity.js +13 -4
- package/dist/roguelike/DungeonParity.js.map +1 -1
- package/dist/roguelike/Features.d.ts.map +1 -1
- package/dist/roguelike/Features.js.map +1 -1
- package/dist/roguelike/FieldOfView.d.ts.map +1 -1
- package/dist/roguelike/FieldOfView.js.map +1 -1
- package/dist/roguelike/Level.d.ts.map +1 -1
- package/dist/roguelike/Level.js.map +1 -1
- package/dist/roguelike/Scheduler.d.ts.map +1 -1
- package/dist/roguelike/Scheduler.js +10 -2
- package/dist/roguelike/Scheduler.js.map +1 -1
- package/dist/roguelike/Targeting.d.ts.map +1 -1
- package/dist/roguelike/Targeting.js.map +1 -1
- package/dist/roguelike/index.d.ts +0 -1
- package/dist/roguelike/index.d.ts.map +1 -1
- package/dist/roguelike/index.js +0 -1
- package/dist/roguelike/index.js.map +1 -1
- package/dist/rpg/Collision.d.ts.map +1 -1
- package/dist/rpg/Collision.js.map +1 -1
- package/dist/rpg/EventRunner.d.ts.map +1 -1
- package/dist/rpg/EventRunner.js.map +1 -1
- package/dist/rpg/Marshal.d.ts.map +1 -1
- package/dist/rpg/Marshal.js +2 -2
- package/dist/rpg/Marshal.js.map +1 -1
- package/dist/rpg/Quest.js.map +1 -1
- package/dist/rpg/index.d.ts +1 -1
- package/dist/rpg/index.d.ts.map +1 -1
- package/dist/rpg/index.js.map +1 -1
- package/dist/simulation/Scenario.d.ts.map +1 -1
- package/dist/simulation/Scenario.js.map +1 -1
- package/dist/simulation/Turns.d.ts.map +1 -1
- package/dist/simulation/Turns.js.map +1 -1
- package/dist/simulation/index.d.ts +1 -1
- package/dist/simulation/index.d.ts.map +1 -1
- package/dist/simulation/index.js.map +1 -1
- package/dist/three-d/Character3D.d.ts.map +1 -1
- package/dist/three-d/Character3D.js +3 -1
- package/dist/three-d/Character3D.js.map +1 -1
- package/dist/three-d/Collision3D.d.ts.map +1 -1
- package/dist/three-d/Collision3D.js.map +1 -1
- package/dist/three-d/Heightmap.d.ts.map +1 -1
- package/dist/three-d/Heightmap.js.map +1 -1
- package/dist/three-d/Models.d.ts.map +1 -1
- package/dist/three-d/Models.js.map +1 -1
- package/dist/three-d/TileGrid3D.d.ts.map +1 -1
- package/dist/three-d/TileGrid3D.js +5 -4
- package/dist/three-d/TileGrid3D.js.map +1 -1
- package/dist/three-d/Vox.d.ts.map +1 -1
- package/dist/three-d/Vox.js +6 -3
- package/dist/three-d/Vox.js.map +1 -1
- package/dist/two-d/render/AnimatedSprite.d.ts +6 -0
- package/dist/two-d/render/AnimatedSprite.d.ts.map +1 -1
- package/dist/two-d/render/AnimatedSprite.js +6 -0
- package/dist/two-d/render/AnimatedSprite.js.map +1 -1
- package/dist/two-d/render/Camera.d.ts.map +1 -1
- package/dist/two-d/render/Camera.js +13 -5
- package/dist/two-d/render/Camera.js.map +1 -1
- package/dist/two-d/render/Capabilities.d.ts.map +1 -1
- package/dist/two-d/render/Capabilities.js +48 -8
- package/dist/two-d/render/Capabilities.js.map +1 -1
- package/dist/two-d/render/ColorBlindness.d.ts.map +1 -1
- package/dist/two-d/render/ColorBlindness.js +3 -18
- package/dist/two-d/render/ColorBlindness.js.map +1 -1
- package/dist/two-d/render/ColorTransformBatcher.d.ts.map +1 -1
- package/dist/two-d/render/ColorTransformBatcher.js +1 -1
- package/dist/two-d/render/ColorTransformBatcher.js.map +1 -1
- package/dist/two-d/render/Particles.d.ts.map +1 -1
- package/dist/two-d/render/Particles.js +32 -6
- package/dist/two-d/render/Particles.js.map +1 -1
- package/dist/two-d/render/ScreenEffects.d.ts.map +1 -1
- package/dist/two-d/render/ScreenEffects.js +11 -0
- package/dist/two-d/render/ScreenEffects.js.map +1 -1
- package/dist/two-d/render/StatusVisuals.d.ts.map +1 -1
- package/dist/two-d/render/StatusVisuals.js +3 -1
- package/dist/two-d/render/StatusVisuals.js.map +1 -1
- package/dist/two-d/render/TileMap.d.ts.map +1 -1
- package/dist/two-d/render/TileMap.js +20 -16
- package/dist/two-d/render/TileMap.js.map +1 -1
- package/dist/two-d/render/TiledMap.d.ts.map +1 -1
- package/dist/two-d/render/TiledMap.js.map +1 -1
- package/dist/two-d/render/index.d.ts +3 -3
- package/dist/two-d/render/index.d.ts.map +1 -1
- package/dist/two-d/render/index.js +1 -1
- package/dist/two-d/render/index.js.map +1 -1
- package/dist/two-d/stage/DialogueStage.d.ts.map +1 -1
- package/dist/two-d/stage/DialogueStage.js +8 -4
- package/dist/two-d/stage/DialogueStage.js.map +1 -1
- package/dist/two-d/stage/script.d.ts.map +1 -1
- package/dist/two-d/stage/script.js.map +1 -1
- package/dist/two-d/stage/twee.d.ts.map +1 -1
- package/dist/two-d/stage/twee.js.map +1 -1
- package/dist/two-d/ui/Button.d.ts.map +1 -1
- package/dist/two-d/ui/Button.js +5 -2
- package/dist/two-d/ui/Button.js.map +1 -1
- package/dist/two-d/ui/FloatingText.d.ts.map +1 -1
- package/dist/two-d/ui/FloatingText.js +4 -1
- package/dist/two-d/ui/FloatingText.js.map +1 -1
- package/dist/two-d/ui/IconGrid.d.ts.map +1 -1
- package/dist/two-d/ui/IconGrid.js.map +1 -1
- package/dist/two-d/ui/ListView.d.ts.map +1 -1
- package/dist/two-d/ui/ListView.js.map +1 -1
- package/dist/two-d/ui/LoadingScreen.d.ts.map +1 -1
- package/dist/two-d/ui/LoadingScreen.js +6 -2
- package/dist/two-d/ui/LoadingScreen.js.map +1 -1
- package/dist/two-d/ui/MessageBox.d.ts +6 -0
- package/dist/two-d/ui/MessageBox.d.ts.map +1 -1
- package/dist/two-d/ui/MessageBox.js +11 -1
- package/dist/two-d/ui/MessageBox.js.map +1 -1
- package/dist/two-d/ui/NinePatch.d.ts.map +1 -1
- package/dist/two-d/ui/NinePatch.js.map +1 -1
- package/dist/two-d/ui/RebindScreen.d.ts.map +1 -1
- package/dist/two-d/ui/RebindScreen.js.map +1 -1
- package/dist/two-d/ui/Window.d.ts.map +1 -1
- package/dist/two-d/ui/Window.js +3 -0
- package/dist/two-d/ui/Window.js.map +1 -1
- package/dist/two-d/ui/a11y.d.ts +43 -0
- package/dist/two-d/ui/a11y.d.ts.map +1 -0
- package/dist/two-d/ui/a11y.js +79 -0
- package/dist/two-d/ui/a11y.js.map +1 -0
- package/dist/two-d/ui/contrast.d.ts +30 -0
- package/dist/two-d/ui/contrast.d.ts.map +1 -0
- package/dist/two-d/ui/contrast.js +42 -0
- package/dist/two-d/ui/contrast.js.map +1 -0
- package/dist/two-d/ui/index.d.ts +3 -0
- package/dist/two-d/ui/index.d.ts.map +1 -1
- package/dist/two-d/ui/index.js +2 -0
- package/dist/two-d/ui/index.js.map +1 -1
- package/dist/two-d/ui/markdown.d.ts.map +1 -1
- package/dist/two-d/ui/markdown.js +3 -1
- package/dist/two-d/ui/markdown.js.map +1 -1
- package/dist/two-d/ui/themedText.js +1 -1
- package/dist/two-d/ui/themedText.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/world/Environment.d.ts.map +1 -1
- package/dist/world/Environment.js +17 -6
- package/dist/world/Environment.js.map +1 -1
- package/package.json +264 -239
- package/tools/compress-dist.mjs +15 -1
- package/tools/mwl.mjs +153 -0
- package/dist/roguelike/Blob.d.ts.map +0 -1
- package/dist/roguelike/Blob.js.map +0 -1
package/tools/mwl.mjs
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import process from 'node:process';
|
|
5
|
+
import { pathToFileURL } from 'node:url';
|
|
6
|
+
import {
|
|
7
|
+
collectHookReferences,
|
|
8
|
+
compile,
|
|
9
|
+
emitHooksDeclaration,
|
|
10
|
+
emitModule,
|
|
11
|
+
extractCatalog,
|
|
12
|
+
parse,
|
|
13
|
+
preprocess,
|
|
14
|
+
validate,
|
|
15
|
+
validateHookReferences,
|
|
16
|
+
} from '../dist/mwl/index.js';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Command line for MWL: validate, compile, extract-i18n, assets, hooks, build.
|
|
20
|
+
*
|
|
21
|
+
* Reading files happens here, not in the published module, so the library
|
|
22
|
+
* itself stays free of node builtins. `hooks` needs esbuild and says so
|
|
23
|
+
* clearly when it is not installed; the framework does not depend on it, so a
|
|
24
|
+
* project without hooks pays nothing for the feature.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
const args = process.argv.slice(2);
|
|
28
|
+
const commands = ['validate', 'compile', 'extract-i18n', 'assets', 'hooks', 'build'];
|
|
29
|
+
const [command, input] = args;
|
|
30
|
+
const outputFlag = args.indexOf('-o');
|
|
31
|
+
const output = outputFlag === -1 ? undefined : args[outputFlag + 1];
|
|
32
|
+
const manifestFlag = args.indexOf('--manifest');
|
|
33
|
+
const manifestPath = manifestFlag === -1 ? undefined : args[manifestFlag + 1];
|
|
34
|
+
|
|
35
|
+
if (!command || !input || !commands.includes(command)) {
|
|
36
|
+
console.error('Usage: mwl <validate|compile|extract-i18n|assets|hooks|build> input.mwl [-o output] [--manifest hooks.json]');
|
|
37
|
+
process.exitCode = 2;
|
|
38
|
+
} else {
|
|
39
|
+
const source = fs.readFileSync(input, 'utf8');
|
|
40
|
+
if (command === 'validate') {
|
|
41
|
+
const diagnostics = validate(parse(preprocess(source, { file: input }), input));
|
|
42
|
+
if (diagnostics.length) {
|
|
43
|
+
for (const diagnostic of diagnostics)
|
|
44
|
+
console.error(
|
|
45
|
+
`${diagnostic.location.file}:${diagnostic.location.line}:${diagnostic.location.column}: ${diagnostic.message}`,
|
|
46
|
+
);
|
|
47
|
+
process.exitCode = 1;
|
|
48
|
+
} else console.log(`${input}: valid MWL`);
|
|
49
|
+
} else if (command === 'hooks') {
|
|
50
|
+
await hooks(source);
|
|
51
|
+
} else if (command === 'build') {
|
|
52
|
+
build(source);
|
|
53
|
+
} else {
|
|
54
|
+
const result = compile(source, { file: input });
|
|
55
|
+
const values =
|
|
56
|
+
command === 'extract-i18n' ? extractCatalog(result) : command === 'assets' ? result.assets : result;
|
|
57
|
+
const text = command === 'compile' ? emitModule(result) : `${JSON.stringify(values, null, '\t')}\n`;
|
|
58
|
+
if (output) {
|
|
59
|
+
fs.mkdirSync(path.dirname(path.resolve(output)), { recursive: true });
|
|
60
|
+
fs.writeFileSync(output, text);
|
|
61
|
+
} else process.stdout.write(text);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** One deterministic build step for the three files every MWL game consumes. */
|
|
66
|
+
function build(source) {
|
|
67
|
+
const game = compile(source, { file: input });
|
|
68
|
+
const directory = path.resolve(output ?? 'generated');
|
|
69
|
+
fs.mkdirSync(directory, { recursive: true });
|
|
70
|
+
fs.writeFileSync(path.join(directory, 'game-data.ts'), emitModule(game));
|
|
71
|
+
fs.writeFileSync(path.join(directory, 'i18n.json'), `${JSON.stringify(extractCatalog(game), null, '\t')}\n`);
|
|
72
|
+
fs.writeFileSync(path.join(directory, 'assets.json'), `${JSON.stringify({ assets: game.assets }, null, '\t')}\n`);
|
|
73
|
+
console.log(`built MWL into ${directory}`);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* `mwl hooks game.mwl` prints the hook references content needs.
|
|
78
|
+
* `mwl hooks game.mwl --manifest hooks.json -o generated/hooks.mjs` resolves
|
|
79
|
+
* each reference against the manifest, bundles the hook sources with esbuild,
|
|
80
|
+
* and writes the matching declaration next to the bundle.
|
|
81
|
+
*/
|
|
82
|
+
async function hooks(source) {
|
|
83
|
+
const game = compile(source, { file: input });
|
|
84
|
+
const references = collectHookReferences(game);
|
|
85
|
+
if (!output) {
|
|
86
|
+
process.stdout.write(
|
|
87
|
+
`${JSON.stringify(
|
|
88
|
+
references.map((reference) => `${reference.type}:${reference.name}`),
|
|
89
|
+
null,
|
|
90
|
+
'\t',
|
|
91
|
+
)}\n`,
|
|
92
|
+
);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const manifest = manifestPath ? JSON.parse(fs.readFileSync(manifestPath, 'utf8')) : {};
|
|
96
|
+
const diagnostics = validateHookReferences(references, Object.keys(manifest));
|
|
97
|
+
if (diagnostics.length) {
|
|
98
|
+
for (const diagnostic of diagnostics)
|
|
99
|
+
console.error(`${diagnostic.location.file}:${diagnostic.location.line}: ${diagnostic.message}`);
|
|
100
|
+
console.error(`${diagnostics.length} hook reference(s) have no manifest entry; nothing was bundled`);
|
|
101
|
+
process.exitCode = 1;
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Resolve esbuild from the game project (the working directory), not from
|
|
106
|
+
// the framework package: the framework does not depend on esbuild, and the
|
|
107
|
+
// project that writes hooks is the one that installs the bundler.
|
|
108
|
+
const requireFromProject = createRequire(pathToFileURL(path.join(process.cwd(), 'package.json')));
|
|
109
|
+
let esbuild = null;
|
|
110
|
+
try {
|
|
111
|
+
esbuild = requireFromProject('esbuild');
|
|
112
|
+
} catch {
|
|
113
|
+
esbuild = null;
|
|
114
|
+
}
|
|
115
|
+
if (!esbuild) {
|
|
116
|
+
console.error('mwl hooks needs esbuild. Install it in the game project: npm install --save-dev esbuild');
|
|
117
|
+
process.exitCode = 2;
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const manifestDir = manifestPath ? path.dirname(path.resolve(manifestPath)) : process.cwd();
|
|
122
|
+
// The entry file lives beside the hooks so its imports stay relative;
|
|
123
|
+
// esbuild does not resolve `file://` import specifiers.
|
|
124
|
+
const entryFile = path.join(manifestDir, `.mwl-hooks-${process.pid}-${Date.now()}.ts`);
|
|
125
|
+
const imports = [];
|
|
126
|
+
const exports = [];
|
|
127
|
+
references.forEach((reference, index) => {
|
|
128
|
+
const id = `${reference.type}:${reference.name}`;
|
|
129
|
+
const [file, exportName = reference.name] = String(manifest[id]).split('#');
|
|
130
|
+
const relative = path.relative(manifestDir, path.resolve(manifestDir, file)).split(path.sep).join('/');
|
|
131
|
+
const specifier = relative.startsWith('.') ? relative : `./${relative}`;
|
|
132
|
+
imports.push(`import { ${exportName} as hook${index} } from ${JSON.stringify(specifier)};`);
|
|
133
|
+
exports.push(`\t${JSON.stringify(id)}: hook${index},`);
|
|
134
|
+
});
|
|
135
|
+
const entry = `${imports.join('\n')}\n\nexport const hooks = {\n${exports.join('\n')}\n};\n`;
|
|
136
|
+
fs.writeFileSync(entryFile, entry);
|
|
137
|
+
try {
|
|
138
|
+
fs.mkdirSync(path.dirname(path.resolve(output)), { recursive: true });
|
|
139
|
+
await esbuild.build({
|
|
140
|
+
entryPoints: [entryFile],
|
|
141
|
+
bundle: true,
|
|
142
|
+
format: 'esm',
|
|
143
|
+
platform: 'neutral',
|
|
144
|
+
target: 'es2022',
|
|
145
|
+
outfile: output,
|
|
146
|
+
logLevel: 'silent',
|
|
147
|
+
});
|
|
148
|
+
fs.writeFileSync(`${output}.d.ts`, emitHooksDeclaration(references));
|
|
149
|
+
console.log(`bundled ${references.length} hook(s) into ${output}`);
|
|
150
|
+
} finally {
|
|
151
|
+
fs.rmSync(entryFile, { force: true });
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Blob.d.ts","sourceRoot":"","sources":["../../src/roguelike/Blob.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,qBAAa,IAAI;IAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,OAAO,CAAC,MAAM,CAAe;IAE7B,YAAY,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAIxC;IAED,4DAA4D;IAC5D,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrC;IAED,iFAAiF;IACjF,KAAK,IAAI,MAAM,CAId;IAED,2EAA2E;IAC3E,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAG/C;IAED;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,EAAE,MAAM,SAAO,EAAE,KAAK,SAAM,GAAG,IAAI,CAgCpF;IAED,qFAAqF;IACrF,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAS3E;IAED,MAAM,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAE5D;IAED,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAI/E;CACD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Blob.js","sourceRoot":"","sources":["../../src/roguelike/Blob.ts"],"names":[],"mappings":"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"}
|