ignotum 0.0.16 → 0.0.18

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 (126) hide show
  1. package/README.md +6 -6
  2. package/dist/cli/bin.mjs +13263 -2689
  3. package/dist/cli/bin.mjs.map +1 -1
  4. package/dist/platform/_headers +3 -0
  5. package/dist/platform/_ignotum/v1.0/client.js +12 -0
  6. package/dist/runtime/{api-B4fwp5a2.d.ts → api-BnUKx9cj-D49Tf0rX.d.ts} +4 -3
  7. package/dist/runtime/api-C-tltz6s.js +31 -0
  8. package/dist/runtime/api-C-tltz6s.js.map +1 -0
  9. package/dist/runtime/artifact-BB5qzoa6.js +42 -0
  10. package/dist/runtime/artifact-BB5qzoa6.js.map +1 -0
  11. package/dist/runtime/{bootstrap-BTFScKAc.d.ts → bootstrap-DjTwGJao-DBx5zdFI.d.ts} +64 -64
  12. package/dist/runtime/{bootstrap-BISQSn_O.js → bootstrap-DlNIfH-r.js} +9 -9
  13. package/dist/runtime/bootstrap-DlNIfH-r.js.map +1 -0
  14. package/dist/runtime/client.d.ts +24 -20
  15. package/dist/runtime/client.js +9 -9
  16. package/dist/runtime/client.js.map +1 -1
  17. package/dist/runtime/id-BI08JkmR.d.ts +1 -0
  18. package/dist/runtime/{id--1m0NuUL.js → id-BrEnxY-r.js} +118 -53
  19. package/dist/runtime/id-BrEnxY-r.js.map +1 -0
  20. package/dist/runtime/{image-Djtjy4Z8.js → image-gofzZeCm.js} +2 -2
  21. package/dist/runtime/image-gofzZeCm.js.map +1 -0
  22. package/dist/runtime/{index-D4seNHlX.d.ts → index-Biaw5vdF.d.ts} +2 -2
  23. package/dist/runtime/internal/api.d.ts +1 -1
  24. package/dist/runtime/internal/api.js +1 -30
  25. package/dist/runtime/internal/bootstrap.d.ts +1 -1
  26. package/dist/runtime/internal/bootstrap.js +1 -1
  27. package/dist/runtime/internal/client.d.ts +2 -2
  28. package/dist/runtime/internal/client.js +4 -4
  29. package/dist/runtime/internal/client.js.map +1 -1
  30. package/dist/runtime/internal/host.d.ts +4 -4
  31. package/dist/runtime/internal/host.js +4 -4
  32. package/dist/runtime/internal/routes.d.ts +1 -1
  33. package/dist/runtime/internal/routes.js +1 -1
  34. package/dist/runtime/internal/server.d.ts +3 -2
  35. package/dist/runtime/internal/server.js +2 -2
  36. package/dist/runtime/internal/server.js.map +1 -1
  37. package/dist/runtime/internal/types.d.ts +2 -2
  38. package/dist/runtime/internal/types.js +1 -1
  39. package/dist/runtime/{pagination-D3qd6s9N.js → pagination--f4kMKf6.js} +2 -2
  40. package/dist/runtime/{pagination-D3qd6s9N.js.map → pagination--f4kMKf6.js.map} +1 -1
  41. package/dist/runtime/pagination-BI08JkmR.d.ts +1 -0
  42. package/dist/runtime/{router-BSBI1oN1.js → router-C1eC9yy5.js} +462 -419
  43. package/dist/runtime/router-C1eC9yy5.js.map +1 -0
  44. package/dist/runtime/routes-DnU39R7c.js +152 -0
  45. package/dist/runtime/routes-DnU39R7c.js.map +1 -0
  46. package/dist/runtime/{schema-D1wOqiNH.js → schema-BSjepoNF.js} +271 -6
  47. package/dist/runtime/schema-BSjepoNF.js.map +1 -0
  48. package/dist/runtime/server.d.ts +5 -4
  49. package/dist/runtime/server.js +3 -3
  50. package/dist/runtime/server.js.map +1 -1
  51. package/dist/runtime/{sync-DzUwA8W9.js → sync-BwgS19Xy.js} +4 -16
  52. package/dist/runtime/sync-BwgS19Xy.js.map +1 -0
  53. package/dist/runtime/{sync-D-GK2sv9.d.ts → sync-By2hX5ev.d.ts} +1 -2
  54. package/dist/runtime/{types-DeCCyqLU-BIm7rU-0.d.ts → types-DeCCyqLU-CHx7KFtx.d.ts} +2 -2
  55. package/package.json +7 -1
  56. package/src/cli/agent-files.ts +2 -0
  57. package/src/cli/build/asset-names.ts +190 -0
  58. package/src/cli/build/managed-client.ts +151 -81
  59. package/src/cli/build/managed-server.ts +4 -4
  60. package/src/cli/build/managed.ts +5 -6
  61. package/src/cli/command.ts +7 -15
  62. package/src/cli/control-client.ts +7 -9
  63. package/src/cli/deploy.ts +45 -15
  64. package/src/cli/dev.ts +50 -99
  65. package/src/cli/image-assets.ts +5 -2
  66. package/src/cli/managed-client-boundaries.ts +6 -6
  67. package/src/cli/managed-dev-platform.ts +52 -66
  68. package/src/cli/managed-exports.ts +5 -66
  69. package/src/cli/new-app.ts +7 -2
  70. package/src/cli/path.ts +11 -0
  71. package/src/cli/route-codegen.ts +2 -1
  72. package/src/cli/route-static.ts +3 -2
  73. package/src/cli/upload-journal.ts +130 -0
  74. package/src/client/bootstrap.ts +1 -110
  75. package/src/client/errors.ts +1 -70
  76. package/src/client/files.ts +1 -233
  77. package/src/client/hooks.ts +1 -367
  78. package/src/client/id.ts +1 -263
  79. package/src/client/image.ts +1 -28
  80. package/src/client/index.ts +1 -126
  81. package/src/client/jsx-dev-runtime.ts +1 -2
  82. package/src/client/jsx-runtime.ts +1 -2
  83. package/src/client/managed-client.ts +1 -729
  84. package/src/client/managed-upgrade.ts +1 -283
  85. package/src/client/page-observers.ts +1 -77
  86. package/src/client/query.ts +1 -17
  87. package/src/client/recovery-journal.ts +1 -195
  88. package/src/client/route-boundaries.ts +1 -184
  89. package/src/client/router-history.ts +1 -152
  90. package/src/client/router-store.ts +1 -644
  91. package/src/client/router.ts +1 -324
  92. package/src/client/routes.ts +1 -28
  93. package/src/client/sync.ts +1 -286
  94. package/src/dev-runtime/id.ts +1 -1
  95. package/src/dev-runtime/managed-functions.ts +10 -18
  96. package/src/dev-runtime/managed-sync.ts +16 -16
  97. package/src/dev-runtime/sync.ts +6 -4
  98. package/src/internal/api.ts +1 -156
  99. package/src/internal/client.ts +1 -186
  100. package/src/internal/host.ts +1 -1
  101. package/src/internal/http-paths.ts +1 -4
  102. package/src/internal/routes.ts +1 -45
  103. package/src/internal/server.ts +1 -3
  104. package/src/internal/types.ts +1 -2
  105. package/src/server/index.ts +1 -27
  106. package/dist/cli/managed-release-WHYLZwaS.mjs +0 -10902
  107. package/dist/cli/managed-release-WHYLZwaS.mjs.map +0 -1
  108. package/dist/cli/managed-release.d.mts +0 -1
  109. package/dist/cli/managed-release.mjs +0 -14
  110. package/dist/cli/managed-release.mjs.map +0 -1
  111. package/dist/runtime/bootstrap-BISQSn_O.js.map +0 -1
  112. package/dist/runtime/descriptor-CTY4mtwS-cS43EbwS.js +0 -269
  113. package/dist/runtime/descriptor-CTY4mtwS-cS43EbwS.js.map +0 -1
  114. package/dist/runtime/id--1m0NuUL.js.map +0 -1
  115. package/dist/runtime/id-CBOt2kDo.d.ts +0 -1
  116. package/dist/runtime/identity-QjtJRxBD.d.ts +0 -2
  117. package/dist/runtime/image-Djtjy4Z8.js.map +0 -1
  118. package/dist/runtime/internal/api.js.map +0 -1
  119. package/dist/runtime/pagination-CBOt2kDo.d.ts +0 -1
  120. package/dist/runtime/router-BSBI1oN1.js.map +0 -1
  121. package/dist/runtime/routes-Ce8TVP-T.js +0 -690
  122. package/dist/runtime/routes-Ce8TVP-T.js.map +0 -1
  123. package/dist/runtime/schema-D1wOqiNH.js.map +0 -1
  124. package/dist/runtime/sync-DzUwA8W9.js.map +0 -1
  125. package/src/cli/managed-release-bin.ts +0 -13
  126. package/src/cli/managed-release.ts +0 -260
@@ -1,12 +1,12 @@
1
- import { D as encodeTransportObject, _ as Result$2, b as inspectResult, x as pending } from "./id--1m0NuUL.js";
2
- import { C as Files, S as BrowserSession, a as url, b as syncClientInternals, c as useMatch, d as useRoute, l as useNavigate, n as NavLink, o as useBlocker, r as Redirect, s as useLocation, t as Link, u as useNavigation, v as SyncClient, w as ClientInfrastructureError, x as syncRuntime } from "./router-BSBI1oN1.js";
3
- import { functionPathOf } from "./internal/api.js";
4
- import { n as PaginationPageSize } from "./pagination-D3qd6s9N.js";
5
- import { t as Image } from "./image-Djtjy4Z8.js";
1
+ import { A as encodeTransportObject, h as Result$2, v as inspectResult, y as pending } from "./id-BrEnxY-r.js";
2
+ import { C as Files, S as BrowserSession, a as url, b as syncClientInternals, c as useMatch, d as useRoute, l as useNavigate, n as NavLink, o as useBlocker, r as Redirect, s as useLocation, t as Link, u as useNavigation, v as SyncClient, w as ClientInfrastructureError, x as syncRuntime } from "./router-C1eC9yy5.js";
3
+ import { n as functionPathOf } from "./api-C-tltz6s.js";
4
+ import { n as PaginationPageSize } from "./pagination--f4kMKf6.js";
5
+ import { t as Image } from "./image-gofzZeCm.js";
6
6
  import { Effect, Schema } from "effect";
7
7
  import { useCallback, useCallback as useCallback$1, useContext, useDebugValue, useDebugValue as useDebugValue$1, useEffect, useEffect as useEffect$1, useErrorBoundary, useId as useElementId, useImperativeHandle, useLayoutEffect, useMemo, useMemo as useMemo$1, useReducer, useRef, useState, useState as useState$1 } from "preact/hooks";
8
8
  import { Component, Fragment, cloneElement, createContext, createElement, createRef, h, isValidElement, toChildArray } from "preact";
9
- //#region src/client/query.ts
9
+ //#region ../platform/dist/versions/1/browser/query.js
10
10
  const QuerySkipTypeId = Symbol.for("ignotum/client/QuerySkip");
11
11
  var QuerySkipToken = class {
12
12
  [QuerySkipTypeId] = QuerySkipTypeId;
@@ -15,7 +15,7 @@ const skip = Object.freeze(new QuerySkipToken());
15
15
  const Query = { skip };
16
16
  const isQuerySkip = (value) => value === skip;
17
17
  //#endregion
18
- //#region src/client/page-observers.ts
18
+ //#region ../platform/dist/versions/1/browser/page-observers.js
19
19
  const makePageObservers = (onChange, releaseObserver) => {
20
20
  const pages = /* @__PURE__ */ new Map();
21
21
  let disposed = false;
@@ -65,7 +65,7 @@ const makePageObservers = (onChange, releaseObserver) => {
65
65
  };
66
66
  };
67
67
  //#endregion
68
- //#region src/client/hooks.ts
68
+ //#region ../platform/dist/versions/1/browser/hooks.js
69
69
  function useQuery(reference, args) {
70
70
  const functionPath = functionPathOf(reference);
71
71
  const skipped = isQuerySkip(args);
@@ -290,7 +290,7 @@ function useId() {
290
290
  };
291
291
  }
292
292
  //#endregion
293
- //#region src/client/index.ts
293
+ //#region ../platform/dist/versions/1/browser/index.js
294
294
  const Result = { match: Result$2.match };
295
295
  //#endregion
296
296
  export { Component, Files, Fragment, Image, Link, NavLink, Query, Redirect, Result, cloneElement, createContext, createElement, createRef, h, isValidElement, toChildArray, url, useBlocker, useCallback, useContext, useDebugValue, useEffect, useElementId, useErrorBoundary, useId, useImperativeHandle, useLayoutEffect, useLocation, useMatch, useMemo, useMutation, useNavigate, useNavigation, usePaginatedQuery, useQuery, useReducer, useRef, useRoute, useState };
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","names":["useState","useCallback","useMemo","RuntimeResult","contractResult"],"sources":["../../src/client/query.ts","../../src/client/page-observers.ts","../../src/client/hooks.ts","../../src/client/index.ts"],"sourcesContent":["const QuerySkipTypeId: unique symbol = Symbol.for(\"ignotum/client/QuerySkip\");\n\nexport interface QuerySkip {\n readonly [QuerySkipTypeId]: typeof QuerySkipTypeId;\n}\n\nclass QuerySkipToken implements QuerySkip {\n readonly [QuerySkipTypeId]: typeof QuerySkipTypeId = QuerySkipTypeId;\n}\n\nconst skip: QuerySkip = Object.freeze(new QuerySkipToken());\n\nexport const Query = { skip };\n\nexport const isQuerySkip = <Value extends object | undefined>(\n value: Value,\n): value is Value & QuerySkip => value === skip;\n","import { Effect, Schema } from \"effect\";\n\nimport type { FunctionAddress } from \"@ignotum/contracts/runtime/sync\";\nimport { SyncClient, syncClientInternals } from \"./sync.js\";\nimport type { ClientInfrastructureError } from \"./errors.js\";\n\ntype QueryObserver = Effect.Success<ReturnType<SyncClient[\"Service\"][\"observe\"]>>;\n\ninterface PageEntry {\n readonly acquire: Effect.Effect<QueryObserver | undefined, ClientInfrastructureError, SyncClient>;\n release: (() => void) | undefined;\n released: boolean;\n}\n\n// @effect-diagnostics-next-line missingPipeableSignature:off This hook-owned lifecycle takes two callbacks, not a data argument.\nexport const makePageObservers = (\n onChange: () => void,\n releaseObserver: (release: Effect.Effect<void>) => void,\n) => {\n const pages = new Map<string, PageEntry>();\n let disposed = false;\n\n const releaseEntry = (entry: PageEntry) => {\n entry.released = true;\n entry.release?.();\n };\n\n const observe = Effect.fn(\"PageObservers.observe\")(function* (\n functionAddress: FunctionAddress,\n args: Schema.Json,\n ) {\n if (disposed) return;\n const key = syncClientInternals.queryIdentity(functionAddress, args);\n const existing = pages.get(key);\n if (existing !== undefined) return yield* existing.acquire;\n\n const entry: PageEntry = {\n acquire: yield* Effect.cached(\n Effect.gen(function* () {\n const client = yield* SyncClient;\n const observer = yield* client.observe(functionAddress, args);\n if (entry.released) {\n releaseObserver(observer.release);\n return;\n }\n const unsubscribe = observer.subscribe(onChange);\n entry.release = () => {\n unsubscribe();\n releaseObserver(observer.release);\n };\n return observer;\n }),\n ),\n release: undefined,\n released: false,\n };\n pages.set(key, entry);\n return yield* entry.acquire;\n });\n\n return {\n observe,\n retain: (keys: ReadonlySet<string>) => {\n for (const [key, entry] of pages) {\n if (keys.has(key)) continue;\n pages.delete(key);\n releaseEntry(entry);\n }\n },\n release: () => {\n if (disposed) return;\n disposed = true;\n for (const entry of pages.values()) releaseEntry(entry);\n pages.clear();\n },\n };\n};\n","import { BrowserSession, type IdState } from \"./id.js\";\nimport type { ProfileField } from \"@ignotum/contracts/id\";\nimport { Effect, Schema } from \"effect\";\nimport { useCallback, useDebugValue, useEffect, useMemo, useState } from \"preact/hooks\";\n\nimport { functionPathOf, type FunctionReference } from \"../internal/api.js\";\nimport { inspectResult, pending, Result as RuntimeResult } from \"@ignotum/contracts/runtime/result\";\nimport type { ErrorValue, QueryResult, SettledResult } from \"@ignotum/contracts/runtime/result\";\nimport {\n PaginationPageSize,\n type PaginationOptions,\n type PaginationPage,\n} from \"@ignotum/contracts/runtime/pagination\";\nimport { encodeTransportObject } from \"@ignotum/contracts/runtime/sync\";\nimport { ClientInfrastructureError } from \"./errors.js\";\nimport { isQuerySkip, type QuerySkip } from \"./query.js\";\n// oxlint-disable-next-line anti-slop-effect/no-service-constructor-imports -- Each mounted pagination hook owns and releases its page observers.\nimport { makePageObservers } from \"./page-observers.js\";\nimport { SyncClient, syncClientInternals, syncRuntime } from \"./sync.js\";\n\n// @effect-diagnostics-next-line missingPipeableSignature:off React hooks are not pipeable functions.\nexport function useQuery<Success, Failure extends ErrorValue>(\n reference: FunctionReference<\"Query\", void, Success, Failure>,\n): QueryResult<Success, Failure>;\nexport function useQuery<Success, Failure extends ErrorValue>(\n reference: FunctionReference<\"Query\", void, Success, Failure>,\n args: QuerySkip,\n): QueryResult<Success, Failure>;\nexport function useQuery<Args extends object, Success, Failure extends ErrorValue>(\n reference: FunctionReference<\"Query\", Args, Success, Failure>,\n args: NoInfer<Args> | QuerySkip,\n): QueryResult<Success, Failure>;\n// @effect-diagnostics-next-line missingPipeableSignature:off React hooks must remain direct calls so hook order is statically visible.\nexport function useQuery<Args extends object, Success, Failure extends ErrorValue>(\n reference: FunctionReference<\"Query\", Args | void, Success, Failure>,\n args?: Args | QuerySkip,\n): QueryResult<Success, Failure> {\n const functionPath = functionPathOf(reference);\n const skipped = isQuerySkip(args);\n const input = args === undefined || skipped ? {} : args;\n const jsonArgs = encodeTransportObject(input);\n const identity = skipped\n ? `skip:${functionPath}`\n : syncClientInternals.queryIdentity(functionPath, jsonArgs);\n const [state, setState] = useState<{\n readonly identity: string;\n readonly result: QueryResult<Success, Failure> | ClientInfrastructureError;\n }>(() => ({ identity, result: pending() }));\n\n useDebugValue({ args: input, function: functionPath, result: state.result });\n useEffect(() => {\n if (skipped) return;\n\n let active = true;\n let release: (() => void) | undefined;\n\n void syncRuntime\n .runPromise(\n Effect.gen(function* () {\n const client = yield* SyncClient;\n return yield* client.observe(functionPath, jsonArgs);\n }),\n )\n .then(\n (observer) => {\n if (!active) {\n syncRuntime.runFork(observer.release);\n return;\n }\n const update = () => {\n // SAFETY: the function reference couples this subscription's runtime\n // path to its generated success and failure types.\n const result = observer.getSnapshot() as\n | QueryResult<Success, Failure>\n | ClientInfrastructureError;\n setState({ identity, result });\n };\n release = observer.subscribe(update);\n update();\n const releaseObserver = release;\n release = () => {\n releaseObserver();\n syncRuntime.runFork(observer.release);\n };\n },\n (error) => {\n if (active && Schema.is(ClientInfrastructureError)(error)) {\n setState({ identity, result: error });\n }\n },\n );\n\n return () => {\n active = false;\n release?.();\n };\n }, [identity]);\n\n if (skipped) return pending();\n\n if (state.identity !== identity) {\n return pending();\n }\n\n const result = state.result;\n if (Schema.is(ClientInfrastructureError)(result)) throw result;\n return result;\n}\n\nexport type PaginationStatus = \"CanLoadMore\" | \"Exhausted\" | \"LoadingMore\";\n\nexport interface PaginatedQueryValue<Item> {\n readonly items: ReadonlyArray<Item>;\n readonly loadMore: () => void;\n readonly status: PaginationStatus;\n}\n\nexport interface PaginatedQueryOptions {\n readonly pageSize?: number;\n}\n\ntype PaginationArguments = { readonly pagination: PaginationOptions };\ntype ApplicationPaginationArguments<Args extends PaginationArguments> = Omit<Args, \"pagination\">;\n\n// @effect-diagnostics-next-line missingPipeableSignature:off React hooks are not pipeable functions.\nexport function usePaginatedQuery<\n Args extends PaginationArguments,\n Item,\n Failure extends ErrorValue,\n>(\n reference: keyof ApplicationPaginationArguments<Args> extends never\n ? FunctionReference<\"Query\", Args, PaginationPage<Item>, Failure>\n : never,\n): QueryResult<PaginatedQueryValue<Item>, Failure>;\nexport function usePaginatedQuery<\n Args extends PaginationArguments,\n Item,\n Failure extends ErrorValue,\n>(\n reference: FunctionReference<\"Query\", Args, PaginationPage<Item>, Failure>,\n args: NoInfer<ApplicationPaginationArguments<Args>> | QuerySkip,\n options?: PaginatedQueryOptions,\n): QueryResult<PaginatedQueryValue<Item>, Failure>;\n// @effect-diagnostics-next-line missingPipeableSignature:off React hooks must remain direct calls so hook order is statically visible.\nexport function usePaginatedQuery<Args extends object, Item, Failure extends ErrorValue>(\n reference: FunctionReference<\"Query\", Args & PaginationArguments, PaginationPage<Item>, Failure>,\n args?: Args | QuerySkip,\n options: PaginatedQueryOptions = {},\n): QueryResult<PaginatedQueryValue<Item>, Failure> {\n const functionPath = functionPathOf(reference);\n const skipped = isQuerySkip(args);\n const input = args === undefined || skipped ? {} : args;\n const jsonArgs = encodeTransportObject(input);\n const pageSize = Schema.decodeSync(PaginationPageSize)(options.pageSize ?? 20);\n const identity = skipped\n ? `skip:${functionPath}`\n : syncClientInternals.queryIdentity(functionPath, jsonArgs);\n const [requestedPages, setRequestedPages] = useState(1);\n const [refresh, setRefresh] = useState(0);\n const [state, setState] = useState<{\n readonly identity: string;\n readonly result: QueryResult<PaginatedQueryValue<Item>, Failure> | ClientInfrastructureError;\n }>(() => ({ identity, result: pending() }));\n const loadMore = useCallback(() => setRequestedPages((count) => count + 1), []);\n const pages = useMemo(\n () =>\n makePageObservers(\n () => setRefresh((version) => version + 1),\n (release) => {\n syncRuntime.runFork(release);\n },\n ),\n [identity, pageSize],\n );\n\n useEffect(() => () => pages.release(), [pages]);\n\n useDebugValue({ args: input, function: functionPath, result: state.result });\n\n useEffect(() => {\n setRequestedPages(1);\n setState({ identity, result: pending() });\n }, [identity, pageSize]);\n\n useEffect(() => {\n if (skipped) return;\n\n let active = true;\n const usedPages = new Set<string>();\n\n void syncRuntime\n .runPromise(\n Effect.gen(function* () {\n const items: Item[] = [];\n let cursor: PaginationOptions[\"cursor\"] = null;\n\n for (let pageNumber = 0; pageNumber < requestedPages; pageNumber += 1) {\n const pageArgs = encodeTransportObject({\n ...input,\n pagination: { cursor, pageSize },\n });\n usedPages.add(syncClientInternals.queryIdentity(functionPath, pageArgs));\n const observer = yield* pages.observe(functionPath, pageArgs);\n if (!active || observer === undefined) return;\n\n const snapshot = observer.getSnapshot();\n if (Schema.is(ClientInfrastructureError)(snapshot)) {\n setState({ identity, result: snapshot });\n return;\n }\n const inspected = inspectResult(snapshot);\n if (inspected === undefined) {\n setState({\n identity,\n result:\n items.length === 0\n ? pending()\n : RuntimeResult.succeed({ items, loadMore, status: \"LoadingMore\" }),\n });\n return;\n }\n if (inspected.type === \"Failure\") {\n // SAFETY: pagination changes only the successful value. The\n // failure channel is the generated query reference's Failure.\n setState({\n identity,\n result: snapshot as QueryResult<PaginatedQueryValue<Item>, Failure>,\n });\n return;\n }\n // SAFETY: the generated reference and values.page validator couple\n // this successful snapshot to PaginationPage<Item>.\n const page = inspected.value as PaginationPage<Item>;\n items.push(...page.items);\n cursor = page.nextCursor;\n if (cursor === null) {\n setState({\n identity,\n result: RuntimeResult.succeed({ items, loadMore, status: \"Exhausted\" }),\n });\n return;\n }\n }\n\n setState({\n identity,\n result: RuntimeResult.succeed({ items, loadMore, status: \"CanLoadMore\" }),\n });\n }).pipe(\n Effect.ensuring(\n Effect.sync(() => {\n if (active) pages.retain(usedPages);\n }),\n ),\n ),\n )\n .catch((error) => {\n if (active && Schema.is(ClientInfrastructureError)(error)) {\n setState({ identity, result: error });\n }\n });\n\n return () => {\n active = false;\n };\n }, [functionPath, identity, loadMore, pageSize, pages, refresh, requestedPages, skipped]);\n\n if (skipped || state.identity !== identity) return pending();\n const result = state.result;\n if (Schema.is(ClientInfrastructureError)(result)) throw result;\n return result;\n}\n\ntype Mutation<Args, Success, Failure extends ErrorValue> = [Args] extends [void]\n ? () => Promise<SettledResult<Success, Failure>>\n : (args: Args) => Promise<SettledResult<Success, Failure>>;\n\nexport const useMutation = <Args extends object | void, Success, Failure extends ErrorValue>(\n reference: FunctionReference<\"Mutation\", Args, Success, Failure>,\n): Mutation<Args, Success, Failure> =>\n useMemo(() => {\n const mutate = (args: Args | undefined) => {\n const functionPath = functionPathOf(reference);\n const input = args === undefined ? {} : args;\n return syncRuntime.runPromise<SettledResult<Success, Failure>, ClientInfrastructureError>(\n Effect.gen(function* () {\n const client = yield* SyncClient;\n // SAFETY: generated function references bind the runtime path to the\n // declared public result types validated by the server executor.\n // oxlint-disable-next-line anti-slop/no-chained-type-assertions -- The untyped sync transport deliberately erases the generated reference's result parameters.\n return (yield* client.mutate(functionPath, input)) as unknown as SettledResult<\n Success,\n Failure\n >;\n }),\n );\n };\n // SAFETY: the builder gives argument-free functions Args = void. At runtime\n // both call shapes normalize omitted arguments to the empty JSON object.\n return mutate as Mutation<Args, Success, Failure>;\n }, [reference]);\n\nexport type IdOptions = {\n readonly profile?: ReadonlyArray<ProfileField>;\n readonly returnTo?: string;\n};\nexport type IdResult = IdState & {\n readonly signIn: (options?: IdOptions) => Promise<void>;\n readonly requestProfile: (\n fields: ReadonlyArray<ProfileField>,\n options?: { readonly returnTo?: string },\n ) => Promise<void>;\n readonly signOut: () => Promise<void>;\n};\n\nexport function useId(): IdResult {\n const [state, setState] = useState<IdState>({ status: \"pending\" });\n useEffect(() => {\n let active = true;\n let unsubscribe: (() => void) | undefined;\n void syncRuntime.runPromise(BrowserSession).then((session) => {\n if (!active) return;\n const update = () => setState(session.snapshot());\n unsubscribe = session.subscribe(update);\n update();\n });\n return () => {\n active = false;\n unsubscribe?.();\n };\n }, []);\n const actions = useMemo(\n () => ({\n signIn: (options?: IdOptions) =>\n syncRuntime.runPromise(\n Effect.gen(function* () {\n return yield* (yield* BrowserSession).start(\n \"signIn\",\n options?.profile ?? [],\n options?.returnTo,\n );\n }),\n ),\n requestProfile: (\n fields: ReadonlyArray<ProfileField>,\n options?: { readonly returnTo?: string },\n ) =>\n syncRuntime.runPromise(\n Effect.gen(function* () {\n return yield* (yield* BrowserSession).start(\n \"requestProfile\",\n fields,\n options?.returnTo,\n );\n }),\n ),\n signOut: () =>\n syncRuntime.runPromise(\n Effect.gen(function* () {\n return yield* (yield* BrowserSession).signOut;\n }),\n ),\n }),\n [],\n );\n return { ...state, ...actions };\n}\n","import { Result as contractResult } from \"@ignotum/contracts/runtime/result\";\nimport type {\n ErrorValue,\n QueryResult as ContractQueryResult,\n SettledResult,\n} from \"@ignotum/contracts/runtime/result\";\n\nexport const Result = { match: contractResult.match };\nexport type Result<Value, Error extends ErrorValue> = SettledResult<Value, Error>;\nexport type QueryResult<Value, Error extends ErrorValue> = ContractQueryResult<Value, Error>;\nexport type { InternalServerError } from \"@ignotum/contracts/runtime/result\";\nexport type {\n FileFormat,\n FileMetadata,\n FileMimeType,\n FileValue,\n} from \"@ignotum/contracts/schema/file\";\nexport { Files } from \"./files.js\";\nexport { useId, useMutation, usePaginatedQuery, useQuery } from \"./hooks.js\";\nexport type { PaginatedQueryOptions, PaginatedQueryValue, PaginationStatus } from \"./hooks.js\";\nexport { Query } from \"./query.js\";\nexport type { QuerySkip } from \"./query.js\";\nexport { Image } from \"./image.js\";\nexport type { ImageProps, ImageSource } from \"./image.js\";\n\nexport {\n Component,\n Fragment,\n cloneElement,\n createContext,\n createElement,\n createRef,\n h,\n isValidElement,\n toChildArray,\n} from \"preact\";\nexport type {\n AnyComponent,\n Attributes,\n ClassAttributes,\n ComponentChild,\n ComponentChildren,\n ComponentClass,\n ComponentConstructor,\n ComponentFactory,\n ComponentProps,\n ComponentType,\n Consumer,\n Context,\n ContextType,\n ErrorInfo,\n FunctionComponent,\n FunctionalComponent,\n JSX,\n Key,\n PreactContext,\n PreactConsumer,\n PreactDOMAttributes,\n PreactProvider,\n Provider,\n Ref,\n RefCallback,\n RefObject,\n RenderableProps,\n TargetedAnimationEvent,\n TargetedClipboardEvent,\n TargetedCommandEvent,\n TargetedCompositionEvent,\n TargetedDragEvent,\n TargetedEvent,\n TargetedFocusEvent,\n TargetedInputEvent,\n TargetedKeyboardEvent,\n TargetedMouseEvent,\n TargetedPictureInPictureEvent,\n TargetedPointerEvent,\n TargetedSnapEvent,\n TargetedSubmitEvent,\n TargetedToggleEvent,\n TargetedTouchEvent,\n TargetedTransitionEvent,\n TargetedUIEvent,\n TargetedWheelEvent,\n VNode,\n} from \"preact\";\nexport {\n useCallback,\n useContext,\n useDebugValue,\n useEffect,\n useErrorBoundary,\n useId as useElementId,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from \"preact/hooks\";\nexport type { Dispatch, Reducer, StateUpdater } from \"preact/hooks\";\n\nexport type { User, UserId, ProfileField } from \"@ignotum/contracts/id\";\nexport type { IdResult, IdOptions } from \"./hooks.js\";\n\nexport type {\n RouteInputs,\n RouteProps,\n RouteMatch,\n RouteLocation,\n NavigationResult,\n} from \"./routes.js\";\n\nexport {\n Link,\n NavLink,\n Redirect,\n url,\n useNavigate,\n useRoute,\n useMatch,\n useLocation,\n useNavigation,\n useBlocker,\n} from \"./router.js\";\n\nexport type { BlockerState } from \"./router-store.js\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"client.js","names":["useState","useCallback","useMemo","Result","Result$1"],"sources":["../../../platform/dist/versions/1/browser/query.js","../../../platform/dist/versions/1/browser/page-observers.js","../../../platform/dist/versions/1/browser/hooks.js","../../../platform/dist/versions/1/browser/index.js"],"sourcesContent":["//#region src/versions/1/browser/query.ts\nconst QuerySkipTypeId = Symbol.for(\"ignotum/client/QuerySkip\");\nvar QuerySkipToken = class {\n\t[QuerySkipTypeId] = QuerySkipTypeId;\n};\nconst skip = Object.freeze(new QuerySkipToken());\nconst Query = { skip };\nconst isQuerySkip = (value) => value === skip;\n//#endregion\nexport { Query, isQuerySkip };\n\n//# sourceMappingURL=query.js.map","import { SyncClient, syncClientInternals } from \"./sync.js\";\nimport { Effect } from \"effect\";\n//#region src/versions/1/browser/page-observers.ts\nconst makePageObservers = (onChange, releaseObserver) => {\n\tconst pages = /* @__PURE__ */ new Map();\n\tlet disposed = false;\n\tconst releaseEntry = (entry) => {\n\t\tentry.released = true;\n\t\tentry.release?.();\n\t};\n\treturn {\n\t\tobserve: Effect.fn(\"PageObservers.observe\")(function* (functionAddress, args) {\n\t\t\tif (disposed) return;\n\t\t\tconst key = syncClientInternals.queryIdentity(functionAddress, args);\n\t\t\tconst existing = pages.get(key);\n\t\t\tif (existing !== void 0) return yield* existing.acquire;\n\t\t\tconst entry = {\n\t\t\t\tacquire: yield* Effect.cached(Effect.gen(function* () {\n\t\t\t\t\tconst observer = yield* (yield* SyncClient).observe(functionAddress, args);\n\t\t\t\t\tif (entry.released) {\n\t\t\t\t\t\treleaseObserver(observer.release);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst unsubscribe = observer.subscribe(onChange);\n\t\t\t\t\tentry.release = () => {\n\t\t\t\t\t\tunsubscribe();\n\t\t\t\t\t\treleaseObserver(observer.release);\n\t\t\t\t\t};\n\t\t\t\t\treturn observer;\n\t\t\t\t})),\n\t\t\t\trelease: void 0,\n\t\t\t\treleased: false\n\t\t\t};\n\t\t\tpages.set(key, entry);\n\t\t\treturn yield* entry.acquire;\n\t\t}),\n\t\tretain: (keys) => {\n\t\t\tfor (const [key, entry] of pages) {\n\t\t\t\tif (keys.has(key)) continue;\n\t\t\t\tpages.delete(key);\n\t\t\t\treleaseEntry(entry);\n\t\t\t}\n\t\t},\n\t\trelease: () => {\n\t\t\tif (disposed) return;\n\t\t\tdisposed = true;\n\t\t\tfor (const entry of pages.values()) releaseEntry(entry);\n\t\t\tpages.clear();\n\t\t}\n\t};\n};\n//#endregion\nexport { makePageObservers };\n\n//# sourceMappingURL=page-observers.js.map","import { ClientInfrastructureError } from \"./errors.js\";\nimport { BrowserSession } from \"./id.js\";\nimport { functionPathOf } from \"../common/api.js\";\nimport { isQuerySkip } from \"./query.js\";\nimport { SyncClient, syncClientInternals, syncRuntime } from \"./sync.js\";\nimport { makePageObservers } from \"./page-observers.js\";\nimport { Effect, Schema } from \"effect\";\nimport { encodeTransportObject } from \"@ignotum/contracts/runtime/sync\";\nimport { useCallback, useDebugValue, useEffect, useMemo, useState } from \"preact/hooks\";\nimport { Result, inspectResult, pending } from \"@ignotum/contracts/runtime/result\";\nimport { PaginationPageSize } from \"@ignotum/contracts/runtime/pagination\";\n//#region src/versions/1/browser/hooks.ts\nfunction useQuery(reference, args) {\n\tconst functionPath = functionPathOf(reference);\n\tconst skipped = isQuerySkip(args);\n\tconst input = args === void 0 || skipped ? {} : args;\n\tconst jsonArgs = encodeTransportObject(input);\n\tconst identity = skipped ? `skip:${functionPath}` : syncClientInternals.queryIdentity(functionPath, jsonArgs);\n\tconst [state, setState] = useState(() => ({\n\t\tidentity,\n\t\tresult: pending()\n\t}));\n\tuseDebugValue({\n\t\targs: input,\n\t\tfunction: functionPath,\n\t\tresult: state.result\n\t});\n\tuseEffect(() => {\n\t\tif (skipped) return;\n\t\tlet active = true;\n\t\tlet release;\n\t\tsyncRuntime.runPromise(Effect.gen(function* () {\n\t\t\treturn yield* (yield* SyncClient).observe(functionPath, jsonArgs);\n\t\t})).then((observer) => {\n\t\t\tif (!active) {\n\t\t\t\tsyncRuntime.runFork(observer.release);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst update = () => {\n\t\t\t\tconst result = observer.getSnapshot();\n\t\t\t\tsetState({\n\t\t\t\t\tidentity,\n\t\t\t\t\tresult\n\t\t\t\t});\n\t\t\t};\n\t\t\trelease = observer.subscribe(update);\n\t\t\tupdate();\n\t\t\tconst releaseObserver = release;\n\t\t\trelease = () => {\n\t\t\t\treleaseObserver();\n\t\t\t\tsyncRuntime.runFork(observer.release);\n\t\t\t};\n\t\t}, (error) => {\n\t\t\tif (active && Schema.is(ClientInfrastructureError)(error)) setState({\n\t\t\t\tidentity,\n\t\t\t\tresult: error\n\t\t\t});\n\t\t});\n\t\treturn () => {\n\t\t\tactive = false;\n\t\t\trelease?.();\n\t\t};\n\t}, [identity]);\n\tif (skipped) return pending();\n\tif (state.identity !== identity) return pending();\n\tconst result = state.result;\n\tif (Schema.is(ClientInfrastructureError)(result)) throw result;\n\treturn result;\n}\nfunction usePaginatedQuery(reference, args, options = {}) {\n\tconst functionPath = functionPathOf(reference);\n\tconst skipped = isQuerySkip(args);\n\tconst input = args === void 0 || skipped ? {} : args;\n\tconst jsonArgs = encodeTransportObject(input);\n\tconst pageSize = Schema.decodeSync(PaginationPageSize)(options.pageSize ?? 20);\n\tconst identity = skipped ? `skip:${functionPath}` : syncClientInternals.queryIdentity(functionPath, jsonArgs);\n\tconst [requestedPages, setRequestedPages] = useState(1);\n\tconst [refresh, setRefresh] = useState(0);\n\tconst [state, setState] = useState(() => ({\n\t\tidentity,\n\t\tresult: pending()\n\t}));\n\tconst loadMore = useCallback(() => setRequestedPages((count) => count + 1), []);\n\tconst pages = useMemo(() => makePageObservers(() => setRefresh((version) => version + 1), (release) => {\n\t\tsyncRuntime.runFork(release);\n\t}), [identity, pageSize]);\n\tuseEffect(() => () => pages.release(), [pages]);\n\tuseDebugValue({\n\t\targs: input,\n\t\tfunction: functionPath,\n\t\tresult: state.result\n\t});\n\tuseEffect(() => {\n\t\tsetRequestedPages(1);\n\t\tsetState({\n\t\t\tidentity,\n\t\t\tresult: pending()\n\t\t});\n\t}, [identity, pageSize]);\n\tuseEffect(() => {\n\t\tif (skipped) return;\n\t\tlet active = true;\n\t\tconst usedPages = /* @__PURE__ */ new Set();\n\t\tsyncRuntime.runPromise(Effect.gen(function* () {\n\t\t\tconst items = [];\n\t\t\tlet cursor = null;\n\t\t\tfor (let pageNumber = 0; pageNumber < requestedPages; pageNumber += 1) {\n\t\t\t\tconst pageArgs = encodeTransportObject({\n\t\t\t\t\t...input,\n\t\t\t\t\tpagination: {\n\t\t\t\t\t\tcursor,\n\t\t\t\t\t\tpageSize\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tusedPages.add(syncClientInternals.queryIdentity(functionPath, pageArgs));\n\t\t\t\tconst observer = yield* pages.observe(functionPath, pageArgs);\n\t\t\t\tif (!active || observer === void 0) return;\n\t\t\t\tconst snapshot = observer.getSnapshot();\n\t\t\t\tif (Schema.is(ClientInfrastructureError)(snapshot)) {\n\t\t\t\t\tsetState({\n\t\t\t\t\t\tidentity,\n\t\t\t\t\t\tresult: snapshot\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst inspected = inspectResult(snapshot);\n\t\t\t\tif (inspected === void 0) {\n\t\t\t\t\tsetState({\n\t\t\t\t\t\tidentity,\n\t\t\t\t\t\tresult: items.length === 0 ? pending() : Result.succeed({\n\t\t\t\t\t\t\titems,\n\t\t\t\t\t\t\tloadMore,\n\t\t\t\t\t\t\tstatus: \"LoadingMore\"\n\t\t\t\t\t\t})\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (inspected.type === \"Failure\") {\n\t\t\t\t\tsetState({\n\t\t\t\t\t\tidentity,\n\t\t\t\t\t\tresult: snapshot\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst page = inspected.value;\n\t\t\t\titems.push(...page.items);\n\t\t\t\tcursor = page.nextCursor;\n\t\t\t\tif (cursor === null) {\n\t\t\t\t\tsetState({\n\t\t\t\t\t\tidentity,\n\t\t\t\t\t\tresult: Result.succeed({\n\t\t\t\t\t\t\titems,\n\t\t\t\t\t\t\tloadMore,\n\t\t\t\t\t\t\tstatus: \"Exhausted\"\n\t\t\t\t\t\t})\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsetState({\n\t\t\t\tidentity,\n\t\t\t\tresult: Result.succeed({\n\t\t\t\t\titems,\n\t\t\t\t\tloadMore,\n\t\t\t\t\tstatus: \"CanLoadMore\"\n\t\t\t\t})\n\t\t\t});\n\t\t}).pipe(Effect.ensuring(Effect.sync(() => {\n\t\t\tif (active) pages.retain(usedPages);\n\t\t})))).catch((error) => {\n\t\t\tif (active && Schema.is(ClientInfrastructureError)(error)) setState({\n\t\t\t\tidentity,\n\t\t\t\tresult: error\n\t\t\t});\n\t\t});\n\t\treturn () => {\n\t\t\tactive = false;\n\t\t};\n\t}, [\n\t\tfunctionPath,\n\t\tidentity,\n\t\tloadMore,\n\t\tpageSize,\n\t\tpages,\n\t\trefresh,\n\t\trequestedPages,\n\t\tskipped\n\t]);\n\tif (skipped || state.identity !== identity) return pending();\n\tconst result = state.result;\n\tif (Schema.is(ClientInfrastructureError)(result)) throw result;\n\treturn result;\n}\nconst useMutation = (reference) => useMemo(() => {\n\tconst mutate = (args) => {\n\t\tconst functionPath = functionPathOf(reference);\n\t\tconst input = args === void 0 ? {} : args;\n\t\treturn syncRuntime.runPromise(Effect.gen(function* () {\n\t\t\treturn yield* (yield* SyncClient).mutate(functionPath, input);\n\t\t}));\n\t};\n\treturn mutate;\n}, [reference]);\nfunction useId() {\n\tconst [state, setState] = useState({ status: \"pending\" });\n\tuseEffect(() => {\n\t\tlet active = true;\n\t\tlet unsubscribe;\n\t\tsyncRuntime.runPromise(BrowserSession).then((session) => {\n\t\t\tif (!active) return;\n\t\t\tconst update = () => setState(session.snapshot());\n\t\t\tunsubscribe = session.subscribe(update);\n\t\t\tupdate();\n\t\t});\n\t\treturn () => {\n\t\t\tactive = false;\n\t\t\tunsubscribe?.();\n\t\t};\n\t}, []);\n\tconst actions = useMemo(() => ({\n\t\tsignIn: (options) => syncRuntime.runPromise(Effect.gen(function* () {\n\t\t\treturn yield* (yield* BrowserSession).start(\"signIn\", options?.profile ?? [], options?.returnTo);\n\t\t})),\n\t\trequestProfile: (fields, options) => syncRuntime.runPromise(Effect.gen(function* () {\n\t\t\treturn yield* (yield* BrowserSession).start(\"requestProfile\", fields, options?.returnTo);\n\t\t})),\n\t\tsignOut: () => syncRuntime.runPromise(Effect.gen(function* () {\n\t\t\treturn yield* (yield* BrowserSession).signOut;\n\t\t}))\n\t}), []);\n\treturn {\n\t\t...state,\n\t\t...actions\n\t};\n}\n//#endregion\nexport { useId, useMutation, usePaginatedQuery, useQuery };\n\n//# sourceMappingURL=hooks.js.map","import { Query } from \"./query.js\";\nimport { Files } from \"./files.js\";\nimport { useId, useMutation, usePaginatedQuery, useQuery } from \"./hooks.js\";\nimport { Image } from \"./image.js\";\nimport { Link, NavLink, Redirect, url, useBlocker, useLocation, useMatch, useNavigate, useNavigation, useRoute } from \"./router.js\";\nimport { useCallback, useContext, useDebugValue, useEffect, useErrorBoundary, useId as useElementId, useImperativeHandle, useLayoutEffect, useMemo, useReducer, useRef, useState } from \"preact/hooks\";\nimport { Result as Result$1 } from \"@ignotum/contracts/runtime/result\";\nimport { Component, Fragment, cloneElement, createContext, createElement, createRef, h, isValidElement, toChildArray } from \"preact\";\n//#region src/versions/1/browser/index.ts\nconst Result = { match: Result$1.match };\n//#endregion\nexport { Component, Files, Fragment, Image, Link, NavLink, Query, Redirect, Result, cloneElement, createContext, createElement, createRef, h, isValidElement, toChildArray, url, useBlocker, useCallback, useContext, useDebugValue, useEffect, useElementId, useErrorBoundary, useId, useImperativeHandle, useLayoutEffect, useLocation, useMatch, useMemo, useMutation, useNavigate, useNavigation, usePaginatedQuery, useQuery, useReducer, useRef, useRoute, useState };\n\n//# sourceMappingURL=index.js.map"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import "./types-DeCCyqLU-CHx7KFtx.js";
@@ -1,37 +1,15 @@
1
+ import { f as defineId, n as Sha256, r as AppId, s as RequestId } from "./artifact-BB5qzoa6.js";
1
2
  import { Brand, Effect, Effectable, Function, Option, Predicate, Schema, SchemaGetter } from "effect";
2
- //#region ../contracts/dist/runtime/id.js
3
- const IdAlphabet = "0123456789abcdefghijklmnopqrstuvwxyz";
4
- const IdPrefix = Schema.String.check(Schema.isPattern(/^[a-z]+$/));
5
- const IdPayloadPattern = /^[0-9a-z]{24}$/;
6
- const withPrefix = (definition, idPrefix) => Object.assign(definition, { idPrefix });
7
- const defineId = (prefix, brand) => {
8
- const idPrefix = Schema.decodeSync(IdPrefix)(prefix);
9
- return withPrefix(Schema.String.check(Schema.isPattern(new RegExp(`^${idPrefix}_[0-9a-z]{24}$`))).pipe(Schema.brand(brand)), idPrefix);
10
- };
11
- const GeneratedId = withPrefix(Schema.String.check(Schema.isPattern(IdPayloadPattern)).pipe(Schema.brand("ignotum/id")), void 0);
12
- const AppId = defineId("app", "ignotum/hosted/AppId");
13
- const VersionId = defineId("dep", "ignotum/hosted/VersionId");
14
- defineId("team", "ignotum/hosted/TeamId");
15
- const TableId = defineId("table", "ignotum/runtime/TableId");
16
- defineId("prn", "ignotum/control/PlatformPrincipalId");
17
- defineId("ses", "ignotum/auth/SessionId");
18
- defineId("acct", "ignotum/auth/AccountId");
19
- defineId("ver", "ignotum/auth/VerificationId");
20
- defineId("mbr", "ignotum/auth/MemberId");
21
- defineId("invt", "ignotum/auth/InvitationId");
22
- defineId("dvc", "ignotum/auth/DeviceCodeId");
23
- defineId("auth", "ignotum/auth/InternalId");
24
- const InvocationId = defineId("inv", "ignotum/sync/InvocationId");
25
- const SubscriptionId = defineId("sub", "ignotum/sync/SubscriptionId");
26
- defineId("conn", "ignotum/gateway/ConnectionId");
27
- defineId("nonce", "ignotum/runtime/RequestNonce");
28
- const RequestId = defineId("req", "ignotum/runtime/RequestId");
29
- defineId("lock", "ignotum/dev/DatabaseLockId");
30
- defineId("iid", "ignotum/id/AppUserId");
31
- defineId("idu", "ignotum/id/GlobalUserId");
32
- defineId("ids", "ignotum/id/SessionId");
33
- defineId("idr", "ignotum/id/RequestId");
34
- const SessionEpoch = defineId("epoch", "ignotum/id/SessionEpoch");
3
+ //#region ../contracts/dist/runtime/identity.js
4
+ const InvocationKey = Schema.String.pipe(Schema.brand("ignotum/hosted/InvocationKey"));
5
+ const ActivationGeneration = Schema.Natural.pipe(Schema.brand("ignotum/hosted/ActivationGeneration"));
6
+ const AppStateRevision = Schema.Natural.pipe(Schema.brand("ignotum/hosted/AppStateRevision"));
7
+ const VersionNumber = Schema.Int.check(Schema.isGreaterThan(0)).pipe(Schema.brand("ignotum/hosted/VersionNumber"));
8
+ Schema.Int.check(Schema.isGreaterThan(0)).pipe(Schema.brand("ignotum/platform/ClientApiVersion"));
9
+ Schema.Int.check(Schema.isGreaterThan(0)).pipe(Schema.brand("ignotum/platform/ServerApiVersion"));
10
+ Schema.String.check(Schema.isTrimmed(), Schema.isPattern(/^[a-z][a-z0-9]*(?:[./-][a-z0-9]+)*$/), Schema.isMaxLength(128)).pipe(Schema.brand("ignotum/platform/CapabilityId"));
11
+ Schema.Int.check(Schema.isGreaterThan(0)).pipe(Schema.brand("ignotum/platform/ProtocolVersion"));
12
+ const DataHistoryId = defineId("hist", "ignotum/hosted/DataHistoryId");
35
13
  //#endregion
36
14
  //#region ../contracts/dist/schema/file.js
37
15
  const fileFormats = [
@@ -229,6 +207,104 @@ const decodeTransportObject = (value, datePaths) => {
229
207
  return Object.fromEntries(Object.entries(value).map(([key, child]) => [key, decodeTransportValueAt(child, [key], encodedDatePaths)]));
230
208
  };
231
209
  //#endregion
210
+ //#region ../contracts/dist/versioned.js
211
+ /** Registers the first revision of a long-lived format. */
212
+ const initial = (schema) => schema;
213
+ /** Adds one adjacent migration and keeps encoding on the new current revision. */
214
+ const upgrade = (previous, current, migrate) => {
215
+ const accepted = Schema.Union([previous, current]);
216
+ const isCurrent = Schema.is(current);
217
+ return accepted.pipe(Schema.decodeTo(Schema.toType(current), {
218
+ decode: SchemaGetter.transform((value) => {
219
+ if (isCurrent(value)) return value;
220
+ return migrate(value);
221
+ }),
222
+ encode: SchemaGetter.transform((value) => value)
223
+ }));
224
+ };
225
+ //#endregion
226
+ //#region ../contracts/dist/deployment.js
227
+ const strict = (fields) => Schema.Struct(fields).annotate({ parseOptions: { onExcessProperty: "error" } });
228
+ const NonnegativeInteger = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(Number.MAX_SAFE_INTEGER));
229
+ const PositiveInteger = NonnegativeInteger.check(Schema.isGreaterThan(0));
230
+ const PlatformRevision = strict({
231
+ major: PositiveInteger,
232
+ minor: NonnegativeInteger
233
+ });
234
+ strict({
235
+ major: PositiveInteger,
236
+ minimumMinor: NonnegativeInteger
237
+ });
238
+ const compareRevisions = (left, right) => left.major - right.major || left.minor - right.minor;
239
+ const revisionPrefix = (revision) => `/_ignotum/v${revision.major}.${revision.minor}`;
240
+ Schema.Literals([
241
+ "client.js",
242
+ "selection",
243
+ "sync",
244
+ "session",
245
+ "session/requests",
246
+ "session/callback"
247
+ ]);
248
+ const endpointUrl = (revision, endpoint) => `${revisionPrefix(revision)}/${endpoint}`;
249
+ Schema.String.check(Schema.isPattern(/^v[1-9][0-9]*\.(?:0|[1-9][0-9]*)$/));
250
+ const ServingSelection = initial(strict({
251
+ formatVersion: Schema.Literal(1),
252
+ appId: AppId,
253
+ versionNumber: VersionNumber.check(Schema.isLessThanOrEqualTo(Number.MAX_SAFE_INTEGER)),
254
+ platform: PlatformRevision,
255
+ activationGeneration: ActivationGeneration.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(Number.MAX_SAFE_INTEGER)),
256
+ deploymentEpoch: PositiveInteger,
257
+ dataHistoryId: DataHistoryId
258
+ }));
259
+ const sameSelection = (left, right) => left.appId === right.appId && left.versionNumber === right.versionNumber && compareRevisions(left.platform, right.platform) === 0 && left.activationGeneration === right.activationGeneration && left.deploymentEpoch === right.deploymentEpoch && left.dataHistoryId === right.dataHistoryId;
260
+ strict({
261
+ deploymentProtocol: Schema.Literal(3),
262
+ selection: ServingSelection
263
+ });
264
+ strict({
265
+ formatVersion: Schema.Literal(1),
266
+ operationId: Schema.NonEmptyString,
267
+ source: Schema.NullOr(ServingSelection),
268
+ target: ServingSelection,
269
+ phase: Schema.Literals([
270
+ "Closing",
271
+ "Preparing",
272
+ "Committed",
273
+ "Opening",
274
+ "Complete",
275
+ "Aborting",
276
+ "Aborted"
277
+ ])
278
+ }).check(Schema.makeFilter((transition) => {
279
+ if (transition.source === null) return void 0;
280
+ if (transition.source.appId !== transition.target.appId) return "A transition belongs to one app";
281
+ if (transition.target.activationGeneration <= transition.source.activationGeneration) return "A transition must advance the activation generation, including rollback";
282
+ })).annotate({ parseOptions: { onExcessProperty: "error" } });
283
+ const RevisionMap = Schema.Array(PlatformRevision).check(Schema.makeFilter((revisions) => new Set(revisions.map((revision) => revision.major)).size === revisions.length ? void 0 : "Select exactly one minor for each supported major"));
284
+ strict({
285
+ formatVersion: Schema.Literal(1),
286
+ operationId: Schema.NonEmptyString,
287
+ deploymentEpoch: PositiveInteger,
288
+ phase: Schema.Literals([
289
+ "Closing",
290
+ "Deploying",
291
+ "Verifying",
292
+ "Resuming",
293
+ "Complete"
294
+ ]),
295
+ expectedBuild: Schema.String.check(Schema.isPattern(/^[a-f0-9]{64}$/)),
296
+ previousBuild: Schema.NullOr(Schema.String.check(Schema.isPattern(/^[a-f0-9]{64}$/))),
297
+ aborted: Schema.Boolean,
298
+ previous: RevisionMap,
299
+ target: RevisionMap,
300
+ diagnostic: Schema.NullOr(Schema.String.check(Schema.isMaxLength(4096))),
301
+ cursor: Schema.NullOr(Schema.NonEmptyString)
302
+ }).check(Schema.makeFilter((journal) => journal.aborted && journal.previousBuild === null ? "Bootstrap has no previous build to restore" : void 0));
303
+ Schema.Struct({
304
+ buildSha256: Sha256,
305
+ revisions: Schema.Array(PlatformRevision)
306
+ });
307
+ //#endregion
232
308
  //#region ../contracts/dist/runtime/result.js
233
309
  const ResultTypeId = Symbol.for("ignotum/runtime/result/Result");
234
310
  const CompletedResultTypeId = Symbol.for("ignotum/runtime/result/Completed");
@@ -336,22 +412,6 @@ const Result$1 = {
336
412
  try: tryResult
337
413
  };
338
414
  //#endregion
339
- //#region ../contracts/dist/versioned.js
340
- /** Registers the first revision of a long-lived format. */
341
- const initial = (schema) => schema;
342
- /** Adds one adjacent migration and keeps encoding on the new current revision. */
343
- const upgrade = (previous, current, migrate) => {
344
- const accepted = Schema.Union([previous, current]);
345
- const isCurrent = Schema.is(current);
346
- return accepted.pipe(Schema.decodeTo(Schema.toType(current), {
347
- decode: SchemaGetter.transform((value) => {
348
- if (isCurrent(value)) return value;
349
- return migrate(value);
350
- }),
351
- encode: SchemaGetter.transform((value) => value)
352
- }));
353
- };
354
- //#endregion
355
415
  //#region ../contracts/dist/id.js
356
416
  const DevelopmentUsername = Schema.String.check(Schema.isPattern(/^[a-z][a-z0-9_-]{0,63}$/));
357
417
  const UserId = DevelopmentUsername.pipe(Schema.brand("ignotum/id/UserId"));
@@ -409,8 +469,13 @@ const SessionOutcome = Schema.Literals([
409
469
  "ProfileUpdated",
410
470
  "Cancelled"
411
471
  ]);
412
- const sessionPath = "/_ignotum/v1/session";
413
- const sessionRequestsPath = `${sessionPath}/requests`;
472
+ const platformRevision = {
473
+ major: 1,
474
+ minor: 0
475
+ };
476
+ const sessionPath = endpointUrl(platformRevision, "session");
477
+ const sessionRequestsPath = endpointUrl(platformRevision, "session/requests");
478
+ endpointUrl(platformRevision, "session/callback");
414
479
  const DevelopmentSelection = initial(Schema.Struct({
415
480
  formatVersion: Schema.Literal(1),
416
481
  username: Schema.NullOr(DevelopmentUsername),
@@ -418,6 +483,6 @@ const DevelopmentSelection = initial(Schema.Struct({
418
483
  }));
419
484
  const developmentSelectionKey = "ignotum.id.development";
420
485
  //#endregion
421
- export { RuntimeFileMetadata as A, makeFileValue as B, TransportObjectTypeSchema as C, encodeTransportObject as D, decodeTransportValue as E, fileIdOf as F, InvocationId as G, AppId as H, fileLimits as I, TableId as J, SessionEpoch as K, fileMimeTypes as L, constrainedFileValue as M, fileFormats as N, FileFormat as O, fileGrantUrlOf as P, grantFileValue as R, resultFromEffect as S, datePathsOfObject as T, GeneratedId as U, runtimeFileOccurrencesOf as V, IdAlphabet as W, defineId as X, VersionId as Y, Result$1 as _, SessionResponse as a, inspectResult as b, UserId as c, sessionPath as d, sessionRequestsPath as f, ErrorValueSchema as g, ErrorBrand as h, SessionRequest as i, RuntimeFileOccurrence as j, FileId as k, developmentSelectionKey as l, upgrade as m, SessionOutcome as n, SessionState as o, initial as p, SubscriptionId as q, SessionRedirect as r, User as s, DevelopmentSelection as t, makeIdContext as u, documentNotFound as v, datePathsOf as w, pending as x, failureFromWire as y, isFileValue as z };
486
+ export { encodeTransportObject as A, fileMimeTypes as B, sameSelection as C, datePathsOf as D, TransportObjectTypeSchema as E, constrainedFileValue as F, ActivationGeneration as G, isFileValue as H, fileFormats as I, InvocationKey as J, AppStateRevision as K, fileGrantUrlOf as L, FileId as M, RuntimeFileMetadata as N, datePathsOfObject as O, RuntimeFileOccurrence as P, fileIdOf as R, endpointUrl as S, upgrade as T, makeFileValue as U, grantFileValue as V, runtimeFileOccurrencesOf as W, failureFromWire as _, SessionResponse as a, resultFromEffect as b, UserId as c, sessionPath as d, sessionRequestsPath as f, documentNotFound as g, Result$1 as h, SessionRequest as i, FileFormat as j, decodeTransportValue as k, developmentSelectionKey as l, ErrorValueSchema as m, SessionOutcome as n, SessionState as o, ErrorBrand as p, DataHistoryId as q, SessionRedirect as r, User as s, DevelopmentSelection as t, makeIdContext as u, inspectResult as v, initial as w, ServingSelection as x, pending as y, fileLimits as z };
422
487
 
423
- //# sourceMappingURL=id--1m0NuUL.js.map
488
+ //# sourceMappingURL=id-BrEnxY-r.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-BrEnxY-r.js","names":["Result"],"sources":["../../../contracts/dist/runtime/identity.js","../../../contracts/dist/schema/file.js","../../../contracts/dist/runtime/value.js","../../../contracts/dist/versioned.js","../../../contracts/dist/deployment.js","../../../contracts/dist/runtime/result.js","../../../contracts/dist/id.js"],"sourcesContent":["import { AppId, AuthAccountId, AuthDeviceCodeId, AuthInternalId, AuthInvitationId, AuthMemberId, AuthSessionId, AuthVerificationId, ConnectionId, DevDatabaseLockId, InvocationId, PlatformPrincipalId, RequestId, RuntimeRequestNonce, SubscriptionId, TableId, TeamId, VersionId, defineId } from \"./id.js\";\nimport { Schema } from \"effect\";\n//#region src/runtime/identity.ts\nconst InvocationKey = Schema.String.pipe(Schema.brand(\"ignotum/hosted/InvocationKey\"));\nconst ActivationGeneration = Schema.Natural.pipe(Schema.brand(\"ignotum/hosted/ActivationGeneration\"));\nconst AppStateRevision = Schema.Natural.pipe(Schema.brand(\"ignotum/hosted/AppStateRevision\"));\nconst VersionNumber = Schema.Int.check(Schema.isGreaterThan(0)).pipe(Schema.brand(\"ignotum/hosted/VersionNumber\"));\nconst ClientApiVersion = Schema.Int.check(Schema.isGreaterThan(0)).pipe(Schema.brand(\"ignotum/platform/ClientApiVersion\"));\nconst ServerApiVersion = Schema.Int.check(Schema.isGreaterThan(0)).pipe(Schema.brand(\"ignotum/platform/ServerApiVersion\"));\nconst CapabilityId = Schema.String.check(Schema.isTrimmed(), Schema.isPattern(/^[a-z][a-z0-9]*(?:[./-][a-z0-9]+)*$/), Schema.isMaxLength(128)).pipe(Schema.brand(\"ignotum/platform/CapabilityId\"));\nconst ProtocolVersion = Schema.Int.check(Schema.isGreaterThan(0)).pipe(Schema.brand(\"ignotum/platform/ProtocolVersion\"));\nconst DataHistoryId = defineId(\"hist\", \"ignotum/hosted/DataHistoryId\");\n//#endregion\nexport { ActivationGeneration, AppId, AppStateRevision, AuthAccountId, AuthDeviceCodeId, AuthInternalId, AuthInvitationId, AuthMemberId, AuthSessionId, AuthVerificationId, CapabilityId, ClientApiVersion, ConnectionId, DataHistoryId, DevDatabaseLockId, InvocationId, InvocationKey, PlatformPrincipalId, ProtocolVersion, RequestId, RuntimeRequestNonce, ServerApiVersion, SubscriptionId, TableId, TeamId, VersionId, VersionNumber };\n\n//# sourceMappingURL=identity.js.map","import { defineId } from \"../runtime/id.js\";\nimport { Predicate, Schema, SchemaGetter } from \"effect\";\n//#region src/schema/file.ts\nconst fileFormats = [\n\t\"jpeg\",\n\t\"png\",\n\t\"webp\",\n\t\"avif\",\n\t\"gif\"\n];\nconst FileFormat = Schema.Literals(fileFormats);\nconst fileMimeTypes = {\n\tavif: \"image/avif\",\n\tgif: \"image/gif\",\n\tjpeg: \"image/jpeg\",\n\tpng: \"image/png\",\n\twebp: \"image/webp\"\n};\nconst fileLimits = {\n\tactiveGrantsPerConnection: 1024,\n\tdistinctFilesPerQuerySnapshot: 256,\n\tfileBytes: 10485760,\n\tfilesPerMutation: 8,\n\tfilenameBytes: 255,\n\tmutationBytes: 26214400,\n\tpreparationLifetimeMillis: 9e5,\n\tstagedBytesPerApp: 104857600\n};\nconst FileId = Object.assign(Schema.String.pipe(Schema.check(Schema.isPattern(/^file_[0-9A-Za-z_-]{20,128}$/)), Schema.brand(\"ignotum/file/FileId\")), { idPrefix: \"file\" });\nconst FileUploadToken = defineId(\"upload\", \"ignotum/file/FileUploadToken\");\nconst FileGrantToken = defineId(\"grant\", \"ignotum/file/FileGrantToken\");\nconst FileValueTypeId = Symbol.for(\"ignotum/file/FileValue\");\nconst FileGrantTypeId = Symbol.for(\"ignotum/file/FileGrant\");\nconst isFileValue = (value) => Predicate.isObject(value) && Predicate.hasProperty(value, FileValueTypeId) && Predicate.isObject(value[FileValueTypeId]) && Predicate.hasProperty(value[FileValueTypeId], \"id\") && Schema.is(FileId)(value[FileValueTypeId].id) && Predicate.hasProperty(value, \"format\") && Schema.is(FileFormat)(value.format) && Predicate.hasProperty(value, \"name\") && Predicate.isString(value.name) && Predicate.hasProperty(value, \"size\") && Predicate.isNumber(value.size) && Predicate.hasProperty(value, \"mimeType\") && value.mimeType === fileMimeTypes[value.format];\nconst buildFileValue = (id, metadata, grantUrl) => {\n\tconst value = {\n\t\tformat: metadata.format,\n\t\tmimeType: fileMimeTypes[metadata.format],\n\t\tname: metadata.name,\n\t\tsize: metadata.size\n\t};\n\tObject.defineProperty(value, FileValueTypeId, {\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t\tvalue: Object.freeze({ id }),\n\t\twritable: false\n\t});\n\tif (grantUrl !== void 0) Object.defineProperty(value, FileGrantTypeId, {\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t\tvalue: grantUrl,\n\t\twritable: false\n\t});\n\treturn Object.freeze(value);\n};\nconst makeFileValue = (id, metadata) => buildFileValue(id, metadata);\nconst fileIdOf = (value) => value[FileValueTypeId].id;\nconst grantFileValue = (value, url) => {\n\treturn buildFileValue(fileIdOf(value), value, url);\n};\nconst fileGrantUrlOf = (value) => value[FileGrantTypeId];\nconst EncodedFileValue = Schema.Struct({\n\t$ignotum: Schema.Literal(\"file\"),\n\tid: FileId,\n\tformat: FileFormat,\n\tname: Schema.String,\n\tsize: Schema.Int.check(Schema.isBetween({\n\t\tminimum: 0,\n\t\tmaximum: fileLimits.fileBytes\n\t}))\n});\nconst RuntimeFileMetadata = Schema.Struct({\n\tid: FileId,\n\tformat: FileFormat,\n\tname: Schema.String,\n\tsize: Schema.Int.check(Schema.isBetween({\n\t\tminimum: 0,\n\t\tmaximum: fileLimits.fileBytes\n\t}))\n});\nconst FilePath = Schema.Array(Schema.Union([Schema.String, Schema.Natural]));\nconst RuntimeFileOccurrence = Schema.Struct({\n\tpath: FilePath,\n\tfile: RuntimeFileMetadata\n});\nconst DecodedFileValue = Schema.declare(isFileValue, { title: \"FileValue\" });\nconst FileValue = EncodedFileValue.pipe(Schema.decodeTo(DecodedFileValue, {\n\tdecode: SchemaGetter.transform((encoded) => makeFileValue(encoded.id, {\n\t\tformat: encoded.format,\n\t\tname: encoded.name,\n\t\tsize: encoded.size\n\t})),\n\tencode: SchemaGetter.transform((value) => ({\n\t\t$ignotum: \"file\",\n\t\tformat: value.format,\n\t\tid: fileIdOf(value),\n\t\tname: value.name,\n\t\tsize: value.size\n\t}))\n}));\nconst constrainedFileValue = (formats, maxBytes) => FileValue.pipe(Schema.check(Schema.makeFilter((value) => {\n\tconst issues = [];\n\tif (!formats.includes(value.format)) issues.push({\n\t\tpath: [\"format\"],\n\t\tissue: `File format '${value.format}' is not allowed by this field.`\n\t});\n\tif (value.size > maxBytes) issues.push({\n\t\tpath: [\"size\"],\n\t\tissue: `File size ${value.size} exceeds this field's ${maxBytes} byte limit.`\n\t});\n\treturn issues;\n})));\nconst collectFileOccurrences = (value, path, occurrences) => {\n\tif (isFileValue(value)) {\n\t\toccurrences.push({\n\t\t\tfile: value,\n\t\t\tpath\n\t\t});\n\t\treturn;\n\t}\n\tif (globalThis.Array.isArray(value)) {\n\t\tfor (const [index, child] of value.entries()) collectFileOccurrences(child, [...path, index], occurrences);\n\t\treturn;\n\t}\n\tif (!Predicate.isObject(value) || Predicate.isDate(value)) return;\n\tfor (const [key, child] of Object.entries(value)) collectFileOccurrences(child, [...path, key], occurrences);\n};\nconst fileOccurrencesOf = (value) => {\n\tconst occurrences = [];\n\tcollectFileOccurrences(value, [], occurrences);\n\treturn occurrences;\n};\nconst runtimeFileOccurrencesOf = (value) => fileOccurrencesOf(value).map(({ file, path }) => ({\n\tpath,\n\tfile: {\n\t\tformat: file.format,\n\t\tid: fileIdOf(file),\n\t\tname: file.name,\n\t\tsize: file.size\n\t}\n}));\nconst collectEncodedFileOccurrences = (value, path, occurrences) => {\n\tif (Schema.is(EncodedFileValue)(value)) {\n\t\tconst file = Schema.decodeUnknownSync(EncodedFileValue)(value);\n\t\toccurrences.push({\n\t\t\tpath,\n\t\t\tfile: {\n\t\t\t\tformat: file.format,\n\t\t\t\tid: file.id,\n\t\t\t\tname: file.name,\n\t\t\t\tsize: file.size\n\t\t\t}\n\t\t});\n\t\treturn;\n\t}\n\tif (globalThis.Array.isArray(value)) {\n\t\tfor (const [index, child] of value.entries()) collectEncodedFileOccurrences(child, [...path, index], occurrences);\n\t\treturn;\n\t}\n\tif (!Schema.is(Schema.JsonObject)(value)) return;\n\tfor (const [key, child] of Object.entries(value)) collectEncodedFileOccurrences(child, [...path, key], occurrences);\n};\nconst encodedFileOccurrencesOf = (value) => {\n\tconst occurrences = [];\n\tcollectEncodedFileOccurrences(value, [], occurrences);\n\treturn occurrences;\n};\n//#endregion\nexport { EncodedFileValue, FileFormat, FileGrantToken, FileGrantTypeId, FileId, FilePath, FileUploadToken, FileValue, FileValueTypeId, RuntimeFileMetadata, RuntimeFileOccurrence, constrainedFileValue, encodedFileOccurrencesOf, fileFormats, fileGrantUrlOf, fileIdOf, fileLimits, fileMimeTypes, fileOccurrencesOf, grantFileValue, isFileValue, makeFileValue, runtimeFileOccurrencesOf };\n\n//# sourceMappingURL=file.js.map","import { EncodedFileValue, FileValue, isFileValue } from \"../schema/file.js\";\nimport { Predicate, Schema } from \"effect\";\n//#region src/runtime/value.ts\nconst TransportValueSchema = Schema.suspend(() => Schema.Union([\n\tSchema.Null,\n\tSchema.Boolean,\n\tSchema.Finite,\n\tSchema.String,\n\tSchema.Date,\n\tFileValue,\n\tSchema.Array(TransportValueSchema),\n\tSchema.Record(Schema.String, Schema.UndefinedOr(TransportValueSchema))\n]));\nconst TransportValueTypeSchema = Schema.toType(TransportValueSchema);\nconst TransportObjectTypeSchema = Schema.Record(Schema.String, Schema.UndefinedOr(TransportValueTypeSchema));\nconst encodeTransportValue = (value) => {\n\tif (Predicate.isDate(value)) return Schema.encodeSync(Schema.DateFromMillis)(value);\n\tif (isFileValue(value)) return Schema.encodeSync(FileValue)(value);\n\tif (globalThis.Array.isArray(value)) return value.map(encodeTransportValue);\n\tif (Predicate.isNumber(value)) return Schema.decodeSync(Schema.Finite)(value);\n\tif (Predicate.isNull(value) || Predicate.isString(value) || Predicate.isBoolean(value)) return value;\n\treturn Object.fromEntries(Object.entries(value).flatMap(([key, child]) => child === void 0 ? [] : [[key, encodeTransportValue(child)]]));\n};\nconst encodeTransportObject = (value) => Schema.decodeUnknownSync(Schema.JsonObject)(encodeTransportValue(Schema.decodeUnknownSync(TransportObjectTypeSchema)(value)));\nconst collectDatePaths = (value, path, paths) => {\n\tif (Predicate.isDate(value)) {\n\t\tSchema.decodeSync(Schema.Date)(value);\n\t\tpaths.push(path);\n\t\treturn;\n\t}\n\tif (isFileValue(value)) return;\n\tif (globalThis.Array.isArray(value)) {\n\t\tfor (const [index, child] of value.entries()) collectDatePaths(child, [...path, index], paths);\n\t\treturn;\n\t}\n\tif (value === void 0 || Predicate.isNull(value) || Predicate.isString(value) || Predicate.isNumber(value) || Predicate.isBoolean(value)) return;\n\tfor (const [key, child] of Object.entries(value)) collectDatePaths(child, [...path, key], paths);\n};\nconst datePathsOf = (value) => {\n\tconst paths = [];\n\tcollectDatePaths(value, [], paths);\n\treturn paths;\n};\nconst datePathsOfObject = (value) => datePathsOf(Schema.decodeUnknownSync(TransportObjectTypeSchema)(value));\nconst pathKey = (path) => JSON.stringify(path);\nconst decodeTransportValueAt = (value, path, encodedDatePaths) => {\n\tif (encodedDatePaths.has(pathKey(path))) return Schema.decodeUnknownSync(Schema.DateFromMillis)(value);\n\tif (Schema.is(EncodedFileValue)(value)) return Schema.decodeSync(FileValue)(value);\n\tif (globalThis.Array.isArray(value)) return value.map((item, index) => decodeTransportValueAt(item, [...path, index], encodedDatePaths));\n\tif (Predicate.isNull(value) || Predicate.isString(value) || Predicate.isNumber(value) || Predicate.isBoolean(value)) return value;\n\treturn Object.fromEntries(Object.entries(value).map(([key, item]) => [key, decodeTransportValueAt(item, [...path, key], encodedDatePaths)]));\n};\nconst decodeTransportValue = (value, datePaths) => decodeTransportValueAt(value, [], new Set(datePaths.map(pathKey)));\nconst decodeTransportObject = (value, datePaths) => {\n\tconst encodedDatePaths = new Set(datePaths.map(pathKey));\n\treturn Object.fromEntries(Object.entries(value).map(([key, child]) => [key, decodeTransportValueAt(child, [key], encodedDatePaths)]));\n};\n//#endregion\nexport { TransportObjectTypeSchema, TransportValueSchema, TransportValueTypeSchema, datePathsOf, datePathsOfObject, decodeTransportObject, decodeTransportValue, encodeTransportObject, encodeTransportValue };\n\n//# sourceMappingURL=value.js.map","import { Schema, SchemaGetter } from \"effect\";\n//#region src/versioned.ts\n/** Registers the first revision of a long-lived format. */\nconst initial = (schema) => schema;\n/** Adds one adjacent migration and keeps encoding on the new current revision. */\nconst upgrade = (previous, current, migrate) => {\n\tconst accepted = Schema.Union([previous, current]);\n\tconst isCurrent = Schema.is(current);\n\treturn accepted.pipe(Schema.decodeTo(Schema.toType(current), {\n\t\tdecode: SchemaGetter.transform((value) => {\n\t\t\tif (isCurrent(value)) return value;\n\t\t\treturn migrate(value);\n\t\t}),\n\t\tencode: SchemaGetter.transform((value) => value)\n\t}));\n};\n//#endregion\nexport { initial, upgrade };\n\n//# sourceMappingURL=versioned.js.map","import { AppId } from \"./runtime/id.js\";\nimport { ActivationGeneration, DataHistoryId, VersionNumber } from \"./runtime/identity.js\";\nimport { initial } from \"./versioned.js\";\nimport { Sha256 } from \"./artifact.js\";\nimport { Schema } from \"effect\";\n//#region src/deployment.ts\nconst strict = (fields) => Schema.Struct(fields).annotate({ parseOptions: { onExcessProperty: \"error\" } });\nconst NonnegativeInteger = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(Number.MAX_SAFE_INTEGER));\nconst PositiveInteger = NonnegativeInteger.check(Schema.isGreaterThan(0));\nconst PlatformRevision = strict({\n\tmajor: PositiveInteger,\n\tminor: NonnegativeInteger\n});\nconst PlatformRequirement = strict({\n\tmajor: PositiveInteger,\n\tminimumMinor: NonnegativeInteger\n});\nconst compareRevisions = (left, right) => left.major - right.major || left.minor - right.minor;\nconst supportsRequirement = (revision, requirement) => revision.major === requirement.major && revision.minor >= requirement.minimumMinor;\nconst revisionPrefix = (revision) => `/_ignotum/v${revision.major}.${revision.minor}`;\nconst PlatformEndpoint = Schema.Literals([\n\t\"client.js\",\n\t\"selection\",\n\t\"sync\",\n\t\"session\",\n\t\"session/requests\",\n\t\"session/callback\"\n]);\nconst endpointUrl = (revision, endpoint) => `${revisionPrefix(revision)}/${endpoint}`;\nconst RevisionSegment = Schema.String.check(Schema.isPattern(/^v[1-9][0-9]*\\.(?:0|[1-9][0-9]*)$/));\n/** Decode the path segment before consulting the deployed revision registry. */\nconst parseRevision = (segment) => {\n\tconst [major, minor] = Schema.decodeUnknownSync(RevisionSegment)(segment).slice(1).split(\".\").map(Number);\n\treturn Schema.decodeUnknownSync(PlatformRevision)({\n\t\tmajor,\n\t\tminor\n\t});\n};\nconst ServingSelectionV1 = strict({\n\tformatVersion: Schema.Literal(1),\n\tappId: AppId,\n\tversionNumber: VersionNumber.check(Schema.isLessThanOrEqualTo(Number.MAX_SAFE_INTEGER)),\n\tplatform: PlatformRevision,\n\tactivationGeneration: ActivationGeneration.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(Number.MAX_SAFE_INTEGER)),\n\tdeploymentEpoch: PositiveInteger,\n\tdataHistoryId: DataHistoryId\n});\nconst ServingSelection = initial(ServingSelectionV1);\nconst sameSelection = (left, right) => left.appId === right.appId && left.versionNumber === right.versionNumber && compareRevisions(left.platform, right.platform) === 0 && left.activationGeneration === right.activationGeneration && left.deploymentEpoch === right.deploymentEpoch && left.dataHistoryId === right.dataHistoryId;\n/** Separate wire generation from both persisted format and platform revisions. */\nconst BrowserHandshake = strict({\n\tdeploymentProtocol: Schema.Literal(3),\n\tselection: ServingSelection\n});\nconst retention = {\n\treadyAgeMs: 6048e5,\n\tnewestReadyCount: 3,\n\tuploadAgeMs: 864e5\n};\nconst TransitionV1 = strict({\n\tformatVersion: Schema.Literal(1),\n\toperationId: Schema.NonEmptyString,\n\tsource: Schema.NullOr(ServingSelection),\n\ttarget: ServingSelection,\n\tphase: Schema.Literals([\n\t\t\"Closing\",\n\t\t\"Preparing\",\n\t\t\"Committed\",\n\t\t\"Opening\",\n\t\t\"Complete\",\n\t\t\"Aborting\",\n\t\t\"Aborted\"\n\t])\n}).check(Schema.makeFilter((transition) => {\n\tif (transition.source === null) return void 0;\n\tif (transition.source.appId !== transition.target.appId) return \"A transition belongs to one app\";\n\tif (transition.target.activationGeneration <= transition.source.activationGeneration) return \"A transition must advance the activation generation, including rollback\";\n})).annotate({ parseOptions: { onExcessProperty: \"error\" } });\nconst AppTransition = initial(TransitionV1);\nconst RevisionMap = Schema.Array(PlatformRevision).check(Schema.makeFilter((revisions) => new Set(revisions.map((revision) => revision.major)).size === revisions.length ? void 0 : \"Select exactly one minor for each supported major\"));\nconst MaintenanceV1 = strict({\n\tformatVersion: Schema.Literal(1),\n\toperationId: Schema.NonEmptyString,\n\tdeploymentEpoch: PositiveInteger,\n\tphase: Schema.Literals([\n\t\t\"Closing\",\n\t\t\"Deploying\",\n\t\t\"Verifying\",\n\t\t\"Resuming\",\n\t\t\"Complete\"\n\t]),\n\texpectedBuild: Schema.String.check(Schema.isPattern(/^[a-f0-9]{64}$/)),\n\tpreviousBuild: Schema.NullOr(Schema.String.check(Schema.isPattern(/^[a-f0-9]{64}$/))),\n\taborted: Schema.Boolean,\n\tprevious: RevisionMap,\n\ttarget: RevisionMap,\n\tdiagnostic: Schema.NullOr(Schema.String.check(Schema.isMaxLength(4096))),\n\tcursor: Schema.NullOr(Schema.NonEmptyString)\n}).check(Schema.makeFilter((journal) => journal.aborted && journal.previousBuild === null ? \"Bootstrap has no previous build to restore\" : void 0));\nconst MaintenanceJournal = initial(MaintenanceV1);\nconst effectiveDeploymentRevisions = (journal) => journal.aborted ? journal.previous : journal.target;\nconst effectiveDeploymentBuild = (journal) => journal.aborted ? journal.previousBuild : journal.expectedBuild;\nconst DeploymentServiceReadiness = Schema.Struct({\n\tbuildSha256: Sha256,\n\trevisions: Schema.Array(PlatformRevision)\n});\n//#endregion\nexport { AppTransition, BrowserHandshake, DeploymentServiceReadiness, MaintenanceJournal, PlatformEndpoint, PlatformRequirement, PlatformRevision, ServingSelection, compareRevisions, effectiveDeploymentBuild, effectiveDeploymentRevisions, endpointUrl, parseRevision, retention, revisionPrefix, sameSelection, supportsRequirement };\n\n//# sourceMappingURL=deployment.js.map","import { RequestId } from \"./id.js\";\nimport { decodeTransportObject } from \"./value.js\";\nimport { Brand, Effect, Effectable, Function, Option, Predicate, Schema } from \"effect\";\n//#region src/runtime/result.ts\nconst ResultTypeId = Symbol.for(\"ignotum/runtime/result/Result\");\nconst CompletedResultTypeId = Symbol.for(\"ignotum/runtime/result/Completed\");\nconst PendingResultTypeId = Symbol.for(\"ignotum/runtime/result/Pending\");\nconst ErrorBrand = \"ignotum/error\";\nconst makeErrorValue = Brand.nominal();\nconst ErrorValueSchema = Schema.StructWithRest(Schema.Struct({ _tag: Schema.String }), [Schema.Record(Schema.String, Schema.Json)]).pipe(Schema.brand(ErrorBrand));\nvar InternalServerErrorCause = class extends Schema.TaggedError()(\"InternalServerError\", { requestId: RequestId }) {};\nconst InternalServerError = InternalServerErrorCause;\nconst InternalServerErrorSchema = InternalServerErrorCause.pipe(Schema.brand(ErrorBrand));\nconst effectOf = (value) => Predicate.hasProperty(value, ResultTypeId) ? value[ResultTypeId] : Effect.succeed(value);\nfunction makeResultEffectBase() {\n\tconst Base = function() {};\n\tBase.prototype = Effectable.Prototype({\n\t\tlabel: \"IgnotumResult\",\n\t\tevaluate() {\n\t\t\treturn this[ResultTypeId];\n\t\t}\n\t});\n\treturn Base;\n}\nconst ResultEffectBase = makeResultEffectBase();\nvar ResultOperation = class ResultOperation extends ResultEffectBase {\n\t[ResultTypeId];\n\tconstructor(effect, completed) {\n\t\tsuper();\n\t\tthis[ResultTypeId] = effect;\n\t\tif (completed !== void 0) Object.defineProperty(this, CompletedResultTypeId, { value: completed });\n\t}\n\tcatch(cases) {\n\t\tconst effectCases = {};\n\t\tfor (const [tag, handler] of Object.entries(cases)) if (Predicate.isFunction(handler)) effectCases[tag] = (failure) => effectOf(handler(failure));\n\t\tconst runtimeEffect = this[ResultTypeId];\n\t\tconst caught = Effect.catchTags(runtimeEffect, effectCases);\n\t\treturn new ResultOperation(caught);\n\t}\n};\nvar PendingQueryResult = class {\n\t[PendingResultTypeId] = PendingResultTypeId;\n};\nconst inspectResult = (value) => {\n\tif (!Predicate.hasProperty(value, CompletedResultTypeId)) return void 0;\n\treturn value[CompletedResultTypeId];\n};\nconst effectFromResult = (result) => result[ResultTypeId];\nconst resultFromEffect = (effect) => new ResultOperation(effect);\nconst isFailureResult = (result) => Predicate.hasProperty(result, CompletedResultTypeId) && Predicate.isObject(result[CompletedResultTypeId]) && Predicate.hasProperty(result[CompletedResultTypeId], \"type\") && result[CompletedResultTypeId].type === \"Failure\";\nconst succeed = (value) => new ResultOperation(Effect.succeed(value), {\n\ttype: \"Success\",\n\tvalue\n});\nconst fail = (error) => new ResultOperation(Effect.fail(error), {\n\ttype: \"Failure\",\n\terror\n});\nconst tryResult = (body) => {\n\treturn new ResultOperation(Effect.gen(body));\n};\nconst match = Function.dual(2, (result, matchers) => {\n\tif (result instanceof PendingQueryResult) {\n\t\tif (matchers.pending === void 0) throw new Error(\"A pending Result requires a pending matcher.\");\n\t\treturn matchers.pending();\n\t}\n\tif (!Predicate.hasProperty(result, ResultTypeId)) throw new Error(\"Unknown Result implementation.\");\n\tconst inspected = inspectResult(result);\n\tif (inspected?.type === \"Success\") {\n\t\tconst value = inspected.value;\n\t\treturn matchers.value(value);\n\t}\n\tif (!isFailureResult(result)) throw new Error(\"Unknown or incomplete Result operation.\");\n\tconst error = result[CompletedResultTypeId].error;\n\tif (error._tag === \"InternalServerError\") {\n\t\tconst internalError = Schema.decodeUnknownSync(InternalServerErrorSchema)(error);\n\t\tconst handler = matchers.internalError;\n\t\tif (handler === void 0) throw internalError;\n\t\treturn handler(internalError);\n\t}\n\tconst errorMatcher = matchers.error;\n\tif (errorMatcher === void 0) throw new Error(`No matcher was provided for ${error._tag}.`);\n\tif (Predicate.isFunction(errorMatcher)) return errorMatcher(error);\n\tconst handlers = errorMatcher;\n\tconst handler = Object.hasOwn(handlers, error._tag) ? handlers[error._tag] : void 0;\n\tif (handler === void 0) throw new Error(`No matcher was provided for ${error._tag}.`);\n\treturn handler(error);\n});\nconst pending = () => new PendingQueryResult();\nconst failureFromWire = (error, datePaths = []) => {\n\tconst internalError = Schema.decodeUnknownOption(InternalServerErrorSchema)(error);\n\tif (Option.isSome(internalError)) return fail(internalError.value);\n\tconst decoded = Schema.decodeUnknownOption(ErrorValueSchema)(error);\n\tif (Option.isNone(decoded)) throw new Error(\"The server returned an invalid application error.\");\n\tconst restored = decodeTransportObject(decoded.value, datePaths);\n\treturn fail(makeErrorValue({\n\t\t...restored,\n\t\t_tag: decoded.value._tag\n\t}));\n};\nconst documentNotFound = (table, id) => Brand.nominal()({\n\t_tag: \"DocumentNotFound\",\n\ttable,\n\tid\n});\nconst Result = {\n\tfail,\n\tmatch,\n\tsucceed,\n\ttry: tryResult\n};\n//#endregion\nexport { ErrorBrand, ErrorValueSchema, InternalServerError, InternalServerErrorSchema, Result, documentNotFound, effectFromResult, failureFromWire, inspectResult, match, pending, resultFromEffect };\n\n//# sourceMappingURL=result.js.map","import { initial } from \"./versioned.js\";\nimport { endpointUrl } from \"./deployment.js\";\nimport { encodeCanonicalJson } from \"./json.js\";\nimport { ErrorBrand, resultFromEffect } from \"./runtime/result.js\";\nimport { Effect, Schema } from \"effect\";\n//#region src/id.ts\nconst DevelopmentUsername = Schema.String.check(Schema.isPattern(/^[a-z][a-z0-9_-]{0,63}$/));\nconst UserId = DevelopmentUsername.pipe(Schema.brand(\"ignotum/id/UserId\"));\nconst User = Schema.Struct({\n\tid: UserId,\n\tname: Schema.optional(Schema.String),\n\temail: Schema.optional(Schema.String),\n\timage: Schema.optional(Schema.String)\n});\nconst ProfileField = Schema.Literals([\n\t\"name\",\n\t\"email\",\n\t\"image\"\n]);\nconst ProfileFields = Schema.Array(ProfileField).check(Schema.isUnique());\nconst IdRequired = Schema.TaggedStruct(\"IdRequired\", {}).pipe(Schema.brand(ErrorBrand));\nconst makeIdContext = (read) => ({\n\tcurrent: () => resultFromEffect(read),\n\trequire: () => resultFromEffect(read.pipe(Effect.flatMap((user) => user === null ? Effect.fail(IdRequired.make({})) : Effect.succeed(user))))\n});\nconst SessionState = Schema.Struct({\n\tsessionEpoch: Schema.String,\n\tviewRevision: Schema.Natural,\n\tuser: Schema.NullOr(User),\n\tvalidUntil: Schema.Finite\n});\nconst SessionResponse = Schema.Struct({\n\tdevelopment: Schema.optional(Schema.Literal(true)),\n\toutcome: Schema.optional(Schema.Literals([\n\t\t\"SignedIn\",\n\t\t\"ProfileUpdated\",\n\t\t\"Cancelled\"\n\t])),\n\t...SessionState.fields,\n\tserverTime: Schema.Finite,\n\texpiresAt: Schema.Finite\n});\nconst ReturnPath = Schema.String.check(Schema.makeFilter((value) => {\n\tif (!value.startsWith(\"/\") || value.startsWith(\"//\") || value.includes(\"\\\\\")) return false;\n\tconst url = new URL(value, \"https://app.ignotum.invalid\");\n\treturn url.origin === \"https://app.ignotum.invalid\" && url.pathname !== \"/_ignotum\" && !url.pathname.startsWith(\"/_ignotum/\");\n}, { message: \"Return to a path within this app.\" }));\nconst SessionRequest = Schema.Struct({\n\tintent: Schema.Literals([\"signIn\", \"requestProfile\"]),\n\tprofile: ProfileFields,\n\treturnTo: ReturnPath,\n\tsessionEpoch: Schema.String\n});\nconst SessionRedirect = Schema.Struct({\n\tredirectUrl: Schema.String,\n\texpiresAt: Schema.Finite\n});\nconst SessionOutcome = Schema.Literals([\n\t\"SignedIn\",\n\t\"ProfileUpdated\",\n\t\"Cancelled\"\n]);\nconst idLimits = {\n\tsessionMillis: 2592e6,\n\tleaseMillis: 3e4,\n\trefreshMillis: 2e4,\n\trequestMillis: 6e5,\n\tcodeMillis: 6e4,\n\trequestBytes: 16384,\n\tpendingRequests: 5\n};\nconst platformRevision = {\n\tmajor: 1,\n\tminor: 0\n};\nconst sessionPath = endpointUrl(platformRevision, \"session\");\nconst sessionRequestsPath = endpointUrl(platformRevision, \"session/requests\");\nconst sessionCallbackPath = endpointUrl(platformRevision, \"session/callback\");\nconst sessionCookieName = \"__Host-ignotum-session\";\nconst idImagePath = \"/_ignotum/v1.0/id/image/\";\nconst idViewKey = (session) => encodeCanonicalJson([session.user, session.viewRevision]);\nconst DevelopmentSelectionV1 = Schema.Struct({\n\tformatVersion: Schema.Literal(1),\n\tusername: Schema.NullOr(DevelopmentUsername),\n\tepoch: Schema.String\n});\nconst DevelopmentSelection = initial(DevelopmentSelectionV1);\nconst developmentSelectionKey = \"ignotum.id.development\";\n//#endregion\nexport { DevelopmentSelection, DevelopmentUsername, IdRequired, ProfileField, ProfileFields, ReturnPath, SessionOutcome, SessionRedirect, SessionRequest, SessionResponse, SessionState, User, UserId, developmentSelectionKey, idImagePath, idLimits, idViewKey, makeIdContext, sessionCallbackPath, sessionCookieName, sessionPath, sessionRequestsPath };\n\n//# sourceMappingURL=id.js.map"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { createElement } from "preact";
2
- //#region src/client/image.ts
2
+ //#region ../platform/dist/versions/1/browser/image.js
3
3
  /** Renders an imported image. */
4
4
  const Image = ({ src, alt, ...attributes }) => createElement("img", {
5
5
  ...attributes,
@@ -16,4 +16,4 @@ const createImageSource = (url) => {
16
16
  //#endregion
17
17
  export { createImageSource as n, Image as t };
18
18
 
19
- //# sourceMappingURL=image-Djtjy4Z8.js.map
19
+ //# sourceMappingURL=image-gofzZeCm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-gofzZeCm.js","names":[],"sources":["../../../platform/dist/versions/1/browser/image.js"],"sourcesContent":["import { createElement } from \"preact\";\n//#region src/versions/1/browser/image.ts\n/** Renders an imported image. */\nconst Image = ({ src, alt, ...attributes }) => createElement(\"img\", {\n\t...attributes,\n\tsrc: src.url,\n\talt\n});\n/** @internal Creates an image reference from a compiler-resolved URL. */\nconst createImageSource = (url) => {\n\treturn {\n\t\ttype: \"ImageSource\",\n\t\turl\n\t};\n};\n//#endregion\nexport { Image, createImageSource };\n\n//# sourceMappingURL=image.js.map"],"mappings":";;;AAGA,MAAM,SAAS,EAAE,KAAK,KAAK,GAAG,iBAAiB,cAAc,OAAO;CACnE,GAAG;CACH,KAAK,IAAI;CACT;AACD,CAAC;;AAED,MAAM,qBAAqB,QAAQ;CAClC,OAAO;EACN,MAAM;EACN;CACD;AACD"}
@@ -1,4 +1,4 @@
1
- import { _ as table, a as Id, b as PaginationPage, d as BoundValues, f as IdTargetsOf, g as UnresolvedReferencesTypeId, h as TableDefinition, i as EnvironmentType, n as Document, o as SchemaDefinitionContract, p as IndexDefinitions, t as DefinedEnv, u as emptyEnv, v as values, x as IdContext, y as PaginationOptions } from "./types-DeCCyqLU-BIm7rU-0.js";
1
+ import { _ as table, a as Id, b as PaginationPage, d as BoundValues, f as IdTargetsOf, g as UnresolvedReferencesTypeId, h as TableDefinition, i as EnvironmentType, n as Document, o as SchemaDefinitionContract, p as IndexDefinitions, t as DefinedEnv, u as emptyEnv, v as values, x as IdContext, y as PaginationOptions } from "./types-DeCCyqLU-CHx7KFtx.js";
2
2
  import { c as Result$1, g as FileValue, i as ErrorValue, n as DocumentNotFoundValue } from "./id-7an3nxTu-DZJSM5xh.js";
3
3
  import { Effect, Schema } from "effect";
4
4
  //#region ../contracts/dist/schema/index.d.ts
@@ -181,4 +181,4 @@ declare function bindSchema<const Definition extends Tables>(schema: DefinedSche
181
181
  declare function bindSchema<const Definition extends Tables, const Environment extends DefinedEnv>(schema: DefinedSchema<Definition>, environment: Environment): SchemaBindings<Definition, Environment>;
182
182
  //#endregion
183
183
  export { defineSchema as i, SchemaAuthoring as n, bindSchema as r, DefinedSchema as t };
184
- //# sourceMappingURL=index-D4seNHlX.d.ts.map
184
+ //# sourceMappingURL=index-Biaw5vdF.d.ts.map
@@ -1,2 +1,2 @@
1
- import { a as functionPathOf, i as createApi, n as FunctionReference, r as MutationInput, t as Api } from "../api-B4fwp5a2.js";
1
+ import { a as functionPathOf, i as createApi, n as FunctionReference, r as MutationInput, t as Api } from "../api-BnUKx9cj-D49Tf0rX.js";
2
2
  export { Api, FunctionReference, MutationInput, createApi, functionPathOf };
@@ -1,31 +1,2 @@
1
- import { t as FunctionAddress } from "../sync-DzUwA8W9.js";
2
- import { Predicate } from "effect";
3
- //#region src/internal/api.ts
4
- const FunctionReferenceTypeId = Symbol.for("ignotum/internal/api/FunctionReference");
5
- const functionPathOf = (reference) => reference[FunctionReferenceTypeId];
6
- const makeModuleReference = (moduleName) => {
7
- const references = /* @__PURE__ */ new Map();
8
- return new Proxy({}, { get: (_target, functionName) => {
9
- if (!Predicate.isString(functionName)) return;
10
- const existing = references.get(functionName);
11
- if (existing !== void 0) return existing;
12
- const reference = { [FunctionReferenceTypeId]: FunctionAddress.make(`api.${moduleName}.${functionName}`) };
13
- references.set(functionName, reference);
14
- return reference;
15
- } });
16
- };
17
- function createApi() {
18
- const modules = /* @__PURE__ */ new Map();
19
- return new Proxy({}, { get: (_target, moduleName) => {
20
- if (!Predicate.isString(moduleName)) return;
21
- const existing = modules.get(moduleName);
22
- if (existing !== void 0) return existing;
23
- const moduleReference = makeModuleReference(moduleName);
24
- modules.set(moduleName, moduleReference);
25
- return moduleReference;
26
- } });
27
- }
28
- //#endregion
1
+ import { n as functionPathOf, t as createApi } from "../api-C-tltz6s.js";
29
2
  export { createApi, functionPathOf };
30
-
31
- //# sourceMappingURL=api.js.map
@@ -1,2 +1,2 @@
1
- import { t as mountClient } from "../bootstrap-BTFScKAc.js";
1
+ import { D as mountClient } from "../bootstrap-DjTwGJao-DBx5zdFI.js";
2
2
  export { mountClient };
@@ -1,2 +1,2 @@
1
- import { t as mountClient } from "../bootstrap-BISQSn_O.js";
1
+ import { t as mountClient } from "../bootstrap-DlNIfH-r.js";
2
2
  export { mountClient };
@@ -1,2 +1,2 @@
1
- import { D as RegisteredClientModule, S as bindSchema, _ as RequiredUrlValue, b as UrlValue, d as DecodedFields, f as InputFields, g as PathFields, h as PageDefinition, j as createImageSource, l as createRouteReference, m as LayoutDefinition, p as InvalidRouteProps, t as mountClient, u as getRouteDefinition, v as RouteErrorProps, w as ClientRegistration, x as UrlValues, y as UrlFields } from "../bootstrap-BTFScKAc.js";
2
- export { type ClientRegistration, DecodedFields, InputFields, InvalidRouteProps, LayoutDefinition, PageDefinition, PathFields, type RegisteredClientModule, RequiredUrlValue, RouteErrorProps, UrlFields, UrlValue, UrlValues, bindSchema, createImageSource, createRouteReference, getRouteDefinition, mountClient };
1
+ import { C as UrlValues, D as mountClient, E as getRouteDefinition, S as UrlValue$1, T as createRouteReference, a as InvalidRouteProps, d as PathFields, h as RouteErrorProps, i as InputFields, j as createImageSource, m as RequiredUrlValue, n as ClientRegistration, o as LayoutDefinition$1, p as RegisteredClientModule, r as DecodedFields, u as PageDefinition, w as bindSchema$1, x as UrlFields } from "../bootstrap-DjTwGJao-DBx5zdFI.js";
2
+ export { type ClientRegistration, DecodedFields, InputFields, InvalidRouteProps, LayoutDefinition$1 as LayoutDefinition, PageDefinition, PathFields, type RegisteredClientModule, RequiredUrlValue, RouteErrorProps, UrlFields, UrlValue$1 as UrlValue, UrlValues, bindSchema$1 as bindSchema, createImageSource, createRouteReference, getRouteDefinition, mountClient };
@@ -1,8 +1,8 @@
1
- import { a as RouteDefinition, c as UrlValueDescriptor, i as LayoutMetadata, n as getRouteDefinition, o as StaticMetadata, s as UrlScalarDescriptor, t as createRouteReference } from "../routes-Ce8TVP-T.js";
2
- import { n as createImageSource } from "../image-Djtjy4Z8.js";
3
- import { t as mountClient } from "../bootstrap-BISQSn_O.js";
1
+ import { n as createImageSource } from "../image-gofzZeCm.js";
2
+ import { a as RouteDefinition, c as UrlValueDescriptor, i as LayoutMetadata, n as getRouteDefinition, o as StaticMetadata, s as UrlScalarDescriptor, t as createRouteReference } from "../routes-DnU39R7c.js";
3
+ import { t as mountClient } from "../bootstrap-DlNIfH-r.js";
4
4
  import { Schema } from "effect";
5
- //#region src/internal/client.ts
5
+ //#region ../platform/dist/versions/1/browser/internal/client.js
6
6
  const validateValue = Schema.decodeUnknownSync(UrlValueDescriptor);
7
7
  const required = (descriptor) => {
8
8
  const checked = validateValue(descriptor);