@beignet/cli 0.0.39 → 0.0.40
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/CHANGELOG.md +9 -0
- package/README.md +34 -6
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -2
- package/dist/config.js.map +1 -1
- package/dist/framework.d.ts +3 -0
- package/dist/framework.d.ts.map +1 -0
- package/dist/framework.js +6 -0
- package/dist/framework.js.map +1 -0
- package/dist/inspect.d.ts +4 -2
- package/dist/inspect.d.ts.map +1 -1
- package/dist/inspect.js +120 -33
- package/dist/inspect.js.map +1 -1
- package/dist/make/payments.d.ts.map +1 -1
- package/dist/make/payments.js +2 -0
- package/dist/make/payments.js.map +1 -1
- package/dist/make.d.ts.map +1 -1
- package/dist/make.js +94 -1
- package/dist/make.js.map +1 -1
- package/dist/templates/shadcn.js +1 -1
- package/package.json +2 -2
- package/skills/app-structure/SKILL.md +16 -1
- package/src/config.ts +7 -3
- package/src/framework.ts +13 -0
- package/src/inspect.ts +189 -38
- package/src/make/payments.ts +7 -0
- package/src/make.ts +142 -0
- package/src/templates/shadcn.ts +1 -1
- package/src/test-helpers/generated-app.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# @beignet/cli
|
|
2
2
|
|
|
3
|
+
## 0.0.40
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 3c57a51: Add a Web Fetch framework profile for route inspection, doctor checks, and framework-aware generators.
|
|
8
|
+
- f7bcd30: Add push-assisted Next.js outbox draining after successful Unit of Work transactions while retaining cron recovery.
|
|
9
|
+
- Updated dependencies [f7bcd30]
|
|
10
|
+
- @beignet/core@0.0.40
|
|
11
|
+
|
|
3
12
|
## 0.0.39
|
|
4
13
|
|
|
5
14
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -372,14 +372,33 @@ reports misplaced or stale workflow artifacts when they drift from the app
|
|
|
372
372
|
layout.
|
|
373
373
|
|
|
374
374
|
Use `beignet.config.ts`, `beignet.config.js`,
|
|
375
|
-
`beignet.config.mjs`, or `beignet.config.json`
|
|
376
|
-
the same architecture under different paths
|
|
375
|
+
`beignet.config.mjs`, or `beignet.config.json` to select the server adapter
|
|
376
|
+
profile or when your app keeps the same architecture under different paths.
|
|
377
|
+
`"next"` is the default; use `"web"` when the server exposes
|
|
378
|
+
`createFetchServer(...)` from `@beignet/web`:
|
|
379
|
+
|
|
380
|
+
```ts
|
|
381
|
+
import { defineConfig } from "@beignet/cli/config";
|
|
382
|
+
|
|
383
|
+
export default defineConfig({
|
|
384
|
+
framework: "web",
|
|
385
|
+
});
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
The web profile derives route coverage from canonical feature route groups in
|
|
389
|
+
the central `defineRoutes(...)` registry passed to `createFetchServer(...)`, so
|
|
390
|
+
`routes` and `doctor` do not require Next.js `app/api/` files. Vite and Bun do
|
|
391
|
+
not need separate values: they are client tooling and a Fetch host,
|
|
392
|
+
respectively.
|
|
393
|
+
|
|
394
|
+
Path overrides remain available for either profile:
|
|
377
395
|
|
|
378
396
|
```ts
|
|
379
397
|
// beignet.config.ts
|
|
380
398
|
import { defineConfig } from "@beignet/cli/config";
|
|
381
399
|
|
|
382
400
|
export default defineConfig({
|
|
401
|
+
framework: "next",
|
|
383
402
|
paths: {
|
|
384
403
|
appContext: "src/app-context.ts",
|
|
385
404
|
contracts: "src/features",
|
|
@@ -403,6 +422,11 @@ config before inspecting or writing files. When `appContext` is moved under a
|
|
|
403
422
|
source root such as `src/app-context.ts`, client setup follows that root at
|
|
404
423
|
`src/client/index.ts`.
|
|
405
424
|
|
|
425
|
+
Framework-neutral generators work in both profiles. `make payments`,
|
|
426
|
+
`make upload`, `make outbox`, and `make schedule --route` currently generate
|
|
427
|
+
Next.js App Router handlers and therefore reject `framework: "web"` before
|
|
428
|
+
writing. The `create` command also remains a Next.js scaffold.
|
|
429
|
+
|
|
406
430
|
The generated `lib/beignet-test-runner.ts` also resolves all four supported
|
|
407
431
|
config formats and includes configured test, feature, route, server, port,
|
|
408
432
|
infra-port, route-builder, and use-case-builder roots in test discovery.
|
|
@@ -730,10 +754,14 @@ out of task definitions. Both receive `TaskRunContextArgs` from
|
|
|
730
754
|
`--tenant` value — so tenant scoping stays out of task input schemas.
|
|
731
755
|
|
|
732
756
|
`make outbox` creates `server/outbox.ts` and a bounded
|
|
733
|
-
`app/api/cron/outbox/drain` route.
|
|
734
|
-
|
|
735
|
-
`
|
|
736
|
-
|
|
757
|
+
`app/api/cron/outbox/drain` route. On Next.js 15.1 or newer it also wraps the
|
|
758
|
+
database Unit of Work from a server-local provider with
|
|
759
|
+
`createObservedUnitOfWork(...)` and schedules one push-assisted drain through
|
|
760
|
+
`after()`. Older Next.js versions retain valid cron-only wiring. `make event`
|
|
761
|
+
and `make job` create that outbox path on first use and register the feature's
|
|
762
|
+
`postEvents` and `postJobs` registries in `defineOutboxRegistry({...})`;
|
|
763
|
+
`beignet doctor` reports events and jobs the registry cannot deliver. Keep the
|
|
764
|
+
route as the durable recovery sweep even when the deferred trigger is present.
|
|
737
765
|
|
|
738
766
|
Generators wire the provider-backed ports their output depends on. `make
|
|
739
767
|
event` (and `make resource --events`) wires `eventBus: EventBusPort` with
|
package/dist/config.d.ts
CHANGED
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -172,8 +172,10 @@ function assertConfigObject(config, configFile) {
|
|
|
172
172
|
if (!isRecord(config)) {
|
|
173
173
|
throw new Error(`${configFile} must export a Beignet config object.`);
|
|
174
174
|
}
|
|
175
|
-
if (config.framework !== undefined &&
|
|
176
|
-
|
|
175
|
+
if (config.framework !== undefined &&
|
|
176
|
+
config.framework !== "next" &&
|
|
177
|
+
config.framework !== "web") {
|
|
178
|
+
throw new Error(`${configFile} uses unsupported framework "${String(config.framework)}". Supported frameworks: "next", "web".`);
|
|
177
179
|
}
|
|
178
180
|
if (config.paths !== undefined && !isRecord(config.paths)) {
|
|
179
181
|
throw new Error(`${configFile} paths must be an object.`);
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"framework.d.ts","sourceRoot":"","sources":["../src/framework.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,qBAAqB,EAC7B,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GACvB,IAAI,CAMN"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export function assertNextFramework(config, command, generatedSurface) {
|
|
2
|
+
if (config.framework === "next")
|
|
3
|
+
return;
|
|
4
|
+
throw new Error(`${command} currently supports framework: "next" because it generates ${generatedSurface}. For framework: "web", define the framework-neutral artifact directly and mount its HTTP entrypoint through @beignet/web.`);
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=framework.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"framework.js","sourceRoot":"","sources":["../src/framework.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CACjC,MAA6B,EAC7B,OAAe,EACf,gBAAwB;IAExB,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM;QAAE,OAAO;IAExC,MAAM,IAAI,KAAK,CACb,GAAG,OAAO,8DAA8D,gBAAgB,4HAA4H,CACrN,CAAC;AACJ,CAAC"}
|
package/dist/inspect.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ type InspectedCatalogErrorRef = {
|
|
|
32
32
|
export type InspectedRoute = InspectedContract & {
|
|
33
33
|
handlerFile?: string;
|
|
34
34
|
handlerExport?: HttpMethod;
|
|
35
|
-
handlerSource: "next-route" | "route-local" | "missing";
|
|
35
|
+
handlerSource: "next-route" | "route-local" | "web-server" | "missing";
|
|
36
36
|
};
|
|
37
37
|
/**
|
|
38
38
|
* Doctor diagnostic produced by app inspection.
|
|
@@ -56,11 +56,13 @@ export type InspectFix = {
|
|
|
56
56
|
* Detected app convention and missing convention files.
|
|
57
57
|
*/
|
|
58
58
|
export type InspectConvention = {
|
|
59
|
-
kind: "standard" | "next" | "custom";
|
|
59
|
+
kind: "standard" | "next" | "web" | "custom";
|
|
60
60
|
nextLayout: boolean;
|
|
61
|
+
webLayout: boolean;
|
|
61
62
|
resourceGenerator: boolean;
|
|
62
63
|
configFile?: string;
|
|
63
64
|
missingNextLayout: string[];
|
|
65
|
+
missingWebLayout: string[];
|
|
64
66
|
missingResourceGenerator: string[];
|
|
65
67
|
};
|
|
66
68
|
/**
|
package/dist/inspect.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../src/inspect.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,aAAa,EASlB,KAAK,qBAAqB,EAE3B,MAAM,aAAa,CAAC;AA8CrB,KAAK,iBAAiB,GAAG;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,KAAK,UAAU,GACX,KAAK,GACL,MAAM,GACN,KAAK,GACL,OAAO,GACP,QAAQ,GACR,MAAM,GACN,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,yBAAyB,CAAC;CACtC,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,wBAAwB,EAAE,CAAC;CAC3C,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,aAAa,EAAE,YAAY,GAAG,aAAa,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../src/inspect.ts"],"names":[],"mappings":"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"}
|
package/dist/inspect.js
CHANGED
|
@@ -19,10 +19,7 @@ export async function inspectApp(options = {}) {
|
|
|
19
19
|
: await loadBeignetConfig(targetDir, files);
|
|
20
20
|
const convention = inspectConvention(files, config);
|
|
21
21
|
const contracts = await readContracts(targetDir, files, config);
|
|
22
|
-
const
|
|
23
|
-
file.endsWith("/route.ts"));
|
|
24
|
-
const routeExports = await readRouteExports(targetDir, routeFiles, config);
|
|
25
|
-
const matchedRoutes = matchRoutes(contracts, routeExports);
|
|
22
|
+
const matchedRoutes = await inspectRouteSurface(targetDir, files, config, contracts);
|
|
26
23
|
const diagnostics = await inspectDiagnostics(targetDir, files, config, convention, contracts, matchedRoutes, Boolean(options.strict));
|
|
27
24
|
return {
|
|
28
25
|
schemaVersion: 1,
|
|
@@ -45,10 +42,7 @@ export async function applyDoctorFixes(options = {}) {
|
|
|
45
42
|
: await loadBeignetConfig(targetDir, files);
|
|
46
43
|
const convention = inspectConvention(files, config);
|
|
47
44
|
const contracts = await readContracts(targetDir, files, config);
|
|
48
|
-
const
|
|
49
|
-
file.endsWith("/route.ts"));
|
|
50
|
-
const routeExports = await readRouteExports(targetDir, routeFiles, config);
|
|
51
|
-
const matchedRoutes = matchRoutes(contracts, routeExports);
|
|
45
|
+
const matchedRoutes = await inspectRouteSurface(targetDir, files, config, contracts);
|
|
52
46
|
const fixes = [];
|
|
53
47
|
const packageFix = await fixPackageScripts(targetDir, files, convention);
|
|
54
48
|
if (packageFix)
|
|
@@ -85,7 +79,9 @@ export function formatRoutes(result) {
|
|
|
85
79
|
contract: route.exportName,
|
|
86
80
|
handler: route.handlerSource === "missing"
|
|
87
81
|
? "missing"
|
|
88
|
-
:
|
|
82
|
+
: route.handlerSource === "web-server"
|
|
83
|
+
? `${route.handlerFile ?? "unknown"}:registry`
|
|
84
|
+
: `${route.handlerFile ?? "unknown"}:${route.handlerExport ?? route.method}`,
|
|
89
85
|
}));
|
|
90
86
|
return table([
|
|
91
87
|
["METHOD", "PATH", "CONTRACT", "HANDLER"],
|
|
@@ -265,6 +261,10 @@ function inspectConvention(files, config) {
|
|
|
265
261
|
`${directoryPath(config.paths.routes)}/`,
|
|
266
262
|
config.paths.server,
|
|
267
263
|
]);
|
|
264
|
+
const missingWebLayout = missingRequirements(files, [
|
|
265
|
+
`${directoryPath(config.paths.contracts)}/`,
|
|
266
|
+
config.paths.server,
|
|
267
|
+
]);
|
|
268
268
|
const missingResourceGenerator = missingRequirements(files, [
|
|
269
269
|
config.paths.appContext,
|
|
270
270
|
config.paths.portWiring,
|
|
@@ -273,13 +273,22 @@ function inspectConvention(files, config) {
|
|
|
273
273
|
config.paths.useCaseBuilder,
|
|
274
274
|
]);
|
|
275
275
|
const nextLayout = missingNextLayout.length === 0;
|
|
276
|
+
const webLayout = missingWebLayout.length === 0;
|
|
276
277
|
const resourceGenerator = missingResourceGenerator.length === 0;
|
|
277
278
|
return {
|
|
278
|
-
kind: resourceGenerator
|
|
279
|
+
kind: resourceGenerator
|
|
280
|
+
? "standard"
|
|
281
|
+
: config.framework === "web" && webLayout
|
|
282
|
+
? "web"
|
|
283
|
+
: nextLayout
|
|
284
|
+
? "next"
|
|
285
|
+
: "custom",
|
|
279
286
|
nextLayout,
|
|
287
|
+
webLayout,
|
|
280
288
|
resourceGenerator,
|
|
281
289
|
configFile: config.configFile,
|
|
282
290
|
missingNextLayout,
|
|
291
|
+
missingWebLayout,
|
|
283
292
|
missingResourceGenerator,
|
|
284
293
|
};
|
|
285
294
|
}
|
|
@@ -801,6 +810,42 @@ function matchRoutes(contracts, routeExports) {
|
|
|
801
810
|
unmatchedRouteHandlers,
|
|
802
811
|
};
|
|
803
812
|
}
|
|
813
|
+
async function inspectRouteSurface(targetDir, files, config, contracts) {
|
|
814
|
+
if (config.framework === "next") {
|
|
815
|
+
const routeFiles = files.filter((file) => file.startsWith(`${directoryPath(config.paths.routes)}/`) &&
|
|
816
|
+
file.endsWith("/route.ts"));
|
|
817
|
+
const routeExports = await readRouteExports(targetDir, routeFiles, config);
|
|
818
|
+
return matchRoutes(contracts, routeExports);
|
|
819
|
+
}
|
|
820
|
+
if (!files.includes(config.paths.server)) {
|
|
821
|
+
return {
|
|
822
|
+
routes: contracts.map((contract) => ({
|
|
823
|
+
...contract,
|
|
824
|
+
handlerSource: "missing",
|
|
825
|
+
})),
|
|
826
|
+
unmatchedRouteHandlers: [],
|
|
827
|
+
};
|
|
828
|
+
}
|
|
829
|
+
const serverSource = await readFile(path.join(targetDir, config.paths.server), "utf8");
|
|
830
|
+
const routeGroups = await readFeatureRouteGroups(targetDir, files, config);
|
|
831
|
+
const registeredGroups = await registeredRouteGroupsForServer(targetDir, files, config, serverSource);
|
|
832
|
+
const registeredContracts = contractsForRegisteredRouteGroups(contracts, routeGroups, registeredGroups);
|
|
833
|
+
const registeredKeys = new Set(registeredContracts.map(contractKey));
|
|
834
|
+
const handlerFile = routeRegistryFileFromServerSource(serverSource, config.paths.server, files) ?? config.paths.server;
|
|
835
|
+
return {
|
|
836
|
+
routes: contracts.map((contract) => registeredKeys.has(contractKey(contract))
|
|
837
|
+
? {
|
|
838
|
+
...contract,
|
|
839
|
+
handlerFile,
|
|
840
|
+
handlerSource: "web-server",
|
|
841
|
+
}
|
|
842
|
+
: {
|
|
843
|
+
...contract,
|
|
844
|
+
handlerSource: "missing",
|
|
845
|
+
}),
|
|
846
|
+
unmatchedRouteHandlers: [],
|
|
847
|
+
};
|
|
848
|
+
}
|
|
804
849
|
function findContract(contracts, routeExport) {
|
|
805
850
|
return findContracts(contracts, routeExport)[0];
|
|
806
851
|
}
|
|
@@ -828,30 +873,66 @@ function contractPathMatchesCatchAll(contractPath, catchAllPrefix) {
|
|
|
828
873
|
}
|
|
829
874
|
async function inspectDiagnostics(targetDir, files, config, convention, contracts, matchedRoutes, strict) {
|
|
830
875
|
const diagnostics = [];
|
|
831
|
-
|
|
876
|
+
const frameworkLayout = config.framework === "next" ? convention.nextLayout : convention.webLayout;
|
|
877
|
+
const missingFrameworkLayout = config.framework === "next"
|
|
878
|
+
? convention.missingNextLayout
|
|
879
|
+
: convention.missingWebLayout;
|
|
880
|
+
if (!frameworkLayout) {
|
|
881
|
+
const expectedLayout = config.framework === "next"
|
|
882
|
+
? `${directoryPath(config.paths.contracts)}/, ${directoryPath(config.paths.routes)}/, and ${config.paths.server}`
|
|
883
|
+
: `${directoryPath(config.paths.contracts)}/ and ${config.paths.server}`;
|
|
884
|
+
const layoutName = config.framework === "next"
|
|
885
|
+
? "standard Beignet app layout"
|
|
886
|
+
: "standard Beignet web app layout";
|
|
832
887
|
diagnostics.push({
|
|
833
888
|
severity: "warning",
|
|
834
889
|
code: "BEIGNET_APP_LAYOUT_NOT_FOUND",
|
|
835
|
-
message: `This directory does not match the
|
|
890
|
+
message: `This directory does not match the ${layoutName}. CLI inspection expects ${expectedLayout}. Missing: ${missingFrameworkLayout.join(", ")}. Add the missing app files or configure their paths in beignet.config.ts.`,
|
|
836
891
|
});
|
|
837
892
|
}
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
893
|
+
diagnostics.push(...(await inspectFrameworkAdapter(targetDir, files, config)));
|
|
894
|
+
if (config.framework === "next" || !convention.resourceGenerator) {
|
|
895
|
+
for (const route of matchedRoutes.routes) {
|
|
896
|
+
if (route.handlerSource !== "missing")
|
|
897
|
+
continue;
|
|
898
|
+
diagnostics.push({
|
|
899
|
+
severity: "error",
|
|
900
|
+
code: "BEIGNET_ROUTE_MISSING",
|
|
901
|
+
file: route.file,
|
|
902
|
+
contract: route.exportName,
|
|
903
|
+
message: config.framework === "next"
|
|
904
|
+
? `${route.exportName} (${route.method} ${route.path}) has no matching Next route handler. Add ${methodArticle(route.method)} ${route.method} export to ${directoryPath(config.paths.routes)}/[[...path]]/route.ts or a matching route file, or remove the unused contract.`
|
|
905
|
+
: `${route.exportName} (${route.method} ${route.path}) is not registered in the route surface passed to createFetchServer(...). Register the contract through defineRoutes(...) or remove the unused contract.`,
|
|
906
|
+
});
|
|
907
|
+
}
|
|
848
908
|
}
|
|
849
|
-
|
|
850
|
-
|
|
909
|
+
if (config.framework === "next") {
|
|
910
|
+
for (const routeHandler of matchedRoutes.unmatchedRouteHandlers) {
|
|
911
|
+
diagnostics.push(unmatchedRouteDiagnostic(routeHandler));
|
|
912
|
+
}
|
|
851
913
|
}
|
|
852
914
|
diagnostics.push(...(await inspectPackageScripts(targetDir, files, convention)), ...(await inspectOpenApiDrift(targetDir, files, config, convention, contracts, matchedRoutes)), ...(await inspectFeatureRouteRegistration(targetDir, files, config, convention, contracts)), ...(await inspectRouteErrorCatalogDrift(targetDir, files, config, convention, contracts, strict)), ...(await inspectCanonicalConformance(targetDir, files, config, convention, strict)), ...(await inspectVersionSkew(targetDir, files)), ...(await inspectProviderMetadataDrift(targetDir, files, convention)), ...(await inspectPortProviderDrift(targetDir, files, config, convention)), ...(await inspectProviderRegistrationDrift(targetDir, files, config, convention)), ...(await inspectDatabaseLifecycleDrift(targetDir, files, config, convention, strict)), ...(await inspectAuthzAuditDrift(targetDir, files, config, convention, contracts)), ...(await inspectServerlessFootguns(targetDir, files, config, convention)), ...(await inspectProductionReadiness(targetDir, files, config, convention)), ...(await inspectFeatureArtifactDrift(targetDir, files, config, convention)), ...(await inspectWorkflowRegistrationDrift(targetDir, files, config, convention)), ...(await inspectRuntimeManifestDrift(targetDir, files, config, convention)), ...(await inspectResourceSlices(targetDir, files, config, convention, strict)));
|
|
853
915
|
return dedupeDiagnostics(diagnostics);
|
|
854
916
|
}
|
|
917
|
+
async function inspectFrameworkAdapter(targetDir, files, config) {
|
|
918
|
+
if (!files.includes(config.paths.server))
|
|
919
|
+
return [];
|
|
920
|
+
const source = await readFile(path.join(targetDir, config.paths.server), "utf8");
|
|
921
|
+
const expectedFactory = config.framework === "next" ? "createNextServer" : "createFetchServer";
|
|
922
|
+
const otherFactory = config.framework === "next" ? "createFetchServer" : "createNextServer";
|
|
923
|
+
if (containsCallExpression(source, expectedFactory) ||
|
|
924
|
+
!containsCallExpression(source, otherFactory)) {
|
|
925
|
+
return [];
|
|
926
|
+
}
|
|
927
|
+
return [
|
|
928
|
+
{
|
|
929
|
+
severity: "error",
|
|
930
|
+
code: "BEIGNET_FRAMEWORK_MISMATCH",
|
|
931
|
+
file: config.paths.server,
|
|
932
|
+
message: `${config.configFile ?? "beignet.config.*"} selects framework: "${config.framework}", but ${config.paths.server} calls ${otherFactory}(...). Use ${expectedFactory}(...) or update the configured framework profile.`,
|
|
933
|
+
},
|
|
934
|
+
];
|
|
935
|
+
}
|
|
855
936
|
async function inspectCanonicalConformance(targetDir, files, config, convention, strict) {
|
|
856
937
|
if (!strict || !convention.resourceGenerator)
|
|
857
938
|
return [];
|
|
@@ -967,11 +1048,12 @@ async function inspectCanonicalConformance(targetDir, files, config, convention,
|
|
|
967
1048
|
});
|
|
968
1049
|
}
|
|
969
1050
|
if (!importsAppContext(serverSource, config.paths.server, config, files)) {
|
|
1051
|
+
const serverFactory = config.framework === "next" ? "createNextServer" : "createFetchServer";
|
|
970
1052
|
diagnostics.push({
|
|
971
1053
|
severity: "warning",
|
|
972
1054
|
code: "BEIGNET_SERVER_APP_CONTEXT",
|
|
973
1055
|
file: config.paths.server,
|
|
974
|
-
message: `${config.paths.server} should import type { AppContext } from ${config.paths.appContext} and thread that context through
|
|
1056
|
+
message: `${config.paths.server} should import type { AppContext } from ${config.paths.appContext} and thread that context through ${serverFactory} and hooks.`,
|
|
975
1057
|
});
|
|
976
1058
|
}
|
|
977
1059
|
// Apps may keep the context blueprint in a sibling server/context.ts
|
|
@@ -1427,7 +1509,7 @@ async function inspectProductionReadiness(targetDir, files, config, convention)
|
|
|
1427
1509
|
}
|
|
1428
1510
|
}
|
|
1429
1511
|
if (installedPackages.has("@beignet/provider-auth-better-auth")) {
|
|
1430
|
-
if (!hasBetterAuthRoute(files, config)) {
|
|
1512
|
+
if (config.framework === "next" && !hasBetterAuthRoute(files, config)) {
|
|
1431
1513
|
diagnostics.push({
|
|
1432
1514
|
severity: "warning",
|
|
1433
1515
|
code: "BEIGNET_AUTH_ROUTE_MISSING",
|
|
@@ -1573,7 +1655,8 @@ async function inspectPaymentsProductionReadiness(targetDir, files, config, sour
|
|
|
1573
1655
|
message: "@beignet/provider-payments-stripe is installed and Stripe env/config is present, but server/providers.ts still registers memory payments. Register createStripePaymentsProvider() before deploying Stripe-backed billing, or remove the Stripe provider/config until the app is ready to switch.",
|
|
1574
1656
|
});
|
|
1575
1657
|
}
|
|
1576
|
-
if (
|
|
1658
|
+
if (config.framework === "next" &&
|
|
1659
|
+
!(await hasPaymentWebhookRoute(targetDir, files, config, sourceCache))) {
|
|
1577
1660
|
diagnostics.push({
|
|
1578
1661
|
severity: "warning",
|
|
1579
1662
|
code: "BEIGNET_PAYMENTS_WEBHOOK_ROUTE_MISSING",
|
|
@@ -2615,7 +2698,8 @@ async function inspectServerlessFootguns(targetDir, files, config, convention) {
|
|
|
2615
2698
|
const isProviderFile = /(^|\/)provider(s)?\.ts$/.test(file) ||
|
|
2616
2699
|
/(^|\/)[^/]*provider[^/]*\.ts$/.test(file);
|
|
2617
2700
|
const source = await readFile(path.join(targetDir, file), "utf8");
|
|
2618
|
-
if (
|
|
2701
|
+
if (config.framework === "next" &&
|
|
2702
|
+
convention.resourceGenerator &&
|
|
2619
2703
|
isNextRouteFile(file, config) &&
|
|
2620
2704
|
importsEagerServer(source, file, files, config)) {
|
|
2621
2705
|
diagnostics.push({
|
|
@@ -4039,13 +4123,15 @@ function registeredRouteGroups(source) {
|
|
|
4039
4123
|
}
|
|
4040
4124
|
async function registeredRouteGroupsForServer(targetDir, files, config, serverSource) {
|
|
4041
4125
|
const registeredGroups = registeredRouteGroups(serverSource);
|
|
4042
|
-
const imports =
|
|
4126
|
+
const imports = parseNamedImportSources(serverSource);
|
|
4043
4127
|
for (const identifier of routeOptionIdentifiers(serverSource)) {
|
|
4044
4128
|
const imported = imports.get(identifier);
|
|
4045
|
-
if (!imported
|
|
4129
|
+
if (!imported)
|
|
4046
4130
|
continue;
|
|
4047
|
-
|
|
4048
|
-
|
|
4131
|
+
const importedFile = sourceFileFromImport(imported.sourcePath, config.paths.server, files);
|
|
4132
|
+
if (!importedFile || !files.includes(importedFile))
|
|
4133
|
+
continue;
|
|
4134
|
+
const source = await readFile(path.join(targetDir, importedFile), {
|
|
4049
4135
|
encoding: "utf8",
|
|
4050
4136
|
});
|
|
4051
4137
|
for (const routeGroup of registeredRouteGroups(source)) {
|
|
@@ -4661,7 +4747,8 @@ async function inspectResourceSlices(targetDir, files, config, convention, stric
|
|
|
4661
4747
|
if (!hasRequirement(files, infrastructureDir)) {
|
|
4662
4748
|
diagnostics.push(resourceDiagnostic("BEIGNET_RESOURCE_INFRASTRUCTURE_MISSING", resource, infrastructureDir));
|
|
4663
4749
|
}
|
|
4664
|
-
if (
|
|
4750
|
+
if (config.framework === "next" &&
|
|
4751
|
+
!hasRequirement(files, routeFile) &&
|
|
4665
4752
|
!hasRequirement(files, catchAllRouteFile)) {
|
|
4666
4753
|
diagnostics.push(resourceDiagnostic("BEIGNET_RESOURCE_ROUTE_MISSING", resource, routeFile));
|
|
4667
4754
|
}
|