ignotum 0.0.12 → 0.0.14
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/cli/bin.mjs +1183 -447
- package/dist/cli/bin.mjs.map +1 -1
- package/dist/runtime/{api-DzcR7spt.js → api-CAgKDij7.js} +38 -2
- package/dist/runtime/api-CAgKDij7.js.map +1 -0
- package/dist/runtime/{api-5XSrIeqW.d.ts → api-Cv3hMbzo.d.ts} +4 -4
- package/dist/runtime/client.d.ts +39 -9
- package/dist/runtime/client.js +362 -63
- package/dist/runtime/client.js.map +1 -1
- package/dist/runtime/descriptor-DCCz5AHd-_nhlnu8U.js +298 -0
- package/dist/runtime/descriptor-DCCz5AHd-_nhlnu8U.js.map +1 -0
- package/dist/runtime/id-Bt9XWRGL.js +423 -0
- package/dist/runtime/id-Bt9XWRGL.js.map +1 -0
- package/dist/runtime/{id-Cs82tq9Q-CK-maMgN.d.ts → id-BzFHf3Wo-DGPCjgrf.d.ts} +2 -2
- package/dist/runtime/id-E7JKqQ9r.d.ts +1 -0
- package/dist/runtime/index-DWU-7TIh.d.ts +185 -0
- package/dist/runtime/internal/api.d.ts +1 -1
- package/dist/runtime/internal/api.js +1 -1
- package/dist/runtime/internal/host.d.ts +28 -7
- package/dist/runtime/internal/host.js +37 -8
- package/dist/runtime/internal/host.js.map +1 -1
- package/dist/runtime/internal/server.d.ts +1 -1
- package/dist/runtime/internal/server.js +1 -1
- package/dist/runtime/internal/types.d.ts +2 -1
- package/dist/runtime/internal/types.js +1 -1
- package/dist/runtime/{pagination-D-R9NR61-CpIoHFoI.d.ts → pagination-CpYCaRYD-C2Rpp4Cw.d.ts} +42 -7
- package/dist/runtime/pagination-E7JKqQ9r.d.ts +1 -0
- package/dist/runtime/result-DKAA4gpS.d.ts +1 -0
- package/dist/runtime/{schema-B9XxyRO8.js → schema-DqogEydG.js} +41 -12
- package/dist/runtime/schema-DqogEydG.js.map +1 -0
- package/dist/runtime/server.d.ts +7 -4
- package/dist/runtime/server.js +2 -2
- package/dist/runtime/server.js.map +1 -1
- package/dist/runtime/{sync-avN7NkcU.d.ts → sync-Bs8J3fIr.d.ts} +2 -2
- package/dist/runtime/types-C1iDP2Yf-BnkfBOQf.d.ts +224 -0
- package/package.json +2 -2
- package/src/cli/agent-files.ts +10 -0
- package/src/cli/build/server.ts +35 -6
- package/src/cli/command.ts +25 -2
- package/src/cli/deploy.ts +34 -11
- package/src/client/hooks.ts +68 -0
- package/src/client/id.ts +259 -0
- package/src/client/index.ts +5 -2
- package/src/client/sync.ts +144 -11
- package/src/dev-runtime/database.ts +77 -2
- package/src/dev-runtime/functions.ts +111 -88
- package/src/dev-runtime/id.ts +190 -0
- package/src/dev-runtime/migrations.ts +9 -0
- package/src/dev-runtime/query-cache.ts +105 -0
- package/src/dev-runtime/sync.ts +149 -17
- package/src/internal/host.ts +1 -1
- package/src/server/index.ts +2 -0
- package/dist/runtime/api-DzcR7spt.js.map +0 -1
- package/dist/runtime/descriptor-XzDX2JDw-j3O6YHgW.js +0 -330
- package/dist/runtime/descriptor-XzDX2JDw-j3O6YHgW.js.map +0 -1
- package/dist/runtime/file-C1abuMgd.js +0 -173
- package/dist/runtime/file-C1abuMgd.js.map +0 -1
- package/dist/runtime/index-CrWg4Z0y.d.ts +0 -398
- package/dist/runtime/pagination-CX5IPbEi.d.ts +0 -1
- package/dist/runtime/result-DIjKM-p4.d.ts +0 -1
- package/dist/runtime/schema-B9XxyRO8.js.map +0 -1
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import { p as initial } from "./id-Bt9XWRGL.js";
|
|
2
|
+
import { Effect, Function, Predicate, Schema } from "effect";
|
|
3
|
+
//#region ../contracts/dist/runtime/pagination.js
|
|
4
|
+
const PaginationCursor = Schema.String.check(Schema.isBase64Url()).pipe(Schema.brand("ignotum/runtime/PaginationCursor"));
|
|
5
|
+
const PaginationPageSize = Schema.Int.check(Schema.isBetween({
|
|
6
|
+
minimum: 1,
|
|
7
|
+
maximum: 1e3
|
|
8
|
+
})).pipe(Schema.brand("ignotum/runtime/PaginationPageSize"));
|
|
9
|
+
Schema.Struct({
|
|
10
|
+
cursor: Schema.NullOr(PaginationCursor),
|
|
11
|
+
pageSize: PaginationPageSize
|
|
12
|
+
});
|
|
13
|
+
const TablePosition = Schema.Struct({
|
|
14
|
+
type: Schema.Literal("Table"),
|
|
15
|
+
createdAt: Schema.Int,
|
|
16
|
+
id: Schema.String
|
|
17
|
+
});
|
|
18
|
+
const IndexPosition = Schema.Struct({
|
|
19
|
+
type: Schema.Literal("Index"),
|
|
20
|
+
key: Schema.String.check(Schema.isPattern(/^(?:[0-9a-f]{2})*$/)).pipe(Schema.brand("ignotum/runtime/EncodedIndexKey"))
|
|
21
|
+
});
|
|
22
|
+
const PaginationPosition = Schema.Union([TablePosition, IndexPosition]);
|
|
23
|
+
const CursorPayloadV1 = Schema.Struct({
|
|
24
|
+
version: Schema.Literal(1),
|
|
25
|
+
query: Schema.String,
|
|
26
|
+
position: PaginationPosition
|
|
27
|
+
});
|
|
28
|
+
const CursorPayload = initial(CursorPayloadV1);
|
|
29
|
+
Schema.fromJsonString(CursorPayload);
|
|
30
|
+
//#endregion
|
|
31
|
+
//#region ../contracts/dist/descriptor-DCCz5AHd.js
|
|
32
|
+
const ValueEvolutionTypeId = Symbol.for("ignotum/schema/ValueEvolution");
|
|
33
|
+
const evolutionRules = (value) => value[ValueEvolutionTypeId] ?? {};
|
|
34
|
+
const codec = (value) => Schema.toCodecJson(value);
|
|
35
|
+
const encode = (schema, value) => Schema.decodeUnknownSync(Schema.Json)(Schema.encodeUnknownSync(codec(schema), { onExcessProperty: "error" })(value));
|
|
36
|
+
const decode = (schema, value) => Schema.decodeUnknownSync(codec(schema), { onExcessProperty: "error" })(value);
|
|
37
|
+
const copy = (value) => Object.create(Object.getPrototypeOf(value), Object.getOwnPropertyDescriptors(value));
|
|
38
|
+
const isValueObject = Schema.is(Schema.Record(Schema.String, Schema.Unknown));
|
|
39
|
+
const attachEvolution = (value, rules = {}) => {
|
|
40
|
+
Object.defineProperty(value, ValueEvolutionTypeId, {
|
|
41
|
+
configurable: true,
|
|
42
|
+
value: rules
|
|
43
|
+
});
|
|
44
|
+
return Object.assign(value, {
|
|
45
|
+
default(defaultValue) {
|
|
46
|
+
if (getValueDescriptor(value)?.type === "optional") throw new Error("Defaults require a non-optional validator. A default already allows omission on creation.");
|
|
47
|
+
const defaultJson = JSON.stringify(encode(value, defaultValue));
|
|
48
|
+
const next = copy(value);
|
|
49
|
+
const constructor = Schema.withConstructorDefault(Effect.sync(() => decode(value, JSON.parse(defaultJson))))(value);
|
|
50
|
+
Object.defineProperty(next, "ast", {
|
|
51
|
+
value: constructor.ast,
|
|
52
|
+
configurable: true
|
|
53
|
+
});
|
|
54
|
+
return attachEvolution(next, {
|
|
55
|
+
...rules,
|
|
56
|
+
defaultJson
|
|
57
|
+
});
|
|
58
|
+
},
|
|
59
|
+
renameFrom(name) {
|
|
60
|
+
if (name.length === 0 || [
|
|
61
|
+
"id",
|
|
62
|
+
"createdAt",
|
|
63
|
+
"updatedAt"
|
|
64
|
+
].includes(name)) throw new Error(`Cannot rename reserved or empty field '${name}'.`);
|
|
65
|
+
return attachEvolution(copy(value), {
|
|
66
|
+
...rules,
|
|
67
|
+
renameFrom: name
|
|
68
|
+
});
|
|
69
|
+
},
|
|
70
|
+
from(previous, convert) {
|
|
71
|
+
if (getValueDescriptor(previous) === void 0) throw new Error("Historical values must use an Ignotum values validator.");
|
|
72
|
+
return attachEvolution(copy(value), {
|
|
73
|
+
...rules,
|
|
74
|
+
previous: [...rules.previous ?? [], {
|
|
75
|
+
schema: previous,
|
|
76
|
+
convert
|
|
77
|
+
}]
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
const withValueChildren = (value, children) => {
|
|
83
|
+
attachEvolution(value, {
|
|
84
|
+
...evolutionRules(value),
|
|
85
|
+
children
|
|
86
|
+
});
|
|
87
|
+
return value;
|
|
88
|
+
};
|
|
89
|
+
const validateFieldRenames = (fields) => {
|
|
90
|
+
const sources = /* @__PURE__ */ new Set();
|
|
91
|
+
for (const [name, field] of Object.entries(fields)) {
|
|
92
|
+
const source = evolutionRules(field).renameFrom;
|
|
93
|
+
if (source === void 0) continue;
|
|
94
|
+
if (source === name || Object.hasOwn(fields, source) || sources.has(source)) throw new Error(`Rename source '${source}' conflicts with another field.`);
|
|
95
|
+
sources.add(source);
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
const mapChildren = (schema, value, visit, rename) => {
|
|
99
|
+
const children = evolutionRules(schema).children;
|
|
100
|
+
if (children === void 0) return value;
|
|
101
|
+
switch (children.type) {
|
|
102
|
+
case "object": {
|
|
103
|
+
if (!isValueObject(value)) return value;
|
|
104
|
+
const result = { ...value };
|
|
105
|
+
for (const [name, field] of Object.entries(children.fields)) {
|
|
106
|
+
const source = rename ? evolutionRules(field).renameFrom : void 0;
|
|
107
|
+
if (source !== void 0 && Object.hasOwn(result, source)) {
|
|
108
|
+
if (Object.hasOwn(result, name)) throw new Error(`Both '${name}' and its rename source '${source}' are present.`);
|
|
109
|
+
Object.defineProperty(result, name, {
|
|
110
|
+
value: result[source],
|
|
111
|
+
enumerable: true,
|
|
112
|
+
configurable: true,
|
|
113
|
+
writable: true
|
|
114
|
+
});
|
|
115
|
+
delete result[source];
|
|
116
|
+
}
|
|
117
|
+
const next = visit(field, Object.hasOwn(result, name) ? result[name] : void 0);
|
|
118
|
+
if (next !== void 0) Object.defineProperty(result, name, {
|
|
119
|
+
value: next,
|
|
120
|
+
enumerable: true,
|
|
121
|
+
configurable: true,
|
|
122
|
+
writable: true
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
return result;
|
|
126
|
+
}
|
|
127
|
+
case "array": return Array.isArray(value) ? value.map((item) => visit(children.value, item)) : value;
|
|
128
|
+
case "record": return isValueObject(value) ? Object.fromEntries(Object.entries(value).map(([key, item]) => [key, visit(children.value, item)])) : value;
|
|
129
|
+
case "nullable": return value === null ? value : visit(children.value, value);
|
|
130
|
+
case "optional": return value === void 0 ? value : visit(children.value, value);
|
|
131
|
+
case "union":
|
|
132
|
+
for (const member of children.members) try {
|
|
133
|
+
const result = visit(member, value);
|
|
134
|
+
if (rename) decode(member, result);
|
|
135
|
+
else encode(member, result);
|
|
136
|
+
return result;
|
|
137
|
+
} catch {}
|
|
138
|
+
return value;
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
/** Apply creation defaults to decoded values, without accepting historical representations. */
|
|
142
|
+
const applyValueDefaults = (schema, value) => {
|
|
143
|
+
const rules = evolutionRules(schema);
|
|
144
|
+
if (value === void 0 && rules.defaultJson !== void 0) return decode(schema, JSON.parse(rules.defaultJson));
|
|
145
|
+
return mapChildren(schema, value, applyValueDefaults, false);
|
|
146
|
+
};
|
|
147
|
+
/** Convert a stored JSON value to the current representation, preserving already valid values. */
|
|
148
|
+
const evolveStoredValue = (schema, value) => {
|
|
149
|
+
try {
|
|
150
|
+
decode(schema, value);
|
|
151
|
+
return value;
|
|
152
|
+
} catch {}
|
|
153
|
+
const rules = evolutionRules(schema);
|
|
154
|
+
if (value === void 0 && rules.defaultJson !== void 0) return JSON.parse(rules.defaultJson);
|
|
155
|
+
let failure;
|
|
156
|
+
try {
|
|
157
|
+
const next = mapChildren(schema, value, evolveStoredValue, true);
|
|
158
|
+
decode(schema, next);
|
|
159
|
+
return next;
|
|
160
|
+
} catch (cause) {
|
|
161
|
+
failure = cause;
|
|
162
|
+
}
|
|
163
|
+
const matches = [];
|
|
164
|
+
for (const previous of rules.previous ?? []) try {
|
|
165
|
+
matches.push({
|
|
166
|
+
previous,
|
|
167
|
+
value: decode(previous.schema, value)
|
|
168
|
+
});
|
|
169
|
+
} catch {}
|
|
170
|
+
if (matches.length > 1) throw new Error("More than one historical validator matches this value.");
|
|
171
|
+
const match = matches[0];
|
|
172
|
+
if (match === void 0) throw failure;
|
|
173
|
+
return encode(schema, applyValueDefaults(schema, match.previous.convert(match.value)));
|
|
174
|
+
};
|
|
175
|
+
const evolveStoredFields = (schema, value) => Schema.decodeUnknownSync(Schema.JsonObject)(evolveStoredValue(schema, value));
|
|
176
|
+
const LiteralValue = Schema.Union([
|
|
177
|
+
Schema.String,
|
|
178
|
+
Schema.Finite,
|
|
179
|
+
Schema.Boolean
|
|
180
|
+
]);
|
|
181
|
+
const DescriptorField = Schema.Struct({
|
|
182
|
+
name: Schema.String,
|
|
183
|
+
value: Schema.suspend(() => ValueDescriptor)
|
|
184
|
+
});
|
|
185
|
+
const ValueDescriptor = Schema.Union([
|
|
186
|
+
Schema.Struct({
|
|
187
|
+
type: Schema.Literal("array"),
|
|
188
|
+
value: Schema.suspend(() => ValueDescriptor)
|
|
189
|
+
}),
|
|
190
|
+
Schema.Struct({ type: Schema.Literal("boolean") }),
|
|
191
|
+
Schema.Struct({ type: Schema.Literal("date") }),
|
|
192
|
+
Schema.Struct({
|
|
193
|
+
type: Schema.Literal("file"),
|
|
194
|
+
formats: Schema.Array(Schema.Literals([
|
|
195
|
+
"jpeg",
|
|
196
|
+
"png",
|
|
197
|
+
"webp",
|
|
198
|
+
"avif",
|
|
199
|
+
"gif"
|
|
200
|
+
])),
|
|
201
|
+
maxBytes: Schema.Int
|
|
202
|
+
}),
|
|
203
|
+
Schema.Struct({
|
|
204
|
+
type: Schema.Literal("error"),
|
|
205
|
+
tag: Schema.String,
|
|
206
|
+
fields: Schema.Array(DescriptorField)
|
|
207
|
+
}),
|
|
208
|
+
Schema.Struct({
|
|
209
|
+
type: Schema.Literal("id"),
|
|
210
|
+
table: Schema.String
|
|
211
|
+
}),
|
|
212
|
+
Schema.Struct({ type: Schema.Literal("userId") }),
|
|
213
|
+
Schema.Struct({ type: Schema.Literal("integer") }),
|
|
214
|
+
Schema.Struct({
|
|
215
|
+
type: Schema.Literal("literal"),
|
|
216
|
+
value: LiteralValue
|
|
217
|
+
}),
|
|
218
|
+
Schema.Struct({
|
|
219
|
+
type: Schema.Literal("literals"),
|
|
220
|
+
values: Schema.Array(LiteralValue)
|
|
221
|
+
}),
|
|
222
|
+
Schema.Struct({ type: Schema.Literal("never") }),
|
|
223
|
+
Schema.Struct({ type: Schema.Literal("null") }),
|
|
224
|
+
Schema.Struct({
|
|
225
|
+
type: Schema.Literal("nullable"),
|
|
226
|
+
value: Schema.suspend(() => ValueDescriptor)
|
|
227
|
+
}),
|
|
228
|
+
Schema.Struct({ type: Schema.Literal("number") }),
|
|
229
|
+
Schema.Struct({
|
|
230
|
+
type: Schema.Literal("object"),
|
|
231
|
+
fields: Schema.Array(DescriptorField)
|
|
232
|
+
}),
|
|
233
|
+
Schema.Struct({
|
|
234
|
+
type: Schema.Literal("optional"),
|
|
235
|
+
value: Schema.suspend(() => ValueDescriptor)
|
|
236
|
+
}),
|
|
237
|
+
Schema.Struct({
|
|
238
|
+
type: Schema.Literal("record"),
|
|
239
|
+
value: Schema.suspend(() => ValueDescriptor)
|
|
240
|
+
}),
|
|
241
|
+
Schema.Struct({
|
|
242
|
+
type: Schema.Literal("secret"),
|
|
243
|
+
value: Schema.suspend(() => ValueDescriptor)
|
|
244
|
+
}),
|
|
245
|
+
Schema.Struct({ type: Schema.Literal("string") }),
|
|
246
|
+
Schema.Struct({
|
|
247
|
+
type: Schema.Literal("union"),
|
|
248
|
+
members: Schema.Array(Schema.suspend(() => ValueDescriptor))
|
|
249
|
+
})
|
|
250
|
+
]);
|
|
251
|
+
const ValueDescriptorTypeId = Symbol.for("ignotum/schema/ValueDescriptor");
|
|
252
|
+
const attachValueDescriptor = Function.dual(2, (value, descriptor) => {
|
|
253
|
+
Object.defineProperty(value, ValueDescriptorTypeId, {
|
|
254
|
+
configurable: false,
|
|
255
|
+
enumerable: false,
|
|
256
|
+
value: descriptor,
|
|
257
|
+
writable: false
|
|
258
|
+
});
|
|
259
|
+
return attachEvolution(value);
|
|
260
|
+
});
|
|
261
|
+
const getValueDescriptor = (value) => {
|
|
262
|
+
if (!Predicate.hasProperty(value, ValueDescriptorTypeId)) return void 0;
|
|
263
|
+
return Schema.is(ValueDescriptor)(value[ValueDescriptorTypeId]) ? value[ValueDescriptorTypeId] : void 0;
|
|
264
|
+
};
|
|
265
|
+
const descriptorAllowedInEnvironment = (descriptor) => {
|
|
266
|
+
switch (descriptor.type) {
|
|
267
|
+
case "error":
|
|
268
|
+
case "file":
|
|
269
|
+
case "userId":
|
|
270
|
+
case "id": return false;
|
|
271
|
+
case "array":
|
|
272
|
+
case "nullable":
|
|
273
|
+
case "optional":
|
|
274
|
+
case "record":
|
|
275
|
+
case "secret": return descriptorAllowedInEnvironment(descriptor.value);
|
|
276
|
+
case "object": return descriptor.fields.every((field) => descriptorAllowedInEnvironment(field.value));
|
|
277
|
+
case "union": return descriptor.members.every(descriptorAllowedInEnvironment);
|
|
278
|
+
default: return true;
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
const descriptorFields = (fields) => {
|
|
282
|
+
const entries = [];
|
|
283
|
+
for (const name of Reflect.ownKeys(fields)) {
|
|
284
|
+
if (!Predicate.isString(name)) throw new Error("Ignotum value objects only support string field names.");
|
|
285
|
+
const field = fields[name];
|
|
286
|
+
const value = field === void 0 ? void 0 : getValueDescriptor(field);
|
|
287
|
+
if (value === void 0) throw new Error(`The field '${name}' must use an Ignotum values validator.`);
|
|
288
|
+
entries.push({
|
|
289
|
+
name,
|
|
290
|
+
value
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
return entries.sort((left, right) => left.name.localeCompare(right.name));
|
|
294
|
+
};
|
|
295
|
+
//#endregion
|
|
296
|
+
export { descriptorFields as a, validateFieldRenames as c, PaginationPageSize as d, descriptorAllowedInEnvironment as i, withValueChildren as l, applyValueDefaults as n, evolveStoredFields as o, attachValueDescriptor as r, getValueDescriptor as s, ValueDescriptor as t, PaginationCursor as u };
|
|
297
|
+
|
|
298
|
+
//# sourceMappingURL=descriptor-DCCz5AHd-_nhlnu8U.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptor-DCCz5AHd-_nhlnu8U.js","names":[],"sources":["../../../contracts/dist/runtime/pagination.js","../../../contracts/dist/descriptor-DCCz5AHd.js"],"sourcesContent":["import { initial } from \"../versioned.js\";\nimport { encodeCanonicalJson } from \"../json.js\";\nimport { Encoding, Result, Schema } from \"effect\";\n//#region src/runtime/pagination.ts\nconst PaginationCursor = Schema.String.check(Schema.isBase64Url()).pipe(Schema.brand(\"ignotum/runtime/PaginationCursor\"));\nconst PaginationPageSize = Schema.Int.check(Schema.isBetween({\n\tminimum: 1,\n\tmaximum: 1e3\n})).pipe(Schema.brand(\"ignotum/runtime/PaginationPageSize\"));\nconst PaginationOptions = Schema.Struct({\n\tcursor: Schema.NullOr(PaginationCursor),\n\tpageSize: PaginationPageSize\n});\nconst TablePosition = Schema.Struct({\n\ttype: Schema.Literal(\"Table\"),\n\tcreatedAt: Schema.Int,\n\tid: Schema.String\n});\nconst IndexPosition = Schema.Struct({\n\ttype: Schema.Literal(\"Index\"),\n\tkey: Schema.String.check(Schema.isPattern(/^(?:[0-9a-f]{2})*$/)).pipe(Schema.brand(\"ignotum/runtime/EncodedIndexKey\"))\n});\nconst PaginationPosition = Schema.Union([TablePosition, IndexPosition]);\nconst CursorPayloadV1 = Schema.Struct({\n\tversion: Schema.Literal(1),\n\tquery: Schema.String,\n\tposition: PaginationPosition\n});\nconst CursorPayload = initial(CursorPayloadV1);\nconst CursorPayloadJson = Schema.fromJsonString(CursorPayload);\nconst paginationQueryIdentity = (tableId, index, lower, upper, order) => encodeCanonicalJson([\n\ttableId,\n\tindex,\n\tlower ?? null,\n\tupper ?? null,\n\torder\n]);\nconst encodePaginationCursor = (query, position) => PaginationCursor.make(Encoding.encodeBase64Url(Schema.encodeSync(CursorPayloadJson)({\n\tversion: 1,\n\tquery,\n\tposition\n})));\nconst decodePaginationCursor = (cursor) => Schema.decodeSync(CursorPayloadJson)(Result.getOrThrow(Encoding.decodeBase64UrlString(cursor)));\n//#endregion\nexport { PaginationCursor, PaginationOptions, PaginationPageSize, PaginationPosition, decodePaginationCursor, encodePaginationCursor, paginationQueryIdentity };\n\n//# sourceMappingURL=pagination.js.map","import { Effect, Function, Predicate, Schema } from \"effect\";\n//#region src/schema/evolution.ts\nconst ValueEvolutionTypeId = Symbol.for(\"ignotum/schema/ValueEvolution\");\nconst evolutionRules = (value) => value[ValueEvolutionTypeId] ?? {};\nconst codec = (value) => Schema.toCodecJson(value);\nconst encode = (schema, value) => Schema.decodeUnknownSync(Schema.Json)(Schema.encodeUnknownSync(codec(schema), { onExcessProperty: \"error\" })(value));\nconst decode = (schema, value) => Schema.decodeUnknownSync(codec(schema), { onExcessProperty: \"error\" })(value);\nconst copy = (value) => Object.create(Object.getPrototypeOf(value), Object.getOwnPropertyDescriptors(value));\nconst isValueObject = Schema.is(Schema.Record(Schema.String, Schema.Unknown));\nconst attachEvolution = (value, rules = {}) => {\n\tObject.defineProperty(value, ValueEvolutionTypeId, {\n\t\tconfigurable: true,\n\t\tvalue: rules\n\t});\n\treturn Object.assign(value, {\n\t\tdefault(defaultValue) {\n\t\t\tif (getValueDescriptor(value)?.type === \"optional\") throw new Error(\"Defaults require a non-optional validator. A default already allows omission on creation.\");\n\t\t\tconst defaultJson = JSON.stringify(encode(value, defaultValue));\n\t\t\tconst next = copy(value);\n\t\t\tconst constructor = Schema.withConstructorDefault(Effect.sync(() => decode(value, JSON.parse(defaultJson))))(value);\n\t\t\tObject.defineProperty(next, \"ast\", {\n\t\t\t\tvalue: constructor.ast,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\t\t\treturn attachEvolution(next, {\n\t\t\t\t...rules,\n\t\t\t\tdefaultJson\n\t\t\t});\n\t\t},\n\t\trenameFrom(name) {\n\t\t\tif (name.length === 0 || [\n\t\t\t\t\"id\",\n\t\t\t\t\"createdAt\",\n\t\t\t\t\"updatedAt\"\n\t\t\t].includes(name)) throw new Error(`Cannot rename reserved or empty field '${name}'.`);\n\t\t\treturn attachEvolution(copy(value), {\n\t\t\t\t...rules,\n\t\t\t\trenameFrom: name\n\t\t\t});\n\t\t},\n\t\tfrom(previous, convert) {\n\t\t\tif (getValueDescriptor(previous) === void 0) throw new Error(\"Historical values must use an Ignotum values validator.\");\n\t\t\treturn attachEvolution(copy(value), {\n\t\t\t\t...rules,\n\t\t\t\tprevious: [...rules.previous ?? [], {\n\t\t\t\t\tschema: previous,\n\t\t\t\t\tconvert\n\t\t\t\t}]\n\t\t\t});\n\t\t}\n\t});\n};\nconst withValueChildren = (value, children) => {\n\tattachEvolution(value, {\n\t\t...evolutionRules(value),\n\t\tchildren\n\t});\n\treturn value;\n};\nconst validateFieldRenames = (fields) => {\n\tconst sources = /* @__PURE__ */ new Set();\n\tfor (const [name, field] of Object.entries(fields)) {\n\t\tconst source = evolutionRules(field).renameFrom;\n\t\tif (source === void 0) continue;\n\t\tif (source === name || Object.hasOwn(fields, source) || sources.has(source)) throw new Error(`Rename source '${source}' conflicts with another field.`);\n\t\tsources.add(source);\n\t}\n};\nconst mapChildren = (schema, value, visit, rename) => {\n\tconst children = evolutionRules(schema).children;\n\tif (children === void 0) return value;\n\tswitch (children.type) {\n\t\tcase \"object\": {\n\t\t\tif (!isValueObject(value)) return value;\n\t\t\tconst result = { ...value };\n\t\t\tfor (const [name, field] of Object.entries(children.fields)) {\n\t\t\t\tconst source = rename ? evolutionRules(field).renameFrom : void 0;\n\t\t\t\tif (source !== void 0 && Object.hasOwn(result, source)) {\n\t\t\t\t\tif (Object.hasOwn(result, name)) throw new Error(`Both '${name}' and its rename source '${source}' are present.`);\n\t\t\t\t\tObject.defineProperty(result, name, {\n\t\t\t\t\t\tvalue: result[source],\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\twritable: true\n\t\t\t\t\t});\n\t\t\t\t\tdelete result[source];\n\t\t\t\t}\n\t\t\t\tconst next = visit(field, Object.hasOwn(result, name) ? result[name] : void 0);\n\t\t\t\tif (next !== void 0) Object.defineProperty(result, name, {\n\t\t\t\t\tvalue: next,\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t\tcase \"array\": return Array.isArray(value) ? value.map((item) => visit(children.value, item)) : value;\n\t\tcase \"record\": return isValueObject(value) ? Object.fromEntries(Object.entries(value).map(([key, item]) => [key, visit(children.value, item)])) : value;\n\t\tcase \"nullable\": return value === null ? value : visit(children.value, value);\n\t\tcase \"optional\": return value === void 0 ? value : visit(children.value, value);\n\t\tcase \"union\":\n\t\t\tfor (const member of children.members) try {\n\t\t\t\tconst result = visit(member, value);\n\t\t\t\tif (rename) decode(member, result);\n\t\t\t\telse encode(member, result);\n\t\t\t\treturn result;\n\t\t\t} catch {}\n\t\t\treturn value;\n\t}\n};\n/** Apply creation defaults to decoded values, without accepting historical representations. */\nconst applyValueDefaults = (schema, value) => {\n\tconst rules = evolutionRules(schema);\n\tif (value === void 0 && rules.defaultJson !== void 0) return decode(schema, JSON.parse(rules.defaultJson));\n\treturn mapChildren(schema, value, applyValueDefaults, false);\n};\n/** Convert a stored JSON value to the current representation, preserving already valid values. */\nconst evolveStoredValue = (schema, value) => {\n\ttry {\n\t\tdecode(schema, value);\n\t\treturn value;\n\t} catch {}\n\tconst rules = evolutionRules(schema);\n\tif (value === void 0 && rules.defaultJson !== void 0) return JSON.parse(rules.defaultJson);\n\tlet failure;\n\ttry {\n\t\tconst next = mapChildren(schema, value, evolveStoredValue, true);\n\t\tdecode(schema, next);\n\t\treturn next;\n\t} catch (cause) {\n\t\tfailure = cause;\n\t}\n\tconst matches = [];\n\tfor (const previous of rules.previous ?? []) try {\n\t\tmatches.push({\n\t\t\tprevious,\n\t\t\tvalue: decode(previous.schema, value)\n\t\t});\n\t} catch {}\n\tif (matches.length > 1) throw new Error(\"More than one historical validator matches this value.\");\n\tconst match = matches[0];\n\tif (match === void 0) throw failure;\n\treturn encode(schema, applyValueDefaults(schema, match.previous.convert(match.value)));\n};\nconst evolveStoredFields = (schema, value) => Schema.decodeUnknownSync(Schema.JsonObject)(evolveStoredValue(schema, value));\n//#endregion\n//#region src/schema/descriptor.ts\nconst LiteralValue = Schema.Union([\n\tSchema.String,\n\tSchema.Finite,\n\tSchema.Boolean\n]);\nconst DescriptorField = Schema.Struct({\n\tname: Schema.String,\n\tvalue: Schema.suspend(() => ValueDescriptor)\n});\nconst ValueDescriptor = Schema.Union([\n\tSchema.Struct({\n\t\ttype: Schema.Literal(\"array\"),\n\t\tvalue: Schema.suspend(() => ValueDescriptor)\n\t}),\n\tSchema.Struct({ type: Schema.Literal(\"boolean\") }),\n\tSchema.Struct({ type: Schema.Literal(\"date\") }),\n\tSchema.Struct({\n\t\ttype: Schema.Literal(\"file\"),\n\t\tformats: Schema.Array(Schema.Literals([\n\t\t\t\"jpeg\",\n\t\t\t\"png\",\n\t\t\t\"webp\",\n\t\t\t\"avif\",\n\t\t\t\"gif\"\n\t\t])),\n\t\tmaxBytes: Schema.Int\n\t}),\n\tSchema.Struct({\n\t\ttype: Schema.Literal(\"error\"),\n\t\ttag: Schema.String,\n\t\tfields: Schema.Array(DescriptorField)\n\t}),\n\tSchema.Struct({\n\t\ttype: Schema.Literal(\"id\"),\n\t\ttable: Schema.String\n\t}),\n\tSchema.Struct({ type: Schema.Literal(\"userId\") }),\n\tSchema.Struct({ type: Schema.Literal(\"integer\") }),\n\tSchema.Struct({\n\t\ttype: Schema.Literal(\"literal\"),\n\t\tvalue: LiteralValue\n\t}),\n\tSchema.Struct({\n\t\ttype: Schema.Literal(\"literals\"),\n\t\tvalues: Schema.Array(LiteralValue)\n\t}),\n\tSchema.Struct({ type: Schema.Literal(\"never\") }),\n\tSchema.Struct({ type: Schema.Literal(\"null\") }),\n\tSchema.Struct({\n\t\ttype: Schema.Literal(\"nullable\"),\n\t\tvalue: Schema.suspend(() => ValueDescriptor)\n\t}),\n\tSchema.Struct({ type: Schema.Literal(\"number\") }),\n\tSchema.Struct({\n\t\ttype: Schema.Literal(\"object\"),\n\t\tfields: Schema.Array(DescriptorField)\n\t}),\n\tSchema.Struct({\n\t\ttype: Schema.Literal(\"optional\"),\n\t\tvalue: Schema.suspend(() => ValueDescriptor)\n\t}),\n\tSchema.Struct({\n\t\ttype: Schema.Literal(\"record\"),\n\t\tvalue: Schema.suspend(() => ValueDescriptor)\n\t}),\n\tSchema.Struct({\n\t\ttype: Schema.Literal(\"secret\"),\n\t\tvalue: Schema.suspend(() => ValueDescriptor)\n\t}),\n\tSchema.Struct({ type: Schema.Literal(\"string\") }),\n\tSchema.Struct({\n\t\ttype: Schema.Literal(\"union\"),\n\t\tmembers: Schema.Array(Schema.suspend(() => ValueDescriptor))\n\t})\n]);\nconst ValueDescriptorTypeId = Symbol.for(\"ignotum/schema/ValueDescriptor\");\nconst attachValueDescriptor = Function.dual(2, (value, descriptor) => {\n\tObject.defineProperty(value, ValueDescriptorTypeId, {\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t\tvalue: descriptor,\n\t\twritable: false\n\t});\n\treturn attachEvolution(value);\n});\nconst getValueDescriptor = (value) => {\n\tif (!Predicate.hasProperty(value, ValueDescriptorTypeId)) return void 0;\n\treturn Schema.is(ValueDescriptor)(value[ValueDescriptorTypeId]) ? value[ValueDescriptorTypeId] : void 0;\n};\nconst descriptorContainsFile = (descriptor) => {\n\tswitch (descriptor.type) {\n\t\tcase \"file\": return true;\n\t\tcase \"array\":\n\t\tcase \"nullable\":\n\t\tcase \"optional\":\n\t\tcase \"record\":\n\t\tcase \"secret\": return descriptorContainsFile(descriptor.value);\n\t\tcase \"error\":\n\t\tcase \"object\": return descriptor.fields.some((field) => descriptorContainsFile(field.value));\n\t\tcase \"union\": return descriptor.members.some(descriptorContainsFile);\n\t\tdefault: return false;\n\t}\n};\nconst descriptorContainsSecret = (descriptor) => {\n\tswitch (descriptor.type) {\n\t\tcase \"secret\": return true;\n\t\tcase \"array\":\n\t\tcase \"nullable\":\n\t\tcase \"optional\":\n\t\tcase \"record\": return descriptorContainsSecret(descriptor.value);\n\t\tcase \"error\":\n\t\tcase \"object\": return descriptor.fields.some((field) => descriptorContainsSecret(field.value));\n\t\tcase \"union\": return descriptor.members.some(descriptorContainsSecret);\n\t\tdefault: return false;\n\t}\n};\nconst descriptorAllowedInEnvironment = (descriptor) => {\n\tswitch (descriptor.type) {\n\t\tcase \"error\":\n\t\tcase \"file\":\n\t\tcase \"userId\":\n\t\tcase \"id\": return false;\n\t\tcase \"array\":\n\t\tcase \"nullable\":\n\t\tcase \"optional\":\n\t\tcase \"record\":\n\t\tcase \"secret\": return descriptorAllowedInEnvironment(descriptor.value);\n\t\tcase \"object\": return descriptor.fields.every((field) => descriptorAllowedInEnvironment(field.value));\n\t\tcase \"union\": return descriptor.members.every(descriptorAllowedInEnvironment);\n\t\tdefault: return true;\n\t}\n};\nconst descriptorFields = (fields) => {\n\tconst entries = [];\n\tfor (const name of Reflect.ownKeys(fields)) {\n\t\tif (!Predicate.isString(name)) throw new Error(\"Ignotum value objects only support string field names.\");\n\t\tconst field = fields[name];\n\t\tconst value = field === void 0 ? void 0 : getValueDescriptor(field);\n\t\tif (value === void 0) throw new Error(`The field '${name}' must use an Ignotum values validator.`);\n\t\tentries.push({\n\t\t\tname,\n\t\t\tvalue\n\t\t});\n\t}\n\treturn entries.sort((left, right) => left.name.localeCompare(right.name));\n};\n//#endregion\nexport { descriptorContainsFile as a, getValueDescriptor as c, evolveStoredValue as d, validateFieldRenames as f, descriptorAllowedInEnvironment as i, applyValueDefaults as l, ValueDescriptorTypeId as n, descriptorContainsSecret as o, withValueChildren as p, attachValueDescriptor as r, descriptorFields as s, ValueDescriptor as t, evolveStoredFields as u };\n\n//# sourceMappingURL=descriptor-DCCz5AHd.js.map"],"mappings":"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"}
|