@fougere/nuxt 0.4.0-alpha.0 → 0.5.0-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/module.d.ts +29 -2
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +78 -31
- package/dist/module.js.map +1 -1
- package/dist/runtime/composables/useCurrentUser.d.ts +8 -0
- package/dist/runtime/composables/useCurrentUser.d.ts.map +1 -0
- package/dist/runtime/composables/useCurrentUser.js +21 -0
- package/dist/runtime/composables/useCurrentUser.js.map +1 -0
- package/dist/runtime/composables/useFormFor.d.ts +27 -0
- package/dist/runtime/composables/useFormFor.d.ts.map +1 -0
- package/dist/runtime/composables/useFormFor.js +76 -0
- package/dist/runtime/composables/useFormFor.js.map +1 -0
- package/dist/runtime/composables/useFougereData.d.ts +21 -0
- package/dist/runtime/composables/useFougereData.d.ts.map +1 -0
- package/dist/runtime/composables/useFougereData.js +74 -0
- package/dist/runtime/composables/useFougereData.js.map +1 -0
- package/dist/runtime/plugins/session.server.d.ts +3 -0
- package/dist/runtime/plugins/session.server.d.ts.map +1 -0
- package/dist/runtime/plugins/session.server.js +13 -0
- package/dist/runtime/plugins/session.server.js.map +1 -0
- package/dist/runtime/server/api/crud.d.ts +3 -0
- package/dist/runtime/server/api/crud.d.ts.map +1 -0
- package/dist/runtime/server/api/crud.js +46 -0
- package/dist/runtime/server/api/crud.js.map +1 -0
- package/dist/runtime/server/auth/middleware/auth.d.ts +7 -0
- package/dist/runtime/server/auth/middleware/auth.d.ts.map +1 -0
- package/dist/runtime/server/auth/middleware/auth.js +32 -0
- package/dist/runtime/server/auth/middleware/auth.js.map +1 -0
- package/dist/runtime/server/auth/routes/api/me.get.d.ts +5 -0
- package/dist/runtime/server/auth/routes/api/me.get.d.ts.map +1 -0
- package/dist/runtime/server/auth/routes/api/me.get.js +10 -0
- package/dist/runtime/server/auth/routes/api/me.get.js.map +1 -0
- package/dist/runtime/server/auth/routes/auth/[...].d.ts +3 -0
- package/dist/runtime/server/auth/routes/auth/[...].d.ts.map +1 -0
- package/dist/runtime/server/auth/routes/auth/[...].js +8 -0
- package/dist/runtime/server/auth/routes/auth/[...].js.map +1 -0
- package/dist/runtime/server/routes/call.post.d.ts +3 -0
- package/dist/runtime/server/routes/call.post.d.ts.map +1 -0
- package/dist/runtime/server/routes/call.post.js +125 -0
- package/dist/runtime/server/routes/call.post.js.map +1 -0
- package/dist/runtime/server/routes/session.get.d.ts +3 -0
- package/dist/runtime/server/routes/session.get.d.ts.map +1 -0
- package/dist/runtime/server/routes/session.get.js +9 -0
- package/dist/runtime/server/routes/session.get.js.map +1 -0
- package/dist/runtime/server/utils/boot.d.ts +13 -0
- package/dist/runtime/server/utils/boot.d.ts.map +1 -0
- package/dist/runtime/server/utils/boot.js +13 -0
- package/dist/runtime/server/utils/boot.js.map +1 -0
- package/dist/runtime/server/utils/invoke.d.ts +9 -0
- package/dist/runtime/server/utils/invoke.d.ts.map +1 -0
- package/dist/runtime/server/utils/invoke.js +24 -0
- package/dist/runtime/server/utils/invoke.js.map +1 -0
- package/package.json +6 -6
- package/src/module.ts +98 -28
- package/src/runtime/composables/useFougereData.ts +11 -1
- package/src/runtime/server/auth/routes/auth/[...].ts +1 -1
- package/src/runtime/server/routes/call.post.ts +1 -1
- package/src/shims.d.ts +7 -0
package/dist/module.d.ts
CHANGED
|
@@ -8,10 +8,37 @@ export interface FougereModuleOptions {
|
|
|
8
8
|
* fronds are shared at the root. Config and `.fougere` stay app-local.
|
|
9
9
|
*/
|
|
10
10
|
root?: string;
|
|
11
|
+
/**
|
|
12
|
+
* One key per EXTENSION, and the key is the package suffix AND the export name —
|
|
13
|
+
* `calls` is `import { calls } from '@fougere/calls'`. So the module holds no table to
|
|
14
|
+
* keep in step with the packages, the same rule the scan applies to `@fronds/<name>`.
|
|
15
|
+
*
|
|
16
|
+
* An extension is a FUNCTION and this module writes a FILE, so a project cannot pass one
|
|
17
|
+
* here: it names one, and the options travel beside it as data.
|
|
18
|
+
*
|
|
19
|
+
* The keys are declared rather than left open on purpose. An open record would derive
|
|
20
|
+
* everything and accept `callz: {}` in silence — the failure this repo already records
|
|
21
|
+
* for `adapters:`, which "fails OPEN, giving neither completion nor a guard". The price
|
|
22
|
+
* is that a new extension package adds a key here.
|
|
23
|
+
*/
|
|
24
|
+
/** `@fougere/observability` — a span per operation, the four signals, OTLP. */
|
|
25
|
+
observability?: Record<string, unknown> | false;
|
|
26
|
+
/** `@fougere/calls` — the dev panel: a bounded log of what this process dispatched. */
|
|
27
|
+
calls?: Record<string, unknown> | false;
|
|
11
28
|
}
|
|
29
|
+
/** What the project asked for, in mount order. `false` is how a key is turned off. */
|
|
30
|
+
export declare function extensionsOf(options: FougereModuleOptions): {
|
|
31
|
+
key: string;
|
|
32
|
+
options: unknown;
|
|
33
|
+
}[];
|
|
12
34
|
declare const module: import("@nuxt/schema").NuxtModule<FougereModuleOptions, FougereModuleOptions, false>;
|
|
13
35
|
export default module;
|
|
14
36
|
export declare function generateBootPlugin(config: FougereConfig, seeds: SeedEntry[], fougereAppPath: string,
|
|
15
|
-
/**
|
|
16
|
-
|
|
37
|
+
/** What `fougere:` named, in mount order. Empty is the whole of "changed nothing". */
|
|
38
|
+
extensions?: {
|
|
39
|
+
key: string;
|
|
40
|
+
options: unknown;
|
|
41
|
+
}[],
|
|
42
|
+
/** The app's own `fronds.ts`, when it states what it hosts instead of being scanned. */
|
|
43
|
+
statedPath?: string): string;
|
|
17
44
|
//# sourceMappingURL=module.d.ts.map
|
package/dist/module.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAK9D,MAAM,WAAW,oBAAoB;IACnC,oEAAoE;IACpE,EAAE,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACzB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAK9D,MAAM,WAAW,oBAAoB;IACnC,oEAAoE;IACpE,EAAE,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACzB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;;;;;;;;OAYG;IACH,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;IAChD,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;CACzC;AAWD,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,EAAE,CAI/F;AAUD,QAAA,MAAM,MAAM,sFA8OV,CAAC;eAEY,MAAM;AAiDrB,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,SAAS,EAAE,EAClB,cAAc,EAAE,MAAM;AACtB,sFAAsF;AACtF,UAAU,GAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,EAAO;AACpD,wFAAwF;AACxF,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CA0HR"}
|
package/dist/module.js
CHANGED
|
@@ -5,11 +5,25 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { defineNuxtModule, addServerHandler, addServerImportsDir, addServerPlugin, addPlugin, addTemplate, addImports, createResolver, useLogger, } from '@nuxt/kit';
|
|
7
7
|
import { orderSeeds } from '@fougere/core';
|
|
8
|
-
import { scanProject,
|
|
8
|
+
import { scanProject, emitStatement, frondAliases, frondPackage, watchPathsOf, resolveConventions, setModuleLoader, loadCascadedConfig, } from '@fougere/core/node';
|
|
9
9
|
import { declaresStorage } from '@fougere/defaults';
|
|
10
10
|
import { createJiti } from 'jiti';
|
|
11
11
|
import { resolve, relative } from 'node:path';
|
|
12
12
|
import { existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
13
|
+
/**
|
|
14
|
+
* The extension keys, in the order they are mounted.
|
|
15
|
+
*
|
|
16
|
+
* A list and not the options object's own keys: the ORDER is ours, not the project's.
|
|
17
|
+
* `observability` installs the middleware that opens the span every log line written
|
|
18
|
+
* inside a call will carry — mounted the other way round, the lines leave uncorrelated.
|
|
19
|
+
*/
|
|
20
|
+
const EXTENSION_KEYS = ['observability', 'calls'];
|
|
21
|
+
/** What the project asked for, in mount order. `false` is how a key is turned off. */
|
|
22
|
+
export function extensionsOf(options) {
|
|
23
|
+
return EXTENSION_KEYS
|
|
24
|
+
.filter((key) => options[key] !== undefined && options[key] !== false)
|
|
25
|
+
.map((key) => ({ key, options: options[key] }));
|
|
26
|
+
}
|
|
13
27
|
/**
|
|
14
28
|
* A frond directory as the pattern Nuxt tests for a restart: it matches the changed
|
|
15
29
|
* file against the path relative to the layer's app dir, so that is the base here.
|
|
@@ -22,7 +36,7 @@ const module = defineNuxtModule({
|
|
|
22
36
|
},
|
|
23
37
|
async setup(options, nuxt) {
|
|
24
38
|
const { resolve: resolveModule } = createResolver(import.meta.url);
|
|
25
|
-
const runtimeResolve = (...path) => resolveModule('
|
|
39
|
+
const runtimeResolve = (...path) => resolveModule('./runtime', ...path);
|
|
26
40
|
const rootDir = nuxt.options.rootDir;
|
|
27
41
|
// Fronds may live at the workspace root (app under apps/*); config/.fougere stay app-local.
|
|
28
42
|
const scanRoot = options.root ? resolve(rootDir, options.root) : rootDir;
|
|
@@ -194,27 +208,41 @@ const module = defineNuxtModule({
|
|
|
194
208
|
handler: runtimeResolve('server/auth/routes/api/me.get'),
|
|
195
209
|
});
|
|
196
210
|
}
|
|
197
|
-
// ── 6.
|
|
211
|
+
// ── 6. What this app hosts ───
|
|
198
212
|
//
|
|
199
|
-
//
|
|
200
|
-
//
|
|
201
|
-
//
|
|
202
|
-
//
|
|
203
|
-
// diagnostics say why. One scan, one value, handed to the boot.
|
|
213
|
+
// A `fronds.ts` beside `fougere.config.ts` is the app STATING it — the same shape
|
|
214
|
+
// `configureFougere({ fronds })` gives every other host, made where the author can
|
|
215
|
+
// make it. The scan still runs at build and stays a CHECK: its diagnostics reach the
|
|
216
|
+
// console, and it becomes no module.
|
|
204
217
|
//
|
|
205
|
-
//
|
|
206
|
-
//
|
|
207
|
-
|
|
208
|
-
|
|
218
|
+
// Nothing is generated, because a generated module was imported by ABSOLUTE path,
|
|
219
|
+
// which a bundler sees as `file://` and therefore external. Externalized, Node read
|
|
220
|
+
// the frond's `.ts` itself — stripping types but resolving `../entities/Post.js`
|
|
221
|
+
// literally, a file that is not on disk. Measured on demos/nuxt-blog in-process:
|
|
222
|
+
// 500 on every call in `nuxt dev`, 200 once the statement is the only source.
|
|
223
|
+
// A codegen inside one repo also had nothing to carry: `fougere sync` writes classes
|
|
224
|
+
// because its source is ANOTHER repo, and here the author can just import.
|
|
225
|
+
const stated = ['fronds.ts', 'fronds.mts', 'fronds.js', 'fronds.mjs']
|
|
226
|
+
.map((f) => resolve(scanRoot, f)).find((f) => existsSync(f));
|
|
227
|
+
// No statement of its own: the build writes the one the scan implies, so the runtime
|
|
228
|
+
// never reaches `scanProject`. That fallback works — it has a disk under Nuxt — but it
|
|
229
|
+
// loads `typescript` into a production boot, which is the whole of what a build is for.
|
|
230
|
+
// What is written is the STATEMENT (imports + `frond()`), never the scan result.
|
|
231
|
+
// `.ts`, and it is not cosmetic: the file spells its imports the way TypeScript sources
|
|
232
|
+
// do (`Post.js` for `Post.ts`), and Nitro externalizes a `.mjs` it can hand to Node —
|
|
233
|
+
// which then resolves `@fronds/*` against a package that does not exist, since an alias
|
|
234
|
+
// is a bundler's. Measured both ways, in-process: `.mjs` answers 500, `.ts` answers.
|
|
235
|
+
const statedPath = stated ?? addTemplate({
|
|
236
|
+
filename: 'fougere-fronds.ts',
|
|
209
237
|
write: true,
|
|
210
|
-
getContents: (
|
|
211
|
-
});
|
|
238
|
+
getContents: () => emitStatement(scan),
|
|
239
|
+
}).dst;
|
|
212
240
|
// ── 6b. Boot plugin (virtual — lives in .nuxt/) ───
|
|
213
241
|
const allSeeds = orderSeeds(fronds);
|
|
214
242
|
const bootTpl = addTemplate({
|
|
215
243
|
filename: 'fougere-boot.ts',
|
|
216
244
|
write: true,
|
|
217
|
-
getContents: () => generateBootPlugin(config, allSeeds, runtimeResolve('server/utils/boot'),
|
|
245
|
+
getContents: () => generateBootPlugin(config, allSeeds, runtimeResolve('server/utils/boot'), extensionsOf(options), statedPath),
|
|
218
246
|
});
|
|
219
247
|
addServerPlugin(bootTpl.dst);
|
|
220
248
|
},
|
|
@@ -269,8 +297,10 @@ async function syncedEntityNames(rootDir, conventions) {
|
|
|
269
297
|
}
|
|
270
298
|
}
|
|
271
299
|
export function generateBootPlugin(config, seeds, fougereAppPath,
|
|
272
|
-
/**
|
|
273
|
-
|
|
300
|
+
/** What `fougere:` named, in mount order. Empty is the whole of "changed nothing". */
|
|
301
|
+
extensions = [],
|
|
302
|
+
/** The app's own `fronds.ts`, when it states what it hosts instead of being scanned. */
|
|
303
|
+
statedPath) {
|
|
274
304
|
const lines = [];
|
|
275
305
|
lines.push(`// Auto-generated by @fougere/nuxt — do not edit`);
|
|
276
306
|
// Explicit imports — nitro's auto-imports don't reach this template in a prod build
|
|
@@ -278,8 +308,13 @@ scanPath) {
|
|
|
278
308
|
lines.push(`import { configureFougere } from '${fougereAppPath}';`);
|
|
279
309
|
// A STATIC import, because that is the one thing a bundler needs spelled out — and the
|
|
280
310
|
// whole point is that nothing reads a directory once this file is built.
|
|
281
|
-
|
|
282
|
-
|
|
311
|
+
// The extension is DROPPED, and that is what decides who reads the file: an extensionless
|
|
312
|
+
// specifier cannot be resolved by Node, so the bundler resolves it — and only a bundler
|
|
313
|
+
// applies the `@fronds/*` aliases the statement's own imports are written with. Left in
|
|
314
|
+
// place, the path resolves natively, Node reads the frond's `.ts` and every call answers
|
|
315
|
+
// 500. Measured both ways on demos/nuxt-blog, in-process.
|
|
316
|
+
if (statedPath)
|
|
317
|
+
lines.push(`import fronds from '${statedPath.replace(/\.(m?)[jt]sx?$/, '')}';`);
|
|
283
318
|
const db = config.db ?? 'sqlite';
|
|
284
319
|
const sources = config.sources;
|
|
285
320
|
// `declaresStorage` is the canonical reader of `db:` — asked, not re-interpreted.
|
|
@@ -292,8 +327,10 @@ scanPath) {
|
|
|
292
327
|
if (!declaresStorage(db)) {
|
|
293
328
|
lines.push(``);
|
|
294
329
|
lines.push(`export default defineNitroPlugin(() => {`);
|
|
295
|
-
|
|
296
|
-
|
|
330
|
+
// Always configure, even with nothing to host: `hostedBy` is where the absence is
|
|
331
|
+
// answered, by name and with both keys. Skipping the call boots a silent app instead.
|
|
332
|
+
const states = statedPath ? 'fronds, ' : '';
|
|
333
|
+
lines.push(` configureFougere({ ${states}config: ${JSON.stringify(carried(config))} });`);
|
|
297
334
|
lines.push(`});`);
|
|
298
335
|
return lines.join('\n') + '\n';
|
|
299
336
|
}
|
|
@@ -302,6 +339,12 @@ scanPath) {
|
|
|
302
339
|
lines.push(`import { resolveStorage } from '@fougere/defaults';`);
|
|
303
340
|
// After the early return above: an app that declares no storage generates no imports.
|
|
304
341
|
lines.push(`import { migrating${seeds.length ? ', runSeeds' : ''} } from '@fougere/core';`);
|
|
342
|
+
// One import per key the project named. The key IS the export and the package suffix, so
|
|
343
|
+
// a missing package is a build error naming the package — not a boot that silently lacks
|
|
344
|
+
// the panel someone asked for.
|
|
345
|
+
for (const { key } of extensions) {
|
|
346
|
+
lines.push(`import { ${key} } from '@fougere/${key}';`);
|
|
347
|
+
}
|
|
305
348
|
lines.push(``);
|
|
306
349
|
// Seed imports
|
|
307
350
|
for (let i = 0; i < seeds.length; i++) {
|
|
@@ -311,15 +354,14 @@ scanPath) {
|
|
|
311
354
|
lines.push(``);
|
|
312
355
|
// Wrap all init in the plugin callback to avoid top-level native calls
|
|
313
356
|
lines.push(`export default defineNitroPlugin(async () => {`);
|
|
314
|
-
//
|
|
315
|
-
// from being stated. Measured on workerd — `resolveStorage` threw on a native driver,
|
|
357
|
+
// What it HOSTS first, and on its own line: it names no engine, so nothing below can stop
|
|
358
|
+
// it from being stated. Measured on workerd — `resolveStorage` threw on a native driver,
|
|
316
359
|
// Nitro swallowed the plugin whole, and the app came up with zero fronds and not a word.
|
|
317
|
-
// Two unrelated facts had been sharing one failure.
|
|
318
|
-
//
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
lines.push(` configureFougere({ scan, config: ${JSON.stringify(carried(config))} });`);
|
|
360
|
+
// Two unrelated facts had been sharing one failure. `remotes` rides along for the same
|
|
361
|
+
// reason: it is the whole of why a consumer that hosts nothing boots at all.
|
|
362
|
+
const states = statedPath ? 'fronds, ' : '';
|
|
363
|
+
lines.push(` configureFougere({ ${states}config: ${JSON.stringify(carried(config))} });`);
|
|
364
|
+
lines.push(``);
|
|
323
365
|
lines.push(` try {`);
|
|
324
366
|
// Pass `db` through unchanged — resolveStorage (@fougere/defaults → setupSqlite)
|
|
325
367
|
// is the one place that defaults an absent path, so both call sites (this
|
|
@@ -330,8 +372,8 @@ scanPath) {
|
|
|
330
372
|
lines.push(` const storage = resolveStorage(${JSON.stringify(db)}${sourcesArg});`);
|
|
331
373
|
lines.push(``);
|
|
332
374
|
lines.push(` configureFougere({`);
|
|
333
|
-
if (
|
|
334
|
-
lines.push(`
|
|
375
|
+
if (statedPath)
|
|
376
|
+
lines.push(` fronds,`);
|
|
335
377
|
lines.push(` config: ${JSON.stringify(carried(config))},`);
|
|
336
378
|
lines.push(` db: storage.db,`);
|
|
337
379
|
lines.push(` ormFactory: storage.ormFactory,`);
|
|
@@ -357,6 +399,11 @@ scanPath) {
|
|
|
357
399
|
}
|
|
358
400
|
lines.push(` ], (message) => console.log('[fougere:seed]' + message)) },`);
|
|
359
401
|
}
|
|
402
|
+
// After the framework's own members, never before: tables, then rows, then what the host
|
|
403
|
+
// adds. A key named 'seeds' would REPLACE core's, which is the delta rule of AppLifecycle.
|
|
404
|
+
for (const { key, options } of extensions) {
|
|
405
|
+
lines.push(` ${key}(${JSON.stringify(options ?? {})}),`);
|
|
406
|
+
}
|
|
360
407
|
lines.push(` ],`);
|
|
361
408
|
lines.push(` });`);
|
|
362
409
|
// A storage that could not be opened is REPORTED, never swallowed. Nitro takes a
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SessionView } from '@fougere/app/client';
|
|
2
|
+
export declare function useCurrentUser<TUser = Record<string, unknown>>(): {
|
|
3
|
+
session: import("vue").Ref<SessionView, SessionView>;
|
|
4
|
+
user: import("vue").ComputedRef<TUser | null>;
|
|
5
|
+
loggedIn: import("vue").ComputedRef<boolean>;
|
|
6
|
+
refresh: () => Promise<void>;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=useCurrentUser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCurrentUser.d.ts","sourceRoot":"","sources":["../../../src/runtime/composables/useCurrentUser.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,wBAAgB,cAAc,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;mBAOlC,OAAO,CAAC,IAAI,CAAC;EAKxC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The session: resolved once server-side, hydrated with the page, read
|
|
3
|
+
* here as reactive state. refresh() re-reads it after a client-side
|
|
4
|
+
* auth change (login, logout) — no page reload, no hand-rolled /api/me.
|
|
5
|
+
*
|
|
6
|
+
* `session` is the whole view (extensible context); `user` is its
|
|
7
|
+
* everyday projection.
|
|
8
|
+
*/
|
|
9
|
+
import { useState, useRequestFetch } from '#imports';
|
|
10
|
+
import { computed } from 'vue';
|
|
11
|
+
export function useCurrentUser() {
|
|
12
|
+
const session = useState('fougere:session', () => ({ user: null }));
|
|
13
|
+
const fetcher = useRequestFetch();
|
|
14
|
+
const user = computed(() => (session.value.user ?? null));
|
|
15
|
+
const loggedIn = computed(() => session.value.user != null);
|
|
16
|
+
async function refresh() {
|
|
17
|
+
session.value = await fetcher('/_fougere/session');
|
|
18
|
+
}
|
|
19
|
+
return { session, user, loggedIn, refresh };
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=useCurrentUser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCurrentUser.js","sourceRoot":"","sources":["../../../src/runtime/composables/useCurrentUser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAG/B,MAAM,UAAU,cAAc;IAC5B,MAAM,OAAO,GAAG,QAAQ,CAAc,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAElC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAiB,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IAE5D,KAAK,UAAU,OAAO;QACpB,OAAO,CAAC,KAAK,GAAG,MAAM,OAAO,CAAc,mBAAmB,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type FormEntity, type FormField } from '@fougere/app/client';
|
|
2
|
+
export interface FormOptions {
|
|
3
|
+
/** Command the submit rides. Default: 'create'. */
|
|
4
|
+
op?: string;
|
|
5
|
+
/** Initial values (edit mode: the loaded entity). */
|
|
6
|
+
initial?: Record<string, unknown>;
|
|
7
|
+
/** Call params designating the target (edit mode: { id }). */
|
|
8
|
+
params?: Record<string, string>;
|
|
9
|
+
}
|
|
10
|
+
export declare function useFormFor<T = Record<string, unknown>>(entity: FormEntity, options?: FormOptions): {
|
|
11
|
+
fields: FormField[];
|
|
12
|
+
/**
|
|
13
|
+
* The same fields, keyed by name — a form that lays its inputs out by hand binds
|
|
14
|
+
* one at a time (`v-bind="fieldsByName.email.attrs"`), and still states no rule of
|
|
15
|
+
* its own. Without it, a page retypes `type="email"` next to a card that says
|
|
16
|
+
* `format: 'email'`, and the browser enforces the page rather than the declaration.
|
|
17
|
+
*/
|
|
18
|
+
fieldsByName: Record<string, FormField>;
|
|
19
|
+
values: Record<string, unknown>;
|
|
20
|
+
errors: Record<string, string>;
|
|
21
|
+
submit: () => Promise<T | null>;
|
|
22
|
+
loading: import("vue").Ref<boolean, boolean>;
|
|
23
|
+
/** Non-validation failure of the last submit (unreachable host, conflict…). */
|
|
24
|
+
error: import("vue").Ref<import("@fougere/core/contract").FougereError | null, import("@fougere/core/contract").FougereError | null>;
|
|
25
|
+
valid: import("vue").ComputedRef<boolean>;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=useFormFor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormFor.d.ts","sourceRoot":"","sources":["../../../src/runtime/composables/useFormFor.ts"],"names":[],"mappings":"AAaA,OAAO,EAA0C,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE9G,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,wBAAgB,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,WAAgB;;IAgDjG;;;;;OAKG;kBACiE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;;;kBAtBtE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;;IA2BxC,+EAA+E;;;EAIlF"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The form contract — state, validation, submission, error mapping.
|
|
3
|
+
* Never a widget: the page owns the rendering, this owns the mechanics.
|
|
4
|
+
*
|
|
5
|
+
* The cycle composes the other primitives: fields from the io axes,
|
|
6
|
+
* local pre-judgment with the same rules the handler enforces (one
|
|
7
|
+
* declaration, both sides), submission through the command (so the
|
|
8
|
+
* entity link revalidates mounted queries), and per-field errors in
|
|
9
|
+
* the same `{ path, message }` shape whoever judged.
|
|
10
|
+
*/
|
|
11
|
+
import { reactive, computed } from 'vue';
|
|
12
|
+
import { lowerFirst, validationErrorsOf } from '@fougere/core/contract';
|
|
13
|
+
import { useCommand } from './useFougereData.js';
|
|
14
|
+
import { formFieldsOf, payloadOf, errorsByField } from '@fougere/app/client';
|
|
15
|
+
export function useFormFor(entity, options = {}) {
|
|
16
|
+
const entityKey = lowerFirst(entity.name);
|
|
17
|
+
const fields = formFieldsOf(entity, entityKey);
|
|
18
|
+
// `initial` wins over the declared default: editing a row shows the row, including a
|
|
19
|
+
// value the author deliberately changed away from that default. On a create form
|
|
20
|
+
// there is no `initial`, so the field opens on what is about to be written — the
|
|
21
|
+
// schema's own literal, shown rather than guessed by the page.
|
|
22
|
+
const values = reactive(Object.fromEntries(fields.map((f) => [f.name, options.initial?.[f.name] ?? f.default])));
|
|
23
|
+
const errors = reactive({});
|
|
24
|
+
const command = useCommand(entity, options.op ?? 'create');
|
|
25
|
+
function clearErrors() {
|
|
26
|
+
for (const key of Object.keys(errors))
|
|
27
|
+
delete errors[key];
|
|
28
|
+
}
|
|
29
|
+
/** Local pre-judgment — same rules as the handler, saves a lost round-trip. */
|
|
30
|
+
function judge() {
|
|
31
|
+
clearErrors();
|
|
32
|
+
const result = entity.validate(payloadOf(values));
|
|
33
|
+
if (result.success)
|
|
34
|
+
return true;
|
|
35
|
+
Object.assign(errors, errorsByField(result.errors));
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Judge locally, then send through the command. Returns the created/updated
|
|
40
|
+
* value, or null when a judge (either side) rejected — the errors land per
|
|
41
|
+
* field either way, the form never knows who judged.
|
|
42
|
+
*/
|
|
43
|
+
async function submit() {
|
|
44
|
+
if (!judge())
|
|
45
|
+
return null;
|
|
46
|
+
try {
|
|
47
|
+
return await command.execute({ params: options.params, body: payloadOf(values) });
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
const refusals = validationErrorsOf(err);
|
|
51
|
+
if (refusals) {
|
|
52
|
+
Object.assign(errors, errorsByField(refusals));
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
throw err;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
fields,
|
|
60
|
+
/**
|
|
61
|
+
* The same fields, keyed by name — a form that lays its inputs out by hand binds
|
|
62
|
+
* one at a time (`v-bind="fieldsByName.email.attrs"`), and still states no rule of
|
|
63
|
+
* its own. Without it, a page retypes `type="email"` next to a card that says
|
|
64
|
+
* `format: 'email'`, and the browser enforces the page rather than the declaration.
|
|
65
|
+
*/
|
|
66
|
+
fieldsByName: Object.fromEntries(fields.map((f) => [f.name, f])),
|
|
67
|
+
values,
|
|
68
|
+
errors,
|
|
69
|
+
submit,
|
|
70
|
+
loading: command.loading,
|
|
71
|
+
/** Non-validation failure of the last submit (unreachable host, conflict…). */
|
|
72
|
+
error: command.error,
|
|
73
|
+
valid: computed(() => Object.keys(errors).length === 0),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=useFormFor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormFor.js","sourceRoot":"","sources":["../../../src/runtime/composables/useFormFor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type MaybeRefOrGetter, type Ref } from 'vue';
|
|
2
|
+
import type { FougereError } from '@fougere/core/contract';
|
|
3
|
+
import { type CallInput, type EntityClass } from '@fougere/app/client';
|
|
4
|
+
export type { CallInput };
|
|
5
|
+
export declare function useQuery<T = Record<string, unknown>>(entity: EntityClass, op: string, input?: MaybeRefOrGetter<CallInput | undefined>, opts?: {
|
|
6
|
+
immediate?: boolean;
|
|
7
|
+
}): Promise<{
|
|
8
|
+
data: Ref<T | null>;
|
|
9
|
+
items: import("vue").ComputedRef<T[]>;
|
|
10
|
+
total: import("vue").ComputedRef<number | undefined>;
|
|
11
|
+
hasMore: import("vue").ComputedRef<boolean | undefined>;
|
|
12
|
+
loading: Ref<boolean, boolean>;
|
|
13
|
+
error: Ref<import("#imports").NuxtError<unknown> | undefined, import("#imports").NuxtError<unknown> | undefined>;
|
|
14
|
+
refresh: () => Promise<void>;
|
|
15
|
+
}>;
|
|
16
|
+
export declare function useCommand<T = unknown>(entity: EntityClass, op: string): {
|
|
17
|
+
execute: (input?: CallInput) => Promise<T>;
|
|
18
|
+
loading: Ref<boolean, boolean>;
|
|
19
|
+
error: Ref<FougereError | null, FougereError | null>;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=useFougereData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFougereData.d.ts","sourceRoot":"","sources":["../../../src/runtime/composables/useFougereData.ts"],"names":[],"mappings":"AAgBA,OAAO,EAA0C,KAAK,gBAAgB,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAC9F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAWL,KAAK,SAAS,EACd,KAAK,WAAW,EAEjB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B,wBAAsB,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxD,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE,gBAAgB,CAAC,SAAS,GAAG,SAAS,CAAC,EAC/C,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE;UA0Bd,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;;;;;;aAQP,MAAM,OAAO,CAAC,IAAI,CAAC;GAE1C;AAED,wBAAgB,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM;sBAOtC,SAAS,KAAG,OAAO,CAAC,CAAC,CAAC;;;EAkBtD"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The couple — useQuery (reads) and useCommand (writes), the two dual gestures of
|
|
3
|
+
* a page talking to a Frond, in Vue.
|
|
4
|
+
*
|
|
5
|
+
* What the gestures ARE lives in `@fougere/app/client`: designation is class +
|
|
6
|
+
* verb, the key derives from designation plus input, and a successful command on
|
|
7
|
+
* an entity revalidates every mounted query on that entity. What lives here is
|
|
8
|
+
* Vue — `useAsyncData` for the read, refs for the pending flags, `onScopeDispose`
|
|
9
|
+
* for unregistration. The React adapter states the same three facts against its
|
|
10
|
+
* own primitives, and neither restates the rules.
|
|
11
|
+
*
|
|
12
|
+
* Both gestures ride the call envelope: the browser POSTs JSON-RPC to
|
|
13
|
+
* /_fougere/call; during SSR Nuxt collapses the same call to an in-process fetch
|
|
14
|
+
* (no network, no port).
|
|
15
|
+
*/
|
|
16
|
+
import { useAsyncData, useRequestFetch, refreshNuxtData } from '#imports';
|
|
17
|
+
import { ref, computed, toValue, onScopeDispose } from 'vue';
|
|
18
|
+
import { callOf, entityKeyOf, invocationOf, queryKeyOf, sendCall, trackQuery, mountedKeys, itemsOf, pageOf, asFougereError, } from '@fougere/app/client';
|
|
19
|
+
export async function useQuery(entity, op, input, opts) {
|
|
20
|
+
const entityKey = entityKeyOf(entity);
|
|
21
|
+
const call = callOf(entity, op);
|
|
22
|
+
const key = queryKeyOf(entityKey, op, toValue(input));
|
|
23
|
+
const fetcher = useRequestFetch();
|
|
24
|
+
// Register before any await — the link and scope cleanup need the setup scope.
|
|
25
|
+
if (import.meta.client) {
|
|
26
|
+
onScopeDispose(trackQuery(entityKey, key));
|
|
27
|
+
}
|
|
28
|
+
const { data, pending, error, refresh } = await useAsyncData(key, () => sendCall(fetcher, call, invocationOf(toValue(input))), {
|
|
29
|
+
...(input === undefined ? {} : { watch: [() => toValue(input)] }),
|
|
30
|
+
...(opts?.immediate === false ? { immediate: false } : {}),
|
|
31
|
+
});
|
|
32
|
+
const items = computed(() => itemsOf(data.value));
|
|
33
|
+
const total = computed(() => pageOf(data.value).total);
|
|
34
|
+
const hasMore = computed(() => pageOf(data.value).hasMore);
|
|
35
|
+
return {
|
|
36
|
+
data: data,
|
|
37
|
+
items,
|
|
38
|
+
total,
|
|
39
|
+
hasMore,
|
|
40
|
+
loading: pending,
|
|
41
|
+
error,
|
|
42
|
+
// Nuxt does not export AsyncDataExecuteOptions, so the inferred signature cannot
|
|
43
|
+
// be named from outside; callers pass nothing.
|
|
44
|
+
refresh: refresh,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function useCommand(entity, op) {
|
|
48
|
+
const entityKey = entityKeyOf(entity);
|
|
49
|
+
const call = callOf(entity, op);
|
|
50
|
+
const fetcher = useRequestFetch();
|
|
51
|
+
const loading = ref(false);
|
|
52
|
+
const error = ref(null);
|
|
53
|
+
async function execute(input) {
|
|
54
|
+
loading.value = true;
|
|
55
|
+
error.value = null;
|
|
56
|
+
try {
|
|
57
|
+
const result = (await sendCall(fetcher, call, invocationOf(input)));
|
|
58
|
+
// The link: same entity designated on both sides → revalidate its queries.
|
|
59
|
+
const keys = mountedKeys(entityKey);
|
|
60
|
+
if (keys.length)
|
|
61
|
+
await refreshNuxtData(keys);
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
error.value = asFougereError(err, entityKey, op);
|
|
66
|
+
throw error.value;
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
loading.value = false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return { execute, loading, error };
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=useFougereData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFougereData.js","sourceRoot":"","sources":["../../../src/runtime/composables/useFougereData.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.server.d.ts","sourceRoot":"","sources":["../../../src/runtime/plugins/session.server.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session hydration — server half of useCurrentUser. The auth middleware
|
|
3
|
+
* already resolved the user onto event.context; this plugin copies the
|
|
4
|
+
* session view into state so it rides the payload to the client. The
|
|
5
|
+
* page arrives already knowing its user — no round-trip.
|
|
6
|
+
*/
|
|
7
|
+
import { defineNuxtPlugin, useRequestEvent, useState } from '#imports';
|
|
8
|
+
import { sessionViewOf } from '@fougere/app/client';
|
|
9
|
+
export default defineNuxtPlugin(() => {
|
|
10
|
+
const event = useRequestEvent();
|
|
11
|
+
useState('fougere:session', () => sessionViewOf((event?.context ?? {})));
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=session.server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.server.js","sourceRoot":"","sources":["../../../src/runtime/plugins/session.server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,aAAa,EAAoB,MAAM,qBAAqB,CAAC;AAEtE,eAAe,gBAAgB,CAAC,GAAG,EAAE;IACnC,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,QAAQ,CAAc,iBAAiB,EAAE,GAAG,EAAE,CAC5C,aAAa,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAA4B,CAAC,CACjE,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../../../../src/runtime/server/api/crud.ts"],"names":[],"mappings":""}
|