create-pyric 0.1.0-alpha.24 → 0.1.0-alpha.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.js +5 -1
- package/dist/bin.js.map +1 -1
- package/dist/firebase-pins.d.ts +16 -0
- package/dist/firebase-pins.d.ts.map +1 -0
- package/dist/firebase-pins.js +16 -0
- package/dist/firebase-pins.js.map +1 -0
- package/dist/package-manager.d.ts +18 -0
- package/dist/package-manager.d.ts.map +1 -0
- package/dist/package-manager.js +33 -0
- package/dist/package-manager.js.map +1 -0
- package/dist/scaffold.js +1 -1
- package/dist/scaffold.js.map +1 -1
- package/dist/template-nextjs.d.ts +0 -3
- package/dist/template-nextjs.d.ts.map +1 -1
- package/dist/template-nextjs.js +6 -2
- package/dist/template-nextjs.js.map +1 -1
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +21 -15
- package/dist/templates.js.map +1 -1
- package/package.json +1 -1
- package/src/bin.ts +5 -1
- package/src/firebase-pins.ts +15 -0
- package/src/package-manager.ts +38 -0
- package/src/scaffold.ts +1 -1
- package/src/template-nextjs.ts +3 -2
- package/src/templates.ts +21 -15
- package/templates/chat/functions/package.json +1 -1
- package/templates/chat/package.json +2 -2
package/dist/bin.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { parseCreateArgs } from './parse-args.js';
|
|
9
9
|
import { applyDepsMode, isTemplateName, normalizeBoolFlags, runScaffold, TEMPLATE_NAMES, TEMPLATES, } from './scaffold.js';
|
|
10
10
|
import { readFileSync } from 'node:fs';
|
|
11
|
+
import { detectPackageManager, nextStepsFor } from './package-manager.js';
|
|
11
12
|
function packageVersion() {
|
|
12
13
|
const metadata = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
|
|
13
14
|
if (typeof metadata.version !== 'string' || metadata.version.length === 0) {
|
|
@@ -34,7 +35,10 @@ async function main() {
|
|
|
34
35
|
const nameFlag = args.flags.get('name');
|
|
35
36
|
const name = typeof nameFlag === 'string' && nameFlag.length > 0 ? nameFlag : undefined;
|
|
36
37
|
const version = packageVersion();
|
|
37
|
-
const
|
|
38
|
+
const pinned = applyDepsMode(TEMPLATES[templateName], 'npm', { version });
|
|
39
|
+
const packageManager = detectPackageManager(process.env.npm_config_user_agent);
|
|
40
|
+
const nextSteps = nextStepsFor(pinned.nextSteps, packageManager);
|
|
41
|
+
const effectiveTemplate = { ...pinned, nextSteps };
|
|
38
42
|
return runScaffold({
|
|
39
43
|
dir: args.positional[0],
|
|
40
44
|
template: templateName,
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Firebase lines a scaffolded app installs (#1188): patch ranges on the
|
|
3
|
+
* versions pyric is certified against. `firebase` follows
|
|
4
|
+
* FIREBASE_TESTED_AGAINST (packages/cli/src/version/compat-target.ts), the
|
|
5
|
+
* version `compat:check` certifies and the `fb<major>.<minor>` dist-tag names.
|
|
6
|
+
* `firebase-admin` follows the version the oracle observations were captured
|
|
7
|
+
* against (`compat:oracle-versions`). A caret range would install a newer
|
|
8
|
+
* minor, whose exports pyric may not mirror yet.
|
|
9
|
+
*
|
|
10
|
+
* packages/create-pyric/test/firebase-pins.test.ts keeps these equal to the
|
|
11
|
+
* certified versions and to the chat template's package.json files, which are
|
|
12
|
+
* static assets and cannot import this module.
|
|
13
|
+
*/
|
|
14
|
+
export declare const FIREBASE_PIN = "~12.13.0";
|
|
15
|
+
export declare const FIREBASE_ADMIN_PIN = "~13.10.0";
|
|
16
|
+
//# sourceMappingURL=firebase-pins.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firebase-pins.d.ts","sourceRoot":"","sources":["../src/firebase-pins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,aAAa,CAAC;AACvC,eAAO,MAAM,kBAAkB,aAAa,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Firebase lines a scaffolded app installs (#1188): patch ranges on the
|
|
3
|
+
* versions pyric is certified against. `firebase` follows
|
|
4
|
+
* FIREBASE_TESTED_AGAINST (packages/cli/src/version/compat-target.ts), the
|
|
5
|
+
* version `compat:check` certifies and the `fb<major>.<minor>` dist-tag names.
|
|
6
|
+
* `firebase-admin` follows the version the oracle observations were captured
|
|
7
|
+
* against (`compat:oracle-versions`). A caret range would install a newer
|
|
8
|
+
* minor, whose exports pyric may not mirror yet.
|
|
9
|
+
*
|
|
10
|
+
* packages/create-pyric/test/firebase-pins.test.ts keeps these equal to the
|
|
11
|
+
* certified versions and to the chat template's package.json files, which are
|
|
12
|
+
* static assets and cannot import this module.
|
|
13
|
+
*/
|
|
14
|
+
export const FIREBASE_PIN = '~12.13.0';
|
|
15
|
+
export const FIREBASE_ADMIN_PIN = '~13.10.0';
|
|
16
|
+
//# sourceMappingURL=firebase-pins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firebase-pins.js","sourceRoot":"","sources":["../src/firebase-pins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The package manager that ran `create pyric`, so the printed next steps
|
|
3
|
+
* name the commands the user already uses.
|
|
4
|
+
*/
|
|
5
|
+
export type PackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';
|
|
6
|
+
/**
|
|
7
|
+
* Reads the `npm_config_user_agent` value every package manager sets for
|
|
8
|
+
* `create` and `exec`, such as `pnpm/9.0.0 npm/? node/v22.15.0 linux x64`.
|
|
9
|
+
* Without one, the user ran the binary directly, and the docs use npm.
|
|
10
|
+
*/
|
|
11
|
+
export declare function detectPackageManager(userAgent: string | undefined): PackageManager;
|
|
12
|
+
/**
|
|
13
|
+
* Rewrites each `npm <command>` or `bun <command>` step to the same command
|
|
14
|
+
* for `pm`, and drops the `# or: ...` alternative, since the step now names
|
|
15
|
+
* the package manager in use.
|
|
16
|
+
*/
|
|
17
|
+
export declare function nextStepsFor(steps: readonly string[], pm: PackageManager): string[];
|
|
18
|
+
//# sourceMappingURL=package-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAU7D;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAIlF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,cAAc,GAAG,MAAM,EAAE,CAMnF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The package manager that ran `create pyric`, so the printed next steps
|
|
3
|
+
* name the commands the user already uses.
|
|
4
|
+
*/
|
|
5
|
+
const PACKAGE_MANAGERS = ['npm', 'pnpm', 'yarn', 'bun'];
|
|
6
|
+
/** A step a template writes for one package manager, such as `bun run dev`. */
|
|
7
|
+
const PACKAGE_MANAGER_STEP = /^(npm|bun) /;
|
|
8
|
+
/** The alternative a template names after a step, such as `# or: bun install`. */
|
|
9
|
+
const ALTERNATIVE_COMMENT = /\s+# or: .*$/;
|
|
10
|
+
/**
|
|
11
|
+
* Reads the `npm_config_user_agent` value every package manager sets for
|
|
12
|
+
* `create` and `exec`, such as `pnpm/9.0.0 npm/? node/v22.15.0 linux x64`.
|
|
13
|
+
* Without one, the user ran the binary directly, and the docs use npm.
|
|
14
|
+
*/
|
|
15
|
+
export function detectPackageManager(userAgent) {
|
|
16
|
+
const name = userAgent?.split('/')[0];
|
|
17
|
+
const known = PACKAGE_MANAGERS.find((pm) => pm === name);
|
|
18
|
+
return known ?? 'npm';
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Rewrites each `npm <command>` or `bun <command>` step to the same command
|
|
22
|
+
* for `pm`, and drops the `# or: ...` alternative, since the step now names
|
|
23
|
+
* the package manager in use.
|
|
24
|
+
*/
|
|
25
|
+
export function nextStepsFor(steps, pm) {
|
|
26
|
+
return steps.map((step) => {
|
|
27
|
+
const isPackageManagerStep = PACKAGE_MANAGER_STEP.test(step);
|
|
28
|
+
if (!isPackageManagerStep)
|
|
29
|
+
return step;
|
|
30
|
+
return step.replace(PACKAGE_MANAGER_STEP, `${pm} `).replace(ALTERNATIVE_COMMENT, '');
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=package-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,gBAAgB,GAA8B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAEnF,+EAA+E;AAC/E,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAE3C,kFAAkF;AAClF,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAE3C;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAA6B;IAChE,MAAM,IAAI,GAAG,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;IACzD,OAAO,KAAK,IAAI,KAAK,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB,EAAE,EAAkB;IACvE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,oBAAoB;YAAE,OAAO,IAAI,CAAC;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/scaffold.js
CHANGED
|
@@ -184,7 +184,7 @@ export async function runScaffold(request, deps = {}) {
|
|
|
184
184
|
merged: [],
|
|
185
185
|
skipped: [],
|
|
186
186
|
conflicts: [],
|
|
187
|
-
nextSteps:
|
|
187
|
+
nextSteps: effective.nextSteps,
|
|
188
188
|
};
|
|
189
189
|
const pkgPath = join(dir, 'package.json');
|
|
190
190
|
let pkgMerge = null;
|
package/dist/scaffold.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-nextjs.d.ts","sourceRoot":"","sources":["../src/template-nextjs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"template-nextjs.d.ts","sourceRoot":"","sources":["../src/template-nextjs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAkevD,eAAO,MAAM,eAAe,EAAE,gBAwC7B,CAAC"}
|
package/dist/template-nextjs.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffold template definition for Next.js (`npm create pyric -- --template nextjs`).
|
|
3
|
+
*/
|
|
4
|
+
import { FIREBASE_ADMIN_PIN, FIREBASE_PIN } from './firebase-pins.js';
|
|
1
5
|
const NEXTJS_CONFIG_MJS = `import { fileURLToPath } from 'node:url';
|
|
2
6
|
import { withPyric } from '@pyric/cli/next';
|
|
3
7
|
|
|
@@ -475,8 +479,8 @@ export const NEXTJS_TEMPLATE = {
|
|
|
475
479
|
start: 'next start',
|
|
476
480
|
},
|
|
477
481
|
dependencies: {
|
|
478
|
-
firebase:
|
|
479
|
-
'firebase-admin':
|
|
482
|
+
firebase: FIREBASE_PIN,
|
|
483
|
+
'firebase-admin': FIREBASE_ADMIN_PIN,
|
|
480
484
|
next: '^15.0.0',
|
|
481
485
|
react: '^19.0.0',
|
|
482
486
|
'react-dom': '^19.0.0',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-nextjs.js","sourceRoot":"","sources":["../src/template-nextjs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"template-nextjs.js","sourceRoot":"","sources":["../src/template-nextjs.ts"],"names":[],"mappings":"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"}
|
package/dist/templates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAQH,eAAO,MAAM,cAAc,sDAAuD,CAAC;AACnF,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAEnE;AAED,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC;6EACyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,8EAA8E;IAC9E,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,qDAAqD;IACrD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,4DAA4D;IAC5D,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAMD,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAkBD,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG;IAC9E,WAAW,EAAE;QACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC,CAAC;IACF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB,CAkEA;AA4pBD,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAoG5D,CAAC"}
|
package/dist/templates.js
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
import { lstatSync, readFileSync, readdirSync } from 'node:fs';
|
|
19
19
|
import { basename, dirname, isAbsolute, relative, resolve, sep } from 'node:path';
|
|
20
20
|
import { fileURLToPath } from 'node:url';
|
|
21
|
+
import { FIREBASE_PIN } from './firebase-pins.js';
|
|
21
22
|
import { NEXTJS_TEMPLATE } from './template-nextjs.js';
|
|
22
23
|
export const TEMPLATE_NAMES = ['web', 'node', 'static', 'chat', 'nextjs'];
|
|
23
24
|
export function isTemplateName(value) {
|
|
@@ -127,8 +128,9 @@ const WEB_INDEX_HTML = (name) => `<!doctype html>
|
|
|
127
128
|
</html>
|
|
128
129
|
`;
|
|
129
130
|
const WEB_APP_JS = `// Canonical firebase/* imports. Under \`pyric sandbox\` they are served by the
|
|
130
|
-
// in-page pyric sandbox (the
|
|
131
|
-
// bundler/pipeline the same imports resolve to the real
|
|
131
|
+
// in-page pyric sandbox (no request reaches the project the config names);
|
|
132
|
+
// under any standard bundler/pipeline the same imports resolve to the real
|
|
133
|
+
// \`firebase\` package.
|
|
132
134
|
// Graduation changes where you run this code, never the code itself.
|
|
133
135
|
import { initializeApp } from 'firebase/app';
|
|
134
136
|
import {
|
|
@@ -283,7 +285,8 @@ const FIRESTORE_INDEXES = `{
|
|
|
283
285
|
`;
|
|
284
286
|
// ─── node template (init v1 scaffold, carried over) ───────────────────
|
|
285
287
|
const NODE_APP_TS = `// Canonical Firebase imports stay unchanged between sandbox and production.
|
|
286
|
-
// \`bun run dev\`
|
|
288
|
+
// \`bun run dev\` runs this file against the Node-hosted Pyric sandbox
|
|
289
|
+
// (\`pyric sandbox --hosted\`); \`bun start\` loads Firebase.
|
|
287
290
|
import { initializeApp } from 'firebase/app';
|
|
288
291
|
import { getFirestore, collection, getDocs } from 'firebase/firestore';
|
|
289
292
|
import { seed } from './seed.ts';
|
|
@@ -306,15 +309,17 @@ snap.forEach((doc) => console.log(\` \${doc.id}:\`, doc.data()));
|
|
|
306
309
|
|
|
307
310
|
// Production: fill .env, deploy firestore.rules, then \`bun start\`.
|
|
308
311
|
`;
|
|
309
|
-
const NODE_SEED_TS = `import {
|
|
312
|
+
const NODE_SEED_TS = `import { doc, setDoc, type Firestore } from 'firebase/firestore';
|
|
310
313
|
|
|
314
|
+
// Fixed ids: the hosted sandbox keeps its data between runs, so each
|
|
315
|
+
// \`bun run dev\` rewrites the same two posts instead of adding two more.
|
|
311
316
|
export async function seed(db: Firestore): Promise<void> {
|
|
312
|
-
await
|
|
317
|
+
await setDoc(doc(db, 'posts', 'hello'), {
|
|
313
318
|
title: 'Hello, Pyric',
|
|
314
319
|
author: 'sandbox',
|
|
315
320
|
createdAt: new Date(),
|
|
316
321
|
});
|
|
317
|
-
await
|
|
322
|
+
await setDoc(doc(db, 'posts', 'local-first'), {
|
|
318
323
|
title: 'Local-first by default',
|
|
319
324
|
author: 'sandbox',
|
|
320
325
|
createdAt: new Date(),
|
|
@@ -363,7 +368,7 @@ real Firebase in production. No application-code switch is required.
|
|
|
363
368
|
|
|
364
369
|
\`\`\`bash
|
|
365
370
|
bun install
|
|
366
|
-
bun run dev # Pyric sandbox
|
|
371
|
+
bun run dev # Pyric sandbox hosted in Node (pyric sandbox --hosted)
|
|
367
372
|
bun start # production: real Firebase
|
|
368
373
|
\`\`\`
|
|
369
374
|
|
|
@@ -444,10 +449,11 @@ const VITE_INDEX_HTML = (name) => `<!doctype html>
|
|
|
444
449
|
</body>
|
|
445
450
|
</html>
|
|
446
451
|
`;
|
|
447
|
-
const VITE_MAIN_TS = `// Canonical firebase/* imports
|
|
452
|
+
const VITE_MAIN_TS = `// Canonical firebase/* imports, the same in dev and prod.
|
|
448
453
|
// In \`vite dev\` the \`@pyric/cli/vite\` plugin swaps these to an in-process
|
|
449
|
-
// sandbox
|
|
450
|
-
//
|
|
454
|
+
// sandbox: no request reaches the project the config below names, and the
|
|
455
|
+
// sandbox reads its projectId the way Firebase does. \`vite build\` ships the
|
|
456
|
+
// real \`firebase\` package with the same config. Graduation is a build, not
|
|
451
457
|
// a code edit.
|
|
452
458
|
import { initializeApp } from 'firebase/app';
|
|
453
459
|
import {
|
|
@@ -485,7 +491,7 @@ if (hasProjectId) {
|
|
|
485
491
|
|
|
486
492
|
const app = initializeApp({
|
|
487
493
|
// Filled from .env (see .env.example) at \`vite build\` time for production.
|
|
488
|
-
//
|
|
494
|
+
// In \`vite dev\` the pyric sandbox stands in for Firebase and reads projectId.
|
|
489
495
|
apiKey,
|
|
490
496
|
authDomain,
|
|
491
497
|
projectId,
|
|
@@ -737,7 +743,7 @@ export const TEMPLATES = {
|
|
|
737
743
|
},
|
|
738
744
|
// The real firebase package ships day one so the production `vite build`
|
|
739
745
|
// resolves the same canonical imports against it — no code edit at graduation.
|
|
740
|
-
dependencies: { firebase:
|
|
746
|
+
dependencies: { firebase: FIREBASE_PIN },
|
|
741
747
|
devDependencies: { '@pyric/cli': '*', vite: '^6.0.0', typescript: '^5.7.0' },
|
|
742
748
|
dirs: ['src'],
|
|
743
749
|
files: (name) => [
|
|
@@ -762,10 +768,10 @@ export const TEMPLATES = {
|
|
|
762
768
|
node: {
|
|
763
769
|
scripts: {
|
|
764
770
|
start: 'node --env-file-if-exists=.env --experimental-strip-types src/app.ts',
|
|
765
|
-
dev: 'pyric sandbox --no-open -- node --env-file-if-exists=.env --experimental-strip-types src/app.ts',
|
|
771
|
+
dev: 'pyric sandbox --hosted --no-open -- node --env-file-if-exists=.env --experimental-strip-types src/app.ts',
|
|
766
772
|
bridge: 'pyric bridge',
|
|
767
773
|
},
|
|
768
|
-
dependencies: { firebase:
|
|
774
|
+
dependencies: { firebase: FIREBASE_PIN },
|
|
769
775
|
devDependencies: { '@pyric/cli': '*', '@types/node': '^22.0.0', typescript: '^5.7.0' },
|
|
770
776
|
dirs: ['src'],
|
|
771
777
|
files: (name) => [
|
|
@@ -788,7 +794,7 @@ export const TEMPLATES = {
|
|
|
788
794
|
dev: 'pyric sandbox --seed seed.json',
|
|
789
795
|
'dev:agent': 'pyric sandbox --bridge --seed seed.json',
|
|
790
796
|
},
|
|
791
|
-
dependencies: { firebase:
|
|
797
|
+
dependencies: { firebase: FIREBASE_PIN },
|
|
792
798
|
devDependencies: { '@pyric/cli': '*' },
|
|
793
799
|
dirs: ['public'],
|
|
794
800
|
files: (name) => [
|
package/dist/templates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/bin.ts
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
TEMPLATES,
|
|
17
17
|
} from './scaffold.js';
|
|
18
18
|
import { readFileSync } from 'node:fs';
|
|
19
|
+
import { detectPackageManager, nextStepsFor } from './package-manager.js';
|
|
19
20
|
|
|
20
21
|
function packageVersion(): string {
|
|
21
22
|
const metadata = JSON.parse(
|
|
@@ -54,7 +55,10 @@ async function main(): Promise<number> {
|
|
|
54
55
|
const name = typeof nameFlag === 'string' && nameFlag.length > 0 ? nameFlag : undefined;
|
|
55
56
|
|
|
56
57
|
const version = packageVersion();
|
|
57
|
-
const
|
|
58
|
+
const pinned = applyDepsMode(TEMPLATES[templateName], 'npm', { version });
|
|
59
|
+
const packageManager = detectPackageManager(process.env.npm_config_user_agent);
|
|
60
|
+
const nextSteps = nextStepsFor(pinned.nextSteps, packageManager);
|
|
61
|
+
const effectiveTemplate = { ...pinned, nextSteps };
|
|
58
62
|
|
|
59
63
|
return runScaffold(
|
|
60
64
|
{
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Firebase lines a scaffolded app installs (#1188): patch ranges on the
|
|
3
|
+
* versions pyric is certified against. `firebase` follows
|
|
4
|
+
* FIREBASE_TESTED_AGAINST (packages/cli/src/version/compat-target.ts), the
|
|
5
|
+
* version `compat:check` certifies and the `fb<major>.<minor>` dist-tag names.
|
|
6
|
+
* `firebase-admin` follows the version the oracle observations were captured
|
|
7
|
+
* against (`compat:oracle-versions`). A caret range would install a newer
|
|
8
|
+
* minor, whose exports pyric may not mirror yet.
|
|
9
|
+
*
|
|
10
|
+
* packages/create-pyric/test/firebase-pins.test.ts keeps these equal to the
|
|
11
|
+
* certified versions and to the chat template's package.json files, which are
|
|
12
|
+
* static assets and cannot import this module.
|
|
13
|
+
*/
|
|
14
|
+
export const FIREBASE_PIN = '~12.13.0';
|
|
15
|
+
export const FIREBASE_ADMIN_PIN = '~13.10.0';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The package manager that ran `create pyric`, so the printed next steps
|
|
3
|
+
* name the commands the user already uses.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export type PackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';
|
|
7
|
+
|
|
8
|
+
const PACKAGE_MANAGERS: readonly PackageManager[] = ['npm', 'pnpm', 'yarn', 'bun'];
|
|
9
|
+
|
|
10
|
+
/** A step a template writes for one package manager, such as `bun run dev`. */
|
|
11
|
+
const PACKAGE_MANAGER_STEP = /^(npm|bun) /;
|
|
12
|
+
|
|
13
|
+
/** The alternative a template names after a step, such as `# or: bun install`. */
|
|
14
|
+
const ALTERNATIVE_COMMENT = /\s+# or: .*$/;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Reads the `npm_config_user_agent` value every package manager sets for
|
|
18
|
+
* `create` and `exec`, such as `pnpm/9.0.0 npm/? node/v22.15.0 linux x64`.
|
|
19
|
+
* Without one, the user ran the binary directly, and the docs use npm.
|
|
20
|
+
*/
|
|
21
|
+
export function detectPackageManager(userAgent: string | undefined): PackageManager {
|
|
22
|
+
const name = userAgent?.split('/')[0];
|
|
23
|
+
const known = PACKAGE_MANAGERS.find((pm) => pm === name);
|
|
24
|
+
return known ?? 'npm';
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Rewrites each `npm <command>` or `bun <command>` step to the same command
|
|
29
|
+
* for `pm`, and drops the `# or: ...` alternative, since the step now names
|
|
30
|
+
* the package manager in use.
|
|
31
|
+
*/
|
|
32
|
+
export function nextStepsFor(steps: readonly string[], pm: PackageManager): string[] {
|
|
33
|
+
return steps.map((step) => {
|
|
34
|
+
const isPackageManagerStep = PACKAGE_MANAGER_STEP.test(step);
|
|
35
|
+
if (!isPackageManagerStep) return step;
|
|
36
|
+
return step.replace(PACKAGE_MANAGER_STEP, `${pm} `).replace(ALTERNATIVE_COMMENT, '');
|
|
37
|
+
});
|
|
38
|
+
}
|
package/src/scaffold.ts
CHANGED
package/src/template-nextjs.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Scaffold template definition for Next.js (`npm create pyric -- --template nextjs`).
|
|
3
3
|
*/
|
|
4
|
+
import { FIREBASE_ADMIN_PIN, FIREBASE_PIN } from './firebase-pins.js';
|
|
4
5
|
import type { ScaffoldTemplate } from './templates.js';
|
|
5
6
|
|
|
6
7
|
const NEXTJS_CONFIG_MJS = `import { fileURLToPath } from 'node:url';
|
|
@@ -491,8 +492,8 @@ export const NEXTJS_TEMPLATE: ScaffoldTemplate = {
|
|
|
491
492
|
start: 'next start',
|
|
492
493
|
},
|
|
493
494
|
dependencies: {
|
|
494
|
-
firebase:
|
|
495
|
-
'firebase-admin':
|
|
495
|
+
firebase: FIREBASE_PIN,
|
|
496
|
+
'firebase-admin': FIREBASE_ADMIN_PIN,
|
|
496
497
|
next: '^15.0.0',
|
|
497
498
|
react: '^19.0.0',
|
|
498
499
|
'react-dom': '^19.0.0',
|
package/src/templates.ts
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
import { lstatSync, readFileSync, readdirSync } from 'node:fs';
|
|
20
20
|
import { basename, dirname, isAbsolute, relative, resolve, sep } from 'node:path';
|
|
21
21
|
import { fileURLToPath } from 'node:url';
|
|
22
|
+
import { FIREBASE_PIN } from './firebase-pins.js';
|
|
22
23
|
import { NEXTJS_TEMPLATE } from './template-nextjs.js';
|
|
23
24
|
|
|
24
25
|
export const TEMPLATE_NAMES = ['web', 'node', 'static', 'chat', 'nextjs'] as const;
|
|
@@ -182,8 +183,9 @@ const WEB_INDEX_HTML = (name: string): string => `<!doctype html>
|
|
|
182
183
|
`;
|
|
183
184
|
|
|
184
185
|
const WEB_APP_JS = `// Canonical firebase/* imports. Under \`pyric sandbox\` they are served by the
|
|
185
|
-
// in-page pyric sandbox (the
|
|
186
|
-
// bundler/pipeline the same imports resolve to the real
|
|
186
|
+
// in-page pyric sandbox (no request reaches the project the config names);
|
|
187
|
+
// under any standard bundler/pipeline the same imports resolve to the real
|
|
188
|
+
// \`firebase\` package.
|
|
187
189
|
// Graduation changes where you run this code, never the code itself.
|
|
188
190
|
import { initializeApp } from 'firebase/app';
|
|
189
191
|
import {
|
|
@@ -347,7 +349,8 @@ const FIRESTORE_INDEXES = `{
|
|
|
347
349
|
// ─── node template (init v1 scaffold, carried over) ───────────────────
|
|
348
350
|
|
|
349
351
|
const NODE_APP_TS = `// Canonical Firebase imports stay unchanged between sandbox and production.
|
|
350
|
-
// \`bun run dev\`
|
|
352
|
+
// \`bun run dev\` runs this file against the Node-hosted Pyric sandbox
|
|
353
|
+
// (\`pyric sandbox --hosted\`); \`bun start\` loads Firebase.
|
|
351
354
|
import { initializeApp } from 'firebase/app';
|
|
352
355
|
import { getFirestore, collection, getDocs } from 'firebase/firestore';
|
|
353
356
|
import { seed } from './seed.ts';
|
|
@@ -371,15 +374,17 @@ snap.forEach((doc) => console.log(\` \${doc.id}:\`, doc.data()));
|
|
|
371
374
|
// Production: fill .env, deploy firestore.rules, then \`bun start\`.
|
|
372
375
|
`;
|
|
373
376
|
|
|
374
|
-
const NODE_SEED_TS = `import {
|
|
377
|
+
const NODE_SEED_TS = `import { doc, setDoc, type Firestore } from 'firebase/firestore';
|
|
375
378
|
|
|
379
|
+
// Fixed ids: the hosted sandbox keeps its data between runs, so each
|
|
380
|
+
// \`bun run dev\` rewrites the same two posts instead of adding two more.
|
|
376
381
|
export async function seed(db: Firestore): Promise<void> {
|
|
377
|
-
await
|
|
382
|
+
await setDoc(doc(db, 'posts', 'hello'), {
|
|
378
383
|
title: 'Hello, Pyric',
|
|
379
384
|
author: 'sandbox',
|
|
380
385
|
createdAt: new Date(),
|
|
381
386
|
});
|
|
382
|
-
await
|
|
387
|
+
await setDoc(doc(db, 'posts', 'local-first'), {
|
|
383
388
|
title: 'Local-first by default',
|
|
384
389
|
author: 'sandbox',
|
|
385
390
|
createdAt: new Date(),
|
|
@@ -432,7 +437,7 @@ real Firebase in production. No application-code switch is required.
|
|
|
432
437
|
|
|
433
438
|
\`\`\`bash
|
|
434
439
|
bun install
|
|
435
|
-
bun run dev # Pyric sandbox
|
|
440
|
+
bun run dev # Pyric sandbox hosted in Node (pyric sandbox --hosted)
|
|
436
441
|
bun start # production: real Firebase
|
|
437
442
|
\`\`\`
|
|
438
443
|
|
|
@@ -516,10 +521,11 @@ const VITE_INDEX_HTML = (name: string): string => `<!doctype html>
|
|
|
516
521
|
</html>
|
|
517
522
|
`;
|
|
518
523
|
|
|
519
|
-
const VITE_MAIN_TS = `// Canonical firebase/* imports
|
|
524
|
+
const VITE_MAIN_TS = `// Canonical firebase/* imports, the same in dev and prod.
|
|
520
525
|
// In \`vite dev\` the \`@pyric/cli/vite\` plugin swaps these to an in-process
|
|
521
|
-
// sandbox
|
|
522
|
-
//
|
|
526
|
+
// sandbox: no request reaches the project the config below names, and the
|
|
527
|
+
// sandbox reads its projectId the way Firebase does. \`vite build\` ships the
|
|
528
|
+
// real \`firebase\` package with the same config. Graduation is a build, not
|
|
523
529
|
// a code edit.
|
|
524
530
|
import { initializeApp } from 'firebase/app';
|
|
525
531
|
import {
|
|
@@ -557,7 +563,7 @@ if (hasProjectId) {
|
|
|
557
563
|
|
|
558
564
|
const app = initializeApp({
|
|
559
565
|
// Filled from .env (see .env.example) at \`vite build\` time for production.
|
|
560
|
-
//
|
|
566
|
+
// In \`vite dev\` the pyric sandbox stands in for Firebase and reads projectId.
|
|
561
567
|
apiKey,
|
|
562
568
|
authDomain,
|
|
563
569
|
projectId,
|
|
@@ -820,7 +826,7 @@ export const TEMPLATES: Record<TemplateName, ScaffoldTemplate> = {
|
|
|
820
826
|
},
|
|
821
827
|
// The real firebase package ships day one so the production `vite build`
|
|
822
828
|
// resolves the same canonical imports against it — no code edit at graduation.
|
|
823
|
-
dependencies: { firebase:
|
|
829
|
+
dependencies: { firebase: FIREBASE_PIN },
|
|
824
830
|
devDependencies: { '@pyric/cli': '*', vite: '^6.0.0', typescript: '^5.7.0' },
|
|
825
831
|
dirs: ['src'],
|
|
826
832
|
files: (name) => [
|
|
@@ -845,10 +851,10 @@ export const TEMPLATES: Record<TemplateName, ScaffoldTemplate> = {
|
|
|
845
851
|
node: {
|
|
846
852
|
scripts: {
|
|
847
853
|
start: 'node --env-file-if-exists=.env --experimental-strip-types src/app.ts',
|
|
848
|
-
dev: 'pyric sandbox --no-open -- node --env-file-if-exists=.env --experimental-strip-types src/app.ts',
|
|
854
|
+
dev: 'pyric sandbox --hosted --no-open -- node --env-file-if-exists=.env --experimental-strip-types src/app.ts',
|
|
849
855
|
bridge: 'pyric bridge',
|
|
850
856
|
},
|
|
851
|
-
dependencies: { firebase:
|
|
857
|
+
dependencies: { firebase: FIREBASE_PIN },
|
|
852
858
|
devDependencies: { '@pyric/cli': '*', '@types/node': '^22.0.0', typescript: '^5.7.0' },
|
|
853
859
|
dirs: ['src'],
|
|
854
860
|
files: (name) => [
|
|
@@ -871,7 +877,7 @@ export const TEMPLATES: Record<TemplateName, ScaffoldTemplate> = {
|
|
|
871
877
|
dev: 'pyric sandbox --seed seed.json',
|
|
872
878
|
'dev:agent': 'pyric sandbox --bridge --seed seed.json',
|
|
873
879
|
},
|
|
874
|
-
dependencies: { firebase:
|
|
880
|
+
dependencies: { firebase: FIREBASE_PIN },
|
|
875
881
|
devDependencies: { '@pyric/cli': '*' },
|
|
876
882
|
dirs: ['public'],
|
|
877
883
|
files: (name) => [
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"class-variance-authority": "^0.7.1",
|
|
27
27
|
"clsx": "^2.1.1",
|
|
28
28
|
"esbuild-wasm": "^0.25.0",
|
|
29
|
-
"firebase": "
|
|
29
|
+
"firebase": "~12.13.0",
|
|
30
30
|
"lucide-react": "^1.25.0",
|
|
31
31
|
"react": "^19.2.7",
|
|
32
32
|
"react-dom": "^19.2.7",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"typescript": "^5.7.0",
|
|
49
49
|
"vite": "^6.0.0",
|
|
50
50
|
"pyric": "*",
|
|
51
|
-
"firebase-admin": "
|
|
51
|
+
"firebase-admin": "~13.10.0",
|
|
52
52
|
"firebase-functions": "^6.0.0"
|
|
53
53
|
}
|
|
54
54
|
}
|