@jskit-ai/agent-docs 0.1.247 → 0.1.249

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 (55) hide show
  1. package/guide/agent/app-extras/assistant-conversation.md +4 -2
  2. package/guide/agent/framework/translation.md +227 -0
  3. package/guide/agent/index.md +1 -0
  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 +3 -3
  7. package/patterns/shell-foundation/example/package.json +4 -4
  8. package/patterns/shell-foundation/example/packages/main/package.json +1 -1
  9. package/reference/autogen/KERNEL_MAP.md +27 -2
  10. package/reference/autogen/PATTERN_INDEX.md +37 -37
  11. package/reference/autogen/packages/assistant-core.md +21 -3
  12. package/reference/autogen/packages/assistant-runtime.md +15 -0
  13. package/reference/autogen/packages/assistant-voice.md +13 -5
  14. package/reference/autogen/packages/auth-core.md +14 -1
  15. package/reference/autogen/packages/auth-provider-local-core.md +1 -1
  16. package/reference/autogen/packages/auth-web.md +12 -2
  17. package/reference/autogen/packages/connector-google-calendar.md +6 -1
  18. package/reference/autogen/packages/connectors-catalog.md +19 -4
  19. package/reference/autogen/packages/connectors-core.md +5 -1
  20. package/reference/autogen/packages/connectors-web.md +5 -0
  21. package/reference/autogen/packages/http-runtime.md +6 -3
  22. package/reference/autogen/packages/http-web.md +27 -18
  23. package/reference/autogen/packages/kernel.md +74 -7
  24. package/reference/autogen/packages/mobile-capacitor.md +6 -1
  25. package/reference/autogen/packages/payments-core.md +2 -2
  26. package/reference/autogen/packages/payments-web.md +8 -0
  27. package/reference/autogen/packages/realtime.md +5 -0
  28. package/reference/autogen/packages/rewarded-web.md +5 -0
  29. package/reference/autogen/packages/shell-web.md +13 -3
  30. package/reference/autogen/packages/uploads-image-web.md +5 -0
  31. package/reference/autogen/packages/uploads-runtime.md +1 -1
  32. package/reference/autogen/packages/users-core.md +1 -0
  33. package/reference/autogen/packages/users-web.md +22 -0
  34. package/reference/autogen/packages/workspaces-core.md +10 -3
  35. package/reference/autogen/packages/workspaces-web.md +4 -0
  36. package/reference/autogen/tooling/jskit-catalog.md +28 -0
  37. package/skills/jskit/SKILL.md +3 -3
  38. package/skills/jskit/references/pattern-index.md +37 -37
  39. package/skills/jskit/references/patterns/app/minimal-foundation/example/package.json +3 -3
  40. package/skills/jskit/references/patterns/app/shell-foundation/example/package.json +4 -4
  41. package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/package.json +1 -1
  42. package/skills/jskit/references/patterns/auth/accounts-hub/example/package.json +2 -2
  43. package/skills/jskit/references/patterns/auth/oidc-sign-in/example/package.json +2 -2
  44. package/skills/jskit/references/patterns/auth/supabase-auth/example/package.json +1 -1
  45. package/skills/jskit/references/patterns/connectors/calendar-cli/example/package.json +4 -4
  46. package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/package.json +2 -2
  47. package/skills/jskit/references/patterns/database/mysql-application/example/package.json +1 -1
  48. package/skills/jskit/references/patterns/database/postgres-application/example/package.json +1 -1
  49. package/skills/jskit/references/patterns/realtime/realtime-application/example/package.json +2 -2
  50. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/package.json +1 -1
  51. package/skills/jskit/references/patterns/users/account-settings/PATTERN.md +10 -0
  52. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/package.json +2 -2
  53. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/package.json +3 -3
  54. package/skills/jskit/references/patterns/workspaces/workspace-server/PATTERN.md +7 -0
  55. package/skills/jskit/references/translation.md +227 -0
@@ -316,7 +316,7 @@ Exports
316
316
  - `googleAdsSearchOperations`
317
317
  - `createGoogleAdsSearchService({ connections, configuration, context, integrationId })`
318
318
  Local functions
319
- - `error(message)`
319
+ - `error(message, codes)`
320
320
  - `hash(value)`
321
321
  - `requestOperation(fields, build, validateResult)`
322
322
  - `mutated(result)`
@@ -378,7 +378,7 @@ Exports
378
378
  - `googleScope(name)`
379
379
  - `googleOperation(scopes, fields, request, validateResult)`
380
380
  - `googleBatchRequests(requests, product)`
381
- - `inputInvalid(message, statusCode = 422)`
381
+ - `inputInvalid(message, { statusCode = 422, ...codes } = {})`
382
382
  - `googleRead(scopes, fields, destination, validateResult)`
383
383
  - `googleProvider(definition, origin, checkOperation, operations)`
384
384
  - `googleFileVerification(get, field)`
@@ -802,7 +802,7 @@ Local functions
802
802
  - `serializeNativeJson(value)`
803
803
  - `guid(value)`
804
804
  - `requestPath(request, index)`
805
- - `sameRecord(matches, message)`
805
+ - `sameRecord(matches, message, codes)`
806
806
  - `cursor(value)`
807
807
  - `bookingDirectoryOperation(kind)`
808
808
  - `validContact(value)`
@@ -828,7 +828,7 @@ Exports
828
828
  - `createWizScanner({ configuration, authorize, resolveReference, resolveScanTarget, executable, environment = { PATH: process.env.PATH || "/usr/bin:/bin" }, timeoutMs = 600_000, maxReportBytes = 16 * 1024 * 1024 })`
829
829
  Local functions
830
830
  - `object(value)`
831
- - `failure(code, message, statusCode = 502)`
831
+ - `failure(code, message, statusCode = 502, codes = {})`
832
832
  - `runCli(executable, args, options, signal, timeoutMs)`
833
833
 
834
834
  ### `src/server/woocommerce.js`
@@ -1029,6 +1029,21 @@ Exports
1029
1029
  - `resendDefinition`
1030
1030
  - `firecrawlDefinition`
1031
1031
 
1032
+ ### `src/shared/english-ai.js`
1033
+ Exports
1034
+ - `aiCatalogue`
1035
+ - `getAiModel`
1036
+ - `listAiModels`
1037
+
1038
+ ### `src/shared/english-definitions.js`
1039
+ Exports
1040
+ - `createCanvaClientMetadata`
1041
+ - `validN8nOAuthDiscovery`
1042
+
1043
+ ### `src/shared/english-texts.js`
1044
+ Exports
1045
+ - `englishTexts`
1046
+
1032
1047
  ### `src/shared/figma.js`
1033
1048
  Exports
1034
1049
  - `figmaDefinition`
@@ -19,7 +19,7 @@ Exports
19
19
  - `createConnectionService({ configuration, providers, resolveReference, store, authorize, executionMode = "application", fetchImpl = globalThis.fetch, now = Date.now })`
20
20
  Local functions
21
21
  - `publicConnection(connection)`
22
- - `requireOperationScope(operation, scopes, message)`
22
+ - `requireOperationScope(operation, scopes, message, { messageCode })`
23
23
  - `operationRequest(operation, input, settings, providerData)`
24
24
  - `validateCallbackUrl(value)`
25
25
  - `connectionMatches(connection, integration, providerId, registration)`
@@ -73,6 +73,8 @@ Exports
73
73
  Exports
74
74
  - `DEFAULT_GRANT_TYPE`
75
75
  - `DEFAULT_TOKEN_ENDPOINT_AUTH_METHOD`
76
+ - `MESSAGE_KEY_SOURCE`
77
+ - `createEnglishProviderTexts(catalog)`
76
78
  - `registrationGrantType(record)`
77
79
  - `registrationClientAuthentication(record)`
78
80
  - `providerGrantTypes(provider)`
@@ -88,6 +90,8 @@ Exports
88
90
  - `IntegrationConfigurationError`
89
91
  - `parseIntegrationConfiguration(text, options)`
90
92
  - `validateIntegrationConfiguration(input, { providers = [], allowUnknownProviders = false } = {})`
93
+ Local functions
94
+ - `schemaFieldErrors(error, fallback, prefix = "")`
91
95
 
92
96
  ### migrations
93
97
 
@@ -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/i18n.js`
18
+ Exports
19
+ - `useJskitText`
20
+
17
21
  ### `src/client/index.js`
18
22
  Exports
19
23
  - `IntegrationConfigurationFields`
@@ -26,6 +30,7 @@ Local functions
26
30
  - `accountModeForGrant(grant, settings, accountMode)`
27
31
  - `settingValue(field)`
28
32
  - `settingHint(field)`
33
+ - `settingItems(field)`
29
34
  - `settingErrors(field)`
30
35
  - `editAssistantPolicy(changes)`
31
36
  - `editIntegration(changes)`
@@ -42,7 +42,7 @@ Local functions
42
42
  Exports
43
43
  - `normalizeFieldErrors`
44
44
  - `resolveFieldErrors`
45
- - `createValidationFailure({ error = "Validation failed.", code = "validation_failed", fieldErrors = {} } = {})`
45
+ - `createValidationFailure({ error = "Validation failed.", code = "validation_failed", fieldErrors = {}, fieldErrorCodes = null } = {})`
46
46
 
47
47
  ### `src/shared/clientRuntime/client.js`
48
48
  Exports
@@ -94,6 +94,7 @@ Local functions
94
94
  - `simplifyResourceObject(resource = {}, options = {})`
95
95
  - `assertPrimaryDataType(resource = {}, expectedType = "")`
96
96
  - `resolveCollectionPageMeta(document = {})`
97
+ - `decodeJsonApiErrorFields(payload = {})`
97
98
 
98
99
  ### `src/shared/clientRuntime/retry.js`
99
100
  Exports
@@ -226,7 +227,7 @@ Exports
226
227
  - `createJsonApiResourceRouteTransport({ type = "", requestType = "", responseType = "", query = null, allowBodyId = false, successKind = "record", pointerPrefix = "/data/attributes", mapRequestRelationships = null, getRecordType = null, getRecordId = null, getRecordAttributes = null, getRecordRelationships = null, getRecordLinks = null, getRecordMeta = null, getIncluded = null, getDocumentLinks = null, getDocumentMeta = null, getCollectionItems = null } = {})`
227
228
  - `createJsonApiResourceRouteContract({ type = "", requestType = "", responseType = "", body = null, query = null, output = null, outputKind = "record", successStatus = 200, includeValidation400 = false, allowSparseFields = false, allowBodyId = false, pointerPrefix = "/data/attributes", bodyAttributeExcludeKeys = [], outputAttributeExcludeKeys = [], bodyRelationshipEntries = [], outputRelationshipEntries = [], getRecordType = null, getRecordId = null, getRecordAttributes = null, getRecordRelationships = null, getRecordLinks = null, getRecordMeta = null, getIncluded = null, getDocumentLinks = null, getDocumentMeta = null, getCollectionItems = null, mapRequestRelationships = null } = {})`
228
229
  Local functions
229
- - `createJsonApiTransportError(statusCode, message, code)`
230
+ - `createJsonApiTransportError(statusCode, message, code, params = {})`
230
231
  - `resolveRouteType(type = "")`
231
232
  - `resolveRouteTypes(value = {})`
232
233
  - `resolveEmbeddedAttributesTransportSchema(definition, { context = "JSON:API resource", defaultMode = "replace", removeId = false, removeKeys = [], allowSparseFields = false } = {})`
@@ -246,7 +247,7 @@ Exports
246
247
  - `JSON_API_CONTENT_TYPE`
247
248
  - `resolveJsonApiTransportTypes({ type = "", requestType = "", responseType = "" } = {}, { context = "JSON:API transport" } = {})`
248
249
  - `createJsonApiDocument({ data = undefined, included = undefined, links = undefined, meta = undefined, errors = undefined } = {})`
249
- - `createJsonApiErrorDocumentFromFailure({ statusCode = 500, code = "", message = "", transactionOutcome, fieldErrors = {}, validationIssues = [], validationContext = "", pointerPrefix = "/data/attributes" } = {})`
250
+ - `createJsonApiErrorDocumentFromFailure({ statusCode = 500, code = "", message = "", params = {}, messageCode = "", messageParams = {}, transactionOutcome, fieldErrors = {}, fieldErrorCodes = {}, validationIssues = [], validationIssueCodes = [], validationContext = "", pointerPrefix = "/data/attributes" } = {})`
250
251
  - `createJsonApiErrorObject({ status = "", code = "", title = "", detail = "", source = undefined, links = undefined, meta = undefined } = {})`
251
252
  - `createJsonApiResourceObject({ type = "", id = null, attributes = undefined, relationships = undefined, links = undefined, meta = undefined } = {})`
252
253
  - `isJsonApiCollectionDocument(payload = {})`
@@ -254,6 +255,7 @@ Exports
254
255
  - `isJsonApiErrorDocument(payload = {})`
255
256
  - `isJsonApiResourceDocument(payload = {})`
256
257
  - `isJsonContentType(contentType = "")`
258
+ - `normalizeCodedEntry(entry)`
257
259
  - `normalizeJsonApiDocument(payload = {})`
258
260
  - `normalizeJsonApiResourceObject(resource = {})`
259
261
  - `simplifyJsonApiDocument(payload = {})`
@@ -266,6 +268,7 @@ Local functions
266
268
  - `escapeJsonPointerSegment(value = "")`
267
269
  - `resolveValidationFieldName(issue = {})`
268
270
  - `resolveJsonApiValidationSource(issue = {}, validationContext = "")`
271
+ - `createJsonApiErrorMeta({ transactionOutcome, params, messageCode, messageParams, fieldErrorCode })`
269
272
  - `simplifyJsonApiResourceObject(resource = {})`
270
273
 
271
274
  ### `src/shared/validators/operationValidation.js`
@@ -40,6 +40,7 @@ Local functions
40
40
  - `execute(action = {})`
41
41
  - `isActionDisabled(action = {})`
42
42
  - `isActionExecuting(action = {})`
43
+ - `actionLabel(action = {})`
43
44
 
44
45
  ### `src/client/components/CrudListDateFilterControl.vue`
45
46
  Exports
@@ -57,7 +58,8 @@ Exports
57
58
  - None
58
59
  Local functions
59
60
  - `optionItems(filter = {})`
60
- - `placeholder(filter = {}, fallback = "")`
61
+ - `filterLabel(filter = {}, key = "", params = {})`
62
+ - `placeholder(filter = {}, fallbackKey = "")`
61
63
 
62
64
  ### `src/client/components/CrudListFilterSurface.vue`
63
65
  Exports
@@ -71,6 +73,7 @@ Exports
71
73
  - None
72
74
  Local functions
73
75
  - `isRowActionLoading(action = {})`
76
+ - `rowActionLabel(action = {})`
74
77
  - `isRowActionDisabled(action = {})`
75
78
  - `runRowAction(action = {})`
76
79
 
@@ -173,7 +176,7 @@ Exports
173
176
  - `resolveLookupSelectedValues(filter = {}, rawValue = undefined)`
174
177
  - `createLookupOptionsFromItems(items = [], filter = {}, labelResolver = null)`
175
178
  - `mergeSelectedLookupOptions(options = [], selectedValues = [], cachedOptions = new Map())`
176
- - `resolveLookupOptionLabel(options = [], cachedOptions = new Map(), value = "", fallback = "Option")`
179
+ - `resolveLookupOptionLabel(options = [], cachedOptions = new Map(), value = "", fallback = "")`
177
180
  Local functions
178
181
  - `createLookupOptionFromItem(item = {}, filter = {}, labelResolver = null)`
179
182
 
@@ -197,7 +200,7 @@ Local functions
197
200
 
198
201
  ### `src/client/composables/records/useAddEdit.js`
199
202
  Exports
200
- - `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 = "Resource", placementSource = "http-web.add-edit", fallbackLoadError = "Unable to load resource.", 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 } = {})`
203
+ - `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 } = {})`
201
204
 
202
205
  ### `src/client/composables/records/useCrudAddEdit.js`
203
206
  Exports
@@ -219,11 +222,11 @@ Exports
219
222
 
220
223
  ### `src/client/composables/records/useList.js`
221
224
  Exports
222
- - `useList({ ownershipFilter = ROUTE_VISIBILITY_WORKSPACE, surfaceId = "", access = "auto", apiSuffix = "", queryKeyFactory = null, viewPermissions = [], readEnabled = true, placementSource = "http-web.list", fallbackLoadError = "Unable to load list.", initialPageParam = null, getNextPageParam, selectItems, client = null, transport = null, requestOptions, queryOptions, requestRecovery, requestRecoveryLabel = "List", realtime = null, recordIdParam = "recordId", recordIdSelector = null, viewUrlTemplate = "", editUrlTemplate = "", search = null, queryParams = null, routeQueryValueResolvers = null, requestQueryParams = null, requestFieldsets = null, syncToRoute = false } = {})`
225
+ - `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 } = {})`
223
226
 
224
227
  ### `src/client/composables/records/useView.js`
225
228
  Exports
226
- - `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 = "Resource", placementSource = "http-web.view", fallbackLoadError = "Unable to load resource.", notFoundStatuses = [404], notFoundMessage = "Record not found.", model, mapLoadedToModel, requestQueryParams = null, requestFieldsets = null, recordIdParam = "recordId", routeParams = null, routeRecordId = null, apiUrlTemplate = "", listUrlTemplate = "", editUrlTemplate = "", includeRecordIdInQueryKey = false, realtime = undefined } = {})`
229
+ - `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 } = {})`
227
230
 
228
231
  ### `src/client/composables/runtime/addEditUiRuntime.js`
229
232
  Exports
@@ -255,7 +258,7 @@ Local functions
255
258
 
256
259
  ### `src/client/composables/runtime/operationValidationHelpers.js`
257
260
  Exports
258
- - `validateOperationInput({ input, rawPayload = {}, fieldBag = null, feedback = null, validationMessage = "Validation failed." } = {})`
261
+ - `validateOperationInput({ input, rawPayload = {}, fieldBag = null, feedback = null, validationMessage = "" } = {})`
259
262
 
260
263
  ### `src/client/composables/runtime/useAddEditCore.js`
261
264
  Exports
@@ -269,7 +272,7 @@ Exports
269
272
  Exports
270
273
  - `buildEndpointReadRequestOptions({ method = "GET", query = null, transport = null } = {})`
271
274
  - `buildEndpointWriteRequestOptions({ method = "PATCH", body = undefined, options = null, transport = null } = {})`
272
- - `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, requestRecoveryLabel = "Request", fallbackLoadError = "Unable to load resource.", fallbackSaveError = "Unable to save resource." } = {})`
275
+ - `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" } = {})`
273
276
  Local functions
274
277
  - `resolveRequestQuery(value = null)`
275
278
 
@@ -281,7 +284,7 @@ Exports
281
284
  ### `src/client/composables/runtime/useListCore.js`
282
285
  Exports
283
286
  - `buildListRequestOptions({ requestOptions = null, transport = null, pageParam = null } = {})`
284
- - `useListCore({ queryKey, path = "", enabled = true, client = null, transport = null, initialPageParam = null, getNextPageParam, selectItems, requestOptions = null, queryOptions = null, requestRecovery = null, requestRecoveryLabel = "List", fallbackLoadError = "Unable to load list." } = {})`
287
+ - `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") } = {})`
285
288
  Local functions
286
289
  - `resolveRequestOptionsObject(value = null)`
287
290
  - `resolveListRequestMethod(requestOptions = null)`
@@ -292,7 +295,7 @@ Exports
292
295
 
293
296
  ### `src/client/composables/runtime/useViewCore.js`
294
297
  Exports
295
- - `useViewCore({ resource, model, canView, mapLoadedToModel, notFoundStatuses = [404], notFoundMessage = "Record not found." } = {})`
298
+ - `useViewCore({ resource, model, canView, mapLoadedToModel, notFoundStatuses = [404], notFoundMessage = "" } = {})`
296
299
  Local functions
297
300
  - `normalizeStatusList(value)`
298
301
 
@@ -302,8 +305,9 @@ Exports
302
305
 
303
306
  ### `src/client/composables/support/errorMessageHelpers.js`
304
307
  Exports
305
- - `toQueryErrorMessage(error, fallbackMessage = "", defaultMessage = "Request failed.")`
306
- - `toUiErrorMessage(error, fallbackMessage = "", defaultMessage = "Request failed.")`
308
+ - `toQueryErrorMessage(error, fallbackMessage = "", defaultMessage = "")`
309
+ - `toUiErrorMessage(error, fallbackMessage = "", defaultMessage = "")`
310
+ - `toUiFieldErrors(error)`
307
311
 
308
312
  ### `src/client/composables/support/listQueryParamSupport.js`
309
313
  Exports
@@ -409,11 +413,11 @@ Local functions
409
413
 
410
414
  ### `src/client/composables/useCommand.js`
411
415
  Exports
412
- - `useCommand({ ownershipFilter = ROUTE_VISIBILITY_WORKSPACE, surfaceId = "", access = "auto", apiSuffix = "", runPermissions = [], writeMethod = "POST", client = null, resource: commandResource = null, transport = null, placementSource = "http-web.command", fallbackRunError = "Unable to complete action.", fieldErrorKeys = [], clearOnRouteChange = true, model, input, buildRawPayload, buildCommandPayload, buildCommandOptions, onRunSuccess, onRunError, suppressSuccessMessage = false, messages = {}, realtime = null } = {})`
416
+ - `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 } = {})`
413
417
 
414
418
  ### `src/client/composables/useCrudAddEditScreen.js`
415
419
  Exports
416
- - `useCrudAddEditScreen({ screen = null, mode = "new", title = "", subtitle = "", saveLabel = "Save", cancelTo = "", resource = null, operationName = "", formFields = [], addEditOptions = {}, saveSuccess = {}, fieldBinding = null, createModel = null, buildPayload = null, mapPayloadToModel = null, input = null, preserveCancelQuery = false } = {})`
420
+ - `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 } = {})`
417
421
  Local functions
418
422
  - `normalizeProvidedScreen(screen = null)`
419
423
 
@@ -421,7 +425,7 @@ Local functions
421
425
  Exports
422
426
  - `requireCrudDeleteOperation(resource = null)`
423
427
  - `resolveDeleteApiSuffix(screen, apiUrlTemplate = "")`
424
- - `useCrudDeleteAction({ screen = null, resource = null, resourceNamespace = "", apiUrlTemplate = "", access = "auto", client = null, router: routerOverride = null, fallbackDeleteError = "Unable to delete record." } = {})`
428
+ - `useCrudDeleteAction({ screen = null, resource = null, resourceNamespace = "", apiUrlTemplate = "", access = "auto", client = null, router: routerOverride = null, fallbackDeleteError = t("jskit.http.crud.delete.failed") } = {})`
425
429
  Local functions
426
430
  - `requireCrudViewScreen(screen = null)`
427
431
  - `resolveListLocation(screen)`
@@ -453,7 +457,7 @@ Local functions
453
457
 
454
458
  ### `src/client/composables/useCrudListParentTitle.js`
455
459
  Exports
456
- - `useCrudListParentTitle({ listRuntime = null, resource = {}, recordIdParam = "recordId", queryKeyPrefix = ["http-web", "crud-list-parent-title"], placementSource = "http-web.crud-list-parent-title", fallbackLoadError = "Unable to load parent record.", notFoundMessage = "Parent record not found.", route = null, viewRuntimeFactory = useView } = {})`
460
+ - `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 } = {})`
457
461
  Local functions
458
462
  - `normalizeQueryKeyPrefix(value = [])`
459
463
 
@@ -466,7 +470,7 @@ Local functions
466
470
  ### `src/client/composables/useCrudListScreen.js`
467
471
  Exports
468
472
  - `__testables`
469
- - `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 = "Records", fallbackLoadError = "Unable to load records." } = {})`
473
+ - `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") } = {})`
470
474
  Local functions
471
475
  - `buildCrudListActionContext(records, client)`
472
476
  - `formatCrudListCardValue(value)`
@@ -479,11 +483,11 @@ Local functions
479
483
 
480
484
  ### `src/client/composables/useCrudViewScreen.js`
481
485
  Exports
482
- - `useCrudViewScreen({ resource = null, resourceNamespace = "resource", apiUrlTemplate = "", recordIdParam = "recordId", titleFallbackFieldKey = "", listUrlTemplate = "", editUrlTemplate = "", recordChangedEvent = "", requestQueryParams = null, requestFieldsets = null, readEnabled = true, queryKeyFactory = null, requestRecoveryLabel = "Record", fallbackLoadError = "Unable to load record.", notFoundMessage = "Record not found." } = {})`
486
+ - `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") } = {})`
483
487
 
484
488
  ### `src/client/composables/usePagedCollection.js`
485
489
  Exports
486
- - `usePagedCollection({ queryKey, enabled = true, initialPageParam = null, queryFn, getNextPageParam = defaultGetNextPageParam, selectItems = defaultSelectItems, dedupeBy = null, queryOptions = null, fallbackLoadError = "Unable to load list." } = {})`
490
+ - `usePagedCollection({ queryKey, enabled = true, initialPageParam = null, queryFn, getNextPageParam = defaultGetNextPageParam, selectItems = defaultSelectItems, dedupeBy = null, queryOptions = null, fallbackLoadError = t("jskit.http.list.loadFailed") } = {})`
487
491
  - `trimInfinitePagesToFirst(data = null)`
488
492
  Local functions
489
493
  - `defaultSelectItems(page)`
@@ -522,6 +526,11 @@ Exports
522
526
  - `CRUD_LIST_FILTER_PRESENCE_OPTIONS`
523
527
  - `defineCrudListFilters`
524
528
 
529
+ ### `src/client/i18n.js`
530
+ Exports
531
+ - `createTextError`
532
+ - `useJskitText`
533
+
525
534
  ### `src/client/index.js`
526
535
  Exports
527
536
  - `CrudAddEditScreen`
@@ -41,6 +41,20 @@ Local functions
41
41
  - `resolveProviderDependencies(provider, capabilities)`
42
42
  - `normalizeProviderOutputs(provider, value)`
43
43
 
44
+ ### `shared/i18n/index.js`
45
+ Exports
46
+ - `catalogMessage(catalog, key = "")`
47
+ - `flattenCatalog(catalog, prefix = "")`
48
+ - `formatMessage(template = "", params = {})`
49
+ - `mergeCatalogs(...catalogs)`
50
+ - `messageKeyForCode(code = "")`
51
+ - `messageParams(template = "")`
52
+ Local functions
53
+ - `isRecord(value)`
54
+ - `placeholderEnd(template, start)`
55
+ - `parseMessage(template = "")`
56
+ - `pluralChoice(count, choices)`
57
+
44
58
  ### `shared/index.js`
45
59
  Exports
46
60
  - `resolveLinkPath`
@@ -301,7 +315,9 @@ Exports
301
315
  - `resolveSchemaTransportSchemaDefinition`
302
316
  - `executeJsonRestSchemaDefinition`
303
317
  - `buildSchemaValidationError`
318
+ - `codedFieldErrors`
304
319
  - `validateSchemaPayload`
320
+ - `resolveValidationIssueCode`
305
321
  - `RECORD_ID_PATTERN`
306
322
  - `recordIdSchema`
307
323
  - `nullableRecordIdSchema`
@@ -324,7 +340,8 @@ Local functions
324
340
  - `requireJsonRestSchemaInstance(schemaDefinition = null, { context = "schema definition.schema" } = {})`
325
341
  - `resolveJsonRestSchemaFieldMessages(schemaDefinition = null, fieldName = "")`
326
342
  - `resolveJsonRestSchemaParentFieldMessages(schemaDefinition = null, fieldName = "")`
327
- - `resolveJsonRestSchemaFieldErrorMessage(fieldName, entry, schemaDefinition = null)`
343
+ - `resolveFieldMessageOverride(messages, key)`
344
+ - `resolveJsonRestSchemaFieldError(fieldName, entry, schemaDefinition = null)`
328
345
 
329
346
  ### `shared/validators/mergeObjectSchemas.js`
330
347
  Exports
@@ -358,9 +375,15 @@ Local functions
358
375
 
359
376
  ### `shared/validators/schemaPayloadValidation.js`
360
377
  Exports
361
- - `buildSchemaValidationError({ message = "Schema validation failed.", fieldErrors = null, errors = null, cause, statusCode = null } = {})`
378
+ - `buildSchemaValidationError({ message = SCHEMA_VALIDATION_FAILED_MESSAGE, fieldErrors = null, fieldErrorCodes = null, errors = null, cause, statusCode = null } = {})`
379
+ - `codedFieldErrors(error)`
380
+ - `errorFieldErrors(error)`
362
381
  - `validateSchemaPayload(schemaDefinition, payload, { phase = "input", context = "schema definition", statusCode = null } = {})`
363
382
 
383
+ ### `shared/validators/validationIssueCodes.js`
384
+ Exports
385
+ - `resolveValidationIssueCode(issue = {})`
386
+
364
387
  ### client
365
388
 
366
389
  ### `client/appConfig.js`
@@ -378,12 +401,13 @@ Exports
378
401
  - `createAsyncModuleRecoveryState({ label = "App module", message = "", retry = null } = {})`
379
402
  - `dismissAsyncModuleRecovery(state)`
380
403
  - `dynamicImportErrorMessage(error = null, { label = "App module", stale = isDynamicImportError(error) } = {})`
381
- - `guardedReloadApp({ browserWindow = typeof window !== "undefined" ? window : null, fetchFn = typeof fetch === "function" ? fetch : null, state = null, label = "App", message = "The app cannot reload because the app server is not reachable. Restart the server, then click Retry or Reload." } = {})`
404
+ - `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 = {} } = {})`
382
405
  - `installAsyncModuleRecoveryHandlers({ router = null, state, label = "App module", onNotify = null, windowObject = typeof window !== "undefined" ? window : null } = {})`
383
406
  - `isDynamicImportError(error = null)`
384
- - `notifyAsyncModuleLoadError(state, error = null, { label = "App module", message = "", retry = null, stale = isDynamicImportError(error) } = {})`
407
+ - `notifyAsyncModuleLoadError(state, error = null, { label = "App module", message = "", messageCode = "", messageParams = {}, retry = null, stale = isDynamicImportError(error) } = {})`
385
408
  Local functions
386
409
  - `errorText(error = null)`
410
+ - `dynamicImportErrorMessageCode(label, stale)`
387
411
 
388
412
  ### `client/componentInteraction.js`
389
413
  Exports
@@ -395,11 +419,39 @@ Exports
395
419
  Local functions
396
420
  - `normalizeComponentId(value)`
397
421
 
422
+ ### `client/i18n.js`
423
+ Exports
424
+ - `createTextError(keyOrMessage = "", params = {})`
425
+ - `registerJskitMessages(catalog = {})`
426
+ - `setJskitI18n(i18n = null)`
427
+ - `useJskitText()`
428
+ Local functions
429
+ - `registry()`
430
+ - `mergeEnglishIntoI18n()`
431
+ - `activeLocale()`
432
+ - `pluralOptions(params)`
433
+ - `t(key = "", params = {}, { locale } = {})`
434
+ - `hasMessage(key = "")`
435
+ - `text(value, options)`
436
+ - `codedMessage(code, params = {}, sentEnglish = "")`
437
+ - `serverMessage(source, fallback = "")`
438
+ - `fieldErrorMessages(error)`
439
+ - `validDate(value)`
440
+ - `formatDate(value, options)`
441
+ - `formatTime(value, options)`
442
+ - `formatDateTime(value, options)`
443
+ - `formatNumber(value, options)`
444
+ - `formatRelativeTime(value, { now = Date.now(), ...options } = {})`
445
+
398
446
  ### `client/index.js`
399
447
  Exports
400
448
  - `getClientAppConfig`
401
449
  - `resolveMobileConfig`
402
450
  - `resolveClientAssetMode`
451
+ - `createTextError`
452
+ - `registerJskitMessages`
453
+ - `setJskitI18n`
454
+ - `useJskitText`
403
455
  - `createAsyncModuleRecoveryState`
404
456
  - `dismissAsyncModuleRecovery`
405
457
  - `dynamicImportErrorMessage`
@@ -457,7 +509,7 @@ Exports
457
509
  - `resolveClientBootstrapDebugEnabled({ env = {}, debugEnabled = undefined, debugEnvKey = "VITE_JSKIT_CLIENT_DEBUG" } = {})`
458
510
  - `createClientBootstrapLogger({ env = {}, logger = console, debugEnabled = undefined, debugEnvKey = "VITE_JSKIT_CLIENT_DEBUG" } = {})`
459
511
  - `createSurfaceShellRouter({ createRouter, history, routes = [], surfaceRuntime, surfaceMode, fallbackRoute = null, notFoundComponent = null, guard = false, scrollBehavior = shellScrollBehavior } = {})`
460
- - `bootstrapClientShellApp({ createApp, rootComponent, appConfig = {}, appPlugins = [], pinia = null, queryClient = 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, onAfterRouterReady = null, mountSelector = "#app" } = {})`
512
+ - `bootstrapClientShellApp({ createApp, rootComponent, appConfig = {}, appPlugins = [], i18n = null, pinia = null, queryClient = 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, onAfterRouterReady = null, mountSelector = "#app" } = {})`
461
513
  Local functions
462
514
  - `installAppPlugins(app, appPlugins = [])`
463
515
  - `isSurfaceRootRecord(record)`
@@ -490,7 +542,8 @@ Exports
490
542
  - `bootInstalledClientModules(context = {})`
491
543
  - `CLIENT_BOOTSTRAP_VIRTUAL_ID`
492
544
  - `CLIENT_BOOTSTRAP_RESOLVED_ID`
493
- - `createVirtualModuleSource(clientModules = [])`
545
+ - `createVirtualModuleSource(clientModules = [], localePackageIds = [])`
546
+ - `resolveLocalePackageIds(installedPackages = [])`
494
547
  - `resolveClientOptimizeIncludeSpecifiers(clientModules = [], excludeSpecifiers = [])`
495
548
  - `resolveClientOptimizeExcludeSpecifiers(clientModules = [])`
496
549
  - `resolveCanonicalLocalPackageId(resolvedId, localPackage)`
@@ -592,6 +645,7 @@ Exports
592
645
  - `normalizeActionInput(definition, input)`
593
646
  - `normalizeActionOutput(definition, output)`
594
647
  Local functions
648
+ - `schemaFieldErrorDetails(error)`
595
649
  - `createActionValidationError({ status = 400, message = "Validation failed.", code = "ACTION_VALIDATION_FAILED", details, cause } = {})`
596
650
 
597
651
  ### `server/actions/registry.js`
@@ -647,8 +701,11 @@ Local functions
647
701
  - `hasHeaderValue(headers = {}, key = "")`
648
702
  - `hasRequestBody(headers = {})`
649
703
  - `resolveValidationFieldErrors(error)`
704
+ - `fieldErrorPayloadFields({ fieldErrors, fieldErrorCodes } = {})`
705
+ - `messageCodeFields(error, expose = true)`
706
+ - `hiddenServerErrorFields(code = "")`
650
707
  - `resolveRequestRouteTransport(request)`
651
- - `applyRouteTransportErrorResponse(reply, request, error, { statusCode = 500, normalizedErrorCode = "", message = error?.message, exposeDetails = true } = {})`
708
+ - `applyRouteTransportErrorResponse(reply, request, error, { statusCode = 500, normalizedErrorCode = "", message = error?.message, exposeDetails = true, messageFields = {} } = {})`
652
709
  - `resolveApiErrorStatus(error, code)`
653
710
  - `applyErrorHeaders(reply, error)`
654
711
 
@@ -740,6 +797,14 @@ Local functions
740
797
  - `isJsonValue(value, ancestors = new Set())`
741
798
  - `schemaCacheKey(schema)`
742
799
 
800
+ ### `server/i18n.js`
801
+ Exports
802
+ - `createServerI18n({ appRoot = "", catalogs = [] } = {})`
803
+ Local functions
804
+ - `loadAppTranslations(appRoot)`
805
+ - `appTranslations(appRoot)`
806
+ - `localeCandidates(locale = "")`
807
+
743
808
  ### `server/platform/index.js`
744
809
  Exports
745
810
  - `registerSurfaceRequestConstraint`
@@ -800,6 +865,8 @@ Exports
800
865
  - `DomainValidationError`
801
866
  - `ConflictError`
802
867
  - `NotFoundError`
868
+ Local functions
869
+ - `normalizeErrorParams(params)`
803
870
 
804
871
  ### `server/runtime/EventProvider.js`
805
872
  Exports
@@ -14,6 +14,11 @@ Use this on demand; do not load the full index at startup.
14
14
 
15
15
  ### src
16
16
 
17
+ ### `src/client/i18n.js`
18
+ Exports
19
+ - `createTextError`
20
+ - `useJskitText`
21
+
17
22
  ### `src/client/index.js`
18
23
  Exports
19
24
  - `MobileCapacitorClientProvider`
@@ -35,7 +40,7 @@ Exports
35
40
  - `isCapacitorApiRequestTarget(url = "")`
36
41
  - `resolveCapacitorAbsoluteHttpUrl(url = "", apiBaseUrl = "", messages = {})`
37
42
  Local functions
38
- - `parseAbsoluteHttpUrl(url = "", { apiBaseUrl = "", emptyUrlMessage = "URL is required.", missingApiBaseUrlMessage = "config.mobile.apiBaseUrl is required.", invalidApiBaseUrlMessage = "config.mobile.apiBaseUrl must be a valid absolute URL.", invalidApiBaseUrlProtocolMessage = "config.mobile.apiBaseUrl must use http or https.", invalidUrlProtocolMessage = "URL must use http or https." } = {})`
43
+ - `parseAbsoluteHttpUrl(url = "", { apiBaseUrl = "", emptyUrlMessage = "jskit.mobile.apiRequest.urlRequired", missingApiBaseUrlMessage = "jskit.mobile.apiRequest.apiBaseUrlRequired", invalidApiBaseUrlMessage = "jskit.mobile.apiRequest.apiBaseUrlInvalid", invalidApiBaseUrlProtocolMessage = "jskit.mobile.apiRequest.apiBaseUrlProtocol", invalidUrlProtocolMessage = "jskit.mobile.apiRequest.urlProtocol" } = {})`
39
44
  - `normalizeFetchInput(input = "")`
40
45
 
41
46
  ### `src/client/runtime/globalCapacitorAppAdapter.js`
@@ -58,7 +58,7 @@ Exports
58
58
  - `createPaymentService({ store, configuration, clock = Date.now })`
59
59
  - `PaymentError`
60
60
  Local functions
61
- - `fail(code, message, status)`
61
+ - `fail(code, message, status, options)`
62
62
  - `reference(value)`
63
63
  - `units(value)`
64
64
  - `timestamp(value)`
@@ -78,7 +78,7 @@ Local functions
78
78
  Exports
79
79
  - `validatePaymentConfiguration(document)`
80
80
  Local functions
81
- - `configurationError(message, fieldErrors)`
81
+ - `configurationError(message, fieldErrors, { messageCode, messageParams = {} })`
82
82
 
83
83
  ### migrations
84
84
 
@@ -18,12 +18,20 @@ Use this on demand; do not load the full index at startup.
18
18
  Exports
19
19
  - None
20
20
  Local functions
21
+ - `historyTitle(item)`
22
+ - `historyTotal(item)`
23
+ - `statusLabel(status)`
24
+ - `locale()`
21
25
  - `number(value)`
22
26
  - `date(value)`
23
27
  - `planName(id)`
24
28
  - `checkout(plan)`
25
29
  - `loadHistory(collection, after = null)`
26
30
 
31
+ ### `src/client/i18n.js`
32
+ Exports
33
+ - `useJskitText`
34
+
27
35
  ### fixtures
28
36
 
29
37
  ### `fixtures/payment-account/main.js`
@@ -34,6 +34,10 @@ Local functions
34
34
  Exports
35
35
  - `attachSocketConnectionRecovery(socket)`
36
36
 
37
+ ### `src/client/i18n.js`
38
+ Exports
39
+ - `useJskitText`
40
+
37
41
  ### `src/client/RealtimeClientProvider.js`
38
42
  Exports
39
43
  - `RealtimeClientProvider`
@@ -85,6 +89,7 @@ Exports
85
89
  Local functions
86
90
  - `parseDebugFlag(value, fallback = null)`
87
91
  - `debugEnabled(config, env)`
92
+ - `authenticationRequiredError()`
88
93
  - `createRealtimeCapability({ io })`
89
94
 
90
95
  ### `src/server/runtime.js`
@@ -26,6 +26,10 @@ Local functions
26
26
  Exports
27
27
  - `useRewardedRuntime()`
28
28
 
29
+ ### `src/client/i18n.js`
30
+ Exports
31
+ - `useJskitText`
32
+
29
33
  ### `src/client/index.js`
30
34
  Exports
31
35
  - `RewardedClientProvider`
@@ -44,6 +48,7 @@ Exports
44
48
  - `createRewardedRuntime({ launchReward } = {})`
45
49
  Local functions
46
50
  - `createInitialState()`
51
+ - `rewardedClientError(message, { messageCode })`
47
52
  - `applyState(target, source)`
48
53
  - `normalizeWorkspaceSlug(value = "")`
49
54
  - `isWellFormedGateState(gateState = null)`