create-eigen-game 0.14.0 → 0.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -67,6 +67,10 @@ public values from `app/app-config.json` through Flutter's native
67
67
  it contains its own `package.json`, `wrangler.jsonc`, TypeScript entry point,
68
68
  generated Wrangler types, and game module. The combined CLI renders that same
69
69
  template under `server/`; it does not maintain a second Worker skeleton.
70
+ The template approves only the `esbuild` and `workerd` install scripts that its
71
+ toolchain requires, using npm's `allowScripts` in `package.json` and pnpm's
72
+ `allowBuilds` in `pnpm-workspace.yaml`; npm explicitly declines the unnecessary
73
+ optional `fsevents` fallback build.
70
74
 
71
75
  `templates/app-overlay` is applied after
72
76
  `flutter create --empty --platforms android,web`. It supplies the Firebase
package/dist/index.d.ts CHANGED
@@ -8,8 +8,8 @@ interface FirebaseLink {
8
8
  }
9
9
  //#endregion
10
10
  //#region src/index.d.ts
11
- type PackageManager = "npm" | "pnpm";
12
- type Runner = (command: string, args: string[], cwd: string) => void;
11
+ export type PackageManager = "npm" | "pnpm";
12
+ export type Runner = (command: string, args: string[], cwd: string) => void;
13
13
  /**
14
14
  * Where a scaffold says what it is doing, so that presentation belongs to the
15
15
  * caller and this module only has to name things.
@@ -19,7 +19,7 @@ type Runner = (command: string, args: string[], cwd: string) => void;
19
19
  * substitutes one that captures each step's output and shows it only if the
20
20
  * step fails.
21
21
  */
22
- interface Reporter {
22
+ export interface Reporter {
23
23
  /** Runs `body` as one named step. Its subprocesses can be captured. */
24
24
  step<T>(label: string, body: () => T): T;
25
25
  /**
@@ -44,12 +44,12 @@ interface Reporter {
44
44
  * with `RangeError: Invalid string length`. Supplying the default its check
45
45
  * misses is better than giving up the drawing.
46
46
  */
47
- declare function normaliseTerminalWidth(stream: {
47
+ export declare function normaliseTerminalWidth(stream: {
48
48
  isTTY?: boolean;
49
49
  columns?: number;
50
50
  }): void;
51
51
  /** Runs every step plainly, which is what a library caller gets by default. */
52
- declare const plainReporter: Reporter;
52
+ export declare const plainReporter: Reporter;
53
53
  /**
54
54
  * The runner a scaffold uses when the caller has not supplied one: it asks the
55
55
  * reporter whether the terminal is spoken for.
@@ -59,8 +59,8 @@ declare const plainReporter: Reporter;
59
59
  * handed to the reporter: on success so it can discard them, and on failure
60
60
  * so the reason survives.
61
61
  */
62
- declare function capturingRunner(reporter: Reporter): Runner;
63
- interface ScaffoldOptions {
62
+ export declare function capturingRunner(reporter: Reporter): Runner;
63
+ export interface ScaffoldOptions {
64
64
  directory: string;
65
65
  org?: string;
66
66
  packageManager?: PackageManager;
@@ -109,8 +109,8 @@ interface ScaffoldOptions {
109
109
  * than guess. `failed` has already warned by the time it is returned, and
110
110
  * carries no advice of its own.
111
111
  */
112
- type GitOutcome = "committed" | "existing" | "skipped" | "failed";
113
- interface ScaffoldResult {
112
+ export type GitOutcome = "committed" | "existing" | "skipped" | "failed";
113
+ export interface ScaffoldResult {
114
114
  root: string;
115
115
  name: string;
116
116
  git: GitOutcome;
@@ -134,10 +134,10 @@ interface ScaffoldResult {
134
134
  * the *prefix*, not the whole identifier, which is the part worth seeing
135
135
  * before answering: Google Play makes it permanent at first upload.
136
136
  */
137
- declare function applicationId(directory: string, org?: string): string;
138
- declare function detectPackageManager(userAgent?: string | undefined): PackageManager | undefined;
139
- declare function decodeUtf8(bytes: Buffer): string | undefined;
140
- interface AddContinuousIntegrationOptions {
137
+ export declare function applicationId(directory: string, org?: string): string;
138
+ export declare function detectPackageManager(userAgent?: string | undefined): PackageManager | undefined;
139
+ export declare function decodeUtf8(bytes: Buffer): string | undefined;
140
+ export interface AddContinuousIntegrationOptions {
141
141
  directory: string;
142
142
  /** Overrides the manager recorded in the project's own package.json. */
143
143
  packageManager?: PackageManager;
@@ -149,23 +149,23 @@ interface AddContinuousIntegrationOptions {
149
149
  * long as its author likes, then gain the same PR gate and signed release
150
150
  * pipeline a `--ci` scaffold would have produced.
151
151
  */
152
- declare function addContinuousIntegration(options: AddContinuousIntegrationOptions): {
152
+ export declare function addContinuousIntegration(options: AddContinuousIntegrationOptions): {
153
153
  root: string;
154
154
  files: string[];
155
155
  };
156
156
  /** Asks a command a question. `ok` is "ran and succeeded"; a tool that is not installed and one that fails are both `false`, because neither can be used. */
157
- type Probe = (command: string, args: string[]) => {
157
+ export type Probe = (command: string, args: string[]) => {
158
158
  ok: boolean;
159
159
  stdout: string;
160
160
  };
161
161
  /** One thing standing between this machine and a configured Firebase project, and the single command that clears it. */
162
- interface FirebaseProblem {
162
+ export interface FirebaseProblem {
163
163
  /** Said as a sentence fragment, so it reads after "Firebase is not set up here:". */
164
164
  reason: string;
165
165
  /** The one command that fixes this, and nothing else. */
166
166
  fix: string;
167
167
  }
168
- type FirebaseReadiness = {
168
+ export type FirebaseReadiness = {
169
169
  ready: true;
170
170
  } | {
171
171
  ready: false;
@@ -191,7 +191,7 @@ type FirebaseReadiness = {
191
191
  * that errors or grows a different output shape is left to the command that
192
192
  * actually needs the credentials.
193
193
  */
194
- declare function firebaseReadiness(probe?: Probe): FirebaseReadiness;
194
+ export declare function firebaseReadiness(probe?: Probe): FirebaseReadiness;
195
195
  /**
196
196
  * Whether the scaffold would land inside a repository that already exists.
197
197
  *
@@ -224,9 +224,9 @@ declare function firebaseReadiness(probe?: Probe): FirebaseReadiness;
224
224
  * the last one. {@link scaffoldGame} asks it again, for callers that are not
225
225
  * the CLI.
226
226
  */
227
- declare function destinationProblem(directory: string): string | undefined;
228
- declare function insideWorkTree(directory: string, probe?: Probe): boolean;
229
- declare function scaffoldGame(options: ScaffoldOptions): ScaffoldResult;
227
+ export declare function destinationProblem(directory: string): string | undefined;
228
+ export declare function insideWorkTree(directory: string, probe?: Probe): boolean;
229
+ export declare function scaffoldGame(options: ScaffoldOptions): ScaffoldResult;
230
230
  //#endregion
231
- export { AddContinuousIntegrationOptions, type FirebaseLink, FirebaseProblem, FirebaseReadiness, GitOutcome, PackageManager, Probe, Reporter, Runner, ScaffoldOptions, ScaffoldResult, addContinuousIntegration, applicationId, capturingRunner, decodeUtf8, destinationProblem, detectPackageManager, firebaseReadiness, insideWorkTree, normaliseTerminalWidth, plainReporter, scaffoldGame };
231
+ export type { FirebaseLink };
232
232
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/link-firebase.ts","../src/index.ts"],"mappings":";;UAkBiB;;EAEf;;EAEA;;;;KCbU;KAEA,UAAU,iBAAiB,gBAAgB;;;;;;;;;;UAWtC;;EAEf,KAAK,GAAG,eAAe,YAAY,IAAI;;;;;EAKvC,SAAS,GAAG,eAAe,YAAY,IAAI;;EAE3C,KAAK;;EAEL,KAAK;;WAEI;;;;;;;;;;;;iBAaK,uBAAuB;EAAU;EAAiB;;;cAKrD,eAAe;;;;;;;;;;iBAiBZ,gBAAgB,UAAU,WAAW;UAkBpC;EACf;EACA;EACA,iBAAiB;;;;;;EAMjB;;;;;;EAMA;;;;;EAKA;;;;;;;;;;;EAWA;;;;;;EAMA,MAAM;;;;;EAKN,WAAW;;;;;;;KAQD;UAEK;EACf;EACA;EACA,KAAK;;;;;EAKL;;;;;;EAMA,OAAO;;;;;;;;;;iBA2HO,cAAc,mBAAmB;iBAkBjC,qBAAqB,iCAAgD;iBAoErE,WAAW,OAAO;UAoNjB;EACf;;EAEA,iBAAiB;;;;;;;;;iBAUH,yBAAyB,SAAS;EAAoC;EAAc;;;KAqCxF,SAAS,iBAAiB;EAAqB;EAAa;;;UAWvD;;EAEf;;EAEA;;KAGU;EAAsB;;EAAkB;EAAc,UAAU;;;;;;;;;;;;;;;;;;;;;;iBAsB5D,kBAAkB,QAAO,QAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0EhD,mBAAmB;iBAiBnB,eAAe,mBAAmB,QAAO;iBAyGzC,aAAa,SAAS,kBAAkB"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/link-firebase.ts","../src/index.ts"],"mappings":";;UAkBiB;;EAEf;;EAEA;;;;YCbU;YAEA,UAAU,iBAAiB,gBAAgB;;;;;;;;;;iBAWtC;;EAEf,KAAK,GAAG,eAAe,YAAY,IAAI;;;;;EAKvC,SAAS,GAAG,eAAe,YAAY,IAAI;;EAE3C,KAAK;;EAEL,KAAK;;WAEI;;;;;;;;;;;;wBAaK,uBAAuB;EAAU;EAAiB;;;qBAKrD,eAAe;;;;;;;;;;wBAiBZ,gBAAgB,UAAU,WAAW;iBAkBpC;EACf;EACA;EACA,iBAAiB;;;;;;EAMjB;;;;;;EAMA;;;;;EAKA;;;;;;;;;;;EAWA;;;;;;EAMA,MAAM;;;;;EAKN,WAAW;;;;;;;YAQD;iBAEK;EACf;EACA;EACA,KAAK;;;;;EAKL;;;;;;EAMA,OAAO;;;;;;;;;;wBA2HO,cAAc,mBAAmB;wBAkBjC,qBAAqB,iCAAgD;wBAoErE,WAAW,OAAO;iBAoNjB;EACf;;EAEA,iBAAiB;;;;;;;;;wBAUH,yBAAyB,SAAS;EAAoC;EAAc;;;YAqCxF,SAAS,iBAAiB;EAAqB;EAAa;;;iBAWvD;;EAEf;;EAEA;;YAGU;EAAsB;;EAAkB;EAAc,UAAU;;;;;;;;;;;;;;;;;;;;;;wBAsB5D,kBAAkB,QAAO,QAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA0EhD,mBAAmB;wBAiBnB,eAAe,mBAAmB,QAAO;wBAyGzC,aAAa,SAAS,kBAAkB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-eigen-game",
3
- "version": "0.14.0",
3
+ "version": "0.14.2",
4
4
  "license": "MIT",
5
5
  "description": "Scaffold an EigenInteractive game Worker and Flutter app without cloning the engine repositories.",
6
6
  "type": "module",
@@ -24,14 +24,14 @@
24
24
  "picocolors": "^1.1.1"
25
25
  },
26
26
  "devDependencies": {
27
- "@types/node": "^26.2.0",
27
+ "@types/node": "^26.4.1",
28
28
  "typescript": "~6.0.2",
29
- "vitest": "^4.1.10",
30
- "wrangler": "^4.123.0",
29
+ "vitest": "^4.1.11",
30
+ "wrangler": "^4.129.0",
31
31
  "zod": "^4.4.3",
32
- "@eigeninteractive/rules": "0.6.0",
33
- "@eigeninteractive/server": "0.6.0",
34
- "@eigeninteractive/testkit": "0.6.0"
32
+ "@eigeninteractive/rules": "0.6.1",
33
+ "@eigeninteractive/server": "0.6.1",
34
+ "@eigeninteractive/testkit": "0.6.1"
35
35
  },
36
36
  "engines": {
37
37
  "node": ">=22"
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://biomejs.dev/schemas/2.5.4/schema.json",
2
+ "$schema": "https://biomejs.dev/schemas/2.5.12/schema.json",
3
3
  "vcs": {
4
4
  "enabled": true,
5
5
  "clientKind": "git",
@@ -12,6 +12,6 @@
12
12
  "lint": "biome check ."
13
13
  },
14
14
  "devDependencies": {
15
- "@biomejs/biome": "^2.5.3"
15
+ "@biomejs/biome": "2.5.12"
16
16
  }
17
17
  }
@@ -62,8 +62,12 @@ formatter is free to move anything written there.
62
62
  refuses to run them unless the project asks, and fails the install outright
63
63
  when one is skipped (`ERR_PNPM_IGNORED_BUILDS`). Two need theirs: `esbuild`
64
64
  fetches its platform binary, and `workerd` is the runtime `vitest` and
65
- `wrangler dev` execute against. npm runs install scripts by default and ignores
66
- the file entirely, so the scaffold is correct under both.
65
+ `wrangler dev` execute against. npm ignores this file, so `package.json`
66
+ declares the same two names in npm's `allowScripts` policy. Keeping both
67
+ policies beside the Worker dependencies makes installs work without granting
68
+ every dependency permission to run code. npm's policy also explicitly declines
69
+ the optional `fsevents` fallback build: its package already carries a universal
70
+ macOS binary, so compiling another one is unnecessary.
67
71
 
68
72
  `minimumReleaseAgeExclude` appears on its own. pnpm 11 will not install a
69
73
  version published less than a day ago, a quarantine against a compromised
@@ -4,6 +4,11 @@
4
4
  "private": true,
5
5
  "description": "The authoritative Example Game server on Cloudflare Workers.",
6
6
  "type": "module",
7
+ "allowScripts": {
8
+ "esbuild": true,
9
+ "fsevents": false,
10
+ "workerd": true
11
+ },
7
12
  "eigen": {
8
13
  "game": "Example Game"
9
14
  },