@forestadmin/agent-bff 1.23.8 → 1.24.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.
@@ -75,7 +75,7 @@ async function collectFields(collection, { store, capabilitiesFetcher, logger })
75
75
  return UNTYPED('no_fields');
76
76
  }
77
77
  return {
78
- projectable: capabilities.fields.map(field => field.name),
78
+ projectable: capabilities.fields.map(({ name, type }) => ({ name, type })),
79
79
  filterable: collectFilterableFields(collection, capabilities, logger),
80
80
  degraded: null,
81
81
  };
@@ -146,4 +146,4 @@ async function collectUnfolding(options) {
146
146
  }));
147
147
  return { collections };
148
148
  }
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdC11bmZvbGRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3BlbmFwaS9jb2xsZWN0LXVuZm9sZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUF5TUEsbUNBZ0JDO0FBM01ELHNDQUFnRDtBQUNoRCx5REFBOEQ7QUFDOUQsMkVBQThGO0FBRTlGLG9HQUFvRztBQUNwRyxrR0FBa0c7QUFDbEcsa0ZBQWtGO0FBQ3JFLFFBQUEsd0JBQXdCLEdBQUcsRUFBRSxDQUFDO0FBVTNDLEtBQUssVUFBVSxrQkFBa0IsQ0FDL0IsS0FBVSxFQUNWLEtBQWEsRUFDYixHQUE0QjtJQUU1QixNQUFNLE9BQU8sR0FBRyxJQUFJLEtBQUssQ0FBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRWYsaUdBQWlHO0lBQ2pHLCtDQUErQztJQUMvQyxNQUFNLE1BQU0sR0FBRyxLQUFLLElBQW1CLEVBQUU7UUFDdkMsSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRW5DLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNyQixNQUFNLElBQUksQ0FBQyxDQUFDO1FBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXpDLE1BQU0sTUFBTSxFQUFFLENBQUM7SUFDakIsQ0FBQyxDQUFDO0lBRUYsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUVqRixPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxRQUFzQyxF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
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdC11bmZvbGRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3BlbmFwaS9jb2xsZWN0LXVuZm9sZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUF5TUEsbUNBZ0JDO0FBM01ELHNDQUFnRDtBQUNoRCx5REFBOEQ7QUFDOUQsMkVBQThGO0FBRTlGLG9HQUFvRztBQUNwRyxrR0FBa0c7QUFDbEcsa0ZBQWtGO0FBQ3JFLFFBQUEsd0JBQXdCLEdBQUcsRUFBRSxDQUFDO0FBVTNDLEtBQUssVUFBVSxrQkFBa0IsQ0FDL0IsS0FBVSxFQUNWLEtBQWEsRUFDYixHQUE0QjtJQUU1QixNQUFNLE9BQU8sR0FBRyxJQUFJLEtBQUssQ0FBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRWYsaUdBQWlHO0lBQ2pHLCtDQUErQztJQUMvQyxNQUFNLE1BQU0sR0FBRyxLQUFLLElBQW1CLEVBQUU7UUFDdkMsSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRW5DLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNyQixNQUFNLElBQUksQ0FBQyxDQUFDO1FBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXpDLE1BQU0sTUFBTSxFQUFFLENBQUM7SUFDakIsQ0FBQyxDQUFDO0lBRUYsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUVqRixPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxRQUFzQyxF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
@@ -13,4 +13,6 @@ export declare function sanitizeIdentifier(raw: string): string;
13
13
  */
14
14
  export type Namer = (raw: string) => string;
15
15
  export default function createNamer(): Namer;
16
+ /** A customer name inside prose. Quoted rather than bare: a name can carry spaces or punctuation. */
17
+ export declare function quoted(name: string): string;
16
18
  //# sourceMappingURL=names.d.ts.map
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sanitizeIdentifier = sanitizeIdentifier;
4
4
  exports.default = createNamer;
5
+ exports.quoted = quoted;
5
6
  /**
6
7
  * Collection, relation and action names are arbitrary customer strings: spaces, dots, slashes,
7
8
  * accents. A path segment carries them URL-encoded, but an `operationId` cannot — redocly rejects a
@@ -25,4 +26,8 @@ function createNamer() {
25
26
  return candidate;
26
27
  };
27
28
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3BlbmFwaS9uYW1lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU1BLGdEQUVDO0FBVUQsOEJBaUJDO0FBbkNEOzs7OztHQUtHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsR0FBVztJQUM1QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ25ELENBQUM7QUFVRCxTQUF3QixXQUFXO0lBQ2pDLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFFL0IsT0FBTyxDQUFDLEdBQVcsRUFBVSxFQUFFO1FBQzdCLE1BQU0sSUFBSSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFFaEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDM0IsU0FBUyxHQUFHLEdBQUcsSUFBSSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVwQixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDLENBQUM7QUFDSixDQUFDIn0=
29
+ /** A customer name inside prose. Quoted rather than bare: a name can carry spaces or punctuation. */
30
+ function quoted(name) {
31
+ return JSON.stringify(name);
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3BlbmFwaS9uYW1lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU1BLGdEQUVDO0FBVUQsOEJBaUJDO0FBR0Qsd0JBRUM7QUF4Q0Q7Ozs7O0dBS0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxHQUFXO0lBQzVDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDbkQsQ0FBQztBQVVELFNBQXdCLFdBQVc7SUFDakMsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUUvQixPQUFPLENBQUMsR0FBVyxFQUFVLEVBQUU7UUFDN0IsTUFBTSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztRQUVoQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMzQixTQUFTLEdBQUcsR0FBRyxJQUFJLElBQUksT0FBTyxFQUFFLENBQUM7WUFDakMsT0FBTyxJQUFJLENBQUMsQ0FBQztRQUNmLENBQUM7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXBCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxxR0FBcUc7QUFDckcsU0FBZ0IsTUFBTSxDQUFDLElBQVk7SUFDakMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLENBQUMifQ==
@@ -0,0 +1,21 @@
1
+ import type { UnfoldedCollection } from './unfolding';
2
+ import type { ReferenceObject, SchemaObject } from 'openapi3-ts/oas31';
3
+ /**
4
+ * The key a field really carries in a response record. `agent-client` deserializes the agent's
5
+ * JSON:API with `keyForAttribute: 'camelCase'` (`http-requester.ts`), which is exactly this pair of
6
+ * `inflected` calls (`jsonapi-serializer/lib/inflector.js`), so a `first_name` column is PROJECTED
7
+ * under that name and RETURNED as `firstName`. The same library rather than a transcription: the
8
+ * transform handles acronyms and non-ASCII, and a mirror would drift from the deserializer without
9
+ * anything failing.
10
+ */
11
+ export declare function recordKey(field: string): string;
12
+ /**
13
+ * The record shape of one collection. The properties are what the capabilities report, and nothing
14
+ * more is forbidden: the capabilities route leaves out a OneToOne relation that the default
15
+ * projection returns, so a closed schema would reject responses the runtime really sends. `id` wins
16
+ * over any field of that name, because the deserializer overwrites the attribute with the resource
17
+ * id.
18
+ */
19
+ export default function recordSchema(collection: UnfoldedCollection, forestMeta: ReferenceObject): SchemaObject;
20
+ export declare function listResponseSchema(collection: UnfoldedCollection, record: ReferenceObject): SchemaObject;
21
+ //# sourceMappingURL=record-schemas.d.ts.map
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.recordKey = recordKey;
7
+ exports.default = recordSchema;
8
+ exports.listResponseSchema = listResponseSchema;
9
+ const inflected_1 = __importDefault(require("inflected"));
10
+ const field_schemas_1 = __importDefault(require("./field-schemas"));
11
+ const names_1 = require("./names");
12
+ const pack_id_1 = require("../data/pack-id");
13
+ /**
14
+ * The key a field really carries in a response record. `agent-client` deserializes the agent's
15
+ * JSON:API with `keyForAttribute: 'camelCase'` (`http-requester.ts`), which is exactly this pair of
16
+ * `inflected` calls (`jsonapi-serializer/lib/inflector.js`), so a `first_name` column is PROJECTED
17
+ * under that name and RETURNED as `firstName`. The same library rather than a transcription: the
18
+ * transform handles acronyms and non-ASCII, and a mirror would drift from the deserializer without
19
+ * anything failing.
20
+ */
21
+ function recordKey(field) {
22
+ return inflected_1.default.camelize(inflected_1.default.underscore(field), false);
23
+ }
24
+ // The flat id is the JSON:API resource id, which is a string by specification whatever the key
25
+ // column holds. `__forest.primaryKey` is the same id unpacked and typed, so the two forms of one
26
+ // record disagree by construction — the trap this schema exists to name.
27
+ const ID_SCHEMA = {
28
+ type: 'string',
29
+ description: 'The record id, always a string — the agent serializes it as the JSON:API resource id, even ' +
30
+ 'when the key column is a Number. `__forest.primaryKey` carries the same id TYPED, so ' +
31
+ `comparing the two without coercion fails. A composite key is its values joined by ` +
32
+ `${(0, names_1.quoted)(pack_id_1.PACKED_ID_SEPARATOR)}.`,
33
+ };
34
+ function isReference(schema) {
35
+ return '$ref' in schema;
36
+ }
37
+ function collapsedSchema(names, tail) {
38
+ return {
39
+ description: `${names.join(', ')} all reach the response under this single key, so which one it holds ` +
40
+ `is not determined here.${tail}`,
41
+ };
42
+ }
43
+ /**
44
+ * One published field, at every depth: renamed to the key the response carries it under, and
45
+ * widened to accept null. The capabilities report a column type and never its nullability, so a
46
+ * nullable column answers `null` against a type this schema would otherwise declare non-null — a
47
+ * generated client validating the response would reject what the runtime really sends. An
48
+ * unconstrained schema already accepts null and keeps its type as it is. Renaming and widening are
49
+ * one traversal because they visit the same structure. The rename is as lossy one level down as it
50
+ * is at the top: two members collapsing onto one key would silently drop one, so that key is
51
+ * published unconstrained and names them all instead.
52
+ */
53
+ function publishedSchema(schema) {
54
+ const published = typeof schema.type === 'string' ? { ...schema, type: [schema.type, 'null'] } : { ...schema };
55
+ if (schema.items !== undefined && !isReference(schema.items)) {
56
+ published.items = publishedSchema(schema.items);
57
+ }
58
+ const { properties } = schema;
59
+ if (properties !== undefined) {
60
+ const byKey = new Map();
61
+ Object.keys(properties).forEach(name => {
62
+ const key = recordKey(name);
63
+ const collapsed = byKey.get(key);
64
+ if (collapsed)
65
+ collapsed.push(name);
66
+ else
67
+ byKey.set(key, [name]);
68
+ });
69
+ published.properties = Object.fromEntries([...byKey].map(([key, names]) => {
70
+ if (names.length > 1)
71
+ return [key, collapsedSchema(names.map(names_1.quoted), '')];
72
+ const nested = properties[names[0]];
73
+ return [key, isReference(nested) ? nested : publishedSchema(nested)];
74
+ }));
75
+ }
76
+ return published;
77
+ }
78
+ /**
79
+ * The schema of one field, under the key the response carries it as. Several fields can collapse to
80
+ * the same key — the transform is lossy, `first_name` and `firstName` both yield `firstName` — and
81
+ * which one wins depends on the order the agent serialized them in, so the type is left open rather
82
+ * than picked.
83
+ */
84
+ function propertySchema(key, fields) {
85
+ const names = fields.map(field => (0, names_1.quoted)(field.name));
86
+ if (fields.length > 1) {
87
+ return collapsedSchema(names, ' Project one of them at a time to know.');
88
+ }
89
+ const [field] = fields;
90
+ const schema = publishedSchema((0, field_schemas_1.default)(field.type));
91
+ if (field.name === key)
92
+ return schema;
93
+ const description = [schema.description, `The ${names.join(', ')} field.`]
94
+ .filter(Boolean)
95
+ .join(' ');
96
+ return { ...schema, description };
97
+ }
98
+ function fieldProperties(projectable) {
99
+ const byKey = new Map();
100
+ projectable.forEach(field => {
101
+ const key = recordKey(field.name);
102
+ const collapsed = byKey.get(key);
103
+ if (collapsed)
104
+ collapsed.push(field);
105
+ else
106
+ byKey.set(key, [field]);
107
+ });
108
+ return Object.fromEntries([...byKey].map(([key, fields]) => [key, propertySchema(key, fields)]));
109
+ }
110
+ /**
111
+ * The record shape of one collection. The properties are what the capabilities report, and nothing
112
+ * more is forbidden: the capabilities route leaves out a OneToOne relation that the default
113
+ * projection returns, so a closed schema would reject responses the runtime really sends. `id` wins
114
+ * over any field of that name, because the deserializer overwrites the attribute with the resource
115
+ * id.
116
+ */
117
+ function recordSchema(collection, forestMeta) {
118
+ return {
119
+ type: 'object',
120
+ description: `A record of ${(0, names_1.quoted)(collection.name)}. It carries the fields the request projected — ` +
121
+ 'omit `projection` and the agent returns them all. The properties below are the ones the ' +
122
+ "collection's capabilities report; a record can carry more, such as a to-one relation. " +
123
+ 'Every field is nullable: the capabilities report a column type and never its nullability, ' +
124
+ 'so a null is always possible whatever the type says.',
125
+ properties: {
126
+ ...fieldProperties(collection.fields.projectable),
127
+ id: ID_SCHEMA,
128
+ __forest: forestMeta,
129
+ },
130
+ required: ['id', '__forest'],
131
+ };
132
+ }
133
+ function listResponseSchema(collection, record) {
134
+ return {
135
+ type: 'object',
136
+ description: `A page of ${(0, names_1.quoted)(collection.name)} records. The list never carries a total: call the ` +
137
+ 'count endpoint for that, which is why `countStatus` is always `not_requested`.',
138
+ properties: {
139
+ data: { type: 'array', items: record },
140
+ meta: {
141
+ type: 'object',
142
+ properties: { countStatus: { type: 'string', const: 'not_requested' } },
143
+ required: ['countStatus'],
144
+ },
145
+ },
146
+ required: ['data', 'meta'],
147
+ };
148
+ }
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLXNjaGVtYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3BlbmFwaS9yZWNvcmQtc2NoZW1hcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWlCQSw4QkFFQztBQXFIRCwrQkFtQkM7QUFFRCxnREFtQkM7QUE3S0QsMERBQWtDO0FBRWxDLG9FQUE0QztBQUM1QyxtQ0FBaUM7QUFDakMsNkNBQXNEO0FBRXREOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixTQUFTLENBQUMsS0FBYTtJQUNyQyxPQUFPLG1CQUFTLENBQUMsUUFBUSxDQUFDLG1CQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRCwrRkFBK0Y7QUFDL0YsaUdBQWlHO0FBQ2pHLHlFQUF5RTtBQUN6RSxNQUFNLFNBQVMsR0FBaUI7SUFDOUIsSUFBSSxFQUFFLFFBQVE7SUFDZCxXQUFXLEVBQ1QsNkZBQTZGO1FBQzdGLHVGQUF1RjtRQUN2RixvRkFBb0Y7UUFDcEYsR0FBRyxJQUFBLGNBQU0sRUFBQyw2QkFBbUIsQ0FBQyxHQUFHO0NBQ3BDLENBQUM7QUFFRixTQUFTLFdBQVcsQ0FBQyxNQUFzQztJQUN6RCxPQUFPLE1BQU0sSUFBSSxNQUFNLENBQUM7QUFDMUIsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLEtBQWUsRUFBRSxJQUFZO0lBQ3BELE9BQU87UUFDTCxXQUFXLEVBQ1QsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1RUFBdUU7WUFDMUYsMEJBQTBCLElBQUksRUFBRTtLQUNuQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsZUFBZSxDQUFDLE1BQW9CO0lBQzNDLE1BQU0sU0FBUyxHQUNiLE9BQU8sTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLENB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
@@ -100,6 +100,10 @@ export declare const ActionResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
100
100
  type: z.ZodLiteral<"redirect">;
101
101
  path: z.ZodString;
102
102
  }, z.core.$strip>], "type">;
103
+ export declare const ForestRecordMetaSchema: z.ZodObject<{
104
+ collection: z.ZodString;
105
+ primaryKey: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
106
+ }, z.core.$strip>;
103
107
  export declare const ListResponseSchema: z.ZodObject<{
104
108
  data: z.ZodArray<z.ZodIntersection<z.ZodRecord<z.ZodString, z.ZodUnknown>, z.ZodObject<{
105
109
  __forest: z.ZodObject<{
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OPERATORS = exports.ParentIdSchema = exports.ConditionTreeSchema = exports.MessagelessErrorResponseSchema = exports.ErrorResponseSchema = exports.AiQueryRequestSchema = exports.ContextResponseSchema = exports.CountResponseSchema = exports.ListResponseSchema = exports.ActionResultSchema = exports.ActionFormResponseSchema = exports.ActionRequestSchema = exports.RelationCountRequestSchema = exports.RelationListRequestSchema = exports.CountRequestSchema = exports.ListRequestSchema = exports.CLOSED_BODY_NOTE = exports.SearchExtendedSchema = exports.SearchSchema = exports.TimezoneSchema = exports.PageSchema = exports.SortClauseSchema = void 0;
3
+ exports.OPERATORS = exports.ParentIdSchema = exports.ConditionTreeSchema = exports.MessagelessErrorResponseSchema = exports.ErrorResponseSchema = exports.AiQueryRequestSchema = exports.ContextResponseSchema = exports.CountResponseSchema = exports.ListResponseSchema = exports.ForestRecordMetaSchema = exports.ActionResultSchema = exports.ActionFormResponseSchema = exports.ActionRequestSchema = exports.RelationCountRequestSchema = exports.RelationListRequestSchema = exports.CountRequestSchema = exports.ListRequestSchema = exports.CLOSED_BODY_NOTE = exports.SearchExtendedSchema = exports.SearchSchema = exports.TimezoneSchema = exports.PageSchema = exports.SortClauseSchema = void 0;
4
4
  const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
5
5
  const zod_openapi_1 = require("./zod-openapi");
6
+ const pack_id_1 = require("../data/pack-id");
6
7
  const request_schemas_1 = require("../data/request-schemas");
7
8
  const read_model_1 = require("../read-model/read-model");
8
9
  const capabilities_validator_1 = require("../validation/capabilities-validator");
@@ -211,23 +212,28 @@ exports.ActionResultSchema = zod_openapi_1.z
211
212
  'bodies: a result the BFF cannot normalize answers 501 instead (see the execute 501 ' +
212
213
  'response), and a form the agent rejects answers 400 action_error.',
213
214
  });
214
- const ForestRecordMetaSchema = zod_openapi_1.z
215
+ exports.ForestRecordMetaSchema = zod_openapi_1.z
215
216
  .object({
216
217
  collection: zod_openapi_1.z.string(),
217
218
  primaryKey: zod_openapi_1.z.record(zod_openapi_1.z.string(), zod_openapi_1.z.union([zod_openapi_1.z.string(), zod_openapi_1.z.number()])),
218
219
  })
219
220
  .openapi('ForestRecordMeta', {
220
221
  description: 'The record identity, unpacked from the agent id. A composite primary key carries one ' +
221
- 'entry per column.',
222
+ 'entry per column. The values are TYPED here — a Number key column is a number — whereas ' +
223
+ 'the record carries the same id as a string under `id`, so comparing the two forms ' +
224
+ 'without coercion fails.',
222
225
  });
223
226
  exports.ListResponseSchema = zod_openapi_1.z
224
227
  .object({
225
- data: zod_openapi_1.z.array(zod_openapi_1.z.record(zod_openapi_1.z.string(), zod_openapi_1.z.unknown()).and(zod_openapi_1.z.object({ __forest: ForestRecordMetaSchema }))),
228
+ data: zod_openapi_1.z.array(zod_openapi_1.z.record(zod_openapi_1.z.string(), zod_openapi_1.z.unknown()).and(zod_openapi_1.z.object({ __forest: exports.ForestRecordMetaSchema }))),
226
229
  meta: zod_openapi_1.z.object({ countStatus: zod_openapi_1.z.literal('not_requested') }),
227
230
  })
228
231
  .openapi('ListResponse', {
229
- description: 'Records are flat, each carrying a `__forest` envelope. The list never carries a total: ' +
230
- 'call the count endpoint for that, which is why `countStatus` is always `not_requested`. ' +
232
+ description: 'Records are flat, each carrying a `__forest` envelope. A record always holds `id`, the ' +
233
+ `agent id as a string — a composite key is its values joined by \`${pack_id_1.PACKED_ID_SEPARATOR}\` — ` +
234
+ 'while `__forest.primaryKey` holds that same id typed and split per column. The list never ' +
235
+ 'carries a total: call the count endpoint for that, which is why `countStatus` is always ' +
236
+ '`not_requested`. ' +
231
237
  'It is always one page, not guaranteed to be the whole collection: a request that omitted ' +
232
238
  "`page` still gets a page, the agent's default (up to 15 records from the start on the " +
233
239
  'Node agent), so a response of exactly that default length is probably truncated, and ' +
@@ -370,4 +376,4 @@ exports.MessagelessErrorResponseSchema = zod_openapi_1.z
370
376
  .openapi('MessagelessErrorResponse', {
371
377
  description: 'The unsupported-action-result body, which carries no message field unlike every other error.',
372
378
  });
373
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVuYXBpL3NjaGVtYXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0VBQStEO0FBRS9ELCtDQUFrQztBQUNsQyw2REFZaUM7QUFDakMseURBQThEO0FBQzlELGlGQUF3RTtBQUV4RSxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcsaUNBQVksQ0FBMEIsQ0FBQztBQTJiZiw4QkFBUztBQXpidkQsTUFBTSx1QkFBdUIsR0FBRyxlQUFDO0tBQzlCLFlBQVksQ0FBQztJQUNaLEtBQUssRUFBRSxlQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2pCLFFBQVEsRUFBRSxlQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMzQixLQUFLLEVBQUUsZUFBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUM5QixDQUFDO0tBQ0QsT0FBTyxDQUFDLG1CQUFtQixFQUFFO0lBQzVCLFdBQVcsRUFDVCwwRkFBMEY7UUFDMUYscUZBQXFGO0NBQ3hGLENBQUMsQ0FBQztBQUVMLE1BQU0sbUJBQW1CLEdBQWMsZUFBQztLQUNyQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQ1QsZUFBQyxDQUFDLEtBQUssQ0FBQztJQUNOLHVCQUF1QjtJQUN2QixlQUFDLENBQUMsWUFBWSxDQUFDO1FBQ2IsVUFBVSxFQUFFLGVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakMsVUFBVSxFQUFFLGVBQUMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUM7S0FDekMsQ0FBQztJQUNGLGVBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO0NBQ25CLENBQUMsQ0FDSDtLQUNBLE9BQU8sQ0FBQyxlQUFlLEVBQUU7SUFDeEIsV0FBVyxFQUNULDJGQUEyRjtRQUMzRiwyREFBMkQ7UUFDM0QsdUZBQXVGO1FBQ3ZGLHVGQUF1RjtRQUN2RixRQUFRLHlD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
379
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVuYXBpL3NjaGVtYXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0VBQStEO0FBRS9ELCtDQUFrQztBQUNsQyw2Q0FBc0Q7QUFDdEQsNkRBWWlDO0FBQ2pDLHlEQUE4RDtBQUM5RCxpRkFBd0U7QUFFeEUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFHLGlDQUFZLENBQTBCLENBQUM7QUFnY2YsOEJBQVM7QUE5YnZELE1BQU0sdUJBQXVCLEdBQUcsZUFBQztLQUM5QixZQUFZLENBQUM7SUFDWixLQUFLLEVBQUUsZUFBQyxDQUFDLE1BQU0sRUFBRTtJQUNqQixRQUFRLEVBQUUsZUFBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDM0IsS0FBSyxFQUFFLGVBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDOUIsQ0FBQztLQUNELE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtJQUM1QixXQUFXLEVBQ1QsMEZBQTBGO1FBQzFGLHFGQUFxRjtDQUN4RixDQUFDLENBQUM7QUFFTCxNQUFNLG1CQUFtQixHQUFjLGVBQUM7S0FDckMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUNULGVBQUMsQ0FBQyxLQUFLLENBQUM7SUFDTix1QkFBdUI7SUFDdkIsZUFBQyxDQUFDLFlBQVksQ0FBQztRQUNiLFVBQVUsRUFBRSxlQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pDLFVBQVUsRUFBRSxlQUFDLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDO0tBQ3pDLENBQUM7SUFDRixlQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztDQUNuQixDQUFDLENBQ0g7S0FDQSxPQUFPLENBQUMsZUFBZSxFQUFFO0lBQ3hCLFdBQVcsRUFDVCwyRkFBMkY7UUFDM0YsMkRBQTJEO1FBQzNELHVGQUF1RjtRQUN2Rix1RkFBdUY7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
@@ -1,11 +1,45 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
37
  };
5
38
  Object.defineProperty(exports, "__esModule", { value: true });
6
39
  exports.default = registerUnfoldedPaths;
7
40
  const field_schemas_1 = __importDefault(require("./field-schemas"));
8
- const names_1 = __importDefault(require("./names"));
41
+ const names_1 = __importStar(require("./names"));
42
+ const record_schemas_1 = __importStar(require("./record-schemas"));
9
43
  const schemas_1 = require("./schemas");
10
44
  const pack_id_1 = require("../data/pack-id");
11
45
  const request_schemas_1 = require("../data/request-schemas");
@@ -19,9 +53,6 @@ const DEGRADED_NOTE = {
19
53
  'field on this collection. Any field sent in `projection`, `sort` or `filter` is therefore ' +
20
54
  'rejected with 422 unknown_field — call this path without them.',
21
55
  };
22
- function quoted(name) {
23
- return JSON.stringify(name);
24
- }
25
56
  // A name reaches the runtime through decodeURIComponent, so the document must carry it encoded —
26
57
  // including the separators that would otherwise change the route, such as a slash inside an action
27
58
  // name (`a/b` is reachable only as `a%2Fb`).
@@ -86,7 +117,7 @@ function filterLeaves(pool, plan) {
86
117
  // collection whose capabilities could not be read still accepts whatever it really exposes.
87
118
  if (groups.length === 0) {
88
119
  return [
89
- pool.add(`FilterLeaf_${plan.key}`, leafShape({ type: 'string' }, schemas_1.OPERATORS, `A single condition on ${quoted(name)}.`)),
120
+ pool.add(`FilterLeaf_${plan.key}`, leafShape({ type: 'string' }, schemas_1.OPERATORS, `A single condition on ${(0, names_1.quoted)(name)}.`)),
90
121
  ];
91
122
  }
92
123
  // `-` rather than `_` before the index, and the difference is load-bearing: `sanitizeIdentifier` maps
@@ -96,7 +127,7 @@ function filterLeaves(pool, plan) {
96
127
  // `Invoice` (first group) both claim `FilterLeaf_Invoice_1`, and `ComponentPool.add` settles it
97
128
  // last-wins in silence — one collection would document the other's fields and operators. Sanitizing
98
129
  // can never produce a `-`, so this separator makes the two namespaces disjoint by construction.
99
- return groups.map((group, index) => pool.add(`FilterLeaf_${plan.key}-${index + 1}`, leafShape({ type: 'string', enum: group.fields }, group.operators, `A single condition on ${quoted(name)}. These fields share one operator set, as the ` +
130
+ return groups.map((group, index) => pool.add(`FilterLeaf_${plan.key}-${index + 1}`, leafShape({ type: 'string', enum: group.fields }, group.operators, `A single condition on ${(0, names_1.quoted)(name)}. These fields share one operator set, as the ` +
100
131
  "collection's capabilities report it.")));
101
132
  }
102
133
  function filterSchema({ pool }, plan) {
@@ -110,7 +141,7 @@ function filterSchema({ pool }, plan) {
110
141
  'invalid_filter_operator.'
111
142
  : '';
112
143
  return pool.add(treeName, {
113
- description: `A filter on ${quoted(name)}: either a leaf condition, a branch nesting more ` +
144
+ description: `A filter on ${(0, names_1.quoted)(name)}: either a leaf condition, a branch nesting more ` +
114
145
  'conditions, or the empty object, which is how an absent filter is spelled. A branch must ' +
115
146
  'carry its aggregator. A node carrying both `field` and ' +
116
147
  `\`conditions\` is rejected with 400, so the two shapes are mutually exclusive.${pairing}`,
@@ -132,7 +163,7 @@ function filterSchema({ pool }, plan) {
132
163
  function fieldRefs(deps, plan) {
133
164
  const { pool } = deps;
134
165
  const { name, fields } = plan.collection;
135
- const projectable = fieldsEnum(pool, `Fields_${plan.key}`, fields.projectable, `A field of ${quoted(name)}.`);
166
+ const projectable = fieldsEnum(pool, `Fields_${plan.key}`, fields.projectable.map(field => field.name), `A field of ${(0, names_1.quoted)(name)}.`);
136
167
  // Filterable is a strict subset of projectable: the agent reports a ManyToOne without operators, so
137
168
  // projecting or sorting on it works while filtering on it answers 422 field_not_filterable. Which is
138
169
  // why the filterable fields are not enumerated here but inside the filter leaves, where each one
@@ -184,19 +215,32 @@ function registerRequests(deps, plan, properties) {
184
215
  return {
185
216
  list: pool.add(`ListRequest_${key}`, {
186
217
  type: 'object',
187
- description: requestDescription(collection, `Filter, search, sort and project records of ${quoted(collection.name)}.`),
218
+ description: requestDescription(collection, `Filter, search, sort and project records of ${(0, names_1.quoted)(collection.name)}.`),
188
219
  properties: properties.list,
189
220
  additionalProperties: false,
190
221
  }),
191
222
  count: pool.add(`CountRequest_${key}`, {
192
223
  type: 'object',
193
- description: requestDescription(collection, `Count records of ${quoted(collection.name)}. Accepts the same search inputs as list, so ` +
224
+ description: requestDescription(collection, `Count records of ${(0, names_1.quoted)(collection.name)}. Accepts the same search inputs as list, so ` +
194
225
  'a client can count exactly the rows its search returns.'),
195
226
  properties: properties.count,
196
227
  additionalProperties: false,
197
228
  }),
198
229
  };
199
230
  }
231
+ /**
232
+ * A collection whose field set could not be read keeps the shared untyped response: a record schema
233
+ * built from an empty projectable set would claim the record holds nothing but `id` and `__forest`.
234
+ */
235
+ function registerListResponse(deps, plan) {
236
+ const { pool } = deps;
237
+ const { collection, key } = plan;
238
+ if (collection.fields.projectable.length === 0) {
239
+ return pool.reuse('ListResponse', schemas_1.ListResponseSchema);
240
+ }
241
+ const record = pool.add(`Record_${key}`, (0, record_schemas_1.default)(collection, pool.reuse('ForestRecordMeta', schemas_1.ForestRecordMetaSchema)));
242
+ return pool.add(`ListResponse_${key}`, (0, record_schemas_1.listResponseSchema)(collection, record));
243
+ }
200
244
  const PARENT_ID_SHAPE = {
201
245
  anyOf: [{ type: 'string', pattern: request_schemas_1.NON_BLANK_PATTERN }, { type: 'number' }],
202
246
  };
@@ -215,15 +259,15 @@ function parentIdSchema(pool, parent, primaryKeys) {
215
259
  // A composite id only works as its packed string: a number could never carry the separator.
216
260
  type: 'string',
217
261
  pattern: request_schemas_1.NON_BLANK_PATTERN,
218
- description: `The composite id of the parent ${quoted(parent)} record: the values of ` +
262
+ description: `The composite id of the parent ${(0, names_1.quoted)(parent)} record: the values of ` +
219
263
  `${primaryKeys.map(key => key.name).join(', ')} joined by ` +
220
- `${quoted(pack_id_1.PACKED_ID_SEPARATOR)}, in that order.`,
264
+ `${(0, names_1.quoted)(pack_id_1.PACKED_ID_SEPARATOR)}, in that order.`,
221
265
  };
222
266
  }
223
267
  const [key] = primaryKeys;
224
268
  return {
225
269
  ...PARENT_ID_SHAPE,
226
- description: `The parent ${quoted(parent)} record id (${key.name}, ${key.type}). A number or its ` +
270
+ description: `The parent ${(0, names_1.quoted)(parent)} record id (${key.name}, ${key.type}). A number or its ` +
227
271
  'string form are both accepted; the BFF forwards it to the agent as a string.',
228
272
  };
229
273
  }
@@ -232,8 +276,8 @@ function registerRelationRequests(deps, plan, relation, relationKey, foreign) {
232
276
  const parentId = parentIdSchema(pool, plan.collection.name, plan.collection.primaryKeys);
233
277
  const { degraded } = foreign.collection.fields;
234
278
  const foreignNote = degraded ? ` ${DEGRADED_NOTE[degraded]}` : '';
235
- const appliesTo = `apply to ${quoted(foreign.collection.name)}, the foreign collection of ` +
236
- `${quoted(plan.collection.name)}.${quoted(relation.name)}; the parent only resolves which ` +
279
+ const appliesTo = `apply to ${(0, names_1.quoted)(foreign.collection.name)}, the foreign collection of ` +
280
+ `${(0, names_1.quoted)(plan.collection.name)}.${(0, names_1.quoted)(relation.name)}; the parent only resolves which ` +
237
281
  'records are related.';
238
282
  const body = (inputs, subject) => ({
239
283
  type: 'object',
@@ -287,7 +331,7 @@ function registerActionRequest(deps, plan, action, actionKey) {
287
331
  const { pool } = deps;
288
332
  return pool.add(`ActionRequest_${actionKey}`, {
289
333
  type: 'object',
290
- description: `The body of action ${quoted(action.name)} on ${quoted(plan.collection.name)}. ` +
334
+ description: `The body of action ${(0, names_1.quoted)(action.name)} on ${(0, names_1.quoted)(plan.collection.name)}. ` +
291
335
  '`recordIds` is required even on a global action: send an empty array when the action ' +
292
336
  'targets no record.',
293
337
  properties: {
@@ -327,17 +371,16 @@ function registerOperation(deps, options) {
327
371
  function registerCollectionOperations(deps, plan) {
328
372
  const { pool } = deps;
329
373
  const { name } = plan.collection;
330
- const listResponse = pool.reuse('ListResponse', schemas_1.ListResponseSchema);
331
374
  const countResponse = pool.reuse('CountResponse', schemas_1.CountResponseSchema);
332
375
  registerOperation(deps, {
333
376
  path: `${segment(name)}/list`,
334
377
  operationId: `listRecords_${plan.key}`,
335
378
  tag: name,
336
379
  summary: `List records of ${name}`,
337
- description: `Lists records of the ${quoted(name)} collection.`,
380
+ description: `Lists records of the ${(0, names_1.quoted)(name)} collection.`,
338
381
  request: plan.requests.list,
339
- response: listResponse,
340
- responseDescription: `A page of ${quoted(name)} records`,
382
+ response: plan.response,
383
+ responseDescription: `A page of ${(0, names_1.quoted)(name)} records`,
341
384
  bodyRequired: false,
342
385
  });
343
386
  registerOperation(deps, {
@@ -345,10 +388,10 @@ function registerCollectionOperations(deps, plan) {
345
388
  operationId: `countRecords_${plan.key}`,
346
389
  tag: name,
347
390
  summary: `Count records of ${name}`,
348
- description: `Counts records of the ${quoted(name)} collection.`,
391
+ description: `Counts records of the ${(0, names_1.quoted)(name)} collection.`,
349
392
  request: plan.requests.count,
350
393
  response: countResponse,
351
- responseDescription: `The matching ${quoted(name)} record count`,
394
+ responseDescription: `The matching ${(0, names_1.quoted)(name)} record count`,
352
395
  bodyRequired: false,
353
396
  });
354
397
  }
@@ -360,16 +403,16 @@ function registerRelationOperations(deps, plan, plansByName, namer) {
360
403
  return;
361
404
  const relationKey = namer(`${plan.key}_${relation.name}`);
362
405
  const requests = registerRelationRequests(deps, plan, relation, relationKey, foreign);
363
- const parent = `${quoted(plan.collection.name)}.${quoted(relation.name)}`;
406
+ const parent = `${(0, names_1.quoted)(plan.collection.name)}.${(0, names_1.quoted)(relation.name)}`;
364
407
  registerOperation(deps, {
365
408
  path: `${segment(plan.collection.name)}/relations/${segment(relation.name)}/list`,
366
409
  operationId: `listRelatedRecords_${relationKey}`,
367
410
  tag: plan.collection.name,
368
411
  summary: `List ${relation.name} of ${plan.collection.name}`,
369
- description: `Lists the ${quoted(foreign.collection.name)} records related to a ${quoted(plan.collection.name)} record through ${parent}.`,
412
+ description: `Lists the ${(0, names_1.quoted)(foreign.collection.name)} records related to a ${(0, names_1.quoted)(plan.collection.name)} record through ${parent}.`,
370
413
  request: requests.list,
371
- response: pool.reuse('ListResponse', schemas_1.ListResponseSchema),
372
- responseDescription: `A page of related ${quoted(foreign.collection.name)} records`,
414
+ response: foreign.response,
415
+ responseDescription: `A page of related ${(0, names_1.quoted)(foreign.collection.name)} records`,
373
416
  bodyRequired: true,
374
417
  });
375
418
  registerOperation(deps, {
@@ -377,10 +420,10 @@ function registerRelationOperations(deps, plan, plansByName, namer) {
377
420
  operationId: `countRelatedRecords_${relationKey}`,
378
421
  tag: plan.collection.name,
379
422
  summary: `Count ${relation.name} of ${plan.collection.name}`,
380
- description: `Counts the ${quoted(foreign.collection.name)} records related through ${parent}.`,
423
+ description: `Counts the ${(0, names_1.quoted)(foreign.collection.name)} records related through ${parent}.`,
381
424
  request: requests.count,
382
425
  response: pool.reuse('CountResponse', schemas_1.CountResponseSchema),
383
- responseDescription: `The matching related ${quoted(foreign.collection.name)} record count`,
426
+ responseDescription: `The matching related ${(0, names_1.quoted)(foreign.collection.name)} record count`,
384
427
  bodyRequired: true,
385
428
  });
386
429
  });
@@ -392,7 +435,7 @@ function registerActionOperations(deps, plan, namer) {
392
435
  const request = registerActionRequest(deps, plan, action, actionKey);
393
436
  // The path segment is the exact schema action name, URL-encoded — that is what the middleware
394
437
  // decodes and looks up. The operationId is sanitized, so the exact name lives in prose.
395
- const identity = `The action name is exactly ${quoted(action.name)}.`;
438
+ const identity = `The action name is exactly ${(0, names_1.quoted)(action.name)}.`;
396
439
  const base = `${segment(plan.collection.name)}/actions/${segment(action.name)}`;
397
440
  registerOperation(deps, {
398
441
  path: `${base}/form`,
@@ -439,6 +482,7 @@ function registerUnfoldedPaths(deps, unfolding) {
439
482
  key,
440
483
  properties,
441
484
  requests: registerRequests(deps, { collection, key }, properties),
485
+ response: registerListResponse(deps, { collection, key }),
442
486
  };
443
487
  });
444
488
  const plansByName = new Map(plans.map(plan => [plan.collection.name, plan]));
@@ -448,4 +492,4 @@ function registerUnfoldedPaths(deps, unfolding) {
448
492
  registerActionOperations(deps, plan, actions);
449
493
  });
450
494
  }
451
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5mb2xkZWQtcGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3BlbmFwaS91bmZvbGRlZC1wYXRocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQTRuQkEsd0NBNEJDO0FBem9CRCxvRUFBNEM7QUFDNUMsb0RBQWtDO0FBQ2xDLHVDQWFtQjtBQUNuQiw2Q0FBc0Q7QUFDdEQsNkRBQTREO0FBQzVELHlEQUF5RDtBQUV6RCxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVsQyxNQUFNLGFBQWEsR0FBOEQ7SUFDL0Usd0JBQXdCLEVBQ3RCLGlGQUFpRjtRQUNqRix5RkFBeUY7UUFDekYsNEJBQTRCO0lBQzlCLFNBQVMsRUFDUCwwRkFBMEY7UUFDMUYsNEZBQTRGO1FBQzVGLGdFQUFnRTtDQUNuRSxDQUFDO0FBOEJGLFNBQVMsTUFBTSxDQUFDLElBQVk7SUFDMUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFRCxpR0FBaUc7QUFDakcsbUdBQW1HO0FBQ25HLDZDQUE2QztBQUM3QyxTQUFTLE9BQU8sQ0FBQyxJQUFZO0lBQzNCLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUNqQixJQUFtQixFQUNuQixJQUFZLEVBQ1osTUFBZ0IsRUFDaEIsV0FBbUI7SUFFbkIsZ0dBQWdHO0lBQ2hHLG9GQUFvRjtJQUNwRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFFbkQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFPRDs7Ozs7OztH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
495
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5mb2xkZWQtcGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3BlbmFwaS91bmZvbGRlZC1wYXRocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtwQkEsd0NBNkJDO0FBaHFCRCxvRUFBNEM7QUFDNUMsaURBQThDO0FBQzlDLG1FQUFvRTtBQUNwRSx1Q0FjbUI7QUFDbkIsNkNBQXNEO0FBQ3RELDZEQUE0RDtBQUM1RCx5REFBeUQ7QUFFekQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFbEMsTUFBTSxhQUFhLEdBQThEO0lBQy9FLHdCQUF3QixFQUN0QixpRkFBaUY7UUFDakYseUZBQXlGO1FBQ3pGLDRCQUE0QjtJQUM5QixTQUFTLEVBQ1AsMEZBQTBGO1FBQzFGLDRGQUE0RjtRQUM1RixnRUFBZ0U7Q0FDbkUsQ0FBQztBQWdDRixpR0FBaUc7QUFDakcsbUdBQW1HO0FBQ25HLDZDQUE2QztBQUM3QyxTQUFTLE9BQU8sQ0FBQyxJQUFZO0lBQzNCLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUNqQixJQUFtQixFQUNuQixJQUFZLEVBQ1osTUFBZ0IsRUFDaEIsV0FBbUI7SUFFbkIsZ0dBQWdHO0lBQ2hHLG9GQUFvRjtJQUNwRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFFbkQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFPRDs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxVQUE2QjtJQUNy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
@@ -30,10 +30,18 @@ export interface UnfoldedRelation {
30
30
  * their field schemas stay free-form strings — an empty enum would forbid every valid call.
31
31
  */
32
32
  export interface CollectionFields {
33
- projectable: string[];
33
+ projectable: ProjectableField[];
34
34
  filterable: FilterableField[];
35
35
  degraded: DegradedReason | null;
36
36
  }
37
+ /**
38
+ * A field the agent reports, with the column type it declares. The type is what turns the response
39
+ * records into a typed schema; the name is what the request enums carry.
40
+ */
41
+ export interface ProjectableField {
42
+ name: string;
43
+ type: FieldType;
44
+ }
37
45
  /**
38
46
  * A field the agent reports at least one operator for, with that operator set — the very set the
39
47
  * runtime validates a filter leaf against. Normalized to canonical PascalCase and to the
@@ -14,4 +14,4 @@ function isFullyDegraded(unfolding) {
14
14
  return (unfolding.collections.length > 0 &&
15
15
  unfolding.collections.every(collection => collection.fields.degraded !== null));
16
16
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5mb2xkaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZW5hcGkvdW5mb2xkaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBdURBLHNEQUVDO0FBTUQsMENBS0M7QUFkRCx3RUFBd0U7QUFDeEUsU0FBZ0IscUJBQXFCLENBQUMsU0FBb0I7SUFDeEQsT0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQ3ZGLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixlQUFlLENBQUMsU0FBb0I7SUFDbEQsT0FBTyxDQUNMLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDaEMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FDL0UsQ0FBQztBQUNKLENBQUMifQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5mb2xkaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZW5hcGkvdW5mb2xkaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZ0VBLHNEQUVDO0FBTUQsMENBS0M7QUFkRCx3RUFBd0U7QUFDeEUsU0FBZ0IscUJBQXFCLENBQUMsU0FBb0I7SUFDeEQsT0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQ3ZGLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixlQUFlLENBQUMsU0FBb0I7SUFDbEQsT0FBTyxDQUNMLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDaEMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FDL0UsQ0FBQztBQUNKLENBQUMifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forestadmin/agent-bff",
3
- "version": "1.23.8",
3
+ "version": "1.24.0",
4
4
  "main": "dist/index.js",
5
5
  "bin": {
6
6
  "forest-bff": "dist/cli.js"
@@ -37,16 +37,18 @@
37
37
  "@forestadmin/datasource-toolkit": "1.55.1",
38
38
  "@forestadmin/forestadmin-client": "1.43.3",
39
39
  "@koa/bodyparser": "^6.1.0",
40
+ "inflected": "^1.1.6",
40
41
  "jsonwebtoken": "^9.0.3",
41
42
  "koa": "^3.0.1",
42
43
  "sanitize-html": "2.17.5",
43
44
  "zod": "4.3.6"
44
45
  },
45
46
  "devDependencies": {
46
- "@forestadmin/agent": "1.98.7",
47
- "@forestadmin/agent-testing": "1.2.11",
47
+ "@forestadmin/agent": "1.98.8",
48
+ "@forestadmin/agent-testing": "1.2.12",
48
49
  "@hey-api/openapi-ts": "0.99.0",
49
50
  "@redocly/cli": "2.35.1",
51
+ "@types/inflected": "^1.1.29",
50
52
  "@types/jsonwebtoken": "^9.0.1",
51
53
  "@types/koa": "^2.13.5",
52
54
  "@types/sanitize-html": "^2.16.1",