@kozou/api 0.2.1 → 1.1.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/README.md +158 -28
- package/dist/embed.d.ts.map +1 -1
- package/dist/embed.js +22 -8
- package/dist/embed.js.map +1 -1
- package/dist/handler.d.ts +4 -0
- package/dist/handler.d.ts.map +1 -1
- package/dist/handler.js +69 -5
- package/dist/handler.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/openapi.d.ts.map +1 -1
- package/dist/openapi.js +317 -62
- package/dist/openapi.js.map +1 -1
- package/dist/query-builder.d.ts +31 -2
- package/dist/query-builder.d.ts.map +1 -1
- package/dist/query-builder.js +443 -34
- package/dist/query-builder.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,57 +1,187 @@
|
|
|
1
1
|
# @kozou/api
|
|
2
2
|
|
|
3
|
-
> **
|
|
4
|
-
>
|
|
5
|
-
>
|
|
3
|
+
> **Stable (Kozou v1.0; composite foreign keys as of v1.1).** The REST wire
|
|
4
|
+
> format, query grammar, and OpenAPI extensions documented below are a stable
|
|
5
|
+
> contract: they will not change incompatibly without a major release — see
|
|
6
|
+
> [Stability](#stability).
|
|
6
7
|
|
|
7
8
|
Kozou's own REST layer. Given a `SchemaContext` (from `@kozou/introspect`
|
|
8
9
|
+ `@kozou/core`) and a PostgreSQL connection, it serves the tables and
|
|
9
10
|
views of your database as a REST API, driven entirely by your DDL and
|
|
10
11
|
`COMMENT` metadata — no hand-written route code.
|
|
11
12
|
|
|
12
|
-
This is the in-house data layer that Kozou v1.0
|
|
13
|
-
|
|
14
|
-
the
|
|
15
|
-
|
|
13
|
+
This is the in-house data layer that Kozou v1.0 makes the default backend.
|
|
14
|
+
The Admin UI talks to it through the same `DataAdapter` seam (`@kozou/core`)
|
|
15
|
+
it already uses, so swapping the data layer is not a breaking change for UI
|
|
16
|
+
code.
|
|
16
17
|
|
|
17
|
-
##
|
|
18
|
+
## API
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
### Service
|
|
20
21
|
|
|
21
|
-
- `GET /` — service info
|
|
22
|
-
- `GET
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
- `GET /` — service info (name, version) and the list of available resources.
|
|
23
|
+
- `GET /openapi.json` — an OpenAPI 3.1 document for the whole API
|
|
24
|
+
(see [OpenAPI](#openapi)).
|
|
25
|
+
|
|
26
|
+
### Reading
|
|
27
|
+
|
|
28
|
+
- `GET /<resource>` — list rows of a table or view. Returns
|
|
29
|
+
`{ rows, total, page, pageSize }`. Supports:
|
|
30
|
+
- **pagination** — `page` (1-based) and `pageSize` (`LIMIT` / `OFFSET`, capped);
|
|
31
|
+
- **sort** — `sort=field.asc,other.desc`;
|
|
32
|
+
- **filter** — `<column>=<op>.<value>` (see [Filtering](#filtering));
|
|
33
|
+
- **free-text search** — `search=<text>` (`ILIKE` across text columns);
|
|
34
|
+
- **embedding** — `embed=<relation-chain>` (see [Embedding](#embedding)).
|
|
35
|
+
- `GET /<resource>/<id>` — fetch a single table row by primary key. For a
|
|
36
|
+
composite primary key, `<id>` is the key columns in declaration order,
|
|
37
|
+
comma-joined in one path segment (`/order_lines/42,3`); `embed` is
|
|
38
|
+
supported here too. Returns the row, or `404`.
|
|
28
39
|
- `GET /<resource>?as=options&label=<col>&fields=<a,b>&q=<text>&limit=<n>`
|
|
29
40
|
— lightweight relation-select lookup. Returns `{ options: [{ id, label }] }`.
|
|
30
|
-
- `
|
|
31
|
-
primary
|
|
41
|
+
For a composite-key resource each `id` is a JSON array of key components in
|
|
42
|
+
primary-key declaration order. To address that row's item route, build the
|
|
43
|
+
`{id}` path segment from the components: percent-encode each component and
|
|
44
|
+
join them with an unescaped comma. A component value that itself contains
|
|
45
|
+
a comma cannot be represented in the item route (a documented limitation
|
|
46
|
+
of the comma-joined segment).
|
|
47
|
+
|
|
48
|
+
### Writing
|
|
49
|
+
|
|
32
50
|
- `POST /<resource>` — create a row from a JSON body; returns `201` + the
|
|
33
51
|
created row. An empty body inserts a row of column defaults.
|
|
34
52
|
- `PATCH /<resource>/<id>` — update the supplied columns; returns the row,
|
|
35
53
|
or `404`.
|
|
36
54
|
- `DELETE /<resource>/<id>` — delete by primary key; returns the deleted
|
|
37
55
|
row, or `404`.
|
|
38
|
-
- `GET /openapi.json` — an OpenAPI 3.1 document for the whole API.
|
|
39
|
-
Descriptions, `enum`s, and AI notes are sourced from the database
|
|
40
|
-
`COMMENT`s: table/view/column descriptions become schema `description`s,
|
|
41
|
-
`@ai:` notes become `x-kozou-ai`, CHECK / ENUM members become `enum`,
|
|
42
|
-
and the resolved widget becomes `x-kozou-widget`.
|
|
43
56
|
|
|
44
57
|
Writes are rejected on views (`405`) and on unknown columns (`400`).
|
|
45
58
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
59
|
+
### Filtering
|
|
60
|
+
|
|
61
|
+
List filters use a `<column>=<op>.<value>` grammar:
|
|
62
|
+
|
|
63
|
+
| operator | meaning |
|
|
64
|
+
|---|---|
|
|
65
|
+
| `eq` / `neq` | equal / not equal |
|
|
66
|
+
| `gt` / `gte` / `lt` / `lte` | range comparisons |
|
|
67
|
+
| `like` / `ilike` | pattern match (`*` is the wildcard) |
|
|
68
|
+
| `in` | membership — `in.(a,b,c)` |
|
|
69
|
+
| `is` | `is.null` / `is.notnull` / `is.true` / `is.false` |
|
|
70
|
+
|
|
71
|
+
A bare value (`status=paid`) is shorthand for `eq` and stays backward
|
|
72
|
+
compatible. Repeating a column ANDs its filters (e.g. a `gte` + `lt` range).
|
|
73
|
+
A value that itself looks like an operator can be forced to equality with an
|
|
74
|
+
explicit `eq.` prefix (`name=eq.gt.5`). Operators are a fixed allowlist, the
|
|
75
|
+
column is checked against the schema, and every value is passed as a bound
|
|
76
|
+
parameter — nothing is interpolated into SQL text. Values for the common
|
|
77
|
+
scalar families (integer, numeric / float, boolean) are validated up front
|
|
78
|
+
and rejected with a `400`; values for other types are enforced by
|
|
79
|
+
PostgreSQL.
|
|
80
|
+
|
|
81
|
+
### Embedding
|
|
82
|
+
|
|
83
|
+
`embed=<relation-chain>` inlines related rows as nested JSON, on both list
|
|
84
|
+
and item reads:
|
|
85
|
+
|
|
86
|
+
- forward (to-one) and reverse (to-many) relations, mixed in one request —
|
|
87
|
+
including composite (multi-column) foreign keys, which join on every
|
|
88
|
+
column pair; a forward composite relation is selected by its referenced
|
|
89
|
+
table name, a reverse one by the child table name, and `x-kozou-embeds`
|
|
90
|
+
advertises only relations whose selector is unambiguous;
|
|
91
|
+
- dot-separated chains up to 5 deep (`embed=order.customer.region`);
|
|
92
|
+
- comma-separated for several relations (`embed=customer,lines`);
|
|
93
|
+
- up to 25 distinct relations per request, and up to 100 child rows inlined
|
|
94
|
+
per parent for a to-many relation.
|
|
95
|
+
|
|
96
|
+
To-many embeds are rendered as a JSON array ordered by the child's primary
|
|
97
|
+
key. Many-to-many is expressed by naming the junction explicitly
|
|
98
|
+
(`embed=link.far`); there is no automatic flattening of junction tables.
|
|
99
|
+
|
|
100
|
+
### OpenAPI
|
|
101
|
+
|
|
102
|
+
`GET /openapi.json` returns an OpenAPI 3.1 document generated from the
|
|
103
|
+
schema. Database `COMMENT`s drive it: table / view / column descriptions
|
|
104
|
+
become schema `description`s, CHECK / ENUM members become `enum`, and
|
|
105
|
+
Kozou's `@`-annotations become vendor extensions:
|
|
106
|
+
|
|
107
|
+
- `@ai:` notes → `x-kozou-ai`
|
|
108
|
+
- the resolved widget → `x-kozou-widget`
|
|
109
|
+
- `@policy:` advisories → `x-kozou-policy`
|
|
110
|
+
- embeddable relations → `x-kozou-embeds` (with `cardinality`)
|
|
111
|
+
|
|
112
|
+
The document models the schema, the `x-kozou-*` metadata, and the list /
|
|
113
|
+
item / CRUD surface faithfully: create and update carry their own request
|
|
114
|
+
schemas (`<resource>.CreateInput` requires only NOT NULL columns without a
|
|
115
|
+
default; `<resource>.UpdateInput` is a partial subset), the `as=options`
|
|
116
|
+
relation-select mode is documented on the collection path with its alternate
|
|
117
|
+
response shape, and the advertised embed hints match what the server
|
|
118
|
+
resolves at request time.
|
|
119
|
+
|
|
120
|
+
## Stability
|
|
121
|
+
|
|
122
|
+
Stable as of Kozou v1.0 (covered by semantic versioning — no incompatible
|
|
123
|
+
change without a major release):
|
|
124
|
+
|
|
125
|
+
- the REST envelopes — the list `{ rows, total, page, pageSize }`, the item
|
|
126
|
+
shape, and the create / update / delete return shapes;
|
|
127
|
+
- the query grammar — pagination, `sort`, the `<column>=<op>.<value>` filter
|
|
128
|
+
grammar, `as=options`, and `embed`;
|
|
129
|
+
- the `GET /openapi.json` document — OpenAPI 3.1 plus the `x-kozou-ai` /
|
|
130
|
+
`x-kozou-widget` / `x-kozou-policy` / `x-kozou-embeds` extensions;
|
|
131
|
+
- the **composite-foreign-key relation shape** (as of Kozou v1.1) — a
|
|
132
|
+
multi-column foreign key is a first-class relation. Where advertised in
|
|
133
|
+
`x-kozou-embeds` it embeds, with the server joining on every column pair.
|
|
134
|
+
A forward composite relation is selected by its referenced table name
|
|
135
|
+
(advertised only when no other foreign key shares that target table); a
|
|
136
|
+
reverse one is selected by the child table name (advertised only when the
|
|
137
|
+
child has exactly one foreign key back and no forward relation shadows
|
|
138
|
+
that name). The hint carries `fields` (the local foreign-key columns, in
|
|
139
|
+
declaration order; the hint is an embed selector, not a join recipe), and
|
|
140
|
+
`as=options` on a composite-key target returns array option ids whose
|
|
141
|
+
components follow primary-key declaration order;
|
|
142
|
+
- the auth boundary — JWT claims mapped to `SET LOCAL ROLE` (see below).
|
|
143
|
+
|
|
144
|
+
Still evolving (not yet covered by the stability guarantee):
|
|
145
|
+
|
|
146
|
+
- the **`@kozou/codegen`** output (a separate package, still experimental).
|
|
147
|
+
|
|
148
|
+
## Scope: default coverage vs PostgREST opt-out
|
|
149
|
+
|
|
150
|
+
`@kozou/api` covers the relational REST surface most schemas need; Kozou
|
|
151
|
+
v1.0 makes it the default backend. Deployments that need a feature in the
|
|
152
|
+
"opt-out" column can stay on (or switch back to) the PostgREST adapter
|
|
153
|
+
(`adapter: postgrest`) — see the migration notes in the `kozou` package. The
|
|
154
|
+
intent is no silent gap: the in-house backend by default, PostgREST as a
|
|
155
|
+
deliberate opt-out.
|
|
156
|
+
|
|
157
|
+
| Capability | `@kozou/api` (v1.0 default) | Notes |
|
|
158
|
+
|---|---|---|
|
|
159
|
+
| Table CRUD | ✅ (incl. composite primary keys) | item routes (get/update/delete by id) need a primary key — single or composite; a primary-key-less table gets list + create only |
|
|
160
|
+
| Views | ✅ read-only / list | no item-by-id, writes are `405`, no embedding from a view |
|
|
161
|
+
| Embed 1:1 / many-to-1 / 1-to-many | ✅ `embed=` (mixed direction, multi-hop) | forward to-one + reverse to-many |
|
|
162
|
+
| Many-to-many | △ name the junction and chain (`embed=link.far`) | no automatic junction flattening |
|
|
163
|
+
| Relation-select | ✅ `as=options&label=&q=` | composite-key targets return array option ids (components in key declaration order) |
|
|
164
|
+
| Filter operators | ✅ `eq` / `neq` / `gt` / `gte` / `lt` / `lte` / `like` / `ilike` / `in` / `is` | |
|
|
165
|
+
| Sort / pagination | ✅ | `sort`, `page` / `pageSize` |
|
|
166
|
+
| COMMENT-native OpenAPI 3.1 (`x-kozou-*`) | ✅ | **Kozou's differentiator** — PostgREST treats COMMENTs as opaque text |
|
|
167
|
+
| JWT + RLS (`SET LOCAL ROLE`) | ✅ | |
|
|
168
|
+
| RPC (Postgres functions) | ❌ opt-out | |
|
|
169
|
+
| Full-text search (fts) | ❌ opt-out | approximate with `ilike` |
|
|
170
|
+
| Vertical select (column projection) | ❌ opt-out | always returns all columns |
|
|
171
|
+
| Writable views (`INSTEAD OF`) | ❌ opt-out | views are read-only |
|
|
172
|
+
| Upsert / bulk insert | ❌ opt-out | |
|
|
173
|
+
| Automatic M:N flattening | ❌ opt-out | name the junction instead |
|
|
50
174
|
|
|
51
175
|
## Security boundary
|
|
52
176
|
|
|
177
|
+
Kozou is a **resource server and enforcement layer, not an identity provider**: it
|
|
178
|
+
verifies tokens and switches PostgreSQL role so your RLS decides access, but user
|
|
179
|
+
registration, login, and token *issuance* are delegated to an external provider
|
|
180
|
+
(Supabase Auth recommended; Auth0 / Clerk via the JWKS endpoint below). Shipping a
|
|
181
|
+
user-management / login library is a non-goal.
|
|
182
|
+
|
|
53
183
|
By default the API ships with **no authentication** and binds to
|
|
54
|
-
`127.0.0.1` (like the MCP HTTP server
|
|
184
|
+
`127.0.0.1` (like the MCP HTTP server); it prints a
|
|
55
185
|
loud warning when bound to a non-loopback host. Run the unauthenticated
|
|
56
186
|
server only inside a trusted boundary (local dev, a docker-compose network).
|
|
57
187
|
|
package/dist/embed.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAmB,MAAM,oBAAoB,CAAC;AAEpF,6EAA6E;AAC7E,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,uEAAuE;AACvE,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE7C,MAAM,MAAM,SAAS,GAAG;IACtB;8BAC0B;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB;;;oDAGgD;IAChD,QAAQ,EAAE,eAAe,CAAC;IAC1B,2EAA2E;IAC3E,MAAM,EAAE,QAAQ,CAAC;IACjB,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,gDAAgD;IAChD,QAAQ,EAAE,SAAS,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC;AAEpC;0EAC0E;AAC1E,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,EAAE,EAAE,CAW1E;AAED;;;wCAGwC;AACxC,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,MAAM,EAAE,EAAE,EACjB,MAAM,EAAE,cAAc,GACrB,SAAS,CAUX;
|
|
1
|
+
{"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAmB,MAAM,oBAAoB,CAAC;AAEpF,6EAA6E;AAC7E,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,uEAAuE;AACvE,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE7C,MAAM,MAAM,SAAS,GAAG;IACtB;8BAC0B;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB;;;oDAGgD;IAChD,QAAQ,EAAE,eAAe,CAAC;IAC1B,2EAA2E;IAC3E,MAAM,EAAE,QAAQ,CAAC;IACjB,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,gDAAgD;IAChD,QAAQ,EAAE,SAAS,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC;AAEpC;0EAC0E;AAC1E,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,EAAE,EAAE,CAW1E;AAED;;;wCAGwC;AACxC,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,MAAM,EAAE,EAAE,EACjB,MAAM,EAAE,cAAc,GACrB,SAAS,CAUX;AA0HD;;;;;;;4FAO4F;AAC5F,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,SAAS,EAAE,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GACrB,MAAM,CAoCR"}
|
package/dist/embed.js
CHANGED
|
@@ -58,7 +58,8 @@ function insertPath(parent, path, index, siblings, lookup, counter) {
|
|
|
58
58
|
const resolved = resolveSegment(parent, path[index], lookup);
|
|
59
59
|
let node = siblings.find((s) => s.kind === resolved.kind &&
|
|
60
60
|
s.target.qualifiedName === resolved.target.qualifiedName &&
|
|
61
|
-
s.relation.
|
|
61
|
+
(s.relation.fields ?? [s.relation.field]).join(',') ===
|
|
62
|
+
(resolved.relation.fields ?? [resolved.relation.field]).join(','));
|
|
62
63
|
if (node === undefined) {
|
|
63
64
|
if (counter.n >= MAX_EMBED_RELATIONS) {
|
|
64
65
|
throw badRequest(`Embed requests too many relations (max ${MAX_EMBED_RELATIONS}).`);
|
|
@@ -86,10 +87,11 @@ function resolveSegment(parent, selector, lookup) {
|
|
|
86
87
|
}
|
|
87
88
|
throw badRequest(`Unknown embed relation "${selector}" on resource "${parent.name}".`);
|
|
88
89
|
}
|
|
89
|
-
/** Match a forward to-one relation by FK field name
|
|
90
|
-
*
|
|
90
|
+
/** Match a forward to-one relation by FK field name (single-column FKs only —
|
|
91
|
+
* a composite FK has no single column name, so it is selected by table name),
|
|
92
|
+
* or by referenced table name when exactly one FK targets it. */
|
|
91
93
|
function matchForward(parent, selector) {
|
|
92
|
-
const byField = parent.relations.find((r) => r.field === selector);
|
|
94
|
+
const byField = parent.relations.find((r) => (r.fields ?? [r.field]).length === 1 && r.field === selector);
|
|
93
95
|
if (byField !== undefined)
|
|
94
96
|
return byField;
|
|
95
97
|
const byTable = parent.relations.filter((r) => r.references.table === selector);
|
|
@@ -156,15 +158,27 @@ export function buildEmbedSelectFragment(spec, parentRef, counter) {
|
|
|
156
158
|
? node.target.columns.map((c) => quoteIdent(c.name)).join(', ')
|
|
157
159
|
: '*';
|
|
158
160
|
const children = buildEmbedSelectFragment(node.children, alias, counter);
|
|
159
|
-
|
|
160
|
-
|
|
161
|
+
// The FK columns on this side (`relation.fields`) align positionally with
|
|
162
|
+
// the referenced columns (`relation.references.columns`). A composite key
|
|
163
|
+
// joins on all pairs with AND; a single-column key is the one-pair case.
|
|
164
|
+
// Normalize the v1.1 arrays against the back-compat scalar fields.
|
|
165
|
+
const fkFields = node.relation.fields ?? [node.relation.field];
|
|
166
|
+
const refCols = node.relation.references.columns ?? [node.relation.references.column];
|
|
161
167
|
if (node.kind === 'to-one') {
|
|
162
|
-
|
|
168
|
+
// Forward: parent holds the FK -> match target.refCol = parent.fkField.
|
|
169
|
+
const on = fkFields
|
|
170
|
+
.map((fk, i) => `${alias}.${quoteIdent(refCols[i])} = ${parentRef}.${quoteIdent(fk)}`)
|
|
171
|
+
.join(' AND ');
|
|
172
|
+
const inner = `SELECT ${cols}${children} FROM ${qualified(node.target)} ${alias} WHERE ${on}`;
|
|
163
173
|
out += `, (SELECT to_jsonb(${alias}) FROM (${inner}) ${alias}) AS ${quoteIdent(node.key)}`;
|
|
164
174
|
}
|
|
165
175
|
else {
|
|
176
|
+
// Reverse: child holds the FK -> match child.fkField = parent.refCol.
|
|
177
|
+
const on = fkFields
|
|
178
|
+
.map((fk, i) => `${alias}.${quoteIdent(fk)} = ${parentRef}.${quoteIdent(refCols[i])}`)
|
|
179
|
+
.join(' AND ');
|
|
166
180
|
const order = orderByPrimaryKey(node.target, alias);
|
|
167
|
-
const inner = `SELECT ${cols}${children} FROM ${qualified(node.target)} ${alias} WHERE ${
|
|
181
|
+
const inner = `SELECT ${cols}${children} FROM ${qualified(node.target)} ${alias} WHERE ${on}${order} LIMIT ${MAX_EMBED_CHILDREN}`;
|
|
168
182
|
out += `, (SELECT coalesce(jsonb_agg(to_jsonb(${alias})${order}), '[]'::jsonb) FROM (${inner}) ${alias}) AS ${quoteIdent(node.key)}`;
|
|
169
183
|
}
|
|
170
184
|
}
|
package/dist/embed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embed.js","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,sDAAsD;AACtD,yEAAyE;AACzE,wEAAwE;AACxE,EAAE;AACF,YAAY;AACZ,mFAAmF;AACnF,0FAA0F;AAC1F,wFAAwF;AACxF,EAAE;AACF,yEAAyE;AACzE,+EAA+E;AAC/E,6EAA6E;AAC7E,2EAA2E;AAC3E,0BAA0B;AAG1B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGnD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,uEAAuE;AACvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACtC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAuBtC;0EAC0E;AAC1E,MAAM,UAAU,eAAe,CAAC,GAA8B;IAC5D,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACjD,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,KAAK;aACnB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/B,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;wCAGwC;AACxC,MAAM,UAAU,gBAAgB,CAC9B,IAAc,EACd,KAAiB,EACjB,MAAsB;IAEtB,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACzB,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;YAClC,MAAM,UAAU,CAAC,eAAe,IAAI,CAAC,MAAM,2BAA2B,eAAe,GAAG,CAAC,CAAC;QAC5F,CAAC;QACD,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CACjB,MAAgB,EAChB,IAAc,EACd,KAAa,EACb,QAAqB,EACrB,MAAsB,EACtB,OAAsB;IAEtB,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO;IACjC,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7D,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CACtB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;QACxB,CAAC,CAAC,MAAM,CAAC,aAAa,KAAK,QAAQ,CAAC,MAAM,CAAC,aAAa;QACxD,CAAC,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"embed.js","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"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"}
|
package/dist/handler.d.ts
CHANGED
|
@@ -30,6 +30,10 @@ export type ApiHttpResult = {
|
|
|
30
30
|
status: number;
|
|
31
31
|
body: unknown;
|
|
32
32
|
};
|
|
33
|
+
/** List query keys consumed as controls (not column filters). Shared with the
|
|
34
|
+
* OpenAPI generator so it never advertises a control key as a filterable
|
|
35
|
+
* column. */
|
|
36
|
+
export declare const RESERVED_PARAMS: Set<string>;
|
|
33
37
|
export declare function handleApiRequest(deps: ApiHandlerDeps, req: ApiHttpRequest): Promise<ApiHttpResult>;
|
|
34
38
|
export declare function parseListParams(query: URLSearchParams): ListQueryParams;
|
|
35
39
|
//# sourceMappingURL=handler.d.ts.map
|
package/dist/handler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAY,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAOL,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAY,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAOL,KAAK,eAAe,EAIrB,MAAM,oBAAoB,CAAC;AAG5B,2EAA2E;AAC3E,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;IACvB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,eAAe,CAAC;IACvB,yEAAyE;IACzE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;8BAC0B;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF;;cAEc;AACd,eAAO,MAAM,eAAe,aAA2D,CAAC;AAExF,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,aAAa,CAAC,CAUxB;AAyLD,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,eAAe,CA0BvE"}
|
package/dist/handler.js
CHANGED
|
@@ -4,7 +4,10 @@
|
|
|
4
4
|
import { KozouApiError, badRequest, errorBody, methodNotAllowed, notFound } from './errors.js';
|
|
5
5
|
import { buildGetQuery, buildListQuery, buildInsertQuery, buildUpdateQuery, buildDeleteQuery, buildRelationOptionsQuery, } from './query-builder.js';
|
|
6
6
|
import { parseEmbedParam, resolveEmbedSpec } from './embed.js';
|
|
7
|
-
|
|
7
|
+
/** List query keys consumed as controls (not column filters). Shared with the
|
|
8
|
+
* OpenAPI generator so it never advertises a control key as a filterable
|
|
9
|
+
* column. */
|
|
10
|
+
export const RESERVED_PARAMS = new Set(['page', 'pageSize', 'sort', 'search', 'embed']);
|
|
8
11
|
export async function handleApiRequest(deps, req) {
|
|
9
12
|
try {
|
|
10
13
|
return await route(deps, req);
|
|
@@ -119,8 +122,14 @@ async function relationOptions(deps, resource, query) {
|
|
|
119
122
|
limit: parsePositiveInt(query.get('limit')),
|
|
120
123
|
});
|
|
121
124
|
const result = await deps.db.query(built.text, built.values);
|
|
125
|
+
// A single-column key yields a scalar id; a composite key yields an array
|
|
126
|
+
// of components in primary-key declaration order (a valid item id for the
|
|
127
|
+
// target resource).
|
|
128
|
+
const keyColumns = built.primaryKeys ?? [built.primaryKey];
|
|
122
129
|
const options = result.rows.map((row) => ({
|
|
123
|
-
id:
|
|
130
|
+
id: keyColumns.length === 1
|
|
131
|
+
? row[keyColumns[0]]
|
|
132
|
+
: keyColumns.map((column) => row[column]),
|
|
124
133
|
label: String(row[built.labelField] ?? ''),
|
|
125
134
|
}));
|
|
126
135
|
return { status: 200, body: { options } };
|
|
@@ -168,16 +177,71 @@ export function parseListParams(query) {
|
|
|
168
177
|
const sort = parseSort(query.get('sort'));
|
|
169
178
|
if (sort.length > 0)
|
|
170
179
|
params.sort = sort;
|
|
171
|
-
|
|
180
|
+
// Each non-reserved query entry is one horizontal filter. Repeated keys are
|
|
181
|
+
// kept (not collapsed) so a column can carry several filters — e.g. a
|
|
182
|
+
// `?price=gte.10&price=lte.20` range — that combine with AND.
|
|
183
|
+
const filters = [];
|
|
172
184
|
for (const [key, value] of query.entries()) {
|
|
173
185
|
if (RESERVED_PARAMS.has(key))
|
|
174
186
|
continue;
|
|
175
|
-
filters
|
|
187
|
+
filters.push(parseFilter(key, value));
|
|
176
188
|
}
|
|
177
|
-
if (
|
|
189
|
+
if (filters.length > 0)
|
|
178
190
|
params.filters = filters;
|
|
179
191
|
return params;
|
|
180
192
|
}
|
|
193
|
+
const FILTER_OPERATORS = new Set([
|
|
194
|
+
'eq',
|
|
195
|
+
'neq',
|
|
196
|
+
'gt',
|
|
197
|
+
'gte',
|
|
198
|
+
'lt',
|
|
199
|
+
'lte',
|
|
200
|
+
'like',
|
|
201
|
+
'ilike',
|
|
202
|
+
'in',
|
|
203
|
+
'is',
|
|
204
|
+
]);
|
|
205
|
+
function isFilterOperator(token) {
|
|
206
|
+
return FILTER_OPERATORS.has(token);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Parse one `?<column>=<raw>` entry into a structured {@link Filter}.
|
|
210
|
+
*
|
|
211
|
+
* Grammar: `<op>.<value>` where `op` is one of the known operators; the split
|
|
212
|
+
* is on the FIRST `.` only (so values may contain dots). A value whose prefix
|
|
213
|
+
* is not a known operator — or which has no leading `op.` at all — is treated
|
|
214
|
+
* as an equality match, keeping the legacy `?<column>=<value>` form working.
|
|
215
|
+
* The split uses `indexOf`, not a regular expression (ReDoS-safe).
|
|
216
|
+
*/
|
|
217
|
+
function parseFilter(column, raw) {
|
|
218
|
+
const dot = raw.indexOf('.');
|
|
219
|
+
if (dot > 0) {
|
|
220
|
+
const maybeOp = raw.slice(0, dot);
|
|
221
|
+
if (isFilterOperator(maybeOp)) {
|
|
222
|
+
return buildFilter(column, maybeOp, raw.slice(dot + 1));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return { column, op: 'eq', value: raw };
|
|
226
|
+
}
|
|
227
|
+
function buildFilter(column, op, rhs) {
|
|
228
|
+
if (op === 'in') {
|
|
229
|
+
if (rhs.length < 2 || rhs[0] !== '(' || rhs[rhs.length - 1] !== ')') {
|
|
230
|
+
throw badRequest(`Filter "${column}=in.${rhs}" must look like "in.(v1,v2,...)".`);
|
|
231
|
+
}
|
|
232
|
+
const inner = rhs.slice(1, -1);
|
|
233
|
+
// Note: values cannot contain a comma (no quoting is supported in v1.0).
|
|
234
|
+
const values = inner.length === 0 ? [] : inner.split(',');
|
|
235
|
+
return { column, op: 'in', values };
|
|
236
|
+
}
|
|
237
|
+
if (op === 'is') {
|
|
238
|
+
if (rhs === 'null' || rhs === 'notnull' || rhs === 'true' || rhs === 'false') {
|
|
239
|
+
return { column, op: 'is', keyword: rhs };
|
|
240
|
+
}
|
|
241
|
+
throw badRequest(`Filter "${column}=is.${rhs}" must be one of is.null, is.notnull, is.true, is.false.`);
|
|
242
|
+
}
|
|
243
|
+
return { column, op, value: rhs };
|
|
244
|
+
}
|
|
181
245
|
function parsePositiveInt(raw) {
|
|
182
246
|
if (raw === null || raw.length === 0)
|
|
183
247
|
return undefined;
|
package/dist/handler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { startApiServer, createApiRequestListener, isLoopbackHost, type StartApi
|
|
|
2
2
|
export { createAuthenticator, signServiceToken, type AuthConfig, type AuthContext, type Authenticator, type JwtAlgorithm, type ServiceTokenOptions, } from './auth.js';
|
|
3
3
|
export { handleApiRequest, parseListParams, type Queryable, type ApiHandlerDeps, type ApiHttpRequest, type ApiHttpResult, } from './handler.js';
|
|
4
4
|
export { buildResourceLookup, type Resource, type ResourceKind, type ResourceLookup, type ReverseRelation, } from './schema-lookup.js';
|
|
5
|
-
export { buildListQuery, buildGetQuery, buildInsertQuery, buildUpdateQuery, buildDeleteQuery, buildRelationOptionsQuery, quoteIdent, DEFAULT_PAGE_SIZE, MAX_PAGE_SIZE, DEFAULT_RELATION_LIMIT, MAX_RELATION_LIMIT, type ListQueryParams, type BuiltListQuery, type BuiltGetQuery, type BuiltMutation, type RelationOptionsParams, type BuiltRelationOptions, type SortDirection, } from './query-builder.js';
|
|
5
|
+
export { buildListQuery, buildGetQuery, buildInsertQuery, buildUpdateQuery, buildDeleteQuery, buildRelationOptionsQuery, quoteIdent, DEFAULT_PAGE_SIZE, MAX_PAGE_SIZE, DEFAULT_RELATION_LIMIT, MAX_RELATION_LIMIT, type ListQueryParams, type BuiltListQuery, type BuiltGetQuery, type BuiltMutation, type RelationOptionsParams, type BuiltRelationOptions, type SortDirection, type Filter, type FilterOperator, type ScalarFilterOperator, type IsKeyword, } from './query-builder.js';
|
|
6
6
|
export { buildOpenApiDocument, type OpenApiOptions } from './openapi.js';
|
|
7
7
|
export { parseEmbedParam, resolveEmbedSpec, buildEmbedSelectFragment, MAX_EMBED_DEPTH, MAX_EMBED_RELATIONS, MAX_EMBED_CHILDREN, type EmbedKind, type EmbedNode, type EmbedSpec, } from './embed.js';
|
|
8
8
|
export { KozouApiError, type ApiErrorBody } from './errors.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,cAAc,GACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,mBAAmB,GACzB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mBAAmB,EACnB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,SAAS,GACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
// @kozou/api: Kozou's own REST layer
|
|
2
|
-
// Serves the tables and views of a SchemaContext as a REST API.
|
|
3
|
-
// Kozou
|
|
1
|
+
// @kozou/api: Kozou's own REST layer — the default `kozou dev` data backend.
|
|
2
|
+
// Serves the tables and views of a SchemaContext as a REST API. Its wire
|
|
3
|
+
// format and OpenAPI are a stable contract as of Kozou v1.0; see the README
|
|
4
|
+
// for the supported surface and the scope table.
|
|
4
5
|
export { startApiServer, createApiRequestListener, isLoopbackHost, } from './startApiServer.js';
|
|
5
6
|
export { createAuthenticator, signServiceToken, } from './auth.js';
|
|
6
7
|
export { handleApiRequest, parseListParams, } from './handler.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,iDAAiD;AAEjD,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,cAAc,GAKf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,GAMjB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,gBAAgB,EAChB,eAAe,GAKhB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mBAAmB,GAKpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,kBAAkB,GAYnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAuB,MAAM,cAAc,CAAC;AAEzE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,GAInB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAqB,MAAM,aAAa,CAAC"}
|
package/dist/openapi.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,aAAa,EAMd,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,aAAa,EAMd,MAAM,aAAa,CAAC;AAGrB,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAK1C,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,IAAI,GAAE,cAAmB,GACxB,UAAU,CAmFZ"}
|