@bitmagic/cli 0.1.45 → 0.1.46-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +49 -5
  2. package/dist/bin.js +3 -2
  3. package/dist/bin.js.map +1 -1
  4. package/dist/commands/allowance.js +2 -6
  5. package/dist/commands/allowance.js.map +1 -1
  6. package/dist/commands/dev.js +11 -5
  7. package/dist/commands/dev.js.map +1 -1
  8. package/dist/commands/forge.js +2 -3
  9. package/dist/commands/forge.js.map +1 -1
  10. package/dist/commands/generate.js +5 -6
  11. package/dist/commands/generate.js.map +1 -1
  12. package/dist/commands/init.js +8 -6
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/login.js +11 -7
  15. package/dist/commands/login.js.map +1 -1
  16. package/dist/commands/logout.js +3 -6
  17. package/dist/commands/logout.js.map +1 -1
  18. package/dist/commands/publish.js +2 -3
  19. package/dist/commands/publish.js.map +1 -1
  20. package/dist/commands/subscribe.js +2 -6
  21. package/dist/commands/subscribe.js.map +1 -1
  22. package/dist/commands/upgrade.js +21 -8
  23. package/dist/commands/upgrade.js.map +1 -1
  24. package/dist/commands/usage.js +2 -6
  25. package/dist/commands/usage.js.map +1 -1
  26. package/dist/commands/whoami.d.ts +8 -1
  27. package/dist/commands/whoami.js +10 -8
  28. package/dist/commands/whoami.js.map +1 -1
  29. package/dist/config/environments.d.ts +34 -0
  30. package/dist/config/environments.js +71 -6
  31. package/dist/config/environments.js.map +1 -1
  32. package/dist/editor/server.js +2 -3
  33. package/dist/editor/server.js.map +1 -1
  34. package/dist/project/context.d.ts +32 -0
  35. package/dist/project/context.js +60 -11
  36. package/dist/project/context.js.map +1 -1
  37. package/dist/project/version-compare.d.ts +17 -0
  38. package/dist/project/version-compare.js +68 -0
  39. package/dist/project/version-compare.js.map +1 -1
  40. package/dist/scaffold/project-files.d.ts +13 -0
  41. package/dist/scaffold/project-files.js +8 -2
  42. package/dist/scaffold/project-files.js.map +1 -1
  43. package/dist/scaffold/upgrade-project.d.ts +13 -0
  44. package/dist/scaffold/upgrade-project.js +8 -1
  45. package/dist/scaffold/upgrade-project.js.map +1 -1
  46. package/dist/update/check.d.ts +9 -4
  47. package/dist/update/check.js +31 -12
  48. package/dist/update/check.js.map +1 -1
  49. package/dist/update/notice.d.ts +26 -1
  50. package/dist/update/notice.js +24 -3
  51. package/dist/update/notice.js.map +1 -1
  52. package/package.json +4 -4
@@ -1,9 +1,9 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
3
  import { defaultBaseDir } from '../config/credentials.js';
4
- import { cliUpdateNotice, isCacheStale } from './notice.js';
5
- /** Public registry metadata for the published `latest` tag. No auth, no scope needed. */
6
- const NPM_LATEST_URL = 'https://registry.npmjs.org/@bitmagic/cli/latest';
4
+ import { cliUpdateNotice, isCacheStale, updateTagFor, } from './notice.js';
5
+ /** Public registry metadata, one document per dist-tag. No auth, no scope needed. */
6
+ const NPM_PACKAGE_URL = 'https://registry.npmjs.org/@bitmagic/cli';
7
7
  /**
8
8
  * Cap on the background refresh.
9
9
  *
@@ -19,7 +19,10 @@ function isCache(value) {
19
19
  if (typeof value !== 'object' || value === null)
20
20
  return false;
21
21
  const c = value;
22
- return (c.latest === null || typeof c.latest === 'string') && typeof c.checkedAt === 'number';
22
+ return ((c.latest === null || typeof c.latest === 'string') &&
23
+ // A cache from before the dev line existed has no tag, fails here, and is treated as absent.
24
+ (c.tag === 'latest' || c.tag === 'dev') &&
25
+ typeof c.checkedAt === 'number');
23
26
  }
24
27
  /**
25
28
  * The last recorded answer, or null if there is none to trust.
@@ -46,10 +49,15 @@ export function writeUpdateCache(cache, baseDir = defaultBaseDir()) {
46
49
  // An unwritable home directory costs a cached hint, nothing else. The command proceeds.
47
50
  }
48
51
  }
49
- /** Ask npm what the newest published version is. Null on any failure. */
50
- export async function fetchLatestVersion(fetchImpl = globalThis.fetch) {
52
+ /**
53
+ * Ask npm what the newest version published under `tag` is. Null on any failure.
54
+ *
55
+ * Per-tag rather than always `latest`, so a build installed from the dev line is told about the
56
+ * next dev build instead of about a production release it deliberately runs ahead of.
57
+ */
58
+ export async function fetchTagVersion(tag, fetchImpl = globalThis.fetch) {
51
59
  try {
52
- const response = await fetchImpl(NPM_LATEST_URL, {
60
+ const response = await fetchImpl(`${NPM_PACKAGE_URL}/${tag}`, {
53
61
  signal: AbortSignal.timeout(REFRESH_TIMEOUT_MS),
54
62
  headers: { accept: 'application/json' },
55
63
  });
@@ -73,7 +81,14 @@ export async function fetchLatestVersion(fetchImpl = globalThis.fetch) {
73
81
  * every command wait on npm to be told something it could just as well be told tomorrow.
74
82
  */
75
83
  export function pendingUpdateNotice(currentVersion, baseDir) {
76
- return cliUpdateNotice(currentVersion, readUpdateCache(baseDir)?.latest ?? null);
84
+ const cache = readUpdateCache(baseDir);
85
+ // A cache recorded for the OTHER line answers a different question: a dev build must not be told
86
+ // the production release is newer, and a release must not be offered a prerelease. Stay silent
87
+ // until the background refresh has asked about this one — the same one-quiet-run cost a
88
+ // first-ever invocation already pays.
89
+ if (cache === null || cache.tag !== updateTagFor(currentVersion))
90
+ return null;
91
+ return cliUpdateNotice(currentVersion, cache.latest);
77
92
  }
78
93
  /**
79
94
  * Refresh the cache if it is stale. Fire-and-forget: callers must not await this.
@@ -81,12 +96,16 @@ export function pendingUpdateNotice(currentVersion, baseDir) {
81
96
  * Returns a promise only so tests can. In production the process may well exit first, which is
82
97
  * fine — the next run reads whatever was written, and an unwritten cache simply stays stale.
83
98
  */
84
- export async function refreshUpdateCacheInBackground(now = Date.now(), baseDir, fetchImpl = globalThis.fetch) {
85
- if (!isCacheStale(readUpdateCache(baseDir), now))
99
+ export async function refreshUpdateCacheInBackground(currentVersion, now = Date.now(), baseDir, fetchImpl = globalThis.fetch) {
100
+ const tag = updateTagFor(currentVersion);
101
+ const cache = readUpdateCache(baseDir);
102
+ // A cache about the other line is refreshed immediately however recent it is — switching lines
103
+ // with `npm i -g @bitmagic/cli@dev` must not leave the nudge mute for up to a day.
104
+ if (cache !== null && cache.tag === tag && !isCacheStale(cache, now))
86
105
  return;
87
- const latest = await fetchLatestVersion(fetchImpl);
106
+ const latest = await fetchTagVersion(tag, fetchImpl);
88
107
  // Recorded even when the fetch failed, so an offline machine backs off for a day rather than
89
108
  // retrying npm on every single command.
90
- writeUpdateCache({ latest, checkedAt: now }, baseDir);
109
+ writeUpdateCache({ latest, tag, checkedAt: now }, baseDir);
91
110
  }
92
111
  //# sourceMappingURL=check.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/update/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/update/check.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,16 @@
1
+ /** Which published line a build came from: a prerelease was installed from `@bitmagic/cli@dev`. */
2
+ export type UpdateTag = 'latest' | 'dev';
3
+ /**
4
+ * The npm dist-tag a running version was installed from.
5
+ *
6
+ * The publish script derives the tag from the version with exactly this rule
7
+ * (.github/scripts/publish-npm-package.sh), so a prerelease is on `dev` by construction and the
8
+ * two ends cannot drift. Asking `latest` on behalf of a dev build would report the production
9
+ * release as "newer" for half a patch cycle and never mention the dev build that fixes things.
10
+ */
11
+ export declare function updateTagFor(version: string): UpdateTag;
12
+ /** How to install the line a build is already on, so a nudge never moves someone between lines. */
13
+ export declare function installCommandFor(tag: UpdateTag): string;
1
14
  /**
2
15
  * How stale a cached npm answer may be before it is refreshed.
3
16
  *
@@ -8,8 +21,16 @@
8
21
  export declare const UPDATE_CHECK_INTERVAL_MS: number;
9
22
  /** What is remembered between runs, so no command pays for the network. */
10
23
  export interface UpdateCheckCache {
11
- /** The newest version npm reported, or null if the last check could not reach it. */
24
+ /** The newest version npm reported for `tag`, or null if the last check could not reach it. */
12
25
  latest: string | null;
26
+ /**
27
+ * The dist-tag that answer is about.
28
+ *
29
+ * Required rather than optional-with-a-default: a cache written by a CLI from before the dev
30
+ * line existed then fails the shape guard, reads as absent and is refreshed — self-healing at
31
+ * the cost of one quiet day, with no "unknown tag" branch for anyone to reason about.
32
+ */
33
+ tag: UpdateTag;
13
34
  /** Epoch ms of that check. */
14
35
  checkedAt: number;
15
36
  }
@@ -19,5 +40,9 @@ export declare function isCacheStale(cache: UpdateCheckCache | null, now: number
19
40
  *
20
41
  * Quiet for everything except a confirmed newer release: an unreachable npm, an unparseable
21
42
  * version on either side, and a CLI somehow ahead of the registry all produce nothing.
43
+ *
44
+ * `latestVersion` must be the newest version of the line `currentVersion` is ON — the caller is
45
+ * responsible for having asked the right dist-tag. Comparing across lines would tell a tester on
46
+ * 0.1.46-dev.3 to "update" to the older 0.1.45 release.
22
47
  */
23
48
  export declare function cliUpdateNotice(currentVersion: string, latestVersion: string | null | undefined): string | null;
@@ -1,4 +1,19 @@
1
- import { isOlderDottedVersion } from '../project/version-compare.js';
1
+ import { isOlderSemverVersion } from '../project/version-compare.js';
2
+ /**
3
+ * The npm dist-tag a running version was installed from.
4
+ *
5
+ * The publish script derives the tag from the version with exactly this rule
6
+ * (.github/scripts/publish-npm-package.sh), so a prerelease is on `dev` by construction and the
7
+ * two ends cannot drift. Asking `latest` on behalf of a dev build would report the production
8
+ * release as "newer" for half a patch cycle and never mention the dev build that fixes things.
9
+ */
10
+ export function updateTagFor(version) {
11
+ return version.includes('-') ? 'dev' : 'latest';
12
+ }
13
+ /** How to install the line a build is already on, so a nudge never moves someone between lines. */
14
+ export function installCommandFor(tag) {
15
+ return tag === 'dev' ? 'npm i -g @bitmagic/cli@dev' : 'npm i -g @bitmagic/cli';
16
+ }
2
17
  /**
3
18
  * How stale a cached npm answer may be before it is refreshed.
4
19
  *
@@ -21,14 +36,20 @@ export function isCacheStale(cache, now) {
21
36
  *
22
37
  * Quiet for everything except a confirmed newer release: an unreachable npm, an unparseable
23
38
  * version on either side, and a CLI somehow ahead of the registry all produce nothing.
39
+ *
40
+ * `latestVersion` must be the newest version of the line `currentVersion` is ON — the caller is
41
+ * responsible for having asked the right dist-tag. Comparing across lines would tell a tester on
42
+ * 0.1.46-dev.3 to "update" to the older 0.1.45 release.
24
43
  */
25
44
  export function cliUpdateNotice(currentVersion, latestVersion) {
26
45
  if (typeof latestVersion !== 'string' || latestVersion === '')
27
46
  return null;
28
47
  if (typeof currentVersion !== 'string' || currentVersion === '')
29
48
  return null;
30
- if (isOlderDottedVersion(currentVersion, latestVersion) !== true)
49
+ if (isOlderSemverVersion(currentVersion, latestVersion) !== true)
31
50
  return null;
32
- return `A newer bitmagic CLI is available: ${latestVersion} (you have ${currentVersion}). Run \`npm i -g @bitmagic/cli\` to update.`;
51
+ // Naming the bare install for a dev build would silently move a tester onto the release line.
52
+ const install = installCommandFor(updateTagFor(currentVersion));
53
+ return `A newer bitmagic CLI is available: ${latestVersion} (you have ${currentVersion}). Run \`${install}\` to update.`;
33
54
  }
34
55
  //# sourceMappingURL=notice.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"notice.js","sourceRoot":"","sources":["../../src/update/notice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAU5D,MAAM,UAAU,YAAY,CAAC,KAA8B,EAAE,GAAW;IACtE,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,+FAA+F;IAC/F,oBAAoB;IACpB,IAAI,KAAK,CAAC,SAAS,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,GAAG,GAAG,KAAK,CAAC,SAAS,IAAI,wBAAwB,CAAC;AAC3D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,cAAsB,EAAE,aAAwC;IAC9F,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC3E,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC7E,IAAI,oBAAoB,CAAC,cAAc,EAAE,aAAa,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9E,OAAO,sCAAsC,aAAa,cAAc,cAAc,8CAA8C,CAAC;AACvI,CAAC"}
1
+ {"version":3,"file":"notice.js","sourceRoot":"","sources":["../../src/update/notice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAKrE;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClD,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,iBAAiB,CAAC,GAAc;IAC9C,OAAO,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,wBAAwB,CAAC;AACjF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAkB5D,MAAM,UAAU,YAAY,CAAC,KAA8B,EAAE,GAAW;IACtE,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,+FAA+F;IAC/F,oBAAoB;IACpB,IAAI,KAAK,CAAC,SAAS,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,GAAG,GAAG,KAAK,CAAC,SAAS,IAAI,wBAAwB,CAAC;AAC3D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,cAAsB,EAAE,aAAwC;IAC9F,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC3E,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC7E,IAAI,oBAAoB,CAAC,cAAc,EAAE,aAAa,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9E,8FAA8F;IAC9F,MAAM,OAAO,GAAG,iBAAiB,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;IAChE,OAAO,sCAAsC,aAAa,cAAc,cAAc,YAAY,OAAO,eAAe,CAAC;AAC3H,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitmagic/cli",
3
- "version": "0.1.45",
3
+ "version": "0.1.46-dev.0",
4
4
  "description": "Build Bitmagic games from your own agent tool",
5
5
  "type": "module",
6
6
  "bin": {
@@ -20,9 +20,9 @@
20
20
  "fflate": "^0.8.2",
21
21
  "playwright-core": "^1.59.1",
22
22
  "tar": "^7.4.3",
23
- "@bitmagic/asset-core": "0.2.0",
24
- "@bitmagic/world-forger": "0.1.5",
25
- "@bitmagic/animation-forger": "0.1.0"
23
+ "@bitmagic/animation-forger": "0.1.0",
24
+ "@bitmagic/world-forger": "0.1.6-dev.0",
25
+ "@bitmagic/asset-core": "0.2.0"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@eslint/js": "^9.38.0",