@jskit-ai/agent-docs 0.1.257 → 0.1.259

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 (230) hide show
  1. package/guide/agent/app-extras/assistant-conversation.md +88 -35
  2. package/guide/agent/app-extras/assistant.md +28 -28
  3. package/guide/agent/app-setup/authentication.md +36 -17
  4. package/guide/agent/app-setup/database-layer.md +116 -17
  5. package/guide/agent/app-setup/existing-application-migration.md +29 -25
  6. package/guide/agent/app-setup/multi-homing.md +94 -48
  7. package/guide/agent/app-setup/run-an-accounts-hub.md +6 -4
  8. package/guide/agent/framework/client-features.md +496 -0
  9. package/guide/agent/framework/crud-operations.md +5 -5
  10. package/guide/agent/framework/translation.md +4 -3
  11. package/guide/agent/framework/typed-features.md +1104 -0
  12. package/guide/agent/framework/ui-operations.md +2 -2
  13. package/guide/agent/index.md +6 -1
  14. package/package.json +1 -1
  15. package/patterns/feature-package/PATTERN.md +104 -10
  16. package/patterns/feature-package/example/booking-engine/package.json +9 -4
  17. package/patterns/feature-package/example/booking-engine/src/server/BookingEngineFeature.js +24 -0
  18. package/patterns/feature-package/example/booking-engine/src/server/bookingAvailability.js +10 -0
  19. package/patterns/feature-package/example/booking-engine/src/server/bookingEngine.js +29 -0
  20. package/patterns/feature-package/example/booking-engine/src/server/bookingEngineActions.js +26 -0
  21. package/patterns/feature-package/example/booking-engine/src/server/inputSchemas.js +1 -2
  22. package/patterns/feature-package/example/booking-engine/src/server/types.js +12 -0
  23. package/patterns/feature-package/example/variations/AvailabilityEngineFeature.js +19 -0
  24. package/patterns/feature-package/example/variations/InvoiceRollupFeature.js +23 -0
  25. package/patterns/feature-package/example/variations/availabilityEngineActions.js +26 -0
  26. package/patterns/feature-package/example/variations/customKnexRepository.js +32 -26
  27. package/patterns/feature-package/example/variations/invoiceRollupActions.js +26 -0
  28. package/patterns/feature-package/example/variations/orchestratorService.js +24 -19
  29. package/patterns/feature-package/example/variations/types.js +7 -0
  30. package/patterns/minimal-foundation/PATTERN.md +30 -1
  31. package/patterns/minimal-foundation/example/AGENTS.md +14 -0
  32. package/patterns/minimal-foundation/example/bin/develop.js +10 -5
  33. package/patterns/minimal-foundation/example/eslint.config.mjs +21 -2
  34. package/patterns/minimal-foundation/example/package.json +5 -4
  35. package/patterns/minimal-foundation/example/playwright.config.mjs +1 -1
  36. package/patterns/minimal-foundation/example/server/lib/envFile.js +19 -0
  37. package/patterns/minimal-foundation/example/server/lib/loggerOptions.js +15 -0
  38. package/patterns/minimal-foundation/example/server/lib/runtimeEnv.js +17 -17
  39. package/patterns/minimal-foundation/example/server.js +32 -29
  40. package/patterns/minimal-foundation/example/tests/server/smoke.test.js +2 -1
  41. package/patterns/shell-foundation/PATTERN.md +29 -0
  42. package/patterns/shell-foundation/example/AGENTS.md +14 -0
  43. package/patterns/shell-foundation/example/bin/develop.js +10 -5
  44. package/patterns/shell-foundation/example/eslint.config.mjs +21 -2
  45. package/patterns/shell-foundation/example/package.json +6 -5
  46. package/patterns/shell-foundation/example/packages/main/package.json +1 -1
  47. package/patterns/shell-foundation/example/packages/main/src/client/providers/MainClientProvider.js +1 -0
  48. package/patterns/shell-foundation/example/playwright.config.mjs +1 -1
  49. package/patterns/shell-foundation/example/server/lib/envFile.js +19 -0
  50. package/patterns/shell-foundation/example/server/lib/loggerOptions.js +15 -0
  51. package/patterns/shell-foundation/example/server/lib/runtimeEnv.js +17 -17
  52. package/patterns/shell-foundation/example/server.js +32 -29
  53. package/patterns/shell-foundation/example/tests/server/smoke.test.js +2 -1
  54. package/reference/autogen/KERNEL_MAP.md +14 -8
  55. package/reference/autogen/PATTERN_INDEX.md +37 -37
  56. package/reference/autogen/README.md +2 -0
  57. package/reference/autogen/packages/agent-docs.md +70 -26
  58. package/reference/autogen/packages/agent-runtime.md +129 -0
  59. package/reference/autogen/packages/agent.md +149 -0
  60. package/reference/autogen/packages/architecture-inspector.md +97 -44
  61. package/reference/autogen/packages/assistant-core.md +786 -292
  62. package/reference/autogen/packages/assistant-runtime.md +182 -57
  63. package/reference/autogen/packages/assistant-voice-sherpa.md +4 -0
  64. package/reference/autogen/packages/assistant-voice.md +54 -8
  65. package/reference/autogen/packages/auth-core.md +44 -13
  66. package/reference/autogen/packages/auth-provider-local-core.md +86 -34
  67. package/reference/autogen/packages/auth-provider-local-db-core.md +1 -2
  68. package/reference/autogen/packages/auth-provider-oidc-core.md +10 -4
  69. package/reference/autogen/packages/auth-provider-supabase-core.md +52 -66
  70. package/reference/autogen/packages/auth-web.md +19 -11
  71. package/reference/autogen/packages/connectors-catalog.md +71 -43
  72. package/reference/autogen/packages/connectors-core.md +42 -4
  73. package/reference/autogen/packages/console-core.md +27 -14
  74. package/reference/autogen/packages/crud-core.md +178 -170
  75. package/reference/autogen/packages/database-runtime-mysql.md +0 -2
  76. package/reference/autogen/packages/database-runtime-postgres.md +0 -2
  77. package/reference/autogen/packages/database-runtime.md +39 -10
  78. package/reference/autogen/packages/http-runtime.md +79 -57
  79. package/reference/autogen/packages/json-rest-api-core.md +11 -8
  80. package/reference/autogen/packages/kernel.md +144 -83
  81. package/reference/autogen/packages/oidc-issuer-core.md +49 -20
  82. package/reference/autogen/packages/payments-core.md +20 -3
  83. package/reference/autogen/packages/realtime.md +47 -22
  84. package/reference/autogen/packages/resource-core.md +1 -1
  85. package/reference/autogen/packages/resource-crud-core.md +64 -26
  86. package/reference/autogen/packages/rewarded-core.md +47 -36
  87. package/reference/autogen/packages/shell-web.md +7 -10
  88. package/reference/autogen/packages/storage-runtime.md +6 -2
  89. package/reference/autogen/packages/uploads-runtime.md +10 -2
  90. package/reference/autogen/packages/users-core.md +73 -71
  91. package/reference/autogen/packages/workspaces-core.md +121 -106
  92. package/reference/autogen/packages/workspaces-web.md +1 -2
  93. package/reference/autogen/tooling/config-eslint.md +302 -0
  94. package/reference/autogen/tooling/jskit-catalog.md +28 -18
  95. package/reference/autogen/tooling/jskit-release.md +35 -20
  96. package/reference/autogen/tooling/testUtils.md +3 -1
  97. package/skills/jskit/SKILL.md +9 -8
  98. package/skills/jskit/references/app-operations.md +1 -1
  99. package/skills/jskit/references/client-features.md +491 -0
  100. package/skills/jskit/references/crud-form-actions.md +1 -1
  101. package/skills/jskit/references/crud-operations.md +7 -7
  102. package/skills/jskit/references/existing-application-migration.md +31 -27
  103. package/skills/jskit/references/heuristics/INDEX.md +5 -1
  104. package/skills/jskit/references/heuristics/child-cruds.md +1 -1
  105. package/skills/jskit/references/heuristics/client-features.md +66 -0
  106. package/skills/jskit/references/heuristics/client-requests.md +1 -1
  107. package/skills/jskit/references/heuristics/crud-authoring.md +12 -2
  108. package/skills/jskit/references/heuristics/crud-links.md +1 -1
  109. package/skills/jskit/references/heuristics/crud-repository-mapping.md +3 -3
  110. package/skills/jskit/references/heuristics/filters.md +1 -1
  111. package/skills/jskit/references/heuristics/live-actions.md +1 -1
  112. package/skills/jskit/references/heuristics/page-redirects.md +1 -1
  113. package/skills/jskit/references/heuristics/page-scaffolding.md +1 -1
  114. package/skills/jskit/references/heuristics/placements.md +1 -1
  115. package/skills/jskit/references/heuristics/row-policies.md +1 -1
  116. package/skills/jskit/references/heuristics/server-search.md +1 -1
  117. package/skills/jskit/references/heuristics/surfaces.md +1 -1
  118. package/skills/jskit/references/heuristics/typed-features.md +100 -0
  119. package/skills/jskit/references/heuristics/ui-contract.md +1 -1
  120. package/skills/jskit/references/heuristics/ui-testing.md +4 -4
  121. package/skills/jskit/references/material-3.md +2 -2
  122. package/skills/jskit/references/multi-homing.md +96 -50
  123. package/skills/jskit/references/pattern-index.md +37 -37
  124. package/skills/jskit/references/patterns/app/minimal-foundation/PATTERN.md +30 -1
  125. package/skills/jskit/references/patterns/app/minimal-foundation/example/AGENTS.md +14 -0
  126. package/skills/jskit/references/patterns/app/minimal-foundation/example/bin/develop.js +10 -5
  127. package/skills/jskit/references/patterns/app/minimal-foundation/example/eslint.config.mjs +21 -2
  128. package/skills/jskit/references/patterns/app/minimal-foundation/example/package.json +5 -4
  129. package/skills/jskit/references/patterns/app/minimal-foundation/example/playwright.config.mjs +1 -1
  130. package/skills/jskit/references/patterns/app/minimal-foundation/example/server/lib/envFile.js +19 -0
  131. package/skills/jskit/references/patterns/app/minimal-foundation/example/server/lib/loggerOptions.js +15 -0
  132. package/skills/jskit/references/patterns/app/minimal-foundation/example/server/lib/runtimeEnv.js +17 -17
  133. package/skills/jskit/references/patterns/app/minimal-foundation/example/server.js +32 -29
  134. package/skills/jskit/references/patterns/app/minimal-foundation/example/tests/server/smoke.test.js +2 -1
  135. package/skills/jskit/references/patterns/app/shell-foundation/PATTERN.md +29 -0
  136. package/skills/jskit/references/patterns/app/shell-foundation/example/AGENTS.md +14 -0
  137. package/skills/jskit/references/patterns/app/shell-foundation/example/bin/develop.js +10 -5
  138. package/skills/jskit/references/patterns/app/shell-foundation/example/eslint.config.mjs +21 -2
  139. package/skills/jskit/references/patterns/app/shell-foundation/example/package.json +6 -5
  140. package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/package.json +1 -1
  141. package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/src/client/providers/MainClientProvider.js +1 -0
  142. package/skills/jskit/references/patterns/app/shell-foundation/example/playwright.config.mjs +1 -1
  143. package/skills/jskit/references/patterns/app/shell-foundation/example/server/lib/envFile.js +19 -0
  144. package/skills/jskit/references/patterns/app/shell-foundation/example/server/lib/loggerOptions.js +15 -0
  145. package/skills/jskit/references/patterns/app/shell-foundation/example/server/lib/runtimeEnv.js +17 -17
  146. package/skills/jskit/references/patterns/app/shell-foundation/example/server.js +32 -29
  147. package/skills/jskit/references/patterns/app/shell-foundation/example/tests/server/smoke.test.js +2 -1
  148. package/skills/jskit/references/patterns/assistant/assistant-surface/example/src/ApplicationAiFeature.js +4 -2
  149. package/skills/jskit/references/patterns/auth/accounts-hub/PATTERN.md +2 -1
  150. package/skills/jskit/references/patterns/auth/accounts-hub/example/package.json +2 -2
  151. package/skills/jskit/references/patterns/auth/accounts-hub/example/server/hubPaths.js +9 -3
  152. package/skills/jskit/references/patterns/auth/auth-surface/PATTERN.md +25 -12
  153. package/skills/jskit/references/patterns/auth/auth-surface/example/tools/preview-identity +7 -1
  154. package/skills/jskit/references/patterns/auth/oidc-sign-in/example/package.json +2 -2
  155. package/skills/jskit/references/patterns/auth/supabase-auth/example/package.json +1 -1
  156. package/skills/jskit/references/patterns/connectors/ai-connections/PATTERN.md +16 -1
  157. package/skills/jskit/references/patterns/connectors/ai-connections/example/ai-model.js +12 -3
  158. package/skills/jskit/references/patterns/connectors/ai-connections/example/perplexity-answer.js +15 -4
  159. package/skills/jskit/references/patterns/connectors/api-key-connection/PATTERN.md +9 -1
  160. package/skills/jskit/references/patterns/connectors/api-key-connection/example/connections.js +5 -2
  161. package/skills/jskit/references/patterns/connectors/aws-storage-queries/PATTERN.md +13 -3
  162. package/skills/jskit/references/patterns/connectors/aws-storage-queries/example/s3-transfer.js +14 -3
  163. package/skills/jskit/references/patterns/connectors/calendar-cli/PATTERN.md +8 -0
  164. package/skills/jskit/references/patterns/connectors/calendar-cli/example/knexfile.js +1 -1
  165. package/skills/jskit/references/patterns/connectors/calendar-cli/example/package.json +4 -4
  166. package/skills/jskit/references/patterns/connectors/calendar-cli/example/scripts/calendar.js +8 -4
  167. package/skills/jskit/references/patterns/connectors/event-delivery/PATTERN.md +1 -1
  168. package/skills/jskit/references/patterns/connectors/firebase-messaging/PATTERN.md +10 -0
  169. package/skills/jskit/references/patterns/connectors/firebase-messaging/example/server/notifications.js +8 -0
  170. package/skills/jskit/references/patterns/connectors/google-ads-search/PATTERN.md +18 -7
  171. package/skills/jskit/references/patterns/connectors/google-ads-search/example/ads-setup.js +13 -5
  172. package/skills/jskit/references/patterns/connectors/oauth-connection/PATTERN.md +1 -1
  173. package/skills/jskit/references/patterns/connectors/paddle-catalogue/PATTERN.md +11 -2
  174. package/skills/jskit/references/patterns/connectors/paddle-catalogue/example/create-products.js +5 -2
  175. package/skills/jskit/references/patterns/connectors/public-image/PATTERN.md +10 -1
  176. package/skills/jskit/references/patterns/connectors/public-image/example/logo-url.js +4 -1
  177. package/skills/jskit/references/patterns/connectors/redshift-queries/PATTERN.md +1 -1
  178. package/skills/jskit/references/patterns/connectors/source-scanning/PATTERN.md +13 -2
  179. package/skills/jskit/references/patterns/connectors/source-scanning/example/source-scanner.js +9 -0
  180. package/skills/jskit/references/patterns/crud/json-api-resource-package/PATTERN.md +102 -23
  181. package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/package.json +3 -2
  182. package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/src/server/types.js +5 -0
  183. package/skills/jskit/references/patterns/crud/resource-contract/PATTERN.md +54 -1
  184. package/skills/jskit/references/patterns/database/mysql-application/PATTERN.md +16 -5
  185. package/skills/jskit/references/patterns/database/mysql-application/example/knexfile.js +2 -2
  186. package/skills/jskit/references/patterns/database/mysql-application/example/package.json +1 -1
  187. package/skills/jskit/references/patterns/database/mysql-application/example/scripts/prepare-database.js +1 -1
  188. package/skills/jskit/references/patterns/database/postgres-application/PATTERN.md +16 -5
  189. package/skills/jskit/references/patterns/database/postgres-application/example/knexfile.js +2 -2
  190. package/skills/jskit/references/patterns/database/postgres-application/example/package.json +1 -1
  191. package/skills/jskit/references/patterns/database/postgres-application/example/scripts/prepare-database.js +1 -1
  192. package/skills/jskit/references/patterns/realtime/realtime-application/example/package.json +2 -2
  193. package/skills/jskit/references/patterns/rewards/google-rewarded/example/GoogleRewardedDeliveryProvider.js +1 -1
  194. package/skills/jskit/references/patterns/rewards/google-rewarded/example/googlePublisherTag.js +5 -11
  195. package/skills/jskit/references/patterns/server/feature-package/PATTERN.md +104 -10
  196. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/package.json +9 -4
  197. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/BookingEngineFeature.js +24 -0
  198. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/bookingAvailability.js +10 -0
  199. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/bookingEngine.js +29 -0
  200. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/bookingEngineActions.js +26 -0
  201. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/inputSchemas.js +1 -2
  202. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/types.js +12 -0
  203. package/skills/jskit/references/patterns/server/feature-package/example/variations/AvailabilityEngineFeature.js +19 -0
  204. package/skills/jskit/references/patterns/server/feature-package/example/variations/InvoiceRollupFeature.js +23 -0
  205. package/skills/jskit/references/patterns/server/feature-package/example/variations/availabilityEngineActions.js +26 -0
  206. package/skills/jskit/references/patterns/server/feature-package/example/variations/customKnexRepository.js +32 -26
  207. package/skills/jskit/references/patterns/server/feature-package/example/variations/invoiceRollupActions.js +26 -0
  208. package/skills/jskit/references/patterns/server/feature-package/example/variations/orchestratorService.js +24 -19
  209. package/skills/jskit/references/patterns/server/feature-package/example/variations/types.js +7 -0
  210. package/skills/jskit/references/patterns/users/user-administration-server/PATTERN.md +16 -1
  211. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/package.json +3 -2
  212. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/src/server/types.js +5 -0
  213. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/package.json +4 -3
  214. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/src/server/UsersWorkspaceFeature.js +2 -9
  215. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/src/server/types.js +5 -0
  216. package/skills/jskit/references/patterns/workspaces/workspace-server/PATTERN.md +42 -17
  217. package/skills/jskit/references/patterns/workspaces/workspace-server/example/packages/main/src/server/WorkspaceInvitationsFeature.js +27 -0
  218. package/skills/jskit/references/patterns/workspaces/workspace-server/example/packages/main/src/server/email/workspaceInviteEmail.js +11 -10
  219. package/skills/jskit/references/patterns/workspaces/workspace-server/example/packages/main/src/server/email/workspaceInviteMailer.js +27 -0
  220. package/skills/jskit/references/translation.md +5 -4
  221. package/skills/jskit/references/typed-features.md +1099 -0
  222. package/skills/jskit/references/ui-operations.md +3 -3
  223. package/patterns/feature-package/example/booking-engine/src/server/BookingEngineProvider.js +0 -33
  224. package/patterns/feature-package/example/booking-engine/src/server/actions.js +0 -24
  225. package/patterns/feature-package/example/variations/AvailabilityEngineProvider.js +0 -31
  226. package/patterns/feature-package/example/variations/InvoiceRollupProvider.js +0 -36
  227. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/BookingEngineProvider.js +0 -33
  228. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/actions.js +0 -24
  229. package/skills/jskit/references/patterns/server/feature-package/example/variations/AvailabilityEngineProvider.js +0 -31
  230. package/skills/jskit/references/patterns/server/feature-package/example/variations/InvoiceRollupProvider.js +0 -36
@@ -20,9 +20,9 @@ Exports
20
20
  - `createTransientRetryHttpClient`
21
21
  - `normalizeFieldErrors`
22
22
  - `resolveFieldErrors`
23
- - `createValidationFailure`
24
- - `createHttpError`
25
- - `createNetworkError`
23
+ - `buildValidationFailure`
24
+ - `buildHttpError`
25
+ - `buildNetworkError`
26
26
  - `isGenericHttpErrorMessage`
27
27
  - `DEFAULT_RETRYABLE_CSRF_ERROR_CODES`
28
28
  - `shouldRetryForCsrfFailure`
@@ -42,28 +42,33 @@ Local functions
42
42
  Exports
43
43
  - `normalizeFieldErrors`
44
44
  - `resolveFieldErrors`
45
- - `createValidationFailure({ error = "Validation failed.", code = "validation_failed", fieldErrors = {}, fieldErrorCodes = null } = {})`
45
+ - `buildValidationFailure({ error = "Validation failed.", code = "validation_failed", fieldErrors = {}, fieldErrorCodes = null } = {})`
46
46
 
47
47
  ### `src/shared/clientRuntime/client.js`
48
48
  Exports
49
- - `createHttpClient(options = {})`
49
+ - `createHttpClient({ fetchImpl = fetchWithGlobalFetch, resolveRequestUrl: resolveConfiguredRequestUrl = keepRequestUrl, hooks = {}, unsafeMethods: configuredUnsafeMethods = DEFAULT_UNSAFE_METHODS, csrf: { enabled: csrfEnabledByDefault = true, sessionPath: csrfSessionPath = "/api/session", headerName: csrfHeaderName = "csrf-token", tokenField: csrfTokenField = "csrfToken", retryableErrorCodes: csrfRetryableErrorCodes } = {}, credentials = "same-origin", readTimeoutMs = DEFAULT_READ_TIMEOUT_MS } = {})`
50
+ - `type HttpClientHooks`
50
51
  Local functions
51
52
  - `requestSignalWithDeadline(signal, timeoutMs)`
52
53
  - `normalizeMethod(method)`
53
- - `resolveUnsafeMethods(value)`
54
- - `resolveFetch()`
54
+ - `resolveUnsafeMethods(methods)`
55
+ - `fetchWithGlobalFetch(url, config)`
56
+ - `keepRequestUrl(url)`
57
+ - `keepHeaders()`
58
+ - `ignoreRequestOutcome()`
59
+ - `useCsrfRetryRule()`
60
+ - `useContentTypeForStream()`
61
+ - `ignoreStreamEvent()`
62
+ - `ignoreMalformedLine()`
55
63
  - `normalizeResolvedRequestUrl(value, fallback = "")`
56
64
  - `isObjectBody(value)`
57
65
  - `isQueryValuePresent(value)`
58
66
  - `appendRequestQueryToUrl(url, query = null, transport = null)`
59
- - `parseJsonSafely(response, signal)`
60
- - `emitNdjsonLine(line, handlers)`
61
- - `readNdjsonStream(response, handlers = {})`
62
67
 
63
68
  ### `src/shared/clientRuntime/errors.js`
64
69
  Exports
65
- - `createHttpError(response, data = {})`
66
- - `createNetworkError(cause)`
70
+ - `buildHttpError(response, data = {})`
71
+ - `buildNetworkError(cause)`
67
72
  - `isGenericHttpErrorMessage(error)`
68
73
  Local functions
69
74
  - `standardErrorMessage(payload = {})`
@@ -81,27 +86,36 @@ Exports
81
86
  - `JSON_API_CONTENT_TYPE`
82
87
  - `isJsonApiResourceTransport(transport = null)`
83
88
  - `normalizeJsonApiClientTransport(transport = null)`
84
- - `encodeJsonApiResourceRequestBody(body, transport = null)`
85
- - `encodeJsonApiResourceQuery(query, transport = null)`
89
+ - `encodeJsonApiResourceRequestBody(body, normalizedTransport)`
90
+ - `encodeJsonApiResourceQuery(query, normalizedTransport)`
86
91
  - `decodeJsonApiResourceResponse(payload, transport = null)`
87
- - `decodeJsonApiErrorFieldErrors(payload = {})`
88
- - `createJsonApiClientErrorPayload(payload = {})`
92
+ - `decodeJsonApiResourceDocument(payload, normalizedTransport)`
93
+ - `buildJsonApiClientErrorPayload(payload = {})`
94
+ - `type JsonApiClientTransport`
89
95
  Local functions
90
96
  - `normalizeTransportKind(transport = null)`
91
97
  - `defaultEncodeAttributes(body = {})`
92
- - `createIncludedResourceIndex(document = {})`
93
- - `simplifyRelationshipResource(linkage = {}, options = {})`
94
- - `simplifyResourceObject(resource = {}, options = {})`
95
- - `assertPrimaryDataType(resource = {}, expectedType = "")`
98
+ - `createIncludedResourceIndex(document)`
99
+ - `simplifyRelationshipResource(linkage, options)`
100
+ - `simplifyResourceObject(resource, options)`
101
+ - `assertPrimaryDataType(resource, expectedType = "")`
96
102
  - `resolveCollectionPageMeta(document = {})`
97
103
  - `decodeJsonApiErrorFields(payload = {})`
98
104
 
105
+ ### `src/shared/clientRuntime/responseBody.js`
106
+ Exports
107
+ - `emitNdjsonLine(line, handlers)`
108
+ - `parseJsonSafely(response, signal)`
109
+ - `readNdjsonStream(response, handlers)`
110
+ - `readNdjsonText(response, handlers)`
111
+ - `type NdjsonHandlers`
112
+
99
113
  ### `src/shared/clientRuntime/retry.js`
100
114
  Exports
101
115
  - `DEFAULT_RETRYABLE_CSRF_ERROR_CODES`
102
116
  - `shouldRetryForCsrfFailure({ response, method, state, data, unsafeMethods, retryableErrorCodes = DEFAULT_RETRYABLE_CSRF_ERROR_CODES })`
103
117
  Local functions
104
- - `toUpperStringSet(values, fallback = [])`
118
+ - `toUpperStringSet(values)`
105
119
 
106
120
  ### `src/shared/index.js`
107
121
  Exports
@@ -114,7 +128,7 @@ Exports
114
128
  - `apiValidationErrorTransportSchema`
115
129
  - `fastifyDefaultErrorTransportSchema`
116
130
  - `STANDARD_ERROR_STATUS_CODES`
117
- - `createTransportResponseSchema`
131
+ - `buildTransportResponseSchema`
118
132
  - `withStandardErrorResponses`
119
133
  - `validateOperationSection`
120
134
  - `JSON_API_CONTENT_TYPE`
@@ -127,6 +141,7 @@ Exports
127
141
  - `isJsonApiErrorDocument`
128
142
  - `isJsonApiResourceDocument`
129
143
  - `isJsonContentType`
144
+ - `jsonApiNextCursor`
130
145
  - `normalizeJsonApiDocument`
131
146
  - `normalizeJsonApiResourceObject`
132
147
  - `resolveJsonApiTransportTypes`
@@ -138,7 +153,9 @@ Exports
138
153
  - `isJsonApiDataResult`
139
154
  - `isJsonApiDocumentResult`
140
155
  - `isJsonApiMetaResult`
141
- - `unwrapJsonApiResult`
156
+ - `jsonApiResultValue`
157
+ - `simplifyJsonApiResult`
158
+ - `jsonApiResultOrNull`
142
159
  - `JSON_API_QUERY_PAGE_CURSOR_KEY`
143
160
  - `JSON_API_QUERY_PAGE_LIMIT_KEY`
144
161
  - `JSON_API_QUERY_INCLUDE_KEY`
@@ -147,19 +164,18 @@ Exports
147
164
  - `mapTransportQueryKeyToPlainKey`
148
165
  - `encodeJsonApiResourceQueryObject`
149
166
  - `decodeJsonApiResourceQueryObject`
150
- - `createJsonApiResourceQueryTransportSchema`
167
+ - `buildJsonApiResourceQueryTransportSchema`
151
168
  - `decodeJsonApiResourceResponse`
152
169
  - `JSON_API_ERROR_DOCUMENT_SCHEMA`
153
- - `createJsonApiResourceObjectTransportSchema`
154
- - `createJsonApiResourceRequestBodyTransportSchema`
155
- - `createJsonApiResourceSuccessTransportSchema`
170
+ - `buildJsonApiResourceObjectTransportSchema`
171
+ - `buildJsonApiResourceRequestBodyTransportSchema`
172
+ - `buildJsonApiResourceSuccessTransportSchema`
156
173
  - `withJsonApiErrorResponses`
157
174
  - `createJsonApiResourceRouteTransport`
158
175
  - `createJsonApiResourceRouteContract`
159
176
 
160
177
  ### `src/shared/support/fieldErrors.js`
161
178
  Exports
162
- - `isRecord`
163
179
  - `normalizeFieldErrors(value)`
164
180
  - `resolveFieldErrors(value = null)`
165
181
 
@@ -179,7 +195,7 @@ Exports
179
195
  - `apiValidationErrorTransportSchema`
180
196
  - `fastifyDefaultErrorTransportSchema`
181
197
  - `STANDARD_ERROR_STATUS_CODES`
182
- - `createTransportResponseSchema(schema = {})`
198
+ - `buildTransportResponseSchema(schema = {})`
183
199
  - `withStandardErrorResponses(successResponses, { includeValidation400 = false } = {})`
184
200
 
185
201
  ### `src/shared/validators/jsonApiQueryTransport.js`
@@ -192,15 +208,31 @@ Exports
192
208
  - `mapTransportQueryKeyToPlainKey(key = "", { responseType = "" } = {})`
193
209
  - `encodeJsonApiResourceQueryObject(query = {}, { responseType = "" } = {})`
194
210
  - `decodeJsonApiResourceQueryObject(query = {}, { responseType = "" } = {})`
195
- - `createJsonApiResourceQueryTransportSchema({ query, responseType = "" } = {})`
211
+ - `buildJsonApiResourceQueryTransportSchema({ query, responseType = "" } = {})`
196
212
  Local functions
197
- - `normalizeQueryKey(key = "")`
198
213
  - `buildFieldsTransportKey(responseType = "")`
199
214
  - `parseFieldsTransportType(key = "")`
200
215
  - `addJsonApiFieldset(fieldsets, type = "", value = [])`
201
- - `createJsonApiFieldsTransportValueSchema()`
216
+ - `buildJsonApiFieldsTransportValueSchema()`
202
217
  - `normalizeTransportQueryScalar(value)`
203
218
 
219
+ ### `src/shared/validators/jsonApiResourceSchemas.js`
220
+ Exports
221
+ - `JSON_API_ERROR_DOCUMENT_SCHEMA`
222
+ - `resolveRouteTypes(value = {})`
223
+ - `buildJsonApiResourceObjectTransportSchema({ type = "", attributes, requireId = true, includeLinks = false, includeMeta = false, // readable-check: allow dependency-default - data: a list of attribute keys, not a collaborator excludeAttributeKeys = [], // readable-check: allow dependency-default - data: a list of relationship entries, not a collaborator relationshipEntries = [], relationshipMembersRequired = false, allowSparseFields = false })`
224
+ - `buildJsonApiResourceRequestBodyTransportSchema({ type = "", attributes, requireId = false, // readable-check: allow dependency-default - data: a list of attribute keys, not a collaborator excludeAttributeKeys = [], // readable-check: allow dependency-default - data: a list of relationship entries, not a collaborator relationshipEntries = [] })`
225
+ - `buildJsonApiResourceSuccessTransportSchema({ type = "", attributes, kind = "record", includeLinks = false, includeMeta = false, includeIncluded = false, allowSparseFields = false, // readable-check: allow dependency-default - data: a list of attribute keys, not a collaborator excludeAttributeKeys = [], // readable-check: allow dependency-default - data: a list of relationship entries, not a collaborator relationshipEntries = [] })`
226
+ - `withJsonApiErrorResponses(successResponses, { includeValidation400 = false } = {})`
227
+ Local functions
228
+ - `resolveRouteType(type = "")`
229
+ - `resolveEmbeddedAttributesTransportSchema(definition, { context = "JSON:API resource", defaultMode = "replace", removeId = false, removeKeys = [], allowSparseFields = false } = {})`
230
+ - `normalizeRelationshipSchemaEntries(entries = [])`
231
+ - `buildJsonApiRelationshipDataSchema(relationshipType = "", { many = false, nullable = false } = {})`
232
+ - `buildJsonApiRelationshipsTransportSchema(entries = [], { includeRequired = false } = {})`
233
+ - `buildResourceObjectTransportSchema({ normalizedType, attributes, requireId, includeLinks, includeMeta, excludeAttributeKeys, relationshipEntries, relationshipMembersRequired, allowSparseFields })`
234
+ - `buildJsonApiMetaSuccessTransportSchema({ meta } = {})`
235
+
204
236
  ### `src/shared/validators/jsonApiResult.js`
205
237
  Exports
206
238
  - `JSON_API_RESULT_MARKER`
@@ -211,7 +243,9 @@ Exports
211
243
  - `isJsonApiDataResult(value)`
212
244
  - `isJsonApiDocumentResult(value)`
213
245
  - `isJsonApiMetaResult(value)`
214
- - `unwrapJsonApiResult(value)`
246
+ - `jsonApiResultValue(value)`
247
+ - `simplifyJsonApiResult(result)`
248
+ - `jsonApiResultOrNull(value)`
215
249
  Local functions
216
250
  - `normalizeJsonApiResultKind(kind = "")`
217
251
  - `createJsonApiResult(kind, value)`
@@ -219,28 +253,19 @@ Local functions
219
253
 
220
254
  ### `src/shared/validators/jsonApiRouteTransport.js`
221
255
  Exports
222
- - `JSON_API_ERROR_DOCUMENT_SCHEMA`
223
- - `createJsonApiResourceObjectTransportSchema({ type = "", attributes, requireId = true, includeLinks = false, includeMeta = false, excludeAttributeKeys = [], relationshipEntries = [], relationshipMembersRequired = false, allowSparseFields = false } = {})`
224
- - `createJsonApiResourceRequestBodyTransportSchema({ type = "", attributes, requireId = false, excludeAttributeKeys = [], relationshipEntries = [] } = {})`
225
- - `createJsonApiResourceSuccessTransportSchema({ type = "", attributes, kind = "record", includeLinks = false, includeMeta = false, includeIncluded = false, allowSparseFields = false, excludeAttributeKeys = [], relationshipEntries = [] } = {})`
226
- - `withJsonApiErrorResponses(successResponses, { includeValidation400 = false } = {})`
227
- - `createJsonApiResourceRouteTransport({ type = "", requestType = "", responseType = "", query = null, allowBodyId = false, successKind = "record", pointerPrefix = "/data/attributes", mapRequestRelationships = null, getRecordType = null, getRecordId = null, getRecordAttributes = null, getRecordRelationships = null, getRecordLinks = null, getRecordMeta = null, getIncluded = null, getDocumentLinks = null, getDocumentMeta = null, getCollectionItems = null } = {})`
228
- - `createJsonApiResourceRouteContract({ type = "", requestType = "", responseType = "", body = null, query = null, output = null, outputKind = "record", successStatus = 200, includeValidation400 = false, allowSparseFields = false, allowBodyId = false, pointerPrefix = "/data/attributes", bodyAttributeExcludeKeys = [], outputAttributeExcludeKeys = [], bodyRelationshipEntries = [], outputRelationshipEntries = [], getRecordType = null, getRecordId = null, getRecordAttributes = null, getRecordRelationships = null, getRecordLinks = null, getRecordMeta = null, getIncluded = null, getDocumentLinks = null, getDocumentMeta = null, getCollectionItems = null, mapRequestRelationships = null } = {})`
256
+ - `createJsonApiResourceRouteTransport({ type = "", requestType = "", responseType = "", query, allowBodyId = false, successKind = "record", pointerPrefix = "/data/attributes", mapRequestRelationships, getRecordType, getRecordId, getRecordAttributes, getRecordRelationships, getRecordLinks, getRecordMeta, getIncluded, getDocumentLinks, getDocumentMeta, getCollectionItems })`
257
+ - `createJsonApiResourceRouteContract({ type = "", requestType = "", responseType = "", body, query, output, outputKind = "record", successStatus = 200, includeValidation400 = false, allowSparseFields = false, allowBodyId = false, pointerPrefix = "/data/attributes", // readable-check: allow dependency-default - data: a list of attribute keys, not a collaborator bodyAttributeExcludeKeys = [], // readable-check: allow dependency-default - data: a list of attribute keys, not a collaborator outputAttributeExcludeKeys = [], // readable-check: allow dependency-default - data: a list of relationship entries, not a collaborator bodyRelationshipEntries = [], // readable-check: allow dependency-default - data: a list of relationship entries, not a collaborator outputRelationshipEntries = [], getRecordType, getRecordId, getRecordAttributes, getRecordRelationships, getRecordLinks, getRecordMeta, getIncluded, getDocumentLinks, getDocumentMeta, getCollectionItems, mapRequestRelationships })`
258
+ - `type JsonApiRouteHook`
229
259
  Local functions
230
- - `createJsonApiTransportError(statusCode, message, code, params = {})`
231
- - `resolveRouteType(type = "")`
232
- - `resolveRouteTypes(value = {})`
233
- - `resolveEmbeddedAttributesTransportSchema(definition, { context = "JSON:API resource", defaultMode = "replace", removeId = false, removeKeys = [], allowSparseFields = false } = {})`
234
- - `normalizeRelationshipSchemaEntries(entries = [])`
235
- - `createJsonApiRelationshipDataSchema(relationshipType = "", { many = false, nullable = false } = {})`
236
- - `createJsonApiRelationshipsTransportSchema(entries = [], { includeRequired = false } = {})`
237
- - `createJsonApiMetaSuccessTransportSchema({ meta } = {})`
260
+ - `buildJsonApiTransportError(statusCode, message, code, params = {})`
238
261
  - `defaultRecordTypeResolver(type)`
239
- - `defaultRecordIdResolver(record = {})`
240
- - `defaultRecordAttributesResolver(record = {})`
262
+ - `defaultRecordIdResolver(record)`
263
+ - `defaultRecordAttributesResolver(record)`
241
264
  - `defaultCollectionItemsResolver(payload)`
242
265
  - `defaultCollectionMetaResolver(payload)`
266
+ - `resolveNothing()`
243
267
  - `assertJsonApiSuccessResult(payload)`
268
+ - `buildRouteTransport({ types: { requestType: normalizedRequestType, responseType: normalizedResponseType }, successKind: normalizedSuccessKind, query, allowBodyId, pointerPrefix, hooks: { mapRequestRelationships, getRecordType, getRecordId, getRecordAttributes, getRecordRelationships, getRecordLinks, getRecordMeta, getIncluded, getDocumentLinks, getDocumentMeta, getCollectionItems } })`
244
269
 
245
270
  ### `src/shared/validators/jsonApiTransport.js`
246
271
  Exports
@@ -255,6 +280,7 @@ Exports
255
280
  - `isJsonApiErrorDocument(payload = {})`
256
281
  - `isJsonApiResourceDocument(payload = {})`
257
282
  - `isJsonContentType(contentType = "")`
283
+ - `jsonApiNextCursor(document)`
258
284
  - `normalizeCodedEntry(entry)`
259
285
  - `normalizeJsonApiDocument(payload = {})`
260
286
  - `normalizeJsonApiResourceObject(resource = {})`
@@ -266,9 +292,9 @@ Local functions
266
292
  - `normalizeJsonApiMeta(value)`
267
293
  - `normalizeJsonApiErrors(value)`
268
294
  - `escapeJsonPointerSegment(value = "")`
269
- - `resolveValidationFieldName(issue = {})`
295
+ - `resolveValidationFieldName(issue)`
270
296
  - `resolveJsonApiValidationSource(issue = {}, validationContext = "")`
271
- - `createJsonApiErrorMeta({ transactionOutcome, params, messageCode, messageParams, fieldErrorCode })`
297
+ - `buildJsonApiErrorMeta({ transactionOutcome, params, messageCode, messageParams, fieldErrorCode })`
272
298
  - `simplifyJsonApiResourceObject(resource = {})`
273
299
 
274
300
  ### `src/shared/validators/operationValidation.js`
@@ -278,11 +304,7 @@ Local functions
278
304
  - `resolveOperationSection(operation = {}, section = "body")`
279
305
  - `isFieldValidationError(error)`
280
306
 
281
- ### `src/shared/validators/schemaUtils.js`
282
- Exports
283
- - `asSchemaDefinition(value, label, defaultMode, { required = true } = {})`
284
-
285
307
  ### `src/shared/validators/transportSchemaEmbedding.js`
286
308
  Exports
287
309
  - `rewriteEmbeddedTransportSchemaRefs(value, { rootRef = "#", definitionRefByName = {} } = {})`
288
- - `createEmbeddableTransportSchemaDocument(schemaDocument = {}, rootDefinitionName = "TransportSchema")`
310
+ - `createEmbeddableTransportSchemaDocument(schemaDocument, rootDefinitionName = "TransportSchema")`
@@ -16,34 +16,37 @@ Use this on demand; do not load the full index at startup.
16
16
 
17
17
  ### `src/server/jsonRestApiHost.js`
18
18
  Exports
19
- - `JSON_REST_AUTOFILTER_PRESETS`
20
19
  - `addResourceIfMissing(api, scopeName, resourceConfig)`
21
20
  - `buildJsonRestQueryParams(resourceType = "", query = {}, { include = undefined } = {})`
22
- - `createJsonRestResourceScopeOptions(resource = {}, { writeSerializers = {}, normalizeId = null, rowPolicy = undefined, searchSchema = null, queryFields = null } = {})`
21
+ - `createJsonRestResourceScopeOptions(resource = {}, { writeSerializers = {}, normalizeId, rowPolicy, searchSchema, queryFields } = {})`
23
22
  - `createJsonRestContext(context = null)`
24
23
  - `extractJsonRestCollectionRows(payload)`
25
- - `isJsonRestResourceMissingError(error = null)`
26
24
  - `returnNullWhenJsonRestResourceMissing(run)`
27
25
  - `returnBadRequestWhenJsonRestFieldsetInvalid(run)`
28
26
  - `resolveWorkspaceScopeValue(context = null)`
29
27
  - `resolveUserScopeValue(context = null)`
30
- - `createJsonRestApiHost({ knex, logger = JSON_REST_DEFAULT_LOGGER })`
28
+ - `createJsonRestApiHost({ knex, logger })`
31
29
  Local functions
32
30
  - `isPlainJsonRestObject(value)`
33
31
  - `cloneJsonRestResourceValue(value, { writeSerializers = {} } = {})`
34
32
  - `normalizeScopeValue(value)`
35
- - `normalizeJsonRestText(value, { fallback = "" } = {})`
36
33
  - `normalizeJsonRestFilterValue(value)`
37
- - `normalizeJsonRestObject(value)`
38
34
  - `normalizeJsonRestList(value)`
39
- - `resolveJsonRestCollectionRelationships(resource = {})`
35
+ - `resolveJsonRestCollectionRelationships(resource)`
40
36
  - `normalizeJsonRestQueryField(fieldName = "", fieldDefinition = {}, projectionDefinition = null)`
41
37
  - `isJsonRestVirtualField(fieldDefinition = null)`
42
38
  - `applyJsonRestQueryFields(scopeOptions = {}, extraQueryFields = {})`
43
- - `resolveJsonRestDefaultExcludedFields(resource = {})`
39
+ - `resolveJsonRestDefaultExcludedFields(resource)`
44
40
  - `applyJsonRestDefaultExclusions(scopeOptions = {}, resource = {})`
41
+ - `workspaceScopeOwnerId(visibilityContext)`
42
+ - `isJsonRestResourceMissingError(error = null)`
45
43
  - `isJsonRestSparseFieldError(error = null)`
46
44
 
47
45
  ### `src/server/JsonRestApiProvider.js`
48
46
  Exports
49
47
  - `JsonRestApiProvider`
48
+
49
+ ### `src/server/types.js`
50
+ Exports
51
+ - `type RuntimeJsonRestApi`
52
+ - `type JsonRestResource`