@fougere/app 0.16.8-alpha.0 → 0.17.1-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/Choices.js +1 -1
- package/dist/Choices.js.map +1 -1
- package/dist/Designation.d.ts.map +1 -1
- package/dist/Designation.js +11 -9
- package/dist/Designation.js.map +1 -1
- package/dist/FormOptions.d.ts +12 -0
- package/dist/FormOptions.d.ts.map +1 -0
- package/dist/FormOptions.js +2 -0
- package/dist/FormOptions.js.map +1 -0
- package/dist/Matchable.d.ts +1 -1
- package/dist/Matchable.d.ts.map +1 -1
- package/dist/Outcome.js +1 -1
- package/dist/Outcome.js.map +1 -1
- package/dist/RouteMatch.js +2 -2
- package/dist/RouteMatch.js.map +1 -1
- package/dist/client/index.d.ts +1 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js.map +1 -1
- package/package.json +12 -12
- package/src/Choices.ts +1 -1
- package/src/Designation.ts +11 -9
- package/src/FormOptions.ts +12 -0
- package/src/Matchable.ts +1 -1
- package/src/Outcome.ts +1 -1
- package/src/RouteMatch.ts +2 -2
- package/src/client/index.ts +1 -0
package/dist/Choices.js
CHANGED
|
@@ -6,7 +6,7 @@ export class Choices {
|
|
|
6
6
|
/** The first rows of the target, or those whose label contains `text`. */
|
|
7
7
|
static async of(fetcher, reference, text = '') {
|
|
8
8
|
const where = text ? { [reference.label]: { contains: text } } : undefined;
|
|
9
|
-
const answer = await sendCall(fetcher, {
|
|
9
|
+
const answer = await sendCall(fetcher, { address: reference.to, op: 'list' }, invocationOf({ query: { limit: Choices.LIMIT + 1, ...(where ? { where } : {}) } }));
|
|
10
10
|
const rows = itemsOf(answer);
|
|
11
11
|
return {
|
|
12
12
|
choices: rows.slice(0, Choices.LIMIT).map((row) => ({
|
package/dist/Choices.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Choices.js","sourceRoot":"","sources":["../src/Choices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAgBnE,uFAAuF;AACvF,MAAM,OAAO,OAAO;IAClB,4EAA4E;IAC5E,MAAM,CAAU,KAAK,GAAG,EAAE,CAAC;IAE3B,0EAA0E;IAC1E,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAgB,EAAE,SAAwB,EAAE,IAAI,GAAG,EAAE;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,MAAM,MAAM,GAAG,MAAM,QAAQ,CAC3B,OAAO,EACP,EAAE,
|
|
1
|
+
{"version":3,"file":"Choices.js","sourceRoot":"","sources":["../src/Choices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAgBnE,uFAAuF;AACvF,MAAM,OAAO,OAAO;IAClB,4EAA4E;IAC5E,MAAM,CAAU,KAAK,GAAG,EAAE,CAAC;IAE3B,0EAA0E;IAC1E,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAgB,EAAE,SAAwB,EAAE,IAAI,GAAG,EAAE;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,MAAM,MAAM,GAAG,MAAM,QAAQ,CAC3B,OAAO,EACP,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EACrC,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACnF,CAAC;QACF,MAAM,IAAI,GAAG,OAAO,CAA0B,MAAM,CAAC,CAAC;QAEtD,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAClD,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACjC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;aAC1D,CAAC,CAAC;YACH,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK;SAClC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Designation.d.ts","sourceRoot":"","sources":["../src/Designation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAMZ,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,OAAO,SAAS,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAE3G;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAE5E;AAED,mGAAmG;AACnG,wBAAgB,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAI1D;AAED,mDAAmD;AACnD,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC;AAE7E,iFAAiF;AACjF,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAI9C,uDAAuD;AACvD,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAEvD;AAED,wBAAgB,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,CAEtE;AAED,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,iBAAiB,CAEjE;AAED,+BAA+B;AAC/B,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAEnF;
|
|
1
|
+
{"version":3,"file":"Designation.d.ts","sourceRoot":"","sources":["../src/Designation.ts"],"names":[],"mappings":"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"}
|
package/dist/Designation.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FougereError, ErrorCode,
|
|
1
|
+
import { FougereError, ErrorCode, RPC_ADDRESS, assertIdentityCard, decoded, lowerFirst, } from '@fougere/core/contract';
|
|
2
2
|
import { frameCall, unframeResponse } from '@fougere/transport-http/client';
|
|
3
3
|
import { Card } from '@fougere/schema';
|
|
4
4
|
/**
|
|
@@ -34,7 +34,7 @@ export function entityKeyOf(entity) {
|
|
|
34
34
|
return lowerFirst(entity.name);
|
|
35
35
|
}
|
|
36
36
|
export function callOf(designation, op) {
|
|
37
|
-
return {
|
|
37
|
+
return { address: addressOf(designation), op };
|
|
38
38
|
}
|
|
39
39
|
export function invocationOf(input) {
|
|
40
40
|
return { params: {}, query: {}, input: undefined, state: {}, ...input };
|
|
@@ -61,14 +61,16 @@ async function postCall(fetcher, call, invocation, endpoint) {
|
|
|
61
61
|
* An app serving no card decodes nothing, which is what a page had before this existed.
|
|
62
62
|
*/
|
|
63
63
|
const schemas = new Map();
|
|
64
|
-
/** A card read as
|
|
64
|
+
/** A card read as what each operation answers, indexed the way a call names it — `post.list`. */
|
|
65
65
|
function schemasIn(answer, endpoint) {
|
|
66
66
|
const found = new Map();
|
|
67
67
|
const card = assertIdentityCard(answer, `The app at ${endpoint}`);
|
|
68
68
|
for (const frond of card.fronds) {
|
|
69
69
|
for (const facade of frond.facades) {
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
for (const op of facade.ops) {
|
|
71
|
+
if (op.output)
|
|
72
|
+
found.set(`${facade.name}.${op.name}`, Card.fromDescriptor(op.output).toSchema());
|
|
73
|
+
}
|
|
72
74
|
}
|
|
73
75
|
}
|
|
74
76
|
return found;
|
|
@@ -86,7 +88,7 @@ function learn(answer, endpoint) {
|
|
|
86
88
|
function schemasOf(fetcher, endpoint) {
|
|
87
89
|
const asked = schemas.get(endpoint) ?? (async () => {
|
|
88
90
|
try {
|
|
89
|
-
return schemasIn(await postCall(fetcher, {
|
|
91
|
+
return schemasIn(await postCall(fetcher, { address: RPC_ADDRESS, op: 'discover' }, invocationOf(), endpoint), endpoint);
|
|
90
92
|
}
|
|
91
93
|
catch { /* unreachable, or an app that publishes no card */ }
|
|
92
94
|
return new Map();
|
|
@@ -96,12 +98,12 @@ function schemasOf(fetcher, endpoint) {
|
|
|
96
98
|
}
|
|
97
99
|
export async function sendCall(fetcher, call, invocation, endpoint = CALL_ENDPOINT) {
|
|
98
100
|
const answer = await postCall(fetcher, call, invocation, endpoint);
|
|
99
|
-
if (call.
|
|
101
|
+
if (call.address === RPC_ADDRESS) {
|
|
100
102
|
if (call.op === 'discover')
|
|
101
103
|
learn(answer, endpoint);
|
|
102
104
|
return answer;
|
|
103
105
|
}
|
|
104
|
-
return decoded((await schemasOf(fetcher, endpoint)).get(call.
|
|
106
|
+
return decoded((await schemasOf(fetcher, endpoint)).get(`${call.address}.${call.op}`), answer);
|
|
105
107
|
}
|
|
106
108
|
// ── The link ─────────────────────────────────────
|
|
107
109
|
/** Mounted queries per entity — the command side of the link reads this. */
|
|
@@ -160,7 +162,7 @@ export function asFougereError(err, entityKey, op) {
|
|
|
160
162
|
: new FougereError({
|
|
161
163
|
code: ErrorCode.SERVICE_UNAVAILABLE,
|
|
162
164
|
message: err?.message ?? String(err),
|
|
163
|
-
|
|
165
|
+
address: entityKey,
|
|
164
166
|
operation: op,
|
|
165
167
|
cause: err,
|
|
166
168
|
});
|
package/dist/Designation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Designation.js","sourceRoot":"","sources":["../src/Designation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"Designation.js","sourceRoot":"","sources":["../src/Designation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AnyHandler, FacadeName } from '@fougere/core/contract';
|
|
2
|
+
export interface FormOptions {
|
|
3
|
+
/** Command the submit rides. Default: 'create'. */
|
|
4
|
+
op?: string;
|
|
5
|
+
/** The facade the submit goes to. Default: the one named like the entity — `post` for `Post`. */
|
|
6
|
+
to?: FacadeName<AnyHandler, string>;
|
|
7
|
+
/** Initial values (edit mode: the loaded entity). */
|
|
8
|
+
initial?: Record<string, unknown>;
|
|
9
|
+
/** Call params designating the target (edit mode: { id }). */
|
|
10
|
+
params?: Record<string, string>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=FormOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormOptions.d.ts","sourceRoot":"","sources":["../src/FormOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAErE,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,iGAAiG;IACjG,EAAE,CAAC,EAAE,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACpC,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormOptions.js","sourceRoot":"","sources":["../src/FormOptions.ts"],"names":[],"mappings":""}
|
package/dist/Matchable.d.ts
CHANGED
package/dist/Matchable.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Matchable.d.ts","sourceRoot":"","sources":["../src/Matchable.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,
|
|
1
|
+
{"version":3,"file":"Matchable.d.ts","sourceRoot":"","sources":["../src/Matchable.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB"}
|
package/dist/Outcome.js
CHANGED
|
@@ -51,7 +51,7 @@ export async function serveRest(app, request) {
|
|
|
51
51
|
const { route, params } = match;
|
|
52
52
|
let result;
|
|
53
53
|
try {
|
|
54
|
-
result = await invokeOn(app, {
|
|
54
|
+
result = await invokeOn(app, { address: route.address, op: route.operationName }, { params, query: request.query, input: request.body }, undefined, request.state);
|
|
55
55
|
}
|
|
56
56
|
catch (err) {
|
|
57
57
|
const { status, body } = toHttpError(err);
|
package/dist/Outcome.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Outcome.js","sourceRoot":"","sources":["../src/Outcome.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,WAAW,EACX,WAAW,GAIZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAUtD,oDAAoD;AAEpD,iFAAiF;AACjF,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,KAAK,GAAG,qCAAqC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAEpF,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAQ,EAAE,OAAqD;IAC5F,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7D,OAAO,SAAS,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9G,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,aAAa;IAC3B,OAAO,EAAE,OAAO,EAAE,KAAc,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,CAAC;AACrG,CAAC;AAED,oDAAoD;AAEpD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAQ,EAAE,OAAoB;IAC5D,gFAAgF;IAChF,iFAAiF;IACjF,oFAAoF;IACpF,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAEjD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAEjD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAEpC,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;QACxC,OAAO;YACL,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,GAAG;YACX,IAAI,EAAE;gBACJ,OAAO,EAAE,UAAU,MAAM,oBAAoB,OAAO,CAAC,IAAI,UAAU,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC3F,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB;YACD,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC3C,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAChC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,QAAQ,CACrB,GAAG,EACH,EAAE,
|
|
1
|
+
{"version":3,"file":"Outcome.js","sourceRoot":"","sources":["../src/Outcome.ts"],"names":[],"mappings":"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"}
|
package/dist/RouteMatch.js
CHANGED
|
@@ -9,12 +9,12 @@ export function tableOf(app) {
|
|
|
9
9
|
return cached;
|
|
10
10
|
const table = app.fronds.flatMap((frond) => generateRoutes(app, {
|
|
11
11
|
prefix: `/${frond.name}`,
|
|
12
|
-
filter: (
|
|
12
|
+
filter: (_address, frondName) => frondName === frond.name,
|
|
13
13
|
}).map((route) => ({
|
|
14
14
|
method: route.method,
|
|
15
15
|
segments: route.path.split('/').filter(Boolean),
|
|
16
16
|
path: route.path,
|
|
17
|
-
|
|
17
|
+
address: route.address,
|
|
18
18
|
operationName: route.operationName,
|
|
19
19
|
})));
|
|
20
20
|
tables.set(app, table);
|
package/dist/RouteMatch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteMatch.js","sourceRoot":"","sources":["../src/RouteMatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAWvD,yFAAyF;AACzF,wCAAwC;AACxC,MAAM,MAAM,GAAG,IAAI,OAAO,EAAoB,CAAC;AAE/C,4BAA4B;AAC5B,MAAM,UAAU,OAAO,CAAC,GAAQ;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACzC,cAAc,CAAC,GAAG,EAAE;QAClB,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE;QACxB,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"RouteMatch.js","sourceRoot":"","sources":["../src/RouteMatch.ts"],"names":[],"mappings":"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"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export type { Addresses, Answer, AnyHandler, FacadeName, FougereHandlers, Fouger
|
|
|
6
6
|
export { errorsByField, formFieldsOf, payloadOf, tableColumnsOf, type FormEntity } from '../FormEntity.js';
|
|
7
7
|
export { type FormRow, type FormValues, type FormErrors, type FormFieldName } from '../FormRow.js';
|
|
8
8
|
export { type FormField, type FormReference } from '../FormField.js';
|
|
9
|
+
export { type FormOptions } from '../FormOptions.js';
|
|
9
10
|
export { Choices, type Choice, type Offer } from '../Choices.js';
|
|
10
11
|
export { type TableColumn } from '../TableColumn.js';
|
|
11
12
|
export { sessionViewOf, type SessionView } from '../session.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,KAAK,WAAW,EAChB,aAAa,EACb,SAAS,EACT,cAAc,EACd,MAAM,EACN,WAAW,EACX,MAAM,EACN,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,OAAO,EACP,WAAW,EACX,SAAS,EACT,MAAM,EACN,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,GACX,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,SAAS,EACT,MAAM,EACN,UAAU,EACV,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,OAAO,EACP,IAAI,GACL,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC3G,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACnG,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,KAAK,WAAW,EAChB,aAAa,EACb,SAAS,EACT,cAAc,EACd,MAAM,EACN,WAAW,EACX,MAAM,EACN,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,OAAO,EACP,WAAW,EACX,SAAS,EACT,MAAM,EACN,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,GACX,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,SAAS,EACT,MAAM,EACN,UAAU,EACV,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,OAAO,EACP,IAAI,GACL,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC3G,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACnG,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,aAAa,EACb,SAAS,EACT,cAAc,EACd,MAAM,EACN,WAAW,EACX,MAAM,EACN,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,OAAO,EACP,WAAW,EACX,SAAS,EACT,MAAM,EACN,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,GACX,MAAM,mBAAmB,CAAC;AAc3B,+EAA+E;AAC/E,iFAAiF;AACjF,0BAA0B;AAC1B,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAmB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,aAAa,EACb,SAAS,EACT,cAAc,EACd,MAAM,EACN,WAAW,EACX,MAAM,EACN,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,OAAO,EACP,WAAW,EACX,SAAS,EACT,MAAM,EACN,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,GACX,MAAM,mBAAmB,CAAC;AAc3B,+EAA+E;AAC/E,iFAAiF;AACjF,0BAA0B;AAC1B,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAmB,MAAM,kBAAkB,CAAC;AAI3G,OAAO,EAAE,OAAO,EAA2B,MAAM,eAAe,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAoB,MAAM,eAAe,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fougere/app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.1-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",
|
|
@@ -41,26 +41,26 @@
|
|
|
41
41
|
"src"
|
|
42
42
|
],
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@fougere/core": "0.
|
|
45
|
-
"@fougere/defaults": "0.
|
|
46
|
-
"@fougere/schema": "0.
|
|
47
|
-
"@fougere/adapter-rest": "0.
|
|
48
|
-
"@fougere/transport-http": "0.
|
|
44
|
+
"@fougere/core": "0.17.1-alpha.0",
|
|
45
|
+
"@fougere/defaults": "0.17.1-alpha.0",
|
|
46
|
+
"@fougere/schema": "0.17.1-alpha.0",
|
|
47
|
+
"@fougere/adapter-rest": "0.17.1-alpha.0",
|
|
48
|
+
"@fougere/transport-http": "0.17.1-alpha.0",
|
|
49
49
|
"jiti": "^2.6.1",
|
|
50
|
-
"@fougere/http": "0.
|
|
51
|
-
"@fougere/container": "0.
|
|
52
|
-
"@fougere/adapter-memory": "0.
|
|
53
|
-
"@fougere/compiler": "0.
|
|
50
|
+
"@fougere/http": "0.17.1-alpha.0",
|
|
51
|
+
"@fougere/container": "0.17.1-alpha.0",
|
|
52
|
+
"@fougere/adapter-memory": "0.17.1-alpha.0",
|
|
53
|
+
"@fougere/compiler": "0.17.1-alpha.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"vitest": "^4.1.0",
|
|
57
|
-
"@fougere/adapter-graphql": "0.
|
|
57
|
+
"@fougere/adapter-graphql": "0.17.1-alpha.0"
|
|
58
58
|
},
|
|
59
59
|
"publishConfig": {
|
|
60
60
|
"access": "public"
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
63
|
-
"@fougere/adapter-graphql": "^0.
|
|
63
|
+
"@fougere/adapter-graphql": "^0.17.1-alpha.0"
|
|
64
64
|
},
|
|
65
65
|
"peerDependenciesMeta": {
|
|
66
66
|
"@fougere/adapter-graphql": {
|
package/src/Choices.ts
CHANGED
|
@@ -24,7 +24,7 @@ export class Choices {
|
|
|
24
24
|
const where = text ? { [reference.label]: { contains: text } } : undefined;
|
|
25
25
|
const answer = await sendCall(
|
|
26
26
|
fetcher,
|
|
27
|
-
{
|
|
27
|
+
{ address: reference.to, op: 'list' },
|
|
28
28
|
invocationOf({ query: { limit: Choices.LIMIT + 1, ...(where ? { where } : {}) } }),
|
|
29
29
|
);
|
|
30
30
|
const rows = itemsOf<Record<string, unknown>>(answer);
|
package/src/Designation.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
FougereError,
|
|
3
3
|
ErrorCode,
|
|
4
|
-
|
|
4
|
+
RPC_ADDRESS,
|
|
5
5
|
assertIdentityCard,
|
|
6
6
|
decoded,
|
|
7
7
|
lowerFirst,
|
|
@@ -16,7 +16,7 @@ import { frameCall, unframeResponse, type RpcResponse } from '@fougere/transport
|
|
|
16
16
|
import type { EntityClass } from './EntityClass.js';
|
|
17
17
|
import type { CallInput } from './CallInput.js';
|
|
18
18
|
import type { Fetcher } from './Fetcher.js';
|
|
19
|
-
import { Card, type SchemaView
|
|
19
|
+
import { Card, type SchemaView } from '@fougere/schema';
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* One facade, built from its address alone — what a project that never generated `@fronds/facade`
|
|
@@ -60,7 +60,7 @@ export function entityKeyOf(entity: EntityClass): string {
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
export function callOf(designation: Designation, op: string): FrondCall {
|
|
63
|
-
return {
|
|
63
|
+
return { address: addressOf(designation), op };
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
export function invocationOf(input?: CallInput): InvocationContext {
|
|
@@ -98,13 +98,15 @@ async function postCall(
|
|
|
98
98
|
*/
|
|
99
99
|
const schemas = new Map<string, Promise<Map<string, SchemaView>>>();
|
|
100
100
|
|
|
101
|
-
/** A card read as
|
|
101
|
+
/** A card read as what each operation answers, indexed the way a call names it — `post.list`. */
|
|
102
102
|
function schemasIn(answer: unknown, endpoint: string): Map<string, SchemaView> {
|
|
103
103
|
const found = new Map<string, SchemaView>();
|
|
104
104
|
const card = assertIdentityCard(answer, `The app at ${endpoint}`);
|
|
105
105
|
for (const frond of card.fronds) {
|
|
106
106
|
for (const facade of frond.facades) {
|
|
107
|
-
|
|
107
|
+
for (const op of facade.ops) {
|
|
108
|
+
if (op.output) found.set(`${facade.name}.${op.name}`, Card.fromDescriptor(op.output).toSchema());
|
|
109
|
+
}
|
|
108
110
|
}
|
|
109
111
|
}
|
|
110
112
|
|
|
@@ -123,7 +125,7 @@ function learn(answer: unknown, endpoint: string): void {
|
|
|
123
125
|
function schemasOf(fetcher: Fetcher, endpoint: string): Promise<Map<string, SchemaView>> {
|
|
124
126
|
const asked = schemas.get(endpoint) ?? (async () => {
|
|
125
127
|
try {
|
|
126
|
-
return schemasIn(await postCall(fetcher, {
|
|
128
|
+
return schemasIn(await postCall(fetcher, { address: RPC_ADDRESS, op: 'discover' }, invocationOf(), endpoint), endpoint);
|
|
127
129
|
} catch { /* unreachable, or an app that publishes no card */ }
|
|
128
130
|
|
|
129
131
|
return new Map<string, SchemaView>();
|
|
@@ -140,13 +142,13 @@ export async function sendCall(
|
|
|
140
142
|
endpoint: string = CALL_ENDPOINT,
|
|
141
143
|
): Promise<unknown> {
|
|
142
144
|
const answer = await postCall(fetcher, call, invocation, endpoint);
|
|
143
|
-
if (call.
|
|
145
|
+
if (call.address === RPC_ADDRESS) {
|
|
144
146
|
if (call.op === 'discover') learn(answer, endpoint);
|
|
145
147
|
|
|
146
148
|
return answer;
|
|
147
149
|
}
|
|
148
150
|
|
|
149
|
-
return decoded((await schemasOf(fetcher, endpoint)).get(call.
|
|
151
|
+
return decoded((await schemasOf(fetcher, endpoint)).get(`${call.address}.${call.op}`), answer);
|
|
150
152
|
}
|
|
151
153
|
|
|
152
154
|
// ── The link ─────────────────────────────────────
|
|
@@ -218,7 +220,7 @@ export function asFougereError(err: unknown, entityKey: string, op: string): Fou
|
|
|
218
220
|
: new FougereError({
|
|
219
221
|
code: ErrorCode.SERVICE_UNAVAILABLE,
|
|
220
222
|
message: (err as Error)?.message ?? String(err),
|
|
221
|
-
|
|
223
|
+
address: entityKey,
|
|
222
224
|
operation: op,
|
|
223
225
|
cause: err,
|
|
224
226
|
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AnyHandler, FacadeName } from '@fougere/core/contract';
|
|
2
|
+
|
|
3
|
+
export interface FormOptions {
|
|
4
|
+
/** Command the submit rides. Default: 'create'. */
|
|
5
|
+
op?: string;
|
|
6
|
+
/** The facade the submit goes to. Default: the one named like the entity — `post` for `Post`. */
|
|
7
|
+
to?: FacadeName<AnyHandler, string>;
|
|
8
|
+
/** Initial values (edit mode: the loaded entity). */
|
|
9
|
+
initial?: Record<string, unknown>;
|
|
10
|
+
/** Call params designating the target (edit mode: { id }). */
|
|
11
|
+
params?: Record<string, string>;
|
|
12
|
+
}
|
package/src/Matchable.ts
CHANGED
package/src/Outcome.ts
CHANGED
|
@@ -77,7 +77,7 @@ export async function serveRest(app: App, request: DoorRequest): Promise<Outcome
|
|
|
77
77
|
try {
|
|
78
78
|
result = await invokeOn(
|
|
79
79
|
app,
|
|
80
|
-
{
|
|
80
|
+
{ address: route.address, op: route.operationName },
|
|
81
81
|
{ params, query: request.query, input: request.body },
|
|
82
82
|
undefined,
|
|
83
83
|
request.state,
|
package/src/RouteMatch.ts
CHANGED
|
@@ -21,12 +21,12 @@ export function tableOf(app: App): Matchable[] {
|
|
|
21
21
|
const table = app.fronds.flatMap((frond) =>
|
|
22
22
|
generateRoutes(app, {
|
|
23
23
|
prefix: `/${frond.name}`,
|
|
24
|
-
filter: (
|
|
24
|
+
filter: (_address, frondName) => frondName === frond.name,
|
|
25
25
|
}).map((route) => ({
|
|
26
26
|
method: route.method as string,
|
|
27
27
|
segments: route.path.split('/').filter(Boolean),
|
|
28
28
|
path: route.path,
|
|
29
|
-
|
|
29
|
+
address: route.address,
|
|
30
30
|
operationName: route.operationName,
|
|
31
31
|
})),
|
|
32
32
|
);
|
package/src/client/index.ts
CHANGED
|
@@ -40,6 +40,7 @@ export type {
|
|
|
40
40
|
export { errorsByField, formFieldsOf, payloadOf, tableColumnsOf, type FormEntity } from '../FormEntity.js';
|
|
41
41
|
export { type FormRow, type FormValues, type FormErrors, type FormFieldName } from '../FormRow.js';
|
|
42
42
|
export { type FormField, type FormReference } from '../FormField.js';
|
|
43
|
+
export { type FormOptions } from '../FormOptions.js';
|
|
43
44
|
export { Choices, type Choice, type Offer } from '../Choices.js';
|
|
44
45
|
export { type TableColumn } from '../TableColumn.js';
|
|
45
46
|
export { sessionViewOf, type SessionView } from '../session.js';
|