@jskit-ai/agent-docs 0.1.261 → 0.1.263

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 (48) hide show
  1. package/guide/agent/app-extras/assistant-conversation.md +5 -2
  2. package/guide/agent/app-extras/realtime.md +5 -0
  3. package/guide/agent/framework/client-features.md +63 -1
  4. package/package.json +1 -1
  5. package/patterns/feature-package/example/booking-engine/package.json +1 -1
  6. package/patterns/minimal-foundation/example/package.json +4 -4
  7. package/patterns/shell-foundation/example/package.json +5 -5
  8. package/patterns/shell-foundation/example/packages/main/package.json +1 -1
  9. package/reference/autogen/PATTERN_INDEX.md +37 -37
  10. package/reference/autogen/packages/assistant-core.md +4 -1
  11. package/reference/autogen/packages/assistant-runtime.md +1 -0
  12. package/reference/autogen/packages/auth-web.md +63 -28
  13. package/reference/autogen/packages/connectors-catalog.md +2 -2
  14. package/reference/autogen/packages/connectors-web.md +13 -9
  15. package/reference/autogen/packages/http-runtime.md +6 -1
  16. package/reference/autogen/packages/http-web.md +127 -54
  17. package/reference/autogen/packages/kernel.md +25 -12
  18. package/reference/autogen/packages/mobile-capacitor.md +36 -9
  19. package/reference/autogen/packages/realtime.md +17 -6
  20. package/reference/autogen/packages/rewarded-web.md +9 -4
  21. package/reference/autogen/packages/shell-web.md +115 -80
  22. package/reference/autogen/packages/uploads-image-web.md +35 -8
  23. package/reference/autogen/packages/users-web.md +38 -2
  24. package/reference/autogen/packages/workspaces-web.md +96 -55
  25. package/reference/autogen/tooling/config-eslint.md +1 -0
  26. package/reference/autogen/tooling/jskit-release.md +1 -1
  27. package/skills/jskit/references/client-features.md +63 -1
  28. package/skills/jskit/references/heuristics/client-features.md +4 -0
  29. package/skills/jskit/references/pattern-index.md +37 -37
  30. package/skills/jskit/references/patterns/app/minimal-foundation/example/package.json +4 -4
  31. package/skills/jskit/references/patterns/app/shell-foundation/example/package.json +5 -5
  32. package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/package.json +1 -1
  33. package/skills/jskit/references/patterns/auth/accounts-hub/example/package.json +2 -2
  34. package/skills/jskit/references/patterns/auth/oidc-sign-in/example/package.json +2 -2
  35. package/skills/jskit/references/patterns/auth/supabase-auth/example/package.json +1 -1
  36. package/skills/jskit/references/patterns/connectors/calendar-cli/example/package.json +4 -4
  37. package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/package.json +2 -2
  38. package/skills/jskit/references/patterns/database/mysql-application/example/package.json +1 -1
  39. package/skills/jskit/references/patterns/database/postgres-application/example/package.json +1 -1
  40. package/skills/jskit/references/patterns/realtime/realtime-application/example/package.json +2 -2
  41. package/skills/jskit/references/patterns/rewards/google-rewarded/example/googlePublisherTag.js +13 -10
  42. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/package.json +1 -1
  43. package/skills/jskit/references/patterns/ui/page-and-placement/example/src/placementTopology.js +1 -0
  44. package/skills/jskit/references/patterns/users/account-settings/example/src/components/account/settings/AccountSettingsPreferencesSection.vue +7 -7
  45. package/skills/jskit/references/patterns/users/account-settings/example/src/components/account/settings/AccountSettingsProfileSection.vue +1 -1
  46. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/package.json +2 -2
  47. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/package.json +3 -3
  48. package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/composables/useWorkspaceNotFoundState.js +2 -2
@@ -37,9 +37,9 @@ Exports
37
37
  - None
38
38
  Local functions
39
39
  - `clearSelection()`
40
- - `execute(action = {})`
41
- - `isActionDisabled(action = {})`
42
- - `isActionExecuting(action = {})`
40
+ - `execute(action)`
41
+ - `isActionDisabled(action)`
42
+ - `isActionExecuting(action)`
43
43
  - `actionLabel(action = {})`
44
44
 
45
45
  ### `src/client/components/CrudListDateFilterControl.vue`
@@ -65,17 +65,17 @@ Local functions
65
65
  Exports
66
66
  - None
67
67
  Local functions
68
- - `clearChip(chip = {})`
68
+ - `clearChip(chip)`
69
69
  - `clearFilters()`
70
70
 
71
71
  ### `src/client/components/CrudListRecordActionMenu.vue`
72
72
  Exports
73
73
  - None
74
74
  Local functions
75
- - `isRowActionLoading(action = {})`
76
- - `rowActionLabel(action = {})`
77
- - `isRowActionDisabled(action = {})`
78
- - `runRowAction(action = {})`
75
+ - `isRowActionLoading(action)`
76
+ - `rowActionLabel(action)`
77
+ - `isRowActionDisabled(action)`
78
+ - `runRowAction(action)`
79
79
 
80
80
  ### `src/client/components/CrudListScreen.vue`
81
81
  Exports
@@ -86,8 +86,8 @@ Local functions
86
86
  - `resolveViewLocation(record)`
87
87
  - `resolveEditLocation(record)`
88
88
  - `hasRowActionsFor(record, index)`
89
- - `isBulkRowSelected(row = {})`
90
- - `setBulkRowSelected(row = {}, selected = true)`
89
+ - `isBulkRowSelected(row)`
90
+ - `setBulkRowSelected(row, selected = true)`
91
91
  - `allSelectableRowsSelected()`
92
92
  - `someSelectableRowsSelected()`
93
93
  - `setSelectableRowsSelected(selected = true)`
@@ -120,7 +120,7 @@ Exports
120
120
  - `CRUD_API_ACCESS_AUTHENTICATED`
121
121
  - `CRUD_API_ACCESS_PUBLIC`
122
122
  - `normalizeCrudApiAccess(value = "")`
123
- - `resolveCrudHttpClient(resource = null, { client = null } = {})`
123
+ - `resolveCrudHttpClient(resource = null, { client = getHttpWebClient() } = {})`
124
124
 
125
125
  ### `src/client/composables/crud/crudJsonApiTransportSupport.js`
126
126
  Exports
@@ -182,11 +182,12 @@ Exports
182
182
  - `normalizeLookupLabelResolverMap(value = {})`
183
183
  - `normalizeLookupRequestQueryParamsMap(value = {})`
184
184
  - `resolveLookupSelectedValues(filter = {}, rawValue = undefined)`
185
- - `createLookupOptionsFromItems(items = [], filter = {}, labelResolver = null)`
185
+ - `createLookupOptionsFromItems(items = [], filter = {}, labelResolver = noCustomLookupLabel)`
186
186
  - `mergeSelectedLookupOptions(options = [], selectedValues = [], cachedOptions = new Map())`
187
187
  - `resolveLookupOptionLabel(options = [], cachedOptions = new Map(), value = "", fallback = "")`
188
188
  Local functions
189
- - `createLookupOptionFromItem(item = {}, filter = {}, labelResolver = null)`
189
+ - `noCustomLookupLabel()`
190
+ - `createLookupOptionFromItem(item, filter, labelResolver)`
190
191
 
191
192
  ### `src/client/composables/internal/crudListParentTitleSupport.js`
192
193
  Exports
@@ -201,86 +202,87 @@ Local functions
201
202
 
202
203
  ### `src/client/composables/internal/useOperationScope.js`
203
204
  Exports
204
- - `useOperationScope({ ownershipFilter = ROUTE_VISIBILITY_WORKSPACE, surfaceId = "", access = "auto", apiSuffix = "", model, readEnabled = true, queryKeyFactory = null, permissionSets = {}, realtime = null } = {})`
205
+ - `useOperationScope({ ownershipFilter = ROUTE_VISIBILITY_WORKSPACE, surfaceId = "", access = "auto", apiSuffix = "", model, readEnabled = true, queryKeyFactory, permissionSets = {}, realtime })`
205
206
  Local functions
206
207
  - `normalizePermissionSets(permissionSets = {})`
207
208
  - `hasAnyPermissions(permissionSets = {})`
208
209
 
209
210
  ### `src/client/composables/records/useAddEdit.js`
210
211
  Exports
211
- - `useAddEdit({ ownershipFilter = ROUTE_VISIBILITY_WORKSPACE, surfaceId = "", access = "auto", resource = null, apiSuffix = "", queryKeyFactory = null, viewPermissions = [], savePermissions = [], readMethod = "GET", readEnabled = true, writeMethod = "PATCH", client = null, transport = null, requestRecovery = null, requestRecoveryLabel = t("jskit.http.resource.label"), placementSource = "http-web.add-edit", fallbackLoadError = t("jskit.http.resource.loadFailed"), fallbackSaveError = "", fieldErrorKeys = [], clearOnRouteChange = true, model, input, mapLoadedToModel, buildRawPayload, buildSavePayload, onSaveSuccess, validationFeedback = true, requestQueryParams = null, recordIdParam = "recordId", routeParams = null, routeRecordId = null, apiUrlTemplate = "", viewUrlTemplate = "", listUrlTemplate = "", saveRecordIdSelector = null, messages = {}, realtime = null } = {})`
212
+ - `useAddEdit({ ownershipFilter = ROUTE_VISIBILITY_WORKSPACE, surfaceId = "", access = "auto", resource = null, apiSuffix = "", queryKeyFactory, viewPermissions = [], savePermissions = [], readMethod = "GET", readEnabled = true, writeMethod = "PATCH", client, transport, requestRecovery, requestRecoveryLabel = t("jskit.http.resource.label"), placementSource = "http-web.add-edit", fallbackLoadError = t("jskit.http.resource.loadFailed"), fallbackSaveError = "", fieldErrorKeys, clearOnRouteChange = true, model, input, mapLoadedToModel, buildRawPayload, buildSavePayload, onSaveSuccess, validationFeedback = true, requestQueryParams, recordIdParam = "recordId", routeParams = null, routeRecordId, apiUrlTemplate = "", viewUrlTemplate = "", listUrlTemplate = "", saveRecordIdSelector, messages = {}, realtime })`
212
213
 
213
214
  ### `src/client/composables/records/useCrudAddEdit.js`
214
215
  Exports
215
- - `useCrudAddEdit({ resource = null, operationName = "", formFields = [], addEditOptions = {}, saveSuccess = {}, fieldBinding = null, createModel = null, buildPayload = null, mapPayloadToModel = null, input = null } = {})`
216
+ - `useCrudAddEdit({ resource, operationName = "", formFields = [], addEditOptions = {}, saveSuccess = {}, fieldBinding = null, createModel = createCrudFormModel, buildPayload = buildFormPayload, mapPayloadToModel, input })`
216
217
  Local functions
217
218
  - `resolvePassedAddEditOptions(addEditOptions = {})`
218
219
  - `normalizeSaveSuccessOptions(options = {})`
220
+ - `buildFormPayload(model, { fields })`
219
221
 
220
222
  ### `src/client/composables/records/useCrudList.js`
221
223
  Exports
222
- - `useCrudList({ resource = null, requestQueryParams = null, parentBinding = null, recordIdParam = "recordId", route = null, realtime = undefined, ...listOptions } = {})`
224
+ - `useCrudList({ resource = null, requestQueryParams = null, parentBinding = null, recordIdParam = "recordId", route = null, realtime, ...listOptions })`
223
225
  Local functions
224
226
  - `resolveRequestQueryParamsInput(requestQueryParams, context = {})`
225
227
  - `resolveCrudParentRequestQueryParams({ resource = {}, route = null, recordIdParam = "recordId" } = {})`
226
228
 
227
229
  ### `src/client/composables/records/useCrudView.js`
228
230
  Exports
229
- - `useCrudView({ resource = null, paramBinding = null, route = null, ...viewOptions } = {})`
231
+ - `useCrudView({ resource, paramBinding = null, route = null, ...viewOptions })`
230
232
 
231
233
  ### `src/client/composables/records/useList.js`
232
234
  Exports
233
- - `useList({ ownershipFilter = ROUTE_VISIBILITY_WORKSPACE, surfaceId = "", access = "auto", apiSuffix = "", queryKeyFactory = null, viewPermissions = [], readEnabled = true, placementSource = "http-web.list", fallbackLoadError = t("jskit.http.list.loadFailed"), initialPageParam = null, getNextPageParam, selectItems, client = null, transport = null, requestOptions, queryOptions, requestRecovery, requestRecoveryLabel = t("jskit.http.list.label"), realtime = null, recordIdParam = "recordId", recordIdSelector = null, viewUrlTemplate = "", editUrlTemplate = "", search = null, queryParams = null, routeQueryValueResolvers = null, requestQueryParams = null, requestFieldsets = null, syncToRoute = false } = {})`
235
+ - `useList({ ownershipFilter = ROUTE_VISIBILITY_WORKSPACE, surfaceId = "", access = "auto", apiSuffix = "", queryKeyFactory, viewPermissions = [], readEnabled = true, placementSource = "http-web.list", fallbackLoadError = t("jskit.http.list.loadFailed"), initialPageParam, getNextPageParam, selectItems, client, transport, requestOptions, queryOptions, requestRecovery, requestRecoveryLabel = t("jskit.http.list.label"), realtime, recordIdParam = "recordId", recordIdSelector, viewUrlTemplate = "", editUrlTemplate = "", search = null, queryParams = null, routeQueryValueResolvers = null, requestQueryParams, requestFieldsets, syncToRoute = false })`
234
236
 
235
237
  ### `src/client/composables/records/useView.js`
236
238
  Exports
237
- - `useView({ resource = null, ownershipFilter = ROUTE_VISIBILITY_WORKSPACE, surfaceId = "", access = "auto", apiSuffix = "", queryKeyFactory = null, viewPermissions = [], readMethod = "GET", readEnabled = true, client = null, transport = null, requestRecovery = null, requestRecoveryLabel = t("jskit.http.resource.label"), placementSource = "http-web.view", fallbackLoadError = t("jskit.http.resource.loadFailed"), notFoundStatuses = [404], notFoundMessage = t("jskit.http.crud.recordNotFound"), model, mapLoadedToModel, requestQueryParams = null, requestFieldsets = null, recordIdParam = "recordId", routeParams = null, routeRecordId = null, apiUrlTemplate = "", listUrlTemplate = "", editUrlTemplate = "", includeRecordIdInQueryKey = false, realtime = undefined } = {})`
239
+ - `useView({ resource, ownershipFilter = ROUTE_VISIBILITY_WORKSPACE, surfaceId = "", access = "auto", apiSuffix = "", queryKeyFactory, viewPermissions = [], readMethod = "GET", readEnabled = true, client, transport, requestRecovery, requestRecoveryLabel = t("jskit.http.resource.label"), placementSource = "http-web.view", fallbackLoadError = t("jskit.http.resource.loadFailed"), notFoundStatuses = [404], notFoundMessage = t("jskit.http.crud.recordNotFound"), model, mapLoadedToModel, requestQueryParams, requestFieldsets, recordIdParam = "recordId", routeParams = null, routeRecordId, apiUrlTemplate = "", listUrlTemplate = "", editUrlTemplate = "", includeRecordIdInQueryKey = false, realtime })`
238
240
 
239
241
  ### `src/client/composables/runtime/addEditUiRuntime.js`
240
242
  Exports
241
- - `createAddEditUiRuntime({ recordIdParam = "recordId", routeParams = null, routeParamNames = null, routePath = "", routeRecordId = null, apiUrlTemplate = "", viewUrlTemplate = "", listUrlTemplate = "", saveRecordIdSelector = null } = {})`
242
- Local functions
243
- - `resolveSavedRecordId(payload, saveRecordIdSelector)`
243
+ - `createAddEditUiRuntime({ recordIdParam = "recordId", routeParams, routeParamNames, routePath = "", routeRecordId, apiUrlTemplate = "", viewUrlTemplate = "", listUrlTemplate = "", saveRecordIdSelector = selectRecordId })`
244
244
 
245
245
  ### `src/client/composables/runtime/listUiRuntime.js`
246
246
  Exports
247
- - `createListUiRuntime({ items, isInitialLoading, recordIdParam = "recordId", recordIdSelector = null, routeParams = null, routeParamNames = null, routePath = "", viewUrlTemplate = "", editUrlTemplate = "" } = {})`
248
- Local functions
249
- - `resolveRecordId(record, recordIdSelector)`
247
+ - `createListUiRuntime({ items, isInitialLoading, recordIdParam = "recordId", recordIdSelector = selectRecordId, routeParams, routeParamNames, routePath = "", viewUrlTemplate = "", editUrlTemplate = "" })`
250
248
 
251
249
  ### `src/client/composables/runtime/modelStateHelpers.js`
252
250
  Exports
251
+ - `ignoreLoadedPayload()`
253
252
  - `captureModelSnapshot(model)`
254
253
  - `restoreModelSnapshot(model, snapshot)`
255
- - `watchResourceModelState({ resource, model, mapLoadedToModel, resolveMapContext = null } = {})`
254
+ - `watchResourceModelState({ resource, model, mapLoadedToModel = ignoreLoadedPayload, resolveMapContext })`
256
255
  Local functions
257
256
  - `isObjectLike(value)`
258
257
  - `deepClone(value)`
259
258
 
260
259
  ### `src/client/composables/runtime/operationUiHelpers.js`
261
260
  Exports
262
- - `setupRouteChangeCleanup({ enabled = true, route = null, feedback = null, fieldBag = null, onClear = null } = {})`
263
- - `setupOperationErrorReporting({ enabled = true, source = "http-web.operation", loadError = null, notFoundError = null, loadActionFactory = null, notFoundActionFactory = null, loadChannel = "", notFoundChannel = "", loadSeverity = "error", notFoundSeverity = "warning", dedupeWindowMs = 2000 } = {})`
261
+ - `setupRouteChangeCleanup({ enabled = true, route, feedback, onClear })`
262
+ - `setupOperationErrorReporting({ enabled = true, source = "http-web.operation", loadError = null, notFoundError = null, loadActionFactory = noRetryAction, notFoundActionFactory = noRetryAction, loadChannel = "", notFoundChannel = "", loadSeverity = "error", notFoundSeverity = "warning", dedupeWindowMs = 2000 } = {})`
264
263
  Local functions
265
264
  - `normalizeMessage(value)`
265
+ - `noRetryAction()`
266
266
 
267
267
  ### `src/client/composables/runtime/operationValidationHelpers.js`
268
268
  Exports
269
- - `validateOperationInput({ input, rawPayload = {}, fieldBag = null, feedback = null, validationMessage = "" } = {})`
269
+ - `validateOperationInput({ input, rawPayload = {}, fieldBag = SILENT_FIELD_BAG, feedback = SILENT_FEEDBACK, validationMessage = "" })`
270
270
 
271
271
  ### `src/client/composables/runtime/useAddEditCore.js`
272
272
  Exports
273
- - `useAddEditCore({ model, resource, queryKey, canSave, fieldBag, feedback, input, mapLoadedToModel, buildRawPayload, buildSavePayload, onSaveSuccess, validationFeedback = true, messages = {} } = {})`
273
+ - `useAddEditCore({ model, resource, queryKey, canSave, fieldBag, feedback, input, mapLoadedToModel = ignoreLoadedPayload, buildRawPayload = emptyRecord, buildSavePayload = saveParsedInput, onSaveSuccess, validationFeedback = true, messages = {} })`
274
+ Local functions
275
+ - `saveParsedInput(parsedInput)`
274
276
 
275
277
  ### `src/client/composables/runtime/useCommandCore.js`
276
278
  Exports
277
- - `useCommandCore({ model, resource, writeMethod = "POST", canRun, fieldBag, feedback, input, buildRawPayload, buildCommandPayload, buildCommandOptions, onRunSuccess, onRunError, suppressSuccessMessage = false, messages = {} } = {})`
279
+ - `useCommandCore({ model, resource, writeMethod = "POST", canRun, fieldBag, feedback, input, buildRawPayload = emptyRecord, buildCommandPayload, buildCommandOptions = emptyRecord, onRunSuccess, onRunError, suppressSuccessMessage = false, messages = {} })`
278
280
 
279
281
  ### `src/client/composables/runtime/useEndpointResource.js`
280
282
  Exports
281
283
  - `buildEndpointReadRequestOptions({ method = "GET", query = null, transport = null } = {})`
282
284
  - `buildEndpointWriteRequestOptions({ method = "PATCH", body = undefined, options = null, transport = null } = {})`
283
- - `useEndpointResource({ queryKey, path = "", enabled = true, client = null, readMethod = "GET", writeMethod = "PATCH", readQuery = null, transport = null, refreshOnPull = false, realtime = null, queryOptions = null, mutationOptions = null, requestRecovery = null, // No label: shell-web's request recovery names the app. requestRecoveryLabel = "", fallbackLoadError = "jskit.http.resource.loadFailed", fallbackSaveError = "jskit.http.resource.saveFailed" } = {})`
285
+ - `useEndpointResource({ queryKey, path = "", enabled = true, client = getHttpWebClient(), readMethod = "GET", writeMethod = "PATCH", readQuery, transport, refreshOnPull = false, realtime, queryOptions = null, mutationOptions = null, requestRecovery = null, // No label: shell-web's request recovery names the app. requestRecoveryLabel = "", fallbackLoadError = "jskit.http.resource.loadFailed", fallbackSaveError = "jskit.http.resource.saveFailed" })`
284
286
  Local functions
285
287
  - `resolveRequestQuery(value = null)`
286
288
 
@@ -292,7 +294,7 @@ Exports
292
294
  ### `src/client/composables/runtime/useListCore.js`
293
295
  Exports
294
296
  - `buildListRequestOptions({ requestOptions = null, transport = null, pageParam = null } = {})`
295
- - `useListCore({ queryKey, path = "", enabled = true, client = null, transport = null, initialPageParam = null, getNextPageParam, selectItems, requestOptions = null, queryOptions = null, requestRecovery = null, requestRecoveryLabel = t("jskit.http.list.label"), fallbackLoadError = t("jskit.http.list.loadFailed") } = {})`
297
+ - `useListCore({ queryKey, path = "", enabled = true, client = getHttpWebClient(), transport, initialPageParam, getNextPageParam, selectItems, requestOptions, queryOptions = null, requestRecovery = null, requestRecoveryLabel = t("jskit.http.list.label"), fallbackLoadError = t("jskit.http.list.loadFailed") })`
296
298
  Local functions
297
299
  - `resolveRequestOptionsObject(value = null)`
298
300
  - `resolveListRequestMethod(requestOptions = null)`
@@ -303,13 +305,13 @@ Exports
303
305
 
304
306
  ### `src/client/composables/runtime/useViewCore.js`
305
307
  Exports
306
- - `useViewCore({ resource, model, canView, mapLoadedToModel, notFoundStatuses = [404], notFoundMessage = "" } = {})`
308
+ - `useViewCore({ resource, model, canView, mapLoadedToModel, notFoundStatuses = [404], notFoundMessage = "" })`
307
309
  Local functions
308
310
  - `normalizeStatusList(value)`
309
311
 
310
312
  ### `src/client/composables/runtime/viewUiRuntime.js`
311
313
  Exports
312
- - `createViewUiRuntime({ recordIdParam = "recordId", routeParams = null, routeParamNames = null, routePath = "", routeRecordId = null, apiUrlTemplate = "", listUrlTemplate = "", editUrlTemplate = "" } = {})`
314
+ - `createViewUiRuntime({ recordIdParam = "recordId", routeParams, routeParamNames, routePath = "", routeRecordId, apiUrlTemplate = "", listUrlTemplate = "", editUrlTemplate = "" })`
313
315
 
314
316
  ### `src/client/composables/support/errorMessageHelpers.js`
315
317
  Exports
@@ -380,6 +382,7 @@ Local functions
380
382
  Exports
381
383
  - `normalizeRouteParamName(value = "", { context = "http-web route param" } = {})`
382
384
  - `toRouteParamValue(value)`
385
+ - `selectRecordId(record)`
383
386
  - `resolveRouteParamsSource(source = null)`
384
387
  - `resolveRouteParamNamesSource(source = [])`
385
388
  - `resolveRoutePathnameSource(source = "")`
@@ -390,7 +393,6 @@ Exports
390
393
  - `extractRouteParamNames(pathTemplate = "")`
391
394
  - `resolveRouteParamNamesInOrder(route = null)`
392
395
  Local functions
393
- - `resolveRouteSourceValue(source = null)`
394
396
  - `normalizeRouteParamNameList(value = [])`
395
397
  - `normalizeRoutePathname(value = "")`
396
398
  - `segmentMatchesParamValue(segment = "", paramValue = "")`
@@ -401,6 +403,7 @@ Local functions
401
403
  ### `src/client/composables/support/scopeHelpers.js`
402
404
  Exports
403
405
  - `asPlainObject(value)`
406
+ - `emptyRecord()`
404
407
  - `normalizePermissions(value)`
405
408
  - `resolvePermissionAccess(access, normalizedPermissions = [])`
406
409
  - `normalizeAccessMode(value = "auto")`
@@ -421,11 +424,11 @@ Local functions
421
424
 
422
425
  ### `src/client/composables/useCommand.js`
423
426
  Exports
424
- - `useCommand({ ownershipFilter = ROUTE_VISIBILITY_WORKSPACE, surfaceId = "", access = "auto", apiSuffix = "", runPermissions = [], writeMethod = "POST", client = null, resource: commandResource = null, transport = null, placementSource = "http-web.command", fallbackRunError = "jskit.http.feedback.actionFailed", fieldErrorKeys = [], clearOnRouteChange = true, model, input, buildRawPayload, buildCommandPayload, buildCommandOptions, onRunSuccess, onRunError, suppressSuccessMessage = false, messages = {}, realtime = null } = {})`
427
+ - `useCommand({ ownershipFilter = ROUTE_VISIBILITY_WORKSPACE, surfaceId = "", access = "auto", apiSuffix = "", runPermissions = [], writeMethod = "POST", client, resource: commandResource = null, transport, placementSource = "http-web.command", fallbackRunError = "jskit.http.feedback.actionFailed", fieldErrorKeys, clearOnRouteChange = true, model, input, buildRawPayload, buildCommandPayload, buildCommandOptions, onRunSuccess, onRunError, suppressSuccessMessage = false, messages = {}, realtime })`
425
428
 
426
429
  ### `src/client/composables/useCrudAddEditScreen.js`
427
430
  Exports
428
- - `useCrudAddEditScreen({ screen = null, mode = "new", title = "", subtitle = "", saveLabel = "", cancelTo = "", resource = null, operationName = "", formFields = [], addEditOptions = {}, saveSuccess = {}, fieldBinding = null, createModel = null, buildPayload = null, mapPayloadToModel = null, input = null, preserveCancelQuery = false } = {})`
431
+ - `useCrudAddEditScreen({ screen = null, mode = "new", title = "", subtitle = "", saveLabel = "", cancelTo = "", resource, operationName = "", formFields, addEditOptions, saveSuccess, fieldBinding, createModel, buildPayload, mapPayloadToModel, input, preserveCancelQuery = false })`
429
432
  Local functions
430
433
  - `normalizeProvidedScreen(screen = null)`
431
434
 
@@ -433,14 +436,13 @@ Local functions
433
436
  Exports
434
437
  - `requireCrudDeleteOperation(resource = null)`
435
438
  - `resolveDeleteApiSuffix(screen, apiUrlTemplate = "")`
436
- - `useCrudDeleteAction({ screen = null, resource = null, resourceNamespace = "", apiUrlTemplate = "", access = "auto", client = null, router: routerOverride = null, fallbackDeleteError = t("jskit.http.crud.delete.failed") } = {})`
439
+ - `useCrudDeleteAction({ screen, resource = null, resourceNamespace = "", apiUrlTemplate = "", access = "auto", client, router = useRouter(), fallbackDeleteError = t("jskit.http.crud.delete.failed") })`
437
440
  Local functions
438
- - `requireCrudViewScreen(screen = null)`
439
441
  - `resolveListLocation(screen)`
440
442
 
441
443
  ### `src/client/composables/useCrudListBulkActions.js`
442
444
  Exports
443
- - `useCrudListBulkActions(actions = [], { resolveRecordId = null, resolveContext = null } = {})`
445
+ - `useCrudListBulkActions(actions = [], { resolveRecordId = selectListRecordId, resolveContext = emptyRecord } = {})`
444
446
 
445
447
  ### `src/client/composables/useCrudListFilterLookups.js`
446
448
  Exports
@@ -457,28 +459,28 @@ Local functions
457
459
  - `assignFilterValue(values, filter = {}, rawValue)`
458
460
  - `resetFilterValue(values, filter = {})`
459
461
  - `applyPresetFilterValue(values, filter = {}, rawValue)`
460
- - `createQueryParams(values, filterEntries = [])`
462
+ - `createQueryParams(values, filterEntries)`
461
463
  - `resolveFilterRouteValue(filter, routeValue, { initial = false } = {})`
462
- - `createRouteQueryValueResolvers(filterEntries = [])`
464
+ - `createRouteQueryValueResolvers(filterEntries)`
463
465
  - `resolveAtomicValueLabel(filter = {}, value = "", labelResolvers = {})`
464
466
  - `formatDefaultChipLabel(filter = {}, chipValue, labelResolvers = {})`
465
467
 
466
468
  ### `src/client/composables/useCrudListParentTitle.js`
467
469
  Exports
468
- - `useCrudListParentTitle({ listRuntime = null, resource = {}, recordIdParam = "recordId", queryKeyPrefix = ["http-web", "crud-list-parent-title"], placementSource = "http-web.crud-list-parent-title", fallbackLoadError = t("jskit.http.crud.parent.loadFailed"), notFoundMessage = t("jskit.http.crud.parent.notFound"), route = null, viewRuntimeFactory = useView } = {})`
470
+ - `useCrudListParentTitle({ listRuntime, resource = {}, recordIdParam = "recordId", queryKeyPrefix = ["http-web", "crud-list-parent-title"], placementSource = "http-web.crud-list-parent-title", fallbackLoadError = t("jskit.http.crud.parent.loadFailed"), notFoundMessage = t("jskit.http.crud.parent.notFound"), route = null, viewRuntimeFactory = useView })`
469
471
  Local functions
470
472
  - `normalizeQueryKeyPrefix(value = [])`
471
473
 
472
474
  ### `src/client/composables/useCrudListRowActions.js`
473
475
  Exports
474
- - `useCrudListRowActions(actions = [], { resolveRecordId = null, resolveContext = null } = {})`
476
+ - `useCrudListRowActions(actions = [], { resolveRecordId = selectListRecordId, resolveContext = emptyRecord } = {})`
475
477
  Local functions
476
478
  - `createExecutionKey(actionKey = "", recordId = "", index = 0)`
477
479
 
478
480
  ### `src/client/composables/useCrudListScreen.js`
479
481
  Exports
480
482
  - `__testables`
481
- - `useCrudListScreen({ client = null, resource = null, resourceNamespace = "resource", apiSuffix = "", recordIdParam = "recordId", recordIdSelector = null, titleFallbackFieldKey = "", viewUrlTemplate = "", editUrlTemplate = "", newUrlTemplate = "", recordChangedEvents = [], listFilters = {}, listBulkActions = [], listRowActions = [], syntheticRows = null, routeQueryBlacklist = Object.freeze(["include", "cursor", "limit"]), requestQueryParams = null, requestFieldsets = null, readEnabled = true, requestRecoveryLabel = t("jskit.http.crud.records"), fallbackLoadError = t("jskit.http.crud.list.loadFailed") } = {})`
483
+ - `useCrudListScreen({ client, resource, resourceNamespace = "resource", apiSuffix = "", recordIdParam = "recordId", recordIdSelector, titleFallbackFieldKey = "", viewUrlTemplate = "", editUrlTemplate = "", newUrlTemplate = "", recordChangedEvents = [], listFilters = NO_LIST_FILTERS, listBulkActions, listRowActions = NO_LIST_ACTIONS, syntheticRows = null, routeQueryBlacklist = Object.freeze(["include", "cursor", "limit"]), requestQueryParams, requestFieldsets, readEnabled = true, requestRecoveryLabel = t("jskit.http.crud.records"), fallbackLoadError = t("jskit.http.crud.list.loadFailed") })`
482
484
  Local functions
483
485
  - `buildCrudListActionContext(records, client)`
484
486
  - `formatCrudListCardValue(value)`
@@ -487,15 +489,15 @@ Local functions
487
489
  - `normalizeSyntheticDisplayRow(source = null, index = 0, placement = "prepend")`
488
490
  - `normalizeSyntheticDisplayRows(value = [], placement = "prepend")`
489
491
  - `normalizeSyntheticDisplayRowGroups(syntheticRows = null)`
490
- - `createCrudListDisplayRow(record = {}, index = 0, records = {})`
492
+ - `createCrudListDisplayRow(record, index, records)`
491
493
 
492
494
  ### `src/client/composables/useCrudViewScreen.js`
493
495
  Exports
494
- - `useCrudViewScreen({ resource = null, resourceNamespace = "resource", apiUrlTemplate = "", recordIdParam = "recordId", titleFallbackFieldKey = "", listUrlTemplate = "", editUrlTemplate = "", recordChangedEvent = "", requestQueryParams = null, requestFieldsets = null, readEnabled = true, queryKeyFactory = null, requestRecoveryLabel = t("jskit.http.crud.record"), fallbackLoadError = t("jskit.http.crud.view.loadFailed"), notFoundMessage = t("jskit.http.crud.recordNotFound") } = {})`
496
+ - `useCrudViewScreen({ resource, resourceNamespace = "resource", apiUrlTemplate = "", recordIdParam = "recordId", titleFallbackFieldKey = "", listUrlTemplate = "", editUrlTemplate = "", recordChangedEvent = "", requestQueryParams, requestFieldsets, readEnabled = true, queryKeyFactory = null, requestRecoveryLabel = t("jskit.http.crud.record"), fallbackLoadError = t("jskit.http.crud.view.loadFailed"), notFoundMessage = t("jskit.http.crud.recordNotFound") })`
495
497
 
496
498
  ### `src/client/composables/usePagedCollection.js`
497
499
  Exports
498
- - `usePagedCollection({ queryKey, enabled = true, initialPageParam = null, queryFn, getNextPageParam = defaultGetNextPageParam, selectItems = defaultSelectItems, dedupeBy = null, queryOptions = null, fallbackLoadError = t("jskit.http.list.loadFailed") } = {})`
500
+ - `usePagedCollection({ queryKey, enabled = true, initialPageParam = FIRST_PAGE_PARAM, queryFn, getNextPageParam = defaultGetNextPageParam, selectItems = defaultSelectItems, dedupeBy, queryOptions = null, fallbackLoadError = t("jskit.http.list.loadFailed") })`
499
501
  - `trimInfinitePagesToFirst(data = null)`
500
502
  Local functions
501
503
  - `defaultSelectItems(page)`
@@ -505,7 +507,7 @@ Local functions
505
507
  ### `src/client/composables/useRealtimeQueryInvalidation.js`
506
508
  Exports
507
509
  - `resolveOperationRealtimeOptions({ realtime = undefined, fallbackRealtime = null } = {})`
508
- - `useRealtimeQueryInvalidation({ event = "", enabled = true, matches = null, queryKey = null, onEvent = null } = {})`
510
+ - `useRealtimeQueryInvalidation({ event = "", enabled = true, matches, queryKey = null, onEvent })`
509
511
  - `useOperationRealtime({ realtime = null, queryKey = null, enabled = true } = {})`
510
512
  Local functions
511
513
  - `normalizeRealtimeOptions(value = {})`
@@ -571,10 +573,10 @@ Exports
571
573
  - `configureHttpWebClient(optionsOrClient = {})`
572
574
  - `createHttpWebClient(options = {})`
573
575
  - `getHttpWebClient()`
574
- - `resetHttpWebClientForTests()`
575
576
  - `httpWebClient`
576
577
  Local functions
577
578
  - `normalizeOptions(value = null)`
579
+ - `isHttpClient(source)`
578
580
 
579
581
  ### `src/client/lib/permissions.js`
580
582
  Exports
@@ -598,8 +600,10 @@ Exports
598
600
  Exports
599
601
  - `defineCrudListActions(actions, { name, createAction })`
600
602
  - `normalizeListActionKey(actionOrKey = "")`
601
- - `resolveListRecordId(record = {}, index = 0, resolveRecordId = null)`
602
- - `resolveListActionBaseContext(resolveContext = null)`
603
+ - `resolveListActionFlag(flag, resolveFlagContext)`
604
+ - `resolveListRecordId(record, index, resolveRecordId)`
605
+ - `resolveListActionBaseContext(resolveContext)`
606
+ - `selectListRecordId(record, index)`
603
607
 
604
608
  ### `src/client/support/crudListDateFilterSupport.js`
605
609
  Exports
@@ -617,6 +621,75 @@ Local functions
617
621
  - `readOption(item, key, fallback)`
618
622
  - `selectedValues(modelValue, multiple)`
619
623
 
624
+ ### `src/client/types.js`
625
+ Exports
626
+ - `type HttpClient`
627
+ - `type CrudResource`
628
+ - `type TextSource`
629
+ - `type EnabledSource`
630
+ - `type ApiSuffix`
631
+ - `type ReadEnabled`
632
+ - `type QueryKeyFactory`
633
+ - `type RequestRecovery`
634
+ - `type RequestQueryParams`
635
+ - `type MapLoadedToModel`
636
+ - `type OperationRealtime`
637
+ - `type RealtimeQueryInvalidationOptions`
638
+ - `type OperationRealtimeOptions`
639
+ - `type EndpointResourceOptions`
640
+ - `type EndpointResource`
641
+ - `type PagedCollectionOptions`
642
+ - `type PagedCollection`
643
+ - `type ListCoreOptions`
644
+ - `type UiFeedbackOptions`
645
+ - `type UiFeedback`
646
+ - `type FieldErrorBag`
647
+ - `type OperationErrorReporting`
648
+ - `type OperationInputCheck`
649
+ - `type ScopeRuntimeOptions`
650
+ - `type ScopeRuntime`
651
+ - `type AccessOptions`
652
+ - `type AccessRuntime`
653
+ - `type OperationScopeOptions`
654
+ - `type OperationScope`
655
+ - `type AddEditCoreOptions`
656
+ - `type CommandCoreOptions`
657
+ - `type ViewCoreOptions`
658
+ - `type RouteTemplateOptions`
659
+ - `type AddEditUiRuntimeOptions`
660
+ - `type ViewUiRuntimeOptions`
661
+ - `type ListUiRuntimeOptions`
662
+ - `type AddEditOptions`
663
+ - `type AddEditRuntime`
664
+ - `type CommandOptions`
665
+ - `type CommandRuntime`
666
+ - `type ViewOptions`
667
+ - `type ViewRuntime`
668
+ - `type CrudViewOptions`
669
+ - `type ListOptions`
670
+ - `type ListRuntime`
671
+ - `type CrudListOptions`
672
+ - `type CrudListActionDefinition`
673
+ - `type CrudListBulkActionDefinition`
674
+ - `type CrudListRowActionDefinition`
675
+ - `type CrudListActionOptions`
676
+ - `type CrudListBulkActions`
677
+ - `type CrudListRowActions`
678
+ - `type CrudListFiltersOptions`
679
+ - `type CrudListFilterRuntime`
680
+ - `type CrudListFilterLookupsOptions`
681
+ - `type CrudListParentTitleOptions`
682
+ - `type CrudDeleteActionOptions`
683
+ - `type CrudDeleteAction`
684
+ - `type CrudAddEditOptions`
685
+ - `type CrudAddEditRuntime`
686
+ - `type CrudAddEditScreenOptions`
687
+ - `type CrudAddEditScreen`
688
+ - `type CrudViewScreenOptions`
689
+ - `type CrudViewScreen`
690
+ - `type CrudListScreenOptions`
691
+ - `type CrudListScreen`
692
+
620
693
  ### fixtures
621
694
 
622
695
  ### `fixtures/crud-list-date-filters/App.vue`
@@ -413,17 +413,24 @@ Exports
413
413
  - `createAsyncModuleRecoveryState({ label = "App module", message = "", retry = null } = {})`
414
414
  - `dismissAsyncModuleRecovery(state)`
415
415
  - `dynamicImportErrorMessage(error = null, { label = "App module", stale = isDynamicImportError(error) } = {})`
416
- - `guardedReloadApp({ browserWindow = typeof window !== "undefined" ? window : null, fetchFn = typeof fetch === "function" ? fetch : null, state = null, label = "App", message = RELOAD_UNAVAILABLE.message, messageCode = message === RELOAD_UNAVAILABLE.message ? RELOAD_UNAVAILABLE.messageCode : "", messageParams = {} } = {})`
417
- - `installAsyncModuleRecoveryHandlers({ router = null, state, label = "App module", onNotify = null, windowObject = typeof window !== "undefined" ? window : null } = {})`
416
+ - `guardedReloadApp({ browserWindow = pageWindow(), fetchFn = globalThis.fetch, state = null, label = "App", message = RELOAD_UNAVAILABLE.message, messageCode = message === RELOAD_UNAVAILABLE.message ? RELOAD_UNAVAILABLE.messageCode : "", messageParams = {} } = {})`
417
+ - `installAsyncModuleRecoveryHandlers({ router, state, label = "App module", onNotify, windowObject = pageWindow() })`
418
418
  - `isDynamicImportError(error = null)`
419
419
  - `notifyAsyncModuleLoadError(state, error = null, { label = "App module", message = "", messageCode = "", messageParams = {}, retry = null, stale = isDynamicImportError(error) } = {})`
420
420
  Local functions
421
421
  - `errorText(error = null)`
422
422
  - `dynamicImportErrorMessageCode(label, stale)`
423
423
 
424
+ ### `client/browser.js`
425
+ Exports
426
+ - `pagePathname()`
427
+ - `pageWindow()`
428
+
424
429
  ### `client/componentInteraction.js`
425
430
  Exports
426
431
  - `createComponentInteractionEmitter(emit)`
432
+ Local functions
433
+ - `ignoreAction()`
427
434
 
428
435
  ### `client/componentRegistry.js`
429
436
  Exports
@@ -435,7 +442,7 @@ Local functions
435
442
  Exports
436
443
  - `createTextError(keyOrMessage = "", params = {})`
437
444
  - `registerJskitMessages(catalog = {})`
438
- - `setJskitI18n(i18n = null)`
445
+ - `setJskitI18n(i18n)`
439
446
  - `useJskitText()`
440
447
  Local functions
441
448
  - `registry()`
@@ -485,7 +492,7 @@ Exports
485
492
 
486
493
  ### `client/moduleBootstrap.js`
487
494
  Exports
488
- - `bootClientModules({ clientModules = [], app, pinia = null, queryClient = null, router, surfaceRuntime, surfaceMode, env, logger } = {})`
495
+ - `bootClientModules({ clientModules, app, pinia, queryClient, router, surfaceRuntime, surfaceMode, env, logger })`
489
496
  Local functions
490
497
  - `normalizePackageId(value)`
491
498
  - `toRouteSnapshot(route)`
@@ -493,14 +500,14 @@ Local functions
493
500
  - `normalizeRoute(route, { packageId, index })`
494
501
  - `normalizeRouteList(routes, { packageId })`
495
502
  - `toVueRouteRecord(route)`
496
- - `registerClientModuleRoutes({ packageId, routes = [], router, surfaceRuntime, surfaceMode, seenRoutePaths, seenRouteNames, logger, source = "module", packageMetadataRouteDeclarations = null } = {})`
503
+ - `registerClientModuleRoutes({ packageId, routes, router, surfaceRuntime, surfaceMode, seenRoutePaths, seenRouteNames, logger, source, packageMetadataRouteDeclarations })`
497
504
  - `resolvePackageMetadataProviders(moduleNamespace, packageId, packageMetadataClientProviders = [])`
498
505
  - `resolveModuleProviders(moduleNamespace, packageId, packageMetadataClientProviders = [])`
499
506
  - `buildPackageMetadataRouteDeclarationIndex({ packageId, packageMetadataUiRoutes = [] } = {})`
500
507
  - `assertRoutesDeclaredInPackageMetadata({ packageId, source, normalizedRoutes = [], packageMetadataRouteDeclarations = null } = {})`
501
508
  - `resolvePackageMetadataClientRoutes({ packageId, packageMetadataUiRoutes = [], routeComponents = {}, logger } = {})`
502
509
  - `normalizeClientModuleEntries(clientModules)`
503
- - `createClientRuntime({ profile = "client", providers = [], app, pinia = null, queryClient = null, router, env, logger, surfaceRuntime, surfaceMode } = {})`
510
+ - `createClientRuntime({ profile, providers, app, pinia, queryClient, router, env, logger, surfaceRuntime, surfaceMode })`
504
511
 
505
512
  ### `client/packageMetadataSections.js`
506
513
  Exports
@@ -520,10 +527,11 @@ Exports
520
527
  - `shellScrollBehavior(to, from, savedPosition)`
521
528
  - `resolveClientBootstrapDebugEnabled({ env = {}, debugEnabled = undefined, debugEnvKey = "VITE_JSKIT_CLIENT_DEBUG" } = {})`
522
529
  - `createClientBootstrapLogger({ env = {}, logger, debugEnabled = undefined, debugEnvKey = "VITE_JSKIT_CLIENT_DEBUG" })`
523
- - `createSurfaceShellRouter({ createRouter, history, routes = [], surfaceRuntime, surfaceMode, fallbackRoute = null, notFoundComponent = null, guard = false, scrollBehavior = shellScrollBehavior } = {})`
524
- - `bootstrapClientShellApp({ createApp, rootComponent, appConfig = {}, appPlugins = [], i18n = null, pinia = null, queryClient = null, router, bootClientModules, surfaceRuntime, surfaceMode, env = {}, fallbackRoute = null, // The browser console is the application's logger unless it passes its own. logger = console, createBootstrapLogger = createClientBootstrapLogger, debugEnabled = undefined, debugEnvKey = "VITE_JSKIT_CLIENT_DEBUG", debugMessage = "Client modules bootstrapped before router install.", onAfterModulesBootstrapped = null, onAfterRouterReady = null, mountSelector = "#app" } = {})`
530
+ - `createSurfaceShellRouter({ createRouter, history, routes, surfaceRuntime, surfaceMode, fallbackRoute, notFoundComponent, guard = false, scrollBehavior = shellScrollBehavior })`
531
+ - `bootstrapClientShellApp({ createApp, rootComponent, appConfig = {}, appPlugins = [], i18n = null, pinia, queryClient, router, bootClientModules, surfaceRuntime, surfaceMode, env = {}, fallbackRoute = null, // The browser console is the application's logger unless it passes its own. logger = console, createBootstrapLogger = createClientBootstrapLogger, debugEnabled = undefined, debugEnvKey = "VITE_JSKIT_CLIENT_DEBUG", debugMessage = "Client modules bootstrapped before router install.", onAfterModulesBootstrapped = ignoreBootstrapStep, onAfterRouterReady = ignoreBootstrapStep, mountSelector = "#app" })`
525
532
  Local functions
526
533
  - `ignoreDebug()`
534
+ - `ignoreBootstrapStep()`
527
535
  - `installAppPlugins(app, appPlugins = [])`
528
536
  - `isSurfaceRootRecord(record)`
529
537
  - `staysOnSamePage(to, from)`
@@ -536,8 +544,8 @@ Exports
536
544
  - `WEB_ROOT_ALLOW_NO`
537
545
  - `DEFAULT_GUARD_EVALUATOR_KEY`
538
546
  - `createFallbackNotFoundRoute(component)`
539
- - `buildSurfaceAwareRoutes({ routes = [], surfaceRuntime, surfaceMode, fallbackRoute, notFoundComponent } = {})`
540
- - `createShellBeforeEachGuard({ surfaceRuntime, webRootAllowed = WEB_ROOT_ALLOW_YES, guardEvaluatorKey = DEFAULT_GUARD_EVALUATOR_KEY, authenticatedPolicy = AUTH_POLICY_AUTHENTICATED, publicPolicy = AUTH_POLICY_PUBLIC } = {})`
547
+ - `buildSurfaceAwareRoutes({ routes, surfaceRuntime, surfaceMode, fallbackRoute })`
548
+ - `createShellBeforeEachGuard({ surfaceRuntime, webRootAllowed = WEB_ROOT_ALLOW_YES, guardEvaluatorKey = DEFAULT_GUARD_EVALUATOR_KEY, authenticatedPolicy = AUTH_POLICY_AUTHENTICATED, publicPolicy = AUTH_POLICY_PUBLIC })`
541
549
  Local functions
542
550
  - `normalizeGuardPolicy(value)`
543
551
  - `resolveRouteGuardFromMeta(meta)`
@@ -545,7 +553,6 @@ Local functions
545
553
  - `resolveSearchFromFullPath(fullPath)`
546
554
  - `normalizeWebRootAllowed(value)`
547
555
  - `resolveEffectiveRouteGuard({ to, surfaceRuntime, authenticatedPolicy, publicPolicy })`
548
- - `resolveGuardEvaluator(guardEvaluatorKey)`
549
556
  - `normalizeGuardOutcome(outcome)`
550
557
  - `evaluateShellGuard({ guard, to, guardEvaluatorKey })`
551
558
 
@@ -560,6 +567,12 @@ Exports
560
567
  - `type ClientSurfaceMode`
561
568
  - `type ClientLogger`
562
569
  - `type ClientComponents`
570
+ - `type ClientRouteRecord`
571
+ - `type AsyncModuleRecoveryState`
572
+ - `type ClientBootstrap`
573
+ - `type ClientModuleEntry`
574
+ - `type ShellGuardOptions`
575
+ - `type ClientBootstrapHookContext`
563
576
 
564
577
  ### `client/vite/clientBootstrapPlugin.js`
565
578
  Exports
@@ -567,7 +580,7 @@ Exports
567
580
  - `bootInstalledClientModules(context = {})`
568
581
  - `CLIENT_BOOTSTRAP_VIRTUAL_ID`
569
582
  - `CLIENT_BOOTSTRAP_RESOLVED_ID`
570
- - `createVirtualModuleSource(clientModules = [], localePackageIds = [])`
583
+ - `createVirtualModuleSource(clientModules, localePackageIds)`
571
584
  - `resolveLocalePackageIds(installedPackages = [])`
572
585
  - `resolveClientOptimizeIncludeSpecifiers(clientModules = [], excludeSpecifiers = [])`
573
586
  - `resolveClientOptimizeExcludeSpecifiers(clientModules = [])`
@@ -14,6 +14,10 @@ Use this on demand; do not load the full index at startup.
14
14
 
15
15
  ### src
16
16
 
17
+ ### `src/client/browser.js`
18
+ Exports
19
+ - `pageLocation()`
20
+
17
21
  ### `src/client/i18n.js`
18
22
  Exports
19
23
  - `createTextError`
@@ -32,11 +36,13 @@ Exports
32
36
  Exports
33
37
  - `MobileCapacitorClientProvider`
34
38
  - `MobileCapacitorRuntimeProvider`
35
- - `installCapacitorAwareGlobalFetch({ adapter = null, apiBaseUrl = "", globalObject = globalThis } = {})`
39
+ - `installCapacitorAwareGlobalFetch({ adapter, apiBaseUrl = "", globalObject = globalThis })`
40
+ Local functions
41
+ - `keepPageFetch()`
36
42
 
37
43
  ### `src/client/runtime/apiRequestClient.js`
38
44
  Exports
39
- - `createCapacitorAwareFetch({ fetchImpl = globalThis.fetch, adapter = null, apiBaseUrl = "" } = {})`
45
+ - `createCapacitorAwareFetch({ fetchImpl = globalThis.fetch, adapter, apiBaseUrl = "" })`
40
46
  - `isCapacitorApiRequestTarget(url = "")`
41
47
  - `resolveCapacitorAbsoluteHttpUrl(url = "", apiBaseUrl = "", messages = {})`
42
48
  Local functions
@@ -45,23 +51,27 @@ Local functions
45
51
 
46
52
  ### `src/client/runtime/globalCapacitorAppAdapter.js`
47
53
  Exports
48
- - `createGlobalCapacitorAppAdapter({ globalObject = globalThis, appPlugin = null } = {})`
54
+ - `createGlobalCapacitorAppAdapter({ globalObject = globalThis, appPlugin = resolveCapacitorAppPlugin(globalObject) } = {})`
49
55
  - `createNoopCapacitorAppAdapter()`
50
56
  - `resolveCapacitorAppPlugin(globalObject = globalThis)`
57
+ Local functions
58
+ - `pluginHasFunction(plugin, name)`
59
+ - `readNoLaunchUrl()`
60
+ - `removeNoListener()`
61
+ - `subscribeToNothing()`
62
+ - `exitNothing()`
51
63
 
52
64
  ### `src/client/runtime/mobileCapacitorRuntime.js`
53
65
  Exports
54
- - `createMobileCapacitorRuntime({ router, mobileConfig = {}, adapter = createNoopCapacitorAppAdapter(), placementRuntime = null, authCallbackCompleter = null, authGuardRuntime = null, logger = null } = {})`
66
+ - `createMobileCapacitorRuntime({ router, mobileConfig, adapter, placementRuntime = NO_PLACEMENT_RUNTIME, authCallbackCompleter = NO_AUTH_CALLBACK_COMPLETER, authGuardRuntime = NO_AUTH_GUARD_RUNTIME, logger })`
55
67
  Local functions
56
68
  - `extractPathname(value = "")`
57
- - `normalizeCallbackCompleter(value = null)`
58
- - `normalizeAuthGuardRuntime(value = null)`
59
- - `isAuthCallbackTargetPath(targetPath = "", mobileConfig = {})`
69
+ - `isAuthCallbackTargetPath(targetPath, mobileConfig)`
60
70
 
61
71
  ### `src/client/runtime/mobileLaunchRouting.js`
62
72
  Exports
63
73
  - `normalizeIncomingAppUrl(url = "", mobileConfig, { currentOrigin = "", allowedHttpOrigins = [] } = {})`
64
- - `registerMobileLaunchRouting({ router, mobileConfig = {}, getInitialLaunchUrl = async () => "", subscribeToLaunchUrls = () => () => {}, resolveTargetPath = null, currentOrigin = typeof window === "object" && window?.location ? String(window.location.origin || "") : "", allowedHttpOrigins = [], logger = null } = {})`
74
+ - `registerMobileLaunchRouting({ router, mobileConfig, getInitialLaunchUrl, subscribeToLaunchUrls, resolveTargetPath, currentOrigin = pageLocation().origin, allowedHttpOrigins = [], logger = SILENT_LAUNCH_LOGGER })`
65
75
  Local functions
66
76
  - `buildNormalizedRoutePath(pathname = "/", search = "", hash = "")`
67
77
  - `normalizeResolvedRoutePath(value = "", fallback = "")`
@@ -70,5 +80,22 @@ Local functions
70
80
 
71
81
  ### `src/client/runtime/oauthLaunchClient.js`
72
82
  Exports
73
- - `createCapacitorAwareOAuthLaunchClient({ adapter = null, browserPlugin = Browser, location = null, apiBaseUrl = "" } = {})`
83
+ - `createCapacitorAwareOAuthLaunchClient({ adapter, browserPlugin = Browser, location = pageLocation(), apiBaseUrl = "" })`
74
84
  - `resolveCapacitorLaunchUrl(url = "", apiBaseUrl = "")`
85
+
86
+ ### `src/client/types.js`
87
+ Exports
88
+ - `type ClientRouter`
89
+ - `type MobileConfig`
90
+ - `type MobileCapacitorRuntime`
91
+ - `type MobileLaunchRouting`
92
+ - `type CapacitorOAuthLaunchClient`
93
+ - `type CapacitorAppAdapter`
94
+ - `type CapacitorListenerHandle`
95
+ - `type CapacitorAppPlugin`
96
+ - `type PageLocation`
97
+ - `type MobilePlacementRuntime`
98
+ - `type MobileAuthCallbackCompleter`
99
+ - `type MobileAuthGuardRuntime`
100
+ - `type MobileLaunchLogger`
101
+ - `type MobileCapability`