@fougere/app 0.2.0-alpha.1 → 0.2.0-alpha.2
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/boot.d.ts +3 -3
- package/dist/boot.d.ts.map +1 -1
- package/dist/boot.js +56 -4
- package/dist/boot.js.map +1 -1
- package/dist/form.d.ts +10 -36
- package/dist/form.d.ts.map +1 -1
- package/dist/form.js +25 -16
- package/dist/form.js.map +1 -1
- package/dist/graphql.d.ts +1 -1
- package/dist/graphql.js +2 -2
- package/dist/graphql.js.map +1 -1
- package/dist/rest.js +1 -1
- package/dist/rest.js.map +1 -1
- package/package.json +11 -11
package/dist/boot.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { App, EntityOrm } from '@fougere/core';
|
|
2
|
-
import { type
|
|
2
|
+
import { type SchemaView } from '@fougere/schema';
|
|
3
3
|
export interface FougereServerConfig {
|
|
4
4
|
/** Storage handle. Forwarded to the auth provider via AuthContext.db. */
|
|
5
5
|
db?: unknown;
|
|
6
6
|
/** Per-entity ORM factory. */
|
|
7
|
-
ormFactory?: (entity:
|
|
7
|
+
ormFactory?: (entity: SchemaView, name: string) => EntityOrm;
|
|
8
8
|
/** Called after app is created. Use for migrations, seeding, etc. */
|
|
9
9
|
afterBoot?: (app: App) => void | Promise<void>;
|
|
10
10
|
/**
|
|
@@ -31,5 +31,5 @@ export declare function useFougereApp(): Promise<App>;
|
|
|
31
31
|
*
|
|
32
32
|
* It reads the axes now, through the one realization every storage shares.
|
|
33
33
|
*/
|
|
34
|
-
export declare function createMemoryOrm(entity:
|
|
34
|
+
export declare function createMemoryOrm(entity: SchemaView, name: string): EntityOrm;
|
|
35
35
|
//# sourceMappingURL=boot.d.ts.map
|
package/dist/boot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAA4B,MAAM,eAAe,CAAC;AAC9E,OAAO,EAA4B,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI5E,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,8BAA8B;IAC9B,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;IAC7D,qEAAqE;IACrE,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AASD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,QAG3D;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,CAK5C;AAiGD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAA4B,MAAM,eAAe,CAAC;AAC9E,OAAO,EAA4B,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI5E,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,8BAA8B;IAC9B,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;IAC7D,qEAAqE;IACrE,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AASD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,QAG3D;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,CAK5C;AAiGD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CA+G3E"}
|
package/dist/boot.js
CHANGED
|
@@ -58,14 +58,14 @@ async function boot() {
|
|
|
58
58
|
const root = process.env.FOUGERE_ROOT ?? configRoot;
|
|
59
59
|
const fileConfig = await loadCascadedConfig(root, configRoot);
|
|
60
60
|
// Auto-resolve the data layer from config.db when the user didn't provide a
|
|
61
|
-
// custom one via configureFougere. The resolution itself lives in @fougere/
|
|
61
|
+
// custom one via configureFougere. The resolution itself lives in @fougere/defaults
|
|
62
62
|
// — this host must not know which storage package backs `db:`.
|
|
63
63
|
let db = _config.db;
|
|
64
64
|
let ormFactory = _config.ormFactory;
|
|
65
65
|
let migrateSchema;
|
|
66
66
|
if (!ormFactory) {
|
|
67
|
-
const { resolveStorage } = await import('@fougere/
|
|
68
|
-
const storage = resolveStorage(fileConfig.db);
|
|
67
|
+
const { resolveStorage } = await import('@fougere/defaults');
|
|
68
|
+
const storage = resolveStorage(fileConfig.db, fileConfig.sources);
|
|
69
69
|
if (storage.ormFactory) {
|
|
70
70
|
log.debug('auto-resolving storage from config.db');
|
|
71
71
|
db = storage.db;
|
|
@@ -140,7 +140,10 @@ export function createMemoryOrm(entity, name) {
|
|
|
140
140
|
// `1` does not answer `'1'`. SQL never had the question; here the divergence was
|
|
141
141
|
// silent and only on this storage.
|
|
142
142
|
const keyOf = (value) => String(value);
|
|
143
|
-
|
|
143
|
+
// Same contract as SQL: a criterion may name a SET, and an empty set matches nothing.
|
|
144
|
+
const matches = (row, criteria) => Object.entries(criteria).every(([key, value]) => Array.isArray(value)
|
|
145
|
+
? value.some((v) => Object.is(row[key], v))
|
|
146
|
+
: Object.is(row[key], value));
|
|
144
147
|
return {
|
|
145
148
|
client: store,
|
|
146
149
|
async list(options) {
|
|
@@ -173,6 +176,55 @@ export function createMemoryOrm(entity, name) {
|
|
|
173
176
|
async findAllBy(criteria) {
|
|
174
177
|
return [...store.values()].filter((row) => matches(row, criteria));
|
|
175
178
|
},
|
|
179
|
+
// Same contract as SQL: a map keyed by the primary key, a miss being an absent key.
|
|
180
|
+
async findByKeys(ids) {
|
|
181
|
+
const found = new Map();
|
|
182
|
+
for (const id of ids) {
|
|
183
|
+
const row = store.get(keyOf(id));
|
|
184
|
+
if (row)
|
|
185
|
+
found.set(String(id), row);
|
|
186
|
+
}
|
|
187
|
+
return found;
|
|
188
|
+
},
|
|
189
|
+
// The dual, same contract as SQL: grouped by the value read off the ROW.
|
|
190
|
+
async findAllByKeys(field, keys) {
|
|
191
|
+
const grouped = new Map();
|
|
192
|
+
if (keys.length === 0)
|
|
193
|
+
return grouped;
|
|
194
|
+
const wanted = new Set(keys.map(String));
|
|
195
|
+
for (const row of store.values()) {
|
|
196
|
+
const key = String(row[field]);
|
|
197
|
+
if (!wanted.has(key))
|
|
198
|
+
continue;
|
|
199
|
+
const held = grouped.get(key);
|
|
200
|
+
if (held)
|
|
201
|
+
held.push(row);
|
|
202
|
+
else
|
|
203
|
+
grouped.set(key, [row]);
|
|
204
|
+
}
|
|
205
|
+
return grouped;
|
|
206
|
+
},
|
|
207
|
+
// Same contract as SQL: the key and the creation stamps survive an overwrite.
|
|
208
|
+
async upsert(input) {
|
|
209
|
+
const record = applyCreate(fields, applyUpdate(fields, input));
|
|
210
|
+
const id = record[pk];
|
|
211
|
+
if (id === undefined)
|
|
212
|
+
throw new Error(`${name}.upsert(): no \`${pk}\` — an upsert needs the key it writes at.`);
|
|
213
|
+
const held = store.get(keyOf(id));
|
|
214
|
+
if (held) {
|
|
215
|
+
for (const [key, field] of Object.entries(fields)) {
|
|
216
|
+
if (key === pk || (field.lifecycle?.create === 'now' && field.lifecycle?.update !== 'now'))
|
|
217
|
+
record[key] = held[key];
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
store.set(keyOf(id), record);
|
|
221
|
+
return record;
|
|
222
|
+
},
|
|
223
|
+
async upsertAll(inputs) {
|
|
224
|
+
for (const input of inputs)
|
|
225
|
+
await this.upsert(input);
|
|
226
|
+
return inputs.length;
|
|
227
|
+
},
|
|
176
228
|
async create(input) {
|
|
177
229
|
const record = applyCreate(fields, input);
|
|
178
230
|
const id = record[pk];
|
package/dist/boot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boot.js","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAmB5E,oDAAoD;AAEpD,IAAI,OAAO,GAAwB,EAAE,CAAC;AACtC,IAAI,WAAW,GAAwB,IAAI,CAAC;AAE5C,oDAAoD;AAEpD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA2B;IAC1D,OAAO,GAAG,MAAM,CAAC;IACjB,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,IAAI,EAAE,CAAC;IACvB,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,oDAAoD;AAEpD,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAEnD,GAAG,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;IAE/C,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,wFAAwF;IACxF,qEAAqE;IACrE,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE;QACvC,cAAc,EAAE,IAAI;QACpB,KAAK,EAAE,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;KACrE,CAAC,CAAC;IACH,eAAe,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAqC,CAAC,CAAC;IAEzF,4EAA4E;IAC5E,2EAA2E;IAC3E,6EAA6E;IAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,UAAU,CAAC;IACpD,MAAM,UAAU,GAAkB,MAAM,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAE7E,4EAA4E;IAC5E,
|
|
1
|
+
{"version":3,"file":"boot.js","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"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"}
|
package/dist/form.d.ts
CHANGED
|
@@ -1,38 +1,13 @@
|
|
|
1
|
-
import type { ValidationError } from '@fougere/schema';
|
|
2
|
-
/**
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
errors: ValidationError[];
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
interface FieldLike {
|
|
15
|
-
shape?: {
|
|
16
|
-
type?: unknown;
|
|
17
|
-
enum?: readonly unknown[];
|
|
18
|
-
format?: string;
|
|
19
|
-
properties?: unknown;
|
|
20
|
-
minLength?: number;
|
|
21
|
-
maxLength?: number;
|
|
22
|
-
minimum?: number;
|
|
23
|
-
maximum?: number;
|
|
24
|
-
pattern?: string;
|
|
25
|
-
};
|
|
26
|
-
lifecycle?: {
|
|
27
|
-
create?: unknown;
|
|
28
|
-
};
|
|
29
|
-
role?: {
|
|
30
|
-
primary?: boolean;
|
|
31
|
-
relation?: {
|
|
32
|
-
kind: string;
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
}
|
|
1
|
+
import type { SchemaView, ValidationError } from '@fougere/schema';
|
|
2
|
+
/**
|
|
3
|
+
* What an entity class exposes to a form — the schema statics it already has.
|
|
4
|
+
*
|
|
5
|
+
* `SchemaView` and the real `Field`, not a local re-description of the axes: this file
|
|
6
|
+
* used to declare its own `FieldLike` with `shape?` optional, so it kept judging by a
|
|
7
|
+
* looser contract than the schema's own and would never have seen `shape` become
|
|
8
|
+
* required.
|
|
9
|
+
*/
|
|
10
|
+
export type FormEntity = SchemaView;
|
|
36
11
|
export interface FormField {
|
|
37
12
|
name: string;
|
|
38
13
|
/** Rendering hint derived from the shape — the page maps it to widgets. */
|
|
@@ -98,5 +73,4 @@ export declare function formFieldsOf(entity: FormEntity, entityKey: string): For
|
|
|
98
73
|
export declare function payloadOf(values: Record<string, unknown>): Record<string, unknown>;
|
|
99
74
|
/** Index judge errors by field — local judge and remote judge share this shape. */
|
|
100
75
|
export declare function errorsByField(errors: ValidationError[]): Record<string, string>;
|
|
101
|
-
export {};
|
|
102
76
|
//# sourceMappingURL=form.d.ts.map
|
package/dist/form.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAS,UAAU,EAAE,eAAe,EAAoB,MAAM,iBAAiB,CAAC;AAE5F;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC;AAiBpC,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC7E,QAAQ,EAAE,OAAO,CAAC;IAClB,qFAAqF;IACrF,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;QAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAqDD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,CAmB/E;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIlF;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO/E"}
|
package/dist/form.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* from the entity's field axes. No Vue, no Nuxt: testable headless,
|
|
4
4
|
* usable by any renderer (the page owns the widgets).
|
|
5
5
|
*/
|
|
6
|
-
import { inputFields } from '@fougere/schema';
|
|
6
|
+
import { Anatomy, inputFields } from '@fougere/schema';
|
|
7
7
|
/**
|
|
8
8
|
* The literal a field is born with, when it declares one.
|
|
9
9
|
*
|
|
@@ -31,31 +31,40 @@ const CONTROL_BY_FORMAT = {
|
|
|
31
31
|
uri: 'url',
|
|
32
32
|
};
|
|
33
33
|
function controlOf(field) {
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
// Through `anatomy`, never `shape.type` directly: the nullable form is the `[T,'null']`
|
|
35
|
+
// union, which a direct comparison misses in silence. It is also what narrows the shape
|
|
36
|
+
// union, so `enum` and `format` are only reachable on the branches that carry them.
|
|
37
|
+
const base = Anatomy.of(field.shape).base;
|
|
38
|
+
if (base?.type === 'string' && base.enum?.length)
|
|
36
39
|
return 'select';
|
|
37
|
-
|
|
38
|
-
if (base === 'number' || base === 'integer')
|
|
40
|
+
if (base?.type === 'number' || base?.type === 'integer')
|
|
39
41
|
return 'number';
|
|
40
|
-
if (base === 'boolean')
|
|
42
|
+
if (base?.type === 'boolean')
|
|
41
43
|
return 'boolean';
|
|
42
|
-
if (base === 'string' &&
|
|
43
|
-
return CONTROL_BY_FORMAT[
|
|
44
|
+
if (base?.type === 'string' && base.format)
|
|
45
|
+
return CONTROL_BY_FORMAT[base.format] ?? 'text';
|
|
44
46
|
return 'text';
|
|
45
47
|
}
|
|
48
|
+
/** A closed set's members, when the shape declares one — `oneOf('draft','live')`. */
|
|
49
|
+
function enumOf(field) {
|
|
50
|
+
const base = Anatomy.of(field.shape).base;
|
|
51
|
+
return base?.type === 'string' ? base.enum : undefined;
|
|
52
|
+
}
|
|
46
53
|
/** Controls that ARE an `<input type>` — see the two absences on {@link FormField.attrs}. */
|
|
47
54
|
const INPUT_TYPES = new Set(['text', 'email', 'url', 'number']);
|
|
48
55
|
/** The shape's bounds, under the names a browser already enforces. */
|
|
49
56
|
function attrsOf(field, control, required) {
|
|
50
|
-
const
|
|
57
|
+
const base = Anatomy.of(field.shape).base;
|
|
58
|
+
const text = base?.type === 'string' ? base : undefined;
|
|
59
|
+
const numeric = base?.type === 'number' || base?.type === 'integer' ? base : undefined;
|
|
51
60
|
const attrs = {
|
|
52
61
|
type: INPUT_TYPES.has(control) ? control : undefined,
|
|
53
62
|
required: (required && control !== 'boolean') || undefined,
|
|
54
|
-
minlength:
|
|
55
|
-
maxlength:
|
|
56
|
-
min:
|
|
57
|
-
max:
|
|
58
|
-
pattern:
|
|
63
|
+
minlength: text?.minLength,
|
|
64
|
+
maxlength: text?.maxLength,
|
|
65
|
+
min: numeric?.minimum,
|
|
66
|
+
max: numeric?.maximum,
|
|
67
|
+
pattern: text?.pattern,
|
|
59
68
|
};
|
|
60
69
|
return Object.fromEntries(Object.entries(attrs).filter(([, v]) => v !== undefined));
|
|
61
70
|
}
|
|
@@ -76,8 +85,8 @@ export function formFieldsOf(entity, entityKey) {
|
|
|
76
85
|
required,
|
|
77
86
|
labelKey: `${entityKey}.${name}`,
|
|
78
87
|
label: name.charAt(0).toUpperCase() + name.slice(1),
|
|
79
|
-
...(Array.isArray(f
|
|
80
|
-
? { options: f.
|
|
88
|
+
...(Array.isArray(enumOf(f))
|
|
89
|
+
? { options: enumOf(f).filter((value) => typeof value === 'string') }
|
|
81
90
|
: {}),
|
|
82
91
|
...(Object.keys(attrs).length ? { attrs } : {}),
|
|
83
92
|
...(defaultOf(f) !== undefined ? { default: defaultOf(f) } : {}),
|
package/dist/form.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.js","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"form.js","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"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"}
|
package/dist/graphql.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* there is no decision in them — so the app declaring the adapter is enough.
|
|
9
9
|
*
|
|
10
10
|
* The packages are imported LAZILY, and that is the same shape `db: 'sqlite'` uses
|
|
11
|
-
* (`resolveStorage` pulls `@fougere/
|
|
11
|
+
* (`resolveStorage` pulls `@fougere/adapter-sql` only when a database is declared).
|
|
12
12
|
* `graphql` and `@pothos/core` are heavy and most apps serve none, so a host must not
|
|
13
13
|
* carry them to find out. Declaring the adapter without installing them is refused by
|
|
14
14
|
* name, the way an unresolvable dialect is.
|
package/dist/graphql.js
CHANGED
|
@@ -11,11 +11,11 @@ async function schemaFor(app, surface) {
|
|
|
11
11
|
let registerAll;
|
|
12
12
|
try {
|
|
13
13
|
({ default: SchemaBuilder } = await import('@pothos/core'));
|
|
14
|
-
({ registerAll } = await import('@fougere/
|
|
14
|
+
({ registerAll } = await import('@fougere/adapter-graphql'));
|
|
15
15
|
}
|
|
16
16
|
catch (cause) {
|
|
17
17
|
throw new Error("adapters: { graphql: true } is declared, but the packages that serve it are not " +
|
|
18
|
-
"installed. Add `@fougere/
|
|
18
|
+
"installed. Add `@fougere/adapter-graphql` and `@pothos/core` — they are not " +
|
|
19
19
|
'dependencies of the host, because an app that serves no GraphQL should not carry ' +
|
|
20
20
|
'a schema builder to find that out.', { cause });
|
|
21
21
|
}
|
package/dist/graphql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":"AA4BA,kFAAkF;AAClF,MAAM,OAAO,GAAG,IAAI,OAAO,EAA6B,CAAC;AAEzD,KAAK,UAAU,SAAS,CAAC,GAAQ,EAAE,OAAgB;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAmB,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAEzB,MAAM,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,IAAI,aAAkB,CAAC;IACvB,IAAI,WAAgB,CAAC;IACrB,IAAI,CAAC;QACH,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;QAC5D,CAAC,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":"AA4BA,kFAAkF;AAClF,MAAM,OAAO,GAAG,IAAI,OAAO,EAA6B,CAAC;AAEzD,KAAK,UAAU,SAAS,CAAC,GAAQ,EAAE,OAAgB;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAmB,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAEzB,MAAM,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,IAAI,aAAkB,CAAC;IACvB,IAAI,WAAgB,CAAC;IACrB,IAAI,CAAC;QACH,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;QAC5D,CAAC,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,kFAAkF;YAClF,8EAA8E;YAC9E,mFAAmF;YACnF,oCAAoC,EACpC,EAAE,KAAK,EAAE,CACV,CAAC;IACJ,CAAC;IAED,iFAAiF;IACjF,oFAAoF;IACpF,wDAAwD;IACxD,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACtB,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACzB,WAAW,CAAC,OAAO,EAAE,GAAY,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEtE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAClC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACxB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAQ,EAAE,OAAuB;IAClE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAEpD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,CAAC;IAC5E,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAC3B,MAAM,EAAE,CAAC,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAU;QACxD,MAAM,EAAE,OAAO,CAAC,KAAK;QACrB,cAAc,EAAE,OAAO,CAAC,SAAS;QACjC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,oFAAoF;QACpF,YAAY,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;KACvC,CAAC,CAAC;IAEH,qFAAqF;IACrF,2DAA2D;IAC3D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACnD,CAAC"}
|
package/dist/rest.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* second REST projection that answered differently from `schema-rest` on all three counts
|
|
8
8
|
* (verb, path, exposure).
|
|
9
9
|
*/
|
|
10
|
-
import { generateRoutes } from '@fougere/
|
|
10
|
+
import { generateRoutes } from '@fougere/adapter-rest';
|
|
11
11
|
// Keyed on the app, which `useFougereApp` memoizes — the table derives from the boot, so
|
|
12
12
|
// it changes exactly when the app does.
|
|
13
13
|
const tables = new WeakMap();
|
package/dist/rest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../src/rest.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.2.0-alpha.
|
|
3
|
+
"version": "0.2.0-alpha.2",
|
|
4
4
|
"description": "The host-independent half of a Fougere app: boot, call envelope, REST table, form contract.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"fougere",
|
|
@@ -45,30 +45,30 @@
|
|
|
45
45
|
],
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"jiti": "^2.6.1",
|
|
48
|
-
"@fougere/
|
|
49
|
-
"@fougere/
|
|
50
|
-
"@fougere/
|
|
51
|
-
"@fougere/http": "0.2.0-alpha.
|
|
52
|
-
"@fougere/
|
|
53
|
-
"@fougere/
|
|
54
|
-
"@fougere/
|
|
48
|
+
"@fougere/core": "0.2.0-alpha.2",
|
|
49
|
+
"@fougere/schema": "0.2.0-alpha.2",
|
|
50
|
+
"@fougere/defaults": "0.2.0-alpha.2",
|
|
51
|
+
"@fougere/transport-http": "0.2.0-alpha.2",
|
|
52
|
+
"@fougere/adapter-rest": "0.2.0-alpha.2",
|
|
53
|
+
"@fougere/container": "0.2.0-alpha.2",
|
|
54
|
+
"@fougere/http": "0.2.0-alpha.2"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"vitest": "^4.1.0",
|
|
58
58
|
"@pothos/core": "^4.12.0",
|
|
59
59
|
"graphql": "^16.13.1",
|
|
60
|
-
"@fougere/
|
|
60
|
+
"@fougere/adapter-graphql": "0.2.0-alpha.2"
|
|
61
61
|
},
|
|
62
62
|
"publishConfig": {
|
|
63
63
|
"access": "public"
|
|
64
64
|
},
|
|
65
65
|
"peerDependencies": {
|
|
66
|
-
"@fougere/
|
|
66
|
+
"@fougere/adapter-graphql": "^0.2.0-alpha.0",
|
|
67
67
|
"@pothos/core": "^4.0.0",
|
|
68
68
|
"graphql": "^16.0.0"
|
|
69
69
|
},
|
|
70
70
|
"peerDependenciesMeta": {
|
|
71
|
-
"@fougere/
|
|
71
|
+
"@fougere/adapter-graphql": {
|
|
72
72
|
"optional": true
|
|
73
73
|
},
|
|
74
74
|
"@pothos/core": {
|