@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,473 @@
1
+ # packages/users-web
2
+
3
+ Generated by `npm run agent-docs:build`.
4
+ Do not edit manually.
5
+
6
+ Generated inventory for `packages/users-web`.
7
+ Use this on demand; do not load the full index at startup.
8
+
9
+ ## Scope
10
+ - Source: `packages/users-web/**/*{.js,.mjs,.cjs,.vue}`
11
+ - Excludes: `test/`, `tests/`, `__tests__/`, `*.test.*`, `*.spec.*`, `*.vitest.*`, `node_modules/`, `dist/`, `coverage/`, `docs/`, `LEGACY/`
12
+
13
+ ## Sections
14
+
15
+ ### src
16
+
17
+ ### `src/client/account-settings/sections.js`
18
+ Exports
19
+ - `ACCOUNT_SETTINGS_SECTIONS_INJECTION_KEY`
20
+ - `ACCOUNT_SETTINGS_SECTION_REGISTRY_TAG`
21
+ - `EMPTY_ACCOUNT_SETTINGS_SECTIONS`
22
+ - `RESERVED_ACCOUNT_SETTINGS_SECTION_VALUES`
23
+ - `normalizeAccountSettingsSectionEntry(entry = null)`
24
+ - `resolveAccountSettingsSections(entries = [])`
25
+ - `sortAccountSettingsSections(entries = [])`
26
+ - `useAccountSettingsSections()`
27
+
28
+ ### `src/client/components/ProfileClientElement.vue`
29
+ Exports
30
+ - None
31
+ Local functions
32
+ - `onSubmitProfile()`
33
+ - `onAvatarReplace()`
34
+ - `onAvatarRemove()`
35
+
36
+ ### `src/client/components/UsersHomeToolsWidget.vue`
37
+ Exports
38
+ - None
39
+
40
+ ### `src/client/composables/account-settings/accountSettingsAvatarUploadRuntime.js`
41
+ Exports
42
+ - `createAccountSettingsAvatarUploadRuntime({ queryClient, sessionQueryKey, accountSettingsQueryKey, selectedAvatarFileName, applySettingsData, reportAccountFeedback } = {})`
43
+
44
+ ### `src/client/composables/account-settings/accountSettingsRuntimeConstants.js`
45
+ Exports
46
+ - `ACCOUNT_SETTINGS_DEFAULTS`
47
+ - `AVATAR_DEFAULT_SIZE`
48
+ - `AVATAR_SIZE_OPTIONS`
49
+ - `CURRENCY_OPTIONS`
50
+ - `DATE_FORMAT_OPTIONS`
51
+ - `LOCALE_OPTIONS`
52
+ - `NUMBER_FORMAT_OPTIONS`
53
+ - `THEME_OPTIONS`
54
+ - `TIME_ZONE_OPTIONS`
55
+
56
+ ### `src/client/composables/account-settings/accountSettingsRuntimeHelpers.js`
57
+ Exports
58
+ - `resolveAllowedReturnToOrigins(contextValue = null)`
59
+ - `normalizeAvatarSize(value)`
60
+ - `normalizeReturnToPath(value, { fallback = "/", accountSettingsPath = "/account", allowedOrigins = [] } = {})`
61
+ - `normalizeSettingsPayload(value)`
62
+
63
+ ### `src/client/composables/crud/crudBindingSupport.js`
64
+ Exports
65
+ - `CRUD_BINDING_MODE_ROUTE`
66
+ - `CRUD_BINDING_MODE_MERGE`
67
+ - `CRUD_BINDING_MODE_EXPLICIT`
68
+ - `CRUD_BINDING_MODE_NONE`
69
+ - `normalizeCrudBindingMode(value = "")`
70
+ - `normalizeCrudBindingConfig(binding = {})`
71
+ - `resolveCrudBindingValues(values, context = {})`
72
+ - `resolveCrudBoundValues({ binding = {}, routeValues = {}, context = {} } = {})`
73
+
74
+ ### `src/client/composables/crud/crudLookupFieldLabelSupport.js`
75
+ Exports
76
+ - `resolveLookupItemLabel(item = {}, labelKey = "")`
77
+ - `resolveLookupFieldDisplayValue(record = {}, field = {}, relationKind = "", valueKey = "", labelKey = "")`
78
+ - `resolveRecordTitle(record = {}, { fallbackKey = "", defaultValue = DEFAULT_RECORD_TITLE } = {})`
79
+ Local functions
80
+ - `hasDisplayValue(value)`
81
+ - `resolveComposedLabel(source = {}, candidates = LOOKUP_LABEL_COMPOSITION_CANDIDATES)`
82
+ - `resolveLookupFieldDescriptor(field = {}, relationKind = "", valueKey = "", labelKey = "")`
83
+
84
+ ### `src/client/composables/crud/crudLookupFieldRuntime.js`
85
+ Exports
86
+ - `createCrudLookupFieldRuntime({ formFields = [], adapter = null, recordIdParam = "recordId", queryKeyPrefix = [], placementSourcePrefix = "", lookupContainerKey = "lookups" } = {})`
87
+ Local functions
88
+ - `normalizeQueryKeyPrefix(value)`
89
+ - `isSameLookupValue(left, right)`
90
+ - `normalizeLookupValue(value)`
91
+ - `createSelectedLookupItem(selectedValue, selectedRecord = {}, entry = {})`
92
+
93
+ ### `src/client/composables/crud/crudSchemaFormHelpers.js`
94
+ Exports
95
+ - `normalizeCrudFormFields(fields = [])`
96
+ - `createCrudFormModel(fields = [])`
97
+ - `buildCrudFormPayload(fields = [], model = {})`
98
+ - `applyCrudPayloadToForm(fields = [], model = {}, payload = {})`
99
+ - `resolveCrudRouteBoundFieldValues(fields = [], routeParams = {})`
100
+ - `applyCrudRouteBoundFieldValues(fields = [], target = {}, routeParams = {})`
101
+ - `resolveCrudFieldErrors(fieldErrors = {}, fieldKey = "")`
102
+ - `parseCrudResourceOperationInput({ resource = null, operationName = "", rawPayload = {}, context = {} } = {})`
103
+ Local functions
104
+ - `resolveStableFieldErrorList(fieldKey, message)`
105
+ - `resolveFormFieldType(field = {})`
106
+ - `resolveFormFieldFormat(field = {})`
107
+ - `padDateTimePart(value)`
108
+ - `normalizeTimeWhitespace(value)`
109
+ - `toTimeInputValue(value)`
110
+ - `toDateTimeLocalInputValue(value)`
111
+ - `toIsoUtcDateTimeValue(value)`
112
+ - `resolveFormFieldInitialValue(field = {})`
113
+ - `shouldSerializeClearedFieldAsNull(field = {})`
114
+
115
+ ### `src/client/composables/internal/crudListParentTitleSupport.js`
116
+ Exports
117
+ - `resolveCrudListParentDescriptor({ resource = {}, route = null, recordIdParam = "recordId" } = {})`
118
+ - `resolveCrudListParentRecordTitle(record = {}, descriptor = null)`
119
+ - `resolveCrudListParentTitleFromItems(items = [], descriptor = null)`
120
+ Local functions
121
+ - `singularizeLabel(value = "")`
122
+ - `toTitleLabel(value = "")`
123
+ - `resolveEntityLabel(routeParamKey = "", relationNamespace = "")`
124
+ - `resolveLookupFieldMeta(resource = {}, fieldKey = "")`
125
+
126
+ ### `src/client/composables/internal/useOperationScope.js`
127
+ Exports
128
+ - `useOperationScope({ ownershipFilter = ROUTE_VISIBILITY_WORKSPACE, surfaceId = "", access = "auto", placementSource = "users-web.operation", apiSuffix = "", model, readEnabled = true, queryKeyFactory = null, permissionSets = {}, realtime = null } = {})`
129
+ Local functions
130
+ - `normalizePermissionSets(permissionSets = {})`
131
+ - `hasAnyPermissions(permissionSets = {})`
132
+
133
+ ### `src/client/composables/records/useAddEdit.js`
134
+ Exports
135
+ - `useAddEdit({ ownershipFilter = ROUTE_VISIBILITY_WORKSPACE, surfaceId = "", access = "auto", resource = null, apiSuffix = "", queryKeyFactory = null, viewPermissions = [], savePermissions = [], readMethod = "GET", readEnabled = true, writeMethod = "PATCH", placementSource = "users-web.add-edit", fallbackLoadError = "Unable to load resource.", fallbackSaveError = "Unable to save resource.", fieldErrorKeys = [], clearOnRouteChange = true, model, parseInput, mapLoadedToModel, buildRawPayload, buildSavePayload, onSaveSuccess, recordIdParam = "recordId", routeParams = null, routeRecordId = null, apiUrlTemplate = "", viewUrlTemplate = "", listUrlTemplate = "", saveRecordIdSelector = null, messages = {}, realtime = null, adapter = null } = {})`
136
+
137
+ ### `src/client/composables/records/useCrudAddEdit.js`
138
+ Exports
139
+ - `useCrudAddEdit({ resource = null, operationName = "", formFields = [], addEditOptions = {}, saveSuccess = {}, fieldBinding = null, createModel = null, buildPayload = null, mapPayloadToModel = null, parseInput = null } = {})`
140
+ Local functions
141
+ - `normalizeFieldErrorKeys(keys = [])`
142
+ - `normalizeSaveSuccessOptions(options = {})`
143
+
144
+ ### `src/client/composables/records/useCrudList.js`
145
+ Exports
146
+ - `useCrudList({ resource = null, requestQueryParams = null, parentBinding = null, recordIdParam = "recordId", route = null, ...listOptions } = {})`
147
+ Local functions
148
+ - `resolveRequestQueryParamsInput(requestQueryParams, context = {})`
149
+ - `resolveCrudParentRequestQueryParams({ resource = {}, route = null, recordIdParam = "recordId" } = {})`
150
+
151
+ ### `src/client/composables/records/useCrudView.js`
152
+ Exports
153
+ - `useCrudView({ paramBinding = null, route = null, ...viewOptions } = {})`
154
+
155
+ ### `src/client/composables/records/useList.js`
156
+ Exports
157
+ - `useList({ ownershipFilter = ROUTE_VISIBILITY_WORKSPACE, surfaceId = "", access = "auto", apiSuffix = "", queryKeyFactory = null, viewPermissions = [], readEnabled = true, placementSource = "users-web.list", fallbackLoadError = "Unable to load list.", initialPageParam = null, getNextPageParam, selectItems, requestOptions, queryOptions, realtime = null, adapter = null, recordIdParam = "recordId", recordIdSelector = null, viewUrlTemplate = "", editUrlTemplate = "", search = null, queryParams = null, requestQueryParams = null, syncToRoute = false } = {})`
158
+
159
+ ### `src/client/composables/records/useView.js`
160
+ Exports
161
+ - `useView({ ownershipFilter = ROUTE_VISIBILITY_WORKSPACE, surfaceId = "", access = "auto", apiSuffix = "", queryKeyFactory = null, viewPermissions = [], readMethod = "GET", readEnabled = true, placementSource = "users-web.view", fallbackLoadError = "Unable to load resource.", notFoundStatuses = [404], notFoundMessage = "Record not found.", model, mapLoadedToModel, recordIdParam = "recordId", routeParams = null, routeRecordId = null, apiUrlTemplate = "", listUrlTemplate = "", editUrlTemplate = "", includeRecordIdInQueryKey = false, realtime = null, adapter = null } = {})`
162
+
163
+ ### `src/client/composables/runtime/addEditUiRuntime.js`
164
+ Exports
165
+ - `createAddEditUiRuntime({ recordIdParam = "recordId", routeParams = null, routeParamNames = null, routePath = "", routeRecordId = null, apiUrlTemplate = "", viewUrlTemplate = "", listUrlTemplate = "", saveRecordIdSelector = null } = {})`
166
+ Local functions
167
+ - `toResolvedRecordId({ routeParams, recordIdParam, routeRecordId })`
168
+ - `resolveSavedRecordId(payload, saveRecordIdSelector)`
169
+
170
+ ### `src/client/composables/runtime/listUiRuntime.js`
171
+ Exports
172
+ - `createListUiRuntime({ items, isInitialLoading, recordIdParam = "recordId", recordIdSelector = null, routeParams = null, routeParamNames = null, routePath = "", viewUrlTemplate = "", editUrlTemplate = "" } = {})`
173
+ Local functions
174
+ - `resolveRecordId(record, recordIdSelector)`
175
+
176
+ ### `src/client/composables/runtime/modelStateHelpers.js`
177
+ Exports
178
+ - `captureModelSnapshot(model)`
179
+ - `restoreModelSnapshot(model, snapshot)`
180
+ - `watchResourceModelState({ resource, model, mapLoadedToModel, resolveMapContext = null } = {})`
181
+ Local functions
182
+ - `isObjectLike(value)`
183
+ - `deepClone(value)`
184
+
185
+ ### `src/client/composables/runtime/operationAdapters.js`
186
+ Exports
187
+ - `createUsersOperationAdapter()`
188
+ - `resolveOperationAdapter(adapter, { context = "users-web operation adapter" } = {})`
189
+
190
+ ### `src/client/composables/runtime/operationUiHelpers.js`
191
+ Exports
192
+ - `setupRouteChangeCleanup({ enabled = true, route = null, feedback = null, fieldBag = null } = {})`
193
+ - `setupOperationErrorReporting({ enabled = true, source = "users-web.operation", loadError = null, notFoundError = null, loadActionFactory = null, notFoundActionFactory = null, loadChannel = "banner", notFoundChannel = "banner", loadSeverity = "error", notFoundSeverity = "warning", dedupeWindowMs = 2000 } = {})`
194
+ Local functions
195
+ - `normalizeMessage(value)`
196
+
197
+ ### `src/client/composables/runtime/operationValidationHelpers.js`
198
+ Exports
199
+ - `validateOperationInput({ parseInput, rawPayload = {}, context = {}, fieldBag = null, feedback = null, validationMessage = "Validation failed." } = {})`
200
+
201
+ ### `src/client/composables/runtime/useAddEditCore.js`
202
+ Exports
203
+ - `useAddEditCore({ model, resource, queryKey, canSave, fieldBag, feedback, parseInput, mapLoadedToModel, buildRawPayload, buildSavePayload, onSaveSuccess, messages = {} } = {})`
204
+
205
+ ### `src/client/composables/runtime/useCommandCore.js`
206
+ Exports
207
+ - `useCommandCore({ model, resource, writeMethod = "POST", canRun, fieldBag, feedback, parseInput, buildRawPayload, buildCommandPayload, buildCommandOptions, onRunSuccess, onRunError, suppressSuccessMessage = false, messages = {} } = {})`
208
+
209
+ ### `src/client/composables/runtime/useEndpointResource.js`
210
+ Exports
211
+ - `useEndpointResource({ queryKey, path = "", enabled = true, client = usersWebHttpClient, readMethod = "GET", writeMethod = "PATCH", queryOptions = null, mutationOptions = null, fallbackLoadError = "Unable to load resource.", fallbackSaveError = "Unable to save resource." } = {})`
212
+
213
+ ### `src/client/composables/runtime/useFieldErrorBag.js`
214
+ Exports
215
+ - `useFieldErrorBag(keys = [])`
216
+ Local functions
217
+ - `normalizeKeys(keys)`
218
+
219
+ ### `src/client/composables/runtime/useListCore.js`
220
+ Exports
221
+ - `useListCore({ queryKey, path = "", enabled = true, client = usersWebHttpClient, initialPageParam = null, getNextPageParam, selectItems, requestOptions = null, queryOptions = null, fallbackLoadError = "Unable to load list." } = {})`
222
+ Local functions
223
+ - `appendPageParam(path, pageParam)`
224
+
225
+ ### `src/client/composables/runtime/useUiFeedback.js`
226
+ Exports
227
+ - `useUiFeedback({ initialType = "success", source = "users-web.ui-feedback", successChannel = "snackbar", errorChannel = "banner", dedupeWindowMs = 2000 } = {})`
228
+
229
+ ### `src/client/composables/runtime/useViewCore.js`
230
+ Exports
231
+ - `useViewCore({ resource, model, canView, mapLoadedToModel, notFoundStatuses = [404], notFoundMessage = "Record not found." } = {})`
232
+ Local functions
233
+ - `normalizeStatusList(value)`
234
+
235
+ ### `src/client/composables/runtime/viewUiRuntime.js`
236
+ Exports
237
+ - `createViewUiRuntime({ recordIdParam = "recordId", routeParams = null, routeParamNames = null, routePath = "", routeRecordId = null, apiUrlTemplate = "", listUrlTemplate = "", editUrlTemplate = "" } = {})`
238
+ Local functions
239
+ - `resolveRecordId({ routeParams, recordIdParam, routeRecordId })`
240
+
241
+ ### `src/client/composables/support/errorMessageHelpers.js`
242
+ Exports
243
+ - `toQueryErrorMessage(error, fallbackMessage = "", defaultMessage = "Request failed.")`
244
+ - `toUiErrorMessage(error, fallbackMessage = "", defaultMessage = "Request failed.")`
245
+ Local functions
246
+ - `normalizeErrorStatus(error)`
247
+ - `isGenericTransportMessage(error)`
248
+
249
+ ### `src/client/composables/support/listQueryParamSupport.js`
250
+ Exports
251
+ - `normalizeListSyncToRouteConfig(syncToRoute = false, { defaultSearchParam = "q" } = {})`
252
+ - `resolveQueryParamDescriptors(queryParams, context = {})`
253
+ - `resolveActiveQueryParamEntries(descriptors = [])`
254
+ - `resolveWritableQueryParamBindings(descriptors = [])`
255
+ - `buildQueryParamEntriesToken(entries = [])`
256
+ - `parseRouteBindingValue(binding, routeQueryValue)`
257
+ - `areQueryParamBindingValuesEqual(left, right)`
258
+ - `buildRouteQueryCompareToken(query = {})`
259
+ - `mergeManagedQueryParamKeyHistory(history = [], keys = [])`
260
+ - `resolveRouteSyncManagedKeys({ searchEnabled = false, searchParam = "q", syncSearch = false, syncQueryParams = false, declaredKeys = [], keyHistory = [] } = {})`
261
+ Local functions
262
+ - `normalizeQueryParamKey(value)`
263
+ - `normalizeQueryParamValues(value)`
264
+ - `resolveQueryParamsInput(queryParams, context = {})`
265
+ - `resolveQueryParamBindingType(value)`
266
+ - `resolveArrayQueryParamItemType(values = [])`
267
+ - `createWritableQueryParamBinding({ source = {}, rawKey = "", rawValue = null, key = "" } = {})`
268
+ - `firstRouteQueryValue(value)`
269
+ - `normalizeRouteQueryValues(value)`
270
+ - `parseRouteBooleanValue(value, fallback = false)`
271
+ - `parseRouteNumberValue(value, fallback = null)`
272
+ - `parseRouteDateValue(value, fallback = null)`
273
+ - `parseRouteQueryItemValue(value, itemType = QUERY_PARAM_BINDING_TYPE_TEXT, fallback = null)`
274
+ - `areQueryParamBindingItemsEqual(left, right)`
275
+
276
+ ### `src/client/composables/support/listSearchSupport.js`
277
+ Exports
278
+ - `normalizeListSearchConfig(value = {})`
279
+ - `matchesLocalSearch(item = {}, query = "", searchFields = [])`
280
+ Local functions
281
+ - `normalizeSearchableValue(value)`
282
+
283
+ ### `src/client/composables/support/refValueHelpers.js`
284
+ Exports
285
+ - `resolveEnabledRef(value)`
286
+ - `resolveTextRef(value)`
287
+
288
+ ### `src/client/composables/support/resourceLoadStateHelpers.js`
289
+ Exports
290
+ - `hasResolvedQueryData({ query = null, data = null } = {})`
291
+
292
+ ### `src/client/composables/support/routeTemplateHelpers.js`
293
+ Exports
294
+ - `normalizeRouteParamName(value = "", { context = "users-web route param" } = {})`
295
+ - `toRouteParamValue(value)`
296
+ - `resolveRouteParamsSource(source = null)`
297
+ - `resolveRouteParamNamesSource(source = [])`
298
+ - `resolveRoutePathnameSource(source = "")`
299
+ - `resolveScopedRoutePathname({ currentPathname = "/", params = {}, orderedParamNames = [], anchorParamName = "", anchorParamValue = "", anchorMode = "at" } = {})`
300
+ - `resolveRouteTemplatePath(routeTemplate = "", params = {})`
301
+ - `resolveRouteTemplateLocation(routeTemplate = "", { params = {}, currentPathname = "/" } = {})`
302
+ - `extractRouteParamNames(pathTemplate = "")`
303
+ - `resolveRouteParamNamesInOrder(route = null)`
304
+ Local functions
305
+ - `resolveRouteSourceValue(source = null)`
306
+ - `normalizeRouteParamNameList(value = [])`
307
+ - `normalizeRoutePathname(value = "")`
308
+ - `segmentMatchesParamValue(segment = "", paramValue = "")`
309
+ - `findRouteParamSegmentIndex(segments = [], paramValue = "", fromIndex = 0)`
310
+ - `normalizePathPrefix(segments = [], endIndex = -1)`
311
+ - `resolveAnchorEndIndex(segmentIndex = -1, totalSegments = 0, anchorMode = "at")`
312
+
313
+ ### `src/client/composables/support/scopeHelpers.js`
314
+ Exports
315
+ - `asPlainObject(value)`
316
+ - `normalizePermissions(value)`
317
+ - `resolvePermissionAccess(access, normalizedPermissions = [])`
318
+ - `normalizeAccessMode(value = "auto")`
319
+ - `resolveAccessModeEnabled(accessMode = "auto", { hasPermissionRequirements = false } = {})`
320
+ - `ensureAccessModeCompatibility({ accessMode = "auto", hasPermissionRequirements = false, caller = "users-web" } = {})`
321
+ - `resolveApiSuffix(apiSuffix, context = {})`
322
+ - `resolveEnabled(value, context = {})`
323
+ - `normalizeOwnershipFilter(value = ROUTE_VISIBILITY_WORKSPACE)`
324
+ - `isScopedOwnershipFilter(ownershipFilter)`
325
+ - `resolveQueryKey(queryKeyFactory, { surfaceId = "", scopeParamValue = "", ownershipFilter = ROUTE_VISIBILITY_WORKSPACE } = {})`
326
+ - `resolveResourceMessages(resource, defaults = {})`
327
+
328
+ ### `src/client/composables/useAccess.js`
329
+ Exports
330
+ - `useAccess({ scopeParamValue = "", enabled = true, access = "always", hasPermissionRequirements = false } = {})`
331
+ Local functions
332
+ - `asPermissionList(value)`
333
+
334
+ ### `src/client/composables/useAccountSettingsRuntime.js`
335
+ Exports
336
+ - `useAccountSettingsRuntime()`
337
+
338
+ ### `src/client/composables/useCommand.js`
339
+ Exports
340
+ - `useCommand({ ownershipFilter = ROUTE_VISIBILITY_WORKSPACE, surfaceId = "", access = "auto", apiSuffix = "", runPermissions = [], writeMethod = "POST", placementSource = "users-web.command", fallbackRunError = "Unable to complete action.", fieldErrorKeys = [], clearOnRouteChange = true, model, parseInput, buildRawPayload, buildCommandPayload, buildCommandOptions, onRunSuccess, onRunError, suppressSuccessMessage = false, messages = {}, realtime = null } = {})`
341
+
342
+ ### `src/client/composables/useCrudListParentTitle.js`
343
+ Exports
344
+ - `useCrudListParentTitle({ listRuntime = null, resource = {}, adapter = null, recordIdParam = "recordId", queryKeyPrefix = ["users-web", "crud-list-parent-title"], placementSource = "users-web.crud-list-parent-title", fallbackLoadError = "Unable to load parent record.", notFoundMessage = "Parent record not found.", route = null, viewRuntimeFactory = useView } = {})`
345
+ Local functions
346
+ - `normalizeQueryKeyPrefix(value = [])`
347
+
348
+ ### `src/client/composables/usePagedCollection.js`
349
+ Exports
350
+ - `usePagedCollection({ queryKey, enabled = true, initialPageParam = null, queryFn, getNextPageParam = defaultGetNextPageParam, selectItems = defaultSelectItems, dedupeBy = null, queryOptions = null, fallbackLoadError = "Unable to load list." } = {})`
351
+ - `trimInfinitePagesToFirst(data = null)`
352
+ Local functions
353
+ - `defaultSelectItems(page)`
354
+ - `defaultGetNextPageParam(lastPage)`
355
+ - `normalizeQueryKeyValue(queryKey = null)`
356
+
357
+ ### `src/client/composables/usePaths.js`
358
+ Exports
359
+ - `usePaths({ routeContext: sourceRouteContext = null } = {})`
360
+ Local functions
361
+ - `normalizePathSuffix(value = "")`
362
+ - `resolveSurfaceId(value, fallback = "")`
363
+ - `resolveDefaultSurfaceIdFromPlacementContext(placementContext = null)`
364
+ - `normalizeRouteParams(params = null)`
365
+ - `resolveRouteParams(baseParams = {}, overrideParams = null)`
366
+
367
+ ### `src/client/composables/useRealtimeQueryInvalidation.js`
368
+ Exports
369
+ - `useRealtimeQueryInvalidation({ event = "", enabled = true, matches = null, queryKey = null, onEvent = null } = {})`
370
+ - `useOperationRealtime({ realtime = null, queryKey = null, enabled = true } = {})`
371
+ Local functions
372
+ - `normalizeRealtimeOptions(value = {})`
373
+ - `resolveEnabled(value)`
374
+ - `toQueryKeyList(value)`
375
+
376
+ ### `src/client/composables/useScopeRuntime.js`
377
+ Exports
378
+ - `useScopeRuntime({ ownershipFilter = ROUTE_VISIBILITY_WORKSPACE, surfaceId = "", accessMode = "auto", hasPermissionRequirements = false, placementSource = "users-web.scope-runtime" } = {})`
379
+ Local functions
380
+ - `resolveScopedRouteParamNames(placementContext = null, surfaceId = "")`
381
+
382
+ ### `src/client/composables/useSurfaceRouteContext.js`
383
+ Exports
384
+ - `useSurfaceRouteContext()`
385
+
386
+ ### `src/client/index.js`
387
+ Exports
388
+ - `UsersWebClientProvider`
389
+ - `clientProviders`
390
+
391
+ ### `src/client/lib/bootstrap.js`
392
+ Exports
393
+ - `resolvePlacementUserFromBootstrapPayload(payload = {}, currentUser = null)`
394
+
395
+ ### `src/client/lib/httpClient.js`
396
+ Exports
397
+ - `usersWebHttpClient`
398
+
399
+ ### `src/client/lib/permissions.js`
400
+ Exports
401
+ - `normalizePermissionList`
402
+ - `arePermissionListsEqual(left, right)`
403
+ - `hasPermission`
404
+ Local functions
405
+ - `toPermissionSet(values)`
406
+
407
+ ### `src/client/lib/theme.js`
408
+ Exports
409
+ - `THEME_PREFERENCE_DARK`
410
+ - `THEME_PREFERENCE_LIGHT`
411
+ - `THEME_PREFERENCE_SYSTEM`
412
+ - `normalizeThemePreference(value)`
413
+ - `persistBootstrapThemePreference(payload = {}, options = {})`
414
+ - `persistThemePreference(themePreference, options = {})`
415
+ - `readPersistedThemePreference(options = {})`
416
+ - `resolveBootstrapThemePreference(payload = {}, options = {})`
417
+ - `resolveThemeNameForPreference(themePreference, options = {})`
418
+ - `resolveBootstrapThemeName(payload = {}, options = {})`
419
+ - `resolveVuetifyThemeController(vueApp)`
420
+ - `setVuetifyThemeName(themeController, themeName)`
421
+ Local functions
422
+ - `resolveSystemThemeName({ prefersDark } = {})`
423
+ - `resolveThemePreferenceStorage(options = {})`
424
+
425
+ ### `src/client/providers/bootUsersWebClientProvider.js`
426
+ Exports
427
+ - `bootUsersWebClientProvider(app)`
428
+
429
+ ### `src/client/providers/UsersWebClientProvider.js`
430
+ Exports
431
+ - `UsersWebClientProvider`
432
+
433
+ ### `src/client/support/contractGuards.js`
434
+ Exports
435
+ - `requireRecord(value, label = "value", owner = "Contract")`
436
+ - `requireBoolean(value, label = "value", owner = "Contract")`
437
+ - `requireFunction(value, label = "value", owner = "Contract")`
438
+
439
+ ### `src/shared/toolsOutletContracts.js`
440
+ Exports
441
+ - `DEFAULT_TOOLS_LINK_COMPONENT_TOKEN`
442
+ - `HOME_TOOLS_OUTLET`
443
+
444
+ ### templates
445
+
446
+ ### `templates/src/components/account/settings/AccountSettingsClientElement.vue`
447
+ Exports
448
+ - None
449
+ Local functions
450
+ - `normalizeSection(value)`
451
+ - `readRouteSection()`
452
+
453
+ ### `templates/src/components/account/settings/AccountSettingsNotificationsSection.vue`
454
+ Exports
455
+ - None
456
+
457
+ ### `templates/src/components/account/settings/AccountSettingsPreferencesSection.vue`
458
+ Exports
459
+ - None
460
+
461
+ ### `templates/src/components/account/settings/AccountSettingsProfileSection.vue`
462
+ Exports
463
+ - None
464
+
465
+ ### `templates/src/pages/account/index.vue`
466
+ Exports
467
+ - None
468
+
469
+ ### root
470
+
471
+ ### `package.descriptor.mjs`
472
+ Exports
473
+ - None