@puzzmo/cli 1.0.51 → 1.0.53

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 (35) hide show
  1. package/README.md +12 -2
  2. package/docs/games-changed.md +223 -0
  3. package/lib/commands/changed.d.ts +12 -0
  4. package/lib/commands/changed.js +178 -0
  5. package/lib/commands/changed.js.map +1 -0
  6. package/lib/commands/upload.js +27 -0
  7. package/lib/commands/upload.js.map +1 -1
  8. package/lib/commands/validate.d.ts +1 -1
  9. package/lib/commands/validate.js +1 -1
  10. package/lib/commands/validate.js.map +1 -1
  11. package/lib/index.js +52 -2
  12. package/lib/index.js.map +1 -1
  13. package/lib/queries/__generated__/cliGameRuntimesQuery.graphql.d.ts +37 -0
  14. package/lib/queries/__generated__/cliGameRuntimesQuery.graphql.js +256 -0
  15. package/lib/queries/__generated__/cliGameRuntimesQuery.graphql.js.map +1 -0
  16. package/lib/queries/gameRuntimes.d.ts +14 -0
  17. package/lib/queries/gameRuntimes.js +52 -0
  18. package/lib/queries/gameRuntimes.js.map +1 -0
  19. package/lib/util/belay.d.ts +34 -0
  20. package/lib/util/belay.js +22 -0
  21. package/lib/util/belay.js.map +1 -0
  22. package/lib/util/discoverGames.d.ts +10 -2
  23. package/lib/util/discoverGames.js +14 -11
  24. package/lib/util/discoverGames.js.map +1 -1
  25. package/package.json +1 -1
  26. package/schemas/puzzmo-file-schema.json +1 -1
  27. package/src/commands/changed.ts +239 -0
  28. package/src/commands/upload.ts +30 -0
  29. package/src/commands/validate.ts +1 -1
  30. package/src/index.ts +58 -2
  31. package/src/queries/__generated__/cliGameRuntimesQuery.graphql.ts +301 -0
  32. package/src/queries/gameRuntimes.ts +64 -0
  33. package/src/util/belay.ts +56 -0
  34. package/src/util/discoverGames.ts +23 -11
  35. package/templates/minesweeper/README.md +1 -1
package/README.md CHANGED
@@ -18,16 +18,26 @@ Save a CLI auth token. Generate one from studio.puzzmo.com.
18
18
  puzzmo login pzt-your-token-here
19
19
  ```
20
20
 
21
- ### `puzzmo upload <dir>`
21
+ ### `puzzmo games upload <dir>`
22
22
 
23
23
  Upload a game build directory to Puzzmo. The game slug is read from `puzzmo.json` in the build directory.
24
24
 
25
25
  ```bash
26
- puzzmo upload dist/
26
+ puzzmo games upload dist/
27
27
  ```
28
28
 
29
29
  The command collects all files in the directory, validates the `puzzmo.json`, computes a SHA from git (or file contents), and uploads them in batches.
30
30
 
31
+ ### `puzzmo games validate [dir]`
32
+
33
+ Validate every `puzzmo.json` under `dir` (defaults to the current directory) against the schema, without uploading anything.
34
+
35
+ ```bash
36
+ puzzmo games validate
37
+ ```
38
+
39
+ > The older `puzzmo upload` and `puzzmo validate` (without `games`) still work as aliases, but the `puzzmo games …` forms are preferred.
40
+
31
41
  ### `puzzmo game create [token]`
32
42
 
33
43
  Interactive wizard to create a new Puzzmo game project.
@@ -0,0 +1,223 @@
1
+ # `puzzmo games changed`
2
+
3
+ Find out **which of your games have changed since their last deployed build** — so your CI can
4
+ build and upload only the games that actually changed, instead of rebuilding everything.
5
+
6
+ ## How it works
7
+
8
+ From anywhere in your repository, the command:
9
+
10
+ 1. Finds every `puzzmo.json` under the current directory (each one marks a game project).
11
+ 2. Looks up each game's currently-deployed build and reads the commit it was built from.
12
+ 3. Runs a `git diff` between that commit and your current checkout, scoped to each game's folder.
13
+ 4. Reports which game folders changed.
14
+
15
+ The result is a list of folders you can feed straight into a build-and-deploy step.
16
+
17
+ ## Usage
18
+
19
+ ```text
20
+ puzzmo games changed [dir] [options]
21
+ ```
22
+
23
+ | Argument | Description |
24
+ | -------- | ------------------------------------------------------- |
25
+ | `dir` | Directory to scan for games. Defaults to `.` (current). |
26
+
27
+ ### Options
28
+
29
+ | Option | Description |
30
+ | ----------------------- | ------------------------------------------------------------------------------------------- |
31
+ | `--list` | Print only the changed game folders, one per line. Ideal for shell loops. |
32
+ | `--json` | Print a JSON report with full detail for every game (changed or not). |
33
+ | `--matrix` | Print a GitHub Actions matrix of the changed games, ready for `strategy.matrix`. |
34
+ | `--ref <ref>` | Compare against this git ref instead of your current checkout (`HEAD`). |
35
+ | `--against <which>` | Which deployed build to use as the baseline: `latest` (default), `next`, `previous`. |
36
+ | `--include-uncommitted` | Also count uncommitted working-tree changes. Useful when running locally before committing. |
37
+
38
+ `latest` is the build your team currently sees — the staged "next" build when you have one
39
+ waiting, otherwise the live one. That is almost always the right baseline for "what do I still
40
+ need to ship". Use `next` or `previous` to target a specific slot.
41
+
42
+ ## Output formats
43
+
44
+ ### Default (human-readable)
45
+
46
+ A table of every game with its slug, the build it was compared against, its status, and how many
47
+ files changed.
48
+
49
+ ### `--list`
50
+
51
+ The folder of every changed game, one per line — nothing else. Empty output means there is
52
+ nothing to build:
53
+
54
+ ```text
55
+ games/minesweeper
56
+ games/sudoku
57
+ ```
58
+
59
+ ### `--json`
60
+
61
+ An array with one entry per discovered game:
62
+
63
+ ```json
64
+ [
65
+ {
66
+ "slug": "minesweeper",
67
+ "displayName": "Minesweeper",
68
+ "teamID": "team-abc",
69
+ "dir": "games/minesweeper",
70
+ "baseSha": "a1b2c3d",
71
+ "ref": "e4f5a6b",
72
+ "status": "changed",
73
+ "changedFiles": 7
74
+ },
75
+ {
76
+ "slug": "wordbind",
77
+ "displayName": "Wordbind",
78
+ "teamID": "team-abc",
79
+ "dir": "games/wordbind",
80
+ "baseSha": "9f8e7d6",
81
+ "ref": "e4f5a6b",
82
+ "status": "unchanged",
83
+ "changedFiles": 0
84
+ }
85
+ ]
86
+ ```
87
+
88
+ | Field | Description |
89
+ | -------------- | --------------------------------------------------------------------------------------- |
90
+ | `slug` | The game's slug, from its `puzzmo.json`. |
91
+ | `displayName` | The game's display name, from its `puzzmo.json`. |
92
+ | `teamID` | The owning team, from its `puzzmo.json`. |
93
+ | `dir` | The game's folder, relative to the repo root. Pass this to your build step. |
94
+ | `baseSha` | The commit the deployed build was made from. `null` if the game was never deployed. |
95
+ | `ref` | The commit you compared against (your checkout, or `--ref`). |
96
+ | `status` | `changed`, `unchanged`, or `new` (never deployed before — treat as something to build). |
97
+ | `changedFiles` | How many files differ inside the game's folder. |
98
+
99
+ ### `--matrix`
100
+
101
+ A GitHub Actions matrix containing only the games that need building. When nothing changed it
102
+ prints `{"include":[]}`, which makes a job using it skip automatically:
103
+
104
+ ```json
105
+ { "include": [{ "dir": "games/minesweeper", "slug": "minesweeper" }] }
106
+ ```
107
+
108
+ ## Authentication
109
+
110
+ The command only works with your own games, so it needs a token:
111
+
112
+ - Run `puzzmo login <token>` once on your machine, **or**
113
+ - Set the `PUZZMO_TOKEN` environment variable (best for CI). Optionally set `PUZZMO_API_URL`
114
+ to target a different server (defaults to `https://api.puzzmo.com`).
115
+
116
+ ```yaml
117
+ env:
118
+ PUZZMO_TOKEN: ${{ secrets.PUZZMO_TOKEN }}
119
+ ```
120
+
121
+ ## Using it in CI
122
+
123
+ ### Make sure git history is available
124
+
125
+ The command compares against the commit your build was deployed from, which is usually older than
126
+ the latest one. Most CI systems do a **shallow** checkout that only includes recent commits, so
127
+ that older commit won't be present and the comparison will fail.
128
+
129
+ Tell your checkout to fetch full history. With GitHub Actions:
130
+
131
+ ```yaml
132
+ - uses: actions/checkout@v4
133
+ with:
134
+ fetch-depth: 0 # fetch full history so the deployed build's commit is available
135
+ ```
136
+
137
+ If a deployed build's commit still can't be found, the command stops with an error rather than
138
+ guessing — so you'll know to deepen your checkout.
139
+
140
+ ### Exit codes
141
+
142
+ | Code | Meaning |
143
+ | ---- | ----------------------------------------------------------------------------------------- |
144
+ | `0` | Ran fine. There may or may not be changes — look at the output to decide what to build. |
145
+ | `1` | Something went wrong: a `puzzmo.json` couldn't be read, or a deployed build wasn't found. |
146
+
147
+ Decide whether to deploy based on the **output** (e.g. an empty list or matrix), not the exit code.
148
+
149
+ ### Examples
150
+
151
+ ```bash
152
+ # See a summary of every game under the repo
153
+ puzzmo games changed
154
+
155
+ # Build each changed game
156
+ for dir in $(puzzmo games changed --list); do
157
+ yarn --cwd "$dir" build
158
+ done
159
+
160
+ # Only look at games inside a subfolder
161
+ puzzmo games changed games/word-games --list
162
+ ```
163
+
164
+ ### Full GitHub Actions workflow
165
+
166
+ Detect changed games once, then build and upload each one in parallel:
167
+
168
+ ```yaml
169
+ name: Deploy changed games
170
+ on:
171
+ push:
172
+ branches: [main]
173
+
174
+ jobs:
175
+ detect:
176
+ runs-on: ubuntu-latest
177
+ outputs:
178
+ matrix: ${{ steps.changed.outputs.matrix }}
179
+ steps:
180
+ - uses: actions/checkout@v4
181
+ with:
182
+ fetch-depth: 0 # full history so deployed builds' commits are available
183
+ - uses: actions/setup-node@v4
184
+ with: { node-version: 22 }
185
+ - run: yarn install --immutable
186
+ - id: changed
187
+ env:
188
+ PUZZMO_TOKEN: ${{ secrets.PUZZMO_TOKEN }}
189
+ run: echo "matrix=$(yarn puzzmo games changed --matrix)" >> "$GITHUB_OUTPUT"
190
+
191
+ deploy:
192
+ needs: detect
193
+ if: ${{ fromJSON(needs.detect.outputs.matrix).include[0] != null }} # skip when nothing changed
194
+ runs-on: ubuntu-latest
195
+ strategy:
196
+ fail-fast: false
197
+ matrix: ${{ fromJSON(needs.detect.outputs.matrix) }}
198
+ steps:
199
+ - uses: actions/checkout@v4
200
+ with: { fetch-depth: 0 }
201
+ - uses: actions/setup-node@v4
202
+ with: { node-version: 22 }
203
+ - run: yarn install --immutable
204
+ - name: Build ${{ matrix.slug }}
205
+ run: yarn --cwd "${{ matrix.dir }}" build
206
+ - name: Upload ${{ matrix.slug }}
207
+ env:
208
+ PUZZMO_TOKEN: ${{ secrets.PUZZMO_TOKEN }}
209
+ run: yarn puzzmo games upload "${{ matrix.dir }}"
210
+ ```
211
+
212
+ Uploading a game records the commit it was built from, so the next `games changed` run uses it as
213
+ the new baseline.
214
+
215
+ ## Related commands
216
+
217
+ `puzzmo games` groups the commands that work across all the games in your repo:
218
+
219
+ | Command | What it does |
220
+ | ----------------------- | ---------------------------------------------------------- |
221
+ | `puzzmo games changed` | Report which game folders changed since their last deploy. |
222
+ | `puzzmo games validate` | Check every `puzzmo.json` against the schema. |
223
+ | `puzzmo games upload` | Build-output upload and `puzzmo.json` sync for each game. |
@@ -0,0 +1,12 @@
1
+ /** Which deployed build slot to diff against: the team's latest build, the staged next, or the previous one. */
2
+ export type ChangedAgainst = "latest" | "next" | "previous";
3
+ export type ChangedOptions = {
4
+ json?: boolean;
5
+ list?: boolean;
6
+ matrix?: boolean;
7
+ ref?: string;
8
+ against?: ChangedAgainst;
9
+ includeUncommitted?: boolean;
10
+ };
11
+ /** Reports which discovered games changed since their last deployed build, scoped per game folder. */
12
+ export declare const changed: (dir: string, options?: ChangedOptions) => Promise<void>;
@@ -0,0 +1,178 @@
1
+ import { execFileSync } from "node:child_process";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { findTokensForTeam, getTokens, resolveServerForTeam, sourceToURL } from "../util/config.js";
5
+ import { discoverGames } from "../util/discoverGames.js";
6
+ import { fetchTeamGameVersions } from "../queries/gameRuntimes.js";
7
+ /** Reports which discovered games changed since their last deployed build, scoped per game folder. */
8
+ export const changed = async (dir, options = {}) => {
9
+ const { json = false, list = false, matrix = false, against = "latest", includeUncommitted = false } = options;
10
+ if (getTokens().length === 0) {
11
+ console.error("Not logged in. Run `puzzmo login <token>` or set PUZZMO_TOKEN.");
12
+ process.exit(1);
13
+ }
14
+ const rootDir = path.resolve(dir);
15
+ if (!fs.existsSync(rootDir)) {
16
+ console.error(`Directory not found: ${dir}`);
17
+ process.exit(1);
18
+ }
19
+ const repoRoot = getRepoRoot(rootDir);
20
+ if (!repoRoot) {
21
+ console.error(`Not a git repository: ${rootDir}`);
22
+ process.exit(1);
23
+ }
24
+ const ref = options.ref || "HEAD";
25
+ const refSha = revParseShort(ref, repoRoot);
26
+ if (!refSha) {
27
+ console.error(`Could not resolve git ref: ${ref}`);
28
+ process.exit(1);
29
+ }
30
+ const { games, errors: discoveryErrors } = await discoverGames(rootDir, { requireDist: false });
31
+ if (!games.length && !discoveryErrors.length) {
32
+ console.error(`No puzzmo.json files found under ${rootDir}`);
33
+ process.exit(1);
34
+ }
35
+ const hardErrors = discoveryErrors.map((err) => `${err.slug ?? path.relative(rootDir, err.puzzmoJsonPath)}: ${err.errors.join("; ")}`);
36
+ const teamVersions = new Map();
37
+ const results = await Promise.all(games.map((game) => evaluateGame(game, { repoRoot, ref, refSha, against, includeUncommitted, teamVersions })));
38
+ const report = [];
39
+ for (const result of results) {
40
+ if ("entry" in result)
41
+ report.push(result.entry);
42
+ else
43
+ hardErrors.push(result.error);
44
+ }
45
+ const buildable = report.filter((entry) => entry.status !== "unchanged");
46
+ if (json)
47
+ console.log(JSON.stringify(report, null, 2));
48
+ else if (matrix)
49
+ console.log(JSON.stringify({ include: buildable.map((entry) => ({ dir: entry.dir, slug: entry.slug })) }));
50
+ else if (list)
51
+ for (const entry of buildable)
52
+ console.log(entry.dir);
53
+ else if (report.length)
54
+ printTable(report);
55
+ else if (!hardErrors.length)
56
+ console.log(`No puzzmo.json files found under ${rootDir}`);
57
+ if (hardErrors.length) {
58
+ console.error(`\n${hardErrors.length} error${hardErrors.length === 1 ? "" : "s"}:`);
59
+ for (const message of hardErrors)
60
+ console.error(` ${message}`);
61
+ process.exit(1);
62
+ }
63
+ };
64
+ /** Resolves one game's deployed SHA and diffs it against the ref. Returns either a report entry or a hard error. */
65
+ const evaluateGame = async (game, ctx) => {
66
+ const { slug, teamID } = game.puzzmoFile.game;
67
+ const dir = toPosix(path.relative(ctx.repoRoot, game.puzzmoJsonDir)) || ".";
68
+ const credential = await resolveServerForTeam(teamID);
69
+ if (!credential) {
70
+ const matches = findTokensForTeam(teamID);
71
+ const message = matches.length === 0
72
+ ? `No saved token for team ${teamID}. Run \`puzzmo login <token>\`.`
73
+ : `Token for team ${teamID} is registered against ${matches.map((m) => m.source).join(", ")} but none of those servers are reachable.`;
74
+ return { error: `${slug}: ${message}` };
75
+ }
76
+ let versions;
77
+ try {
78
+ versions = (await getTeamVersions(teamID, credential, ctx)).get(slug);
79
+ }
80
+ catch (e) {
81
+ return { error: `${slug}: ${e instanceof Error ? e.message : String(e)}` };
82
+ }
83
+ const baseSha = pickBaseSha(versions ?? null, ctx.against);
84
+ // Never deployed (or the chosen slot is empty) — nothing to diff against, so it's new and buildable.
85
+ if (!baseSha)
86
+ return { entry: makeEntry(game, dir, null, ctx.refSha, "new", 0) };
87
+ // The deployed commit has to exist locally or we can't diff — fail loudly rather than guessing.
88
+ if (!commitExists(baseSha, ctx.repoRoot))
89
+ return {
90
+ error: `${slug}: deployed commit ${baseSha} not found locally. Fetch full git history (e.g. actions/checkout fetch-depth: 0).`,
91
+ };
92
+ const changedFiles = countChanges(baseSha, ctx.ref, game.puzzmoJsonDir, ctx.includeUncommitted);
93
+ return { entry: makeEntry(game, dir, baseSha, ctx.refSha, changedFiles > 0 ? "changed" : "unchanged", changedFiles) };
94
+ };
95
+ const makeEntry = (game, dir, baseSha, ref, status, changedFiles) => ({
96
+ slug: game.puzzmoFile.game.slug,
97
+ displayName: game.puzzmoFile.game.displayName,
98
+ teamID: game.puzzmoFile.game.teamID,
99
+ dir,
100
+ baseSha,
101
+ ref,
102
+ status,
103
+ changedFiles,
104
+ });
105
+ /** Fetches a team's per-game runtime SHAs once, memoizing the in-flight promise so concurrent games share the call. */
106
+ const getTeamVersions = (teamID, credential, ctx) => {
107
+ let pending = ctx.teamVersions.get(teamID);
108
+ if (!pending) {
109
+ pending = fetchTeamGameVersions(sourceToURL(credential.source), credential.token);
110
+ ctx.teamVersions.set(teamID, pending);
111
+ }
112
+ return pending;
113
+ };
114
+ /** Picks the baseline SHA for the chosen slot. `latest` is the most recent build the team has — the staged next, else the live current. */
115
+ const pickBaseSha = (versions, against) => {
116
+ if (!versions)
117
+ return null;
118
+ if (against === "next")
119
+ return versions.next;
120
+ if (against === "previous")
121
+ return versions.previous;
122
+ return versions.next ?? versions.current;
123
+ };
124
+ /** Counts files differing under `dir` between `base` and `ref`, optionally folding in uncommitted working-tree changes. */
125
+ const countChanges = (base, ref, dir, includeUncommitted) => {
126
+ const files = new Set(gitLines(["diff", "--name-only", `${base}..${ref}`, "--", "."], dir));
127
+ if (includeUncommitted) {
128
+ for (const file of gitLines(["diff", "--name-only", "--", "."], dir))
129
+ files.add(file); // unstaged
130
+ for (const file of gitLines(["diff", "--name-only", "--cached", "--", "."], dir))
131
+ files.add(file); // staged
132
+ for (const file of gitLines(["ls-files", "--others", "--exclude-standard", "--", "."], dir))
133
+ files.add(file); // untracked
134
+ }
135
+ return files.size;
136
+ };
137
+ /** Prints the human-readable summary table. */
138
+ const printTable = (report) => {
139
+ const headers = ["GAME", "STATUS", "BASE", "FILES"];
140
+ const rows = report.map((entry) => [entry.slug, entry.status, entry.baseSha ?? "—", String(entry.changedFiles)]);
141
+ const widths = headers.map((header, i) => Math.max(header.length, ...rows.map((row) => row[i].length)));
142
+ const format = (cols) => cols.map((col, i) => col.padEnd(widths[i])).join(" ");
143
+ console.log(format(headers));
144
+ for (const row of rows)
145
+ console.log(format(row));
146
+ const changedCount = report.filter((entry) => entry.status !== "unchanged").length;
147
+ console.log(`\n${changedCount} of ${report.length} game${report.length === 1 ? "" : "s"} changed.`);
148
+ };
149
+ const getRepoRoot = (cwd) => tryGit(["rev-parse", "--show-toplevel"], cwd);
150
+ const revParseShort = (ref, cwd) => tryGit(["rev-parse", "--short", ref], cwd);
151
+ /** True if `sha` resolves to a commit object in the repo at `cwd`. */
152
+ const commitExists = (sha, cwd) => {
153
+ try {
154
+ execFileSync("git", ["rev-parse", "--verify", "--quiet", `${sha}^{commit}`], { cwd, stdio: "ignore" });
155
+ return true;
156
+ }
157
+ catch {
158
+ return false;
159
+ }
160
+ };
161
+ /** Runs a git command and returns its trimmed stdout, or null if it failed (git's own stderr is suppressed). */
162
+ const tryGit = (args, cwd) => {
163
+ try {
164
+ return execFileSync("git", args, { encoding: "utf-8", cwd, stdio: ["ignore", "pipe", "ignore"] }).trim();
165
+ }
166
+ catch {
167
+ return null;
168
+ }
169
+ };
170
+ /** Runs a git command that emits one file path per line and returns the non-empty lines, or [] if it failed. */
171
+ const gitLines = (args, cwd) => {
172
+ const out = tryGit(args, cwd);
173
+ if (out === null)
174
+ return [];
175
+ return out.split("\n").filter(Boolean);
176
+ };
177
+ const toPosix = (p) => p.split(path.sep).join("/");
178
+ //# sourceMappingURL=changed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changed.js","sourceRoot":"","sources":["../../src/commands/changed.ts"],"names":[],"mappings":"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"}
@@ -110,6 +110,7 @@ const uploadOneGame = async (game, opts) => {
110
110
  for (const file of files)
111
111
  totalBytes += fs.statSync(file).size;
112
112
  console.log(` ${plural(files.length, "file")}, ${formatBytes(totalBytes)} (sha ${sha.slice(0, 8)})`);
113
+ warnAboutAbsoluteScriptURLs(distDir);
113
114
  const result = await uploadFiles(apiURL, credential.token, gameSlug, sha, files, distDir, puzzmoFile, (batch, totalBatches, uploaded) => {
114
115
  console.log(` Batch ${batch}/${totalBatches} done (${plural(uploaded, "file")} uploaded)`);
115
116
  }, { verbose, description, repoURL });
@@ -303,6 +304,32 @@ const maybeCreateMissingGame = async (err, game, opts) => {
303
304
  return false;
304
305
  }
305
306
  };
307
+ /**
308
+ * Warns when dist/index.html loads its JS via absolute URLs. Games are served from a per-version subpath
309
+ * (e.g. puzzmousercontent.com/assets/<hash>/...), so a "/assets/foo.js" src resolves to the host root and 404s.
310
+ * The fix is a relative base — e.g. `base: "./"` in vite.config.ts — so srcs become "./assets/foo.js".
311
+ */
312
+ const warnAboutAbsoluteScriptURLs = (distDir) => {
313
+ const indexPath = path.join(distDir, "index.html");
314
+ if (!fs.existsSync(indexPath))
315
+ return;
316
+ const html = fs.readFileSync(indexPath, "utf-8");
317
+ const offenders = [];
318
+ const scriptRe = /<script\b[^>]*\bsrc\s*=\s*["']([^"']+)["']/gi;
319
+ let match;
320
+ while ((match = scriptRe.exec(html)) !== null) {
321
+ if (isAbsoluteAssetURL(match[1]))
322
+ offenders.push(match[1]);
323
+ }
324
+ if (!offenders.length)
325
+ return;
326
+ console.log(yellow(` Warning: index.html loads JS via absolute URLs, which will break as game is served from a subpath:`));
327
+ for (const url of offenders)
328
+ console.log(yellow(` ${url}`));
329
+ console.log(yellow(` Use relative paths instead — set \`base: "./"\` in your vite.config.ts (or your bundler's equivalent) and rebuild.`));
330
+ };
331
+ /** True for URLs that resolve outside the game's own folder: site-root ("/x"), protocol-relative ("//x"), or fully-qualified ("https://x"). */
332
+ const isAbsoluteAssetURL = (url) => url.startsWith("/") || /^[a-z][a-z0-9+.-]*:\/\//i.test(url);
306
333
  /** Formats a byte count as a human-readable string */
307
334
  const formatBytes = (bytes) => {
308
335
  if (bytes < 1024)
@@ -1 +1 @@
1
- {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/commands/upload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/commands/upload.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- /** CLI command: puzzmo validate [dir] — discovers every puzzmo.json under dir and validates each */
1
+ /** CLI command: puzzmo games validate [dir] — discovers every puzzmo.json under dir and validates each */
2
2
  export declare const validate: (dir: string) => Promise<void>;
@@ -1,7 +1,7 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import { discoverGames } from "../util/discoverGames.js";
4
- /** CLI command: puzzmo validate [dir] — discovers every puzzmo.json under dir and validates each */
4
+ /** CLI command: puzzmo games validate [dir] — discovers every puzzmo.json under dir and validates each */
5
5
  export const validate = async (dir) => {
6
6
  const rootDir = path.resolve(dir);
7
7
  if (!fs.existsSync(rootDir)) {
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD,sGAAoG;AACpG,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAA;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAA;IAEtD,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAA;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,CAAA;QAC9E,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAClG,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAA;QACpE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAA;QACpE,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,EAAE,CAAC,CAAA;QACpC,IAAI,YAAY,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACvF,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,cAAc,CAAA;QAC5E,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAA;QAC7B,OAAO,CAAC,KAAK,CAAC,QAAQ,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAA;QAClD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM;YAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACxD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,WAAW,MAAM,CAAC,MAAM,UAAU,CAAC,CAAA;IAChE,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,CACnC,CAAA"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD,4GAA0G;AAC1G,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAA;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAA;IAEtD,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAA;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,CAAA;QAC9E,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAClG,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAA;QACpE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAA;QACpE,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,EAAE,CAAC,CAAA;QACpC,IAAI,YAAY,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACvF,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,cAAc,CAAA;QAC5E,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAA;QAC7B,OAAO,CAAC,KAAK,CAAC,QAAQ,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAA;QAClD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM;YAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACxD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,WAAW,MAAM,CAAC,MAAM,UAAU,CAAC,CAAA;IAChE,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAAA,CACnC,CAAA"}