@fougere/app 0.12.4-alpha.0 → 0.12.6-alpha.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/dist/auth.d.ts +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +2 -2
- package/dist/auth.js.map +1 -1
- package/dist/boot.d.ts.map +1 -1
- package/dist/boot.js +7 -6
- package/dist/boot.js.map +1 -1
- package/dist/express.d.ts.map +1 -1
- package/dist/express.js +4 -3
- package/dist/express.js.map +1 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +4 -2
- package/dist/state.js.map +1 -1
- package/dist/web.js +2 -2
- package/dist/web.js.map +1 -1
- package/package.json +12 -12
- package/src/auth.ts +2 -2
- package/src/boot.ts +7 -6
- package/src/express.ts +4 -3
- package/src/state.ts +6 -2
- package/src/web.ts +2 -2
package/dist/auth.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type App, type AuthRuntime } from '@fougere/core';
|
|
2
2
|
export declare function authOf(app: App): AuthRuntime | undefined;
|
|
3
|
-
/** Get the auth runtime resolved at boot. Throws
|
|
3
|
+
/** Get the auth runtime resolved at boot. Throws when no process-local frond brought one. */
|
|
4
4
|
export declare function useFougereAuth(): Promise<AuthRuntime>;
|
|
5
5
|
//# sourceMappingURL=auth.d.ts.map
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,GAAG,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjE,wBAAgB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW,GAAG,SAAS,CAExD;AAED,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,GAAG,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjE,wBAAgB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW,GAAG,SAAS,CAExD;AAED,6FAA6F;AAC7F,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAK3D"}
|
package/dist/auth.js
CHANGED
|
@@ -3,11 +3,11 @@ import { useFougereApp } from './boot.js';
|
|
|
3
3
|
export function authOf(app) {
|
|
4
4
|
return app.container.has(AUTH) ? app.container.resolve(AUTH) : undefined;
|
|
5
5
|
}
|
|
6
|
-
/** Get the auth runtime resolved at boot. Throws
|
|
6
|
+
/** Get the auth runtime resolved at boot. Throws when no process-local frond brought one. */
|
|
7
7
|
export async function useFougereAuth() {
|
|
8
8
|
const auth = authOf(await useFougereApp());
|
|
9
9
|
if (!auth)
|
|
10
|
-
throw new Error(
|
|
10
|
+
throw new Error("Auth not configured — declare `fronds: { '@fougere/auth-better': { … } }` in fougere.config.ts.");
|
|
11
11
|
return auth;
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA8B,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,UAAU,MAAM,CAAC,GAAQ;IAC7B,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAc,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxF,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA8B,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,UAAU,MAAM,CAAC,GAAQ;IAC7B,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAc,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxF,CAAC;AAED,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,iGAAiG,CAAC,CAAC;IAE9H,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/boot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,GAAG,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EAAW,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIlE,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,8FAA8F;IAC9F,UAAU,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC5C,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAChC,6EAA6E;IAC7E,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,oEAAoE;IACpE,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC,8DAA8D;IAC9D,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,CAAC;CAC9C;AASD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,QAG3D;AAED,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,QAGjE;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,CAM5C;AAED,qBAAqB;AACrB,wBAAsB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAYpE"}
|
package/dist/boot.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/** Fougere server bootstrap — single entry point for an app's lifecycle, whatever hosts it. */
|
|
2
|
+
import { resolve, sep } from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
2
4
|
import { applyConfig, createApp, identityFromEnv, Logger } from '@fougere/core';
|
|
3
5
|
import { scanProject, frondAliases } from '@fougere/compiler';
|
|
4
6
|
import { resolveConventions } from '@fougere/core';
|
|
5
7
|
import { loadCascadedConfig, remotesOf, setModuleLoader, statedModules } from '@fougere/core/node';
|
|
6
|
-
import { createMemoryStorage } from '@fougere/adapter-memory';
|
|
7
8
|
import { layerOf } from '@fougere/defaults';
|
|
8
9
|
// ── State ────────────────────────────────────────
|
|
9
10
|
let _config = {};
|
|
@@ -63,7 +64,8 @@ async function boot() {
|
|
|
63
64
|
const installLoader = (alias) => {
|
|
64
65
|
if (!reads)
|
|
65
66
|
return;
|
|
66
|
-
|
|
67
|
+
// From the project: a module key is resolved against whoever made the loader.
|
|
68
|
+
const jiti = createJiti(pathToFileURL(resolve(process.cwd()) + sep).href, { interopDefault: true, ...(alias ? { alias } : {}) });
|
|
67
69
|
setModuleLoader((filePath) => jiti.import(filePath));
|
|
68
70
|
};
|
|
69
71
|
installLoader();
|
|
@@ -93,7 +95,6 @@ async function boot() {
|
|
|
93
95
|
if (!storage) {
|
|
94
96
|
const { resolveStorage } = await import('@fougere/defaults');
|
|
95
97
|
storage = resolveStorage(fileConfig.db, fileConfig.sources, root);
|
|
96
|
-
log.debug(storage.storageFactory ? 'auto-resolving storage from config.db' : 'no db declared — falling back to in-memory storage');
|
|
97
98
|
}
|
|
98
99
|
// The storage's two halves, kept together: its ascent is an extension, its connection
|
|
99
100
|
// is not — it is opened here, before the container, so it closes after the container.
|
|
@@ -133,13 +134,13 @@ async function boot() {
|
|
|
133
134
|
: {}),
|
|
134
135
|
// The layer, spread whole. Naming a few of its members is how `transacted` and `close`
|
|
135
136
|
// were left behind once, under Nuxt only.
|
|
136
|
-
...layerOf(storage
|
|
137
|
+
...layerOf(storage),
|
|
137
138
|
adapters: fileConfig.adapters,
|
|
138
139
|
remotes,
|
|
139
140
|
/** Who inherits code from whom — the tree, whole, so a refusal can name where an entry sits. */
|
|
140
141
|
under: fileConfig.fronds,
|
|
141
142
|
remoteTransport,
|
|
142
|
-
extensions: [...stated.extensions, ...(_config.extensions ?? [])
|
|
143
|
+
extensions: [...stated.extensions, ...(_config.extensions ?? [])],
|
|
143
144
|
// Opened before the container, so released after it. Never wired here until now:
|
|
144
145
|
// this host boots the storage and no host closed one, which is what made a reload
|
|
145
146
|
// leak the pool of every app it discarded.
|
|
@@ -147,7 +148,7 @@ async function boot() {
|
|
|
147
148
|
});
|
|
148
149
|
log.info(`ascent: ${app.extensions().join(' → ') || 'nothing declared'}`);
|
|
149
150
|
const ms = (performance.now() - bootStart).toFixed(0);
|
|
150
|
-
log.info(`ready in ${ms}ms — ${app.fronds.length} frond(s)
|
|
151
|
+
log.info(`ready in ${ms}ms — ${app.fronds.length} frond(s)`);
|
|
151
152
|
return app;
|
|
152
153
|
}
|
|
153
154
|
//# sourceMappingURL=boot.js.map
|
package/dist/boot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boot.js","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"boot.js","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"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"}
|
package/dist/express.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"AA4BA,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AACpC,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;AAiCzE,sFAAsF;AACtF,wBAAgB,IAAI,CAAC,SAAS,SAAmB,GAAG,iBAAiB,CAsBpE;AAED,gDAAgD;AAChD,wBAAgB,OAAO,CAAC,SAAS,SAAsB,GAAG,iBAAiB,CAK1E;AAED,oDAAoD;AACpD,wBAAgB,IAAI,CAAC,SAAS,SAAS,GAAG,iBAAiB,CA4B1D;AAED,yFAAyF;AACzF,wBAAgB,OAAO,CAAC,SAAS,SAAa,GAAG,iBAAiB,CAoBjE;AAED;sDACsD;AACtD,wBAAgB,OAAO,IAAI,iBAAiB,CAa3C"}
|
package/dist/express.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** The facades as Express middlewares — the form an Express app expects. */
|
|
2
2
|
import { readExpressBody } from '@fougere/http';
|
|
3
|
+
import { maxBodyBytes } from '@fougere/core';
|
|
3
4
|
import { rpcParseError, serveRest, serveRpc } from './Outcome.js';
|
|
4
5
|
import { serveGraphQL } from './graphql.js';
|
|
5
6
|
import { sessionViewOf } from './session.js';
|
|
@@ -39,7 +40,7 @@ export function call(mountPath = '/_fougere/call') {
|
|
|
39
40
|
const app = await useFougereApp();
|
|
40
41
|
let body;
|
|
41
42
|
try {
|
|
42
|
-
body = await readExpressBody(req);
|
|
43
|
+
body = await readExpressBody(req, maxBodyBytes());
|
|
43
44
|
}
|
|
44
45
|
catch {
|
|
45
46
|
res.status(200).json(rpcParseError());
|
|
@@ -74,7 +75,7 @@ export function rest(mountPath = '/api') {
|
|
|
74
75
|
method: req.method,
|
|
75
76
|
path: path.slice(mountPath.length + 1),
|
|
76
77
|
query: queryOf(req),
|
|
77
|
-
body: await readExpressBody(req),
|
|
78
|
+
body: await readExpressBody(req, maxBodyBytes()),
|
|
78
79
|
state: stateOf(req),
|
|
79
80
|
});
|
|
80
81
|
// Not ours — Express's own passthrough, which is what `pass` always meant.
|
|
@@ -100,7 +101,7 @@ export function graphql(mountPath = '/graphql') {
|
|
|
100
101
|
void (async () => {
|
|
101
102
|
try {
|
|
102
103
|
const app = await useFougereApp();
|
|
103
|
-
const body = ((await readExpressBody(req)) ?? {});
|
|
104
|
+
const body = ((await readExpressBody(req, maxBodyBytes())) ?? {});
|
|
104
105
|
const outcome = await serveGraphQL(app, { ...body, state: stateOf(req) });
|
|
105
106
|
if (outcome.kind === 'pass')
|
|
106
107
|
return next();
|
package/dist/express.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.js","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAyB1C,+CAA+C;AAC/C,SAAS,OAAO,CAAC,GAAmB;IAClC,IAAI,GAAG,CAAC,YAAY;QAAE,OAAO,GAAG,CAAC,YAAY,CAAC;IAE9C,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,MAAM,CAAC,GAAmB;IACjC,OAAO,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;AAC7E,CAAC;AAED,SAAS,OAAO,CAAC,GAAmB;IAClC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QACpD,GAAG;QACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;KAChD,CAAC,CACH,CAAC;AACJ,CAAC;AAED,8FAA8F;AAC9F,SAAS,IAAI,CAAC,GAAoB,EAAE,IAAU,EAAE,GAAY;IAC1D,MAAM,IAAI,GAAI,GAAyB,EAAE,IAAI,KAAK,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QACjB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAE9E,OAAO;IACT,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,IAAI,CAAC,SAAS,GAAG,gBAAgB;IAC/C,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,EAAE,CAAC;QAExE,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,aAAa,EAAE,CAAC;gBAClC,IAAI,IAAa,CAAC;gBAClB,IAAI,CAAC;oBACH,IAAI,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"express.js","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"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"}
|
package/dist/state.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAQA,mGAAmG;AACnG,wBAAsB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAQA,mGAAmG;AACnG,wBAAsB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAmBjF"}
|
package/dist/state.js
CHANGED
|
@@ -11,8 +11,10 @@ export async function stateFor(headers) {
|
|
|
11
11
|
return {};
|
|
12
12
|
try {
|
|
13
13
|
const result = await auth.api.getSession({ headers });
|
|
14
|
-
if (result?.session && result?.user)
|
|
15
|
-
|
|
14
|
+
if (result?.session && result?.user) {
|
|
15
|
+
const { token: _token, ...session } = result.session;
|
|
16
|
+
return { user: result.user, session };
|
|
17
|
+
}
|
|
16
18
|
}
|
|
17
19
|
catch {
|
|
18
20
|
// An unreachable or misconfigured provider leaves the caller anonymous rather
|
package/dist/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAMnC,mGAAmG;AACnG,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAgB;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,wFAAwF;IACxF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAO,IAAI,CAAC,GAA6B,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACjF,IAAI,MAAM,EAAE,OAAO,IAAI,MAAM,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAMnC,mGAAmG;AACnG,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAgB;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,wFAAwF;IACxF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAO,IAAI,CAAC,GAA6B,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACjF,IAAI,MAAM,EAAE,OAAO,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;YACpC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;YAErD,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,8EAA8E;QAC9E,wEAAwE;IAC1E,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
package/dist/web.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/** The three facades as Web-standard handlers: `Request` in, `Response` out. */
|
|
2
2
|
import { serveRest, serveRpc, rpcParseError, useFougereApp, serveGraphQL } from './index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { maxBodyBytes } from '@fougere/core';
|
|
4
4
|
import { sessionViewOf } from './session.js';
|
|
5
5
|
import { stateFor } from './state.js';
|
|
6
6
|
const WITH_BODY = new Set(['POST', 'PUT', 'PATCH']);
|
|
7
7
|
/** The call envelope. */
|
|
8
8
|
export async function call(request) {
|
|
9
9
|
const declared = Number(request.headers.get('content-length'));
|
|
10
|
-
if (Number.isFinite(declared) && declared >
|
|
10
|
+
if (Number.isFinite(declared) && declared > maxBodyBytes()) {
|
|
11
11
|
return Response.json({ message: 'Payload too large' }, { status: 413 });
|
|
12
12
|
}
|
|
13
13
|
const app = await useFougereApp();
|
package/dist/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fougere/app",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.6-alpha.0",
|
|
4
4
|
"description": "The host-independent half of a Fougere app: boot, call envelope, REST table, form contract.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"fougere",
|
|
@@ -42,25 +42,25 @@
|
|
|
42
42
|
],
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"jiti": "^2.6.1",
|
|
45
|
-
"@fougere/core": "0.12.
|
|
46
|
-
"@fougere/defaults": "0.12.
|
|
47
|
-
"@fougere/schema": "0.12.
|
|
48
|
-
"@fougere/adapter-
|
|
49
|
-
"@fougere/
|
|
50
|
-
"@fougere/
|
|
51
|
-
"@fougere/
|
|
52
|
-
"@fougere/
|
|
53
|
-
"@fougere/
|
|
45
|
+
"@fougere/core": "0.12.6-alpha.0",
|
|
46
|
+
"@fougere/defaults": "0.12.6-alpha.0",
|
|
47
|
+
"@fougere/schema": "0.12.6-alpha.0",
|
|
48
|
+
"@fougere/adapter-rest": "0.12.6-alpha.0",
|
|
49
|
+
"@fougere/container": "0.12.6-alpha.0",
|
|
50
|
+
"@fougere/http": "0.12.6-alpha.0",
|
|
51
|
+
"@fougere/adapter-memory": "0.12.6-alpha.0",
|
|
52
|
+
"@fougere/compiler": "0.12.6-alpha.0",
|
|
53
|
+
"@fougere/transport-http": "0.12.6-alpha.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"vitest": "^4.1.0",
|
|
57
|
-
"@fougere/adapter-graphql": "0.12.
|
|
57
|
+
"@fougere/adapter-graphql": "0.12.6-alpha.0"
|
|
58
58
|
},
|
|
59
59
|
"publishConfig": {
|
|
60
60
|
"access": "public"
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
63
|
-
"@fougere/adapter-graphql": "^0.12.
|
|
63
|
+
"@fougere/adapter-graphql": "^0.12.6-alpha.0"
|
|
64
64
|
},
|
|
65
65
|
"peerDependenciesMeta": {
|
|
66
66
|
"@fougere/adapter-graphql": {
|
package/src/auth.ts
CHANGED
|
@@ -5,10 +5,10 @@ export function authOf(app: App): AuthRuntime | undefined {
|
|
|
5
5
|
return app.container.has(AUTH) ? app.container.resolve<AuthRuntime>(AUTH) : undefined;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
/** Get the auth runtime resolved at boot. Throws
|
|
8
|
+
/** Get the auth runtime resolved at boot. Throws when no process-local frond brought one. */
|
|
9
9
|
export async function useFougereAuth(): Promise<AuthRuntime> {
|
|
10
10
|
const auth = authOf(await useFougereApp());
|
|
11
|
-
if (!auth) throw new Error(
|
|
11
|
+
if (!auth) throw new Error("Auth not configured — declare `fronds: { '@fougere/auth-better': { … } }` in fougere.config.ts.");
|
|
12
12
|
|
|
13
13
|
return auth;
|
|
14
14
|
}
|
package/src/boot.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/** Fougere server bootstrap — single entry point for an app's lifecycle, whatever hosts it. */
|
|
2
|
+
import { resolve, sep } from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
2
4
|
import { applyConfig, createApp, identityFromEnv, Logger } from '@fougere/core';
|
|
3
5
|
import { scanProject, frondAliases } from '@fougere/compiler';
|
|
4
6
|
import { resolveConventions } from '@fougere/core';
|
|
5
7
|
import { loadCascadedConfig, remotesOf, setModuleLoader, statedModules } from '@fougere/core/node';
|
|
6
8
|
|
|
7
|
-
import { createMemoryStorage } from '@fougere/adapter-memory';
|
|
8
9
|
import type { App, CreateAppOptions, FougereConfig, Transport } from '@fougere/core';
|
|
9
10
|
import { layerOf, type ResolvedStorage } from '@fougere/defaults';
|
|
10
11
|
|
|
@@ -100,7 +101,8 @@ async function boot(): Promise<App> {
|
|
|
100
101
|
const reads = (_config.scan === undefined && _config.fronds === undefined) || _config.config === undefined;
|
|
101
102
|
const installLoader = (alias?: Record<string, string>): void => {
|
|
102
103
|
if (!reads) return;
|
|
103
|
-
|
|
104
|
+
// From the project: a module key is resolved against whoever made the loader.
|
|
105
|
+
const jiti = createJiti(pathToFileURL(resolve(process.cwd()) + sep).href, { interopDefault: true, ...(alias ? { alias } : {}) });
|
|
104
106
|
setModuleLoader((filePath) => jiti.import(filePath) as Promise<Record<string, unknown>>);
|
|
105
107
|
};
|
|
106
108
|
installLoader();
|
|
@@ -132,7 +134,6 @@ async function boot(): Promise<App> {
|
|
|
132
134
|
if (!storage) {
|
|
133
135
|
const { resolveStorage } = await import('@fougere/defaults');
|
|
134
136
|
storage = resolveStorage(fileConfig.db as never, (fileConfig as { sources?: unknown }).sources as never, root);
|
|
135
|
-
log.debug(storage.storageFactory ? 'auto-resolving storage from config.db' : 'no db declared — falling back to in-memory storage');
|
|
136
137
|
}
|
|
137
138
|
// The storage's two halves, kept together: its ascent is an extension, its connection
|
|
138
139
|
// is not — it is opened here, before the container, so it closes after the container.
|
|
@@ -174,13 +175,13 @@ async function boot(): Promise<App> {
|
|
|
174
175
|
: {}),
|
|
175
176
|
// The layer, spread whole. Naming a few of its members is how `transacted` and `close`
|
|
176
177
|
// were left behind once, under Nuxt only.
|
|
177
|
-
...layerOf(storage
|
|
178
|
+
...layerOf(storage),
|
|
178
179
|
adapters: fileConfig.adapters,
|
|
179
180
|
remotes,
|
|
180
181
|
/** Who inherits code from whom — the tree, whole, so a refusal can name where an entry sits. */
|
|
181
182
|
under: fileConfig.fronds,
|
|
182
183
|
remoteTransport,
|
|
183
|
-
extensions: [...stated.extensions, ...(_config.extensions ?? [])
|
|
184
|
+
extensions: [...stated.extensions, ...(_config.extensions ?? [])],
|
|
184
185
|
// Opened before the container, so released after it. Never wired here until now:
|
|
185
186
|
// this host boots the storage and no host closed one, which is what made a reload
|
|
186
187
|
// leak the pool of every app it discarded.
|
|
@@ -190,7 +191,7 @@ async function boot(): Promise<App> {
|
|
|
190
191
|
log.info(`ascent: ${app.extensions().join(' → ') || 'nothing declared'}`);
|
|
191
192
|
|
|
192
193
|
const ms = (performance.now() - bootStart).toFixed(0);
|
|
193
|
-
log.info(`ready in ${ms}ms — ${app.fronds.length} frond(s)
|
|
194
|
+
log.info(`ready in ${ms}ms — ${app.fronds.length} frond(s)`);
|
|
194
195
|
|
|
195
196
|
return app;
|
|
196
197
|
}
|
package/src/express.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** The facades as Express middlewares — the form an Express app expects. */
|
|
2
2
|
import { readExpressBody } from '@fougere/http';
|
|
3
|
+
import { maxBodyBytes } from '@fougere/core';
|
|
3
4
|
import { rpcParseError, serveRest, serveRpc } from './Outcome.js';
|
|
4
5
|
import { serveGraphQL } from './graphql.js';
|
|
5
6
|
import { sessionViewOf } from './session.js';
|
|
@@ -70,7 +71,7 @@ export function call(mountPath = '/_fougere/call'): ExpressMiddleware {
|
|
|
70
71
|
const app = await useFougereApp();
|
|
71
72
|
let body: unknown;
|
|
72
73
|
try {
|
|
73
|
-
body = await readExpressBody(req);
|
|
74
|
+
body = await readExpressBody(req, maxBodyBytes());
|
|
74
75
|
} catch {
|
|
75
76
|
res.status(200).json(rpcParseError());
|
|
76
77
|
|
|
@@ -105,7 +106,7 @@ export function rest(mountPath = '/api'): ExpressMiddleware {
|
|
|
105
106
|
method: req.method,
|
|
106
107
|
path: path.slice(mountPath.length + 1),
|
|
107
108
|
query: queryOf(req),
|
|
108
|
-
body: await readExpressBody(req),
|
|
109
|
+
body: await readExpressBody(req, maxBodyBytes()),
|
|
109
110
|
state: stateOf(req),
|
|
110
111
|
});
|
|
111
112
|
|
|
@@ -131,7 +132,7 @@ export function graphql(mountPath = '/graphql'): ExpressMiddleware {
|
|
|
131
132
|
void (async () => {
|
|
132
133
|
try {
|
|
133
134
|
const app = await useFougereApp();
|
|
134
|
-
const body = ((await readExpressBody(req)) ?? {}) as {
|
|
135
|
+
const body = ((await readExpressBody(req, maxBodyBytes())) ?? {}) as {
|
|
135
136
|
query?: string;
|
|
136
137
|
variables?: Record<string, unknown>;
|
|
137
138
|
operationName?: string;
|
package/src/state.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { useFougereApp } from './boot.js';
|
|
|
3
3
|
import { authOf } from './auth.js';
|
|
4
4
|
|
|
5
5
|
type SessionApi = {
|
|
6
|
-
getSession: (opts: { headers: Headers }) => Promise<{ session: { userId: string }; user: Record<string, unknown> } | null>;
|
|
6
|
+
getSession: (opts: { headers: Headers }) => Promise<{ session: { userId: string; token?: string }; user: Record<string, unknown> } | null>;
|
|
7
7
|
};
|
|
8
8
|
|
|
9
9
|
/** The request state for these headers. Empty when no auth is declared, or nobody is signed in. */
|
|
@@ -15,7 +15,11 @@ export async function stateFor(headers: Headers): Promise<Record<string, unknown
|
|
|
15
15
|
|
|
16
16
|
try {
|
|
17
17
|
const result = await (auth.api as unknown as SessionApi).getSession({ headers });
|
|
18
|
-
if (result?.session && result?.user)
|
|
18
|
+
if (result?.session && result?.user) {
|
|
19
|
+
const { token: _token, ...session } = result.session;
|
|
20
|
+
|
|
21
|
+
return { user: result.user, session };
|
|
22
|
+
}
|
|
19
23
|
} catch {
|
|
20
24
|
// An unreachable or misconfigured provider leaves the caller anonymous rather
|
|
21
25
|
// than failing the request — the same choice the Nuxt middleware makes.
|
package/src/web.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** The three facades as Web-standard handlers: `Request` in, `Response` out. */
|
|
2
2
|
import { serveRest, serveRpc, rpcParseError, useFougereApp, serveGraphQL } from './index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { maxBodyBytes } from '@fougere/core';
|
|
4
4
|
import { sessionViewOf } from './session.js';
|
|
5
5
|
import { stateFor } from './state.js';
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@ const WITH_BODY = new Set(['POST', 'PUT', 'PATCH']);
|
|
|
9
9
|
/** The call envelope. */
|
|
10
10
|
export async function call(request: Request): Promise<Response> {
|
|
11
11
|
const declared = Number(request.headers.get('content-length'));
|
|
12
|
-
if (Number.isFinite(declared) && declared >
|
|
12
|
+
if (Number.isFinite(declared) && declared > maxBodyBytes()) {
|
|
13
13
|
return Response.json({ message: 'Payload too large' }, { status: 413 });
|
|
14
14
|
}
|
|
15
15
|
|