@jskit-ai/agent-docs 0.1.16 → 0.1.18

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 (36) hide show
  1. package/guide/agent/app-extras/assistant.md +2 -2
  2. package/guide/agent/app-setup/initial-scaffolding.md +1 -3
  3. package/guide/agent/app-setup/multi-homing.md +27 -4
  4. package/guide/agent/app-setup/working-with-the-jskit-cli.md +1 -0
  5. package/guide/agent/generators/advanced-cruds.md +206 -112
  6. package/guide/agent/generators/crud-generators.md +26 -0
  7. package/guide/agent/index.md +1 -1
  8. package/package.json +1 -1
  9. package/patterns/INDEX.md +1 -1
  10. package/patterns/client-requests.md +3 -0
  11. package/patterns/crud-repository-mapping.md +36 -35
  12. package/patterns/filters.md +8 -8
  13. package/reference/autogen/KERNEL_MAP.md +94 -40
  14. package/reference/autogen/README.md +3 -0
  15. package/reference/autogen/packages/assistant-core.md +0 -12
  16. package/reference/autogen/packages/assistant-runtime.md +11 -3
  17. package/reference/autogen/packages/auth-core.md +34 -23
  18. package/reference/autogen/packages/auth-provider-supabase-core.md +4 -7
  19. package/reference/autogen/packages/auth-web.md +3 -0
  20. package/reference/autogen/packages/console-core.md +6 -29
  21. package/reference/autogen/packages/crud-core.md +34 -30
  22. package/reference/autogen/packages/crud-server-generator.md +28 -83
  23. package/reference/autogen/packages/crud-ui-generator.md +12 -7
  24. package/reference/autogen/packages/http-runtime.md +171 -21
  25. package/reference/autogen/packages/json-rest-api-core.md +54 -0
  26. package/reference/autogen/packages/kernel.md +118 -55
  27. package/reference/autogen/packages/realtime.md +1 -0
  28. package/reference/autogen/packages/resource-core.md +35 -0
  29. package/reference/autogen/packages/resource-crud-core.md +51 -0
  30. package/reference/autogen/packages/shell-web.md +31 -0
  31. package/reference/autogen/packages/users-core.md +34 -77
  32. package/reference/autogen/packages/users-web.md +29 -20
  33. package/reference/autogen/packages/workspaces-core.md +44 -76
  34. package/reference/autogen/packages/workspaces-web.md +1 -3
  35. package/reference/autogen/tooling/jskit-cli.md +6 -5
  36. package/workflow/feature-delivery.md +2 -1
@@ -37,6 +37,10 @@ Exports
37
37
  - `safeRequestCookies(request)`
38
38
  - `cookieOptions(isProduction, maxAge)`
39
39
 
40
+ ### `src/server/lib/authenticatedProfile.js`
41
+ Exports
42
+ - `requireAuthenticatedProfile(profileLike, { context = "authenticated profile" } = {})`
43
+
40
44
  ### `src/server/lib/authErrorMappers.js`
41
45
  Exports
42
46
  - `isTransientAuthMessage(message)`
@@ -54,12 +58,8 @@ Exports
54
58
  ### `src/server/lib/authInputParsers.js`
55
59
  Exports
56
60
  - `normalizeOAuthProviderInput(value, options = {})`
57
- - `validatePasswordRecoveryPayload(payload)`
58
- - `parseOAuthCompletePayload(payload = {}, options = {})`
59
- - `parseOtpLoginVerifyPayload(payload = {})`
60
61
  - `mapOAuthCallbackError(errorCode)`
61
62
  Local functions
62
- - `applySessionPairValidation(accessToken, refreshToken, fieldErrors)`
63
63
  - `resolveConfiguredOAuthProviders(options = {})`
64
64
 
65
65
  ### `src/server/lib/authJwt.js`
@@ -212,10 +212,7 @@ Exports
212
212
  - `buildOAuthLoginRedirectUrl`
213
213
  - `buildOAuthLinkRedirectUrl`
214
214
  - `normalizeOAuthProviderInput`
215
- - `parseOAuthCompletePayload`
216
- - `parseOtpLoginVerifyPayload`
217
215
  - `mapOAuthCallbackError`
218
- - `validatePasswordRecoveryPayload`
219
216
  - `resolveSupabaseOAuthProviderCatalog`
220
217
  - `resolveOAuthProviderQueryParams`
221
218
  - `buildOAuthProviderCatalogResponse`
@@ -214,6 +214,9 @@ Exports
214
214
  ### `src/server/providers/AuthWebServiceProvider.js`
215
215
  Exports
216
216
  - `AuthWebServiceProvider`
217
+ Local functions
218
+ - `parseBoolean(value, fallback = false)`
219
+ - `resolveDevAuthBootstrapEnabled(scope)`
217
220
 
218
221
  ### `src/server/routes/authRoutes.js`
219
222
  Exports
@@ -14,6 +14,12 @@ Use this on demand; do not load the full index at startup.
14
14
 
15
15
  ### src
16
16
 
17
+ ### `src/server/consoleAuthServiceDecorator.js`
18
+ Exports
19
+ - `createConsoleAuthServiceDecorator({ consoleService } = {})`
20
+ Local functions
21
+ - `normalizeRequestPathname(request = null)`
22
+
17
23
  ### `src/server/consoleBootstrapContributor.js`
18
24
  Exports
19
25
  - `createConsoleBootstrapContributor({ consoleService } = {})`
@@ -39,7 +45,6 @@ Exports
39
45
  - `createRepository(knex)`
40
46
  Local functions
41
47
  - `nowDb()`
42
- - `mapSettings(row = {})`
43
48
  - `mapSingletonRow(row)`
44
49
 
45
50
  ### `src/server/consoleSettings/consoleSettingsService.js`
@@ -71,27 +76,9 @@ Local functions
71
76
  Exports
72
77
  - `createOperationMessages({ validationMessage = "Validation failed.", apiValidationMessage = validationMessage } = {})`
73
78
 
74
- ### `src/shared/resources/consoleSettingsFields.js`
75
- Exports
76
- - `defineField(field = {})`
77
- - `resetConsoleSettingsFields()`
78
- - `consoleSettingsFields`
79
-
80
79
  ### `src/shared/resources/consoleSettingsResource.js`
81
80
  Exports
82
81
  - `consoleSettingsResource`
83
- Local functions
84
- - `buildCreateSchema()`
85
- - `buildOutputSchema()`
86
- - `buildConsoleSettingsRecordSchema()`
87
- - `buildConsoleSettingsCreateSchema()`
88
- - `buildConsoleSettingsReplaceSchema()`
89
- - `buildConsoleSettingsPatchSchema()`
90
- - `normalizeConsoleSettingsInput(payload = {})`
91
-
92
- ### `src/shared/resources/resolveGlobalArrayRegistry.js`
93
- Exports
94
- - `resolveGlobalArrayRegistry(symbolKey)`
95
82
 
96
83
  ### templates
97
84
 
@@ -99,18 +86,8 @@ Exports
99
86
  Exports
100
87
  - None
101
88
 
102
- ### `templates/packages/main/src/shared/resources/consoleSettingsFields.js`
103
- Exports
104
- - None
105
-
106
89
  ### root
107
90
 
108
91
  ### `package.descriptor.mjs`
109
92
  Exports
110
93
  - None
111
-
112
- ### test-support
113
-
114
- ### `test-support/registerDefaultSettingsFields.js`
115
- Exports
116
- - None
@@ -117,7 +117,6 @@ Exports
117
117
  - `createCrudFieldAccessRuntime(resource = {}, { context = "crudFieldAccess" } = {})`
118
118
  - `createFieldAccessForRoleMatrix(matrix = {}, { context = "crudFieldAccess" } = {})`
119
119
  Local functions
120
- - `isSchemaNullable(schema = {})`
121
120
  - `normalizeFieldSet(value, { context = "crudFieldAccess", label = "field list" } = {})`
122
121
  - `resolveFieldSet(resolver, input = {}, { context = "crudFieldAccess", label = "field list" } = {})`
123
122
  - `resolveWriteMode(fieldAccess = {}, { context = "crudFieldAccess" } = {})`
@@ -132,21 +131,18 @@ Local functions
132
131
  Exports
133
132
  - `CRUD_LIST_FILTER_INVALID_VALUES_REJECT`
134
133
  - `CRUD_LIST_FILTER_INVALID_VALUES_DISCARD`
134
+ - `createCrudListFilterQueryField(filterDefinition = {}, { invalidValues = CRUD_LIST_FILTER_INVALID_VALUES_REJECT } = {})`
135
+ - `createCrudListFilterQuerySchema(structure = {})`
135
136
  - `createCrudListFilters(definitions = {}, { columns = {}, apply = {} } = {})`
136
137
  Local functions
137
- - `normalizeCrudListFilterInvalidValues(value = "")`
138
- - `createSingleOrMultiValueSchema(itemSchema)`
139
- - `firstValue(value)`
140
- - `normalizeDateFilterValue(value)`
141
- - `normalizeNumberFilterValue(value)`
142
- - `normalizeRecordIdFilterValue(value)`
143
- - `normalizeRecordIdFilterValues(value)`
144
- - `resolveAllowedOptionValues(filter = {})`
145
- - `normalizeAllowedTextValue(value, allowedValues = new Set())`
146
- - `normalizeAllowedTextValues(value, allowedValues = new Set())`
138
+ - `cloneTransportSchema(value)`
139
+ - `buildSingleOrMultiTransportSchema(itemSchema)`
147
140
  - `addDaysToDateFilterValue(value = "", days = 0)`
148
- - `createFilterQuerySchema(filter = {}, { invalidValues = CRUD_LIST_FILTER_INVALID_VALUES_REJECT } = {})`
149
- - `normalizeFilterValue(filter = {}, source = {})`
141
+ - `normalizeCrudListFilterQueryFieldInput(filterDefinition = null)`
142
+ - `buildFilterQueryFieldDefinition(filterDefinition = {}, { invalidValues = CRUD_LIST_FILTER_INVALID_VALUES_REJECT } = {})`
143
+ - `buildFilterQueryTransportSchema(filter = {}, { invalidValues = CRUD_LIST_FILTER_INVALID_VALUES_REJECT } = {})`
144
+ - `buildFilterQuerySchemaDefinition(filterEntries = [], { invalidValues = CRUD_LIST_FILTER_INVALID_VALUES_REJECT } = {})`
145
+ - `projectNormalizedFilterValues(filterEntries = [], source = {}, errors = {})`
150
146
  - `normalizeColumnsMap(columns = {})`
151
147
  - `applyDefaultFilterQuery(queryBuilder, filter = {}, value, column = "")`
152
148
 
@@ -216,12 +212,12 @@ Exports
216
212
  - `resolveCrudIdColumn(idColumn, { fallback = "id" } = {})`
217
213
  - `buildRepositoryColumnMetadata({ outputKeys = [], writeKeys = [], columnOverrides = {}, fieldStorageByKey = {} } = {})`
218
214
  Local functions
219
- - `resolveOptionalObjectSchemaProperties(schema, options = {})`
220
- - `requireObjectSchemaProperties(schema, { context = "crudRepository", schemaLabel = "schema" } = {})`
221
- - `normalizeResourceFieldMetaEntries(fieldMeta = [])`
222
- - `schemaIncludesStringType(schema = {})`
223
- - `schemaIncludesDateTimeFormat(schema = {})`
224
- - `schemaIncludesRecordIdType(schema = {})`
215
+ - `resolveOptionalFieldDefinitions(definition, options = {})`
216
+ - `requireFieldDefinitions(definition, { context = "crudRepository", schemaLabel = "schema definition", defaultMode = "patch" } = {})`
217
+ - `resolveFieldDefinitionType(definition = {})`
218
+ - `definitionIncludesStringType(definition = {})`
219
+ - `definitionIncludesDateTimeType(definition = {})`
220
+ - `definitionIncludesRecordIdType(definition = {})`
225
221
 
226
222
  ### `src/server/resourceRuntime/index.js`
227
223
  Exports
@@ -237,7 +233,6 @@ Local functions
237
233
  - `normalizeListOrderNulls(value = LIST_ORDER_NULLS_LAST)`
238
234
  - `normalizeListOrderBy(orderBy = [], { idColumn = "id" } = {})`
239
235
  - `resolveListRuntimeConfig(list = {}, fallbackSearchColumns = [], { idColumn = "id" } = {})`
240
- - `formatOutputValidationError(issue = {})`
241
236
  - `resolveRecordOutputValidator(resource = {}, { context = "crudRepository" } = {})`
242
237
  - `resolveOperationBodyValidator(resource = {}, operationKey = "", { context = "crudRepository" } = {})`
243
238
  - `extractExplicitFieldErrors(error)`
@@ -298,9 +293,19 @@ Local functions
298
293
  - `buildLookupCollectionMap(records = [], foreignKey = "")`
299
294
  - `resolveLookupVisitedNamespaces(runtime = {}, callOptions = {})`
300
295
 
296
+ ### `src/server/routeContracts.js`
297
+ Exports
298
+ - `createCrudJsonApiRouteContracts({ resource = {}, routeParamsValidator = null, listSearchQueryValidator = defaultListSearchQueryValidator, lookupIncludeQueryValidator = defaultLookupIncludeQueryValidator } = {})`
299
+
301
300
  ### `src/server/serviceEvents.js`
302
301
  Exports
303
302
  - `createCrudServiceEvents(resource = {}, { context = "crudService" } = {})`
303
+ - `createCrudJsonApiServiceEvents(namespace = "", { context = "createCrudJsonApiServiceEvents" } = {})`
304
+ - `resolveCrudEntityIdFromArgs({ args = [] } = {})`
305
+ - `resolveCrudEntityIdFromResult({ result } = {})`
306
+ - `resolveCrudJsonApiEntityIdFromResult({ result } = {})`
307
+ Local functions
308
+ - `normalizeCrudEventEntityId(value = null)`
304
309
 
305
310
  ### `src/server/serviceMethods.js`
306
311
  Exports
@@ -314,24 +319,23 @@ Local functions
314
319
  - `requireCrudServiceRepository(runtime = {}, repository = null)`
315
320
  - `splitCrudListRepositoryCall(query = {}, options = {})`
316
321
 
317
- ### `src/shared/crudFieldMetaSupport.js`
322
+ ### `src/shared/crudFieldSupport.js`
318
323
  Exports
319
- - `CRUD_FIELD_REPOSITORY_STORAGE_COLUMN`
320
- - `CRUD_FIELD_REPOSITORY_STORAGE_VIRTUAL`
321
- - `CRUD_FIELD_REPOSITORY_WRITE_SERIALIZER_DATETIME_UTC`
322
324
  - `CRUD_LOOKUP_FORM_CONTROL_AUTOCOMPLETE`
323
325
  - `CRUD_LOOKUP_FORM_CONTROL_SELECT`
324
326
  - `CRUD_RUNTIME_LOOKUPS_FIELD_KEY`
325
- - `checkCrudLookupFormControl(value, { context = "crud fieldMeta ui.formControl", defaultValue = CRUD_LOOKUP_FORM_CONTROL_AUTOCOMPLETE } = {})`
327
+ - `checkCrudLookupFormControl(value, { context = "crud field ui.formControl", defaultValue = CRUD_LOOKUP_FORM_CONTROL_AUTOCOMPLETE } = {})`
326
328
  - `isCrudRuntimeOutputOnlyFieldKey(value = "", { lookupContainerKey = CRUD_RUNTIME_LOOKUPS_FIELD_KEY } = {})`
327
- - `normalizeCrudFieldRepositoryConfig(fieldMetaEntry = {}, { context = "crud fieldMeta repository", fieldKey = "" } = {})`
328
- - `normalizeCrudFieldRepositoryWriteSerializer(value, { context = "crud fieldMeta repository", fieldKey = "" } = {})`
329
329
 
330
330
  ### `src/shared/crudNamespaceSupport.js`
331
331
  Exports
332
- - `normalizeCrudNamespace(value = "")`
333
- - `requireCrudNamespace(namespace, { context = "requireCrudNamespace" } = {})`
334
- - `resolveCrudRecordChangedEvent(namespace = "")`
332
+ - `normalizeCrudNamespace`
333
+ - `requireCrudNamespace`
334
+ - `resolveCrudRecordChangedEvent`
335
+
336
+ ### `src/shared/crudResource.js`
337
+ Exports
338
+ - `defineCrudResource`
335
339
 
336
340
  ### root
337
341
 
@@ -18,12 +18,9 @@ Use this on demand; do not load the full index at startup.
18
18
  Exports
19
19
  - `buildTemplateContext(input = {})`
20
20
  - `resolveScaffoldColumns(snapshot)`
21
- - `renderPropertyAccess(sourceName, key)`
22
21
  - `resolveGenerationSnapshot({ appRoot, tableName, idColumnOption } = {})`
23
- - `renderResourceFieldSchema(column, { forOutput = false } = {})`
24
- - `renderInputNormalizer(column)`
25
- - `renderOutputNormalizerExpression(column)`
26
- - `buildFieldMetaEntries({ outputColumns = [], writableColumns = [], snapshot = {} } = {})`
22
+ - `renderCanonicalResourceFieldSchema(column, { fieldContractEntry = null } = {})`
23
+ - `buildFieldContractEntries({ outputColumns = [], writableColumns = [], snapshot = {} } = {})`
27
24
  - `resolveCrudGenerationSurfaceId({ appRoot, options } = {})`
28
25
  - `__testables`
29
26
  Local functions
@@ -53,17 +50,20 @@ Local functions
53
50
  - `resolveColumnNumericBounds(snapshot = {})`
54
51
  - `isIdentifier(value)`
55
52
  - `renderObjectPropertyKey(value)`
56
- - `renderIntegerSchema(column)`
57
- - `renderStringSchema(column, { forOutput = false } = {})`
58
- - `renderResourceValidatorsImport({ htmlTimeSchemaImports = [], recordIdValidatorImports = [] } = {})`
59
- - `resolveHtmlTimeSchemaImports(columns = [])`
60
- - `resolveRecordIdValidatorImports(...sources)`
61
- - `renderResourceSchemaPropertyLines(columns, { forOutput = false } = {})`
62
- - `renderResourceInputNormalizationLines(columns)`
63
- - `renderResourceOutputNormalizationLines(columns)`
64
- - `renderResourceDatabaseRuntimeImport({ needsToIsoString = false, needsToDatabaseDateTimeUtc = false } = {})`
65
- - `renderResourceJsonImport({ needsJson = false } = {})`
66
- - `renderResourceNormalizeSupportImport({ needsNormalizeText = false, needsNormalizeBoolean = false, needsNormalizeFiniteNumber = false, needsNormalizeFiniteInteger = false, needsNormalizeRecordId = false, needsNormalizeIfInSource = false, needsNormalizeIfPresent = false, needsNormalizeOrNull = false } = {})`
53
+ - `renderBoundedNumberEntries(column)`
54
+ - `resolveCanonicalResourceFieldRequired(column = {})`
55
+ - `renderCanonicalResourceOperations(column = {})`
56
+ - `renderCanonicalResourceSchemaPropertyLines(columns = [], { fieldContractEntries = [] } = {})`
57
+ - `resolveJsonRestRelationshipScopeName(fieldContractEntry = null)`
58
+ - `resolveJsonRestRelationshipAlias(column = null)`
59
+ - `resolveJsonRestFieldType(column = {})`
60
+ - `shouldRenderJsonRestSearch(column = {})`
61
+ - `shouldRenderJsonRestStorage(column = {})`
62
+ - `renderJsonRestFieldSchema(column, { fieldContractEntry = null } = {})`
63
+ - `renderJsonRestSchemaPropertyLines(columns = [], { fieldContractEntries = [] } = {})`
64
+ - `renderJsonRestSearchSchemaLines(columns = [])`
65
+ - `renderJsonRestDefaultSortLine(columns = [])`
66
+ - `renderResourceDefaultSortLiteral(columns = [])`
67
67
  - `renderMigrationDefaultClause(column)`
68
68
  - `renderMigrationSpecificStringType(column, { tableCollation = "" } = {})`
69
69
  - `renderTemporalColumnBuilder(column, methodName)`
@@ -82,9 +82,6 @@ Local functions
82
82
  - `toSelectOptionLabel(value)`
83
83
  - `normalizeFieldMetaUiOptions(rawOptions = [])`
84
84
  - `resolveEnumFieldMetaUiOptions(enumValues = [])`
85
- - `renderFieldMetaEntryLines(entry = {})`
86
- - `renderResourceFieldMetaPushLines(entries = [])`
87
- - `renderRepositoryListConfigLines(snapshot = {})`
88
85
  - `buildCrudPermissionIds(namespace = "")`
89
86
  - `normalizeCrudOperation(operation = "", context = "CRUD operation")`
90
87
  - `renderRoleCatalogPermissionGrants(namespace = "", { requiresNamedPermissions = true } = {})`
@@ -94,7 +91,9 @@ Local functions
94
91
  - `renderActionWorkspaceValidatorImport({ surfaceRequiresWorkspace = true } = {})`
95
92
  - `renderRouteParamsValidatorLine(operation = "", { surfaceRequiresWorkspace = true } = {})`
96
93
  - `renderRouteInputLines(operation = "", { surfaceRequiresWorkspace = true } = {})`
97
- - `renderActionInputValidatorExpression(operation = "", { surfaceRequiresWorkspace = true } = {})`
94
+ - `renderObjectSchemaDefinition(lines = [], { mode = "patch" } = {})`
95
+ - `renderActionInputExpressions({ surfaceRequiresWorkspace = true } = {})`
96
+ - `renderRouteValidatorConstants({ surfaceRequiresWorkspace = true } = {})`
98
97
  - `buildReplacementsFromSnapshot({ namespace = "", snapshot, resolvedOwnershipFilter, surfaceRequiresWorkspace = true, surfaceId = "" })`
99
98
  - `resolveCrudGenerationTableName(options = {})`
100
99
  - `createCacheKey({ appRoot, options })`
@@ -117,38 +116,26 @@ Local functions
117
116
  - `parseSubcommandArgs(args = [])`
118
117
  - `resolveRequestedTableConfig(source = "", options = {}, context = "crud-server-generator scaffold-field")`
119
118
  - `resolveColumnForField(snapshot = {}, fieldKey = "", { idColumn = "id" } = {})`
120
- - `buildFieldMetaEntry(snapshot = {}, column = {})`
121
- - `collectKnownIdentifiers(expression = "")`
122
- - `resolveImportsForField({ inputNormalizationExpression = "", outputNormalizationExpression = "" } = {})`
123
- - `resolveOutputNormalizationExpression(column = {})`
119
+ - `buildFieldContractEntry(snapshot = {}, column = {})`
124
120
 
125
121
  ### `src/server/subcommands/resourceAst.js`
126
122
  Exports
127
123
  - `resolveCrudResourceDefaults(source = "", context = "crud-server-generator scaffold-field")`
128
- - `applyCrudResourceFieldPatch(source = "", { fieldKey = "", outputSchemaExpression = "", createSchemaExpression = "", outputNormalizationExpression = "", inputNormalizationExpression = "", fieldMetaEntry = null, normalizeImportNames = [], databaseRuntimeImportNames = [], databaseRuntimeRepositoryOptionsImportNames = [], context = "crud-server-generator scaffold-field" } = {})`
124
+ - `applyCrudResourceFieldPatch(source = "", { fieldKey = "", resourceSchemaExpression = "", context = "crud-server-generator scaffold-field" } = {})`
129
125
  Local functions
130
126
  - `isIdentifierName(value = "")`
131
127
  - `parseModule(source = "", context = "crud-server-generator scaffold-field")`
132
128
  - `parseExpression(source = "", context = "crud-server-generator scaffold-field")`
133
- - `parseStatement(source = "", context = "crud-server-generator scaffold-field")`
134
129
  - `resolveNodeKeyName(keyNode, { computed = false } = {})`
135
130
  - `createObjectPropertyKeyNode(key = "")`
136
131
  - `findVariableDeclarator(programNode, variableName = "")`
137
132
  - `requireVariableDeclarator(programNode, variableName = "", context = "crud-server-generator scaffold-field")`
138
- - `requireSchemaPropertiesObject(programNode, variableName = "", context = "crud-server-generator scaffold-field")`
139
- - `requireObjectFreezePayloadObject(programNode, variableName = "", context = "crud-server-generator scaffold-field")`
133
+ - `requireCrudResourceConfigObject(programNode, context = "crud-server-generator scaffold-field")`
134
+ - `requireResourceSchemaObject(programNode, context = "crud-server-generator scaffold-field")`
140
135
  - `findObjectPropertyByName(objectNode, propertyName = "")`
141
- - `requireNormalizeFunctionBody(programNode, variableName = "", context = "crud-server-generator scaffold-field")`
142
- - `requireNormalizedObjectLiteral(functionBody, context = "crud-server-generator scaffold-field")`
143
136
  - `hasObjectProperty(objectNode, propertyName = "")`
144
137
  - `insertObjectProperty(objectNode, propertyName = "", valueExpressionSource = "", { context = "crud-server-generator scaffold-field", insertBeforeComputed = false } = {})`
145
- - `hasNormalizeIfInSourceCall(functionBody, fieldKey = "")`
146
- - `resolveReturnNormalizedIndex(functionBody)`
147
- - `hasResourceFieldMetaEntry(programNode, fieldKey = "")`
148
- - `sortImportSpecifiers(importDeclaration)`
149
- - `ensureNamedImport(programNode, modulePath = "", importName = "")`
150
138
  - `resolveObjectPropertyStringValue(objectNode, propertyName = "")`
151
- - `renderResourceFieldMetaPushStatement(entry = {})`
152
139
 
153
140
  ### `src/shared/crud/crudResource.js`
154
141
  Exports
@@ -168,15 +155,9 @@ Exports
168
155
  Exports
169
156
  - None
170
157
 
171
- ### `templates/src/local-package/server/actionIds.js`
172
- Exports
173
- - `actionIds`
174
-
175
158
  ### `templates/src/local-package/server/actions.js`
176
159
  Exports
177
- - `createActions({ surface = "" } = {})`
178
- Local functions
179
- - `requireActionSurface(surface = "")`
160
+ - `createActions({ surface } = {})`
180
161
 
181
162
  ### `templates/src/local-package/server/CrudProvider.js`
182
163
  Exports
@@ -184,22 +165,19 @@ Exports
184
165
  Local functions
185
166
  - `resolveCrudPolicyFromApp(app)`
186
167
 
187
- ### `templates/src/local-package/server/listConfig.js`
188
- Exports
189
- - `LIST_CONFIG`
190
-
191
168
  ### `templates/src/local-package/server/registerRoutes.js`
192
169
  Exports
193
170
  - `registerRoutes(app, { routeOwnershipFilter = "public", routeSurface = "", routeRelativePath = "" } = {})`
194
171
 
195
172
  ### `templates/src/local-package/server/repository.js`
196
173
  Exports
197
- - `createRepository(knex, options = {})`
174
+ - `createRepository({ api, knex } = {})`
198
175
 
199
176
  ### `templates/src/local-package/server/service.js`
200
177
  Exports
201
- - `createService({ ${option:namespace|camel}Repository, fieldAccess = DEFAULT_FIELD_ACCESS } = {})`
202
- - `serviceEvents`
178
+ - `createService({ ${option:namespace|camel}Repository } = {})`
179
+ Local functions
180
+ - `return404IfNotFound(document = null)`
203
181
 
204
182
  ### `templates/src/local-package/shared/crudResource.js`
205
183
  Exports
@@ -215,39 +193,6 @@ Exports
215
193
  Exports
216
194
  - None
217
195
 
218
- ### .tmp-crud-server-template-fixture-FNbPfi
219
-
220
- ### `.tmp-crud-server-template-fixture-FNbPfi/src/server/actionIds.js`
221
- Exports
222
- - `actionIds`
223
-
224
- ### `.tmp-crud-server-template-fixture-FNbPfi/src/server/actions.js`
225
- Exports
226
- - `createActions({ surface = "" } = {})`
227
- Local functions
228
- - `requireActionSurface(surface = "")`
229
-
230
- ### `.tmp-crud-server-template-fixture-FNbPfi/src/server/listConfig.js`
231
- Exports
232
- - `LIST_CONFIG`
233
-
234
- ### `.tmp-crud-server-template-fixture-FNbPfi/src/server/registerRoutes.js`
235
- Exports
236
- - `registerRoutes(app, { routeOwnershipFilter = "public", routeSurface = "", routeRelativePath = "" } = {})`
237
-
238
- ### `.tmp-crud-server-template-fixture-FNbPfi/src/server/repository.js`
239
- Exports
240
- - `createRepository(knex, options = {})`
241
-
242
- ### `.tmp-crud-server-template-fixture-FNbPfi/src/server/service.js`
243
- Exports
244
- - `createService({ customersRepository, fieldAccess = DEFAULT_FIELD_ACCESS } = {})`
245
- - `serviceEvents`
246
-
247
- ### `.tmp-crud-server-template-fixture-FNbPfi/src/shared/customerResource.js`
248
- Exports
249
- - `resource`
250
-
251
196
  ### test-support
252
197
 
253
198
  ### `test-support/templateServerFixture.js`
@@ -40,7 +40,7 @@ Local functions
40
40
  - `buildLookupFormPropDefinitions({ createFields = [], editFields = [] } = {})`
41
41
  - `filterDefaultHiddenListFields(selectedFieldKeys, fields, { recordIdFieldKey = "" } = {})`
42
42
  - `ensureFields(fields, fallbackFields = createFieldDefinitions({}))`
43
- - `resolveViewTitleFallbackFieldKey(fields = [])`
43
+ - `resolveViewTitleFallbackFieldKey(fields = [], { recordIdFieldKey = "" } = {})`
44
44
  - `resolveResourceNamespace(resource = {}, pageTarget = {}, options = {})`
45
45
  - `resolveResourceLabels(namespace = "", pageTarget = {})`
46
46
  - `resolveTargetRootRelativeRoutePath(pageTarget = {})`
@@ -57,12 +57,12 @@ Exports
57
57
  - `resolveOperationRealtimeEvents(operation = {}, { defaultEvents = [], context = "ui-generator" } = {})`
58
58
  - `requireOutputSchema(operation, operationName, { context = "ui-generator" } = {})`
59
59
  - `requireBodySchema(operation, operationName, { context = "ui-generator" } = {})`
60
- - `requireObjectProperties(schema, contextLabel, { context = "ui-generator" } = {})`
60
+ - `requireObjectProperties(schema, contextLabel, { context = "ui-generator", rootSchema = schema } = {})`
61
61
  - `resolveListItemProperties(listOutputSchema, { context = "ui-generator" } = {})`
62
62
  - `resolveLookupContainerKey(resource = {}, { context = "ui-generator" } = {})`
63
- - `buildResourceFieldMetaMap(resource = {})`
64
- - `createFieldDefinitions(properties = {}, { fieldMetaMap = {}, lookupContainerKey = "lookups" } = {})`
65
- - `createFormFieldDefinitions(properties = {}, { fieldMetaMap = {}, lookupContainerKey = "lookups", parentRouteParamKey = "" } = {})`
63
+ - `buildResourceFieldContractMap(resource = {})`
64
+ - `createFieldDefinitions(properties = {}, { fieldContractMap = {}, lookupContainerKey = "lookups" } = {})`
65
+ - `createFormFieldDefinitions(properties = {}, { fieldContractMap = {}, lookupContainerKey = "lookups", parentRouteParamKey = "" } = {})`
66
66
  - `resolveNearestParentRouteParamKey(routePath = "", { recordIdParam = "recordId" } = {})`
67
67
  - `buildListHeaderColumns(fields = [])`
68
68
  - `buildListRowColumns(fields = [])`
@@ -74,18 +74,23 @@ Exports
74
74
  - `resolveRecordIdExpression(fields = [])`
75
75
  Local functions
76
76
  - `normalizeRealtimeEventList(events = [])`
77
+ - `resolveOperationTransportSchema(definition, { context = "ui-generator", defaultMode = "replace", label = "schema definition" } = {})`
77
78
  - `resolveUnionSchemaVariant(schema = {})`
79
+ - `decodeJsonPointerSegment(segment = "")`
80
+ - `resolveSchemaReference(ref = "", rootSchema = {}, { context = "ui-generator", contextLabel = "schema" } = {})`
81
+ - `resolveObjectSchema(schema = {}, contextLabel, { context = "ui-generator", rootSchema = schema } = {})`
82
+ - `resolveJsonRestCastType(schema = {})`
78
83
  - `resolveSchemaType(schema)`
79
84
  - `toFieldLabel(key)`
80
85
  - `isSupportedSelectOptionValue(value)`
81
86
  - `toSelectOptionLabel(value)`
82
87
  - `toSelectOptionIdentity(value)`
83
- - `normalizeFieldUiOptions(rawOptions, { context = "resource fieldMeta ui.options" } = {})`
88
+ - `normalizeFieldUiOptions(rawOptions, { context = "resource field ui.options" } = {})`
84
89
  - `stripLookupIdSuffix(key = "")`
85
90
  - `resolveFieldLabel(key = "", relation = null)`
86
91
  - `extractDynamicRouteParamKeys(routePath = "")`
87
92
  - `normalizeLookupRelation(relation = {})`
88
- - `toLookupRelation(fieldMetaMap = {}, fieldKey = "", { lookupContainerKey = "lookups" } = {})`
93
+ - `toLookupRelation(fieldContractMap = {}, fieldKey = "", { lookupContainerKey = "lookups" } = {})`
89
94
  - `resolveFormInputType(fieldType, fieldFormat)`
90
95
  - `resolveFormFieldComponent(fieldType, relation = null)`
91
96
  - `buildDefaultNullableBooleanOptions()`