@aventara/core 1.0.0-rc.0 → 1.0.0-rc.2

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 (267) hide show
  1. package/CHANGELOG.md +1434 -0
  2. package/ERRORS.md +142 -0
  3. package/README.md +247 -57
  4. package/dist/adapters/adapter-discovery-diagnostic.d.ts +4 -4
  5. package/dist/adapters/adapter-discovery-diagnostic.guidance.d.ts +6 -0
  6. package/dist/adapters/adapter-discovery-diagnostic.guidance.js +7 -0
  7. package/dist/adapters/adapter-field.d.ts +25 -11
  8. package/dist/adapters/adapter-identifier.d.ts +6 -6
  9. package/dist/adapters/adapter-model.d.ts +18 -9
  10. package/dist/adapters/adapter-operation-executor.interface.d.ts +4 -4
  11. package/dist/adapters/adapter-operation.d.ts +3 -3
  12. package/dist/adapters/adapter-resource.d.ts +18 -9
  13. package/dist/adapters/adapter-sql-statement.d.ts +19 -0
  14. package/dist/adapters/adapter-transaction-executor.interface.d.ts +19 -0
  15. package/dist/adapters/adapter.interface.d.ts +59 -29
  16. package/dist/avz/avz-check.factory.d.ts +83 -0
  17. package/dist/avz/avz-check.factory.js +116 -0
  18. package/dist/avz/avz-check.registry.d.ts +35 -0
  19. package/dist/avz/avz-check.registry.js +9 -0
  20. package/dist/avz/avz.d.ts +203 -0
  21. package/dist/{json → avz}/avz.js +150 -8
  22. package/dist/{json → avz}/index.d.ts +2 -1
  23. package/dist/{json → avz}/json-shape.registry.d.ts +7 -7
  24. package/dist/{json → avz}/zod-issue.translator.d.ts +8 -2
  25. package/dist/{json → avz}/zod-issue.translator.js +7 -0
  26. package/dist/compiler/contract-compiler-diagnostic.d.ts +31 -5
  27. package/dist/compiler/contract-compiler-diagnostic.guidance.d.ts +6 -0
  28. package/dist/compiler/contract-compiler-diagnostic.guidance.js +97 -0
  29. package/dist/compiler/contract.compiler.d.ts +18 -18
  30. package/dist/compiler/contract.compiler.js +637 -442
  31. package/dist/compiler/create-requirements.projector.d.ts +49 -0
  32. package/dist/compiler/create-requirements.projector.js +423 -0
  33. package/dist/compiler/field-validator.compiler.d.ts +47 -0
  34. package/dist/compiler/field-validator.compiler.js +238 -0
  35. package/dist/config/any-framework-config.d.ts +19 -12
  36. package/dist/config/computed-fields.d.ts +62 -0
  37. package/dist/config/computed-fields.js +80 -0
  38. package/dist/config/config-diagnostic.d.ts +11 -4
  39. package/dist/config/config-diagnostic.guidance.d.ts +6 -0
  40. package/dist/config/config-diagnostic.guidance.js +32 -0
  41. package/dist/config/config-layer.d.ts +15 -6
  42. package/dist/config/config.resolver.d.ts +74 -31
  43. package/dist/config/config.resolver.js +108 -44
  44. package/dist/config/config.validator.d.ts +7 -7
  45. package/dist/config/config.validator.js +581 -72
  46. package/dist/config/define-resource.d.ts +57 -0
  47. package/dist/config/define-resource.js +14 -0
  48. package/dist/config/effective-fields.d.ts +19 -23
  49. package/dist/config/entrypoint.normalizer.d.ts +1 -1
  50. package/dist/config/exact-framework-config.d.ts +308 -0
  51. package/dist/config/field-compute.resolver.d.ts +21 -0
  52. package/dist/config/field-compute.resolver.js +123 -0
  53. package/dist/config/field-pipeline-config.d.ts +47 -0
  54. package/dist/config/forced-operation.validator.d.ts +10 -0
  55. package/dist/config/forced-operation.validator.js +66 -0
  56. package/dist/config/framework-config.d.ts +111 -39
  57. package/dist/config/framework-exemptions-config.d.ts +91 -0
  58. package/dist/config/framework-exemptions-config.js +1 -0
  59. package/dist/config/framework-field-definition.d.ts +78 -0
  60. package/dist/config/framework-field-definition.js +28 -0
  61. package/dist/config/framework-resources-config.d.ts +122 -0
  62. package/dist/config/framework-resources-config.js +1 -0
  63. package/dist/config/pipeline-config.d.ts +56 -20
  64. package/dist/config/pipeline-tree.resolver.d.ts +79 -0
  65. package/dist/config/pipeline-tree.resolver.js +220 -0
  66. package/dist/config/stage-type.eraser.d.ts +65 -0
  67. package/dist/config/stage-type.eraser.js +1 -0
  68. package/dist/contracts/capability.d.ts +21 -12
  69. package/dist/contracts/capability.js +2 -0
  70. package/dist/contracts/client-contract-structure.validator.d.ts +388 -63
  71. package/dist/contracts/client-contract-structure.validator.js +156 -10
  72. package/dist/contracts/contract-canonicalizer.d.ts +26 -3
  73. package/dist/contracts/contract-canonicalizer.js +156 -29
  74. package/dist/contracts/contract-hash.d.ts +12 -7
  75. package/dist/contracts/contract-hash.js +3 -2
  76. package/dist/contracts/contract-limits.d.ts +4 -1
  77. package/dist/contracts/contract-limits.js +1 -0
  78. package/dist/contracts/contract-lookup.d.ts +5 -5
  79. package/dist/contracts/contract-protocol.d.ts +4 -4
  80. package/dist/contracts/contract.d.ts +24 -16
  81. package/dist/contracts/create-requirements.d.ts +35 -0
  82. package/dist/contracts/create-requirements.js +1 -0
  83. package/dist/contracts/enum-definition.d.ts +1 -1
  84. package/dist/contracts/field-check.d.ts +101 -0
  85. package/dist/contracts/field-check.js +1 -0
  86. package/dist/contracts/field.d.ts +81 -42
  87. package/dist/contracts/identifier.d.ts +4 -4
  88. package/dist/contracts/json-shape.d.ts +12 -1
  89. package/dist/contracts/lifecycle-trait.d.ts +2 -2
  90. package/dist/contracts/resource-operations.d.ts +28 -28
  91. package/dist/contracts/resource.d.ts +15 -9
  92. package/dist/contracts/scalar-value-type.d.ts +15 -15
  93. package/dist/contracts/scalar.d.ts +3 -3
  94. package/dist/contracts/transaction-capability.d.ts +1 -1
  95. package/dist/contracts/wire-scalar-format.d.ts +4 -4
  96. package/dist/framework/contract-view.d.ts +213 -147
  97. package/dist/framework/framework-construction.error.d.ts +19 -10
  98. package/dist/framework/framework-construction.error.js +7 -3
  99. package/dist/framework/framework.d.ts +47 -23
  100. package/dist/framework/framework.factory.d.ts +8 -6
  101. package/dist/framework/framework.factory.js +49 -22
  102. package/dist/framework/operation-facade.d.ts +123 -52
  103. package/dist/framework/operation-facade.js +9 -1
  104. package/dist/index.d.ts +57 -50
  105. package/dist/index.js +7 -6
  106. package/dist/internal.d.ts +17 -10
  107. package/dist/internal.js +4 -1
  108. package/dist/operations/database-refusal.d.ts +51 -0
  109. package/dist/operations/database-refusal.js +45 -0
  110. package/dist/operations/operation-arguments.d.ts +343 -207
  111. package/dist/operations/operation-call.d.ts +27 -28
  112. package/dist/operations/operation-identity.d.ts +10 -10
  113. package/dist/operations/operation-result.d.ts +21 -21
  114. package/dist/operations/operation-validator-core.d.ts +6 -6
  115. package/dist/operations/operation-validator-core.js +99 -6
  116. package/dist/operations/operation-validator.d.ts +9 -9
  117. package/dist/operations/projection-scope.resolver.d.ts +6 -6
  118. package/dist/operations/structural-limits.walker.d.ts +6 -6
  119. package/dist/operations/structural-limits.walker.js +145 -0
  120. package/dist/operations/validation-code.d.ts +11 -6
  121. package/dist/operations/validation-code.guidance.d.ts +6 -0
  122. package/dist/operations/validation-code.guidance.js +90 -0
  123. package/dist/operations/validation-code.js +4 -0
  124. package/dist/operations/write-scope.resolver.d.ts +10 -6
  125. package/dist/operations/write-scope.resolver.js +2 -0
  126. package/dist/protocol/absent-route.responder.d.ts +13 -12
  127. package/dist/protocol/absent-route.responder.js +19 -19
  128. package/dist/protocol/contract-document.responder.d.ts +3 -3
  129. package/dist/protocol/contract-document.responder.js +2 -2
  130. package/dist/protocol/http-request.decoder.d.ts +17 -13
  131. package/dist/protocol/http-request.decoder.js +10 -10
  132. package/dist/protocol/http-request.reader.d.ts +3 -3
  133. package/dist/protocol/http-response.encoder.d.ts +4 -4
  134. package/dist/protocol/http-response.encoder.js +94 -55
  135. package/dist/protocol/http-status.table.d.ts +2 -2
  136. package/dist/protocol/operation-response.guard.d.ts +2 -2
  137. package/dist/protocol/protocol-surface.d.ts +4 -4
  138. package/dist/protocol/protocol.binder.d.ts +50 -27
  139. package/dist/protocol/protocol.binder.js +12 -9
  140. package/dist/protocol/protocol.handler.d.ts +22 -13
  141. package/dist/protocol/protocol.handler.js +91 -17
  142. package/dist/protocol/unmounted-route.error.d.ts +4 -4
  143. package/dist/protocol/unmounted-route.error.js +2 -2
  144. package/dist/runtime/caller-data.copier.d.ts +22 -5
  145. package/dist/runtime/caller-data.copier.js +31 -14
  146. package/dist/runtime/caller-data.door.d.ts +17 -11
  147. package/dist/runtime/caller-data.door.js +6 -4
  148. package/dist/runtime/computed-read-runtime.d.ts +7 -6
  149. package/dist/runtime/computed-read-runtime.js +76 -50
  150. package/dist/runtime/computed-value.error.d.ts +7 -6
  151. package/dist/runtime/computed-value.error.js +5 -4
  152. package/dist/runtime/context-executor.runtime.d.ts +59 -0
  153. package/dist/runtime/context-executor.runtime.js +275 -0
  154. package/dist/runtime/create-requirement.d.ts +44 -79
  155. package/dist/runtime/create-requirement.js +213 -73
  156. package/dist/runtime/decimal.d.ts +2 -2
  157. package/dist/runtime/decimal.js +1 -1
  158. package/dist/runtime/diagnostics-reporter.d.ts +54 -27
  159. package/dist/runtime/diagnostics-reporter.js +24 -0
  160. package/dist/runtime/error-boundary.d.ts +65 -8
  161. package/dist/runtime/error-boundary.js +49 -19
  162. package/dist/runtime/error-guidance.d.ts +12 -0
  163. package/dist/runtime/error-guidance.js +1 -0
  164. package/dist/runtime/error.catalog.d.ts +49 -0
  165. package/dist/runtime/error.catalog.js +49 -0
  166. package/dist/runtime/execution-options.d.ts +10 -2
  167. package/dist/runtime/field-check.evaluator.d.ts +29 -0
  168. package/dist/runtime/field-check.evaluator.js +521 -0
  169. package/dist/runtime/field-compute.d.ts +64 -0
  170. package/dist/runtime/field-compute.js +1 -0
  171. package/dist/runtime/field-stage.plan.d.ts +15 -0
  172. package/dist/runtime/field-stage.plan.js +27 -0
  173. package/dist/runtime/field-stage.runtime.d.ts +37 -0
  174. package/dist/runtime/field-stage.runtime.js +147 -0
  175. package/dist/runtime/field-validator.runtime.d.ts +19 -0
  176. package/dist/runtime/field-validator.runtime.js +92 -0
  177. package/dist/runtime/framework-error-class.table.d.ts +33 -0
  178. package/dist/runtime/framework-error-class.table.js +25 -0
  179. package/dist/runtime/framework-error.d.ts +68 -8
  180. package/dist/runtime/framework-error.factory.d.ts +4 -0
  181. package/dist/runtime/framework-error.factory.js +15 -0
  182. package/dist/runtime/framework-error.js +23 -2
  183. package/dist/runtime/interceptor-next.error.d.ts +5 -0
  184. package/dist/runtime/interceptor-next.error.js +6 -0
  185. package/dist/runtime/json-value.d.ts +11 -6
  186. package/dist/runtime/level-lifecycle.runtime.d.ts +25 -0
  187. package/dist/runtime/level-lifecycle.runtime.js +39 -0
  188. package/dist/runtime/misuse-reporter.d.ts +12 -12
  189. package/dist/runtime/mutation-planner.d.ts +19 -10
  190. package/dist/runtime/mutation-planner.js +48 -35
  191. package/dist/runtime/nested-write.walker.d.ts +32 -0
  192. package/dist/runtime/nested-write.walker.js +73 -0
  193. package/dist/runtime/operation-code.guidance.d.ts +6 -0
  194. package/dist/runtime/operation-code.guidance.js +167 -0
  195. package/dist/runtime/operation-request.d.ts +33 -6
  196. package/dist/runtime/operation-response.d.ts +17 -17
  197. package/dist/runtime/operation-runtime.d.ts +127 -25
  198. package/dist/runtime/operation-runtime.js +441 -78
  199. package/dist/runtime/outcome-mapper.d.ts +16 -5
  200. package/dist/runtime/outcome-mapper.js +23 -6
  201. package/dist/runtime/output-validator.d.ts +10 -10
  202. package/dist/runtime/output-validator.js +3 -3
  203. package/dist/runtime/owned-execution.registry.d.ts +16 -6
  204. package/dist/runtime/pipe-output.validator.d.ts +43 -18
  205. package/dist/runtime/pipe-output.validator.js +15 -13
  206. package/dist/runtime/pipeline.d.ts +223 -34
  207. package/dist/runtime/readonly-value.d.ts +43 -0
  208. package/dist/runtime/readonly-value.js +150 -0
  209. package/dist/runtime/request-envelope.validator.d.ts +3 -3
  210. package/dist/runtime/request-envelope.validator.js +12 -7
  211. package/dist/runtime/request-id.d.ts +1 -1
  212. package/dist/runtime/request-state.d.ts +14 -0
  213. package/dist/runtime/request-state.js +1 -0
  214. package/dist/runtime/request-state.resolver.d.ts +12 -0
  215. package/dist/runtime/request-state.resolver.js +20 -0
  216. package/dist/runtime/scalar-runtime.d.ts +35 -16
  217. package/dist/runtime/scalar-runtime.js +102 -34
  218. package/dist/runtime/unsent-value.normalizer.d.ts +15 -0
  219. package/dist/runtime/unsent-value.normalizer.js +128 -0
  220. package/dist/transactions/deferred-operation.d.ts +35 -20
  221. package/dist/transactions/operation-arguments-encoder.d.ts +3 -3
  222. package/dist/transactions/operation-arguments-encoder.js +2 -2
  223. package/dist/transactions/operation-fingerprint.js +2 -2
  224. package/dist/transactions/sql-statement.d.ts +85 -0
  225. package/dist/transactions/sql-statement.js +47 -0
  226. package/dist/transactions/sql-statement.validator.d.ts +44 -0
  227. package/dist/transactions/sql-statement.validator.js +167 -0
  228. package/dist/transactions/transaction-envelope.d.ts +4 -4
  229. package/dist/transactions/transaction-integrity-error.d.ts +6 -6
  230. package/dist/transactions/transaction-integrity-error.js +5 -2
  231. package/dist/transactions/transaction-plan-assembler.d.ts +21 -11
  232. package/dist/transactions/transaction-plan-assembler.js +169 -32
  233. package/dist/transactions/transaction-plan-validator.d.ts +45 -20
  234. package/dist/transactions/transaction-plan-validator.js +96 -38
  235. package/dist/transactions/transaction-reference-collector.d.ts +5 -5
  236. package/dist/transactions/transaction-reference-resolver.d.ts +19 -2
  237. package/dist/transactions/transaction-reference-resolver.js +26 -14
  238. package/dist/transactions/transaction-reference-validator.d.ts +76 -4
  239. package/dist/transactions/transaction-reference-validator.js +129 -71
  240. package/dist/transactions/transaction-reference.d.ts +13 -13
  241. package/dist/transactions/transaction-reference.js +5 -0
  242. package/dist/transactions/transaction-request.d.ts +18 -5
  243. package/dist/transactions/transaction-response.d.ts +6 -6
  244. package/dist/transactions/transaction-runtime.d.ts +8 -7
  245. package/dist/transactions/transaction-runtime.js +191 -50
  246. package/dist/transactions/transaction-settlement.runtime.d.ts +51 -0
  247. package/dist/transactions/transaction-settlement.runtime.js +120 -0
  248. package/dist/transactions/transaction-slot-path-error.d.ts +4 -4
  249. package/dist/transactions/transaction-slot-path-error.js +2 -2
  250. package/dist/transactions/transaction-slot-writer.js +2 -2
  251. package/dist/transactions/transaction-stage.runtime.d.ts +82 -0
  252. package/dist/transactions/transaction-stage.runtime.js +126 -0
  253. package/package.json +9 -7
  254. package/src/runtime/field-check.evaluator.ts +720 -0
  255. package/dist/config/define-fields.d.ts +0 -42
  256. package/dist/config/define-fields.js +0 -3
  257. package/dist/config/framework-behaviors-config.d.ts +0 -30
  258. package/dist/config/framework-fields-config.d.ts +0 -42
  259. package/dist/config/framework-restrictions-config.d.ts +0 -142
  260. package/dist/json/avz.d.ts +0 -96
  261. package/dist/runtime/field-behavior.d.ts +0 -48
  262. /package/dist/{config/framework-behaviors-config.js → adapters/adapter-sql-statement.js} +0 -0
  263. /package/dist/{config/framework-fields-config.js → adapters/adapter-transaction-executor.interface.js} +0 -0
  264. /package/dist/{json → avz}/index.js +0 -0
  265. /package/dist/{json → avz}/json-shape.registry.js +0 -0
  266. /package/dist/config/{framework-restrictions-config.js → exact-framework-config.js} +0 -0
  267. /package/dist/{runtime/field-behavior.js → config/field-pipeline-config.js} +0 -0
@@ -1,5 +1,6 @@
1
+ import { isDatabaseRefusalMessage } from "../operations/database-refusal.js";
1
2
  import { VALIDATION_CODE_MESSAGES, VALIDATION_CODES, } from "../operations/validation-code.js";
2
- import { FrameworkError } from "./framework-error.js";
3
+ import { AvError } from "./framework-error.js";
3
4
  import { INTERNAL_FAILURE_MESSAGE, internalFailure, OPERATION_CODES, operationFailure, } from "./operation-response.js";
4
5
  import { PIPE_OUTPUT_FAILURE_MESSAGE } from "./pipe-output.validator.js";
5
6
  export const ADAPTER_FAILURE_MESSAGE = "Adapter execution failed.";
@@ -164,6 +165,9 @@ function projectIssue(value, unvouched, view, author) {
164
165
  unvouched.push(supplied);
165
166
  }
166
167
  }
168
+ else if (isDatabaseRefusalMessage(code, supplied)) {
169
+ message = supplied;
170
+ }
167
171
  if (rawPath === undefined) {
168
172
  return { code, message };
169
173
  }
@@ -207,7 +211,7 @@ function readProperty(value, key) {
207
211
  }
208
212
  function isFrameworkErrorInstance(error) {
209
213
  try {
210
- return error instanceof FrameworkError;
214
+ return error instanceof AvError;
211
215
  }
212
216
  catch {
213
217
  return false;
@@ -269,24 +273,50 @@ export function sanitizeOperationFailure(error, origin, report, view) {
269
273
  }
270
274
  return deliberateFailure(outcome);
271
275
  }
272
- export async function resolveOperationFailure(error, filters, context, boundary, report, view) {
273
- for (let index = filters.length - 1; index >= 0; index -= 1) {
274
- const filter = filters[index];
275
- if (filter === undefined) {
276
- continue;
277
- }
278
- const handled = await attemptFilter(filter, error, context, view, boundary);
279
- if (handled !== undefined) {
280
- if (handled.outcome === MALFORMED_OUTCOME) {
281
- report(error, "A3000");
282
- }
283
- else {
284
- reportDeliberate(handled.returned, handled.outcome, report);
285
- }
286
- return deliberateFailure(handled.outcome);
287
- }
276
+ export async function resolveOperationFailure(error, filters, context, boundary, report, view, outer) {
277
+ const failure = { error, view, boundary, report };
278
+ const handled = await filterChain(filters, context).attempt(error, view, boundary);
279
+ if (handled !== undefined) {
280
+ return answerHandled(failure, handled);
281
+ }
282
+ return outer === undefined
283
+ ? sanitizeUnhandled(failure)
284
+ : outer.defer(failure);
285
+ }
286
+ function answerHandled(failure, handled) {
287
+ if (handled.outcome === MALFORMED_OUTCOME) {
288
+ failure.report(failure.error, "A3000");
289
+ }
290
+ else {
291
+ reportDeliberate(handled.returned, handled.outcome, failure.report);
288
292
  }
289
- return sanitizeOperationFailure(error, boundary.originOf(error), report, view);
293
+ return deliberateFailure(handled.outcome);
294
+ }
295
+ function sanitizeUnhandled(failure) {
296
+ return sanitizeOperationFailure(failure.error, failure.boundary.originOf(failure.error), failure.report, failure.view);
297
+ }
298
+ export async function resolveUnhandledFailure(failure, chain) {
299
+ const handled = await chain.attempt(failure.error, failure.view, failure.boundary);
300
+ return handled === undefined
301
+ ? sanitizeUnhandled(failure)
302
+ : answerHandled(failure, handled);
303
+ }
304
+ export function filterChain(filters, context) {
305
+ return {
306
+ attempt: async (error, view, boundary) => {
307
+ for (let index = filters.length - 1; index >= 0; index -= 1) {
308
+ const filter = filters[index];
309
+ if (filter === undefined) {
310
+ continue;
311
+ }
312
+ const handled = await attemptFilter(filter, error, context, view, boundary);
313
+ if (handled !== undefined) {
314
+ return handled;
315
+ }
316
+ }
317
+ return undefined;
318
+ },
319
+ };
290
320
  }
291
321
  async function attemptFilter(filter, error, context, view, boundary) {
292
322
  try {
@@ -0,0 +1,12 @@
1
+ /** Why a code is answered, and what the one who meets it should do. */
2
+ export type ErrorCodeGuidance = {
3
+ /** What typically produced the code, in a sentence or two. */
4
+ readonly cause: string;
5
+ /** What to change so it does not happen again. */
6
+ readonly fix: string;
7
+ };
8
+ /** Guidance for a code whose table holds no message of its own. */
9
+ export type ErrorCodeDescription = ErrorCodeGuidance & {
10
+ /** The code's meaning, in one short sentence. */
11
+ readonly message: string;
12
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,49 @@
1
+ import type { AvAdapterDiscoveryDiagnosticCode } from "../adapters/adapter-discovery-diagnostic.js";
2
+ import type { AvContractCompilerDiagnosticCode } from "../compiler/contract-compiler-diagnostic.js";
3
+ import type { AvConfigDiagnosticCode } from "../config/config-diagnostic.js";
4
+ import type { AvConstructionStage } from "../framework/framework-construction.error.js";
5
+ import { type AvValidationCode } from "../operations/validation-code.js";
6
+ import { type AvOperationCode } from "./operation-response.js";
7
+ /**
8
+ * The documentation page every catalog entry links into. Each code has its own
9
+ * anchor there: the code in lower case (`#a2004`, `#config_required`).
10
+ */
11
+ export declare const ERROR_CODES_DOCS_URL = "https://aventara-framework.vercel.app/docs/error-codes";
12
+ /**
13
+ * What kind of code an entry is: an outcome code's family (`success` `A1xxx`,
14
+ * `request` `A2xxx`, `internal` `A3xxx`, `auth` `A4xxx`), a `validation` issue
15
+ * code (`V1xxx`), or a startup code, by the construction stage that reports it.
16
+ */
17
+ export type AvErrorKind = "success" | "request" | "internal" | "auth" | "validation" | AvConstructionStage;
18
+ /** Every code the catalog describes: outcome, validation and startup codes. */
19
+ export type AvErrorCatalogCode = AvOperationCode | AvValidationCode | AvConfigDiagnosticCode | AvAdapterDiscoveryDiagnosticCode | AvContractCompilerDiagnosticCode;
20
+ /** One code: what it means, why it happens, what to do, and where it is documented. */
21
+ export type AvErrorCatalogEntry<C extends AvErrorCatalogCode = AvErrorCatalogCode> = {
22
+ readonly code: C;
23
+ readonly kind: AvErrorKind;
24
+ /** Its meaning in one sentence; for a V-code, the framework's message for it. */
25
+ readonly message: string;
26
+ /** What typically produces it. */
27
+ readonly cause: string;
28
+ /** What to change. */
29
+ readonly fix: string;
30
+ /** Its entry on the error-codes page. */
31
+ readonly docs: string;
32
+ };
33
+ /** The error catalog's type: one entry per code. */
34
+ export type AvErrorCatalog = {
35
+ readonly [C in AvErrorCatalogCode]: AvErrorCatalogEntry<C>;
36
+ };
37
+ /** The documentation URL of one code: the error-codes page at its anchor. */
38
+ export declare function errorDocsUrl(code: AvErrorCatalogCode): string;
39
+ /**
40
+ * Every code Aventara answers or refuses with, by code: its `kind`, `message`,
41
+ * `cause`, `fix` and `docs` URL. An operation's `code`, a validation issue's
42
+ * `code` and a startup diagnostic's `code` are all keys of it:
43
+ *
44
+ * ```ts
45
+ * AvErrorCatalog[error.code].fix;
46
+ * AvErrorCatalog.V1000.docs; // https://aventara-framework.vercel.app/docs/error-codes#v1000
47
+ * ```
48
+ */
49
+ export declare const AvErrorCatalog: AvErrorCatalog;
@@ -0,0 +1,49 @@
1
+ import { ADAPTER_DISCOVERY_DIAGNOSTIC_GUIDANCE } from "../adapters/adapter-discovery-diagnostic.guidance.js";
2
+ import { CONTRACT_COMPILER_DIAGNOSTIC_GUIDANCE } from "../compiler/contract-compiler-diagnostic.guidance.js";
3
+ import { CONFIG_DIAGNOSTIC_GUIDANCE } from "../config/config-diagnostic.guidance.js";
4
+ import { VALIDATION_CODE_GUIDANCE } from "../operations/validation-code.guidance.js";
5
+ import { VALIDATION_CODE_MESSAGES, VALIDATION_CODES, } from "../operations/validation-code.js";
6
+ import { OPERATION_CODE_GUIDANCE } from "./operation-code.guidance.js";
7
+ import { OPERATION_CODES } from "./operation-response.js";
8
+ export const ERROR_CODES_DOCS_URL = "https://aventara-framework.vercel.app/docs/error-codes";
9
+ export function errorDocsUrl(code) {
10
+ return `${ERROR_CODES_DOCS_URL}#${code.toLowerCase()}`;
11
+ }
12
+ const OUTCOME_KIND = {
13
+ "1": "success",
14
+ "2": "request",
15
+ "3": "internal",
16
+ "4": "auth",
17
+ };
18
+ function entry(code, kind, description) {
19
+ return Object.freeze({
20
+ code,
21
+ kind,
22
+ message: description.message,
23
+ cause: description.cause,
24
+ fix: description.fix,
25
+ docs: errorDocsUrl(code),
26
+ });
27
+ }
28
+ function entriesOf(table, kind) {
29
+ return Object.keys(table).map((code) => [
30
+ code,
31
+ entry(code, kind, table[code]),
32
+ ]);
33
+ }
34
+ export const AvErrorCatalog = Object.freeze(Object.fromEntries([
35
+ ...OPERATION_CODES.map((code) => [
36
+ code,
37
+ entry(code, OUTCOME_KIND[code[1]], OPERATION_CODE_GUIDANCE[code]),
38
+ ]),
39
+ ...VALIDATION_CODES.map((code) => [
40
+ code,
41
+ entry(code, "validation", {
42
+ message: VALIDATION_CODE_MESSAGES[code],
43
+ ...VALIDATION_CODE_GUIDANCE[code],
44
+ }),
45
+ ]),
46
+ ...entriesOf(CONFIG_DIAGNOSTIC_GUIDANCE, "configuration"),
47
+ ...entriesOf(ADAPTER_DISCOVERY_DIAGNOSTIC_GUIDANCE, "discovery"),
48
+ ...entriesOf(CONTRACT_COMPILER_DIAGNOSTIC_GUIDANCE, "contract-compilation"),
49
+ ]));
@@ -1,13 +1,21 @@
1
+ import type { AvState } from "./request-state.js";
1
2
  /**
2
3
  * Options for one in-process call: the optional second argument of every
3
4
  * `framework.application.*` / `framework.client.*` call and of
4
5
  * `framework.transaction`.
5
6
  */
6
- export type ExecutionOptions = {
7
+ export type AvExecutionOptions = {
7
8
  /**
8
9
  * The id every pipeline context and every diagnostic of this call or run
9
- * carries — a correlation id the caller already holds. Omitted, the Framework
10
+ * carries, such as a correlation id the caller already holds. Omitted, the Framework
10
11
  * mints one; the empty string counts as omitted.
11
12
  */
12
13
  readonly requestId?: string;
14
+ /**
15
+ * The call's or run's `ctx.$state`: the one object every stage of it, and
16
+ * every ctx call those stages make, reads and writes. It is used as it is, not
17
+ * copied, so the caller sees what the stages wrote. Omitted (or not an
18
+ * object), the Framework starts the request with `{}`.
19
+ */
20
+ readonly state?: AvState & object;
13
21
  };
@@ -0,0 +1,29 @@
1
+ import type { AvFieldCheck } from "../contracts/field-check.js";
2
+ import type { AvValidationIssue } from "../operations/validation-code.js";
3
+ /** What a check judges: the runtime form of the value it is given. */
4
+ export type FieldCheckSubject = "string" | "number" | "bigint" | "decimal" | "datetime" | "bytes";
5
+ /**
6
+ * What a check judges on a field of each scalar type that takes checks; a field
7
+ * of any other type (an enum's) holds a string.
8
+ */
9
+ export declare const FIELD_CHECK_SUBJECTS: Readonly<Record<string, FieldCheckSubject>>;
10
+ type Path = readonly (string | number)[];
11
+ /**
12
+ * Whether `value` passes `check`; `true` for a value the check does not judge
13
+ * (a value of another form, which validation refused before the checks run).
14
+ */
15
+ export declare function passesFieldCheck(check: AvFieldCheck, value: unknown, subject: FieldCheckSubject): boolean;
16
+ /** The issue of one failed check at `path`: its V-code, zod's check and its parameters. */
17
+ export declare function fieldCheckIssue(check: AvFieldCheck, subject: FieldCheckSubject, path: Path): AvValidationIssue;
18
+ /**
19
+ * The issues of the checks `value` breaks, one per broken check, in the checks'
20
+ * order. On a list (`list`), a `list: true` length check judges the list at
21
+ * `path` and every other check judges each entry, at its index; `null` is no
22
+ * value and breaks nothing.
23
+ */
24
+ export declare function fieldCheckIssues(checks: readonly AvFieldCheck[], value: unknown, subject: FieldCheckSubject, path: Path, list: boolean): readonly AvValidationIssue[];
25
+ /** The issues of the checks one value — a whole value, or a list's entry — breaks. */
26
+ export declare function entryCheckIssues(checks: readonly AvFieldCheck[], value: unknown, subject: FieldCheckSubject, path: Path): readonly AvValidationIssue[];
27
+ /** Whether a check judges a list's own length (`AvZ.minItems`/`AvZ.maxItems`). */
28
+ export declare function isListCheck(check: AvFieldCheck): boolean;
29
+ export {};