@jskit-ai/agent-docs 0.1.1

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 (73) hide show
  1. package/DISTR_AGENT.md +25 -0
  2. package/guide/agent/app-extras/assistant.md +636 -0
  3. package/guide/agent/app-extras/realtime.md +223 -0
  4. package/guide/agent/app-setup/a-more-interesting-shell.md +643 -0
  5. package/guide/agent/app-setup/authentication.md +948 -0
  6. package/guide/agent/app-setup/console.md +316 -0
  7. package/guide/agent/app-setup/database-layer.md +775 -0
  8. package/guide/agent/app-setup/initial-scaffolding.md +714 -0
  9. package/guide/agent/app-setup/multi-homing.md +655 -0
  10. package/guide/agent/app-setup/users.md +355 -0
  11. package/guide/agent/app-setup/working-with-the-jskit-cli.md +983 -0
  12. package/guide/agent/generators/advanced-cruds.md +923 -0
  13. package/guide/agent/generators/crud-generators.md +556 -0
  14. package/guide/agent/generators/intro.md +63 -0
  15. package/guide/agent/generators/ui-generators.md +648 -0
  16. package/guide/agent/index.md +39 -0
  17. package/guide/human/app-extras/assistant.md +695 -0
  18. package/guide/human/app-extras/realtime.md +270 -0
  19. package/guide/human/app-setup/a-more-interesting-shell.md +734 -0
  20. package/guide/human/app-setup/authentication.md +963 -0
  21. package/guide/human/app-setup/console.md +352 -0
  22. package/guide/human/app-setup/database-layer.md +822 -0
  23. package/guide/human/app-setup/initial-scaffolding.md +738 -0
  24. package/guide/human/app-setup/multi-homing.md +795 -0
  25. package/guide/human/app-setup/users.md +404 -0
  26. package/guide/human/app-setup/working-with-the-jskit-cli.md +997 -0
  27. package/guide/human/generators/advanced-cruds.md +923 -0
  28. package/guide/human/generators/crud-generators.md +556 -0
  29. package/guide/human/generators/intro.md +109 -0
  30. package/guide/human/generators/ui-generators.md +665 -0
  31. package/guide/human/index.md +39 -0
  32. package/package.json +28 -0
  33. package/reference/autogen/KERNEL_MAP.md +536 -0
  34. package/reference/autogen/README.md +44 -0
  35. package/reference/autogen/packages/agent-docs.md +13 -0
  36. package/reference/autogen/packages/assistant-core.md +310 -0
  37. package/reference/autogen/packages/assistant-runtime.md +219 -0
  38. package/reference/autogen/packages/assistant.md +73 -0
  39. package/reference/autogen/packages/auth-core.md +352 -0
  40. package/reference/autogen/packages/auth-provider-supabase-core.md +223 -0
  41. package/reference/autogen/packages/auth-web.md +267 -0
  42. package/reference/autogen/packages/console-core.md +116 -0
  43. package/reference/autogen/packages/console-web.md +37 -0
  44. package/reference/autogen/packages/crud-core.md +283 -0
  45. package/reference/autogen/packages/crud-server-generator.md +220 -0
  46. package/reference/autogen/packages/crud-ui-generator.md +154 -0
  47. package/reference/autogen/packages/database-runtime-mysql.md +61 -0
  48. package/reference/autogen/packages/database-runtime-postgres.md +39 -0
  49. package/reference/autogen/packages/database-runtime.md +216 -0
  50. package/reference/autogen/packages/http-runtime.md +213 -0
  51. package/reference/autogen/packages/kernel.md +1350 -0
  52. package/reference/autogen/packages/realtime.md +95 -0
  53. package/reference/autogen/packages/shell-web.md +349 -0
  54. package/reference/autogen/packages/storage-runtime.md +39 -0
  55. package/reference/autogen/packages/ui-generator.md +101 -0
  56. package/reference/autogen/packages/uploads-image-web.md +76 -0
  57. package/reference/autogen/packages/uploads-runtime.md +85 -0
  58. package/reference/autogen/packages/users-core.md +307 -0
  59. package/reference/autogen/packages/users-web.md +473 -0
  60. package/reference/autogen/packages/workspaces-core.md +415 -0
  61. package/reference/autogen/packages/workspaces-web.md +372 -0
  62. package/reference/autogen/tooling/config-eslint.md +52 -0
  63. package/reference/autogen/tooling/create-app.md +194 -0
  64. package/reference/autogen/tooling/jskit-catalog.md +27 -0
  65. package/reference/autogen/tooling/jskit-cli.md +624 -0
  66. package/reference/autogen/tooling/test-support.md +27 -0
  67. package/reference/autogen/tooling/testUtils.md +31 -0
  68. package/templates/APP_BLUEPRINT.md +57 -0
  69. package/workflow/app-state.md +33 -0
  70. package/workflow/bootstrap.md +24 -0
  71. package/workflow/feature-delivery.md +21 -0
  72. package/workflow/review.md +22 -0
  73. package/workflow/scoping.md +26 -0
@@ -0,0 +1,1350 @@
1
+ # packages/kernel
2
+
3
+ Generated by `npm run agent-docs:build`.
4
+ Do not edit manually.
5
+
6
+ Generated inventory for `packages/kernel`.
7
+ Use this on demand; do not load the full index at startup.
8
+
9
+ ## Scope
10
+ - Source: `packages/kernel/**/*{.js,.mjs,.cjs,.vue}`
11
+ - Excludes: `test/`, `tests/`, `__tests__/`, `*.test.*`, `*.spec.*`, `*.vitest.*`, `node_modules/`, `dist/`, `coverage/`, `docs/`, `LEGACY/`
12
+
13
+ ## Sections
14
+
15
+ ### shared
16
+
17
+ ### `shared/actions/actionContributorHelpers.js`
18
+ Exports
19
+ - `normalizeObject`
20
+ - `toPositiveInteger`
21
+ - `requireServiceMethod(service, methodName, contributorId, { serviceLabel } = {})`
22
+ - `resolveRequest(context)`
23
+ - `hasPermission`
24
+ - `EMPTY_INPUT_VALIDATOR`
25
+ - `OBJECT_INPUT_VALIDATOR`
26
+
27
+ ### `shared/actions/actionDefinitions.js`
28
+ Exports
29
+ - `ActionRuntimeError`
30
+ - `createActionRuntimeError(status, message, options = {})`
31
+ - `normalizeActionDefinition(definition, { contributorId = "", contributorDomain = "" } = {})`
32
+ - `normalizeActionContributor(contributor)`
33
+ - `normalizeActionDomain(value, { context = "domain", errorCode = "ACTION_DEFINITION_INVALID" } = {})`
34
+ - `createActionVersionKey(actionId, version)`
35
+ - `isPlainObject`
36
+ - `__testables`
37
+ Local functions
38
+ - `normalizeStringArray(value, { fieldName, allowedSet, allowEmpty = false } = {})`
39
+ - `normalizeSingleActionValidator(value, fieldName, { required = false } = {})`
40
+ - `isActionValidatorShape(value)`
41
+ - `normalizeSectionActionValidatorMap(value, fieldName)`
42
+ - `mergeNormalizedActionValidators(validators, fieldName)`
43
+ - `normalizeActionValidators(value, fieldName, { required = false } = {})`
44
+ - `normalizeActionOutputValidator(value, fieldName, { required = false } = {})`
45
+ - `normalizeActionPermission(permission, actionId)`
46
+ - `normalizeAuditConfig(audit, { actionId })`
47
+ - `normalizeObservabilityConfig(observability)`
48
+ - `normalizeActionExtensions(value)`
49
+
50
+ ### `shared/actions/audit.js`
51
+ Exports
52
+ - `createNoopAuditAdapter()`
53
+
54
+ ### `shared/actions/executionContext.js`
55
+ Exports
56
+ - `normalizeExecutionContext(context = {})`
57
+ - `__testables`
58
+ Local functions
59
+ - `copyRecord(value)`
60
+ - `normalizeActor(actor)`
61
+ - `normalizeTimeMeta(timeMeta)`
62
+ - `copyPassthroughContextEntries(source = {})`
63
+
64
+ ### `shared/actions/idempotency.js`
65
+ Exports
66
+ - `resolveActionIdempotencyKey(definition, context)`
67
+ - `ensureIdempotencyKeyIfRequired(definition, context, key)`
68
+ - `createNoopIdempotencyAdapter()`
69
+ - `__testables`
70
+ Local functions
71
+ - `resolveRequestIdempotencyKey(context)`
72
+
73
+ ### `shared/actions/index.js`
74
+ Exports
75
+ - `normalizeActionDefinition`
76
+ - `withActionDefaults`
77
+
78
+ ### `shared/actions/observability.js`
79
+ Exports
80
+ - `createNoopObservabilityAdapter()`
81
+
82
+ ### `shared/actions/pipeline.js`
83
+ Exports
84
+ - `executeActionPipeline({ definition, input, context, deps = {}, idempotencyAdapter, auditAdapter, observabilityAdapter, logger = console } = {})`
85
+ Local functions
86
+ - `normalizeOutcomeErrorCode(error)`
87
+ - `buildActionLogPayload({ definition, context, outcome, durationMs, errorCode, idempotencyReplay })`
88
+ - `emitAuditEvent(adapter, payload)`
89
+ - `executeIdempotencyClaim(adapter, payload)`
90
+
91
+ ### `shared/actions/policies.js`
92
+ Exports
93
+ - `ensureActionChannelAllowed(definition, context)`
94
+ - `ensureActionSurfaceAllowed(definition, context)`
95
+ - `ensureActionPermissionAllowed(definition, context)`
96
+ - `normalizeActionInput(definition, input, context)`
97
+ - `normalizeActionOutput(definition, output, context)`
98
+ - `__testables`
99
+ Local functions
100
+ - `createActionValidationError({ status = 400, message = "Validation failed.", code = "ACTION_VALIDATION_FAILED", details, cause } = {})`
101
+ - `normalizeSchemaValidationErrors(schema)`
102
+ - `buildSchemaValidatorError({ phase, definition } = {})`
103
+ - `normalizeTypeBoxValidationErrors(schema, payload)`
104
+ - `normalizeFunctionSchemaResult(result, payload, { phase, definition } = {})`
105
+ - `normalizeValidatorPayload(validator, payload, { phase, definition, context })`
106
+ - `validateSchemaPayload(schema, payload, { phase, definition })`
107
+
108
+ ### `shared/actions/registry.js`
109
+ Exports
110
+ - `createActionRegistry({ contributors = [], idempotencyAdapter, auditAdapter, observabilityAdapter, logger = console } = {})`
111
+ - `__testables`
112
+ Local functions
113
+ - `normalizeContributors(contributors)`
114
+ - `buildDefinitionIndex(contributors)`
115
+ - `normalizeRequestedVersion(version)`
116
+ - `resolveActionDefinition(index, actionId, version)`
117
+
118
+ ### `shared/actions/requestMeta.js`
119
+ Exports
120
+ - `normalizeRequestMeta(requestMeta = {}, { fields = DEFAULT_FIELDS, emptyAsNull = false } = {})`
121
+
122
+ ### `shared/actions/textNormalization.js`
123
+ Exports
124
+ - `normalizeText`
125
+ - `normalizeLowerText`
126
+
127
+ ### `shared/actions/withActionDefaults.js`
128
+ Exports
129
+ - `withActionDefaults(actions = [], defaults = {})`
130
+
131
+ ### `shared/index.js`
132
+ Exports
133
+ - `resolveLinkPath`
134
+ - `normalizePathname`
135
+
136
+ ### `shared/runtime/application.js`
137
+ Exports
138
+ - `Application`
139
+ - `createApplication(options = {})`
140
+ - `createProviderClass({ id, dependsOn = [], register = null, boot = null, shutdown = null } = {})`
141
+ Local functions
142
+ - `normalizeStringArray(value)`
143
+ - `nowMilliseconds()`
144
+
145
+ ### `shared/runtime/container.js`
146
+ Exports
147
+ - `Container`
148
+ - `createContainer(options = {})`
149
+ - `tokenLabel(token)`
150
+ Local functions
151
+ - `normalizeToken(token)`
152
+ - `ensureFactory(factory, token)`
153
+ - `normalizeTagName(tagName)`
154
+ - `normalizeScopeId(scopeId)`
155
+
156
+ ### `shared/runtime/containerErrors.js`
157
+ Exports
158
+ - `ContainerError`
159
+ - `InvalidTokenError`
160
+ - `InvalidFactoryError`
161
+ - `DuplicateBindingError`
162
+ - `UnresolvedTokenError`
163
+ - `CircularDependencyError`
164
+
165
+ ### `shared/runtime/index.js`
166
+ Exports
167
+ - `Container`
168
+ - `createContainer`
169
+ - `tokenLabel`
170
+ - `ContainerError`
171
+ - `InvalidTokenError`
172
+ - `InvalidFactoryError`
173
+ - `DuplicateBindingError`
174
+ - `UnresolvedTokenError`
175
+ - `CircularDependencyError`
176
+ - `Application`
177
+ - `createApplication`
178
+ - `createProviderClass`
179
+ - `ServiceProvider`
180
+ - `KernelError`
181
+ - `ProviderNormalizationError`
182
+ - `DuplicateProviderError`
183
+ - `ProviderDependencyError`
184
+ - `ProviderLifecycleError`
185
+
186
+ ### `shared/runtime/kernelErrors.js`
187
+ Exports
188
+ - `KernelError`
189
+ - `ProviderNormalizationError`
190
+ - `DuplicateProviderError`
191
+ - `ProviderDependencyError`
192
+ - `ProviderLifecycleError`
193
+
194
+ ### `shared/runtime/serviceProvider.js`
195
+ Exports
196
+ - `ServiceProvider`
197
+
198
+ ### `shared/support/containerToken.js`
199
+ Exports
200
+ - `isContainerToken(value)`
201
+
202
+ ### `shared/support/crudLookup.js`
203
+ Exports
204
+ - `DEFAULT_CRUD_LOOKUP_CONTAINER_KEY`
205
+ - `normalizeCrudLookupApiPath(value = "")`
206
+ - `normalizeCrudLookupNamespace(value = "")`
207
+ - `resolveCrudLookupApiPathFromNamespace(value = "")`
208
+ - `normalizeCrudLookupContainerKey(value, { defaultValue = DEFAULT_CRUD_LOOKUP_CONTAINER_KEY, context = "crud lookup container key" } = {})`
209
+ - `resolveCrudLookupContainerKey(resource = {}, options = {})`
210
+ - `resolveCrudLookupFieldKeys(resource = {}, { allowKeys = [] } = {})`
211
+ - `resolveCrudParentFilterKeys(resource = {})`
212
+ - `resolveCrudLookupFieldKeyFromRouteParam(resource = {}, routeParamKey = "", { allowKeys = [] } = {})`
213
+ - `resolveCrudParentFilterFieldKeyFromRouteParam(resource = {}, routeParamKey = "")`
214
+ Local functions
215
+ - `resolveCrudLookupFieldEntries(resource = {}, { allowKeys = [] } = {})`
216
+ - `resolveCrudLookupCreateSchemaKeys(resource = {})`
217
+
218
+ ### `shared/support/deepFreeze.js`
219
+ Exports
220
+ - `deepFreeze(value, seen = new WeakSet())`
221
+
222
+ ### `shared/support/formatDateTime.js`
223
+ Exports
224
+ - `formatDateTime(value, { fallback = "unknown" } = {})`
225
+
226
+ ### `shared/support/index.js`
227
+ Exports
228
+ - `isRecord`
229
+ - `pickOwnProperties`
230
+ - `formatDateTime`
231
+ - `appendQueryString`
232
+ - `splitPathQueryAndHash`
233
+ - `normalizePermissionList`
234
+ - `hasPermission`
235
+ - `normalizeReturnToPath`
236
+ - `resolveAllowedOriginsFromPlacementContext`
237
+ - `toCamelCase`
238
+ - `toSnakeCase`
239
+ - `isTransientQueryError`
240
+ - `shouldRetryTransientQueryFailure`
241
+ - `transientQueryRetryDelay`
242
+
243
+ ### `shared/support/linkPath.js`
244
+ Exports
245
+ - `isExternalLinkTarget(target = "")`
246
+ - `splitPathQueryHash(target = "")`
247
+ - `resolveLinkPath(basePath = "/", relativePath = "/")`
248
+
249
+ ### `shared/support/listenerSet.js`
250
+ Exports
251
+ - `subscribeListener(listeners, listener)`
252
+ - `createListenerSubscription(listeners)`
253
+
254
+ ### `shared/support/normalize.js`
255
+ Exports
256
+ - `normalizeText(value, { fallback = "" } = {})`
257
+ - `hasValue(value)`
258
+ - `normalizeBoolean(value)`
259
+ - `normalizeFiniteNumber(value)`
260
+ - `normalizeFiniteInteger(value)`
261
+ - `normalizeLowerText(value, { fallback = "" } = {})`
262
+ - `normalizeQueryToken(value, { fallback = "__none__" } = {})`
263
+ - `normalizeObject(value, { fallback = {} } = {})`
264
+ - `normalizeIfInSource(source, normalized, fieldName, normalizer = (value) => value)`
265
+ - `normalizeIfPresent(value, normalizer = (entry) => entry)`
266
+ - `normalizeOrNull(value, normalizer = (entry) => entry)`
267
+ - `isRecord(value)`
268
+ - `normalizeArray(value)`
269
+ - `normalizeUniqueTextList(value, { acceptSingle = false } = {})`
270
+ - `normalizeInteger(value, { fallback = 0, min = null, max = null } = {})`
271
+ - `normalizePositiveInteger(value, { fallback = 0 } = {})`
272
+ - `normalizeCanonicalRecordIdText(value, { fallback = null } = {})`
273
+ - `normalizeRecordId(value, { fallback = null } = {})`
274
+ - `normalizeOpaqueId(value, { fallback = null } = {})`
275
+ - `normalizeOneOf(value, allowedValues = [], fallback = "")`
276
+ - `ensureNonEmptyText(value, label = "value")`
277
+
278
+ ### `shared/support/permissions.js`
279
+ Exports
280
+ - `normalizePermissionList(value)`
281
+ - `hasPermission(permissionSet = [], permission = "")`
282
+
283
+ ### `shared/support/pickOwnProperties.js`
284
+ Exports
285
+ - `pickOwnProperties(source, keys)`
286
+
287
+ ### `shared/support/policies.js`
288
+ Exports
289
+ - `AUTH_POLICY_PUBLIC`
290
+ - `AUTH_POLICY_AUTHENTICATED`
291
+ - `ROUTE_VISIBILITY_PUBLIC`
292
+ - `ROUTE_VISIBILITY_USER`
293
+
294
+ ### `shared/support/providerLogger.js`
295
+ Exports
296
+ - `createProviderLogger(loggerLike = null, { debugEnabled = false, debugMethod = "info" } = {})`
297
+ Local functions
298
+ - `asLogger(value)`
299
+ - `callLoggerMethod(logger, methodName, fallbackMethodName, args)`
300
+
301
+ ### `shared/support/queryPath.js`
302
+ Exports
303
+ - `appendQueryString(path = "", queryString = "")`
304
+ - `splitPathQueryAndHash(path = "")`
305
+ Local functions
306
+ - `splitPathAndHash(path = "")`
307
+
308
+ ### `shared/support/queryResilience.js`
309
+ Exports
310
+ - `TRANSIENT_QUERY_ERROR_STATUSES`
311
+ - `MAX_TRANSIENT_QUERY_RETRIES`
312
+ - `MAX_TRANSIENT_RETRY_DELAY_MS`
313
+ - `normalizeQueryErrorStatus(error)`
314
+ - `isTransientQueryError(error)`
315
+ - `shouldRetryTransientQueryFailure(failureCount, error)`
316
+ - `transientQueryRetryDelay(attemptIndex)`
317
+
318
+ ### `shared/support/returnToPath.js`
319
+ Exports
320
+ - `normalizeAllowedOrigins(allowedOrigins = [])`
321
+ - `normalizeHttpOrigin(value = "")`
322
+ - `normalizeReturnToPath(value, { fallback = "/", allowedOrigins = [], blockedPathnames = [], pickFirstArrayValue = false } = {})`
323
+ - `resolveAllowedOriginsFromSurfaceDefinitions(surfaceDefinitions = {}, { seedOrigins = [] } = {})`
324
+ - `resolveAllowedOriginsFromPlacementContext(contextValue = null, { includeWindowOrigin = true } = {})`
325
+ Local functions
326
+ - `appendNormalizedOrigin(origins, value)`
327
+ - `normalizeBlockedPathnames(blockedPathnames = [])`
328
+
329
+ ### `shared/support/shellLayoutTargets.js`
330
+ Exports
331
+ - `describeShellOutletTargets(targets = [])`
332
+ - `discoverShellOutletTargetsFromVueSource(source = "", { context = "shell layout" } = {})`
333
+ - `findShellOutletTargetById(targets = [], targetId = "")`
334
+ - `normalizeShellOutletTargetId(value = "")`
335
+ - `normalizeShellOutletTargetRecord(value = {}, { context = "shell layout" } = {})`
336
+ - `resolveShellOutletTargetParts({ target = "" } = {})`
337
+ Local functions
338
+ - `parseTagAttributes(attributesSource = "")`
339
+ - `isDefaultAttributeEnabled(value)`
340
+
341
+ ### `shared/support/sorting.js`
342
+ Exports
343
+ - `sortStrings(values = [])`
344
+ - `sortById(items = [], { idSelector = (item) => item?.id } = {})`
345
+
346
+ ### `shared/support/stringCase.js`
347
+ Exports
348
+ - `toCamelCase(value = "")`
349
+ - `toSnakeCase(value = "")`
350
+
351
+ ### `shared/support/tokens.js`
352
+ Exports
353
+ - `isContainerToken`
354
+
355
+ ### `shared/support/visibility.js`
356
+ Exports
357
+ - `ROUTE_VISIBILITY_LEVELS`
358
+ - `ROUTE_VISIBILITY_PUBLIC`
359
+ - `ROUTE_VISIBILITY_USER`
360
+ - `ROUTE_VISIBILITY_WORKSPACE`
361
+ - `ROUTE_VISIBILITY_WORKSPACE_USER`
362
+ - `ROUTE_VISIBILITY_TOKENS`
363
+ - `normalizeRouteVisibilityToken(value, { fallback = ROUTE_VISIBILITY_PUBLIC } = {})`
364
+ - `normalizeRouteVisibility(value, { fallback = ROUTE_VISIBILITY_PUBLIC } = {})`
365
+ - `checkRouteVisibility(value, { context = "checkRouteVisibility" } = {})`
366
+ - `isWorkspaceRouteVisibility(value = "")`
367
+ - `normalizeVisibilityContext(value = {})`
368
+ Local functions
369
+ - `normalizeVisibilityScopeKind(value)`
370
+
371
+ ### `shared/surface/apiPaths.js`
372
+ Exports
373
+ - `API_BASE_PATH`
374
+ - `API_PREFIX`
375
+ - `API_PREFIX_SLASH`
376
+ - `API_DOCS_PATH`
377
+ - `API_REALTIME_PATH`
378
+ - `materializeRouteTemplate(routeTemplate = "/", { params = {}, strictParams = true, context = "materializeRouteTemplate" } = {})`
379
+ - `normalizePathname`
380
+ - `isApiPath(pathname)`
381
+ - `isVersionedApiPath(pathname)`
382
+ - `toVersionedApiPath(pathname)`
383
+ - `toVersionedApiPrefix(pathnameOrPrefix)`
384
+ - `buildVersionedApiPath(suffix)`
385
+ - `isVersionedApiPrefixMatch(pathname)`
386
+ - `resolveScopedRouteBase(routeBase = "/")`
387
+ - `resolveScopedApiBasePath({ routeBase = "/", relativePath = "/", params = {}, strictParams = true } = {})`
388
+ Local functions
389
+ - `normalizeRouteTemplateParams(params = null)`
390
+
391
+ ### `shared/surface/escapeRegExp.js`
392
+ Exports
393
+ - `escapeRegExp(value)`
394
+
395
+ ### `shared/surface/index.js`
396
+ Exports
397
+ - `normalizeSurfaceId`
398
+ - `normalizeSurfacePagesRoot`
399
+ - `deriveSurfaceRouteBaseFromPagesRoot`
400
+ - `createSurfacePathHelpers`
401
+ - `resolveScopedRouteBase`
402
+ - `resolveScopedApiBasePath`
403
+
404
+ ### `shared/surface/paths.js`
405
+ Exports
406
+ - `createSurfacePathHelpers(options = {})`
407
+ - `normalizePathname(pathname)`
408
+ - `matchesPathPrefix(pathname, prefix)`
409
+ Local functions
410
+ - `compileSurfaceRouteMatcher(routeBase)`
411
+ - `compareSurfaceRouteSpecificity(left, right)`
412
+
413
+ ### `shared/surface/registry.js`
414
+ Exports
415
+ - `createSurfaceRegistry(options = {})`
416
+ - `normalizeSurfaceId(value)`
417
+ - `normalizeSurfacePagesRoot(pagesRootLike)`
418
+ - `deriveSurfaceRouteBaseFromPagesRoot(pagesRootLike)`
419
+ Local functions
420
+ - `normalizeRouteSegment(segmentLike)`
421
+
422
+ ### `shared/surface/runtime.js`
423
+ Exports
424
+ - `createSurfaceRuntime(options = {})`
425
+ - `filterRoutesBySurface(routeList, { surfaceRuntime, surfaceMode } = {})`
426
+ Local functions
427
+ - `uniqueSurfaceIds(ids)`
428
+ - `resolveSurfaceIds({ surfaces = {} } = {})`
429
+ - `normalizeRoutePath(pathLike = "")`
430
+ - `resolveAbsoluteRoutePath(parentAbsolutePath = "/", routePath = "")`
431
+ - `readRouteJskitMeta(route)`
432
+ - `resolveRouteExplicitSurface(route)`
433
+ - `resolveOwnRouteScope(route)`
434
+ - `resolveRouteSurface(route, inheritedSurfaceId = "", { surfaceRuntime, absolutePath = "/" } = {})`
435
+ - `normalizeRoutesBySurfaceBoundaries(routeList = [], { surfaceRuntime } = {})`
436
+
437
+ ### `shared/validators/createCursorListValidator.js`
438
+ Exports
439
+ - `createCursorListValidator(itemValidator)`
440
+
441
+ ### `shared/validators/cursorPaginationQueryValidator.js`
442
+ Exports
443
+ - `cursorPaginationQueryValidator`
444
+ Local functions
445
+ - `normalizeCursorPaginationQuery(input = {})`
446
+
447
+ ### `shared/validators/htmlTimeSchemas.js`
448
+ Exports
449
+ - `HTML_TIME_STRING_SCHEMA`
450
+ - `NULLABLE_HTML_TIME_STRING_SCHEMA`
451
+
452
+ ### `shared/validators/index.js`
453
+ Exports
454
+ - `normalizeObjectInput`
455
+ - `createCursorListValidator`
456
+ - `cursorPaginationQueryValidator`
457
+ - `HTML_TIME_STRING_SCHEMA`
458
+ - `NULLABLE_HTML_TIME_STRING_SCHEMA`
459
+ - `mergeObjectSchemas`
460
+ - `mergeValidators`
461
+ - `nestValidator`
462
+ - `RECORD_ID_PATTERN`
463
+ - `recordIdSchema`
464
+ - `recordIdInputSchema`
465
+ - `nullableRecordIdSchema`
466
+ - `nullableRecordIdInputSchema`
467
+ - `recordIdValidator`
468
+ - `nullableRecordIdValidator`
469
+ - `recordIdParamsValidator`
470
+ - `positiveIntegerValidator`
471
+ - `normalizeSettingsFieldInput`
472
+ - `normalizeSettingsFieldOutput`
473
+ - `normalizeRequiredFieldList`
474
+ - `deriveRequiredFieldsFromSchema`
475
+ - `deriveResourceRequiredMetadata`
476
+
477
+ ### `shared/validators/inputNormalization.js`
478
+ Exports
479
+ - `normalizeObjectInput(value)`
480
+
481
+ ### `shared/validators/mergeObjectSchemas.js`
482
+ Exports
483
+ - `mergeObjectSchemas(schemas)`
484
+
485
+ ### `shared/validators/mergeValidators.js`
486
+ Exports
487
+ - `mergeValidators(validators = [], options = {})`
488
+ Local functions
489
+ - `isPromiseLike(value)`
490
+ - `createErrorFactory(createError)`
491
+
492
+ ### `shared/validators/nestValidator.js`
493
+ Exports
494
+ - `nestValidator(key, validator, { required = true } = {})`
495
+ Local functions
496
+ - `normalizeValidator(validator)`
497
+
498
+ ### `shared/validators/recordIdParamsValidator.js`
499
+ Exports
500
+ - `RECORD_ID_PATTERN`
501
+ - `recordIdSchema`
502
+ - `recordIdInputSchema`
503
+ - `nullableRecordIdSchema`
504
+ - `nullableRecordIdInputSchema`
505
+ - `recordIdValidator`
506
+ - `nullableRecordIdValidator`
507
+ - `recordIdParamsValidator`
508
+ - `positiveIntegerValidator`
509
+
510
+ ### `shared/validators/resourceRequiredMetadata.js`
511
+ Exports
512
+ - `normalizeRequiredFieldList(value)`
513
+ - `deriveRequiredFieldsFromSchema(schema)`
514
+ - `deriveResourceRequiredMetadata(resourceSchema)`
515
+
516
+ ### `shared/validators/settingsFieldNormalization.js`
517
+ Exports
518
+ - `normalizeSettingsFieldInput(payload = {}, fields = [])`
519
+ - `normalizeSettingsFieldOutput(payload = {}, fields = [])`
520
+
521
+ ### client
522
+
523
+ ### `client/appConfig.js`
524
+ Exports
525
+ - `CLIENT_APP_CONFIG_GLOBAL_KEY`
526
+ - `setClientAppConfig(source = {})`
527
+ - `getClientAppConfig()`
528
+ Local functions
529
+ - `normalizeClientAppConfig(source = {})`
530
+
531
+ ### `client/componentInteraction.js`
532
+ Exports
533
+ - `createComponentInteractionEmitter(emit)`
534
+
535
+ ### `client/descriptorSections.js`
536
+ Exports
537
+ - `normalizeDescriptorUiRoutes(value)`
538
+ - `normalizeDescriptorClientProviders(value)`
539
+ - `normalizeDescriptorClientOptimizeIncludeSpecifiers(value)`
540
+ - `normalizeClientDescriptorSections(descriptorValue)`
541
+
542
+ ### `client/index.js`
543
+ Exports
544
+ - `getClientAppConfig`
545
+ - `resolveClientBootstrapDebugEnabled`
546
+ - `createShellRouter`
547
+ - `bootstrapClientShellApp`
548
+ - `createComponentInteractionEmitter`
549
+
550
+ ### `client/logging.js`
551
+ Exports
552
+ - `createStructuredLogger(logger = console)`
553
+ - `summarizeRouterRoutes(router)`
554
+
555
+ ### `client/moduleBootstrap.js`
556
+ Exports
557
+ - `bootClientModules({ clientModules = [], app, pinia = null, router, surfaceRuntime, surfaceMode, env, logger = console } = {})`
558
+ Local functions
559
+ - `normalizePackageId(value)`
560
+ - `toRouteSnapshot(route)`
561
+ - `isRouteComponent(value)`
562
+ - `normalizeRoute(route, { packageId, index })`
563
+ - `normalizeRouteList(routes, { packageId })`
564
+ - `toVueRouteRecord(route)`
565
+ - `registerClientModuleRoutes({ packageId, routes = [], router, surfaceRuntime, surfaceMode, seenRoutePaths, seenRouteNames, logger = null, source = "module", descriptorRouteDeclarations = null } = {})`
566
+ - `isProviderClass(candidate)`
567
+ - `normalizeExplicitProviderClasses(value, packageId)`
568
+ - `resolveDescriptorProviderClasses(moduleNamespace, packageId, descriptorClientProviders = [])`
569
+ - `resolveModuleProviderClasses(moduleNamespace, packageId, descriptorClientProviders = [])`
570
+ - `buildDescriptorRouteDeclarationIndex({ packageId, descriptorUiRoutes = [] } = {})`
571
+ - `assertRoutesDeclaredInDescriptor({ packageId, source, normalizedRoutes = [], descriptorRouteDeclarations = null } = {})`
572
+ - `resolveDescriptorClientRoutes({ packageId, descriptorUiRoutes = [], routeComponents = {}, logger = null } = {})`
573
+ - `normalizeClientModuleEntries(clientModules)`
574
+ - `createClientRuntimeApp({ profile = "client", app, pinia = null, router, env, logger, surfaceRuntime, surfaceMode } = {})`
575
+
576
+ ### `client/shellBootstrap.js`
577
+ Exports
578
+ - `resolveClientBootstrapDebugEnabled({ env = {}, debugEnabled = undefined, debugEnvKey = "VITE_JSKIT_CLIENT_DEBUG" } = {})`
579
+ - `createClientBootstrapLogger({ env = {}, logger = console, debugEnabled = undefined, debugEnvKey = "VITE_JSKIT_CLIENT_DEBUG" } = {})`
580
+ - `createSurfaceShellRouter({ createRouter, history, routes = [], surfaceRuntime, surfaceMode, fallbackRoute = null, notFoundComponent = null, guard = false } = {})`
581
+ - `bootstrapClientShellApp({ createApp, rootComponent, appConfig = {}, appPlugins = [], pinia = null, router, bootClientModules, surfaceRuntime, surfaceMode, env = {}, fallbackRoute = null, logger = console, createBootstrapLogger = null, debugEnabled = undefined, debugEnvKey = "VITE_JSKIT_CLIENT_DEBUG", debugMessage = "Client modules bootstrapped before router install.", onAfterModulesBootstrapped = null, mountSelector = "#app" } = {})`
582
+ Local functions
583
+ - `installAppPlugins(app, appPlugins = [])`
584
+
585
+ ### `client/shellRouting.js`
586
+ Exports
587
+ - `AUTH_POLICY_AUTHENTICATED`
588
+ - `AUTH_POLICY_PUBLIC`
589
+ - `WEB_ROOT_ALLOW_YES`
590
+ - `WEB_ROOT_ALLOW_NO`
591
+ - `DEFAULT_GUARD_EVALUATOR_KEY`
592
+ - `createFallbackNotFoundRoute(component)`
593
+ - `buildSurfaceAwareRoutes({ routes = [], surfaceRuntime, surfaceMode, fallbackRoute, notFoundComponent } = {})`
594
+ - `createShellBeforeEachGuard({ surfaceRuntime, surfaceDefinitions, defaultSurfaceId, webRootAllowed = WEB_ROOT_ALLOW_YES, guardEvaluatorKey = DEFAULT_GUARD_EVALUATOR_KEY, authenticatedPolicy = AUTH_POLICY_AUTHENTICATED, publicPolicy = AUTH_POLICY_PUBLIC } = {})`
595
+ Local functions
596
+ - `normalizeGuardPolicy(value)`
597
+ - `resolveRouteGuardFromMeta(meta)`
598
+ - `resolveRouteGuard(to)`
599
+ - `resolveSearchFromFullPath(fullPath)`
600
+ - `resolveSurfaceDefinition(surfaceDefinitions, surfaceId)`
601
+ - `normalizeWebRootAllowed(value)`
602
+ - `resolveDefaultSurfaceRootPath({ surfaceDefinitions, defaultSurfaceId })`
603
+ - `resolveSurfaceRequiresAuth({ pathname, surfaceRuntime, surfaceDefinitions })`
604
+ - `resolveEffectiveRouteGuard({ to, surfaceRuntime, surfaceDefinitions, authenticatedPolicy = AUTH_POLICY_AUTHENTICATED, publicPolicy = AUTH_POLICY_PUBLIC })`
605
+ - `resolveGuardEvaluator(guardEvaluatorKey)`
606
+ - `normalizeGuardOutcome(outcome)`
607
+ - `evaluateShellGuard({ guard, to, guardEvaluatorKey })`
608
+
609
+ ### `client/vite/clientBootstrapPlugin.js`
610
+ Exports
611
+ - `installedClientModules`
612
+ - `bootInstalledClientModules(context = {})`
613
+ - `CLIENT_BOOTSTRAP_VIRTUAL_ID`
614
+ - `CLIENT_BOOTSTRAP_RESOLVED_ID`
615
+ - `createVirtualModuleSource(clientModules = [])`
616
+ - `resolveClientOptimizeIncludeSpecifiers(clientModules = [])`
617
+ - `resolveClientOptimizeExcludeSpecifiers(clientModules = [])`
618
+ - `resolveLocalScopeOptimizeExcludeSpecifiers(localScopePackageIds = [])`
619
+ - `resolveInstalledClientPackageIds(options)`
620
+ - `resolveLocalScopePackageIds({ appRoot, lockPath })`
621
+ - `resolveInstalledClientModules({ appRoot, lockPath })`
622
+ - `createJskitClientBootstrapPlugin({ lockPath = ".jskit/lock.json" } = {})`
623
+ Local functions
624
+ - `isLocalScopePackageId(value)`
625
+ - `readJsonFile(filePath, fallback)`
626
+ - `hasClientExport(packageJson)`
627
+ - `normalizeClientModuleDescriptors(value)`
628
+ - `resolveClientRuntimeDedupeSpecifiers(userResolveConfig = {})`
629
+
630
+ ### `client/vite/index.js`
631
+ Exports
632
+ - `createJskitClientBootstrapPlugin`
633
+
634
+ ### server
635
+
636
+ ### `server/actions/ActionRuntimeServiceProvider.js`
637
+ Exports
638
+ - `resolveActionContributors(scope)`
639
+ - `resolveActionContextContributors(scope)`
640
+ - `registerActionContextContributor(app, token, factory)`
641
+ - `ActionRuntimeServiceProvider`
642
+ Local functions
643
+ - `createSurfaceRuntimeFromAppConfig(scope)`
644
+ - `normalizeDependencyMap(value, { context = "action dependencies" } = {})`
645
+ - `createActionExecutor(actionRegistry)`
646
+ - `createActionContributorToken()`
647
+ - `materializeDependencies(scope, dependencyMap, { context = "action.dependencies" } = {})`
648
+ - `materializeAction(scope, actionDefinition)`
649
+ - `registerActionDefinition(app, actionSpec, { context = "app.action" } = {})`
650
+ - `normalizeSingleActionRegistration(actionDefinition, { context = "app.action" } = {})`
651
+ - `installActionRegistrationApi(app)`
652
+
653
+ ### `server/actions/index.js`
654
+ Exports
655
+ - `resolveActionContributors`
656
+ - `resolveActionContextContributors`
657
+ - `registerActionContextContributor`
658
+ - `ActionRuntimeServiceProvider`
659
+
660
+ ### `server/container/ContainerCoreServiceProvider.js`
661
+ Exports
662
+ - `ContainerCoreServiceProvider`
663
+
664
+ ### `server/container/index.js`
665
+ Exports
666
+ - `Container`
667
+ - `createContainer`
668
+ - `tokenLabel`
669
+ - `ContainerError`
670
+ - `InvalidTokenError`
671
+ - `InvalidFactoryError`
672
+ - `DuplicateBindingError`
673
+ - `UnresolvedTokenError`
674
+ - `CircularDependencyError`
675
+ - `ContainerCoreServiceProvider`
676
+
677
+ ### `server/http/_testable/index.js`
678
+ Exports
679
+ - `createHttpRuntime`
680
+ - `compileRouteValidator`
681
+
682
+ ### `server/http/HttpFastifyServiceProvider.js`
683
+ Exports
684
+ - `HttpFastifyServiceProvider`
685
+
686
+ ### `server/http/index.js`
687
+ Exports
688
+ - `registerRouteVisibilityResolver`
689
+
690
+ ### `server/http/lib/controller.js`
691
+ Exports
692
+ - `BaseController`
693
+ - `DEFAULT_DOMAIN_ERROR_STATUS_BY_CODE`
694
+ - `resolveDomainErrorStatus({ status, code, domainErrorStatusByCode = DEFAULT_DOMAIN_ERROR_STATUS_BY_CODE, fallbackStatus = 422 } = {})`
695
+ Local functions
696
+ - `normalizeStatus(status, fallbackStatus)`
697
+ - `normalizeCode(code)`
698
+ - `ensureReply(reply, methodName)`
699
+ - `applyHeaders(reply, headers)`
700
+
701
+ ### `server/http/lib/errors.js`
702
+ Exports
703
+ - `HttpKernelError`
704
+ - `RouteDefinitionError`
705
+ - `RouteRegistrationError`
706
+
707
+ ### `server/http/lib/httpRuntime.js`
708
+ Exports
709
+ - `registerHttpRuntime(app, options = {})`
710
+ - `createHttpRuntime({ app = null, fastify = null, router = null, autoRegisterApiErrorHandling = true, apiErrorHandling = {} } = {})`
711
+
712
+ ### `server/http/lib/index.js`
713
+ Exports
714
+ - `HttpKernelError`
715
+ - `RouteDefinitionError`
716
+ - `RouteRegistrationError`
717
+ - `HttpRouter`
718
+ - `createRouter`
719
+ - `joinPath`
720
+ - `defineRouteValidator`
721
+ - `compileRouteValidator`
722
+ - `resolveRouteValidatorOptions`
723
+ - `BaseController`
724
+ - `DEFAULT_DOMAIN_ERROR_STATUS_BY_CODE`
725
+ - `resolveDomainErrorStatus`
726
+ - `defaultMissingHandler`
727
+ - `defaultApplyRoutePolicy`
728
+ - `normalizeRoutePolicyConfig`
729
+ - `registerRoutes`
730
+ - `registerHttpRuntime`
731
+ - `createHttpRuntime`
732
+ - `resolveRouteVisibilityResolvers`
733
+ - `registerRouteVisibilityResolver`
734
+ - `resolveRouteVisibilityContext`
735
+
736
+ ### `server/http/lib/kernel.js`
737
+ Exports
738
+ - `defaultMissingHandler`
739
+ - `defaultApplyRoutePolicy`
740
+ - `normalizeRoutePolicyConfig`
741
+ - `buildActionExecutionContext`
742
+ - `attachRequestActionExecutor`
743
+ - `registerRoutes`
744
+ - `registerHttpRuntime`
745
+ - `createHttpRuntime`
746
+
747
+ ### `server/http/lib/middlewareRuntime.js`
748
+ Exports
749
+ - `executeMiddlewareStack(middleware, request, reply)`
750
+ - `normalizeRuntimeMiddlewareConfig(runtimeMiddleware)`
751
+ - `resolveRouteMiddlewareHandlers(route, runtimeMiddlewareConfig)`
752
+ Local functions
753
+ - `normalizeMiddlewareName(value)`
754
+ - `normalizeMiddlewareAliases(sourceAliases)`
755
+ - `normalizeMiddlewareGroups(sourceGroups)`
756
+ - `expandMiddlewareEntry({ entry, runtimeMiddlewareConfig, resolvedHandlers, groupStack, routeLabel })`
757
+
758
+ ### `server/http/lib/requestActionExecutor.js`
759
+ Exports
760
+ - `buildActionExecutionContext({ request = null, context = {}, channel = "api", defaultSurfaceId = "" } = {})`
761
+ - `attachRequestActionExecutor({ app = null, request = null, requestScopeProperty = "scope", requestActionExecutorProperty = "executeAction", actionExecutorToken = "actionExecutor", defaultChannel = "api", defaultSurfaceId = "" } = {})`
762
+ Local functions
763
+ - `normalizeRequestActionExecutorProperty(value)`
764
+ - `resolveSurfaceFromRequest(request, explicitSurface = "", defaultSurfaceId = "")`
765
+ - `applyActionContextContributionDefaults(targetContext, contribution)`
766
+ - `enrichActionExecutionContext({ resolutionScope = null, request = null, actionId = "", version = null, definition = null, input = {}, deps = {}, channel = "api", baseContext = {} } = {})`
767
+ - `resolveActionExecutorScope({ app = null, request = null, requestScopeProperty = "scope" } = {})`
768
+ - `resolveRouteVisibilityFromRequestAndPayload(request, payload = {})`
769
+
770
+ ### `server/http/lib/requestScope.js`
771
+ Exports
772
+ - `normalizeRequestScopeProperty(value)`
773
+ - `attachRequestScope({ app = null, request = null, reply = null, requestScopeProperty = "scope", requestScopeIdPrefix = "http", requestIdResolver = null } = {})`
774
+ Local functions
775
+ - `resolveRequestRuntimeId({ request = null, requestIdResolver = null } = {})`
776
+
777
+ ### `server/http/lib/router.js`
778
+ Exports
779
+ - `HttpRouter`
780
+ - `createRouter(options = {})`
781
+ - `joinPath(left, right)`
782
+ Local functions
783
+ - `normalizeMethod(method)`
784
+ - `normalizePath(pathname)`
785
+ - `normalizeRouterMiddlewareStack(value, { context = "middleware" } = {})`
786
+ - `normalizeRouteInput(method, path, optionsOrHandler, maybeHandler)`
787
+
788
+ ### `server/http/lib/routeRegistration.js`
789
+ Exports
790
+ - `defaultMissingHandler`
791
+ - `registerRoutes(fastify, { routes = [], app = null, applyRoutePolicy = defaultApplyRoutePolicy, missingHandler = defaultMissingHandler, enableRequestScope = true, requestScopeProperty = "scope", requestActionExecutorProperty = "executeAction", actionExecutorToken = "actionExecutor", requestActionDefaultChannel = "api", requestActionDefaultSurface = "", requestScopeIdPrefix = "http", requestIdResolver = null, middleware = {} } = {})`
792
+ Local functions
793
+ - `toFastifyRouteOptions(route)`
794
+ - `normalizeRouteInputTransforms(route)`
795
+ - `buildRequestInput({ request = null, inputTransforms = null } = {})`
796
+
797
+ ### `server/http/lib/routeSupport.js`
798
+ Exports
799
+ - `resolveRouteLabel({ method = "", path = "" } = {})`
800
+ - `normalizeMiddlewareEntry(entry, { context = "middleware", index = -1, ErrorType = Error, entryLabel = "entry" } = {})`
801
+ - `normalizeMiddlewareStack(value, { context = "middleware", ErrorType = Error, entryLabel = "entry", includeIndex = true } = {})`
802
+
803
+ ### `server/http/lib/routeValidator.js`
804
+ Exports
805
+ - `defineRouteValidator(definition = {})`
806
+ - `compileRouteValidator(validator, { context = "route validator" } = {})`
807
+ - `resolveRouteValidatorOptions({ method = "", path = "", options = {} } = {})`
808
+ Local functions
809
+ - `passThroughInputSection(value)`
810
+ - `normalizeOptionalValidatorTransformer(source, normalized, { context = "route validator" } = {})`
811
+ - `normalizeSingleRouteValidator(value, { context = "route validator" } = {})`
812
+ - `mergeNormalizedRouteValidators(validators, { context = "route validator" } = {})`
813
+ - `normalizeRouteValidator(value, { context = "route validator", allowArray = false } = {})`
814
+ - `normalizeResponseValidatorEntry(value, { context = "route validator response entry" } = {})`
815
+ - `normalizeResponseValidatorDefinition(value, { context = "route validator.response" } = {})`
816
+ - `normalizeAdvancedFastifySchema(value, { context = "route validator" } = {})`
817
+ - `normalizeAdvancedJskitInput(value, { context = "route validator" } = {})`
818
+ - `normalizeRouteValidatorMeta(value, { context = "route validator" } = {})`
819
+ - `normalizeRouteValidatorDefinition(sourceDefinition, { context = "route validator" } = {})`
820
+ - `compileNormalizedRouteValidator(normalizedValidator)`
821
+ - `normalizeRouteValidatorSource(validator, { context = "route validator" } = {})`
822
+
823
+ ### `server/kernel/index.js`
824
+ Exports
825
+ - `Application`
826
+ - `createApplication`
827
+ - `createProviderClass`
828
+ - `ServiceProvider`
829
+ - `KernelError`
830
+ - `ProviderNormalizationError`
831
+ - `DuplicateProviderError`
832
+ - `ProviderDependencyError`
833
+ - `ProviderLifecycleError`
834
+ - `KernelCoreServiceProvider`
835
+
836
+ ### `server/kernel/KernelCoreServiceProvider.js`
837
+ Exports
838
+ - `KernelCoreServiceProvider`
839
+
840
+ ### `server/platform/index.js`
841
+ Exports
842
+ - `registerSurfaceRequestConstraint`
843
+ - `resolveRuntimeProfileFromSurface`
844
+ - `tryCreateProviderRuntimeFromApp`
845
+
846
+ ### `server/platform/PlatformServerRuntimeServiceProvider.js`
847
+ Exports
848
+ - `PlatformServerRuntimeServiceProvider`
849
+
850
+ ### `server/platform/providerRuntime.js`
851
+ Exports
852
+ - `createProviderRuntimeApp({ profile = "", providers = [], env = {}, logger = console, fastify = null } = {})`
853
+ - `createProviderRuntimeFromApp({ appRoot, lockPath = ".jskit/lock.json", profile = "", env = {}, logger = console, fastify = null } = {})`
854
+
855
+ ### `server/platform/providerRuntime/descriptorCatalog.js`
856
+ Exports
857
+ - `collectGlobalUiPaths(descriptorEntries)`
858
+ - `resolveInstalledPackageDescriptors({ appRoot, lock })`
859
+ - `resolveDescriptorLoadOrder(descriptorEntries)`
860
+ - `validateDescriptorCapabilities(descriptorEntries, { builtinProvidersByCapability = {} } = {})`
861
+ Local functions
862
+ - `normalizeUiRoutePath(pathValue)`
863
+ - `registerCapabilityProvider(providersByCapability, capabilityId, providerPackageId)`
864
+
865
+ ### `server/platform/providerRuntime/helpers.js`
866
+ Exports
867
+ - `isIdentifier(value)`
868
+ - `createWildcardMatcher(pattern)`
869
+ - `normalizeRelativePath(fromPath, targetPath)`
870
+ - `fileExists`
871
+ - `isInsidePackageRoot(packageRoot, candidatePath)`
872
+ - `toAbsoluteSortedUniquePaths(values)`
873
+
874
+ ### `server/platform/providerRuntime/lockfile.js`
875
+ Exports
876
+ - `readLockFromApp({ appRoot, lockPath = ".jskit/lock.json" } = {})`
877
+
878
+ ### `server/platform/providerRuntime/providerLoader.js`
879
+ Exports
880
+ - `loadPackageProviders({ descriptorEntry })`
881
+ - `registerProviderClass({ providerClass, sourceId, seenProviderIds, orderedProviderClasses })`
882
+ Local functions
883
+ - `normalizeServerProviderDefinitions(descriptor, packageId)`
884
+ - `isProviderDefinition(value)`
885
+ - `normalizeProviderExportValue(value, { packageId, label })`
886
+ - `resolveProviderClassesFromModule(moduleNamespace, { packageId, providerExport })`
887
+ - `collectDiscoveredProviderModulePaths({ descriptorEntry, providerDefinition })`
888
+
889
+ ### `server/platform/runtime.js`
890
+ Exports
891
+ - `createPlatformRuntimeBundle({ repositoryDefinitions = [], serviceDefinitions = [], controllerDefinitions = [], runtimeServiceIds = [] } = {})`
892
+ - `createServerRuntime({ bundles = [], dependencies = {} } = {})`
893
+ - `createServerRuntimeWithPlatformBundle({ platformBundle, appFeatureBundle, dependencies = {} } = {})`
894
+
895
+ ### `server/platform/surfaceRuntime.js`
896
+ Exports
897
+ - `toRequestPathname(urlValue)`
898
+ - `shouldServePathForSurface({ surfaceRuntime, pathname, serverSurface, apiPathPrefix = "/api/", globalUiPaths = [] } = {})`
899
+ - `registerSurfaceRequestConstraint({ fastify, surfaceRuntime, serverSurface, apiPathPrefix = "/api/", globalUiPaths = [] } = {})`
900
+ - `resolveRuntimeProfileFromSurface({ surfaceRuntime, serverSurface, defaultProfile = "" } = {})`
901
+ - `tryCreateProviderRuntimeFromApp(options = {})`
902
+ Local functions
903
+ - `matchesGlobalUiPath(pathname, globalUiPaths = [])`
904
+
905
+ ### `server/registries/actionSurfaceSourceRegistry.js`
906
+ Exports
907
+ - `ensureActionSurfaceSourceRegistry(app)`
908
+ - `resolveActionSurfaceSourceIds(scope, sourceName, { context = "action.surfacesFrom" } = {})`
909
+ Local functions
910
+ - `normalizeSurfaceIdValue(value)`
911
+ - `normalizeSurfaceSourceName(sourceName, { context = "action surface source" } = {})`
912
+ - `resolveSurfaceRuntime(scope)`
913
+ - `resolveEnabledSurfaceIds(surfaceRuntime)`
914
+ - `normalizeSurfaceIdList(surfaceIds, { context = "action.surfacesFrom", surfaceRuntime = null } = {})`
915
+ - `createActionSurfaceSourceRegistry()`
916
+ - `resolveActionSurfaceSourceRegistry(scope)`
917
+ - `installActionSurfaceSourceRegistrationApi(app)`
918
+
919
+ ### `server/registries/bootstrapPayloadContributorRegistry.js`
920
+ Exports
921
+ - `registerBootstrapPayloadContributor(app, token, factory)`
922
+ - `resolveBootstrapPayloadContributors(scope)`
923
+ - `resolveBootstrapPayload(scope, context = {})`
924
+
925
+ ### `server/registries/domainEventListenerRegistry.js`
926
+ Exports
927
+ - `registerDomainEventListener(app, token, factory)`
928
+ - `resolveDomainEventListeners(scope)`
929
+ - `createDomainEvents(scope)`
930
+ Local functions
931
+ - `normalizeDomainEventListener(entry)`
932
+
933
+ ### `server/registries/index.js`
934
+ Exports
935
+ - `registerBootstrapPayloadContributor`
936
+ - `resolveBootstrapPayloadContributors`
937
+ - `resolveBootstrapPayload`
938
+ - `registerDomainEventListener`
939
+ - `resolveDomainEventListeners`
940
+ - `createDomainEvents`
941
+ - `normalizeServiceRegistration`
942
+ - `materializeServiceRegistration`
943
+ - `registerServiceRegistration`
944
+ - `resolveServiceRegistrations`
945
+ - `installServiceRegistrationApi`
946
+ - `resolveRouteVisibilityResolvers`
947
+ - `registerRouteVisibilityResolver`
948
+ - `resolveRouteVisibilityContext`
949
+ - `ensureActionSurfaceSourceRegistry`
950
+ - `resolveActionSurfaceSourceIds`
951
+ - `normalizeNestedEntries`
952
+ - `assertTaggableApp`
953
+ - `registerTaggedSingleton`
954
+ - `resolveTaggedEntries`
955
+
956
+ ### `server/registries/primitives.js`
957
+ Exports
958
+ - `normalizeNestedEntries(value)`
959
+ - `assertTaggableApp(app, { context = "registry", ErrorType = Error } = {})`
960
+ - `registerTaggedSingleton(app, token, factory, tag, { context = "registry", ErrorType = Error } = {})`
961
+ - `resolveTaggedEntries(scope, tag)`
962
+ - `normalizeContributorEntry(entry)`
963
+
964
+ ### `server/registries/routeVisibilityResolverRegistry.js`
965
+ Exports
966
+ - `resolveRouteVisibilityResolvers(scope)`
967
+ - `registerRouteVisibilityResolver(app, token, factory)`
968
+ - `resolveRouteVisibilityContext({ resolutionScope = null, request = null, routeVisibility = ROUTE_VISIBILITY_PUBLIC, context = {}, input = {}, deps = {}, actionId = "", version = null, channel = "api" } = {})`
969
+ Local functions
970
+ - `normalizeRouteVisibilityResolver(entry)`
971
+
972
+ ### `server/registries/serviceRegistrationRegistry.js`
973
+ Exports
974
+ - `normalizeServiceRegistration(value = {})`
975
+ - `materializeServiceRegistration(scope, registrationSpec)`
976
+ - `registerServiceRegistration(app, token, factory)`
977
+ - `resolveServiceRegistrations(scope)`
978
+ - `installServiceRegistrationApi(app)`
979
+ Local functions
980
+ - `normalizeMethodName(value, { context = "service method" } = {})`
981
+ - `createServiceRegistrationToken()`
982
+ - `normalizeServiceEventType(value, { context = "service event" } = {})`
983
+ - `normalizeServiceEventOperation(value, { context = "service event" } = {})`
984
+ - `normalizeServiceEventEntityId(value)`
985
+ - `normalizeRealtimeDispatch(value, { context = "service event.realtime" } = {})`
986
+ - `normalizeRealtimeAudience(value, { context = "service event.realtime.audience" } = {})`
987
+ - `normalizeServiceEventSpec(entry, { context = "service event" } = {})`
988
+ - `normalizeServiceMetadata(value = {})`
989
+ - `normalizeServiceEventsForDefinition(serviceDefinition, serviceMetadata)`
990
+ - `resolveMethodOptions(args = [])`
991
+ - `resolveEventOperation(spec, state)`
992
+ - `resolveEventEntityId(spec, state)`
993
+ - `resolveEventMeta(spec, state)`
994
+ - `createServiceMethodEventPublisher(scope, serviceToken, methodName, specs = [])`
995
+
996
+ ### `server/runtime/apiRouteRegistration.js`
997
+ Exports
998
+ - `registerApiRouteDefinitions(fastify, { routes = [], applyRoutePolicy = defaultApplyRoutePolicy, resolveRequestUrl = null, missingHandler } = {})`
999
+ - `__testables`
1000
+ Local functions
1001
+ - `buildBaseRouteOptions(route)`
1002
+
1003
+ ### `server/runtime/bootBootstrapRoutes.js`
1004
+ Exports
1005
+ - `bootBootstrapRoutes(app)`
1006
+ - `bootstrapQueryValidator`
1007
+ - `bootstrapOutputValidator`
1008
+
1009
+ ### `server/runtime/canonicalJson.js`
1010
+ Exports
1011
+ - `toCanonicalJson(value)`
1012
+ - `toSha256Hex(value)`
1013
+ - `toHmacSha256Hex(secret, value)`
1014
+ - `safeParseJson(value, fallback = null)`
1015
+ - `__testables`
1016
+ Local functions
1017
+ - `isPlainObject(value)`
1018
+ - `sortValue(value)`
1019
+
1020
+ ### `server/runtime/composition.js`
1021
+ Exports
1022
+ - `createRepositoryRegistry(definitions)`
1023
+ - `createServiceRegistry({ definitions, dependencies = {} } = {})`
1024
+ - `createControllerRegistry({ definitions, services = {}, dependencies = {} } = {})`
1025
+ - `selectRuntimeServices(services, selectedIds = [])`
1026
+ - `createRuntimeComposition({ repositoryDefinitions = [], serviceDefinitions = [], controllerDefinitions = [], runtimeServiceIds = [], repositoryDependencies = {}, serviceDependencies = {}, controllerDependencies = {} } = {})`
1027
+ - `__testables`
1028
+ Local functions
1029
+ - `normalizeRegistryDefinitions(definitions, { registryKind = "registry" } = {})`
1030
+ - `createRegistryFromDefinitions(definitions, createArgsFactory, options = {})`
1031
+
1032
+ ### `server/runtime/domainRules.js`
1033
+ Exports
1034
+ - `collectDomainFieldErrors(rules)`
1035
+ - `assertNoDomainRuleFailures(rules, { message = "Domain validation failed.", code = "domain_validation_failed" } = {})`
1036
+
1037
+ ### `server/runtime/entityChangeEvents.js`
1038
+ Exports
1039
+ - `resolveDefaultScope(visibilityContext = {}, runtime = {})`
1040
+ - `createEntityChangePublisher({ domainEvents, source, entity, scopeResolver = resolveDefaultScope } = {})`
1041
+ - `createNoopEntityChangePublisher()`
1042
+ Local functions
1043
+ - `resolveContextScope(context = {})`
1044
+ - `resolveVisibilityScope(visibilityContext = {}, runtimeContext = {})`
1045
+ - `resolveCommandId(requestMeta = {})`
1046
+ - `resolveSourceClientId(requestMeta = {})`
1047
+
1048
+ ### `server/runtime/errors.js`
1049
+ Exports
1050
+ - `isAppError(error)`
1051
+ - `isDomainError(error)`
1052
+ - `createValidationError(fieldErrors)`
1053
+ - `AppError`
1054
+ - `DomainError`
1055
+ - `DomainValidationError`
1056
+ - `ConflictError`
1057
+ - `NotFoundError`
1058
+
1059
+ ### `server/runtime/fastifyBootstrap.js`
1060
+ Exports
1061
+ - `resolveLoggerLevel({ configuredLevel = "", nodeEnv = "development", allowedLevels = [] } = {})`
1062
+ - `createFastifyLoggerOptions({ configuredLevel = "", nodeEnv = "development", allowedLevels = [], redactPaths = [], redactCensor = "[REDACTED]" } = {})`
1063
+ - `registerRequestLoggingHooks(app, { requestStartedAtSymbol, getPathname, getSurface, observeRequest, enableRequestLogs = true, defaultSurfaceId = "" } = {})`
1064
+ - `registerApiErrorHandler(app, { isAppError, onRecordDbError, onCaptureServerError, appErrorLogMessage = "AppError 5xx", unhandledErrorLogMessage = "Unhandled error" } = {})`
1065
+ - `ensureApiErrorHandling(app, { fastifyToken = "jskit.fastify", markerToken = "kernel.runtime.apiErrorHandlerRegistered", isAppError: isAppErrorOverride, autoRegister = true, ...handlerOptions } = {})`
1066
+ - `resolveDatabaseErrorCode(error)`
1067
+ - `recordDbErrorBestEffort(observabilityService, error)`
1068
+ - `runGracefulShutdown({ signal = "", exitProcess = false, exitCode = 0, timeoutMs = 10_000, appInstance = null, stopBackgroundRuntimes = () => {}, closeDatabase = async () => {}, logger = console } = {})`
1069
+ Local functions
1070
+ - `resolveValidationFieldErrors(error)`
1071
+
1072
+ ### `server/runtime/index.js`
1073
+ Exports
1074
+ - `AppError`
1075
+ - `createValidationError`
1076
+ - `parsePositiveInteger`
1077
+ - `requireAuth`
1078
+ - `installServiceRegistrationApi`
1079
+ - `resolveServiceRegistrations`
1080
+ - `registerDomainEventListener`
1081
+ - `registerBootstrapPayloadContributor`
1082
+
1083
+ ### `server/runtime/integers.js`
1084
+ Exports
1085
+ - `parsePositiveInteger(value)`
1086
+ - `normalizeNullablePositiveInteger(value)`
1087
+
1088
+ ### `server/runtime/moduleConfig.js`
1089
+ Exports
1090
+ - `ModuleConfigError`
1091
+ - `defineModuleConfig({ moduleId, schema, load = ({ env }) => env, transform = null, validate = null, coerce = false, freeze = true } = {})`
1092
+ Local functions
1093
+ - `normalizeModuleId(value)`
1094
+ - `normalizeSchema(value)`
1095
+ - `normalizeIssuePath(issue)`
1096
+ - `normalizeIssueMessage(issue)`
1097
+ - `normalizeValidationIssues(rawIssues = [])`
1098
+ - `formatIssues(issues = [])`
1099
+ - `buildInvalidConfigMessage(moduleId, issues = [])`
1100
+ - `normalizeCustomValidationIssues(result)`
1101
+ - `validateSchemaOrThrow({ moduleId, schema, value, coerce = false })`
1102
+
1103
+ ### `server/runtime/pagination.js`
1104
+ Exports
1105
+ - `normalizePagination(pagination = {}, { defaultPage = 1, defaultPageSize = 20, maxPageSize = 100 } = {})`
1106
+
1107
+ ### `server/runtime/realtimeNormalization.js`
1108
+ Exports
1109
+ - `normalizePositiveIntegerOrNull(value)`
1110
+ - `normalizeScopeKind(value)`
1111
+
1112
+ ### `server/runtime/requestUrl.js`
1113
+ Exports
1114
+ - `safeRequestUrl(request)`
1115
+ - `safePathnameFromRequest(request)`
1116
+ - `resolveClientIpAddress(request)`
1117
+
1118
+ ### `server/runtime/routeUtils.js`
1119
+ Exports
1120
+ - `defaultMissingHandler`
1121
+ - `normalizeIdempotencyKey(value)`
1122
+ - `requireIdempotencyKey(request)`
1123
+
1124
+ ### `server/runtime/runtimeAssembly.js`
1125
+ Exports
1126
+ - `mergeRuntimeBundles(bundles = [])`
1127
+ - `createRuntimeAssembly({ bundles = [], dependencies = {}, repositoryDependencies = {}, serviceDependencies = {}, controllerDependencies = {} } = {})`
1128
+ - `buildRoutesFromManifest({ definitions = [], controllers = {}, routeConfig = {}, missingHandler } = {})`
1129
+ - `__testables`
1130
+ Local functions
1131
+ - `normalizeRuntimeBundles(bundles)`
1132
+ - `normalizeRouteModuleDefinitions(definitions)`
1133
+
1134
+ ### `server/runtime/runtimeKernel.js`
1135
+ Exports
1136
+ - `normalizeRuntimeBundle(bundle = {})`
1137
+ - `createRuntimeKernel({ runtimeBundle, dependencies = {}, repositoryDependencies = {}, serviceDependencies = {}, controllerDependencies = {} } = {})`
1138
+ - `__testables`
1139
+ Local functions
1140
+ - `normalizeDefinitions(value)`
1141
+ - `normalizeRuntimeServiceIds(value)`
1142
+
1143
+ ### `server/runtime/securityAudit.js`
1144
+ Exports
1145
+ - `buildAuditEventBase(request, { resolveSurfaceFromPathname = null, defaultSurfaceId = "" } = {})`
1146
+ - `buildAuditError(error)`
1147
+ - `recordAuditEvent({ auditService, request, event, resolveSurfaceFromPathname = null, defaultSurfaceId = "" })`
1148
+ - `withAuditEvent({ auditService, request, action, execute, shared, metadata, onSuccess, onFailure, resolveSurfaceFromPathname = null, defaultSurfaceId = "" })`
1149
+ - `__testables`
1150
+ Local functions
1151
+ - `resolveAuditSurface(pathnameValue, explicitSurface = "", resolveSurfaceFromPathname = null, defaultSurfaceId = "")`
1152
+ - `normalizeObjectPayload(value)`
1153
+ - `resolveObjectPayload(value, context)`
1154
+ - `mergeMetadataPayloads(...payloads)`
1155
+ - `buildEventPayload({ action, outcome, shared, event, metadata, context })`
1156
+ - `mergeFailureMetadata(error, metadata)`
1157
+ - `logAuditFailure(request, payload, message)`
1158
+ - `safeBuildEventPayload({ request, action, outcome, shared, event, metadata, context, stage })`
1159
+ - `safeRecordAuditEvent({ auditService, request, event, resolveSurfaceFromPathname = null, defaultSurfaceId = "" })`
1160
+
1161
+ ### `server/runtime/ServerRuntimeCoreServiceProvider.js`
1162
+ Exports
1163
+ - `ServerRuntimeCoreServiceProvider`
1164
+
1165
+ ### `server/runtime/serviceAuthorization.js`
1166
+ Exports
1167
+ - `resolveServiceContext(source = {})`
1168
+ - `hasPermission`
1169
+ - `requireAuth(source = {}, options = {})`
1170
+ Local functions
1171
+ - `resolveRequireMode(value)`
1172
+ - `normalizeRequireAuthOptions(options = {}, { context = "requireAuth options" } = {})`
1173
+ - `requireAuthenticatedActor(context = {}, options = {})`
1174
+
1175
+ ### `server/support/appConfig.js`
1176
+ Exports
1177
+ - `resolveAppConfig(scope = null)`
1178
+ - `normalizeDefaultSurfaceId(value, { fallback = "" } = {})`
1179
+ - `resolveDefaultSurfaceId(scope = null, { defaultSurfaceId = "" } = {})`
1180
+
1181
+ ### `server/support/appConfigFiles.js`
1182
+ Exports
1183
+ - `loadAppConfigFromModuleUrl({ moduleUrl = import.meta.url, publicConfigRelativePath = PUBLIC_CONFIG_RELATIVE_PATH, serverConfigRelativePath = SERVER_CONFIG_RELATIVE_PATH } = {})`
1184
+ Local functions
1185
+ - `normalizeConfigObject(value)`
1186
+ - `resolveAppRootFromModuleUrl(moduleUrl, { publicConfigRelativePath = PUBLIC_CONFIG_RELATIVE_PATH } = {})`
1187
+ - `loadConfigModuleAtPath(absolutePath)`
1188
+
1189
+ ### `server/support/defaultMissingHandler.js`
1190
+ Exports
1191
+ - `defaultMissingHandler(_request, reply)`
1192
+
1193
+ ### `server/support/importFreshModuleFromAbsolutePath.js`
1194
+ Exports
1195
+ - `importFreshModuleFromAbsolutePath(absolutePath)`
1196
+ Local functions
1197
+ - `nextFreshImportToken()`
1198
+
1199
+ ### `server/support/index.js`
1200
+ Exports
1201
+ - `symlinkSafeRequire`
1202
+ - `resolveAppConfig`
1203
+ - `loadAppConfigFromModuleUrl`
1204
+ - `importFreshModuleFromAbsolutePath`
1205
+ - `resolveRequiredAppRoot`
1206
+ - `toPosixPath`
1207
+ - `DEFAULT_PAGE_LINK_COMPONENT_TOKEN`
1208
+ - `DEFAULT_SUBPAGE_LINK_COMPONENT_TOKEN`
1209
+ - `listSurfacePageRoots`
1210
+ - `normalizePagesRelativeTargetFile`
1211
+ - `normalizePagesRelativeTargetRoot`
1212
+ - `resolveBestSurfaceMatchFromPageFile`
1213
+ - `resolvePageTargetDetails`
1214
+ - `deriveDefaultSubpagesHost`
1215
+ - `resolveNearestParentSubpagesHost`
1216
+ - `resolvePageLinkTargetDetails`
1217
+ - `discoverShellOutletTargetsFromApp`
1218
+ - `resolveShellOutletPlacementTargetFromApp`
1219
+
1220
+ ### `server/support/pageTargets.js`
1221
+ Exports
1222
+ - `DEFAULT_PAGE_LINK_COMPONENT_TOKEN`
1223
+ - `DEFAULT_SUBPAGE_LINK_COMPONENT_TOKEN`
1224
+ - `listSurfacePageRoots(appRoot = "", { context = "page target" } = {})`
1225
+ - `normalizePagesRelativeTargetFile(targetFile = "", { context = "page target", label = "target file" } = {})`
1226
+ - `normalizePagesRelativeTargetRoot(targetRoot = "", { context = "page target", label = "target root" } = {})`
1227
+ - `resolveBestSurfaceMatchFromPageFile(relativePath = "", surfacePageRoots = [], { context = "page target" } = {})`
1228
+ - `resolvePageTargetDetails({ appRoot, targetFile = "", context = "page target" } = {})`
1229
+ - `deriveDefaultSubpagesHost(pageTarget = {})`
1230
+ - `resolveNearestParentSubpagesHost({ appRoot, pageTarget = {}, context = "page target" } = {})`
1231
+ - `resolvePageLinkTargetDetails({ appRoot, targetFile = "", pageTarget = null, placement = "", componentToken = "", linkTo = "", defaultComponentToken = DEFAULT_PAGE_LINK_COMPONENT_TOKEN, subpageComponentToken = DEFAULT_SUBPAGE_LINK_COMPONENT_TOKEN, context = "page target" } = {})`
1232
+ Local functions
1233
+ - `normalizeRelativeFilePath(value = "")`
1234
+ - `validateVueTargetFile(relativePath = "", { context = "page target" } = {})`
1235
+ - `isAbsolutePathInput(value = "")`
1236
+ - `resolvePagesRelativeAppPath(value = "", { context = "page target", label = "target path" } = {})`
1237
+ - `splitTextIntoWords(value = "")`
1238
+ - `wordsToKebab(words = [])`
1239
+ - `toTitleCase(words = [])`
1240
+ - `isRouteGroupSegment(value = "")`
1241
+ - `isIndexRouteSegment(value = "")`
1242
+ - `isPathlessRouteSegment(value = "")`
1243
+ - `normalizePlacementIdSegment(value = "")`
1244
+ - `humanizePageSegment(value = "", fallback = "Page")`
1245
+ - `loadPublicConfig(appRoot = "", { context = "page target" } = {})`
1246
+ - `normalizeSurfaceAccessPolicyId(value = "")`
1247
+ - `resolveSurfaceRequiresAuth(surfaceDefinition = {}, surfaceAccessPolicies = {})`
1248
+ - `deriveSurfaceMatchesFromPageFile(relativePath = "", surfacePageRoots = [])`
1249
+ - `compareSurfaceMatchSpecificity(leftMatch = {}, rightMatch = {})`
1250
+ - `deriveRouteInfoFromSurfaceRelativeFile(surfaceRelativeFilePath = "", surfaceId = "")`
1251
+ - `buildRouteUrlSuffixFromVisibleSegments(segments = [])`
1252
+ - `buildAncestorRouteContexts(pageTarget = {})`
1253
+ - `buildParentPageFileCandidates(pageTarget = {}, ancestorRoute = {})`
1254
+ - `resolveSubpagesHostTargetFromPageSource(source = "")`
1255
+ - `normalizePlacementTargetId(target = {})`
1256
+ - `resolveRelativeLinkToFromParent(pageTarget = {}, parentHost = null)`
1257
+ - `resolveRelativeLinkToFromNearestIndexOwner(pageTarget = {})`
1258
+ - `resolveInferredPageLinkTo({ explicitLinkTo = "", pageTarget = {}, parentHost = null, placementTarget = null } = {})`
1259
+ - `resolveInferredPageLinkComponentToken({ explicitComponentToken = "", parentHost = null, placementTarget = null, defaultComponentToken = DEFAULT_PAGE_LINK_COMPONENT_TOKEN, subpageComponentToken = DEFAULT_SUBPAGE_LINK_COMPONENT_TOKEN } = {})`
1260
+ - `renderPageLinkWhenLine(pageTarget = {})`
1261
+
1262
+ ### `server/support/path.js`
1263
+ Exports
1264
+ - `resolveRequiredAppRoot(appRoot, { context = "operation" } = {})`
1265
+ - `toPosixPath(value = "")`
1266
+
1267
+ ### `server/support/routePolicyConfig.js`
1268
+ Exports
1269
+ - `normalizeRoutePolicyConfig(routeOptions, route)`
1270
+ - `defaultApplyRoutePolicy(routeOptions, route)`
1271
+
1272
+ ### `server/support/shellOutlets.js`
1273
+ Exports
1274
+ - `discoverShellOutletTargetsFromApp({ appRoot, sourceRoot = "src" } = {})`
1275
+ - `resolveShellOutletPlacementTargetFromApp({ appRoot, placement = "", context = "ui-generator" } = {})`
1276
+ Local functions
1277
+ - `parseTagAttributes(attributesSource = "")`
1278
+ - `isDefaultEnabled(value)`
1279
+ - `normalizeAppRouteOutletTarget({ outlet = {}, sourcePath = "" } = {})`
1280
+ - `discoverRouteMetaOutletTargetsFromVueSource(source = "", { context = "shell layout" } = {})`
1281
+ - `collectVueFilePaths(rootDirectoryPath)`
1282
+ - `readInstalledPackageStates(appRoot)`
1283
+ - `normalizePackageOutletTarget({ packageId = "", outlet = {}, descriptorPath = "" } = {})`
1284
+ - `loadOutletDefaultOverrides(appRoot = "")`
1285
+ - `applyOutletDefaultOverrides(target = {}, outletDefaultOverrides = {})`
1286
+ - `collectInstalledPackageOutletTargets(appRoot)`
1287
+
1288
+ ### `server/support/SupportCoreServiceProvider.js`
1289
+ Exports
1290
+ - `SupportCoreServiceProvider`
1291
+
1292
+ ### `server/support/symlinkSafeRequire.js`
1293
+ Exports
1294
+ - `symlinkSafeRequire(moduleId = "")`
1295
+ Local functions
1296
+ - `createRequireFromTarget(targetPath)`
1297
+ - `createAppRootRequire()`
1298
+ - `createEntryScriptRequire()`
1299
+ - `uniqueRequireChain(candidates = [])`
1300
+
1301
+ ### `server/surface/index.js`
1302
+ Exports
1303
+ - `createSurfaceRegistry`
1304
+ - `normalizeSurfaceId`
1305
+ - `createSurfacePathHelpers`
1306
+ - `createSurfaceRuntime`
1307
+ - `filterRoutesBySurface`
1308
+ - `escapeRegExp`
1309
+ - `API_BASE_PATH`
1310
+ - `API_PREFIX`
1311
+ - `API_PREFIX_SLASH`
1312
+ - `API_DOCS_PATH`
1313
+ - `API_REALTIME_PATH`
1314
+ - `normalizePathname`
1315
+ - `isApiPath`
1316
+ - `isVersionedApiPath`
1317
+ - `toVersionedApiPath`
1318
+ - `toVersionedApiPrefix`
1319
+ - `buildVersionedApiPath`
1320
+ - `isVersionedApiPrefixMatch`
1321
+ - `SurfaceRoutingServiceProvider`
1322
+
1323
+ ### `server/surface/SurfaceRoutingServiceProvider.js`
1324
+ Exports
1325
+ - `SurfaceRoutingServiceProvider`
1326
+
1327
+ ### _testable
1328
+
1329
+ ### `_testable/index.js`
1330
+ Exports
1331
+ - `createContainer`
1332
+ - `createApplication`
1333
+ - `createHttpRuntime`
1334
+ - `compileRouteValidator`
1335
+ - `deriveResourceRequiredMetadata`
1336
+
1337
+ ### internal
1338
+
1339
+ ### `internal/node/fileSystem.js`
1340
+ Exports
1341
+ - `fileExists(filePath)`
1342
+ - `readJsonFile(filePath, fallback = {})`
1343
+
1344
+ ### `internal/node/installedPackageDescriptor.js`
1345
+ Exports
1346
+ - `loadInstalledPackageDescriptor({ appRoot, packageId, installedPackageState, required = false })`
1347
+ - `resolveDescriptorPathForInstalledPackage({ appRoot, packageId, installedPackageState, required = false })`
1348
+ Local functions
1349
+ - `resolveDescriptorCandidatePaths({ appRoot, packageId, installedPackageState })`
1350
+ - `normalizeDescriptorPayload(descriptorModule)`