ignotum 0.0.7 → 0.0.9

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.
Files changed (58) hide show
  1. package/README.md +89 -101
  2. package/dist/cli/bin.mjs +1119 -195
  3. package/dist/cli/bin.mjs.map +1 -1
  4. package/dist/runtime/{api-DtX8qPrq.js → api-DzcR7spt.js} +36 -13
  5. package/dist/runtime/api-DzcR7spt.js.map +1 -0
  6. package/dist/runtime/{api-Dp4J-xt-.d.ts → api-jCl8Hzry.d.ts} +7 -9
  7. package/dist/runtime/client.d.ts +12 -5
  8. package/dist/runtime/client.js +285 -60
  9. package/dist/runtime/client.js.map +1 -1
  10. package/dist/runtime/{descriptor-t6BOEGw9-C1rwYIlx.js → descriptor-C5VA9qRl-BKbdenuU.js} +38 -7
  11. package/dist/runtime/descriptor-C5VA9qRl-BKbdenuU.js.map +1 -0
  12. package/dist/runtime/file-C1abuMgd.js +173 -0
  13. package/dist/runtime/file-C1abuMgd.js.map +1 -0
  14. package/dist/runtime/{id-Btwac71X-DhnKYsjY.d.ts → id-Cs82tq9Q-Caqfx54f.d.ts} +51 -5
  15. package/dist/runtime/{index-B5KSOjGN.d.ts → index-D6VLTbDB.d.ts} +40 -21
  16. package/dist/runtime/internal/api.d.ts +2 -2
  17. package/dist/runtime/internal/api.js +1 -1
  18. package/dist/runtime/internal/host.d.ts +8 -7
  19. package/dist/runtime/internal/host.js +21 -10
  20. package/dist/runtime/internal/host.js.map +1 -1
  21. package/dist/runtime/internal/server.d.ts +1 -1
  22. package/dist/runtime/internal/server.js +1 -1
  23. package/dist/runtime/internal/types.d.ts +1 -1
  24. package/dist/runtime/internal/types.js +1 -1
  25. package/dist/runtime/{pagination-B1BzNkh8-BUSTbeSg.d.ts → pagination-Bt3l7QaC-D_zI5zsu.d.ts} +8 -4
  26. package/dist/runtime/pagination-DcIkTOFs.d.ts +1 -0
  27. package/dist/runtime/{schema-D9RmboaS.js → schema-B6PK_ZwV.js} +17 -3
  28. package/dist/runtime/schema-B6PK_ZwV.js.map +1 -0
  29. package/dist/runtime/server.d.ts +3 -3
  30. package/dist/runtime/server.js +2 -2
  31. package/dist/runtime/server.js.map +1 -1
  32. package/dist/runtime/sync-bMQq9tXx.d.ts +8 -0
  33. package/package.json +7 -5
  34. package/src/cli/agent-files.ts +52 -13
  35. package/src/cli/app-configuration.ts +4 -1
  36. package/src/cli/auth-client.ts +286 -0
  37. package/src/cli/build/server.ts +83 -6
  38. package/src/cli/command.ts +65 -2
  39. package/src/cli/control-client.ts +19 -6
  40. package/src/cli/new-app.ts +16 -0
  41. package/src/client/errors.ts +7 -10
  42. package/src/client/files.ts +153 -0
  43. package/src/client/hooks.ts +2 -15
  44. package/src/client/index.ts +7 -0
  45. package/src/client/sync.ts +158 -30
  46. package/src/dev-runtime/database.ts +69 -57
  47. package/src/dev-runtime/files.ts +337 -0
  48. package/src/dev-runtime/functions.ts +14 -6
  49. package/src/dev-runtime/migrations.ts +14 -0
  50. package/src/dev-runtime/sync.ts +134 -22
  51. package/src/internal/api.ts +16 -1
  52. package/src/server/index.ts +8 -1
  53. package/dist/runtime/api-DtX8qPrq.js.map +0 -1
  54. package/dist/runtime/descriptor-t6BOEGw9-C1rwYIlx.js.map +0 -1
  55. package/dist/runtime/id-D570vudg.js +0 -26
  56. package/dist/runtime/id-D570vudg.js.map +0 -1
  57. package/dist/runtime/pagination-BKPko9Hm.d.ts +0 -1
  58. package/dist/runtime/schema-D9RmboaS.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"host.js","names":[],"sources":["../../../../contracts/dist/runtime/host.js","../../../../runtime/dist/guest.js"],"sourcesContent":["import { GeneratedId } from \"./id.js\";\nimport { PaginationCursor, PaginationPageSize } from \"./pagination.js\";\nimport { Schema } from \"effect\";\n//#region src/runtime/host.ts\nconst HostDocument = Schema.Struct({\n\tid: GeneratedId,\n\tcreatedAt: Schema.Int,\n\tupdatedAt: Schema.Int,\n\tfields: Schema.JsonObject\n});\nconst HostCollect = Schema.Struct({\n\ttype: Schema.Literal(\"Collect\"),\n\ttable: Schema.String\n});\nconst HostIndexComparison = Schema.Struct({\n\tfield: Schema.String,\n\tvalue: Schema.Json\n});\nconst HostIndexRange = Schema.Struct({\n\tequal: Schema.Array(HostIndexComparison),\n\tlower: Schema.optional(Schema.Struct({\n\t\t...HostIndexComparison.fields,\n\t\tinclusive: Schema.Boolean\n\t})),\n\tupper: Schema.optional(Schema.Struct({\n\t\t...HostIndexComparison.fields,\n\t\tinclusive: Schema.Boolean\n\t}))\n});\nconst HostQuery = Schema.Struct({\n\ttype: Schema.Literal(\"Query\"),\n\ttable: Schema.String,\n\tindex: Schema.optional(Schema.String),\n\trange: Schema.optional(HostIndexRange),\n\torder: Schema.Literals([\"Asc\", \"Desc\"]),\n\tlimit: Schema.optional(Schema.Natural)\n});\nconst HostPaginate = Schema.Struct({\n\ttype: Schema.Literal(\"Paginate\"),\n\ttable: Schema.String,\n\tindex: Schema.optional(Schema.String),\n\trange: Schema.optional(HostIndexRange),\n\torder: Schema.Literals([\"Asc\", \"Desc\"]),\n\tpagination: Schema.Struct({\n\t\tcursor: Schema.NullOr(PaginationCursor),\n\t\tpageSize: PaginationPageSize\n\t})\n});\nconst HostFind = Schema.Struct({\n\ttype: Schema.Literal(\"Find\"),\n\ttable: Schema.String,\n\tid: GeneratedId\n});\nconst HostInsert = Schema.Struct({\n\ttype: Schema.Literal(\"Insert\"),\n\ttable: Schema.String,\n\tfields: Schema.JsonObject\n});\nconst HostDelete = Schema.Struct({\n\ttype: Schema.Literal(\"Delete\"),\n\ttable: Schema.String,\n\tid: GeneratedId\n});\nconst HostPatch = Schema.Struct({\n\ttype: Schema.Literal(\"Patch\"),\n\ttable: Schema.String,\n\tid: GeneratedId,\n\tfields: Schema.JsonObject\n});\nconst HostReplace = Schema.Struct({\n\ttype: Schema.Literal(\"Replace\"),\n\ttable: Schema.String,\n\tid: GeneratedId,\n\tfields: Schema.JsonObject\n});\nconst QuickJsHostRequest = Schema.Union([\n\tHostCollect,\n\tHostQuery,\n\tHostPaginate,\n\tHostFind,\n\tHostInsert,\n\tHostDelete,\n\tHostPatch,\n\tHostReplace\n]);\nconst HostDocuments = Schema.Struct({\n\ttype: Schema.Literal(\"Documents\"),\n\tdocuments: Schema.Array(HostDocument)\n});\nconst HostPage = Schema.Struct({\n\ttype: Schema.Literal(\"Page\"),\n\tdocuments: Schema.Array(HostDocument),\n\tnextCursor: Schema.NullOr(PaginationCursor)\n});\nconst HostFound = Schema.Struct({\n\ttype: Schema.Literal(\"Found\"),\n\tdocument: Schema.NullOr(HostDocument)\n});\nconst HostInserted = Schema.Struct({\n\ttype: Schema.Literal(\"Inserted\"),\n\tid: GeneratedId\n});\nconst HostCompleted = Schema.Struct({ type: Schema.Literal(\"Completed\") });\nconst QuickJsHostResponse = Schema.Union([\n\tHostDocuments,\n\tHostPage,\n\tHostFound,\n\tHostInserted,\n\tHostCompleted\n]);\n//#endregion\nexport { HostCollect, HostCompleted, HostDelete, HostDocument, HostDocuments, HostFind, HostFound, HostIndexComparison, HostIndexRange, HostInsert, HostInserted, HostPage, HostPaginate, HostPatch, HostQuery, HostReplace, QuickJsHostRequest, QuickJsHostResponse };\n\n//# sourceMappingURL=host.js.map","import { HostCompleted, HostDocuments, HostFound, HostInserted, HostPage, QuickJsHostRequest } from \"@ignotum/contracts/runtime/host\";\nimport { GeneratedId } from \"@ignotum/contracts/runtime/id\";\nimport { Effect, Predicate, Schema } from \"effect\";\nimport { ErrorValueSchema, documentNotFound, resultFromEffect } from \"@ignotum/contracts/runtime/result\";\nimport { getFunctionSchema } from \"@ignotum/contracts/runtime/schema\";\nimport { TransportValueSchema, datePathsOf, datePathsOfObject } from \"@ignotum/contracts/runtime/value\";\nimport { SchemaDefinitionTypeId } from \"@ignotum/contracts/schema\";\n//#region src/guest.ts\nconst decodeHostResponse = Schema.decodeEffect(Schema.fromJsonString(Schema.Union([\n\tHostDocuments,\n\tHostPage,\n\tHostFound,\n\tHostInserted,\n\tHostCompleted\n])));\nconst encodeHostRequest = Schema.encodeSync(Schema.fromJsonString(QuickJsHostRequest));\nconst callHost = Effect.fn(\"Guest.callHost\")(function* (call, request) {\n\treturn yield* Effect.tryPromise(() => call(encodeHostRequest(request))).pipe(Effect.flatMap(decodeHostResponse), Effect.orDie);\n});\nconst tableFor = (schema, table) => {\n\tconst definition = schema[SchemaDefinitionTypeId][table];\n\tif (definition === void 0) throw new Error(`Unknown database table '${table}'.`);\n\treturn definition;\n};\nconst guestCodec = (schema) => schema;\nconst encodeFields = (schema, table, fields) => {\n\tconst definition = tableFor(schema, table);\n\treturn Schema.decodeUnknownSync(Schema.JsonObject)(Schema.encodeUnknownSync(Schema.toCodecJson(guestCodec(definition.schema)), { onExcessProperty: \"error\" })(fields));\n};\nconst encodePatchFields = (schema, table, fields) => {\n\tconst definition = tableFor(schema, table);\n\treturn Schema.decodeSync(Schema.JsonObject)(Object.fromEntries(Object.entries(fields).map(([name, value]) => {\n\t\tconst field = definition.fields[name];\n\t\tif (field === void 0) throw new Error(`Unknown field '${name}' on table '${table}'.`);\n\t\treturn [name, Schema.encodeUnknownSync(Schema.toCodecJson(guestCodec(field)))(value)];\n\t})));\n};\nconst documentCodec = (schema, table) => guestCodec(Schema.Struct({\n\t...tableFor(schema, table).fields,\n\tid: Schema.String,\n\tcreatedAt: Schema.DateFromMillis,\n\tupdatedAt: Schema.DateFromMillis\n}));\nconst decodeDocument = (schema, table, document) => Schema.decodeUnknownSync(Schema.Record(Schema.String, Schema.UndefinedOr(TransportValueSchema)))(Schema.decodeSync(Schema.toCodecJson(documentCodec(schema, table)))({\n\t...document.fields,\n\tid: document.id,\n\tcreatedAt: document.createdAt,\n\tupdatedAt: document.updatedAt\n}));\nconst expectResponse = (response, tag) => {\n\tif (response.type !== tag) throw new Error(`Unexpected host response '${response.type}'.`);\n\treturn response;\n};\nconst makeReader = (schema, call) => {\n\tconst findEffect = (table, id) => callHost(call, {\n\t\ttype: \"Find\",\n\t\ttable,\n\t\tid: GeneratedId.make(id)\n\t}).pipe(Effect.map((response) => expectResponse(response, \"Found\")), Effect.map(({ document }) => document === null ? void 0 : decodeDocument(schema, table, document)));\n\tconst query = (table, selectedIndex, selectedRange, order = \"Asc\") => {\n\t\tconst definition = tableFor(schema, table);\n\t\tconst encodeIndexValue = (field, value) => {\n\t\t\tconst codec = field === \"createdAt\" ? Schema.DateFromMillis : field === \"id\" ? GeneratedId : definition.fields[field];\n\t\t\tif (codec === void 0) throw new Error(`Unknown index field '${field}'.`);\n\t\t\treturn Schema.decodeUnknownSync(Schema.Json)(Schema.encodeUnknownSync(guestCodec(codec))(value));\n\t\t};\n\t\tconst execute = (limit) => {\n\t\t\tconst request = selectedIndex === void 0 ? {\n\t\t\t\ttype: \"Query\",\n\t\t\t\ttable,\n\t\t\t\torder\n\t\t\t} : selectedRange === void 0 ? {\n\t\t\t\ttype: \"Query\",\n\t\t\t\ttable,\n\t\t\t\tindex: selectedIndex,\n\t\t\t\torder\n\t\t\t} : {\n\t\t\t\ttype: \"Query\",\n\t\t\t\ttable,\n\t\t\t\tindex: selectedIndex,\n\t\t\t\trange: selectedRange,\n\t\t\t\torder\n\t\t\t};\n\t\t\treturn callHost(call, limit === void 0 ? request : {\n\t\t\t\t...request,\n\t\t\t\tlimit\n\t\t\t}).pipe(Effect.map((response) => expectResponse(response, \"Documents\")), Effect.map(({ documents }) => documents.map((document) => decodeDocument(schema, table, document))));\n\t\t};\n\t\tconst executePage = (pagination) => {\n\t\t\treturn callHost(call, selectedIndex === void 0 ? {\n\t\t\t\ttype: \"Paginate\",\n\t\t\t\ttable,\n\t\t\t\torder,\n\t\t\t\tpagination\n\t\t\t} : selectedRange === void 0 ? {\n\t\t\t\ttype: \"Paginate\",\n\t\t\t\ttable,\n\t\t\t\tindex: selectedIndex,\n\t\t\t\torder,\n\t\t\t\tpagination\n\t\t\t} : {\n\t\t\t\ttype: \"Paginate\",\n\t\t\t\ttable,\n\t\t\t\tindex: selectedIndex,\n\t\t\t\trange: selectedRange,\n\t\t\t\torder,\n\t\t\t\tpagination\n\t\t\t}).pipe(Effect.map((response) => expectResponse(response, \"Page\")), Effect.map(({ documents, nextCursor }) => ({\n\t\t\t\titems: documents.map((document) => decodeDocument(schema, table, document)),\n\t\t\t\tnextCursor\n\t\t\t})));\n\t\t};\n\t\tconst validateLimit = (count) => {\n\t\t\tif (!Number.isInteger(count) || count < 0 || count > 1e3) throw new Error(\"Query limits must be integers between 0 and 1000.\");\n\t\t\treturn count;\n\t\t};\n\t\treturn Object.freeze({\n\t\t\tindex: (name, buildRange) => {\n\t\t\t\tif (selectedIndex !== void 0) throw new Error(\"A query can select only one index.\");\n\t\t\t\tconst index = definition.indexes[name];\n\t\t\t\tif (index === void 0) throw new Error(`Unknown index '${name}' on table '${table}'.`);\n\t\t\t\tif (buildRange === void 0) return query(table, name, void 0, order);\n\t\t\t\tconst fields = [\n\t\t\t\t\t...index.fields,\n\t\t\t\t\t\"createdAt\",\n\t\t\t\t\t\"id\"\n\t\t\t\t];\n\t\t\t\tconst range = { equal: [] };\n\t\t\t\tlet position = 0;\n\t\t\t\tlet boundedField;\n\t\t\t\tconst expectField = (field) => {\n\t\t\t\t\tconst expected = fields[position];\n\t\t\t\t\tif (field !== expected) throw new Error(`Expected index field '${expected}', received '${field}'.`);\n\t\t\t\t};\n\t\t\t\tconst builder = {\n\t\t\t\t\teq: (field, value) => {\n\t\t\t\t\t\tif (boundedField !== void 0) throw new Error(\"Equality cannot follow an index bound.\");\n\t\t\t\t\t\texpectField(field);\n\t\t\t\t\t\trange.equal.push({\n\t\t\t\t\t\t\tfield,\n\t\t\t\t\t\t\tvalue: encodeIndexValue(field, value)\n\t\t\t\t\t\t});\n\t\t\t\t\t\tposition += 1;\n\t\t\t\t\t\treturn builder;\n\t\t\t\t\t},\n\t\t\t\t\tgt: (field, value) => {\n\t\t\t\t\t\texpectField(field);\n\t\t\t\t\t\tif (range.lower !== void 0) throw new Error(\"An index range has only one lower bound.\");\n\t\t\t\t\t\tboundedField = field;\n\t\t\t\t\t\trange.lower = {\n\t\t\t\t\t\t\tfield,\n\t\t\t\t\t\t\tvalue: encodeIndexValue(field, value),\n\t\t\t\t\t\t\tinclusive: false\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn builder;\n\t\t\t\t\t},\n\t\t\t\t\tgte: (field, value) => {\n\t\t\t\t\t\texpectField(field);\n\t\t\t\t\t\tif (range.lower !== void 0) throw new Error(\"An index range has only one lower bound.\");\n\t\t\t\t\t\tboundedField = field;\n\t\t\t\t\t\trange.lower = {\n\t\t\t\t\t\t\tfield,\n\t\t\t\t\t\t\tvalue: encodeIndexValue(field, value),\n\t\t\t\t\t\t\tinclusive: true\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn builder;\n\t\t\t\t\t},\n\t\t\t\t\tlt: (field, value) => {\n\t\t\t\t\t\texpectField(field);\n\t\t\t\t\t\tif (range.upper !== void 0) throw new Error(\"An index range has only one upper bound.\");\n\t\t\t\t\t\tboundedField = field;\n\t\t\t\t\t\trange.upper = {\n\t\t\t\t\t\t\tfield,\n\t\t\t\t\t\t\tvalue: encodeIndexValue(field, value),\n\t\t\t\t\t\t\tinclusive: false\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn builder;\n\t\t\t\t\t},\n\t\t\t\t\tlte: (field, value) => {\n\t\t\t\t\t\texpectField(field);\n\t\t\t\t\t\tif (range.upper !== void 0) throw new Error(\"An index range has only one upper bound.\");\n\t\t\t\t\t\tboundedField = field;\n\t\t\t\t\t\trange.upper = {\n\t\t\t\t\t\t\tfield,\n\t\t\t\t\t\t\tvalue: encodeIndexValue(field, value),\n\t\t\t\t\t\t\tinclusive: true\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn builder;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst built = buildRange(builder);\n\t\t\t\tif (!Predicate.isObject(built)) throw new Error(\"An index range callback must return its builder.\");\n\t\t\t\treturn query(table, name, range, order);\n\t\t\t},\n\t\t\torder: (direction) => query(table, selectedIndex, selectedRange, direction === \"asc\" ? \"Asc\" : \"Desc\"),\n\t\t\tcollect: () => resultFromEffect(execute()),\n\t\t\ttake: (count) => resultFromEffect(execute(validateLimit(count))),\n\t\t\tfirst: () => resultFromEffect(execute(1).pipe(Effect.map((documents) => documents[0]))),\n\t\t\tunique: () => resultFromEffect(execute(2).pipe(Effect.flatMap((documents) => documents.length > 1 ? Effect.die(/* @__PURE__ */ new Error(\"A unique database query matched more than one document.\")) : Effect.succeed(documents[0])))),\n\t\t\tpaginate: (options) => resultFromEffect(executePage(options))\n\t\t});\n\t};\n\treturn Object.freeze({\n\t\tfind: (table, id) => resultFromEffect(findEffect(table, id)),\n\t\tget: (table, id) => resultFromEffect(findEffect(table, id).pipe(Effect.flatMap((document) => document === void 0 ? Effect.fail(documentNotFound(table, id)) : Effect.succeed(document)))),\n\t\tquery: (table) => query(table)\n\t});\n};\nconst makeWriter = (schema, call) => {\n\tconst reader = makeReader(schema, call);\n\tconst complete = (request) => callHost(call, request).pipe(Effect.map((response) => expectResponse(response, \"Completed\")), Effect.asVoid);\n\tconst writer = {\n\t\t...reader,\n\t\tdelete: (table, id) => resultFromEffect(complete({\n\t\t\ttype: \"Delete\",\n\t\t\ttable,\n\t\t\tid: GeneratedId.make(id)\n\t\t})),\n\t\tinsert: (table, value) => resultFromEffect(callHost(call, {\n\t\t\ttype: \"Insert\",\n\t\t\ttable,\n\t\t\tfields: encodeFields(schema, table, value)\n\t\t}).pipe(Effect.map((response) => expectResponse(response, \"Inserted\").id))),\n\t\tpatch: (table, id, value) => resultFromEffect(complete({\n\t\t\ttype: \"Patch\",\n\t\t\ttable,\n\t\t\tid: GeneratedId.make(id),\n\t\t\tfields: encodePatchFields(schema, table, value)\n\t\t})),\n\t\treplace: (table, id, value) => resultFromEffect(complete({\n\t\t\ttype: \"Replace\",\n\t\t\ttable,\n\t\t\tid: GeneratedId.make(id),\n\t\t\tfields: encodeFields(schema, table, value)\n\t\t}))\n\t};\n\treturn Object.freeze(writer);\n};\nconst encodeSuccess = Effect.fn(\"Guest.encodeSuccess\")(function* (definition, value) {\n\tif (definition.returns === void 0) {\n\t\tyield* Schema.encodeUnknownEffect(Schema.Undefined)(value);\n\t\treturn { type: \"Success\" };\n\t}\n\tconst result = {\n\t\ttype: \"Success\",\n\t\tvalue: yield* Schema.encodeUnknownEffect(Schema.toCodecJson(definition.returns))(value)\n\t};\n\tconst dates = datePathsOf(value);\n\treturn dates.length === 0 ? result : {\n\t\t...result,\n\t\tdates\n\t};\n});\nconst encodeFailure = Effect.fn(\"Guest.encodeFailure\")(function* (definition, error) {\n\tconst result = {\n\t\ttype: \"Failure\",\n\t\terror: yield* Schema.encodeUnknownEffect(Schema.toCodecJson(definition.errors ?? ErrorValueSchema))(error)\n\t};\n\tconst dates = datePathsOfObject(error);\n\treturn dates.length === 0 ? result : {\n\t\t...result,\n\t\tdates\n\t};\n});\nconst runGuest = Effect.fn(\"Guest.invoke\")(function* (definition, encodedArgs, call) {\n\tconst schema = getFunctionSchema(definition);\n\tif (schema === void 0) return yield* Effect.die(\"The function has no bound schema.\");\n\tconst decodedArgs = yield* Schema.decodeEffect(Schema.toCodecJson(guestCodec(Schema.Struct(definition.args ?? {}))))(encodedArgs).pipe(Effect.match({\n\t\tonFailure: () => ({ valid: false }),\n\t\tonSuccess: (value) => ({\n\t\t\tvalid: true,\n\t\t\tvalue\n\t\t})\n\t}));\n\tif (!decodedArgs.valid) return {\n\t\ttype: \"InvocationRejected\",\n\t\tcode: \"InvalidArguments\",\n\t\tmessage: \"The invocation arguments do not match the function definition.\"\n\t};\n\tconst args = yield* Schema.decodeUnknownEffect(Schema.ObjectKeyword)(decodedArgs.value);\n\tconst context = Object.freeze({ db: definition._tag === \"Query\" ? makeReader(schema, call) : makeWriter(schema, call) });\n\treturn yield* Effect.gen(() => definition.handler(context, args)).pipe(Effect.matchEffect({\n\t\tonFailure: (error) => encodeFailure(definition, error),\n\t\tonSuccess: (value) => encodeSuccess(definition, value)\n\t}));\n});\nconst invoke = (definition, encodedArgs, call) => Effect.runPromise(runGuest(definition, encodedArgs, call)).then((result) => Schema.encodeSync(Schema.fromJsonString(Schema.Json))(result));\n//#endregion\nexport { invoke };\n\n//# sourceMappingURL=guest.js.map"],"mappings":";;;;;AAIA,MAAM,eAAe,OAAO,OAAO;CAClC,IAAI;CACJ,WAAW,OAAO;CAClB,WAAW,OAAO;CAClB,QAAQ,OAAO;AAChB,CAAC;AACD,MAAM,cAAc,OAAO,OAAO;CACjC,MAAM,OAAO,QAAQ,SAAS;CAC9B,OAAO,OAAO;AACf,CAAC;AACD,MAAM,sBAAsB,OAAO,OAAO;CACzC,OAAO,OAAO;CACd,OAAO,OAAO;AACf,CAAC;AACD,MAAM,iBAAiB,OAAO,OAAO;CACpC,OAAO,OAAO,MAAM,mBAAmB;CACvC,OAAO,OAAO,SAAS,OAAO,OAAO;EACpC,GAAG,oBAAoB;EACvB,WAAW,OAAO;CACnB,CAAC,CAAC;CACF,OAAO,OAAO,SAAS,OAAO,OAAO;EACpC,GAAG,oBAAoB;EACvB,WAAW,OAAO;CACnB,CAAC,CAAC;AACH,CAAC;AACD,MAAM,YAAY,OAAO,OAAO;CAC/B,MAAM,OAAO,QAAQ,OAAO;CAC5B,OAAO,OAAO;CACd,OAAO,OAAO,SAAS,OAAO,MAAM;CACpC,OAAO,OAAO,SAAS,cAAc;CACrC,OAAO,OAAO,SAAS,CAAC,OAAO,MAAM,CAAC;CACtC,OAAO,OAAO,SAAS,OAAO,OAAO;AACtC,CAAC;AACD,MAAM,eAAe,OAAO,OAAO;CAClC,MAAM,OAAO,QAAQ,UAAU;CAC/B,OAAO,OAAO;CACd,OAAO,OAAO,SAAS,OAAO,MAAM;CACpC,OAAO,OAAO,SAAS,cAAc;CACrC,OAAO,OAAO,SAAS,CAAC,OAAO,MAAM,CAAC;CACtC,YAAY,OAAO,OAAO;EACzB,QAAQ,OAAO,OAAO,gBAAgB;EACtC,UAAU;CACX,CAAC;AACF,CAAC;AACD,MAAM,WAAW,OAAO,OAAO;CAC9B,MAAM,OAAO,QAAQ,MAAM;CAC3B,OAAO,OAAO;CACd,IAAI;AACL,CAAC;AACD,MAAM,aAAa,OAAO,OAAO;CAChC,MAAM,OAAO,QAAQ,QAAQ;CAC7B,OAAO,OAAO;CACd,QAAQ,OAAO;AAChB,CAAC;AACD,MAAM,aAAa,OAAO,OAAO;CAChC,MAAM,OAAO,QAAQ,QAAQ;CAC7B,OAAO,OAAO;CACd,IAAI;AACL,CAAC;AACD,MAAM,YAAY,OAAO,OAAO;CAC/B,MAAM,OAAO,QAAQ,OAAO;CAC5B,OAAO,OAAO;CACd,IAAI;CACJ,QAAQ,OAAO;AAChB,CAAC;AACD,MAAM,cAAc,OAAO,OAAO;CACjC,MAAM,OAAO,QAAQ,SAAS;CAC9B,OAAO,OAAO;CACd,IAAI;CACJ,QAAQ,OAAO;AAChB,CAAC;AACD,MAAM,qBAAqB,OAAO,MAAM;CACvC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD,CAAC;AACD,MAAM,gBAAgB,OAAO,OAAO;CACnC,MAAM,OAAO,QAAQ,WAAW;CAChC,WAAW,OAAO,MAAM,YAAY;AACrC,CAAC;AACD,MAAM,WAAW,OAAO,OAAO;CAC9B,MAAM,OAAO,QAAQ,MAAM;CAC3B,WAAW,OAAO,MAAM,YAAY;CACpC,YAAY,OAAO,OAAO,gBAAgB;AAC3C,CAAC;AACD,MAAM,YAAY,OAAO,OAAO;CAC/B,MAAM,OAAO,QAAQ,OAAO;CAC5B,UAAU,OAAO,OAAO,YAAY;AACrC,CAAC;AACD,MAAM,eAAe,OAAO,OAAO;CAClC,MAAM,OAAO,QAAQ,UAAU;CAC/B,IAAI;AACL,CAAC;AACD,MAAM,gBAAgB,OAAO,OAAO,EAAE,MAAM,OAAO,QAAQ,WAAW,EAAE,CAAC;AAC7C,OAAO,MAAM;CACxC;CACA;CACA;CACA;CACA;AACD,CAAC;;;ACrGD,MAAM,qBAAqB,OAAO,aAAa,OAAO,eAAe,OAAO,MAAM;CACjF;CACA;CACA;CACA;CACA;AACD,CAAC,CAAC,CAAC;AACH,MAAM,oBAAoB,OAAO,WAAW,OAAO,eAAe,kBAAkB,CAAC;AACrF,MAAM,WAAW,OAAO,GAAG,gBAAgB,CAAC,CAAC,WAAW,MAAM,SAAS;CACtE,OAAO,OAAO,OAAO,iBAAiB,KAAK,kBAAkB,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,QAAQ,kBAAkB,GAAG,OAAO,KAAK;AAC9H,CAAC;AACD,MAAM,YAAY,QAAQ,UAAU;CACnC,MAAM,aAAa,OAAO,uBAAuB,CAAC;CAClD,IAAI,eAAe,KAAK,GAAG,MAAM,IAAI,MAAM,2BAA2B,MAAM,GAAG;CAC/E,OAAO;AACR;AACA,MAAM,cAAc,WAAW;AAC/B,MAAM,gBAAgB,QAAQ,OAAO,WAAW;CAC/C,MAAM,aAAa,SAAS,QAAQ,KAAK;CACzC,OAAO,OAAO,kBAAkB,OAAO,UAAU,CAAC,CAAC,OAAO,kBAAkB,OAAO,YAAY,WAAW,WAAW,MAAM,CAAC,GAAG,EAAE,kBAAkB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AACtK;AACA,MAAM,qBAAqB,QAAQ,OAAO,WAAW;CACpD,MAAM,aAAa,SAAS,QAAQ,KAAK;CACzC,OAAO,OAAO,WAAW,OAAO,UAAU,CAAC,CAAC,OAAO,YAAY,OAAO,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,WAAW;EAC5G,MAAM,QAAQ,WAAW,OAAO;EAChC,IAAI,UAAU,KAAK,GAAG,MAAM,IAAI,MAAM,kBAAkB,KAAK,cAAc,MAAM,GAAG;EACpF,OAAO,CAAC,MAAM,OAAO,kBAAkB,OAAO,YAAY,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;CACrF,CAAC,CAAC,CAAC;AACJ;AACA,MAAM,iBAAiB,QAAQ,UAAU,WAAW,OAAO,OAAO;CACjE,GAAG,SAAS,QAAQ,KAAK,CAAC,CAAC;CAC3B,IAAI,OAAO;CACX,WAAW,OAAO;CAClB,WAAW,OAAO;AACnB,CAAC,CAAC;AACF,MAAM,kBAAkB,QAAQ,OAAO,aAAa,OAAO,kBAAkB,OAAO,OAAO,OAAO,QAAQ,OAAO,YAAY,oBAAoB,CAAC,CAAC,CAAC,CAAC,OAAO,WAAW,OAAO,YAAY,cAAc,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC;CACxN,GAAG,SAAS;CACZ,IAAI,SAAS;CACb,WAAW,SAAS;CACpB,WAAW,SAAS;AACrB,CAAC,CAAC;AACF,MAAM,kBAAkB,UAAU,QAAQ;CACzC,IAAI,SAAS,SAAS,KAAK,MAAM,IAAI,MAAM,6BAA6B,SAAS,KAAK,GAAG;CACzF,OAAO;AACR;AACA,MAAM,cAAc,QAAQ,SAAS;CACpC,MAAM,cAAc,OAAO,OAAO,SAAS,MAAM;EAChD,MAAM;EACN;EACA,IAAI,YAAY,KAAK,EAAE;CACxB,CAAC,CAAC,CAAC,KAAK,OAAO,KAAK,aAAa,eAAe,UAAU,OAAO,CAAC,GAAG,OAAO,KAAK,EAAE,eAAe,aAAa,OAAO,KAAK,IAAI,eAAe,QAAQ,OAAO,QAAQ,CAAC,CAAC;CACvK,MAAM,SAAS,OAAO,eAAe,eAAe,QAAQ,UAAU;EACrE,MAAM,aAAa,SAAS,QAAQ,KAAK;EACzC,MAAM,oBAAoB,OAAO,UAAU;GAC1C,MAAM,QAAQ,UAAU,cAAc,OAAO,iBAAiB,UAAU,OAAO,cAAc,WAAW,OAAO;GAC/G,IAAI,UAAU,KAAK,GAAG,MAAM,IAAI,MAAM,wBAAwB,MAAM,GAAG;GACvE,OAAO,OAAO,kBAAkB,OAAO,IAAI,CAAC,CAAC,OAAO,kBAAkB,WAAW,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;EAChG;EACA,MAAM,WAAW,UAAU;GAC1B,MAAM,UAAU,kBAAkB,KAAK,IAAI;IAC1C,MAAM;IACN;IACA;GACD,IAAI,kBAAkB,KAAK,IAAI;IAC9B,MAAM;IACN;IACA,OAAO;IACP;GACD,IAAI;IACH,MAAM;IACN;IACA,OAAO;IACP,OAAO;IACP;GACD;GACA,OAAO,SAAS,MAAM,UAAU,KAAK,IAAI,UAAU;IAClD,GAAG;IACH;GACD,CAAC,CAAC,CAAC,KAAK,OAAO,KAAK,aAAa,eAAe,UAAU,WAAW,CAAC,GAAG,OAAO,KAAK,EAAE,gBAAgB,UAAU,KAAK,aAAa,eAAe,QAAQ,OAAO,QAAQ,CAAC,CAAC,CAAC;EAC7K;EACA,MAAM,eAAe,eAAe;GACnC,OAAO,SAAS,MAAM,kBAAkB,KAAK,IAAI;IAChD,MAAM;IACN;IACA;IACA;GACD,IAAI,kBAAkB,KAAK,IAAI;IAC9B,MAAM;IACN;IACA,OAAO;IACP;IACA;GACD,IAAI;IACH,MAAM;IACN;IACA,OAAO;IACP,OAAO;IACP;IACA;GACD,CAAC,CAAC,CAAC,KAAK,OAAO,KAAK,aAAa,eAAe,UAAU,MAAM,CAAC,GAAG,OAAO,KAAK,EAAE,WAAW,kBAAkB;IAC9G,OAAO,UAAU,KAAK,aAAa,eAAe,QAAQ,OAAO,QAAQ,CAAC;IAC1E;GACD,EAAE,CAAC;EACJ;EACA,MAAM,iBAAiB,UAAU;GAChC,IAAI,CAAC,OAAO,UAAU,KAAK,KAAK,QAAQ,KAAK,QAAQ,KAAK,MAAM,IAAI,MAAM,mDAAmD;GAC7H,OAAO;EACR;EACA,OAAO,OAAO,OAAO;GACpB,QAAQ,MAAM,eAAe;IAC5B,IAAI,kBAAkB,KAAK,GAAG,MAAM,IAAI,MAAM,oCAAoC;IAClF,MAAM,QAAQ,WAAW,QAAQ;IACjC,IAAI,UAAU,KAAK,GAAG,MAAM,IAAI,MAAM,kBAAkB,KAAK,cAAc,MAAM,GAAG;IACpF,IAAI,eAAe,KAAK,GAAG,OAAO,MAAM,OAAO,MAAM,KAAK,GAAG,KAAK;IAClE,MAAM,SAAS;KACd,GAAG,MAAM;KACT;KACA;IACD;IACA,MAAM,QAAQ,EAAE,OAAO,CAAC,EAAE;IAC1B,IAAI,WAAW;IACf,IAAI;IACJ,MAAM,eAAe,UAAU;KAC9B,MAAM,WAAW,OAAO;KACxB,IAAI,UAAU,UAAU,MAAM,IAAI,MAAM,yBAAyB,SAAS,eAAe,MAAM,GAAG;IACnG;IACA,MAAM,UAAU;KACf,KAAK,OAAO,UAAU;MACrB,IAAI,iBAAiB,KAAK,GAAG,MAAM,IAAI,MAAM,wCAAwC;MACrF,YAAY,KAAK;MACjB,MAAM,MAAM,KAAK;OAChB;OACA,OAAO,iBAAiB,OAAO,KAAK;MACrC,CAAC;MACD,YAAY;MACZ,OAAO;KACR;KACA,KAAK,OAAO,UAAU;MACrB,YAAY,KAAK;MACjB,IAAI,MAAM,UAAU,KAAK,GAAG,MAAM,IAAI,MAAM,0CAA0C;MACtF,eAAe;MACf,MAAM,QAAQ;OACb;OACA,OAAO,iBAAiB,OAAO,KAAK;OACpC,WAAW;MACZ;MACA,OAAO;KACR;KACA,MAAM,OAAO,UAAU;MACtB,YAAY,KAAK;MACjB,IAAI,MAAM,UAAU,KAAK,GAAG,MAAM,IAAI,MAAM,0CAA0C;MACtF,eAAe;MACf,MAAM,QAAQ;OACb;OACA,OAAO,iBAAiB,OAAO,KAAK;OACpC,WAAW;MACZ;MACA,OAAO;KACR;KACA,KAAK,OAAO,UAAU;MACrB,YAAY,KAAK;MACjB,IAAI,MAAM,UAAU,KAAK,GAAG,MAAM,IAAI,MAAM,0CAA0C;MACtF,eAAe;MACf,MAAM,QAAQ;OACb;OACA,OAAO,iBAAiB,OAAO,KAAK;OACpC,WAAW;MACZ;MACA,OAAO;KACR;KACA,MAAM,OAAO,UAAU;MACtB,YAAY,KAAK;MACjB,IAAI,MAAM,UAAU,KAAK,GAAG,MAAM,IAAI,MAAM,0CAA0C;MACtF,eAAe;MACf,MAAM,QAAQ;OACb;OACA,OAAO,iBAAiB,OAAO,KAAK;OACpC,WAAW;MACZ;MACA,OAAO;KACR;IACD;IACA,MAAM,QAAQ,WAAW,OAAO;IAChC,IAAI,CAAC,UAAU,SAAS,KAAK,GAAG,MAAM,IAAI,MAAM,kDAAkD;IAClG,OAAO,MAAM,OAAO,MAAM,OAAO,KAAK;GACvC;GACA,QAAQ,cAAc,MAAM,OAAO,eAAe,eAAe,cAAc,QAAQ,QAAQ,MAAM;GACrG,eAAe,iBAAiB,QAAQ,CAAC;GACzC,OAAO,UAAU,iBAAiB,QAAQ,cAAc,KAAK,CAAC,CAAC;GAC/D,aAAa,iBAAiB,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,KAAK,cAAc,UAAU,EAAE,CAAC,CAAC;GACtF,cAAc,iBAAiB,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,SAAS,cAAc,UAAU,SAAS,IAAI,OAAO,oBAAoB,IAAI,MAAM,yDAAyD,CAAC,IAAI,OAAO,QAAQ,UAAU,EAAE,CAAC,CAAC,CAAC;GACrO,WAAW,YAAY,iBAAiB,YAAY,OAAO,CAAC;EAC7D,CAAC;CACF;CACA,OAAO,OAAO,OAAO;EACpB,OAAO,OAAO,OAAO,iBAAiB,WAAW,OAAO,EAAE,CAAC;EAC3D,MAAM,OAAO,OAAO,iBAAiB,WAAW,OAAO,EAAE,CAAC,CAAC,KAAK,OAAO,SAAS,aAAa,aAAa,KAAK,IAAI,OAAO,KAAK,iBAAiB,OAAO,EAAE,CAAC,IAAI,OAAO,QAAQ,QAAQ,CAAC,CAAC,CAAC;EACxL,QAAQ,UAAU,MAAM,KAAK;CAC9B,CAAC;AACF;AACA,MAAM,cAAc,QAAQ,SAAS;CACpC,MAAM,SAAS,WAAW,QAAQ,IAAI;CACtC,MAAM,YAAY,YAAY,SAAS,MAAM,OAAO,CAAC,CAAC,KAAK,OAAO,KAAK,aAAa,eAAe,UAAU,WAAW,CAAC,GAAG,OAAO,MAAM;CACzI,MAAM,SAAS;EACd,GAAG;EACH,SAAS,OAAO,OAAO,iBAAiB,SAAS;GAChD,MAAM;GACN;GACA,IAAI,YAAY,KAAK,EAAE;EACxB,CAAC,CAAC;EACF,SAAS,OAAO,UAAU,iBAAiB,SAAS,MAAM;GACzD,MAAM;GACN;GACA,QAAQ,aAAa,QAAQ,OAAO,KAAK;EAC1C,CAAC,CAAC,CAAC,KAAK,OAAO,KAAK,aAAa,eAAe,UAAU,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;EAC1E,QAAQ,OAAO,IAAI,UAAU,iBAAiB,SAAS;GACtD,MAAM;GACN;GACA,IAAI,YAAY,KAAK,EAAE;GACvB,QAAQ,kBAAkB,QAAQ,OAAO,KAAK;EAC/C,CAAC,CAAC;EACF,UAAU,OAAO,IAAI,UAAU,iBAAiB,SAAS;GACxD,MAAM;GACN;GACA,IAAI,YAAY,KAAK,EAAE;GACvB,QAAQ,aAAa,QAAQ,OAAO,KAAK;EAC1C,CAAC,CAAC;CACH;CACA,OAAO,OAAO,OAAO,MAAM;AAC5B;AACA,MAAM,gBAAgB,OAAO,GAAG,qBAAqB,CAAC,CAAC,WAAW,YAAY,OAAO;CACpF,IAAI,WAAW,YAAY,KAAK,GAAG;EAClC,OAAO,OAAO,oBAAoB,OAAO,SAAS,CAAC,CAAC,KAAK;EACzD,OAAO,EAAE,MAAM,UAAU;CAC1B;CACA,MAAM,SAAS;EACd,MAAM;EACN,OAAO,OAAO,OAAO,oBAAoB,OAAO,YAAY,WAAW,OAAO,CAAC,CAAC,CAAC,KAAK;CACvF;CACA,MAAM,QAAQ,YAAY,KAAK;CAC/B,OAAO,MAAM,WAAW,IAAI,SAAS;EACpC,GAAG;EACH;CACD;AACD,CAAC;AACD,MAAM,gBAAgB,OAAO,GAAG,qBAAqB,CAAC,CAAC,WAAW,YAAY,OAAO;CACpF,MAAM,SAAS;EACd,MAAM;EACN,OAAO,OAAO,OAAO,oBAAoB,OAAO,YAAY,WAAW,UAAU,gBAAgB,CAAC,CAAC,CAAC,KAAK;CAC1G;CACA,MAAM,QAAQ,kBAAkB,KAAK;CACrC,OAAO,MAAM,WAAW,IAAI,SAAS;EACpC,GAAG;EACH;CACD;AACD,CAAC;AACD,MAAM,WAAW,OAAO,GAAG,cAAc,CAAC,CAAC,WAAW,YAAY,aAAa,MAAM;CACpF,MAAM,SAAS,kBAAkB,UAAU;CAC3C,IAAI,WAAW,KAAK,GAAG,OAAO,OAAO,OAAO,IAAI,mCAAmC;CACnF,MAAM,cAAc,OAAO,OAAO,aAAa,OAAO,YAAY,WAAW,OAAO,OAAO,WAAW,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,OAAO,MAAM;EACnJ,kBAAkB,EAAE,OAAO,MAAM;EACjC,YAAY,WAAW;GACtB,OAAO;GACP;EACD;CACD,CAAC,CAAC;CACF,IAAI,CAAC,YAAY,OAAO,OAAO;EAC9B,MAAM;EACN,MAAM;EACN,SAAS;CACV;CACA,MAAM,OAAO,OAAO,OAAO,oBAAoB,OAAO,aAAa,CAAC,CAAC,YAAY,KAAK;CACtF,MAAM,UAAU,OAAO,OAAO,EAAE,IAAI,WAAW,SAAS,UAAU,WAAW,QAAQ,IAAI,IAAI,WAAW,QAAQ,IAAI,EAAE,CAAC;CACvH,OAAO,OAAO,OAAO,UAAU,WAAW,QAAQ,SAAS,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,YAAY;EACzF,YAAY,UAAU,cAAc,YAAY,KAAK;EACrD,YAAY,UAAU,cAAc,YAAY,KAAK;CACtD,CAAC,CAAC;AACH,CAAC;AACD,MAAM,UAAU,YAAY,aAAa,SAAS,OAAO,WAAW,SAAS,YAAY,aAAa,IAAI,CAAC,CAAC,CAAC,MAAM,WAAW,OAAO,WAAW,OAAO,eAAe,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC"}
1
+ {"version":3,"file":"host.js","names":[],"sources":["../../../../contracts/dist/runtime/host.js","../../../../runtime/dist/guest.js"],"sourcesContent":["import { GeneratedId } from \"./id.js\";\nimport { PaginationCursor, PaginationPageSize } from \"./pagination.js\";\nimport { Schema } from \"effect\";\n//#region src/runtime/host.ts\nconst HostDocument = Schema.Struct({\n\tid: GeneratedId,\n\tcreatedAt: Schema.Int,\n\tupdatedAt: Schema.Int,\n\tfields: Schema.JsonObject\n});\nconst HostCollect = Schema.Struct({\n\ttype: Schema.Literal(\"Collect\"),\n\ttable: Schema.String\n});\nconst HostIndexComparison = Schema.Struct({\n\tfield: Schema.String,\n\tvalue: Schema.Json\n});\nconst HostIndexRange = Schema.Struct({\n\tequal: Schema.Array(HostIndexComparison),\n\tlower: Schema.optional(Schema.Struct({\n\t\t...HostIndexComparison.fields,\n\t\tinclusive: Schema.Boolean\n\t})),\n\tupper: Schema.optional(Schema.Struct({\n\t\t...HostIndexComparison.fields,\n\t\tinclusive: Schema.Boolean\n\t}))\n});\nconst HostQuery = Schema.Struct({\n\ttype: Schema.Literal(\"Query\"),\n\ttable: Schema.String,\n\tindex: Schema.optional(Schema.String),\n\trange: Schema.optional(HostIndexRange),\n\torder: Schema.Literals([\"Asc\", \"Desc\"]),\n\tlimit: Schema.optional(Schema.Natural)\n});\nconst HostPaginate = Schema.Struct({\n\ttype: Schema.Literal(\"Paginate\"),\n\ttable: Schema.String,\n\tindex: Schema.optional(Schema.String),\n\trange: Schema.optional(HostIndexRange),\n\torder: Schema.Literals([\"Asc\", \"Desc\"]),\n\tpagination: Schema.Struct({\n\t\tcursor: Schema.NullOr(PaginationCursor),\n\t\tpageSize: PaginationPageSize\n\t})\n});\nconst HostFind = Schema.Struct({\n\ttype: Schema.Literal(\"Find\"),\n\ttable: Schema.String,\n\tid: GeneratedId\n});\nconst HostInsert = Schema.Struct({\n\ttype: Schema.Literal(\"Insert\"),\n\ttable: Schema.String,\n\tfields: Schema.JsonObject\n});\nconst HostDelete = Schema.Struct({\n\ttype: Schema.Literal(\"Delete\"),\n\ttable: Schema.String,\n\tid: GeneratedId\n});\nconst HostPatch = Schema.Struct({\n\ttype: Schema.Literal(\"Patch\"),\n\ttable: Schema.String,\n\tid: GeneratedId,\n\tfields: Schema.JsonObject\n});\nconst HostReplace = Schema.Struct({\n\ttype: Schema.Literal(\"Replace\"),\n\ttable: Schema.String,\n\tid: GeneratedId,\n\tfields: Schema.JsonObject\n});\nconst QuickJsHostRequest = Schema.Union([\n\tHostCollect,\n\tHostQuery,\n\tHostPaginate,\n\tHostFind,\n\tHostInsert,\n\tHostDelete,\n\tHostPatch,\n\tHostReplace\n]);\nconst HostDocuments = Schema.Struct({\n\ttype: Schema.Literal(\"Documents\"),\n\tdocuments: Schema.Array(HostDocument)\n});\nconst HostPage = Schema.Struct({\n\ttype: Schema.Literal(\"Page\"),\n\tdocuments: Schema.Array(HostDocument),\n\tnextCursor: Schema.NullOr(PaginationCursor)\n});\nconst HostFound = Schema.Struct({\n\ttype: Schema.Literal(\"Found\"),\n\tdocument: Schema.NullOr(HostDocument)\n});\nconst HostInserted = Schema.Struct({\n\ttype: Schema.Literal(\"Inserted\"),\n\tid: GeneratedId\n});\nconst HostCompleted = Schema.Struct({\n\ttype: Schema.Literal(\"Completed\"),\n\tfound: Schema.Boolean\n});\nconst QuickJsHostResponse = Schema.Union([\n\tHostDocuments,\n\tHostPage,\n\tHostFound,\n\tHostInserted,\n\tHostCompleted\n]);\n//#endregion\nexport { HostCollect, HostCompleted, HostDelete, HostDocument, HostDocuments, HostFind, HostFound, HostIndexComparison, HostIndexRange, HostInsert, HostInserted, HostPage, HostPaginate, HostPatch, HostQuery, HostReplace, QuickJsHostRequest, QuickJsHostResponse };\n\n//# sourceMappingURL=host.js.map","import { HostCompleted, HostDocuments, HostFound, HostInserted, HostPage, QuickJsHostRequest } from \"@ignotum/contracts/runtime/host\";\nimport { runtimeFileOccurrencesOf } from \"@ignotum/contracts/schema/file\";\nimport { GeneratedId } from \"@ignotum/contracts/runtime/id\";\nimport { Effect, Predicate, Schema } from \"effect\";\nimport { ErrorValueSchema, documentNotFound, resultFromEffect } from \"@ignotum/contracts/runtime/result\";\nimport { getFunctionSchema } from \"@ignotum/contracts/runtime/schema\";\nimport { TransportValueSchema, datePathsOf, datePathsOfObject } from \"@ignotum/contracts/runtime/value\";\nimport { SchemaDefinitionTypeId } from \"@ignotum/contracts/schema\";\n//#region src/guest.ts\nconst decodeHostResponse = Schema.decodeEffect(Schema.fromJsonString(Schema.Union([\n\tHostDocuments,\n\tHostPage,\n\tHostFound,\n\tHostInserted,\n\tHostCompleted\n])));\nconst encodeHostRequest = Schema.encodeSync(Schema.fromJsonString(QuickJsHostRequest));\nconst callHost = Effect.fn(\"Guest.callHost\")(function* (call, request) {\n\treturn yield* Effect.tryPromise(() => call(encodeHostRequest(request))).pipe(Effect.flatMap(decodeHostResponse), Effect.orDie);\n});\nconst tableFor = (schema, table) => {\n\tconst definition = schema[SchemaDefinitionTypeId][table];\n\tif (definition === void 0) throw new Error(`Unknown database table '${table}'.`);\n\treturn definition;\n};\nconst guestCodec = (schema) => schema;\nconst encodeFields = (schema, table, fields) => {\n\tconst definition = tableFor(schema, table);\n\treturn Schema.decodeUnknownSync(Schema.JsonObject)(Schema.encodeUnknownSync(Schema.toCodecJson(guestCodec(definition.schema)), { onExcessProperty: \"error\" })(fields));\n};\nconst encodePatchFields = (schema, table, fields) => {\n\tconst definition = tableFor(schema, table);\n\treturn Schema.decodeSync(Schema.JsonObject)(Object.fromEntries(Object.entries(fields).map(([name, value]) => {\n\t\tconst field = definition.fields[name];\n\t\tif (field === void 0) throw new Error(`Unknown field '${name}' on table '${table}'.`);\n\t\treturn [name, Schema.encodeUnknownSync(Schema.toCodecJson(guestCodec(field)))(value)];\n\t})));\n};\nconst documentCodec = (schema, table) => guestCodec(Schema.Struct({\n\t...tableFor(schema, table).fields,\n\tid: Schema.String,\n\tcreatedAt: Schema.DateFromMillis,\n\tupdatedAt: Schema.DateFromMillis\n}));\nconst decodeDocument = (schema, table, document) => Schema.decodeUnknownSync(Schema.Record(Schema.String, Schema.UndefinedOr(TransportValueSchema)))(Schema.decodeSync(Schema.toCodecJson(documentCodec(schema, table)))({\n\t...document.fields,\n\tid: document.id,\n\tcreatedAt: document.createdAt,\n\tupdatedAt: document.updatedAt\n}));\nconst expectResponse = (response, tag) => {\n\tif (response.type !== tag) throw new Error(`Unexpected host response '${response.type}'.`);\n\treturn response;\n};\nconst makeReader = (schema, call) => {\n\tconst findEffect = (table, id) => callHost(call, {\n\t\ttype: \"Find\",\n\t\ttable,\n\t\tid: GeneratedId.make(id)\n\t}).pipe(Effect.map((response) => expectResponse(response, \"Found\")), Effect.map(({ document }) => document === null ? void 0 : decodeDocument(schema, table, document)));\n\tconst query = (table, selectedIndex, selectedRange, order = \"Asc\") => {\n\t\tconst definition = tableFor(schema, table);\n\t\tconst encodeIndexValue = (field, value) => {\n\t\t\tconst codec = field === \"createdAt\" ? Schema.DateFromMillis : field === \"id\" ? GeneratedId : definition.fields[field];\n\t\t\tif (codec === void 0) throw new Error(`Unknown index field '${field}'.`);\n\t\t\treturn Schema.decodeUnknownSync(Schema.Json)(Schema.encodeUnknownSync(guestCodec(codec))(value));\n\t\t};\n\t\tconst execute = (limit) => {\n\t\t\tconst request = selectedIndex === void 0 ? {\n\t\t\t\ttype: \"Query\",\n\t\t\t\ttable,\n\t\t\t\torder\n\t\t\t} : selectedRange === void 0 ? {\n\t\t\t\ttype: \"Query\",\n\t\t\t\ttable,\n\t\t\t\tindex: selectedIndex,\n\t\t\t\torder\n\t\t\t} : {\n\t\t\t\ttype: \"Query\",\n\t\t\t\ttable,\n\t\t\t\tindex: selectedIndex,\n\t\t\t\trange: selectedRange,\n\t\t\t\torder\n\t\t\t};\n\t\t\treturn callHost(call, limit === void 0 ? request : {\n\t\t\t\t...request,\n\t\t\t\tlimit\n\t\t\t}).pipe(Effect.map((response) => expectResponse(response, \"Documents\")), Effect.map(({ documents }) => documents.map((document) => decodeDocument(schema, table, document))));\n\t\t};\n\t\tconst executePage = (pagination) => {\n\t\t\treturn callHost(call, selectedIndex === void 0 ? {\n\t\t\t\ttype: \"Paginate\",\n\t\t\t\ttable,\n\t\t\t\torder,\n\t\t\t\tpagination\n\t\t\t} : selectedRange === void 0 ? {\n\t\t\t\ttype: \"Paginate\",\n\t\t\t\ttable,\n\t\t\t\tindex: selectedIndex,\n\t\t\t\torder,\n\t\t\t\tpagination\n\t\t\t} : {\n\t\t\t\ttype: \"Paginate\",\n\t\t\t\ttable,\n\t\t\t\tindex: selectedIndex,\n\t\t\t\trange: selectedRange,\n\t\t\t\torder,\n\t\t\t\tpagination\n\t\t\t}).pipe(Effect.map((response) => expectResponse(response, \"Page\")), Effect.map(({ documents, nextCursor }) => ({\n\t\t\t\titems: documents.map((document) => decodeDocument(schema, table, document)),\n\t\t\t\tnextCursor\n\t\t\t})));\n\t\t};\n\t\tconst validateLimit = (count) => {\n\t\t\tif (!Number.isInteger(count) || count < 0 || count > 1e3) throw new Error(\"Query limits must be integers between 0 and 1000.\");\n\t\t\treturn count;\n\t\t};\n\t\treturn Object.freeze({\n\t\t\tindex: (name, buildRange) => {\n\t\t\t\tif (selectedIndex !== void 0) throw new Error(\"A query can select only one index.\");\n\t\t\t\tconst index = definition.indexes[name];\n\t\t\t\tif (index === void 0) throw new Error(`Unknown index '${name}' on table '${table}'.`);\n\t\t\t\tif (buildRange === void 0) return query(table, name, void 0, order);\n\t\t\t\tconst fields = [\n\t\t\t\t\t...index.fields,\n\t\t\t\t\t\"createdAt\",\n\t\t\t\t\t\"id\"\n\t\t\t\t];\n\t\t\t\tconst range = { equal: [] };\n\t\t\t\tlet position = 0;\n\t\t\t\tlet boundedField;\n\t\t\t\tconst expectField = (field) => {\n\t\t\t\t\tconst expected = fields[position];\n\t\t\t\t\tif (field !== expected) throw new Error(`Expected index field '${expected}', received '${field}'.`);\n\t\t\t\t};\n\t\t\t\tconst builder = {\n\t\t\t\t\teq: (field, value) => {\n\t\t\t\t\t\tif (boundedField !== void 0) throw new Error(\"Equality cannot follow an index bound.\");\n\t\t\t\t\t\texpectField(field);\n\t\t\t\t\t\trange.equal.push({\n\t\t\t\t\t\t\tfield,\n\t\t\t\t\t\t\tvalue: encodeIndexValue(field, value)\n\t\t\t\t\t\t});\n\t\t\t\t\t\tposition += 1;\n\t\t\t\t\t\treturn builder;\n\t\t\t\t\t},\n\t\t\t\t\tgt: (field, value) => {\n\t\t\t\t\t\texpectField(field);\n\t\t\t\t\t\tif (range.lower !== void 0) throw new Error(\"An index range has only one lower bound.\");\n\t\t\t\t\t\tboundedField = field;\n\t\t\t\t\t\trange.lower = {\n\t\t\t\t\t\t\tfield,\n\t\t\t\t\t\t\tvalue: encodeIndexValue(field, value),\n\t\t\t\t\t\t\tinclusive: false\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn builder;\n\t\t\t\t\t},\n\t\t\t\t\tgte: (field, value) => {\n\t\t\t\t\t\texpectField(field);\n\t\t\t\t\t\tif (range.lower !== void 0) throw new Error(\"An index range has only one lower bound.\");\n\t\t\t\t\t\tboundedField = field;\n\t\t\t\t\t\trange.lower = {\n\t\t\t\t\t\t\tfield,\n\t\t\t\t\t\t\tvalue: encodeIndexValue(field, value),\n\t\t\t\t\t\t\tinclusive: true\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn builder;\n\t\t\t\t\t},\n\t\t\t\t\tlt: (field, value) => {\n\t\t\t\t\t\texpectField(field);\n\t\t\t\t\t\tif (range.upper !== void 0) throw new Error(\"An index range has only one upper bound.\");\n\t\t\t\t\t\tboundedField = field;\n\t\t\t\t\t\trange.upper = {\n\t\t\t\t\t\t\tfield,\n\t\t\t\t\t\t\tvalue: encodeIndexValue(field, value),\n\t\t\t\t\t\t\tinclusive: false\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn builder;\n\t\t\t\t\t},\n\t\t\t\t\tlte: (field, value) => {\n\t\t\t\t\t\texpectField(field);\n\t\t\t\t\t\tif (range.upper !== void 0) throw new Error(\"An index range has only one upper bound.\");\n\t\t\t\t\t\tboundedField = field;\n\t\t\t\t\t\trange.upper = {\n\t\t\t\t\t\t\tfield,\n\t\t\t\t\t\t\tvalue: encodeIndexValue(field, value),\n\t\t\t\t\t\t\tinclusive: true\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn builder;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst built = buildRange(builder);\n\t\t\t\tif (!Predicate.isObject(built)) throw new Error(\"An index range callback must return its builder.\");\n\t\t\t\treturn query(table, name, range, order);\n\t\t\t},\n\t\t\torder: (direction) => query(table, selectedIndex, selectedRange, direction === \"asc\" ? \"Asc\" : \"Desc\"),\n\t\t\tcollect: () => resultFromEffect(execute()),\n\t\t\ttake: (count) => resultFromEffect(execute(validateLimit(count))),\n\t\t\tfirst: () => resultFromEffect(execute(1).pipe(Effect.map((documents) => documents[0]))),\n\t\t\tunique: () => resultFromEffect(execute(2).pipe(Effect.flatMap((documents) => documents.length > 1 ? Effect.die(/* @__PURE__ */ new Error(\"A unique database query matched more than one document.\")) : Effect.succeed(documents[0])))),\n\t\t\tpaginate: (options) => resultFromEffect(executePage(options))\n\t\t});\n\t};\n\treturn Object.freeze({\n\t\tfind: (table, id) => resultFromEffect(findEffect(table, id)),\n\t\tget: (table, id) => resultFromEffect(findEffect(table, id).pipe(Effect.flatMap((document) => document === void 0 ? Effect.fail(documentNotFound(table, id)) : Effect.succeed(document)))),\n\t\tquery: (table) => query(table)\n\t});\n};\nconst makeWriter = (schema, call) => {\n\tconst reader = makeReader(schema, call);\n\tconst complete = Effect.fn(\"Guest.completeWrite\")(function* (table, id, request) {\n\t\tif (expectResponse(yield* callHost(call, request), \"Completed\").found === false) return yield* Effect.fail(documentNotFound(table, id));\n\t});\n\tconst writer = {\n\t\t...reader,\n\t\tdelete: (table, id) => resultFromEffect(complete(table, id, {\n\t\t\ttype: \"Delete\",\n\t\t\ttable,\n\t\t\tid: GeneratedId.make(id)\n\t\t})),\n\t\tinsert: (table, value) => resultFromEffect(callHost(call, {\n\t\t\ttype: \"Insert\",\n\t\t\ttable,\n\t\t\tfields: encodeFields(schema, table, value)\n\t\t}).pipe(Effect.map((response) => expectResponse(response, \"Inserted\").id))),\n\t\tpatch: (table, id, value) => resultFromEffect(complete(table, id, {\n\t\t\ttype: \"Patch\",\n\t\t\ttable,\n\t\t\tid: GeneratedId.make(id),\n\t\t\tfields: encodePatchFields(schema, table, value)\n\t\t})),\n\t\treplace: (table, id, value) => resultFromEffect(complete(table, id, {\n\t\t\ttype: \"Replace\",\n\t\t\ttable,\n\t\t\tid: GeneratedId.make(id),\n\t\t\tfields: encodeFields(schema, table, value)\n\t\t}))\n\t};\n\treturn Object.freeze(writer);\n};\nconst encodeSuccess = Effect.fn(\"Guest.encodeSuccess\")(function* (definition, value) {\n\tif (definition.returns === void 0) {\n\t\tyield* Schema.encodeUnknownEffect(Schema.Undefined)(value);\n\t\treturn { type: \"Success\" };\n\t}\n\tconst encoded = yield* Schema.encodeUnknownEffect(Schema.toCodecJson(definition.returns))(value);\n\tconst files = runtimeFileOccurrencesOf(value);\n\tconst result = files.length === 0 ? {\n\t\ttype: \"Success\",\n\t\tvalue: encoded\n\t} : {\n\t\ttype: \"Success\",\n\t\tvalue: encoded,\n\t\tfiles\n\t};\n\tconst dates = datePathsOf(value);\n\treturn dates.length === 0 ? result : {\n\t\t...result,\n\t\tdates\n\t};\n});\nconst encodeFailure = Effect.fn(\"Guest.encodeFailure\")(function* (definition, error) {\n\tconst result = {\n\t\ttype: \"Failure\",\n\t\terror: yield* Schema.encodeUnknownEffect(Schema.toCodecJson(definition.errors ?? ErrorValueSchema))(error)\n\t};\n\tconst dates = datePathsOfObject(error);\n\treturn dates.length === 0 ? result : {\n\t\t...result,\n\t\tdates\n\t};\n});\nconst runGuest = Effect.fn(\"Guest.invoke\")(function* (definition, encodedArgs, call) {\n\tconst schema = getFunctionSchema(definition);\n\tif (schema === void 0) return yield* Effect.die(\"The function has no bound schema.\");\n\tconst decodedArgs = yield* Schema.decodeEffect(Schema.toCodecJson(guestCodec(Schema.Struct(definition.args ?? {}))))(encodedArgs).pipe(Effect.match({\n\t\tonFailure: () => ({ valid: false }),\n\t\tonSuccess: (value) => ({\n\t\t\tvalid: true,\n\t\t\tvalue\n\t\t})\n\t}));\n\tif (!decodedArgs.valid) return {\n\t\ttype: \"InvocationRejected\",\n\t\tcode: \"InvalidArguments\",\n\t\tmessage: \"The invocation arguments do not match the function definition.\"\n\t};\n\tconst args = yield* Schema.decodeUnknownEffect(Schema.ObjectKeyword)(decodedArgs.value);\n\tconst context = Object.freeze({ db: definition._tag === \"Query\" ? makeReader(schema, call) : makeWriter(schema, call) });\n\treturn yield* Effect.gen(() => definition.handler(context, args)).pipe(Effect.matchEffect({\n\t\tonFailure: (error) => encodeFailure(definition, error),\n\t\tonSuccess: (value) => encodeSuccess(definition, value)\n\t}));\n});\nconst invoke = (definition, encodedArgs, call) => Effect.runPromise(runGuest(definition, encodedArgs, call)).then((result) => Schema.encodeSync(Schema.fromJsonString(Schema.Json))(result));\n//#endregion\nexport { invoke };\n\n//# sourceMappingURL=guest.js.map"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { r as bindSchema$1 } from "../index-B5KSOjGN.js";
1
+ import { r as bindSchema$1 } from "../index-D6VLTbDB.js";
2
2
  //#region src/internal/server.d.ts
3
3
  declare const bindSchema: typeof bindSchema$1;
4
4
  //#endregion
@@ -1,4 +1,4 @@
1
- import { n as bindSchema$1 } from "../schema-D9RmboaS.js";
1
+ import { n as bindSchema$1 } from "../schema-B6PK_ZwV.js";
2
2
  //#region src/internal/server.ts
3
3
  const bindSchema = bindSchema$1;
4
4
  //#endregion
@@ -1,2 +1,2 @@
1
- import { a as Document, c as SchemaDefinitionTypeId, o as Id, s as SchemaDefinitionOf } from "../index-B5KSOjGN.js";
1
+ import { a as Document, c as SchemaDefinitionTypeId, o as Id, s as SchemaDefinitionOf } from "../index-D6VLTbDB.js";
2
2
  export { type Document, type Id, type SchemaDefinitionOf, SchemaDefinitionTypeId };
@@ -1,2 +1,2 @@
1
- import { t as SchemaDefinitionTypeId } from "../schema-D9RmboaS.js";
1
+ import { t as SchemaDefinitionTypeId } from "../schema-B6PK_ZwV.js";
2
2
  export { SchemaDefinitionTypeId };
@@ -1,6 +1,6 @@
1
- import "./id-Btwac71X-DhnKYsjY.js";
1
+ import "./id-Cs82tq9Q-Caqfx54f.js";
2
2
  import { Schema } from "effect";
3
- //#region ../contracts/dist/descriptor-CVZycwe2.d.ts
3
+ //#region ../contracts/dist/descriptor-CEi5Jjiv.d.ts
4
4
  //#region src/schema/descriptor.d.ts
5
5
  interface DescriptorField {
6
6
  readonly name: string;
@@ -13,6 +13,10 @@ type ValueDescriptor = {
13
13
  readonly type: "boolean";
14
14
  } | {
15
15
  readonly type: "date";
16
+ } | {
17
+ readonly type: "file";
18
+ readonly formats: ReadonlyArray<"jpeg" | "png" | "webp" | "avif" | "gif">;
19
+ readonly maxBytes: number;
16
20
  } | {
17
21
  readonly type: "error";
18
22
  readonly tag: string;
@@ -62,7 +66,7 @@ type ValueFields = {
62
66
  readonly [fieldName: PropertyKey]: DescribedValue;
63
67
  };
64
68
  //#endregion
65
- //#region ../contracts/dist/pagination-B1BzNkh8.d.ts
69
+ //#region ../contracts/dist/pagination-Bt3l7QaC.d.ts
66
70
  //#region src/runtime/pagination.d.ts
67
71
  declare const PaginationCursor: Schema.brand<Schema.String, "ignotum/runtime/PaginationCursor">;
68
72
  type PaginationCursor = typeof PaginationCursor.Type;
@@ -77,4 +81,4 @@ interface PaginationPage<Item> {
77
81
  }
78
82
  //#endregion
79
83
  export { ValueDescriptorCarrier as a, ValueDescriptor as i, PaginationPage as n, ValueFields as o, DescribedValue as r, PaginationOptions as t };
80
- //# sourceMappingURL=pagination-B1BzNkh8-BUSTbeSg.d.ts.map
84
+ //# sourceMappingURL=pagination-Bt3l7QaC-D_zI5zsu.d.ts.map
@@ -0,0 +1 @@
1
+ import "./pagination-Bt3l7QaC-D_zI5zsu.js";
@@ -1,5 +1,5 @@
1
- import { r as GeneratedId } from "./id-D570vudg.js";
2
- import { a as PaginationCursor, i as getValueDescriptor, n as attachValueDescriptor, o as PaginationPageSize, r as descriptorFields, s as ErrorBrand } from "./descriptor-t6BOEGw9-C1rwYIlx.js";
1
+ import { c as fileFormats, d as fileLimits, n as FileFormat, s as constrainedFileValue, y as GeneratedId } from "./file-C1abuMgd.js";
2
+ import { a as PaginationCursor, i as getValueDescriptor, l as ErrorBrand, n as attachValueDescriptor, o as PaginationPageSize, r as descriptorFields } from "./descriptor-C5VA9qRl-BKbdenuU.js";
3
3
  import { Schema, Struct } from "effect";
4
4
  //#region ../contracts/dist/schema/values.js
5
5
  const LiteralValueSchema = Schema.Union([
@@ -69,6 +69,19 @@ const number = () => attachValueDescriptor(fresh(Schema.Finite), { type: "number
69
69
  const integer = () => attachValueDescriptor(fresh(Schema.Int), { type: "integer" });
70
70
  const boolean = () => attachValueDescriptor(fresh(Schema.Boolean), { type: "boolean" });
71
71
  const date = () => attachValueDescriptor(fresh(Schema.DateFromMillis), { type: "date" });
72
+ const file = (options = {}) => {
73
+ const formats = options.formats ?? fileFormats;
74
+ if (formats.length === 0) throw new Error("File format lists cannot be empty.");
75
+ Schema.decodeUnknownSync(Schema.Array(FileFormat))(formats);
76
+ if (new Set(formats).size !== formats.length) throw new Error("File format lists cannot contain duplicates.");
77
+ const maxBytes = options.maxBytes ?? fileLimits.fileBytes;
78
+ if (!Number.isSafeInteger(maxBytes) || maxBytes <= 0 || maxBytes > fileLimits.fileBytes) throw new Error(`File sizes must be between 1 and ${fileLimits.fileBytes} bytes.`);
79
+ return attachValueDescriptor(constrainedFileValue(formats, maxBytes), {
80
+ type: "file",
81
+ formats: [...formats],
82
+ maxBytes
83
+ });
84
+ };
72
85
  const never = () => attachValueDescriptor(fresh(Schema.Never), { type: "never" });
73
86
  const nullValue = () => attachValueDescriptor(fresh(Schema.Null), { type: "null" });
74
87
  const literal = (value) => {
@@ -204,6 +217,7 @@ const values = {
204
217
  array,
205
218
  boolean,
206
219
  date,
220
+ file,
207
221
  error,
208
222
  id,
209
223
  integer,
@@ -288,4 +302,4 @@ const bindSchema = (schema) => ({
288
302
  //#endregion
289
303
  export { getFunctionSchema as i, bindSchema as n, defineSchema as r, SchemaDefinitionTypeId as t };
290
304
 
291
- //# sourceMappingURL=schema-D9RmboaS.js.map
305
+ //# sourceMappingURL=schema-B6PK_ZwV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-B6PK_ZwV.js","names":[],"sources":["../../../contracts/dist/schema/values.js","../../../contracts/dist/runtime/schema.js","../../../contracts/dist/schema/index.js"],"sourcesContent":["import { GeneratedId } from \"../runtime/id.js\";\nimport { FileFormat, constrainedFileValue, fileFormats, fileLimits } from \"./file.js\";\nimport { a as descriptorFields, o as getValueDescriptor, r as attachValueDescriptor } from \"../descriptor-C5VA9qRl.js\";\nimport { PaginationCursor, PaginationPageSize } from \"../runtime/pagination.js\";\nimport { ErrorBrand } from \"../runtime/result.js\";\nimport { Schema, Struct } from \"effect\";\n//#region src/schema/values.ts\nconst LiteralValueSchema = Schema.Union([\n\tSchema.String,\n\tSchema.Finite,\n\tSchema.Boolean\n]);\nconst schemaIndexLimits = {\n\tfieldsPerIndex: 8,\n\tindexesPerSchema: 128,\n\tindexesPerTable: 16,\n\tkeyBytes: 4096,\n\tnameBytes: 64\n};\nconst utf8ByteLength = (value) => {\n\tlet bytes = 0;\n\tfor (const character of value) {\n\t\tconst point = character.codePointAt(0) ?? 0;\n\t\tbytes += point <= 127 ? 1 : point <= 2047 ? 2 : point <= 65535 ? 3 : 4;\n\t}\n\treturn bytes;\n};\nconst table = (fields) => {\n\tconst tableFields = fields;\n\tconst make = (indexes) => {\n\t\tconst index = (name, fieldNames) => {\n\t\t\tif (utf8ByteLength(name) > schemaIndexLimits.nameBytes) throw new Error(`Index names cannot exceed ${schemaIndexLimits.nameBytes} UTF-8 bytes.`);\n\t\t\tif (name.length === 0) throw new Error(\"Index names cannot be empty.\");\n\t\t\tif (name.startsWith(\"$\")) throw new Error(\"Index names beginning with '$' are reserved.\");\n\t\t\tif (Object.hasOwn(indexes, name)) throw new Error(`Duplicate index name '${name}'.`);\n\t\t\tif (fieldNames.length > schemaIndexLimits.fieldsPerIndex) throw new Error(`Indexes cannot contain more than ${schemaIndexLimits.fieldsPerIndex} fields.`);\n\t\t\tif (new Set(fieldNames).size !== fieldNames.length) throw new Error(`Index '${name}' contains duplicate fields.`);\n\t\t\tfor (const fieldName of fieldNames) {\n\t\t\t\tif (!Object.hasOwn(tableFields, fieldName)) throw new Error(`Index '${name}' references unknown field '${fieldName}'.`);\n\t\t\t\tconst descriptor = getValueDescriptor(tableFields[fieldName]);\n\t\t\t\tif (!(descriptor?.type === \"boolean\" || descriptor?.type === \"date\" || descriptor?.type === \"id\" || descriptor?.type === \"integer\" || descriptor?.type === \"number\" || descriptor?.type === \"string\" || descriptor?.type === \"literal\" || descriptor?.type === \"literals\")) throw new Error(`Index '${name}' field '${fieldName}' is not indexable.`);\n\t\t\t\tif (descriptor.type === \"literals\" && !(descriptor.values.every(Schema.is(Schema.Boolean)) || descriptor.values.every(Schema.is(Schema.Finite)) || descriptor.values.every(Schema.is(Schema.String)))) throw new Error(`Index '${name}' field '${fieldName}' mixes value types.`);\n\t\t\t}\n\t\t\tconst duplicate = Object.values(indexes).find((candidate) => candidate.fields.length === fieldNames.length && candidate.fields.every((fieldName, position) => fieldName === fieldNames[position]));\n\t\t\tif (duplicate !== void 0) throw new Error(`Index '${name}' duplicates index '${duplicate.name}'.`);\n\t\t\tif (Object.keys(indexes).length >= schemaIndexLimits.indexesPerTable) throw new Error(`Tables cannot declare more than ${schemaIndexLimits.indexesPerTable} indexes.`);\n\t\t\treturn make({\n\t\t\t\t...indexes,\n\t\t\t\t[name]: {\n\t\t\t\t\tname,\n\t\t\t\t\tfields: fieldNames\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\treturn {\n\t\t\t_tag: \"Table\",\n\t\t\tdescriptor: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tfields: descriptorFields(tableFields)\n\t\t\t},\n\t\t\tfields: tableFields,\n\t\t\tindex,\n\t\t\tindexes,\n\t\t\tschema: Schema.Struct(tableFields)\n\t\t};\n\t};\n\treturn make({});\n};\nconst fresh = (value) => value.pipe(Schema.annotate({}));\nconst string = () => attachValueDescriptor(fresh(Schema.String), { type: \"string\" });\nconst number = () => attachValueDescriptor(fresh(Schema.Finite), { type: \"number\" });\nconst integer = () => attachValueDescriptor(fresh(Schema.Int), { type: \"integer\" });\nconst boolean = () => attachValueDescriptor(fresh(Schema.Boolean), { type: \"boolean\" });\nconst date = () => attachValueDescriptor(fresh(Schema.DateFromMillis), { type: \"date\" });\nconst file = (options = {}) => {\n\tconst formats = options.formats ?? fileFormats;\n\tif (formats.length === 0) throw new Error(\"File format lists cannot be empty.\");\n\tSchema.decodeUnknownSync(Schema.Array(FileFormat))(formats);\n\tif (new Set(formats).size !== formats.length) throw new Error(\"File format lists cannot contain duplicates.\");\n\tconst maxBytes = options.maxBytes ?? fileLimits.fileBytes;\n\tif (!Number.isSafeInteger(maxBytes) || maxBytes <= 0 || maxBytes > fileLimits.fileBytes) throw new Error(`File sizes must be between 1 and ${fileLimits.fileBytes} bytes.`);\n\treturn attachValueDescriptor(constrainedFileValue(formats, maxBytes), {\n\t\ttype: \"file\",\n\t\tformats: [...formats],\n\t\tmaxBytes\n\t});\n};\nconst never = () => attachValueDescriptor(fresh(Schema.Never), { type: \"never\" });\nconst nullValue = () => attachValueDescriptor(fresh(Schema.Null), { type: \"null\" });\nconst literal = (value) => {\n\tSchema.decodeSync(LiteralValueSchema)(value);\n\treturn attachValueDescriptor(Schema.Literal(value), {\n\t\ttype: \"literal\",\n\t\tvalue\n\t});\n};\nconst literals = (...members) => {\n\tSchema.decodeSync(Schema.Array(LiteralValueSchema))(members);\n\treturn attachValueDescriptor(Schema.Literals(members), {\n\t\ttype: \"literals\",\n\t\tvalues: members\n\t});\n};\nconst makeIdSchema = (tableName) => {\n\tconst identifier = `ignotum/id/${tableName}`;\n\treturn attachValueDescriptor(GeneratedId.pipe(Schema.brand(identifier), Schema.annotate({ \"ignotum/table\": tableName })), {\n\t\ttype: \"id\",\n\t\ttable: tableName\n\t});\n};\nconst id = (tableName) => makeIdSchema(tableName);\nconst requireDescriptor = (value) => {\n\tconst descriptor = getValueDescriptor(value);\n\tif (descriptor === void 0) throw new Error(\"Ignotum value combinators require a values validator.\");\n\treturn descriptor;\n};\nconst array = (value) => {\n\treturn attachValueDescriptor(Schema.Array(value), {\n\t\ttype: \"array\",\n\t\tvalue: requireDescriptor(value)\n\t});\n};\nconst assertFieldsExist = (fields, keys, operation) => {\n\tfor (const key of keys) if (!Object.hasOwn(fields, key)) throw new Error(`Cannot ${operation} unknown field '${String(key)}'.`);\n};\nconst fixedObject = (fields) => {\n\tconst pick = (...keys) => {\n\t\tassertFieldsExist(fields, keys, \"pick\");\n\t\treturn fixedObject(Struct.pick(fields, keys));\n\t};\n\tconst omit = (...keys) => {\n\t\tassertFieldsExist(fields, keys, \"omit\");\n\t\treturn fixedObject(Struct.omit(fields, keys));\n\t};\n\tconst extend = (addedFields, ..._validation) => {\n\t\tfor (const key of Reflect.ownKeys(addedFields)) if (Object.hasOwn(fields, key)) throw new Error(`Cannot extend existing field '${String(key)}'.`);\n\t\treturn fixedObject(Struct.assign(fields, addedFields));\n\t};\n\tconst override = (overriddenFields, ..._validation) => {\n\t\tassertFieldsExist(fields, Reflect.ownKeys(overriddenFields), \"override\");\n\t\treturn fixedObject(Struct.assign(fields, overriddenFields));\n\t};\n\tconst partial = () => {\n\t\tconst partialFields = Struct.map(fields, Schema.optional);\n\t\tfor (const name of Reflect.ownKeys(fields)) {\n\t\t\tconst field = fields[name];\n\t\t\tconst partialField = partialFields[name];\n\t\t\tif (field === void 0 || partialField === void 0) continue;\n\t\t\tattachValueDescriptor(partialField, {\n\t\t\t\ttype: \"optional\",\n\t\t\t\tvalue: requireDescriptor(field)\n\t\t\t});\n\t\t}\n\t\treturn fixedObject(partialFields);\n\t};\n\tconst schema = attachValueDescriptor(Schema.Struct(fields), {\n\t\ttype: \"object\",\n\t\tfields: descriptorFields(fields)\n\t});\n\treturn Object.assign(schema, {\n\t\textend,\n\t\tomit,\n\t\toverride,\n\t\tpartial,\n\t\tpick\n\t});\n};\nconst object = (fields) => fixedObject(fields);\nconst optional = (value) => {\n\treturn attachValueDescriptor(Schema.optional(value), {\n\t\ttype: \"optional\",\n\t\tvalue: requireDescriptor(value)\n\t});\n};\nconst nullable = (value) => {\n\treturn attachValueDescriptor(Schema.NullOr(value), {\n\t\ttype: \"nullable\",\n\t\tvalue: requireDescriptor(value)\n\t});\n};\nconst record = (value) => {\n\treturn attachValueDescriptor(Schema.Record(Schema.String, value), {\n\t\ttype: \"record\",\n\t\tvalue: requireDescriptor(value)\n\t});\n};\nconst union = (...members) => {\n\treturn attachValueDescriptor(Schema.Union(members), {\n\t\ttype: \"union\",\n\t\tmembers: members.map(requireDescriptor)\n\t});\n};\nconst paginationCursor = () => attachValueDescriptor(fresh(PaginationCursor), { type: \"string\" });\nconst pagination = () => fixedObject({\n\tcursor: nullable(paginationCursor()),\n\tpageSize: attachValueDescriptor(fresh(PaginationPageSize), { type: \"integer\" })\n});\nconst page = (value) => {\n\treturn fixedObject({\n\t\titems: array(value),\n\t\tnextCursor: nullable(paginationCursor())\n\t});\n};\nconst error = (tag, fields) => {\n\tif (tag === \"InternalServerError\") throw new Error(\"The error tag 'InternalServerError' is reserved by Ignotum.\");\n\tconst errorFields = { ...fields };\n\tReflect.deleteProperty(errorFields, \"_tag\");\n\tconst schema = Schema.TaggedStruct(tag, errorFields).pipe(Schema.brand(ErrorBrand));\n\tconst make = (input) => schema.make(input);\n\tconst definition = Object.assign(make, schema);\n\tObject.setPrototypeOf(definition, Object.getPrototypeOf(schema));\n\tattachValueDescriptor(definition, {\n\t\ttype: \"error\",\n\t\ttag,\n\t\tfields: descriptorFields(errorFields)\n\t});\n\treturn definition;\n};\nconst values = {\n\tarray,\n\tboolean,\n\tdate,\n\tfile,\n\terror,\n\tid,\n\tinteger,\n\tliteral,\n\tliterals,\n\tnever,\n\tnull: nullValue,\n\tnullable,\n\tnumber,\n\tobject,\n\toptional,\n\trecord,\n\tstring,\n\tunion\n};\nconst bindValues = (definition) => {\n\tconst boundId = (tableName) => makeIdSchema(tableName);\n\tconst doc = (tableName) => {\n\t\tconst tableDefinition = definition[tableName];\n\t\tif (tableDefinition === void 0) throw new Error(`Unknown table '${tableName}'.`);\n\t\tconst tableFields = tableDefinition.fields;\n\t\tconst systemFields = {\n\t\t\tid: boundId(tableName),\n\t\t\tcreatedAt: date(),\n\t\t\tupdatedAt: date()\n\t\t};\n\t\treturn fixedObject(Struct.assign(tableFields, systemFields));\n\t};\n\tconst boundPagination = () => {\n\t\treturn pagination();\n\t};\n\treturn {\n\t\t...values,\n\t\tdoc,\n\t\tid: boundId,\n\t\tpage,\n\t\tpagination: boundPagination\n\t};\n};\n//#endregion\nexport { bindValues, schemaIndexLimits, table, values };\n\n//# sourceMappingURL=values.js.map","//#region src/runtime/schema.ts\nconst FunctionSchemaTypeId = Symbol.for(\"ignotum/runtime/schema/FunctionSchema\");\nconst attachFunctionSchema = (schema) => (definition) => {\n\tObject.defineProperty(definition, FunctionSchemaTypeId, {\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t\tvalue: schema,\n\t\twritable: false\n\t});\n\treturn definition;\n};\nconst getFunctionSchema = (value) => value[FunctionSchemaTypeId];\n//#endregion\nexport { FunctionSchemaTypeId, attachFunctionSchema, getFunctionSchema };\n\n//# sourceMappingURL=schema.js.map","import { FileFormat, FileId, FileValue, FileValueTypeId, fileFormats, fileLimits, fileMimeTypes, isFileValue } from \"./file.js\";\nimport { a as descriptorFields, i as descriptorContainsFile, n as ValueDescriptorTypeId, o as getValueDescriptor, t as ValueDescriptor } from \"../descriptor-C5VA9qRl.js\";\nimport { Result } from \"../runtime/result.js\";\nimport { bindValues, schemaIndexLimits, table, values } from \"./values.js\";\nimport { attachFunctionSchema } from \"../runtime/schema.js\";\nimport { Predicate } from \"effect\";\n//#region src/schema/types.ts\nconst SchemaDefinitionTypeId = Symbol.for(\"ignotum/schema/SchemaDefinition\");\n//#endregion\n//#region src/schema/definition.ts\nconst defineSchema = (define) => {\n\tconst definitions = define({\n\t\ttable,\n\t\tvalues\n\t});\n\tif (Object.values(definitions).reduce((count, definition) => count + Object.keys(definition.indexes).length, 0) > schemaIndexLimits.indexesPerSchema) throw new Error(`Schemas cannot declare more than ${schemaIndexLimits.indexesPerSchema} indexes.`);\n\treturn {\n\t\t_tag: \"Schema\",\n\t\t[SchemaDefinitionTypeId]: definitions\n\t};\n};\nconst isDefinedSchema = (value) => value._tag === \"Schema\" && Predicate.isObject(value[SchemaDefinitionTypeId]);\n//#endregion\n//#region src/schema/server.ts\nconst makeFunctionBuilder = (schema, kind) => {\n\tconst define = (definition) => attachFunctionSchema(schema)({\n\t\t_tag: kind,\n\t\t...definition\n\t});\n\treturn define;\n};\nconst makeFunctionBuilders = (schema) => ({\n\tmutation: makeFunctionBuilder(schema, \"Mutation\"),\n\tquery: makeFunctionBuilder(schema, \"Query\")\n});\nconst bindSchema = (schema) => ({\n\tvalues: bindValues(schema[SchemaDefinitionTypeId]),\n\t...makeFunctionBuilders(schema)\n});\n//#endregion\nexport { FileFormat, FileId, FileValue, FileValueTypeId, Result, SchemaDefinitionTypeId, ValueDescriptor, ValueDescriptorTypeId, bindSchema, bindValues, defineSchema, descriptorContainsFile, descriptorFields, fileFormats, fileLimits, fileMimeTypes, getValueDescriptor, isDefinedSchema, isFileValue, schemaIndexLimits, table, values };\n\n//# sourceMappingURL=index.js.map"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { c as Result$1, i as ErrorValue } from "./id-Btwac71X-DhnKYsjY.js";
2
- import { i as defineSchema$1, n as SchemaAuthoring, t as DefinedSchema } from "./index-B5KSOjGN.js";
1
+ import { c as Result$1, g as FileValue, h as FileMimeType, i as ErrorValue, m as FileMetadata, p as FileFormat } from "./id-Cs82tq9Q-Caqfx54f.js";
2
+ import { i as defineSchema$1, n as SchemaAuthoring, t as DefinedSchema } from "./index-D6VLTbDB.js";
3
3
  //#region src/server/index.d.ts
4
4
  declare const Result: typeof Result$1;
5
5
  type Result<Success, Failure extends ErrorValue> = Result$1<Success, Failure>;
6
6
  declare const defineSchema: typeof defineSchema$1;
7
7
  //#endregion
8
- export { type DefinedSchema, Result, type SchemaAuthoring, defineSchema };
8
+ export { type DefinedSchema, type FileFormat, type FileMetadata, type FileMimeType, type FileValue, Result, type SchemaAuthoring, defineSchema };
9
9
  //# sourceMappingURL=server.d.ts.map
@@ -1,5 +1,5 @@
1
- import { l as Result$1 } from "./descriptor-t6BOEGw9-C1rwYIlx.js";
2
- import { r as defineSchema$1 } from "./schema-D9RmboaS.js";
1
+ import { d as Result$1 } from "./descriptor-C5VA9qRl-BKbdenuU.js";
2
+ import { r as defineSchema$1 } from "./schema-B6PK_ZwV.js";
3
3
  //#region src/server/index.ts
4
4
  const Result = Result$1;
5
5
  const defineSchema = defineSchema$1;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","names":["contractResult","defineContractSchema"],"sources":["../../src/server/index.ts"],"sourcesContent":["import { Result as contractResult } from \"@ignotum/contracts/runtime/result\";\nimport type { ErrorValue, Result as ContractResult } from \"@ignotum/contracts/runtime/result\";\nimport { defineSchema as defineContractSchema } from \"@ignotum/contracts/schema\";\n\nexport const Result: typeof contractResult = contractResult;\nexport type Result<Success, Failure extends ErrorValue> = ContractResult<Success, Failure>;\nexport const defineSchema: typeof defineContractSchema = defineContractSchema;\nexport type { DefinedSchema, SchemaAuthoring } from \"@ignotum/contracts/schema\";\n"],"mappings":";;;AAIA,MAAa,SAAgCA;AAE7C,MAAa,eAA4CC"}
1
+ {"version":3,"file":"server.js","names":["contractResult","defineContractSchema"],"sources":["../../src/server/index.ts"],"sourcesContent":["import { Result as contractResult } from \"@ignotum/contracts/runtime/result\";\nimport type { ErrorValue, Result as ContractResult } from \"@ignotum/contracts/runtime/result\";\nimport { defineSchema as defineContractSchema } from \"@ignotum/contracts/schema\";\n\nexport const Result: typeof contractResult = contractResult;\nexport type Result<Success, Failure extends ErrorValue> = ContractResult<Success, Failure>;\nexport const defineSchema: typeof defineContractSchema = defineContractSchema;\nexport type {\n DefinedSchema,\n FileFormat,\n FileMetadata,\n FileMimeType,\n FileValue,\n SchemaAuthoring,\n} from \"@ignotum/contracts/schema\";\n"],"mappings":";;;AAIA,MAAa,SAAgCA;AAE7C,MAAa,eAA4CC"}
@@ -0,0 +1,8 @@
1
+ import "./id-Cs82tq9Q-Caqfx54f.js";
2
+ import { Schema } from "effect";
3
+ //#region ../contracts/dist/runtime/sync.d.ts
4
+ declare const FunctionAddress: Schema.TemplateLiteral<readonly ["api.", Schema.String, ".", Schema.String]>;
5
+ type FunctionAddress = typeof FunctionAddress.Type;
6
+ //#endregion
7
+ export { FunctionAddress as t };
8
+ //# sourceMappingURL=sync-bMQq9tXx.d.ts.map
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "ignotum",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "description": "Ignotum is an opinionated TypeScript application cloud.",
5
5
  "author": "Johannes Schießl",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "git+https://github.com/johannesschiessl/ignotum.git",
8
+ "url": "git+https://github.com/ignotumcloud/ignotum.git",
9
9
  "directory": "packages/ignotum"
10
10
  },
11
11
  "bin": {
@@ -67,8 +67,10 @@
67
67
  "@effect/platform-browser": "4.0.0-rc.111",
68
68
  "@prefresh/vite": "3.0.1",
69
69
  "@tailwindcss/vite": "4.3.3",
70
+ "better-auth": "1.6.25",
70
71
  "effect": "4.0.0-rc.111",
71
72
  "nanoid": "6.0.1",
73
+ "open": "11.0.0",
72
74
  "oxc-parser": "0.121.0",
73
75
  "preact": "10.29.8",
74
76
  "tailwindcss": "4.3.3",
@@ -78,10 +80,10 @@
78
80
  "@effect/platform-node": "4.0.0-rc.111",
79
81
  "@effect/sql-sqlite-node": "4.0.0-rc.111",
80
82
  "redis": "6.2.1",
81
- "@ignotum/deployment": "1.0.0",
82
83
  "@ignotum/contracts": "1.0.0",
83
- "@ignotum/shared": "1.0.0",
84
- "@ignotum/runtime": "1.0.0"
84
+ "@ignotum/deployment": "1.0.0",
85
+ "@ignotum/runtime": "1.0.0",
86
+ "@ignotum/shared": "1.0.0"
85
87
  },
86
88
  "engines": {
87
89
  "node": ">=22.18.0"
@@ -1,16 +1,34 @@
1
1
  import agents from "../../../../docs/agent/AGENTS.md?raw";
2
2
  import skill from "../../../../docs/agent/skills/ignotum/SKILL.md?raw";
3
- import client from "../../../../docs/user/client.md?raw";
4
- import deploy from "../../../../docs/user/deploy.md?raw";
5
- import devServer from "../../../../docs/user/dev-server.md?raw";
6
- import gettingStarted from "../../../../docs/user/getting-started.md?raw";
3
+ import api from "../../../../docs/user/api.md?raw";
4
+ import appEntry from "../../../../docs/user/app-entry.md?raw";
5
+ import cli from "../../../../docs/user/cli.md?raw";
6
+ import database from "../../../../docs/user/database.md?raw";
7
+ import deployApp from "../../../../docs/user/deploy-app.md?raw";
8
+ import deploymentModel from "../../../../docs/user/deployment-model.md?raw";
9
+ import deployments from "../../../../docs/user/deployments.md?raw";
10
+ import errors from "../../../../docs/user/errors.md?raw";
11
+ import files from "../../../../docs/user/files.md?raw";
12
+ import functions from "../../../../docs/user/functions.md?raw";
13
+ import generatedCode from "../../../../docs/user/generated-code.md?raw";
14
+ import guarantees from "../../../../docs/user/guarantees.md?raw";
15
+ import howIgnotumWorks from "../../../../docs/user/how-ignotum-works.md?raw";
7
16
  import index from "../../../../docs/user/index.md?raw";
17
+ import indexes from "../../../../docs/user/indexes.md?raw";
8
18
  import limits from "../../../../docs/user/limits.md?raw";
9
- import manualSetup from "../../../../docs/user/manual-setup.md?raw";
19
+ import localDevelopment from "../../../../docs/user/local-development.md?raw";
20
+ import mutations from "../../../../docs/user/mutations.md?raw";
21
+ import pagination from "../../../../docs/user/pagination.md?raw";
22
+ import preact from "../../../../docs/user/preact.md?raw";
23
+ import projectStructure from "../../../../docs/user/project-structure.md?raw";
24
+ import publicAssets from "../../../../docs/user/public-assets.md?raw";
25
+ import queries from "../../../../docs/user/queries.md?raw";
26
+ import quickstart from "../../../../docs/user/quickstart.md?raw";
10
27
  import readingData from "../../../../docs/user/reading-data.md?raw";
11
28
  import schema from "../../../../docs/user/schema.md?raw";
12
- import serverFunctions from "../../../../docs/user/server-functions.md?raw";
29
+ import styling from "../../../../docs/user/styling.md?raw";
13
30
  import values from "../../../../docs/user/values.md?raw";
31
+ import web from "../../../../docs/user/web.md?raw";
14
32
  import writingData from "../../../../docs/user/writing-data.md?raw";
15
33
 
16
34
  export interface AppFile {
@@ -19,25 +37,46 @@ export interface AppFile {
19
37
  }
20
38
 
21
39
  const references = [
22
- ["client.md", client],
23
- ["deploy.md", deploy],
24
- ["dev-server.md", devServer],
25
- ["getting-started.md", gettingStarted],
40
+ ["api.md", api],
41
+ ["app-entry.md", appEntry],
42
+ ["cli.md", cli],
43
+ ["database.md", database],
44
+ ["deploy-app.md", deployApp],
45
+ ["deployment-model.md", deploymentModel],
46
+ ["deployments.md", deployments],
47
+ ["errors.md", errors],
48
+ ["files.md", files],
49
+ ["functions.md", functions],
50
+ ["generated-code.md", generatedCode],
51
+ ["guarantees.md", guarantees],
52
+ ["how-ignotum-works.md", howIgnotumWorks],
26
53
  ["index.md", index],
54
+ ["indexes.md", indexes],
27
55
  ["limits.md", limits],
28
- ["manual-setup.md", manualSetup],
56
+ ["local-development.md", localDevelopment],
57
+ ["mutations.md", mutations],
58
+ ["pagination.md", pagination],
59
+ ["preact.md", preact],
60
+ ["project-structure.md", projectStructure],
61
+ ["public-assets.md", publicAssets],
62
+ ["queries.md", queries],
63
+ ["quickstart.md", quickstart],
29
64
  ["reading-data.md", readingData],
30
65
  ["schema.md", schema],
31
- ["server-functions.md", serverFunctions],
66
+ ["styling.md", styling],
32
67
  ["values.md", values],
68
+ ["web.md", web],
33
69
  ["writing-data.md", writingData],
34
70
  ] as const;
35
71
 
72
+ const withoutFrontmatter = (content: string) =>
73
+ content.replace(/^---\r?\n[\s\S]*?\r?\n---\r?\n/, "");
74
+
36
75
  export const agentAppFiles: ReadonlyArray<AppFile> = [
37
76
  { content: agents, path: "AGENTS.md" },
38
77
  { content: skill, path: ".agents/skills/ignotum/SKILL.md" },
39
78
  ...references.map(([name, content]) => ({
40
- content,
79
+ content: withoutFrontmatter(content),
41
80
  path: `.agents/skills/ignotum/references/${name}`,
42
81
  })),
43
82
  ];
@@ -1,16 +1,19 @@
1
1
  import { AppSlug, type ControlApp } from "@ignotum/contracts/control";
2
2
  import { AppId } from "@ignotum/contracts/runtime/identity";
3
+ import * as Versioned from "@ignotum/contracts/versioned";
3
4
  import { Effect, FileSystem, Path, Schema } from "effect";
4
5
  import { Prompt } from "effect/unstable/cli";
5
6
 
6
7
  import { ControlApiError, ControlClient, HostedControlConfiguration } from "./control-client.js";
7
8
 
8
- export const AppConfiguration = Schema.Struct({
9
+ const AppConfigurationV1 = Schema.Struct({
9
10
  formatVersion: Schema.Literal(1),
10
11
  appId: AppId,
11
12
  slug: AppSlug,
12
13
  apiUrl: Schema.URLFromString,
13
14
  });
15
+ const AppConfigurationThroughV1 = Versioned.initial(AppConfigurationV1);
16
+ export const AppConfiguration = AppConfigurationThroughV1;
14
17
  export type AppConfiguration = typeof AppConfiguration.Type;
15
18
 
16
19
  export class AppConfigurationInvalid extends Schema.TaggedError<AppConfigurationInvalid>()(