@energy8platform/create-slot 0.6.22 → 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/dist/cli.js CHANGED
@@ -48,6 +48,10 @@ function parseFlags(argv) {
48
48
  out.stake = true;
49
49
  else if (a === '--no-stake')
50
50
  out.stake = false;
51
+ else if (a === '--artube')
52
+ out.artube = true;
53
+ else if (a === '--no-artube')
54
+ out.artube = false;
51
55
  else if (a === '--dir')
52
56
  out.dir = args[++i];
53
57
  }
@@ -61,6 +65,9 @@ function applyDefaults(partial) {
61
65
  mechanic,
62
66
  grid: partial.grid ?? DEFAULT_GRID[mechanic],
63
67
  stake: partial.stake ?? true,
68
+ // Off by default: Artube needs a companion backend repo (@energy8platform/artube-server), so
69
+ // it's an explicit choice, not something a game inherits by being scaffolded.
70
+ artube: partial.artube ?? false,
64
71
  cascades: partial.cascades ?? (mechanic !== 'lines'),
65
72
  };
66
73
  }
@@ -109,7 +116,7 @@ function seedFromArgv(argv) {
109
116
  return flags;
110
117
  }
111
118
 
112
- /** Ask the 5 questions interactively, applying defaults for blank answers. */
119
+ /** Ask the questions interactively, applying defaults for blank answers. */
113
120
  async function prompt(seed) {
114
121
  const rl = createInterface({ input: stdin, output: stdout });
115
122
  try {
@@ -120,7 +127,8 @@ async function prompt(seed) {
120
127
  const gridStr = (await rl.question('Grid colsxrows [default for mechanic]: ')).trim();
121
128
  const grid = seed.grid ?? (gridStr ? { cols: Number(gridStr.split('x')[0]), rows: Number(gridStr.split('x')[1]) } : undefined);
122
129
  const stakeAns = seed.stake ?? ((await rl.question('Stake integration? (Y/n): ')).trim().toLowerCase() !== 'n');
123
- return applyDefaults({ id, title, mechanic, grid, stake: stakeAns });
130
+ const artubeAns = seed.artube ?? ((await rl.question('Artube integration? (y/N): ')).trim().toLowerCase() === 'y');
131
+ return applyDefaults({ id, title, mechanic, grid, stake: stakeAns, artube: artubeAns });
124
132
  }
125
133
  finally {
126
134
  rl.close();
@@ -177,10 +185,102 @@ export const model = defineGame(spec);
177
185
  * project is wired, what to edit, and what the framework already handles. */
178
186
  function genClaudeMd(a) {
179
187
  const cascade = a.cascades === true;
188
+ const artubeCommands = a.artube
189
+ ? `npm run dev:artube # ONE command: frontend + the game's backend, /api proxied — see below
190
+ npm run build:artube # BOTH Artube deployables: dist-artube/ (frontend) + dist-artube-server/
191
+ npm run bundle:artube # build:artube + a zip of dist-artube/ for manual upload
192
+ `
193
+ : '';
194
+ const artubeSection = a.artube
195
+ ? `
196
+ ## Artube
197
+
198
+ \`createSlotGame({ artube: { load: () => import('@energy8platform/artube-bridge') } })\` in
199
+ \`src/main.ts\` is the whole game-side wiring: the host detects
200
+ the launch (\`?sessionId=…\`), REFUSES a launch that claims a session but carries a blank one —
201
+ without that refusal it falls through to whatever else answers: an offline dev bridge locally
202
+ (free spins) or, in a deployed build, nothing at all (a hang) — lazy-loads
203
+ \`@energy8platform/artube-bridge\`, and drives the same play loop as everywhere else. There is no
204
+ per-game adapter on Artube — the game's BACKEND owns the round shape.
205
+
206
+ Artube ships as two deployables — a frontend and a backend — and this repo now BUILDS BOTH
207
+ (see "Deployment"), while **development is one command.** \`npm run dev:artube\` runs
208
+ \`artubePlugin\` from
209
+ \`@energy8platform/artube-server/vite\` (see \`vite.config.ts\`), which starts the backend as a child
210
+ of the dev server, on a free port it picks itself, waits until it actually serves, and proxies
211
+ \`/api\` (HTTP + WS) to it — so dev has the same single-origin shape as production. The backend is
212
+ killed when the dev server closes.
213
+
214
+ Defaults: the public sandbox (\`GameId=game1\`, no API key) and \`./src/game/script.spin\`. Override
215
+ with \`artubePlugin({ gameId, gamesApiUrl, apiKey, spinPath, port })\`, or with the platform's own
216
+ env vars (\`GameId\`, \`GamesApiUrl\`, \`GamesApiKey\`). To point at a backend you run yourself (an IDE
217
+ debug session):
218
+
219
+ \`\`\`bash
220
+ ARTUBE_BACKEND=http://localhost:8080 npm run dev:artube # proxies there, starts nothing
221
+ \`\`\`
222
+
223
+ If the backend cannot start, \`vite\` aborts with the reason and the backend's last output — a bad
224
+ \`.spin\`, a missing \`e8-server\` binary and an unreachable GamesAPI all name themselves there.
225
+ \`artube-server\` is a **devDependency** and is imported dynamically inside the Artube branch of
226
+ \`vite.config.ts\`, so an Energy8/Stake-only build never resolves it.
227
+
228
+ \`dev:artube\` also runs WITHOUT the DevBridge, so during development the math comes from the backend
229
+ exactly as it will in production — a plain \`npm run dev\` would answer spins locally instead.
230
+
231
+ **Deployment: \`npm run build:artube\` produces BOTH deployables.**
232
+
233
+ - \`dist-artube/\` — the frontend. Its own folder (like \`dist-stake/\`), so no target can silently
234
+ ship another target's bytes. **Artube's CI pipeline deploys the repo's \`dist\` folder**, so a game
235
+ built this way needs its pipeline pointed at \`dist-artube\` — change the job's artifact path, or
236
+ copy the folder in CI. That is the accepted trade for keeping the targets visibly separate.
237
+ - \`dist-artube-server/\` — the backend, emitted by the same \`artubePlugin\` (its \`apply: 'build'\`
238
+ half). It contains this game's \`.spin\` copied byte-for-byte, a plain-JS \`index.js\`, a
239
+ \`package.json\` pinning \`@energy8platform/artube-server\`, and a \`Dockerfile\`. \`docker build\` it
240
+ as-is, or commit its contents into the server repo. The plugin does this because it already knows
241
+ the spin path — the alternative was a human copying the math between repos, which is how a
242
+ frontend ends up live against last week's backend math. Read \`dist-artube-server/README.md\`.
243
+ It is generated output: wiped and rewritten on every build, so never edit it.
244
+
245
+ **Loading screen: Artube's first, then this game's.** \`artubePartnerLoader()\` (the Artube branch of
246
+ \`vite.config.ts\`) injects Artube's two-phase branded loader into \`index.html\`, so it is painted
247
+ before the game bundle is even fetched. \`src/main.ts\` calls \`createArtubeLoader()\` — null on every
248
+ other target, where the markup is absent — and passes the controller as \`loading.externalOverlay\`.
249
+
250
+ That overlay covers ONLY the gap the game cannot paint: bundle download, Pixi init, the SDK
251
+ handshake. The engine reports boot milestones into Artube's bar (which is also what makes their
252
+ loader crossfade from the dark partner phase to the green branded one — that transition fires on
253
+ the first progress above zero), waits until Artube's screen has had its minimum time
254
+ (\`loading.externalOverlayMinDisplayTime\`, default 1500 ms — the raw gap is often only a few
255
+ hundred, which shows a partner's brand to nobody and cuts their 500 ms crossfade in half), then
256
+ mounts its own loading screen, waits for its FIRST FRAME to be painted, and only then dismisses
257
+ Artube's. From that frame on, loading is identical to every other target: this game's brand, bar,
258
+ tap-to-start and \`minDisplayTime\` (which is measured from the hand-over, so a game setting both
259
+ gets the sum). Set loading options OUTSIDE the Artube branch — they apply on all targets, Artube
260
+ included, and options set inside it apply only there.
261
+
262
+ The dismissal also happens on every failure path, so a boot that throws cannot leave Artube's
263
+ screen stranded over a dead game.
264
+
265
+ \`loading.externalOverlay\` is typed structurally (\`{ showLoader, updateProgress, hideLoader }\`) so
266
+ no engine package names an Artube type — the same discipline as \`artube: { load }\`: the engine
267
+ describes the shape, THIS game supplies the instance.
268
+
269
+ **Nothing is installed from Artube.** Their loader is vendored into \`@energy8platform/artube-bridge\`
270
+ (browser controller, at \`/loader\`) and \`@energy8platform/artube-server\` (the Vite plugin). No
271
+ private registry, no \`.npmrc\`, no token — a plain \`npm install\` is enough. When Artube ships a new
272
+ loader version, the vendored copies are updated in the game-engine monorepo, not here.
273
+
274
+ The \`BUILD_TARGET=artube\` flag does NOT harden the frontend bundle — the DevBridge is injected by a
275
+ dev-server-only Vite plugin, so no production build has ever carried one. What protects a real
276
+ launch is the host's gate: a launch claiming a session with a blank \`sessionId\` makes the game
277
+ refuse to start.
278
+ `
279
+ : '';
180
280
  return `# CLAUDE.md
181
281
 
182
282
  Guidance for Claude Code (claude.ai/code) working in this repository — a slot game built on the
183
- Energy8 \`@energy8platform/game-engine\` framework, targeting Stake Engine.
283
+ Energy8 \`@energy8platform/game-engine\` framework, targeting Stake Engine${a.artube ? ' and Artube' : ''}.
184
284
 
185
285
  ## What this project is
186
286
 
@@ -230,7 +330,8 @@ npm run stake # the Stake dev harness — iframe wrapper + dev-RGS back
230
330
  npm run build:stake # the Stake frontend build → dist-stake/ (base './', no DevBridge)
231
331
  npm run math:pool # Stage A — honest large simulation (the pool); see math.config.ts
232
332
  npm run math:curate # Stage B — compress the pool into the publishable stake-math/ bundle
233
- \`\`\`
333
+ ${artubeCommands}\`\`\`
334
+ ${artubeSection}
234
335
 
235
336
  ## Math pipeline
236
337
 
@@ -245,7 +346,7 @@ Segment-drain of bonuses, \`roundId\` forwarding, free-spins counter (with retri
245
346
  unfinished round, win/balance HUD timing, social-mode vocabulary, the legal disclaimer, currency
246
347
  formatting, jurisdiction → feature restrictions, the insufficient-funds guard, the play-error modal
247
348
  + reconnect overlay, autoplay, the bet ladder + default bet from \`/wallet/authenticate\`, the
248
- open-redirect \`rgs_url\` guard, spacebar handling, pause on tab-blur (ticker + music), and
349
+ open-redirect \`rgs_url\` guard${a.artube ? ' (and the Artube blank-`sessionId` guard)' : ''}, spacebar handling, pause on tab-blur (ticker + music), and
249
350
  double-tap-to-skip (opt out with \`createSlotGame({ skipGesture: false })\`). Write player-facing
250
351
  copy normally — it is socialized automatically in social mode.
251
352
 
@@ -293,6 +394,21 @@ function genPackageJson(a, v) {
293
394
  scripts['stake:bundle'] =
294
395
  `rm -rf dist-stake stake-math ${a.id}-stake.zip stake-math.zip && npm run build:stake && npm run math && cd dist-stake && zip -r ../${a.id}-stake.zip . && cd ../stake-math && zip -r ../stake-math.zip . && cd .. && echo 'Stake artifacts: ${a.id}-stake.zip + stake-math.zip'`;
295
396
  }
397
+ if (a.artube) {
398
+ // `build:artube` produces BOTH of Artube's deployables: the frontend in `dist-artube` (its own
399
+ // folder, like `dist-stake`, so no target can silently ship another's bytes) and the backend in
400
+ // `dist-artube-server` (emitted by artubePlugin's build half — with this game's `.spin` in it).
401
+ // Both are wiped first so a previous build's stale hashed assets can't ride along to the CDN.
402
+ //
403
+ // CONSEQUENCE: Artube's CI pipeline deploys the repo's `dist` folder, so point the pipeline at
404
+ // `dist-artube` (change the job's artifact path, or copy the folder in CI). That is the accepted
405
+ // trade for keeping the targets separate.
406
+ scripts['dev:artube'] = 'BUILD_TARGET=artube vite';
407
+ scripts['build:artube'] =
408
+ 'rm -rf dist-artube dist-artube-server && BUILD_TARGET=artube vite build';
409
+ scripts['bundle:artube'] =
410
+ `rm -f ${a.id}-artube.zip && npm run build:artube && cd dist-artube && zip -r ../${a.id}-artube.zip . && cd .. && echo 'Artube artifacts: dist-artube/ (point the CI pipeline here) + ${a.id}-artube.zip, and dist-artube-server/ (docker build it)'`;
411
+ }
296
412
  const pkg = {
297
413
  name: a.id,
298
414
  private: true,
@@ -303,12 +419,24 @@ function genPackageJson(a, v) {
303
419
  '@energy8platform/game-engine': v['game-engine'],
304
420
  '@energy8platform/harness': v['harness'],
305
421
  ...(a.stake ? { '@energy8platform/stake-kit': v['stake-kit'], '@energy8platform/stake-bridge': v['stake-bridge'] } : { '@energy8platform/stake-kit': v['stake-kit'] }),
422
+ // The host lazy-imports the bridge, but the bundler still has to resolve it at build time —
423
+ // so the BRIDGE is a runtime dependency. The SERVER is not: see devDependencies below.
424
+ //
425
+ // It also carries Artube's branded loading screen (`/loader`), vendored from `@artube/loader`
426
+ // — so there is NO Artube package to install, no private registry to configure and no token.
427
+ // A plain `npm install` resolves everything this game needs.
428
+ ...(a.artube ? { '@energy8platform/artube-bridge': v['artube-bridge'] } : {}),
306
429
  'pixi.js': '^8.16.0',
307
430
  '@pixi/sound': '^6.0.0',
308
431
  '@esotericsoftware/spine-pixi-v8': '~4.2.0',
309
432
  zod: '^3.23.0',
310
433
  },
311
434
  devDependencies: {
435
+ // `dev:artube` starts the game's backend itself (artubePlugin in vite.config.ts). It is a
436
+ // DEV dependency and nothing else: Node-side, imported only from vite.config.ts, and never
437
+ // part of any bundle — an Energy8/Stake-only build must not have to resolve it, which is why
438
+ // vite.config.ts imports it dynamically inside the Artube branch.
439
+ ...(a.artube ? { '@energy8platform/artube-server': v['artube-server'] } : {}),
312
440
  '@energy8platform/stake-math-tools': v['stake-math-tools'],
313
441
  '@types/node': '^20.0.0',
314
442
  tsx: '^4.21.0',
@@ -662,7 +790,40 @@ export default adapter;
662
790
 
663
791
  function genMainTs(a) {
664
792
  const stakeImport = a.stake ? `import adapter from './stake/adapter';\n` : '';
793
+ const artubeLoaderImport = a.artube
794
+ ? `import { createArtubeLoader } from '@energy8platform/artube-bridge/loader';\n`
795
+ : '';
665
796
  const stakeOpt = a.stake ? ` stake: { adapter },\n` : '';
797
+ // Artube needs no per-game artifact: the game's backend (artube-server) owns the round shape, so
798
+ // the loader IS the opt-in. The host classifies the launch, refuses a malformed one, and only
799
+ // then constructs the bridge. The GAME passes the import so the specifier never ends up in
800
+ // game-engine's own bundle (games without the dependency must still build).
801
+ const artubeOpt = a.artube
802
+ ? ` // Artube: enabled by the launch URL (?sessionId=…). Build with \`npm run build:artube\`;
803
+ // the backend runs separately (\`artube-server --spin ./game.spin --sandbox --port 8080\`).
804
+ artube: { load: () => import('@energy8platform/artube-bridge') },
805
+ // Artube's loader covers the gap this game cannot paint — bundle download, Pixi init, the SDK
806
+ // handshake — and the engine dismisses it once ITS loading screen has painted AND Artube's has
807
+ // had its minimum time on screen (\`externalOverlayMinDisplayTime\`, 1500ms by default; the raw
808
+ // gap can be under half a second). Nothing else is set here on purpose: from that frame on,
809
+ // loading looks the same as on every other target, so any loading options this game wants
810
+ // belong OUTSIDE this branch — set here they would apply on Artube only.
811
+ ...(artubeLoader ? { loading: { externalOverlay: artubeLoader } } : {}),\n`
812
+ : '';
813
+ // Artube ships its own branded loading screen; `artubePartnerLoader` (vite.config.ts) injects it
814
+ // into index.html so it is on screen before this bundle runs. Handing the engine the controller
815
+ // suppresses OUR preloader and routes the same progress into theirs — one continuous overlay.
816
+ const artubeLoaderSetup = a.artube
817
+ ? `
818
+ // Artube's branded loading screen — its markup is injected into index.html by \`artubePartnerLoader\`
819
+ // (vite.config.ts), so it is already on screen when this module runs. It covers the gap this game
820
+ // cannot paint (bundle, Pixi init, SDK handshake); the engine dismisses it once ITS loading screen
821
+ // has painted its first frame. Only an Artube build has that markup, so this is null everywhere
822
+ // else and every other target simply shows the engine's preloader from the start. The controller is
823
+ // Artube's own code, vendored into @energy8platform/artube-bridge — nothing to install from Artube.
824
+ const artubeLoader = createArtubeLoader();
825
+ `
826
+ : '';
666
827
  return `import { createSlotGame } from '@energy8platform/game-engine/host';
667
828
  import { ScaleMode } from '@energy8platform/game-engine';
668
829
  import { model } from './game.spec';
@@ -670,7 +831,7 @@ import { GameScene } from './scenes/GameScene';
670
831
  import { IntroScene } from './scenes/IntroScene';
671
832
  import { normalize } from './game/normalize';
672
833
  import { i18n } from './i18n';
673
- ${stakeImport}
834
+ ${artubeLoaderImport}${stakeImport}${artubeLoaderSetup}
674
835
  createSlotGame({
675
836
  model,
676
837
  normalize,
@@ -686,7 +847,7 @@ createSlotGame({
686
847
  fonts: ['400 24px "Inter"'],
687
848
  textureDefaults: true,
688
849
  dev: (import.meta as any).env?.DEV ?? false,
689
- ${stakeOpt} shell: {
850
+ ${stakeOpt}${artubeOpt} shell: {
690
851
  // Per-game localisation map (english-as-key). Fill other languages in src/i18n.ts.
691
852
  i18n,
692
853
  // buy/ante cards + currency derive from the spec + initData.
@@ -950,6 +1111,47 @@ function substituteTree(dir, vars) {
950
1111
  writeFileSync(p, text);
951
1112
  }
952
1113
  }
1114
+ /** The README's Artube block (empty for a non-Artube game) — see `${artube}` in template/README.md. */
1115
+ function artubeReadme(a) {
1116
+ if (!a.artube)
1117
+ return '';
1118
+ return `## Artube
1119
+ - \`npm run dev:artube\` — ONE command. No dev bridge, so spins come from the backend exactly as in
1120
+ production. The dev server starts the game's backend (\`@energy8platform/artube-server\`) itself,
1121
+ on a free port it picks, and proxies \`/api\` to it — there is nothing else to start.
1122
+ Against the public sandbox by default; \`ARTUBE_BACKEND=http://localhost:8080\` proxies at a
1123
+ backend you run yourself instead.
1124
+ - \`npm run build:artube\` — BOTH Artube deployables:
1125
+ - \`dist-artube/\` — the frontend (its own folder, like \`dist-stake/\`). **Artube's CI pipeline
1126
+ deploys the repo's \`dist\` folder**, so point the pipeline at \`dist-artube\` — change the job's
1127
+ artifact path, or copy the folder in CI.
1128
+ - \`dist-artube-server/\` — the deployable backend, emitted by the same plugin: this game's
1129
+ \`.spin\` byte-for-byte, a plain-JS entry point, a \`package.json\` and a \`Dockerfile\`.
1130
+ \`docker build\` it as-is, or commit it into the server repo. See its README. Generated output —
1131
+ wiped and rewritten every build.
1132
+ - Enabled in \`src/main.ts\` via
1133
+ \`createSlotGame({ artube: { load: () => import('@energy8platform/artube-bridge') } })\`; the host
1134
+ classifies the launch, refuses a malformed one, and loads the bridge itself.
1135
+ - **Loading screen** — an Artube build opens on ARTUBE's branded two-phase loader.
1136
+ \`artubePartnerLoader()\` (vite.config.ts) injects it into \`index.html\`, so it is painted before
1137
+ the game bundle is even fetched, and \`src/main.ts\` hands the engine its controller as
1138
+ \`loading.externalOverlay\`. It covers exactly the gap nothing of this game can paint — bundle
1139
+ download, Pixi init, the SDK handshake — and the engine dismisses it once ITS OWN loading screen
1140
+ has painted its first frame AND Artube's has had its minimum time on screen
1141
+ (\`loading.externalOverlayMinDisplayTime\`, default 1500 ms; the raw gap can be under half a
1142
+ second, too fast for a partner's brand to register). From there the player gets this game's
1143
+ loading screen, bar and tap-to-start, exactly as on every other target. In order: Artube's dark
1144
+ partner screen → Artube's green branded screen with the bar filling as the game boots → this
1145
+ game's loading screen → the game.
1146
+
1147
+ ### Nothing to install from Artube
1148
+
1149
+ There is no registry to configure, no \`.npmrc\` and no token: Artube's loader is vendored into
1150
+ \`@energy8platform/artube-bridge\` (the browser controller) and \`@energy8platform/artube-server\`
1151
+ (the Vite plugin that injects the markup). A plain \`npm install\` resolves everything.
1152
+
1153
+ `;
1154
+ }
953
1155
  async function generate(a, targetDir, versions) {
954
1156
  validate(a);
955
1157
  mkdirSync(targetDir, { recursive: true });
@@ -958,8 +1160,8 @@ async function generate(a, targetDir, versions) {
958
1160
  // _gitignore → .gitignore
959
1161
  if (existsSync(join(targetDir, '_gitignore')))
960
1162
  renameSync(join(targetDir, '_gitignore'), join(targetDir, '.gitignore'));
961
- // 2) substitute ${id}/${title}
962
- substituteTree(targetDir, { id: a.id, title: a.title });
1163
+ // 2) substitute ${id}/${title}/${artube}
1164
+ substituteTree(targetDir, { id: a.id, title: a.title, artube: artubeReadme(a) });
963
1165
  // 3) codegen files
964
1166
  mkdirSync(join(targetDir, 'src/game'), { recursive: true });
965
1167
  mkdirSync(join(targetDir, 'src/scenes'), { recursive: true });
@@ -988,12 +1190,17 @@ async function generate(a, targetDir, versions) {
988
1190
  // Dependency versions written into a scaffolded game's package.json. Keep in lock-step with the
989
1191
  // published @energy8platform/* versions (a create-slot test asserts these match the workspace).
990
1192
  const PUBLISHED = {
991
- 'platform-core': '^0.30.10',
992
- 'game-engine': '^0.34.0',
1193
+ 'platform-core': '^0.31.0',
1194
+ 'game-engine': '^0.35.0',
993
1195
  'stake-kit': '^0.6.4',
994
- 'stake-bridge': '^0.6.3',
1196
+ 'stake-bridge': '^0.6.4',
995
1197
  'stake-math-tools': '^0.9.3',
996
1198
  harness: '^0.3.1',
1199
+ // UNPUBLISHED at the time of writing: `--artube` scaffolds cannot `npm install` until
1200
+ // @energy8platform/artube-bridge and -server ship. Re-pin these to the published versions at that
1201
+ // point — test/versions.test.ts fails the moment they drift from the workspace's own versions.
1202
+ 'artube-bridge': '^0.1.0',
1203
+ 'artube-server': '^0.1.0',
997
1204
  };
998
1205
  async function main() {
999
1206
  const seed = seedFromArgv(argv.slice(2));
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sources":["../src/answers.ts","../src/prompts.ts","../src/codegen/gameSpec.ts","../src/codegen/claudeMd.ts","../src/codegen/packageJson.ts","../src/codegen/gameScene.ts","../src/codegen/reelConfig.ts","../src/codegen/spinLogic.ts","../src/codegen/stakeAdapter.ts","../src/codegen/mainTs.ts","../src/codegen/introScene.ts","../src/codegen/normalize.ts","../src/codegen/schema.ts","../src/codegen/mathConfig.ts","../src/codegen/i18nTs.ts","../src/generate.ts","../src/cli.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sources":["../src/answers.ts","../src/prompts.ts","../src/codegen/gameSpec.ts","../src/codegen/claudeMd.ts","../src/codegen/packageJson.ts","../src/codegen/gameScene.ts","../src/codegen/reelConfig.ts","../src/codegen/spinLogic.ts","../src/codegen/stakeAdapter.ts","../src/codegen/mainTs.ts","../src/codegen/introScene.ts","../src/codegen/normalize.ts","../src/codegen/schema.ts","../src/codegen/mathConfig.ts","../src/codegen/i18nTs.ts","../src/generate.ts","../src/cli.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@energy8platform/create-slot",
3
- "version": "0.6.22",
3
+ "version": "0.7.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "create-slot": "dist/cli.js"
@@ -8,7 +8,7 @@ Generated with `npm create @energy8platform/slot`. Built on @energy8platform gam
8
8
  - Edit `src/game.spec.ts` (symbols/paytable/bet levels/actions) and `src/game/script.spin` (math).
9
9
  - Swap placeholder art in `public/assets/` (see NAMING.md) and wire it in `src/slot/symbols.ts`.
10
10
 
11
- ## Verify
11
+ ${artube}## Verify
12
12
  - `npm run typecheck`
13
13
  - `npm run smoke` — proves spec → export artifacts
14
14
 
@@ -1,3 +1,7 @@
1
1
  node_modules
2
2
  dist
3
3
  dist-stake
4
+ dist-artube
5
+ # Generated by artubePlugin's build half — the deployable backend. Rebuilt from
6
+ # the game's own .spin every `npm run build:artube`, so it is output, not source.
7
+ dist-artube-server
@@ -6,28 +6,86 @@ import { reelDevtoolsPlugin } from '@energy8platform/game-engine/harness';
6
6
  const target = process.env.BUILD_TARGET;
7
7
  const isStake = target === 'stake';
8
8
  const isHarness = target === 'stake-harness';
9
+ const isArtube = target === 'artube';
9
10
 
10
- export default defineGameConfig({
11
- base: './',
12
- // Stake builds and harness run inside the Stake RGS shell no local DevBridge.
13
- devBridge: !isStake && !isHarness,
14
- devBridgeConfig: './dev.config',
15
- vite: {
16
- server: { port: 5173 },
17
- optimizeDeps: { include: ['pixi.js'] },
18
- ...(isStake ? { build: { outDir: 'dist-stake' } } : {}),
11
+ // `artubePlugin` is ONE call site and both halves of the Artube target.
12
+ //
13
+ // DEV (`apply: 'serve'`) `npm run dev:artube` is ONE command. The plugin starts the game's own
14
+ // backend (`@energy8platform/artube-server`) as a child of the dev server — on a free port it picks
15
+ // itself, waiting until the backend actually serves — and points the `/api` proxy at it. In
16
+ // production Artube serves the game and its backend on ONE origin split by path (`/api/**` →
17
+ // backend) and the bridge derives its API base from the page's origin, so proxying `/api` keeps dev
18
+ // the same shape.
19
+ //
20
+ // BUILD (`apply: 'build'`) — `npm run build:artube` emits `dist-artube-server/`: the deployable
21
+ // backend, with THIS game's `.spin` copied into it byte-for-byte, a plain-JS entry point, a
22
+ // `package.json` and a `Dockerfile`. The plugin already knows the spin path (it hands it to the dev
23
+ // backend above), so it is the one place that cannot ship the frontend against one version of the
24
+ // math and the backend against another. `docker build` the directory as-is, or commit it into the
25
+ // server repo; see its README.
26
+ //
27
+ // Escape hatch: `ARTUBE_BACKEND=http://localhost:8080 npm run dev:artube` proxies at a backend you
28
+ // run yourself (debugging the server in an IDE), and starts nothing.
29
+ //
30
+ // `artubePartnerLoader` is Artube's OWN branded loading screen. It injects its markup into
31
+ // index.html, so the loader is painted before this game's bundle is even fetched — the property
32
+ // no JS-mounted preloader can have. It covers exactly that gap: `src/main.ts` hands the engine the
33
+ // matching controller, and the engine dismisses Artube's screen the moment its own loading screen
34
+ // has painted its first frame. Everything after that frame is the same on every target.
35
+ //
36
+ // It is Artube's code VENDORED into `@energy8platform/artube-server` (the Node half) and
37
+ // `@energy8platform/artube-bridge` (the browser half), so a game installs no Artube package, needs
38
+ // no private registry and no token. Both halves of the import below are dev-time Node-side: the
39
+ // dynamic, branch-local form is because `artube-server` is a devDependency an Energy8/Stake-only
40
+ // build must never have to resolve — a static import would make it break every build.
41
+ export default async () => {
42
+ const artube = isArtube ? await import('@energy8platform/artube-server/vite') : null;
43
+
44
+ const plugins = [
45
+ ...(artube
46
+ ? [
47
+ artube.artubePlugin({ spinPath: './src/game/script.spin' }),
48
+ artube.artubePartnerLoader(),
49
+ ]
50
+ : []),
19
51
  // The dev harness: a Stake RGS backend + the reel-config sidebar panel.
20
52
  ...(isHarness
21
- ? {
22
- plugins: [
23
- createHarness({
24
- plugins: [
25
- stakeRgsPlugin({ config: './math.config.ts', booksDir: 'stake-math' }),
26
- reelDevtoolsPlugin(),
27
- ],
28
- }),
29
- ],
30
- }
31
- : {}),
32
- },
33
- });
53
+ ? [
54
+ createHarness({
55
+ plugins: [
56
+ stakeRgsPlugin({ config: './math.config.ts', booksDir: 'stake-math' }),
57
+ reelDevtoolsPlugin(),
58
+ ],
59
+ }),
60
+ ]
61
+ : []),
62
+ ];
63
+
64
+ return defineGameConfig({
65
+ base: './',
66
+ // Stake builds and harness run inside the Stake RGS shell — no local DevBridge.
67
+ // The Artube target drops it too, so `npm run dev:artube` develops against the REAL backend
68
+ // (math on the server, /api proxied above) instead of local offline math.
69
+ // What this flag does NOT do: change any production bundle. `devBridgePlugin` is `apply: 'serve'`,
70
+ // so no `vite build` has ever injected the DevBridge bootstrapper — `BUILD_TARGET=artube vite
71
+ // build` and a plain `vite build` emit the same bytes. In production what protects a
72
+ // session-less launch is the host's gate (createSlotGame refuses to start), not this flag.
73
+ devBridge: !isStake && !isHarness && !isArtube,
74
+ devBridgeConfig: './dev.config',
75
+ vite: {
76
+ server: { port: 5173 },
77
+ optimizeDeps: { include: ['pixi.js'] },
78
+ // One folder per target, so no build can silently ship another target's bytes: `dist` (plain),
79
+ // `dist-stake`, `dist-artube`. `build:artube` wipes its folders first so a previous build's
80
+ // stale hashed assets don't ride along to the CDN.
81
+ //
82
+ // CONSEQUENCE: Artube's CI pipeline deploys the repo's `dist` folder (their hosting/devops
83
+ // docs). A game built with `build:artube` therefore needs that pipeline pointed at
84
+ // `dist-artube` — change the job's artifact path, or copy the folder in CI. That is the
85
+ // accepted trade for keeping the two targets visibly separate.
86
+ ...(isStake ? { build: { outDir: 'dist-stake' } } : {}),
87
+ ...(isArtube ? { build: { outDir: 'dist-artube' } } : {}),
88
+ plugins,
89
+ },
90
+ });
91
+ };