@dreamboard-games/cli 0.1.30-alpha.3 → 0.1.30-alpha.31

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 (173) hide show
  1. package/README.md +27 -108
  2. package/dist/agent-verifier/agent-workspace-verifier.mjs +1988 -57
  3. package/dist/agent-verifier/agent-workspace-verifier.mjs.map +1 -1
  4. package/dist/agent-verifier/{chunk-XQXDOBYB.mjs → chunk-4I2WWAPK.mjs} +27 -10
  5. package/dist/agent-verifier/chunk-4I2WWAPK.mjs.map +1 -0
  6. package/dist/agent-verifier/{chunk-O4YCPU7C.mjs → chunk-BWBN2TDJ.mjs} +539 -641
  7. package/dist/agent-verifier/chunk-BWBN2TDJ.mjs.map +1 -0
  8. package/dist/agent-verifier/{chunk-TAEQKBJB.mjs → chunk-GWRZRWCF.mjs} +1 -1
  9. package/dist/agent-verifier/chunk-GWRZRWCF.mjs.map +1 -0
  10. package/dist/agent-verifier/chunk-H6XDQJ3N.mjs +11 -0
  11. package/dist/agent-verifier/chunk-HUBV22JQ.mjs +89 -0
  12. package/dist/agent-verifier/chunk-HUBV22JQ.mjs.map +1 -0
  13. package/dist/agent-verifier/{chunk-VS573ERH.mjs → chunk-JZTH3EMV.mjs} +2 -2
  14. package/dist/agent-verifier/{chunk-XGWCY624.mjs → chunk-KDAQ4CZY.mjs} +34 -27
  15. package/dist/agent-verifier/chunk-KDAQ4CZY.mjs.map +1 -0
  16. package/dist/agent-verifier/{chunk-IAYRNVUC.mjs → chunk-LMW66VBH.mjs} +2 -13
  17. package/dist/agent-verifier/{chunk-IAYRNVUC.mjs.map → chunk-LMW66VBH.mjs.map} +1 -1
  18. package/dist/agent-verifier/{chunk-776W3UGV.mjs → chunk-M6YNQZCC.mjs} +4 -13
  19. package/dist/agent-verifier/chunk-M6YNQZCC.mjs.map +1 -0
  20. package/dist/agent-verifier/{chunk-H76MT5UR.mjs → chunk-M7UVBANQ.mjs} +2 -1
  21. package/dist/agent-verifier/chunk-M7UVBANQ.mjs.map +1 -0
  22. package/dist/agent-verifier/{chunk-SH5JKYOB.mjs → chunk-MIRGCMUC.mjs} +112 -26
  23. package/dist/agent-verifier/chunk-MIRGCMUC.mjs.map +1 -0
  24. package/dist/agent-verifier/{chunk-NAK77WXW.mjs → chunk-MYMVXTZT.mjs} +4 -5
  25. package/dist/agent-verifier/chunk-MYMVXTZT.mjs.map +1 -0
  26. package/dist/agent-verifier/{chunk-7WWGFAAU.mjs → chunk-NBRUEJUK.mjs} +215 -223
  27. package/dist/agent-verifier/chunk-NBRUEJUK.mjs.map +1 -0
  28. package/dist/agent-verifier/chunk-OJFZVGEL.mjs +492 -0
  29. package/dist/agent-verifier/chunk-OJFZVGEL.mjs.map +1 -0
  30. package/dist/agent-verifier/{chunk-LUZ7KE6H.mjs → chunk-QD4SQNUP.mjs} +4 -8
  31. package/dist/agent-verifier/{chunk-LUZ7KE6H.mjs.map → chunk-QD4SQNUP.mjs.map} +1 -1
  32. package/dist/agent-verifier/chunk-TTB7AIHZ.mjs +214 -0
  33. package/dist/agent-verifier/chunk-TTB7AIHZ.mjs.map +1 -0
  34. package/dist/agent-verifier/{chunk-F2DIOJJZ.mjs → chunk-XCQQIPCO.mjs} +5 -46
  35. package/dist/agent-verifier/chunk-XCQQIPCO.mjs.map +1 -0
  36. package/dist/agent-verifier/{global-config-Y2NTSK4R.mjs → global-config-2NUESNEQ.mjs} +6 -6
  37. package/dist/agent-verifier/{keychain-backend-SPQWGKZN.mjs → keychain-backend-FF4I6ODB.mjs} +12 -7
  38. package/dist/agent-verifier/keychain-backend-FF4I6ODB.mjs.map +1 -0
  39. package/dist/agent-verifier/{local-files-JFOQQZDL.mjs → local-files-OF4QFISU.mjs} +10 -10
  40. package/dist/agent-verifier/{chunk-UIOLGH4A.mjs → local-typecheck-DHVLM37Z.mjs} +4 -4
  41. package/dist/agent-verifier/local-typecheck-DHVLM37Z.mjs.map +1 -0
  42. package/dist/agent-verifier/{materialize-workspace-ZAVGQQSF.mjs → materialize-workspace-MAGKDMK5.mjs} +23 -22
  43. package/dist/agent-verifier/materialize-workspace-MAGKDMK5.mjs.map +1 -0
  44. package/dist/agent-verifier/{project-state-K576C2TE.mjs → project-state-XKUSCFSV.mjs} +2 -2
  45. package/dist/agent-verifier/{prompt-MJRJMOGQ.mjs → prompt-VKHMCQT6.mjs} +2 -2
  46. package/dist/agent-verifier/{chunk-A64ZZUZV.mjs → reducer-bundle-preflight-GLUJKTWU.mjs} +76 -25
  47. package/dist/agent-verifier/reducer-bundle-preflight-GLUJKTWU.mjs.map +1 -0
  48. package/dist/agent-verifier/{chunk-JGT4P4UD.mjs → reducer-contract-preflight-WVQQPW5F.mjs} +7 -6
  49. package/dist/agent-verifier/reducer-contract-preflight-WVQQPW5F.mjs.map +1 -0
  50. package/dist/agent-verifier/{chunk-E7SSWJXJ.mjs → reducer-native-test-harness-UFMSNNDY.mjs} +463 -686
  51. package/dist/agent-verifier/reducer-native-test-harness-UFMSNNDY.mjs.map +1 -0
  52. package/dist/agent-verifier/static-scaffold-CLRRWXON.mjs +24 -0
  53. package/dist/agent-verifier/workspace-codegen-SPPVHURX.mjs +10 -0
  54. package/dist/agent-verifier/{workspace-dependencies-NOOQBK6I.mjs → workspace-dependencies-5HEEKZFP.mjs} +6 -4
  55. package/dist/authoring-compatibility-internal.js +12 -0
  56. package/dist/chunk-2H7UOFLK.js +11 -0
  57. package/dist/chunk-6NYVJYN4.js +313 -0
  58. package/dist/chunk-6NYVJYN4.js.map +1 -0
  59. package/dist/chunk-EQNBQVIW.js +204 -0
  60. package/dist/chunk-EQNBQVIW.js.map +1 -0
  61. package/dist/chunk-X244CUU4.js +3815 -0
  62. package/dist/chunk-X244CUU4.js.map +1 -0
  63. package/dist/{chunk-TAQKH67O.js → chunk-YNJVKC2T.js} +2587 -7278
  64. package/dist/chunk-YNJVKC2T.js.map +1 -0
  65. package/dist/{global-config-S4ZIPECE.js → global-config-RBMW7IVA.js} +4 -3
  66. package/dist/index.js +3099 -6187
  67. package/dist/index.js.map +1 -1
  68. package/dist/internal.js +36 -10
  69. package/dist/internal.js.map +1 -1
  70. package/dist/{keychain-backend-HDF4TZDL.js → keychain-backend-FSNTNTZE.js} +12 -7
  71. package/dist/keychain-backend-FSNTNTZE.js.map +1 -0
  72. package/dist/{prompt-NDV3AE5L.js → prompt-GMZABCJC.js} +2 -2
  73. package/package.json +9 -19
  74. package/release/authoring-release-set.json +38 -0
  75. package/skills/dreamboard/SKILL.md +30 -28
  76. package/skills/dreamboard/references/building-your-first-game.md +15 -15
  77. package/skills/dreamboard/references/cli.md +46 -47
  78. package/skills/dreamboard/references/manifest-authoring.md +11 -3
  79. package/skills/dreamboard/references/quickstart.md +16 -13
  80. package/skills/dreamboard/references/testing.md +6 -13
  81. package/dist/agent-verifier/chunk-3UKQVWLV.mjs +0 -1744
  82. package/dist/agent-verifier/chunk-3UKQVWLV.mjs.map +0 -1
  83. package/dist/agent-verifier/chunk-776W3UGV.mjs.map +0 -1
  84. package/dist/agent-verifier/chunk-7WWGFAAU.mjs.map +0 -1
  85. package/dist/agent-verifier/chunk-A64ZZUZV.mjs.map +0 -1
  86. package/dist/agent-verifier/chunk-E7SSWJXJ.mjs.map +0 -1
  87. package/dist/agent-verifier/chunk-F2DIOJJZ.mjs.map +0 -1
  88. package/dist/agent-verifier/chunk-G42BGGG2.mjs +0 -70
  89. package/dist/agent-verifier/chunk-G42BGGG2.mjs.map +0 -1
  90. package/dist/agent-verifier/chunk-H76MT5UR.mjs.map +0 -1
  91. package/dist/agent-verifier/chunk-HGMUAL33.mjs +0 -39
  92. package/dist/agent-verifier/chunk-HGMUAL33.mjs.map +0 -1
  93. package/dist/agent-verifier/chunk-JGT4P4UD.mjs.map +0 -1
  94. package/dist/agent-verifier/chunk-NAK77WXW.mjs.map +0 -1
  95. package/dist/agent-verifier/chunk-O4YCPU7C.mjs.map +0 -1
  96. package/dist/agent-verifier/chunk-S34FRJHS.mjs +0 -222
  97. package/dist/agent-verifier/chunk-S34FRJHS.mjs.map +0 -1
  98. package/dist/agent-verifier/chunk-SH5JKYOB.mjs.map +0 -1
  99. package/dist/agent-verifier/chunk-SKI2ESE5.mjs +0 -44
  100. package/dist/agent-verifier/chunk-TAEQKBJB.mjs.map +0 -1
  101. package/dist/agent-verifier/chunk-UIOLGH4A.mjs.map +0 -1
  102. package/dist/agent-verifier/chunk-UIZNWRM6.mjs +0 -2432
  103. package/dist/agent-verifier/chunk-UIZNWRM6.mjs.map +0 -1
  104. package/dist/agent-verifier/chunk-W3N3QJ4V.mjs +0 -624
  105. package/dist/agent-verifier/chunk-W3N3QJ4V.mjs.map +0 -1
  106. package/dist/agent-verifier/chunk-XGWCY624.mjs.map +0 -1
  107. package/dist/agent-verifier/chunk-XQXDOBYB.mjs.map +0 -1
  108. package/dist/agent-verifier/compile-TEQVA46V.mjs +0 -312
  109. package/dist/agent-verifier/compile-TEQVA46V.mjs.map +0 -1
  110. package/dist/agent-verifier/keychain-backend-SPQWGKZN.mjs.map +0 -1
  111. package/dist/agent-verifier/local-typecheck-XVGWI75X.mjs +0 -10
  112. package/dist/agent-verifier/materialize-workspace-ZAVGQQSF.mjs.map +0 -1
  113. package/dist/agent-verifier/reducer-bundle-preflight-LXNJUBKL.mjs +0 -20
  114. package/dist/agent-verifier/reducer-contract-preflight-TUMQ43JV.mjs +0 -11
  115. package/dist/agent-verifier/reducer-native-test-harness-CHX5MBL5.mjs +0 -50
  116. package/dist/agent-verifier/static-scaffold-R7SVDRQI.mjs +0 -27
  117. package/dist/agent-verifier/sync-THAI546U.mjs +0 -588
  118. package/dist/agent-verifier/sync-THAI546U.mjs.map +0 -1
  119. package/dist/agent-verifier/test-AFAQFKOB.mjs +0 -353
  120. package/dist/agent-verifier/test-AFAQFKOB.mjs.map +0 -1
  121. package/dist/agent-verifier/workspace-codegen-2ZMQRIKJ.mjs +0 -10
  122. package/dist/agent-verifier/workspace-dependencies-NOOQBK6I.mjs.map +0 -1
  123. package/dist/chunk-N7XPNNUI.js +0 -432
  124. package/dist/chunk-N7XPNNUI.js.map +0 -1
  125. package/dist/chunk-SEGVTWSK.js +0 -44
  126. package/dist/chunk-SEGVTWSK.js.map +0 -1
  127. package/dist/chunk-TAQKH67O.js.map +0 -1
  128. package/dist/dev-host/components/drawer.tsx +0 -132
  129. package/dist/dev-host/components/input.tsx +0 -21
  130. package/dist/dev-host/dev-api-proxy-plugin.ts +0 -328
  131. package/dist/dev-host/dev-author-dom-warnings.ts +0 -100
  132. package/dist/dev-host/dev-diagnostics.ts +0 -62
  133. package/dist/dev-host/dev-fallback-stylesheet.ts +0 -53
  134. package/dist/dev-host/dev-hmr-guard-plugin.ts +0 -47
  135. package/dist/dev-host/dev-host-controller.ts +0 -674
  136. package/dist/dev-host/dev-host-player-query.ts +0 -17
  137. package/dist/dev-host/dev-host-session-transport.ts +0 -52
  138. package/dist/dev-host/dev-host-storage.ts +0 -56
  139. package/dist/dev-host/dev-log-relay-plugin.ts +0 -510
  140. package/dist/dev-host/dev-runtime-config.ts +0 -14
  141. package/dist/dev-host/dev-runtime-platform.ts +0 -335
  142. package/dist/dev-host/dev-virtual-modules-plugin.ts +0 -64
  143. package/dist/dev-host/host-main.css +0 -224
  144. package/dist/dev-host/host-main.tsx +0 -948
  145. package/dist/dev-host/index.html +0 -56
  146. package/dist/dev-host/lib/utils.ts +0 -6
  147. package/dist/dev-host/plugin-main.ts +0 -61
  148. package/dist/dev-host/plugin.html +0 -24
  149. package/dist/dev-host/shared-styles.css +0 -144
  150. package/dist/dev-host/start-dev-server.ts +0 -140
  151. package/dist/dev-host/virtual-modules.d.ts +0 -27
  152. package/dist/global-config-S4ZIPECE.js.map +0 -1
  153. package/dist/keychain-backend-HDF4TZDL.js.map +0 -1
  154. package/skills/dreamboard/scripts/events-extract.mjs +0 -218
  155. /package/dist/agent-verifier/{chunk-SKI2ESE5.mjs.map → chunk-H6XDQJ3N.mjs.map} +0 -0
  156. /package/dist/agent-verifier/{chunk-VS573ERH.mjs.map → chunk-JZTH3EMV.mjs.map} +0 -0
  157. /package/dist/agent-verifier/{global-config-Y2NTSK4R.mjs.map → global-config-2NUESNEQ.mjs.map} +0 -0
  158. /package/dist/agent-verifier/{local-files-JFOQQZDL.mjs.map → local-files-OF4QFISU.mjs.map} +0 -0
  159. /package/dist/agent-verifier/{local-typecheck-XVGWI75X.mjs.map → project-state-XKUSCFSV.mjs.map} +0 -0
  160. /package/dist/agent-verifier/{prompt-MJRJMOGQ.mjs.map → prompt-VKHMCQT6.mjs.map} +0 -0
  161. /package/dist/agent-verifier/{project-state-K576C2TE.mjs.map → static-scaffold-CLRRWXON.mjs.map} +0 -0
  162. /package/dist/agent-verifier/{reducer-bundle-preflight-LXNJUBKL.mjs.map → workspace-codegen-SPPVHURX.mjs.map} +0 -0
  163. /package/dist/agent-verifier/{reducer-contract-preflight-TUMQ43JV.mjs.map → workspace-dependencies-5HEEKZFP.mjs.map} +0 -0
  164. /package/dist/{agent-verifier/reducer-native-test-harness-CHX5MBL5.mjs.map → authoring-compatibility-internal.js.map} +0 -0
  165. /package/dist/{agent-verifier/static-scaffold-R7SVDRQI.mjs.map → chunk-2H7UOFLK.js.map} +0 -0
  166. /package/dist/{agent-verifier/workspace-codegen-2ZMQRIKJ.mjs.map → global-config-RBMW7IVA.js.map} +0 -0
  167. /package/dist/{prompt-NDV3AE5L.js.map → prompt-GMZABCJC.js.map} +0 -0
  168. /package/{dist/scaffold → scaffold}/assets/static/app/tsconfig.framework.json +0 -0
  169. /package/{dist/scaffold → scaffold}/assets/static/app/tsconfig.json +0 -0
  170. /package/{dist/scaffold → scaffold}/assets/static/ui/index.tsx +0 -0
  171. /package/{dist/scaffold → scaffold}/assets/static/ui/style.css +0 -0
  172. /package/{dist/scaffold → scaffold}/assets/static/ui/tsconfig.framework.json +0 -0
  173. /package/{dist/scaffold → scaffold}/assets/static/ui/tsconfig.json +0 -0
@@ -1,70 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- readTextFileIfExists,
4
- writeTextFile
5
- } from "./chunk-IAYRNVUC.mjs";
6
-
7
- // src/services/project/workspace-codegen.ts
8
- import {
9
- generateAuthoritativeFiles,
10
- generateSeedFiles,
11
- isFrameworkOwnedSetupProfilesSeed
12
- } from "@dreamboard-games/sdk/codegen";
13
- var STARTER_UI_SEED_FILES = /* @__PURE__ */ new Set([
14
- "ui/interaction-routes.tsx",
15
- "ui/setup-screen.tsx",
16
- "ui/styles.ts",
17
- "ui/ui-contract-typing-smoke.tsx"
18
- ]);
19
- async function applyWorkspaceCodegen(options) {
20
- const { projectRoot, manifest } = options;
21
- const authoritativeFiles = generateAuthoritativeFiles(manifest);
22
- const seedFiles = generateSeedFiles(manifest);
23
- const written = [];
24
- const skipped = [];
25
- const merged = [];
26
- const existingUiAppBeforeSeeds = await readTextFileIfExists(
27
- `${projectRoot}/ui/App.tsx`
28
- );
29
- const shouldWriteStarterUiSeedFiles = existingUiAppBeforeSeeds === null || existingUiAppBeforeSeeds.trim().length === 0;
30
- for (const [relativePath, content] of Object.entries(authoritativeFiles)) {
31
- const filePath = `${projectRoot}/${relativePath}`;
32
- const existingContent = await readTextFileIfExists(filePath);
33
- await writeTextFile(filePath, content);
34
- if (existingContent !== content) {
35
- written.push(relativePath);
36
- }
37
- }
38
- for (const [relativePath, content] of Object.entries(seedFiles)) {
39
- const filePath = `${projectRoot}/${relativePath}`;
40
- const existingContent = await readTextFileIfExists(filePath);
41
- if (STARTER_UI_SEED_FILES.has(relativePath) && !shouldWriteStarterUiSeedFiles && existingContent === null) {
42
- skipped.push(relativePath);
43
- continue;
44
- }
45
- const shouldRefreshFrameworkSeed = relativePath === "app/setup-profiles.ts" && isFrameworkOwnedSetupProfilesSeed(existingContent);
46
- if (shouldRefreshFrameworkSeed) {
47
- await writeTextFile(filePath, content);
48
- if (existingContent !== content) {
49
- written.push(relativePath);
50
- }
51
- continue;
52
- }
53
- const hasExistingContent = existingContent !== null && existingContent.trim().length > 0;
54
- if (hasExistingContent) {
55
- skipped.push(relativePath);
56
- continue;
57
- }
58
- await writeTextFile(filePath, content);
59
- written.push(relativePath);
60
- }
61
- written.sort();
62
- skipped.sort();
63
- merged.sort();
64
- return { written, skipped, merged };
65
- }
66
-
67
- export {
68
- applyWorkspaceCodegen
69
- };
70
- //# sourceMappingURL=chunk-G42BGGG2.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/project/workspace-codegen.ts"],"sourcesContent":["import type { GameTopologyManifest } from \"@dreamboard-games/sdk/types\";\nimport {\n generateAuthoritativeFiles,\n generateSeedFiles,\n isFrameworkOwnedSetupProfilesSeed,\n} from \"@dreamboard-games/sdk/codegen\";\nimport { readTextFileIfExists, writeTextFile } from \"../../utils/fs.js\";\n\nexport interface WorkspaceCodegenWriteResult {\n written: string[];\n skipped: string[];\n merged: string[];\n}\n\nconst STARTER_UI_SEED_FILES = new Set([\n \"ui/interaction-routes.tsx\",\n \"ui/setup-screen.tsx\",\n \"ui/styles.ts\",\n \"ui/ui-contract-typing-smoke.tsx\",\n]);\n\nexport async function applyWorkspaceCodegen(options: {\n projectRoot: string;\n manifest: GameTopologyManifest;\n}): Promise<WorkspaceCodegenWriteResult> {\n const { projectRoot, manifest } = options;\n const authoritativeFiles = generateAuthoritativeFiles(manifest);\n const seedFiles = generateSeedFiles(manifest);\n\n const written: string[] = [];\n const skipped: string[] = [];\n const merged: string[] = [];\n const existingUiAppBeforeSeeds = await readTextFileIfExists(\n `${projectRoot}/ui/App.tsx`,\n );\n const shouldWriteStarterUiSeedFiles =\n existingUiAppBeforeSeeds === null ||\n existingUiAppBeforeSeeds.trim().length === 0;\n\n for (const [relativePath, content] of Object.entries(authoritativeFiles)) {\n const filePath = `${projectRoot}/${relativePath}`;\n const existingContent = await readTextFileIfExists(filePath);\n await writeTextFile(filePath, content);\n if (existingContent !== content) {\n written.push(relativePath);\n }\n }\n\n for (const [relativePath, content] of Object.entries(seedFiles)) {\n const filePath = `${projectRoot}/${relativePath}`;\n const existingContent = await readTextFileIfExists(filePath);\n if (\n STARTER_UI_SEED_FILES.has(relativePath) &&\n !shouldWriteStarterUiSeedFiles &&\n existingContent === null\n ) {\n skipped.push(relativePath);\n continue;\n }\n\n const shouldRefreshFrameworkSeed =\n relativePath === \"app/setup-profiles.ts\" &&\n isFrameworkOwnedSetupProfilesSeed(existingContent);\n\n if (shouldRefreshFrameworkSeed) {\n await writeTextFile(filePath, content);\n if (existingContent !== content) {\n written.push(relativePath);\n }\n continue;\n }\n\n const hasExistingContent =\n existingContent !== null && existingContent.trim().length > 0;\n if (hasExistingContent) {\n skipped.push(relativePath);\n continue;\n }\n\n await writeTextFile(filePath, content);\n written.push(relativePath);\n }\n\n written.sort();\n skipped.sort();\n merged.sort();\n return { written, skipped, merged };\n}\n"],"mappings":";;;;;;;AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AASP,IAAM,wBAAwB,oBAAI,IAAI;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,eAAsB,sBAAsB,SAGH;AACvC,QAAM,EAAE,aAAa,SAAS,IAAI;AAClC,QAAM,qBAAqB,2BAA2B,QAAQ;AAC9D,QAAM,YAAY,kBAAkB,QAAQ;AAE5C,QAAM,UAAoB,CAAC;AAC3B,QAAM,UAAoB,CAAC;AAC3B,QAAM,SAAmB,CAAC;AAC1B,QAAM,2BAA2B,MAAM;AAAA,IACrC,GAAG,WAAW;AAAA,EAChB;AACA,QAAM,gCACJ,6BAA6B,QAC7B,yBAAyB,KAAK,EAAE,WAAW;AAE7C,aAAW,CAAC,cAAc,OAAO,KAAK,OAAO,QAAQ,kBAAkB,GAAG;AACxE,UAAM,WAAW,GAAG,WAAW,IAAI,YAAY;AAC/C,UAAM,kBAAkB,MAAM,qBAAqB,QAAQ;AAC3D,UAAM,cAAc,UAAU,OAAO;AACrC,QAAI,oBAAoB,SAAS;AAC/B,cAAQ,KAAK,YAAY;AAAA,IAC3B;AAAA,EACF;AAEA,aAAW,CAAC,cAAc,OAAO,KAAK,OAAO,QAAQ,SAAS,GAAG;AAC/D,UAAM,WAAW,GAAG,WAAW,IAAI,YAAY;AAC/C,UAAM,kBAAkB,MAAM,qBAAqB,QAAQ;AAC3D,QACE,sBAAsB,IAAI,YAAY,KACtC,CAAC,iCACD,oBAAoB,MACpB;AACA,cAAQ,KAAK,YAAY;AACzB;AAAA,IACF;AAEA,UAAM,6BACJ,iBAAiB,2BACjB,kCAAkC,eAAe;AAEnD,QAAI,4BAA4B;AAC9B,YAAM,cAAc,UAAU,OAAO;AACrC,UAAI,oBAAoB,SAAS;AAC/B,gBAAQ,KAAK,YAAY;AAAA,MAC3B;AACA;AAAA,IACF;AAEA,UAAM,qBACJ,oBAAoB,QAAQ,gBAAgB,KAAK,EAAE,SAAS;AAC9D,QAAI,oBAAoB;AACtB,cAAQ,KAAK,YAAY;AACzB;AAAA,IACF;AAEA,UAAM,cAAc,UAAU,OAAO;AACrC,YAAQ,KAAK,YAAY;AAAA,EAC3B;AAEA,UAAQ,KAAK;AACb,UAAQ,KAAK;AACb,SAAO,KAAK;AACZ,SAAO,EAAE,SAAS,SAAS,OAAO;AACpC;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/constants.ts"],"sourcesContent":["import type { EnvironmentConfig } from \"./types.js\";\n\nexport const DEFAULT_API_BASE_URL = \"https://api.dreamboard.games\";\nexport const DEFAULT_WEB_BASE_URL = \"https://dreamboard.games\";\n\nexport const PROJECT_DIR_NAME = \".dreamboard\";\nexport const DEFAULT_CLERK_OAUTH_SCOPE =\n \"openid profile email offline_access\";\n\n// Predefined environment configurations. These are intentionally static:\n// process/env overrides are applied in config resolution so the CLI does not\n// depend on a shell-sourced env file just to know first-party environments.\nexport const ENVIRONMENT_CONFIGS: Record<string, EnvironmentConfig> = {\n local: {\n apiBaseUrl: \"http://localhost:8080\",\n webBaseUrl: \"http://localhost:5173\",\n clerkOAuthScope: DEFAULT_CLERK_OAUTH_SCOPE,\n },\n staging: {\n apiBaseUrl: \"https://api-staging.dreamboard.games\",\n webBaseUrl: \"https://staging.dreamboard.games\",\n clerkOAuthIssuer: \"https://happy-caribou-19.clerk.accounts.dev\",\n clerkOAuthTokenUrl:\n \"https://happy-caribou-19.clerk.accounts.dev/oauth/token\",\n clerkOAuthScope: DEFAULT_CLERK_OAUTH_SCOPE,\n },\n prod: {\n apiBaseUrl: \"https://api.dreamboard.games\",\n webBaseUrl: \"https://dreamboard.games\",\n clerkOAuthScope: DEFAULT_CLERK_OAUTH_SCOPE,\n },\n};\nexport const PROJECT_CONFIG_FILE = \"project.json\";\nexport const PROJECT_STATE_FILE = \"state.json\";\nexport const SNAPSHOT_FILE = \"snapshot.json\";\nexport const MANIFEST_FILE = \"manifest.ts\";\nexport const GENERATED_DIR_NAME = \"generated\";\nexport const MATERIALIZED_MANIFEST_FILE = `${PROJECT_DIR_NAME}/${GENERATED_DIR_NAME}/manifest.json`;\nexport const MANIFEST_TYPECHECK_CONFIG_FILE = \"manifest.tsconfig.json\";\nexport const RULE_FILE = \"rule.md\";\nexport const DEFAULT_LOGIN_TIMEOUT_MS = 5 * 60 * 1000;\nexport const DEFAULT_TURN_DELAY_MS = 250;\n\nexport const LOCAL_IGNORE_DIRS = new Set([\n \".dreamboard\",\n \".git\",\n \"node_modules\",\n \"dist\",\n]);\n"],"mappings":";;;AAEO,IAAM,uBAAuB;AAC7B,IAAM,uBAAuB;AAE7B,IAAM,mBAAmB;AACzB,IAAM,4BACX;AAKK,IAAM,sBAAyD;AAAA,EACpE,OAAO;AAAA,IACL,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,iBAAiB;AAAA,EACnB;AAAA,EACA,SAAS;AAAA,IACP,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,kBAAkB;AAAA,IAClB,oBACE;AAAA,IACF,iBAAiB;AAAA,EACnB;AAAA,EACA,MAAM;AAAA,IACJ,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,iBAAiB;AAAA,EACnB;AACF;AACO,IAAM,sBAAsB;AAC5B,IAAM,qBAAqB;AAC3B,IAAM,gBAAgB;AACtB,IAAM,gBAAgB;AACtB,IAAM,qBAAqB;AAC3B,IAAM,6BAA6B,GAAG,gBAAgB,IAAI,kBAAkB;AAC5E,IAAM,iCAAiC;AACvC,IAAM,YAAY;AAClB,IAAM,2BAA2B,IAAI,KAAK;AAG1C,IAAM,oBAAoB,oBAAI,IAAI;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;","names":[]}
@@ -1,39 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- ensureProjectSdk,
4
- loadRemoteProjectIdentity
5
- } from "./chunk-W3N3QJ4V.mjs";
6
- import {
7
- updateProjectState
8
- } from "./chunk-776W3UGV.mjs";
9
-
10
- // src/services/project/remote-project.ts
11
- async function resolveRemoteProject(options) {
12
- const identity = await loadRemoteProjectIdentity();
13
- const project = await ensureProjectSdk({
14
- projectId: options.projectConfig.projectId,
15
- slug: options.projectConfig.slug,
16
- updateAlias: options.updateAlias
17
- });
18
- const nextProjectConfig = {
19
- ...options.projectConfig,
20
- slug: project.slug,
21
- deploymentId: identity.deploymentId,
22
- ownerScopeId: identity.ownerScopeId,
23
- bindingKey: identity.bindingKey,
24
- remoteHeadDigest: project.head?.revisionDigest,
25
- apiBaseUrl: options.config.apiBaseUrl,
26
- webBaseUrl: options.config.webBaseUrl
27
- };
28
- await updateProjectState(options.projectRoot, nextProjectConfig);
29
- return {
30
- identity,
31
- project,
32
- projectConfig: nextProjectConfig
33
- };
34
- }
35
-
36
- export {
37
- resolveRemoteProject
38
- };
39
- //# sourceMappingURL=chunk-HGMUAL33.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/project/remote-project.ts"],"sourcesContent":["import type { Project } from \"@dreamboard-games/api-client\";\nimport { updateProjectState } from \"../../config/project-config.js\";\nimport type { ProjectConfig, ResolvedConfig } from \"../../types.js\";\nimport {\n ensureProjectSdk,\n loadRemoteProjectIdentity,\n type RemoteProjectIdentity,\n} from \"../api/index.js\";\n\nexport type ResolvedRemoteProject = {\n identity: RemoteProjectIdentity;\n project: Project;\n projectConfig: ProjectConfig;\n};\n\nexport async function resolveRemoteProject(options: {\n projectRoot: string;\n projectConfig: ProjectConfig;\n config: Pick<ResolvedConfig, \"apiBaseUrl\" | \"webBaseUrl\">;\n updateAlias?: boolean;\n}): Promise<ResolvedRemoteProject> {\n const identity = await loadRemoteProjectIdentity();\n const project = await ensureProjectSdk({\n projectId: options.projectConfig.projectId,\n slug: options.projectConfig.slug,\n updateAlias: options.updateAlias,\n });\n const nextProjectConfig: ProjectConfig = {\n ...options.projectConfig,\n slug: project.slug,\n deploymentId: identity.deploymentId,\n ownerScopeId: identity.ownerScopeId,\n bindingKey: identity.bindingKey,\n remoteHeadDigest: project.head?.revisionDigest,\n apiBaseUrl: options.config.apiBaseUrl,\n webBaseUrl: options.config.webBaseUrl,\n };\n\n await updateProjectState(options.projectRoot, nextProjectConfig);\n\n return {\n identity,\n project,\n projectConfig: nextProjectConfig,\n };\n}\n"],"mappings":";;;;;;;;;;AAeA,eAAsB,qBAAqB,SAKR;AACjC,QAAM,WAAW,MAAM,0BAA0B;AACjD,QAAM,UAAU,MAAM,iBAAiB;AAAA,IACrC,WAAW,QAAQ,cAAc;AAAA,IACjC,MAAM,QAAQ,cAAc;AAAA,IAC5B,aAAa,QAAQ;AAAA,EACvB,CAAC;AACD,QAAM,oBAAmC;AAAA,IACvC,GAAG,QAAQ;AAAA,IACX,MAAM,QAAQ;AAAA,IACd,cAAc,SAAS;AAAA,IACvB,cAAc,SAAS;AAAA,IACvB,YAAY,SAAS;AAAA,IACrB,kBAAkB,QAAQ,MAAM;AAAA,IAChC,YAAY,QAAQ,OAAO;AAAA,IAC3B,YAAY,QAAQ,OAAO;AAAA,EAC7B;AAEA,QAAM,mBAAmB,QAAQ,aAAa,iBAAiB;AAE/D,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,eAAe;AAAA,EACjB;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/project/reducer-contract-preflight.ts"],"sourcesContent":["import path from \"node:path\";\nimport { importTypeScriptModule } from \"../../utils/ts-module-loader.js\";\n\nconst GAME_CONTRACT_ENTRY_PATH = path.join(\"app\", \"game-contract.ts\");\n\nfunction normalizeErrorMessage(error: unknown): string {\n const rawMessage =\n error instanceof Error ? error.message : String(error ?? \"Unknown error\");\n return (\n rawMessage\n .split(\"\\n\")\n .map((line) => line.trim())\n .find(Boolean)\n ?.replace(/^Error:\\s*/u, \"\") ?? \"Unknown error\"\n );\n}\n\nfunction isManifestScopedIdBrandingError(message: string): boolean {\n return (\n message.includes(\"defineGameContract:\") &&\n message.includes(\"manifest-scoped\") &&\n (message.includes(\"uses a raw z.string()\") ||\n message.includes(\"uses z.array(z.string())\"))\n );\n}\n\nexport async function assertReducerContractPreflight(\n projectRoot: string,\n): Promise<void> {\n const entryPath = path.join(projectRoot, GAME_CONTRACT_ENTRY_PATH);\n\n try {\n await importTypeScriptModule(entryPath);\n } catch (error) {\n const message = normalizeErrorMessage(error);\n if (isManifestScopedIdBrandingError(message)) {\n throw new Error(\n [\n `Dreamboard could not validate \\`${GAME_CONTRACT_ENTRY_PATH}\\` during \\`dreamboard sync\\`.`,\n \"This happens because a state field name looks like a manifest-scoped id, but the schema uses a plain string instead of the manifest-backed id schema.\",\n \"Workaround: use `gameContract.schemas.<id>` (or `manifest.ids.<id>`) for manifest ids. If the field is intentionally free-form text, rename it so it does not look like a manifest id field.\",\n `Original error: ${message}`,\n ].join(\" \"),\n );\n }\n\n throw new Error(\n [\n `Dreamboard could not validate \\`${GAME_CONTRACT_ENTRY_PATH}\\` during \\`dreamboard sync\\`.`,\n \"Fix the authored reducer contract module so it can be imported locally, then run `dreamboard sync` again.\",\n `Original error: ${message}`,\n ].join(\" \"),\n );\n }\n}\n"],"mappings":";;;;;;AAAA,OAAO,UAAU;AAGjB,IAAM,2BAA2B,KAAK,KAAK,OAAO,kBAAkB;AAEpE,SAAS,sBAAsB,OAAwB;AACrD,QAAM,aACJ,iBAAiB,QAAQ,MAAM,UAAU,OAAO,SAAS,eAAe;AAC1E,SACE,WACG,MAAM,IAAI,EACV,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,EACzB,KAAK,OAAO,GACX,QAAQ,eAAe,EAAE,KAAK;AAEtC;AAEA,SAAS,gCAAgC,SAA0B;AACjE,SACE,QAAQ,SAAS,qBAAqB,KACtC,QAAQ,SAAS,iBAAiB,MACjC,QAAQ,SAAS,uBAAuB,KACvC,QAAQ,SAAS,0BAA0B;AAEjD;AAEA,eAAsB,+BACpB,aACe;AACf,QAAM,YAAY,KAAK,KAAK,aAAa,wBAAwB;AAEjE,MAAI;AACF,UAAM,uBAAuB,SAAS;AAAA,EACxC,SAAS,OAAO;AACd,UAAM,UAAU,sBAAsB,KAAK;AAC3C,QAAI,gCAAgC,OAAO,GAAG;AAC5C,YAAM,IAAI;AAAA,QACR;AAAA,UACE,mCAAmC,wBAAwB;AAAA,UAC3D;AAAA,UACA;AAAA,UACA,mBAAmB,OAAO;AAAA,QAC5B,EAAE,KAAK,GAAG;AAAA,MACZ;AAAA,IACF;AAEA,UAAM,IAAI;AAAA,MACR;AAAA,QACE,mCAAmC,wBAAwB;AAAA,QAC3D;AAAA,QACA,mBAAmB,OAAO;AAAA,MAC5B,EAAE,KAAK,GAAG;AAAA,IACZ;AAAA,EACF;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../packages/api-client/dist/core/bodySerializer.gen.js","../../../../packages/api-client/dist/core/params.gen.js","../../../../packages/api-client/dist/core/serverSentEvents.gen.js","../../../../packages/api-client/dist/core/pathSerializer.gen.js","../../../../packages/api-client/dist/core/utils.gen.js","../../../../packages/api-client/dist/core/auth.gen.js","../../../../packages/api-client/dist/client/utils.gen.js","../../../../packages/api-client/dist/client/client.gen.js","../../../../packages/api-client/dist/client.gen.js"],"sourcesContent":["// This file is auto-generated by @hey-api/openapi-ts\nconst serializeFormDataPair = (data, key, value) => {\n if (typeof value === 'string' || value instanceof Blob) {\n data.append(key, value);\n }\n else if (value instanceof Date) {\n data.append(key, value.toISOString());\n }\n else {\n data.append(key, JSON.stringify(value));\n }\n};\nconst serializeUrlSearchParamsPair = (data, key, value) => {\n if (typeof value === 'string') {\n data.append(key, value);\n }\n else {\n data.append(key, JSON.stringify(value));\n }\n};\nexport const formDataBodySerializer = {\n bodySerializer: (body) => {\n const data = new FormData();\n Object.entries(body).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n }\n else {\n serializeFormDataPair(data, key, value);\n }\n });\n return data;\n },\n};\nexport const jsonBodySerializer = {\n bodySerializer: (body) => JSON.stringify(body, (_key, value) => typeof value === 'bigint' ? value.toString() : value),\n};\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: (body) => {\n const data = new URLSearchParams();\n Object.entries(body).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n }\n else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n return data.toString();\n },\n};\n","// This file is auto-generated by @hey-api/openapi-ts\nconst extraPrefixesMap = {\n $body_: 'body',\n $headers_: 'headers',\n $path_: 'path',\n $query_: 'query',\n};\nconst extraPrefixes = Object.entries(extraPrefixesMap);\nconst buildKeyMap = (fields, map) => {\n if (!map) {\n map = new Map();\n }\n for (const config of fields) {\n if ('in' in config) {\n if (config.key) {\n map.set(config.key, {\n in: config.in,\n map: config.map,\n });\n }\n }\n else if ('key' in config) {\n map.set(config.key, {\n map: config.map,\n });\n }\n else if (config.args) {\n buildKeyMap(config.args, map);\n }\n }\n return map;\n};\nconst stripEmptySlots = (params) => {\n for (const [slot, value] of Object.entries(params)) {\n if (value && typeof value === 'object' && !Object.keys(value).length) {\n delete params[slot];\n }\n }\n};\nexport const buildClientParams = (args, fields) => {\n const params = {\n body: {},\n headers: {},\n path: {},\n query: {},\n };\n const map = buildKeyMap(fields);\n let config;\n for (const [index, arg] of args.entries()) {\n if (fields[index]) {\n config = fields[index];\n }\n if (!config) {\n continue;\n }\n if ('in' in config) {\n if (config.key) {\n const field = map.get(config.key);\n const name = field.map || config.key;\n if (field.in) {\n params[field.in][name] = arg;\n }\n }\n else {\n params.body = arg;\n }\n }\n else {\n for (const [key, value] of Object.entries(arg ?? {})) {\n const field = map.get(key);\n if (field) {\n if (field.in) {\n const name = field.map || key;\n params[field.in][name] = value;\n }\n else {\n params[field.map] = value;\n }\n }\n else {\n const extra = extraPrefixes.find(([prefix]) => key.startsWith(prefix));\n if (extra) {\n const [prefix, slot] = extra;\n params[slot][key.slice(prefix.length)] = value;\n }\n else if ('allowExtra' in config && config.allowExtra) {\n for (const [slot, allowed] of Object.entries(config.allowExtra)) {\n if (allowed) {\n params[slot][key] = value;\n break;\n }\n }\n }\n }\n }\n }\n }\n stripEmptySlots(params);\n return params;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\nexport const createSseClient = ({ onRequest, onSseError, onSseEvent, responseTransformer, responseValidator, sseDefaultRetryDelay, sseMaxRetryAttempts, sseMaxRetryDelay, sseSleepFn, url, ...options }) => {\n let lastEventId;\n const sleep = sseSleepFn ??\n ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));\n const createStream = async function* () {\n let retryDelay = sseDefaultRetryDelay ?? 3000;\n let attempt = 0;\n const signal = options.signal ?? new AbortController().signal;\n while (true) {\n if (signal.aborted)\n break;\n attempt++;\n const headers = options.headers instanceof Headers\n ? options.headers\n : new Headers(options.headers);\n if (lastEventId !== undefined) {\n headers.set(\"Last-Event-ID\", lastEventId);\n }\n try {\n const requestInit = {\n redirect: \"follow\",\n ...options,\n body: options.serializedBody,\n headers,\n signal,\n };\n let request = new Request(url, requestInit);\n if (onRequest) {\n request = await onRequest(url, requestInit);\n }\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = options.fetch ?? globalThis.fetch;\n const response = await _fetch(request);\n if (!response.ok)\n throw new Error(`SSE failed: ${response.status} ${response.statusText}`);\n if (!response.body)\n throw new Error(\"No body in SSE response\");\n const reader = response.body\n .pipeThrough(new TextDecoderStream())\n .getReader();\n let buffer = \"\";\n const abortHandler = () => {\n try {\n reader.cancel();\n }\n catch {\n // noop\n }\n };\n signal.addEventListener(\"abort\", abortHandler);\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done)\n break;\n buffer += value;\n buffer = buffer.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n const chunks = buffer.split(\"\\n\\n\");\n buffer = chunks.pop() ?? \"\";\n for (const chunk of chunks) {\n const lines = chunk.split(\"\\n\");\n const dataLines = [];\n let eventName;\n for (const line of lines) {\n if (line.startsWith(\"data:\")) {\n dataLines.push(line.replace(/^data:\\s*/, \"\"));\n }\n else if (line.startsWith(\"event:\")) {\n eventName = line.replace(/^event:\\s*/, \"\");\n }\n else if (line.startsWith(\"id:\")) {\n lastEventId = line.replace(/^id:\\s*/, \"\");\n }\n else if (line.startsWith(\"retry:\")) {\n const parsed = Number.parseInt(line.replace(/^retry:\\s*/, \"\"), 10);\n if (!Number.isNaN(parsed)) {\n retryDelay = parsed;\n }\n }\n }\n let data;\n let parsedJson = false;\n if (dataLines.length) {\n const rawData = dataLines.join(\"\\n\");\n try {\n data = JSON.parse(rawData);\n parsedJson = true;\n }\n catch {\n data = rawData;\n }\n }\n if (parsedJson) {\n if (responseValidator) {\n await responseValidator(data);\n }\n if (responseTransformer) {\n data = await responseTransformer(data);\n }\n }\n onSseEvent?.({\n data,\n event: eventName,\n id: lastEventId,\n retry: retryDelay,\n });\n if (dataLines.length && data !== \"\") {\n yield data;\n }\n }\n }\n }\n finally {\n signal.removeEventListener(\"abort\", abortHandler);\n reader.releaseLock();\n }\n break; // exit loop on normal completion\n }\n catch (error) {\n // connection failed or aborted; retry after delay\n onSseError?.(error);\n if (sseMaxRetryAttempts !== undefined &&\n attempt >= sseMaxRetryAttempts) {\n throw error;\n }\n // exponential backoff: double retry each attempt, cap at 30s\n const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000);\n await sleep(backoff);\n }\n }\n };\n const stream = createStream();\n return { stream };\n};\n","// This file is auto-generated by @hey-api/openapi-ts\nexport const separatorArrayExplode = (style) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\nexport const separatorArrayNoExplode = (style) => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\nexport const separatorObjectExplode = (style) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\nexport const serializeArrayParam = ({ allowReserved, explode, name, style, value, }) => {\n if (!explode) {\n const joinedValues = (allowReserved ? value : value.map((v) => encodeURIComponent(v))).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v);\n }\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix'\n ? separator + joinedValues\n : joinedValues;\n};\nexport const serializePrimitiveParam = ({ allowReserved, name, value, }) => {\n if (value === undefined || value === null) {\n return '';\n }\n if (typeof value === 'object') {\n throw new Error('Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.');\n }\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\nexport const serializeObjectParam = ({ allowReserved, explode, name, style, value, valueOnly, }) => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n if (style !== 'deepObject' && !explode) {\n let values = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [\n ...values,\n key,\n allowReserved ? v : encodeURIComponent(v),\n ];\n });\n const joinedValues = values.join(',');\n switch (style) {\n case 'form':\n return `${name}=${joinedValues}`;\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) => serializePrimitiveParam({\n allowReserved,\n name: style === 'deepObject' ? `${name}[${key}]` : key,\n value: v,\n }))\n .join(separator);\n return style === 'label' || style === 'matrix'\n ? separator + joinedValues\n : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\nimport { serializeArrayParam, serializeObjectParam, serializePrimitiveParam, } from './pathSerializer.gen.js';\nexport const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\nexport const defaultPathSerializer = ({ path, url: _url }) => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style = 'simple';\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n }\n else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n const value = path[name];\n if (value === undefined || value === null) {\n continue;\n }\n if (Array.isArray(value)) {\n url = url.replace(match, serializeArrayParam({ explode, name, style, value }));\n continue;\n }\n if (typeof value === 'object') {\n url = url.replace(match, serializeObjectParam({\n explode,\n name,\n style,\n value: value,\n valueOnly: true,\n }));\n continue;\n }\n if (style === 'matrix') {\n url = url.replace(match, `;${serializePrimitiveParam({\n name,\n value: value,\n })}`);\n continue;\n }\n const replaceValue = encodeURIComponent(style === 'label' ? `.${value}` : value);\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\nexport const getUrl = ({ baseUrl, path, query, querySerializer, url: _url, }) => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\nexport function getValidRequestBody(options) {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n if (isSerializedBody) {\n if ('serializedBody' in options) {\n const hasSerializedBody = options.serializedBody !== undefined && options.serializedBody !== '';\n return hasSerializedBody ? options.serializedBody : null;\n }\n // not all clients implement a serializedBody property (i.e. client-axios)\n return options.body !== '' ? options.body : null;\n }\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n // no body was provided\n return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\nexport const getAuthToken = async (auth, callback) => {\n const token = typeof callback === 'function' ? await callback(auth) : callback;\n if (!token) {\n return;\n }\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\nimport { getAuthToken } from '../core/auth.gen.js';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen.js';\nimport { serializeArrayParam, serializeObjectParam, serializePrimitiveParam, } from '../core/pathSerializer.gen.js';\nimport { getUrl } from '../core/utils.gen.js';\nexport const createQuerySerializer = ({ parameters = {}, ...args } = {}) => {\n const querySerializer = (queryParams) => {\n const search = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n if (value === undefined || value === null) {\n continue;\n }\n const options = parameters[name] || args;\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...options.array,\n });\n if (serializedArray)\n search.push(serializedArray);\n }\n else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value,\n ...options.object,\n });\n if (serializedObject)\n search.push(serializedObject);\n }\n else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value,\n });\n if (serializedPrimitive)\n search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (contentType) => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\n }\n const cleanContent = contentType.split(';')[0]?.trim();\n if (!cleanContent) {\n return;\n }\n if (cleanContent.startsWith('application/json') ||\n cleanContent.endsWith('+json')) {\n return 'json';\n }\n if (cleanContent === 'multipart/form-data') {\n return 'formData';\n }\n if (['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))) {\n return 'blob';\n }\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n return;\n};\nconst checkForExistence = (options, name) => {\n if (!name) {\n return false;\n }\n if (options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)) {\n return true;\n }\n return false;\n};\nexport const setAuthParams = async ({ security, ...options }) => {\n for (const auth of security) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n const token = await getAuthToken(auth, options.auth);\n if (!token) {\n continue;\n }\n const name = auth.name ?? 'Authorization';\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n};\nexport const buildUrl = (options) => getUrl({\n baseUrl: options.baseUrl,\n path: options.path,\n query: options.query,\n querySerializer: typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n});\nexport const mergeConfigs = (a, b) => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\nconst headersEntries = (headers) => {\n const entries = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\nexport const mergeHeaders = (...headers) => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n const iterator = header instanceof Headers\n ? headersEntries(header)\n : Object.entries(header);\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n }\n else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v);\n }\n }\n else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e. their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(key, typeof value === 'object' ? JSON.stringify(value) : value);\n }\n }\n }\n return mergedHeaders;\n};\nclass Interceptors {\n constructor() {\n this.fns = [];\n }\n clear() {\n this.fns = [];\n }\n eject(id) {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = null;\n }\n }\n exists(id) {\n const index = this.getInterceptorIndex(id);\n return Boolean(this.fns[index]);\n }\n getInterceptorIndex(id) {\n if (typeof id === 'number') {\n return this.fns[id] ? id : -1;\n }\n return this.fns.indexOf(id);\n }\n update(id, fn) {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = fn;\n return id;\n }\n return false;\n }\n use(fn) {\n this.fns.push(fn);\n return this.fns.length - 1;\n }\n}\nexport const createInterceptors = () => ({\n error: new Interceptors(),\n request: new Interceptors(),\n response: new Interceptors(),\n});\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\nexport const createConfig = (override = {}) => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","// This file is auto-generated by @hey-api/openapi-ts\nimport { createSseClient } from '../core/serverSentEvents.gen.js';\nimport { getValidRequestBody } from '../core/utils.gen.js';\nimport { buildUrl, createConfig, createInterceptors, getParseAs, mergeConfigs, mergeHeaders, setAuthParams, } from './utils.gen.js';\nexport const createClient = (config = {}) => {\n let _config = mergeConfigs(createConfig(), config);\n const getConfig = () => ({ ..._config });\n const setConfig = (config) => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n const interceptors = createInterceptors();\n const beforeRequest = async (options) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n serializedBody: undefined,\n };\n if (opts.security) {\n await setAuthParams({\n ...opts,\n security: opts.security,\n });\n }\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body);\n }\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.serializedBody === '') {\n opts.headers.delete('Content-Type');\n }\n const url = buildUrl(opts);\n return { opts, url };\n };\n const request = async (options) => {\n // @ts-expect-error\n const { opts, url } = await beforeRequest(options);\n const requestInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n let request = new Request(url, requestInit);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch;\n let response;\n try {\n response = await _fetch(request);\n }\n catch (error) {\n // Handle fetch exceptions (AbortError, network errors, etc.)\n let finalError = error;\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = (await fn(error, undefined, request, opts));\n }\n }\n finalError = finalError || {};\n if (opts.throwOnError) {\n throw finalError;\n }\n // Return error response\n return opts.responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response: undefined,\n };\n }\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n const result = {\n request,\n response,\n };\n if (response.ok) {\n const parseAs = (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n if (response.status === 204 ||\n response.headers.get('Content-Length') === '0') {\n let emptyData;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'text':\n emptyData = await response[parseAs]();\n break;\n case 'formData':\n emptyData = new FormData();\n break;\n case 'stream':\n emptyData = response.body;\n break;\n case 'json':\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === 'data'\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n let data;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'formData':\n case 'text':\n data = await response[parseAs]();\n break;\n case 'json': {\n // Some servers return 200 with no Content-Length and empty body.\n // response.json() would throw; read as text and parse if non-empty.\n const text = await response.text();\n data = text ? JSON.parse(text) : {};\n break;\n }\n case 'stream':\n return opts.responseStyle === 'data'\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n return opts.responseStyle === 'data'\n ? data\n : {\n data,\n ...result,\n };\n }\n const textError = await response.text();\n let jsonError;\n try {\n jsonError = JSON.parse(textError);\n }\n catch {\n // noop\n }\n const error = jsonError ?? textError;\n let finalError = error;\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = (await fn(error, response, request, opts));\n }\n }\n finalError = finalError || {};\n if (opts.throwOnError) {\n throw finalError;\n }\n // TODO: we probably want to return error and improve types\n return opts.responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n ...result,\n };\n };\n const makeMethodFn = (method) => (options) => request({ ...options, method });\n const makeSseFn = (method) => async (options) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body,\n headers: opts.headers,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n serializedBody: getValidRequestBody(opts),\n url,\n });\n };\n return {\n buildUrl,\n connect: makeMethodFn('CONNECT'),\n delete: makeMethodFn('DELETE'),\n get: makeMethodFn('GET'),\n getConfig,\n head: makeMethodFn('HEAD'),\n interceptors,\n options: makeMethodFn('OPTIONS'),\n patch: makeMethodFn('PATCH'),\n post: makeMethodFn('POST'),\n put: makeMethodFn('PUT'),\n request,\n setConfig,\n sse: {\n connect: makeSseFn('CONNECT'),\n delete: makeSseFn('DELETE'),\n get: makeSseFn('GET'),\n head: makeSseFn('HEAD'),\n options: makeSseFn('OPTIONS'),\n patch: makeSseFn('PATCH'),\n post: makeSseFn('POST'),\n put: makeSseFn('PUT'),\n trace: makeSseFn('TRACE'),\n },\n trace: makeMethodFn('TRACE'),\n };\n};\n","// This file is auto-generated by @hey-api/openapi-ts\nimport { createClient, createConfig } from './client/index.js';\nexport const client = createClient(createConfig({ baseUrl: 'https://dreamboard.games' }));\n"],"mappings":"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","names":["joinedValues","config","request","error","finalError","url"]}