@tinycld/bootstrap 2.3.1 → 2.4.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.
- package/README.md +1 -1
- package/dist/assemble-workspace.js +25 -14
- package/dist/assemble-workspace.js.map +1 -1
- package/dist/index.js +16 -22
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
- package/templates/shared/tsconfig.json +3 -5
- package/templates/workspace/scripts/link-members.ts +34 -4
- package/templates/workspace/tinycld.packages.ts +13 -0
package/README.md
CHANGED
|
@@ -116,7 +116,7 @@ my-feature/
|
|
|
116
116
|
├── README.md # developer-facing onboarding for this package
|
|
117
117
|
├── manifest.ts # name, slug, routes, nav, collections, seed, server, ...
|
|
118
118
|
├── package.json # @tinycld/my-feature, peer deps, scripts, exports map
|
|
119
|
-
├── tsconfig.json # extends
|
|
119
|
+
├── tsconfig.json # extends @tinycld/core/tsconfig.package-base.json (by name)
|
|
120
120
|
├── pb-migrations/
|
|
121
121
|
│ └── 1800000000_create_my-feature.js # creates my_feature_items collection
|
|
122
122
|
├── server/
|
|
@@ -6,14 +6,15 @@ import { fileURLToPath } from 'node:url';
|
|
|
6
6
|
// ALL of them (npm tolerates absent dirs), so a partial checkout still installs.
|
|
7
7
|
// But --assemble-only CLONES only app+core+requested — we do NOT force-clone all.
|
|
8
8
|
const ALL_FEATURES = ['contacts', 'mail', 'calendar', 'drive', 'calc', 'text', 'google-takeout-import'];
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
// the
|
|
13
|
-
//
|
|
9
|
+
// The `tinycld` member is the one always-cloned repo (tinycld/tinycld): it is
|
|
10
|
+
// the merged app shell + core. assembleWorkspace seeds it directly, pinnable via
|
|
11
|
+
// tinycldRef. Both @tinycld/core (at tinycld/core) and @tinycld/package-scripts
|
|
12
|
+
// (the tinycld-pkg CLI, at tinycld/package-scripts) live NESTED inside it, so
|
|
13
|
+
// they arrive with the single clone and are never cloned separately.
|
|
14
14
|
// Listed in the manifest workspaces array (everything that could exist). The
|
|
15
|
-
// nested member
|
|
16
|
-
|
|
15
|
+
// nested member paths tinycld/core and tinycld/package-scripts are valid npm
|
|
16
|
+
// workspace entries that resolve inside the one cloned `tinycld` repo.
|
|
17
|
+
const ALL_MEMBERS = ['tinycld', 'tinycld/core', 'tinycld/package-scripts', ...ALL_FEATURES];
|
|
17
18
|
// pnpm version pinned via the package.json "packageManager" field so corepack
|
|
18
19
|
// resolves the same pnpm everywhere (local, CI, EAS). Bump in lockstep with the
|
|
19
20
|
// workspace's committed packageManager.
|
|
@@ -129,7 +130,16 @@ export function writeWorkspaceManifest(dir) {
|
|
|
129
130
|
workspaces: [...new Set([...ALL_MEMBERS, ...discoverPresentMembers(dir)])],
|
|
130
131
|
scripts: {
|
|
131
132
|
...existingScripts,
|
|
132
|
-
|
|
133
|
+
// link-members runs FIRST so the @tinycld/<member> symlinks (notably
|
|
134
|
+
// @tinycld/core) exist before the generator's package-build step
|
|
135
|
+
// (text's webview-editor build.ts does a bare `import '@tinycld/core/...'`
|
|
136
|
+
// resolved by package name, which fails on a CLEAN install if the
|
|
137
|
+
// symlink isn't there yet). It then runs AGAIN after generate to add
|
|
138
|
+
// the @tinycld/app-generated link (whose target, tinycld/lib/generated,
|
|
139
|
+
// only exists once generate has run); link-members is idempotent and
|
|
140
|
+
// skips app-generated when absent, so the first pass is harmless and
|
|
141
|
+
// the second completes the graph. All app scripts run from tinycld/.
|
|
142
|
+
postinstall: 'tsx scripts/link-members.ts && cd tinycld && pnpm run packages:generate && cd .. && tsx scripts/link-members.ts && cd tinycld && pnpm run assets:copy-pdfjs',
|
|
133
143
|
},
|
|
134
144
|
devDependencies: {
|
|
135
145
|
...existingDevDeps,
|
|
@@ -209,8 +219,9 @@ function realClone(url, dest, ref) {
|
|
|
209
219
|
* Assemble a workspace skeleton at opts.root: write the canonical root manifest
|
|
210
220
|
* (writeWorkspaceManifest) + lay down the root scaffolding (copyWorkspaceTemplate:
|
|
211
221
|
* tinycld.packages.ts, vitest.config.ts, tests/ stubs, version files), then clone
|
|
212
|
-
* ONLY app + core + the explicitly-requested
|
|
213
|
-
* already present — e.g. a CI-checked-out member
|
|
222
|
+
* ONLY the tinycld member (merged app shell + core) + the explicitly-requested
|
|
223
|
+
* feature members (skipping any already present — e.g. a CI-checked-out member,
|
|
224
|
+
* where the merged repo is checked out into the tinycld/ slot). There is NO workspace
|
|
214
225
|
* meta-repo clone: bootstrap is the source of all root scaffolding.
|
|
215
226
|
* Unknown member names throw. Returns the members that ended up present. Does
|
|
216
227
|
* NOT run the install (the caller / CI controls that — e.g. `pnpm install` or a
|
|
@@ -234,11 +245,11 @@ export function assembleWorkspace(opts) {
|
|
|
234
245
|
writeWorkspaceManifest(opts.root);
|
|
235
246
|
copyWorkspaceTemplate(opts.root);
|
|
236
247
|
// Build the clone set keyed by member NAME so a member passed both bare and
|
|
237
|
-
// with an @ref dedupes to one clone (the ref-bearing entry wins).
|
|
238
|
-
//
|
|
248
|
+
// with an @ref dedupes to one clone (the ref-bearing entry wins). The
|
|
249
|
+
// `tinycld` repo (merged app shell + core, with core + package-scripts
|
|
250
|
+
// nested) is always cloned and pinnable via tinycldRef.
|
|
239
251
|
const refByName = new Map();
|
|
240
|
-
refByName.set('
|
|
241
|
-
refByName.set('core', opts.coreRef);
|
|
252
|
+
refByName.set('tinycld', opts.tinycldRef);
|
|
242
253
|
for (const { name, ref } of requested) {
|
|
243
254
|
// A later ref overrides an earlier bare entry; a bare entry never clears
|
|
244
255
|
// an existing ref.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assemble-workspace.js","sourceRoot":"","sources":["../src/assemble-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC3G,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,gFAAgF;AAChF,iFAAiF;AACjF,kFAAkF;AAClF,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,CAAU,CAAA;AAEhH,
|
|
1
|
+
{"version":3,"file":"assemble-workspace.js","sourceRoot":"","sources":["../src/assemble-workspace.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -12,22 +12,19 @@ import { offerLinkPackage } from "./link-package.js";
|
|
|
12
12
|
import { runPrompts } from "./prompts.js";
|
|
13
13
|
export function runAssembleOnly(opts) {
|
|
14
14
|
const root = opts.root ?? process.cwd();
|
|
15
|
-
// app + core
|
|
16
|
-
// `members` list through assembleWorkspace's
|
|
17
|
-
// in the SAME `--with name@ref` surface for a
|
|
18
|
-
// (`--with
|
|
19
|
-
// out of `members` into
|
|
20
|
-
let
|
|
21
|
-
let coreRef = opts.coreRef;
|
|
15
|
+
// `tinycld` (the merged app shell + core) is the always-cloned member, not a
|
|
16
|
+
// feature, so it can't ride the `members` list through assembleWorkspace's
|
|
17
|
+
// feature validation. Accept it in the SAME `--with name@ref` surface for a
|
|
18
|
+
// uniform pinned invocation (`--with tinycld@v1 --with mail@v3`) by peeling
|
|
19
|
+
// tinycld@ref out of `members` into tinycldRef. An explicit opts.tinycldRef wins.
|
|
20
|
+
let tinycldRef = opts.tinycldRef;
|
|
22
21
|
const features = [];
|
|
23
22
|
for (const spec of opts.members ?? []) {
|
|
24
23
|
const at = spec.indexOf('@');
|
|
25
24
|
const name = at === -1 ? spec : spec.slice(0, at);
|
|
26
25
|
const ref = at === -1 ? undefined : spec.slice(at + 1) || undefined;
|
|
27
|
-
if (name === '
|
|
28
|
-
|
|
29
|
-
else if (name === 'core')
|
|
30
|
-
coreRef = coreRef ?? ref;
|
|
26
|
+
if (name === 'tinycld')
|
|
27
|
+
tinycldRef = tinycldRef ?? ref;
|
|
31
28
|
else
|
|
32
29
|
features.push(spec);
|
|
33
30
|
}
|
|
@@ -38,15 +35,12 @@ export function runAssembleOnly(opts) {
|
|
|
38
35
|
repoBase: process.env.TINYCLD_REPO_BASE,
|
|
39
36
|
...opts,
|
|
40
37
|
members: features,
|
|
41
|
-
|
|
42
|
-
coreRef,
|
|
38
|
+
tinycldRef,
|
|
43
39
|
root,
|
|
44
40
|
});
|
|
45
|
-
//
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
throw new Error(`Failed to clone required member '${required}'. Check network/auth and retry.`);
|
|
49
|
-
}
|
|
41
|
+
// The mandatory member must clone — a missing tinycld means a broken workspace.
|
|
42
|
+
if (!present.includes('tinycld')) {
|
|
43
|
+
throw new Error("Failed to clone required member 'tinycld'. Check network/auth and retry.");
|
|
50
44
|
}
|
|
51
45
|
console.log(`Workspace skeleton ready at ${root} (members: ${present.join(', ')})`);
|
|
52
46
|
}
|
|
@@ -105,7 +99,7 @@ async function main() {
|
|
|
105
99
|
}
|
|
106
100
|
export function composeAssembleOutro(members) {
|
|
107
101
|
const extras = members?.length ? `, ${members.join(', ')}` : '';
|
|
108
|
-
return `Workspace assembled (
|
|
102
|
+
return `Workspace assembled (tinycld${extras}). Run \`pnpm install\` at the root.`;
|
|
109
103
|
}
|
|
110
104
|
export function resolveMode(args) {
|
|
111
105
|
if (args.assembleOnly && args.new) {
|
|
@@ -125,7 +119,7 @@ function printUsage() {
|
|
|
125
119
|
'',
|
|
126
120
|
pc.bold('Modes (one is required):'),
|
|
127
121
|
` ${pc.cyan('--new <slug>')} Scaffold a new feature package.`,
|
|
128
|
-
` ${pc.cyan('--assemble-only')} Assemble a workspace root (clones
|
|
122
|
+
` ${pc.cyan('--assemble-only')} Assemble a workspace root (clones tinycld + --with features).`,
|
|
129
123
|
'',
|
|
130
124
|
pc.bold('Examples:'),
|
|
131
125
|
' npx @tinycld/bootstrap --new my-feature',
|
|
@@ -171,7 +165,7 @@ function printNextSteps({ slug, relTarget, linked, layout }) {
|
|
|
171
165
|
// The meta-repo was cloned into the wrapper, so the wrapper itself is the
|
|
172
166
|
// workspace root and the new package is a member directory inside it.
|
|
173
167
|
// New users may not realize they just got a self-contained workspace.
|
|
174
|
-
lines.push(pc.dim(` Scaffolded a self-contained tinycld workspace.\n The workspace root is ./${wsRoot}/ and your package is ./${relTarget}/.\n The app member (Expo + PocketBase) is ./${wsRoot}/
|
|
168
|
+
lines.push(pc.dim(` Scaffolded a self-contained tinycld workspace.\n The workspace root is ./${wsRoot}/ and your package is ./${relTarget}/.\n The app member (Expo + PocketBase) is ./${wsRoot}/tinycld/.\n`));
|
|
175
169
|
}
|
|
176
170
|
lines.push(` ${pc.dim(`# ${step++}. Initialize git and push to GitHub`)}`);
|
|
177
171
|
lines.push(` cd ${relTarget}`);
|
|
@@ -197,7 +191,7 @@ function printNextSteps({ slug, relTarget, linked, layout }) {
|
|
|
197
191
|
lines.push(' pnpm exec tinycld-pkg check');
|
|
198
192
|
lines.push('');
|
|
199
193
|
lines.push(` ${pc.dim(`# ${step++}. Run the app (Expo + PocketBase, single-port dev proxy)`)}`);
|
|
200
|
-
lines.push(` cd ${join(wsRoot, '
|
|
194
|
+
lines.push(` cd ${join(wsRoot, 'tinycld')}`);
|
|
201
195
|
lines.push(' pnpm run dev');
|
|
202
196
|
lines.push('');
|
|
203
197
|
console.log(lines.join('\n'));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,EAAiC,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC1F,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,UAAU,eAAe,CAAC,IAA8B;IAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IACvC,6EAA6E;IAC7E,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tinycld/bootstrap",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "Scaffolder for @tinycld feature packages",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -40,7 +40,8 @@
|
|
|
40
40
|
"lint:fix": "biome check --write .",
|
|
41
41
|
"typecheck": "tsc --noEmit",
|
|
42
42
|
"checks": "pnpm run lint && pnpm run typecheck",
|
|
43
|
-
"test": "vitest run",
|
|
43
|
+
"test": "vitest run --exclude '**/tests/integration/**'",
|
|
44
|
+
"test:integration": "vitest run tests/integration",
|
|
44
45
|
"release": "pnpm publish"
|
|
45
46
|
}
|
|
46
47
|
}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
{
|
|
2
|
-
"extends": "
|
|
2
|
+
"extends": "@tinycld/core/tsconfig.package-base.json",
|
|
3
3
|
"compilerOptions": {
|
|
4
4
|
"baseUrl": ".",
|
|
5
5
|
"paths": {
|
|
6
|
-
"~/tinycld/{{PKG_SLUG}}/*": ["./tinycld/{{PKG_SLUG}}/*"]
|
|
7
|
-
"@tinycld/core/*": ["../core/*"],
|
|
8
|
-
"@tinycld/app-generated/*": ["../app/lib/generated/*"]
|
|
6
|
+
"~/tinycld/{{PKG_SLUG}}/*": ["./tinycld/{{PKG_SLUG}}/*"]
|
|
9
7
|
}
|
|
10
8
|
},
|
|
11
|
-
"include": ["tinycld/**/*.ts", "tinycld/**/*.tsx"
|
|
9
|
+
"include": ["tinycld/**/*.ts", "tinycld/**/*.tsx"],
|
|
12
10
|
"exclude": ["node_modules", "server", "pb-migrations", "tests/**/*.spec.ts"]
|
|
13
11
|
}
|
|
@@ -17,9 +17,10 @@
|
|
|
17
17
|
// getPackages() discovers it.
|
|
18
18
|
//
|
|
19
19
|
// Members are linked into BOTH the workspace-root node_modules/@tinycld/ and
|
|
20
|
-
//
|
|
21
|
-
// app-scoped links are the ones that matter for
|
|
22
|
-
// resolution from the workspace root and other
|
|
20
|
+
// tinycld/node_modules/@tinycld/. Metro resolves deps from the tinycld member
|
|
21
|
+
// (the app shell), so the tinycld-scoped links are the ones that matter for
|
|
22
|
+
// bundling; the root links cover resolution from the workspace root and other
|
|
23
|
+
// members.
|
|
23
24
|
import * as fs from 'node:fs'
|
|
24
25
|
import * as path from 'node:path'
|
|
25
26
|
import { getPackages } from '../tinycld.packages'
|
|
@@ -44,6 +45,20 @@ function memberDirsByName(): Map<string, string> {
|
|
|
44
45
|
// not a dir, or no/unreadable package.json — skip
|
|
45
46
|
}
|
|
46
47
|
}
|
|
48
|
+
// @tinycld/core lives nested in the tinycld member (<WS_ROOT>/tinycld/core/);
|
|
49
|
+
// the top-level scan won't find it. Register it explicitly so the
|
|
50
|
+
// node_modules/@tinycld/core symlink is still created.
|
|
51
|
+
if (!index.has('@tinycld/core')) {
|
|
52
|
+
const nestedCore = path.join(WS_ROOT, 'tinycld', 'core')
|
|
53
|
+
try {
|
|
54
|
+
const name = JSON.parse(
|
|
55
|
+
fs.readFileSync(path.join(nestedCore, 'package.json'), 'utf8')
|
|
56
|
+
).name
|
|
57
|
+
if (name === '@tinycld/core') index.set('@tinycld/core', nestedCore)
|
|
58
|
+
} catch {
|
|
59
|
+
// no nested core — skip
|
|
60
|
+
}
|
|
61
|
+
}
|
|
47
62
|
return index
|
|
48
63
|
}
|
|
49
64
|
|
|
@@ -73,7 +88,7 @@ function main(): void {
|
|
|
73
88
|
const dirs = memberDirsByName()
|
|
74
89
|
const targets = [
|
|
75
90
|
path.join(WS_ROOT, 'node_modules'),
|
|
76
|
-
path.join(WS_ROOT, '
|
|
91
|
+
path.join(WS_ROOT, 'tinycld', 'node_modules'),
|
|
77
92
|
]
|
|
78
93
|
|
|
79
94
|
let linked = 0
|
|
@@ -91,6 +106,21 @@ function main(): void {
|
|
|
91
106
|
}
|
|
92
107
|
linked++
|
|
93
108
|
}
|
|
109
|
+
|
|
110
|
+
// @tinycld/app-generated is NOT a workspace member (it's the generator's
|
|
111
|
+
// output dir, tinycld/lib/generated/). Link it explicitly so core's
|
|
112
|
+
// `@tinycld/app-generated/*` imports resolve by name from any consumer that
|
|
113
|
+
// pulls core in via its exports map. Skip if the generated dir doesn't exist
|
|
114
|
+
// yet (generator runs in the same postinstall, but ordering/partial runs vary).
|
|
115
|
+
const appGeneratedDir = path.join(WS_ROOT, 'tinycld', 'lib', 'generated')
|
|
116
|
+
if (fs.existsSync(appGeneratedDir)) {
|
|
117
|
+
for (const nm of targets) {
|
|
118
|
+
if (fs.existsSync(nm)) linkInto(nm, 'app-generated', appGeneratedDir)
|
|
119
|
+
}
|
|
120
|
+
} else {
|
|
121
|
+
console.warn('[link-members] tinycld/lib/generated not present — skipping @tinycld/app-generated link')
|
|
122
|
+
}
|
|
123
|
+
|
|
94
124
|
console.log(`[link-members] linked ${linked} workspace member(s) into node_modules/@tinycld/`)
|
|
95
125
|
}
|
|
96
126
|
|
|
@@ -48,6 +48,19 @@ export function getPackages(): string[] {
|
|
|
48
48
|
}
|
|
49
49
|
if (hasManifest(dir)) features.push(name)
|
|
50
50
|
}
|
|
51
|
+
|
|
52
|
+
// @tinycld/core moved INSIDE the tinycld member (at <wsRoot>/tinycld/core/);
|
|
53
|
+
// the top-level scan above won't see it. Look for it explicitly so it is
|
|
54
|
+
// still listed first.
|
|
55
|
+
if (!core) {
|
|
56
|
+
const nestedCorePkg = path.join(wsRoot, 'tinycld', 'core', 'package.json')
|
|
57
|
+
try {
|
|
58
|
+
const name = JSON.parse(fs.readFileSync(nestedCorePkg, 'utf8')).name
|
|
59
|
+
if (name === CORE_NAME) core = name
|
|
60
|
+
} catch {
|
|
61
|
+
// no nested core present — fine for feature-only test trees
|
|
62
|
+
}
|
|
63
|
+
}
|
|
51
64
|
}
|
|
52
65
|
|
|
53
66
|
features.sort()
|