@lastbrain/app 0.1.25 → 0.1.26

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 (54) hide show
  1. package/dist/app-shell/(public)/page.d.ts.map +1 -1
  2. package/dist/index.d.ts +4 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +4 -0
  5. package/dist/layouts/AdminLayoutWithSidebar.d.ts +8 -0
  6. package/dist/layouts/AdminLayoutWithSidebar.d.ts.map +1 -0
  7. package/dist/layouts/AdminLayoutWithSidebar.js +9 -0
  8. package/dist/layouts/AuthLayoutWithSidebar.d.ts +8 -0
  9. package/dist/layouts/AuthLayoutWithSidebar.d.ts.map +1 -0
  10. package/dist/layouts/AuthLayoutWithSidebar.js +9 -0
  11. package/dist/scripts/db-init.js +1 -1
  12. package/dist/scripts/dev-sync.js +21 -10
  13. package/dist/scripts/init-app.d.ts.map +1 -1
  14. package/dist/scripts/init-app.js +114 -12
  15. package/dist/scripts/module-add.d.ts.map +1 -1
  16. package/dist/scripts/module-add.js +19 -6
  17. package/dist/scripts/module-build.d.ts.map +1 -1
  18. package/dist/scripts/module-build.js +285 -30
  19. package/dist/scripts/module-create.d.ts.map +1 -1
  20. package/dist/scripts/module-create.js +25 -15
  21. package/dist/scripts/module-remove.d.ts.map +1 -1
  22. package/dist/scripts/module-remove.js +24 -11
  23. package/dist/scripts/script-runner.js +1 -1
  24. package/dist/styles.css +1 -1
  25. package/dist/templates/DefaultDoc.js +1 -7
  26. package/dist/templates/components/AppAside.d.ts +6 -0
  27. package/dist/templates/components/AppAside.d.ts.map +1 -0
  28. package/dist/templates/components/AppAside.js +9 -0
  29. package/dist/templates/layouts/admin-layout.d.ts +4 -0
  30. package/dist/templates/layouts/admin-layout.d.ts.map +1 -0
  31. package/dist/templates/layouts/admin-layout.js +6 -0
  32. package/dist/templates/layouts/auth-layout.d.ts +4 -0
  33. package/dist/templates/layouts/auth-layout.d.ts.map +1 -0
  34. package/dist/templates/layouts/auth-layout.js +6 -0
  35. package/package.json +2 -1
  36. package/src/app-shell/(public)/page.tsx +6 -2
  37. package/src/auth/useAuthSession.ts +1 -1
  38. package/src/cli.ts +1 -1
  39. package/src/index.ts +6 -0
  40. package/src/layouts/AdminLayoutWithSidebar.tsx +35 -0
  41. package/src/layouts/AppProviders.tsx +1 -1
  42. package/src/layouts/AuthLayoutWithSidebar.tsx +35 -0
  43. package/src/scripts/db-init.ts +12 -7
  44. package/src/scripts/db-migrations-sync.ts +3 -3
  45. package/src/scripts/dev-sync.ts +49 -18
  46. package/src/scripts/init-app.ts +235 -65
  47. package/src/scripts/module-add.ts +50 -22
  48. package/src/scripts/module-build.ts +393 -88
  49. package/src/scripts/module-create.ts +85 -49
  50. package/src/scripts/module-remove.ts +116 -57
  51. package/src/scripts/readme-build.ts +2 -2
  52. package/src/scripts/script-runner.ts +3 -3
  53. package/src/templates/AuthGuidePage.tsx +1 -1
  54. package/src/templates/DefaultDoc.tsx +7 -7
@@ -17,18 +17,24 @@ const scriptsToEnsure = {
17
17
  "build:modules": "pnpm --filter @lastbrain/app module:build",
18
18
  "db:migrations:sync": "pnpm --filter @lastbrain/app db:migrations:sync",
19
19
  "db:init": "pnpm --filter @lastbrain/app db:init",
20
- "readme:create": "pnpm --filter @lastbrain/app readme:create"
20
+ "readme:create": "pnpm --filter @lastbrain/app readme:create",
21
21
  };
22
22
 
23
23
  const dependenciesToEnsure = {
24
24
  "@lastbrain/app": "workspace:*",
25
25
  "@lastbrain/core": "workspace:*",
26
- "@lastbrain/ui": "workspace:*"
26
+ "@lastbrain/ui": "workspace:*",
27
27
  };
28
28
 
29
- const gitignoreTemplate = path.join(projectRoot, "packages/app/src/templates/gitignore/.gitignore");
29
+ const gitignoreTemplate = path.join(
30
+ projectRoot,
31
+ "packages/app/src/templates/gitignore/.gitignore",
32
+ );
30
33
  const consumerGitignore = path.join(projectRoot, "apps/web/.gitignore");
31
- const envTemplate = path.join(projectRoot, "packages/app/src/templates/env.example/.env.example");
34
+ const envTemplate = path.join(
35
+ projectRoot,
36
+ "packages/app/src/templates/env.example/.env.example",
37
+ );
32
38
  const consumerEnvExample = path.join(projectRoot, "apps/web/.env.example");
33
39
  const consumerEnvLocal = path.join(projectRoot, "apps/web/.env.local");
34
40
 
@@ -37,7 +43,9 @@ function ensureDirectory(dir: string) {
37
43
  }
38
44
 
39
45
  function normalizeContent(data: string) {
40
- const trimmed = data.startsWith(GENERATED_HEADER) ? data.slice(GENERATED_HEADER.length) : data;
46
+ const trimmed = data.startsWith(GENERATED_HEADER)
47
+ ? data.slice(GENERATED_HEADER.length)
48
+ : data;
41
49
  const sanitized = trimmed.trimStart();
42
50
  return `${GENERATED_HEADER}\n${sanitized}`;
43
51
  }
@@ -64,7 +72,10 @@ function copyDirectory(srcDir: string, destDir: string) {
64
72
  ensureDirectory(destDir);
65
73
  const entries = fs.readdirSync(srcDir, { withFileTypes: true });
66
74
  for (const entry of entries) {
67
- copyDirectory(path.join(srcDir, entry.name), path.join(destDir, entry.name));
75
+ copyDirectory(
76
+ path.join(srcDir, entry.name),
77
+ path.join(destDir, entry.name),
78
+ );
68
79
  }
69
80
  } else if (stats.isFile()) {
70
81
  syncFile(srcDir, destDir);
@@ -98,7 +109,7 @@ function syncAppShell() {
98
109
  function cleanupStaleGroupFiles() {
99
110
  const staleFiles = [
100
111
  path.join(destAppShell, "(auth)", "page.tsx"),
101
- path.join(destAppShell, "(admin)", "page.tsx")
112
+ path.join(destAppShell, "(admin)", "page.tsx"),
102
113
  ];
103
114
 
104
115
  staleFiles.forEach((file) => {
@@ -109,7 +120,7 @@ function cleanupStaleGroupFiles() {
109
120
 
110
121
  const staleDirs = [
111
122
  path.join(destAppShell, "(auth)", "dashboard"),
112
- path.join(destAppShell, "(admin)", "dashboard")
123
+ path.join(destAppShell, "(admin)", "dashboard"),
113
124
  ];
114
125
 
115
126
  staleDirs.forEach((dir) => {
@@ -119,7 +130,10 @@ function cleanupStaleGroupFiles() {
119
130
  });
120
131
  }
121
132
 
122
- function mergeScripts(base: Record<string, string>, additions: Record<string, string>) {
133
+ function mergeScripts(
134
+ base: Record<string, string>,
135
+ additions: Record<string, string>,
136
+ ) {
123
137
  return { ...base, ...additions };
124
138
  }
125
139
 
@@ -129,15 +143,20 @@ function syncPackageJson() {
129
143
  name: "web",
130
144
  private: true,
131
145
  version: "0.1.0",
132
- type: "module"
146
+ type: "module",
133
147
  };
134
148
 
135
- const pkg = fs.existsSync(webPackage) ? JSON.parse(fs.readFileSync(webPackage, "utf-8")) : defaultPkg;
149
+ const pkg = fs.existsSync(webPackage)
150
+ ? JSON.parse(fs.readFileSync(webPackage, "utf-8"))
151
+ : defaultPkg;
136
152
  pkg.scripts = mergeScripts(pkg.scripts ?? {}, scriptsToEnsure);
137
153
  pkg.dependencies = { ...(pkg.dependencies ?? {}), ...dependenciesToEnsure };
138
154
 
139
155
  fs.writeFileSync(webPackage, JSON.stringify(pkg, null, 2) + "\n");
140
- return { scripts: Object.keys(scriptsToEnsure), dependencies: Object.keys(dependenciesToEnsure) };
156
+ return {
157
+ scripts: Object.keys(scriptsToEnsure),
158
+ dependencies: Object.keys(dependenciesToEnsure),
159
+ };
141
160
  }
142
161
 
143
162
  function syncEnvExample() {
@@ -147,7 +166,9 @@ function syncEnvExample() {
147
166
 
148
167
  const shouldOverwrite =
149
168
  !fs.existsSync(consumerEnvExample) ||
150
- fs.readFileSync(consumerEnvExample, "utf-8").includes("GENERATED BY LASTBRAIN");
169
+ fs
170
+ .readFileSync(consumerEnvExample, "utf-8")
171
+ .includes("GENERATED BY LASTBRAIN");
151
172
 
152
173
  if (!shouldOverwrite) {
153
174
  return null;
@@ -177,7 +198,9 @@ function syncGitignore() {
177
198
 
178
199
  const shouldOverwrite =
179
200
  !fs.existsSync(consumerGitignore) ||
180
- fs.readFileSync(consumerGitignore, "utf-8").includes("GENERATED BY LASTBRAIN");
201
+ fs
202
+ .readFileSync(consumerGitignore, "utf-8")
203
+ .includes("GENERATED BY LASTBRAIN");
181
204
 
182
205
  if (!shouldOverwrite) {
183
206
  return null;
@@ -199,19 +222,27 @@ function main() {
199
222
 
200
223
  console.log("✅ apps/web synced with @lastbrain/app");
201
224
  console.log(`Copied or updated files (${copiedFiles.length}):`);
202
- copiedFiles.forEach((file) => console.log(` • ${path.relative(projectRoot, file)}`));
225
+ copiedFiles.forEach((file) =>
226
+ console.log(` • ${path.relative(projectRoot, file)}`),
227
+ );
203
228
  console.log("Scripts ensured in apps/web/package.json:");
204
229
  changes.scripts.forEach((script) => console.log(` • ${script}`));
205
230
  console.log("Dependencies ensured in apps/web/package.json:");
206
231
  changes.dependencies.forEach((dep) => console.log(` • ${dep}`));
207
232
  if (gitignoreSynced) {
208
- console.log(`.gitignore ensured at ${path.relative(projectRoot, gitignoreSynced)}`);
233
+ console.log(
234
+ `.gitignore ensured at ${path.relative(projectRoot, gitignoreSynced)}`,
235
+ );
209
236
  }
210
237
  if (envExampleSynced) {
211
- console.log(`.env.example ensured at ${path.relative(projectRoot, envExampleSynced)}`);
238
+ console.log(
239
+ `.env.example ensured at ${path.relative(projectRoot, envExampleSynced)}`,
240
+ );
212
241
  }
213
242
  if (envLocalCreated) {
214
- console.log(`.env.local ensured at ${path.relative(projectRoot, envLocalCreated)}`);
243
+ console.log(
244
+ `.env.local ensured at ${path.relative(projectRoot, envLocalCreated)}`,
245
+ );
215
246
  }
216
247
  }
217
248