@jskit-ai/agent-docs 0.1.283 → 0.1.285

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 (152) hide show
  1. package/guide/agent/app-extras/assistant.md +14 -2
  2. package/guide/agent/app-extras/realtime.md +38 -1
  3. package/guide/agent/app-setup/authentication.md +76 -14
  4. package/guide/agent/app-setup/console.md +8 -0
  5. package/guide/agent/app-setup/database-layer.md +23 -103
  6. package/guide/agent/app-setup/existing-application-migration.md +134 -72
  7. package/guide/agent/app-setup/multi-homing.md +94 -32
  8. package/guide/agent/app-setup/quickstart.md +1 -1
  9. package/guide/agent/app-setup/run-an-accounts-hub.md +1 -1
  10. package/guide/agent/app-setup/upgrading-jskit.md +17 -3
  11. package/guide/agent/app-setup/users.md +8 -5
  12. package/guide/agent/framework/application-operations.md +1 -1
  13. package/guide/agent/framework/crud-operations.md +63 -45
  14. package/guide/agent/framework/data-access.md +1207 -0
  15. package/guide/agent/framework/sanity-checks.md +26 -27
  16. package/guide/agent/framework/typed-features.md +117 -248
  17. package/guide/agent/index.md +2 -0
  18. package/package.json +6 -3
  19. package/patterns/feature-package/PATTERN.md +25 -17
  20. package/patterns/feature-package/example/booking-engine/package.json +1 -1
  21. package/patterns/feature-package/example/variations/InvoiceRollupFeature.js +6 -7
  22. package/patterns/feature-package/example/variations/invoiceResource.js +15 -0
  23. package/patterns/feature-package/example/variations/invoiceRollupActions.js +4 -4
  24. package/patterns/feature-package/example/variations/ownedTableRepository.js +27 -0
  25. package/patterns/feature-package/example/variations/types.js +1 -1
  26. package/patterns/minimal-foundation/example/AGENTS.md +4 -0
  27. package/patterns/minimal-foundation/example/package.json +4 -4
  28. package/patterns/minimal-foundation/example/server.js +4 -1
  29. package/patterns/shell-foundation/example/AGENTS.md +4 -0
  30. package/patterns/shell-foundation/example/package.json +5 -5
  31. package/patterns/shell-foundation/example/packages/main/package.json +1 -1
  32. package/patterns/shell-foundation/example/server.js +4 -1
  33. package/reference/autogen/KERNEL_MAP.md +3 -1
  34. package/reference/autogen/PATTERN_INDEX.md +70 -59
  35. package/reference/autogen/README.md +1 -1
  36. package/reference/autogen/packages/agent-docs.md +7 -3
  37. package/reference/autogen/packages/agent-runtime.md +48 -11
  38. package/reference/autogen/packages/architecture-inspector.md +6 -2
  39. package/reference/autogen/packages/assistant-core.md +4 -4
  40. package/reference/autogen/packages/assistant-runtime.md +33 -13
  41. package/reference/autogen/packages/auth-provider-local-core.md +3 -1
  42. package/reference/autogen/packages/auth-provider-local-db-core.md +69 -14
  43. package/reference/autogen/packages/auth-provider-oidc-core.md +5 -1
  44. package/reference/autogen/packages/auth-provider-supabase-core.md +1 -1
  45. package/reference/autogen/packages/connectors-core.md +22 -2
  46. package/reference/autogen/packages/console-core.md +9 -5
  47. package/reference/autogen/packages/crud-core.md +45 -175
  48. package/reference/autogen/packages/database-runtime-mysql.md +0 -26
  49. package/reference/autogen/packages/database-runtime.md +11 -33
  50. package/reference/autogen/packages/http-runtime.md +3 -3
  51. package/reference/autogen/packages/http-web.md +12 -0
  52. package/reference/autogen/packages/kernel.md +27 -2
  53. package/reference/autogen/packages/oidc-issuer-core.md +4 -0
  54. package/reference/autogen/packages/payments-core.md +28 -6
  55. package/reference/autogen/packages/realtime.md +15 -6
  56. package/reference/autogen/packages/resource-core.md +32 -5
  57. package/reference/autogen/packages/resource-crud-core.md +30 -34
  58. package/reference/autogen/packages/resource-runtime.md +220 -0
  59. package/reference/autogen/packages/rewarded-core.md +16 -10
  60. package/reference/autogen/packages/shell-web.md +1 -0
  61. package/reference/autogen/packages/users-core.md +33 -14
  62. package/reference/autogen/packages/workspaces-core.md +17 -10
  63. package/reference/autogen/tooling/config-eslint.md +74 -0
  64. package/reference/autogen/tooling/jskit-catalog.md +50 -1
  65. package/reference/autogen/tooling/jskit-release.md +5 -0
  66. package/skills/jskit/SKILL.md +4 -1
  67. package/skills/jskit/references/app-operations.md +1 -1
  68. package/skills/jskit/references/crud-operations.md +62 -44
  69. package/skills/jskit/references/data-access.md +1202 -0
  70. package/skills/jskit/references/database-layer.md +411 -0
  71. package/skills/jskit/references/existing-application-migration.md +134 -72
  72. package/skills/jskit/references/heuristics/INDEX.md +6 -4
  73. package/skills/jskit/references/heuristics/crud-authoring.md +26 -15
  74. package/skills/jskit/references/heuristics/data-access.md +19 -0
  75. package/skills/jskit/references/heuristics/filters.md +6 -6
  76. package/skills/jskit/references/heuristics/row-policies.md +40 -16
  77. package/skills/jskit/references/heuristics/server-search.md +30 -42
  78. package/skills/jskit/references/heuristics/table-resource-fields.md +78 -0
  79. package/skills/jskit/references/heuristics/typed-features.md +3 -3
  80. package/skills/jskit/references/multi-homing.md +94 -32
  81. package/skills/jskit/references/pattern-index.md +70 -59
  82. package/skills/jskit/references/patterns/app/minimal-foundation/example/AGENTS.md +4 -0
  83. package/skills/jskit/references/patterns/app/minimal-foundation/example/package.json +4 -4
  84. package/skills/jskit/references/patterns/app/minimal-foundation/example/server.js +4 -1
  85. package/skills/jskit/references/patterns/app/shell-foundation/example/AGENTS.md +4 -0
  86. package/skills/jskit/references/patterns/app/shell-foundation/example/package.json +5 -5
  87. package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/package.json +1 -1
  88. package/skills/jskit/references/patterns/app/shell-foundation/example/server.js +4 -1
  89. package/skills/jskit/references/patterns/assistant/assistant-surface/PATTERN.md +5 -2
  90. package/skills/jskit/references/patterns/auth/accounts-hub/example/package.json +3 -2
  91. package/skills/jskit/references/patterns/auth/auth-surface/PATTERN.md +15 -0
  92. package/skills/jskit/references/patterns/auth/oidc-sign-in/example/package.json +2 -2
  93. package/skills/jskit/references/patterns/auth/supabase-auth/example/package.json +1 -1
  94. package/skills/jskit/references/patterns/connectors/calendar-cli/example/package.json +4 -4
  95. package/skills/jskit/references/patterns/crud/crud-contract/PATTERN.md +133 -0
  96. package/skills/jskit/references/patterns/crud/crud-contract/example/bookResource.js +74 -0
  97. package/skills/jskit/references/patterns/crud/{json-api-resource-package → crud-feature-package}/PATTERN.md +69 -37
  98. package/skills/jskit/references/patterns/crud/{json-api-resource-package → crud-feature-package}/example/packages/books/package.json +5 -4
  99. package/skills/jskit/references/patterns/crud/crud-feature-package/example/packages/books/src/server/BooksFeature.js +13 -0
  100. package/skills/jskit/references/patterns/crud/crud-feature-package/example/packages/books/src/shared/bookResource.js +74 -0
  101. package/skills/jskit/references/patterns/crud/crud-feature-package/example/packages/books/src/shared/index.js +1 -0
  102. package/skills/jskit/references/patterns/crud/crud-screen-set/PATTERN.md +26 -8
  103. package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookEditPage.vue +2 -2
  104. package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookListPage.vue +2 -2
  105. package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookNewPage.vue +2 -2
  106. package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookViewPage.vue +3 -3
  107. package/skills/jskit/references/patterns/database/mysql-application/PATTERN.md +9 -4
  108. package/skills/jskit/references/patterns/database/mysql-application/example/package.json +2 -1
  109. package/skills/jskit/references/patterns/database/mysql-application/example/scripts/prepare-database.js +8 -0
  110. package/skills/jskit/references/patterns/database/postgres-application/PATTERN.md +8 -4
  111. package/skills/jskit/references/patterns/database/postgres-application/example/package.json +2 -1
  112. package/skills/jskit/references/patterns/database/postgres-application/example/scripts/prepare-database.js +8 -0
  113. package/skills/jskit/references/patterns/database/table-resource/PATTERN.md +120 -0
  114. package/skills/jskit/references/patterns/database/table-resource/example/orderResource.js +25 -0
  115. package/skills/jskit/references/patterns/realtime/realtime-application/PATTERN.md +7 -0
  116. package/skills/jskit/references/patterns/realtime/realtime-application/example/package.json +2 -2
  117. package/skills/jskit/references/patterns/rewards/google-rewarded/PATTERN.md +1 -1
  118. package/skills/jskit/references/patterns/server/feature-package/PATTERN.md +25 -17
  119. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/package.json +1 -1
  120. package/skills/jskit/references/patterns/server/feature-package/example/variations/InvoiceRollupFeature.js +6 -7
  121. package/skills/jskit/references/patterns/server/feature-package/example/variations/invoiceResource.js +15 -0
  122. package/skills/jskit/references/patterns/server/feature-package/example/variations/invoiceRollupActions.js +4 -4
  123. package/skills/jskit/references/patterns/server/feature-package/example/variations/ownedTableRepository.js +27 -0
  124. package/skills/jskit/references/patterns/server/feature-package/example/variations/types.js +1 -1
  125. package/skills/jskit/references/patterns/users/user-administration-server/PATTERN.md +63 -10
  126. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/package.json +5 -4
  127. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/src/server/UsersFeature.js +7 -5
  128. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/src/shared/index.js +1 -1
  129. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/src/shared/userCrud.js +21 -0
  130. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/package.json +11 -5
  131. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/src/server/UsersWorkspaceFeature.js +14 -5
  132. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/src/server/workspaceMembersOnly.js +52 -0
  133. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/src/shared/index.js +1 -1
  134. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/src/shared/userCrud.js +21 -0
  135. package/skills/jskit/references/patterns/workspaces/workspace-server/PATTERN.md +9 -9
  136. package/skills/jskit/references/patterns/workspaces/workspace-surfaces/PATTERN.md +16 -0
  137. package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/pages/home/workspaces/index.vue +2 -0
  138. package/skills/jskit/references/sanity-checks.md +27 -28
  139. package/skills/jskit/references/typed-features.md +117 -248
  140. package/patterns/feature-package/example/variations/customKnexRepository.js +0 -40
  141. package/reference/autogen/packages/json-rest-api-core.md +0 -66
  142. package/skills/jskit/references/heuristics/crud-repository-mapping.md +0 -140
  143. package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/src/server/BooksFeature.js +0 -13
  144. package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/src/shared/bookResource.js +0 -83
  145. package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/src/shared/index.js +0 -1
  146. package/skills/jskit/references/patterns/crud/resource-contract/PATTERN.md +0 -155
  147. package/skills/jskit/references/patterns/crud/resource-contract/example/bookResource.js +0 -87
  148. package/skills/jskit/references/patterns/server/feature-package/example/variations/customKnexRepository.js +0 -40
  149. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/src/shared/userResource.js +0 -69
  150. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/src/shared/userResource.js +0 -56
  151. /package/skills/jskit/references/patterns/crud/{json-api-resource-package → crud-feature-package}/example/migrations/20260815000000_books.cjs +0 -0
  152. /package/skills/jskit/references/patterns/crud/{json-api-resource-package → crud-feature-package}/example/packages/books/src/server/types.js +0 -0
@@ -0,0 +1,220 @@
1
+ # packages/resource-runtime
2
+
3
+ Generated by `npm run agent-docs:build`.
4
+ Do not edit manually.
5
+
6
+ Generated inventory for `packages/resource-runtime`.
7
+ Use this on demand; do not load the full index at startup.
8
+
9
+ ## Scope
10
+ - Source: `packages/resource-runtime/**/*{.js,.mjs,.cjs,.vue}`
11
+ - Excludes: `.build/`, `.git/`, `.jscpd/`, `.jskit/`, `coverage/`, `dist/`, `docs/`, `node_modules/`, `test/`, `tests/`, `__tests__/`, `.vitepress/cache/`, `.vitepress/dist/`, `skills/jskit/references/patterns/`, `*.test.*`, `*.spec.*`, `*.vitest.*`
12
+
13
+ ## Sections
14
+
15
+ ### src
16
+
17
+ ### `src/server/changeHorizon.js`
18
+ Exports
19
+ - `readChangeHorizon(name, db)`
20
+
21
+ ### `src/server/contexts.js`
22
+ Exports
23
+ - `callerOf(context)`
24
+ - `createJsonRestContext(context = null)`
25
+ - `createSystemContext({ feature, systemScope, reason })`
26
+ - `isJobContext(context)`
27
+ - `isSystemContext`
28
+ Local functions
29
+ - `eventScopeOf({ workspaceId, userId })`
30
+ - `jobContext(reason, scopeValues, options, label)`
31
+ - `requireScopeId(value, label, subject)`
32
+
33
+ ### `src/server/errors.js`
34
+ Exports
35
+ - `DuplicateOwnerError`
36
+ - `MissingScopeError`
37
+ - `PageSizeError`
38
+ - `RowLimitError`
39
+ - `StaleRecordError`
40
+ - `SystemContextRequiredError`
41
+ - `UnpagedQueryError`
42
+ - `UnsupportedDatabaseError`
43
+
44
+ ### `src/server/foreignKeyCheck.js`
45
+ Exports
46
+ - `checkForeignKeys({ knex, resources, tables = [] })`
47
+ - `type ForeignKeyColumns`
48
+ Local functions
49
+ - `sameNames(left, right)`
50
+ - `sameKey(left, right)`
51
+ - `declaredForeignKeys(knex, resources)`
52
+
53
+ ### `src/server/handleGuards.js`
54
+ Exports
55
+ - `formatOf(name, options)`
56
+ - `matchesNoRow(filters, schemaInfo)`
57
+ - `missingOf(name, caller, missing = "throw")`
58
+ - `refuseConditions(name, method, options, keys, instead)`
59
+ - `requireConditionValues(name, method, options, keys)`
60
+ - `requireDefinedFilters(name, caller, filters, path = "filters")`
61
+ - `requireOwners(name, ownership, context)`
62
+ - `requirePatchConditions(name, lockVersionField, attributes, options)`
63
+ - `requireReadParams(name, params)`
64
+ - `requireUpsertRows(name, rows, onConflict, idProperty)`
65
+ - `passedOn`
66
+ - `whereSelection(name, operation, filters, options)`
67
+
68
+ ### `src/server/handleHidden.js`
69
+ Exports
70
+ - `createHiddenFieldReads({ resource, scopedQuery, column })`
71
+ - `createJoinSource({ api, resource, jsonRest, scopedQuery, column })`
72
+ - `markHandleFunctions({ scopedQuery, withTransaction, lockOrCreate })`
73
+ - `withoutHiddenFields(repository, resources)`
74
+ Local functions
75
+ - `namedHiddenFields(resource, fields)`
76
+ - `storedValue(value, { type, precision, scale })`
77
+ - `fieldNames(fields)`
78
+ - `isKnexValue(value)`
79
+ - `withoutFullBuilder(value, label)`
80
+ - `isPlainRecord(value)`
81
+ - `withoutHiddenValues(value, hidden, label, seen = new WeakMap())`
82
+ - `guardedRepository(repository, resource, hidden, guarded)`
83
+ - `guardedFunction(repository, key, call, resource, hidden)`
84
+
85
+ ### `src/server/handleLocks.js`
86
+ Exports
87
+ - `createLockReads({ name, resource, jsonRest, readFields, contextOf, hiddenFields })`
88
+ - `lockModeOf(name, caller, lockMode)`
89
+
90
+ ### `src/server/handleRecords.js`
91
+ Exports
92
+ - `aggregateMeasures(measures)`
93
+ - `MANY_RETURNING`
94
+ - `SINGLE_RETURNING`
95
+ - `handleRecords(resource, records, { include, fields } = {}, resourceNamed)`
96
+ - `handleResult(resource, result, format, { include, fields } = {}, resourceNamed)`
97
+ - `idOf(result, format)`
98
+ - `inputData(resource, attributes, stamp, context)`
99
+ - `manyResult(resource, result, returning)`
100
+ - `namedFields(resource, fields)`
101
+ - `noRowsAggregate(measures, groupBy)`
102
+ - `patchAnswer(id, record, returning)`
103
+ - `upsertConflict(resource, rows, onConflict, context, ownershipFields)`
104
+ - `pickReturning(modes, value, fallback, label)`
105
+ - `quietCollections(resource, flag)`
106
+ - `readQueryParams(resource, params, { page, caller })`
107
+ - `requestedFields(params, quiet, schemaInfo)`
108
+ - `sparseFieldset(resource, fields)`
109
+ - `textList(value)`
110
+ Local functions
111
+ - `setsOwnTimestamps(context)`
112
+ - `atPrecision(field, value)`
113
+ - `stampedAttributes(resource, attributes, stamp, context)`
114
+ - `includedRelationships(include)`
115
+ - `handleRecord(resource, record, included, named, resourceNamed)`
116
+
117
+ ### `src/server/index.js`
118
+ Exports
119
+ - `ResourceRuntimeProvider`
120
+ - `DEFAULT_REQUEST_ROW_LIMIT`
121
+ - `DEFAULT_SERVER_PAGE_SIZE`
122
+ - `buildJsonRestQueryParams`
123
+ - `resolveUserScopeValue`
124
+ - `resolveWorkspaceScopeValue`
125
+ - `checkForeignKeys`
126
+ - `createStandaloneResources`
127
+ - `isSystemContext`
128
+ - `withoutHiddenFields`
129
+ - `passedOn`
130
+ - `DuplicateOwnerError`
131
+ - `MissingScopeError`
132
+ - `PageSizeError`
133
+ - `RowLimitError`
134
+ - `StaleRecordError`
135
+ - `SystemContextRequiredError`
136
+ - `UnpagedQueryError`
137
+ - `UnsupportedDatabaseError`
138
+
139
+ ### `src/server/jsonRestValues.js`
140
+ Exports
141
+ - `isPlainJsonRestObject(value)`
142
+ - `resolveJsonRestCollectionRelationships(resource)`
143
+
144
+ ### `src/server/lockOrCreate.js`
145
+ Exports
146
+ - `findOrCreateRecord({ get, create }, attributes, options)`
147
+ - `lockOrCreate(handle, row, options, work)`
148
+
149
+ ### `src/server/rawExpression.js`
150
+ Exports
151
+ - `valueOnlyRaw(label, knex, args)`
152
+ Local functions
153
+ - `valueOnly(label, expression)`
154
+
155
+ ### `src/server/resourceHandle.js`
156
+ Exports
157
+ - `MANY_ROW_CHANNEL`
158
+ - `createResourceHandle({ api, resource, hooks, settings, resourceNamed })`
159
+ Local functions
160
+ - `reportManyRow(resource, operation, rows, chunkSize)`
161
+ - `requireHandleTransaction(name, options)`
162
+ - `openTransaction(api, options, work)`
163
+ - `formatSetting(options)`
164
+ - `inTransaction(options)`
165
+ - `write(options, run)`
166
+
167
+ ### `src/server/resourceHost.js`
168
+ Exports
169
+ - `JSON_REST_AUTOFILTER_PRESETS`
170
+ - `buildJsonRestQueryParams(resourceType = "", query = {}, { include = undefined } = {})`
171
+ - `createJsonRestContext`
172
+ - `createResourceHost({ knex, logger })`
173
+ - `resourceScopeOptions(resource, { writeSerializers = {}, normalizeId, rowPolicy, searchSchema, queryFields } = {})`
174
+ - `returnNullWhenJsonRestResourceMissing(run)`
175
+ - `returnBadRequestWhenJsonRestFieldsetInvalid(run)`
176
+ - `resolveWorkspaceScopeValue(context = null)`
177
+ - `resolveUserScopeValue(context = null)`
178
+ Local functions
179
+ - `cloneJsonRestResourceValue(value, { writeSerializers = {} } = {})`
180
+ - `normalizeScopeValue(value)`
181
+ - `normalizeJsonRestFilterValue(value)`
182
+ - `normalizeJsonRestList(value)`
183
+ - `normalizeJsonRestQueryField(fieldName = "", fieldDefinition = {}, projectionDefinition = null)`
184
+ - `queryFieldSelect(fieldName, select)`
185
+ - `isJsonRestVirtualField(fieldDefinition = null)`
186
+ - `applyJsonRestQueryFields(scopeOptions = {}, extraQueryFields = {})`
187
+ - `resolveJsonRestDefaultExcludedFields(resource)`
188
+ - `applyJsonRestDefaultExclusions(scopeOptions = {}, resource = {})`
189
+ - `primaryField(scopeOptions)`
190
+ - `workspaceScopeOwnerId(visibilityContext)`
191
+ - `isJsonRestResourceMissingError(error = null)`
192
+ - `isJsonRestSparseFieldError(error = null)`
193
+
194
+ ### `src/server/resourceRuntime.js`
195
+ Exports
196
+ - `DEFAULT_REQUEST_ROW_LIMIT`
197
+ - `DEFAULT_SERVER_PAGE_SIZE`
198
+ - `createResourceRuntime({ api, requestRowLimit = DEFAULT_REQUEST_ROW_LIMIT, serverPageSize = DEFAULT_SERVER_PAGE_SIZE })`
199
+ Local functions
200
+ - `ownedEntry(entry, featureId)`
201
+ - `crossTableFilters(scopeOptions)`
202
+ - `applyGrouped(policy, args)`
203
+
204
+ ### `src/server/ResourceRuntimeProvider.js`
205
+ Exports
206
+ - `ResourceRuntimeProvider`
207
+
208
+ ### `src/server/standaloneResources.js`
209
+ Exports
210
+ - `createStandaloneResources({ knex, feature, owns, systemScope, logger = silentLogger })`
211
+ - `registerServerRuntime(knex, runtime)`
212
+
213
+ ### `src/server/types.js`
214
+ Exports
215
+ - `type RuntimeJsonRestApi`
216
+ - `type JsonRestResource`
217
+ - `type ResourceRuntime`
218
+ - `type ResourceHandle`
219
+ - `type ResourceCallOptions`
220
+ - `type SystemContext`
@@ -60,8 +60,6 @@ Exports
60
60
  - `type CrudRepository`
61
61
  - `type RewardedRepositoryOptions`
62
62
  Local functions
63
- - `normalizeRecordList(document)`
64
- - `normalizeRecord(document)`
65
63
  - `normalizeKeyword(value, fallback)`
66
64
  - `toIsoOrNull(value)`
67
65
  - `parseDate(value)`
@@ -98,26 +96,34 @@ Exports
98
96
 
99
97
  ### `src/shared/index.js`
100
98
  Exports
101
- - `rewardedRuleResource`
102
- - `rewardedProviderConfigResource`
103
- - `rewardedWatchSessionResource`
104
- - `rewardedUnlockReceiptResource`
99
+ - `rewardedRuleCrud`
100
+ - `rewardedRuleTableResource`
101
+ - `rewardedProviderConfigCrud`
102
+ - `rewardedProviderConfigTableResource`
103
+ - `rewardedWatchSessionCrud`
104
+ - `rewardedWatchSessionTableResource`
105
+ - `rewardedUnlockReceiptCrud`
106
+ - `rewardedUnlockReceiptTableResource`
105
107
 
106
108
  ### `src/shared/rewardedProviderConfigResource.js`
107
109
  Exports
108
- - `resource`
110
+ - `rewardedProviderConfigCrud`
111
+ - `rewardedProviderConfigTableResource`
109
112
 
110
113
  ### `src/shared/rewardedRuleResource.js`
111
114
  Exports
112
- - `resource`
115
+ - `rewardedRuleCrud`
116
+ - `rewardedRuleTableResource`
113
117
 
114
118
  ### `src/shared/rewardedUnlockReceiptResource.js`
115
119
  Exports
116
- - `resource`
120
+ - `rewardedUnlockReceiptCrud`
121
+ - `rewardedUnlockReceiptTableResource`
117
122
 
118
123
  ### `src/shared/rewardedWatchSessionResource.js`
119
124
  Exports
120
- - `resource`
125
+ - `rewardedWatchSessionCrud`
126
+ - `rewardedWatchSessionTableResource`
121
127
 
122
128
  ### migrations
123
129
 
@@ -591,6 +591,7 @@ Exports
591
591
  Local functions
592
592
  - `clampNumber(value, minimum, maximum)`
593
593
  - `measureRenderedText(element)`
594
+ - `measureDrawerIdentity(identityElement, drawerRect, rightToLeft, endBorderWidth)`
594
595
 
595
596
  ### `src/client/support/gestureTargets.js`
596
597
  Exports
@@ -94,9 +94,15 @@ Exports
94
94
  Local functions
95
95
  - `resolveAuthProfileSettings(authService)`
96
96
 
97
+ ### `src/server/common/repositories/recordsByIds.js`
98
+ Exports
99
+ - `queryAllByIds(handle, method, userIds, options)`
100
+ Local functions
101
+ - `byNumericId(left, right)`
102
+
97
103
  ### `src/server/common/repositories/userProfilesRepository.js`
98
104
  Exports
99
- - `createRepository({ api })`
105
+ - `createRepository({ userProfiles, userSettings })`
100
106
  Local functions
101
107
  - `normalizeProfileRecord(payload = null)`
102
108
  - `normalizeCreatePayload(payload = {})`
@@ -104,14 +110,17 @@ Local functions
104
110
  - `buildUsernameCandidate(baseUsername, suffix)`
105
111
  - `duplicateTargetsEmail(error)`
106
112
  - `duplicateTargetsUsername(error)`
113
+ - `buildDuplicateUsernameConflictError(cause = undefined)`
114
+ - `requireNewProfile(profileLike, context)`
107
115
  - `buildDuplicateEmailConflictError(cause)`
108
- - `resolveUniqueUsername(api, baseUsername, { excludeUserId = null, transaction = null } = {})`
116
+ - `resolveUniqueUsername(userProfiles, baseUsername, excludeUserId, options)`
109
117
 
110
118
  ### `src/server/common/repositories/userSettingsRepository.js`
111
119
  Exports
112
- - `createRepository({ api })`
120
+ - `createRepository({ userSettings })`
113
121
  Local functions
114
122
  - `pickPatchFields(source = {})`
123
+ - `withCanonicalLocale(row)`
115
124
  - `buildDefaultUserSettingsCreatePayload(userId)`
116
125
 
117
126
  ### `src/server/common/services/accountContextService.js`
@@ -150,7 +159,9 @@ Exports
150
159
  Exports
151
160
  - `type UsersCore`
152
161
  - `type UsersExtensions`
153
- - `type UsersIdentity`
162
+ - `type UsersResources`
163
+ - `type UsersProfiles`
164
+ - `type UsersSettings`
154
165
  - `type UserProfilesRepository`
155
166
  - `type UserSettingsRepository`
156
167
  - `type ResolveProfileSyncLifecycleContributors`
@@ -184,7 +195,7 @@ Exports
184
195
 
185
196
  ### `src/server/usersIdentity.js`
186
197
  Exports
187
- - `createUsersIdentity({ jsonRestApi, extensions })`
198
+ - `createUsersIdentity({ resources, extensions })`
188
199
 
189
200
  ### `src/server/UsersIdentityProvider.js`
190
201
  Exports
@@ -192,7 +203,7 @@ Exports
192
203
 
193
204
  ### `src/server/usersRuntime.js`
194
205
  Exports
195
- - `createUsersRuntime({ authService, identity, storage })`
206
+ - `createUsersRuntime({ authService, profileProjector, profiles: userProfilesRepository, settings: userSettingsRepository, storage })`
196
207
 
197
208
  ### `src/shared/index.js`
198
209
  Exports
@@ -211,7 +222,9 @@ Exports
211
222
 
212
223
  ### `src/shared/resources/userProfileResource.js`
213
224
  Exports
214
- - `userProfileResource`
225
+ - `userProfileContract`
226
+ - `userProfileCrud`
227
+ - `userProfileTableResource`
215
228
 
216
229
  ### `src/shared/resources/userProfileValues.js`
217
230
  Exports
@@ -227,8 +240,10 @@ Exports
227
240
  - `USER_SETTINGS_NOTIFICATION_KEYS`
228
241
  - `USER_SETTINGS_PREFERENCE_KEYS`
229
242
  - `userSettingsOutputSchema`
243
+ - `userSettingsContract`
244
+ - `userSettingsCrud`
230
245
  - `userSettingsOutputValidator`
231
- - `userSettingsResource`
246
+ - `userSettingsTableResource`
232
247
  Local functions
233
248
  - `normalizePositiveInteger(value)`
234
249
 
@@ -266,13 +281,17 @@ Exports
266
281
  Exports
267
282
  - `UsersWorkspaceFeature`
268
283
 
284
+ ### `patterns/user-administration-server/example/packages/users-workspace/src/server/workspaceMembersOnly.js`
285
+ Exports
286
+ - `workspaceMembersOnly(repository, memberships)`
287
+
269
288
  ### `patterns/user-administration-server/example/packages/users-workspace/src/shared/index.js`
270
289
  Exports
271
- - `resource`
290
+ - `userCrud`
272
291
 
273
- ### `patterns/user-administration-server/example/packages/users-workspace/src/shared/userResource.js`
292
+ ### `patterns/user-administration-server/example/packages/users-workspace/src/shared/userCrud.js`
274
293
  Exports
275
- - `resource`
294
+ - `userCrud`
276
295
 
277
296
  ### `patterns/user-administration-server/example/packages/users/src/server/types.js`
278
297
  Exports
@@ -284,8 +303,8 @@ Exports
284
303
 
285
304
  ### `patterns/user-administration-server/example/packages/users/src/shared/index.js`
286
305
  Exports
287
- - `resource`
306
+ - `userCrud`
288
307
 
289
- ### `patterns/user-administration-server/example/packages/users/src/shared/userResource.js`
308
+ ### `patterns/user-administration-server/example/packages/users/src/shared/userCrud.js`
290
309
  Exports
291
- - `resource`
310
+ - `userCrud`
@@ -36,7 +36,7 @@ Exports
36
36
 
37
37
  ### `src/server/common/repositories/workspaceInvitesRepository.js`
38
38
  Exports
39
- - `createRepository({ api })`
39
+ - `createRepository({ workspaceInvites, workspaces })`
40
40
  - `normalizeInviteRecord(payload)`
41
41
  - `normalizeInviteWithWorkspace(payload = {})`
42
42
  Local functions
@@ -44,7 +44,7 @@ Local functions
44
44
 
45
45
  ### `src/server/common/repositories/workspaceMembershipsRepository.js`
46
46
  Exports
47
- - `createRepository({ api })`
47
+ - `createRepository({ workspaceMemberships })`
48
48
  - `normalizeMembershipRecord(payload)`
49
49
  - `normalizeMemberSummaryRow(row)`
50
50
  Local functions
@@ -52,9 +52,10 @@ Local functions
52
52
 
53
53
  ### `src/server/common/repositories/workspacesRepository.js`
54
54
  Exports
55
- - `createRepository({ api })`
55
+ - `createRepository({ workspaces, workspaceMemberships })`
56
56
  Local functions
57
57
  - `normalizeWorkspaceRecord(payload = null)`
58
+ - `byId(left, right)`
58
59
 
59
60
  ### `src/server/common/services/workspaceDirectoryService.js`
60
61
  Exports
@@ -66,7 +67,7 @@ Local functions
66
67
 
67
68
  ### `src/server/common/support/realtimeServiceEvents.js`
68
69
  Exports
69
- - `INVITE_RECIPIENT_BOOTSTRAP_AUDIENCE`
70
+ - `createInviteRecipientBootstrapAudience({ inviteRecipientUserIds })`
70
71
  - `createInviteDecisionEvents()`
71
72
  - `createWorkspaceEntityAndBootstrapEvents({ workspaceEntity, workspaceOperation, workspaceRealtimeEvent, bootstrapEntityId = workspaceId, bootstrapAudience = "event_scope" })`
72
73
  Local functions
@@ -129,10 +130,13 @@ Exports
129
130
  ### `src/server/types.js`
130
131
  Exports
131
132
  - `type WorkspacesCore`
133
+ - `type Workspaces`
134
+ - `type WorkspacesMemberships`
132
135
  - `type WorkspaceDirectoryService`
133
136
  - `type WorkspaceMembersService`
134
137
  - `type WorkspacePendingInvitationsService`
135
138
  - `type WorkspaceSettingsService`
139
+ - `type WorkspacesResources`
136
140
  - `type WorkspacesRepository`
137
141
  - `type WorkspaceMembershipsRepository`
138
142
  - `type WorkspaceInvitesRepository`
@@ -226,7 +230,7 @@ Exports
226
230
 
227
231
  ### `src/server/workspaceSettings/workspaceSettingsRepository.js`
228
232
  Exports
229
- - `createRepository({ api, defaultInvitesEnabled, defaultColorSettings })`
233
+ - `createRepository({ workspaceSettings, defaultInvitesEnabled, defaultColorSettings })`
230
234
  Local functions
231
235
  - `buildDefaultWorkspaceSettingsCreatePayload(workspaceId, defaultInvitesEnabled, defaultColorSettings)`
232
236
 
@@ -242,8 +246,8 @@ Exports
242
246
  Exports
243
247
  - `WorkspacesFeature`
244
248
  - `buildWorkspaceName`
249
+ - `createWorkspaceRecords`
245
250
  - `createWorkspacesRuntime`
246
- - `installWorkspaceResources`
247
251
  - `noInviteAcceptanceParticipant`
248
252
  - `renderDefaultWorkspaceInviteEmail`
249
253
  - `unconfiguredWorkspaceInviteMailer`
@@ -256,8 +260,9 @@ Local functions
256
260
 
257
261
  ### `src/server/workspacesRuntime.js`
258
262
  Exports
259
- - `createWorkspacesRuntime({ appRoot, config, env, inviteMailer, inviteEmailTemplate, inviteAcceptanceParticipant, personalWorkspaceName, jsonRestApi, users })`
260
- - `installWorkspaceResources(jsonRestApi)`
263
+ - `WORKSPACES_TABLES`
264
+ - `createWorkspaceRecords(resources)`
265
+ - `createWorkspacesRuntime({ appRoot, config, env, inviteMailer, inviteEmailTemplate, inviteAcceptanceParticipant, personalWorkspaceName, resources, userProfiles, userSettings, workspaces: workspacesRepository, workspaceMemberships: workspaceMembershipsRepository })`
261
266
  Local functions
262
267
  - `requirePositiveInteger(value, label)`
263
268
  - `requireBoolean(value, label)`
@@ -296,14 +301,15 @@ Exports
296
301
 
297
302
  ### `src/shared/resources/workspaceMembersResource.js`
298
303
  Exports
299
- - `workspaceMembersResource`
304
+ - `workspaceMembersContract`
300
305
 
301
306
  ### `src/shared/resources/workspacePendingInvitationsResource.js`
302
307
  Exports
303
- - `workspacePendingInvitationsResource`
308
+ - `workspacePendingInvitationsContract`
304
309
 
305
310
  ### `src/shared/resources/workspaceResource.js`
306
311
  Exports
312
+ - `workspaceCrud`
307
313
  - `workspaceResource`
308
314
  - `WORKSPACE_PATCH_FIELD_KEYS`
309
315
  - `workspaceListItemOutputValidator`
@@ -318,6 +324,7 @@ Exports
318
324
  ### `src/shared/resources/workspaceSettingsResource.js`
319
325
  Exports
320
326
  - `WORKSPACE_SETTINGS_FIELD_KEYS`
327
+ - `workspaceSettingsCrud`
321
328
  - `workspaceSettingsOutputSchema`
322
329
  - `workspaceSettingsResource`
323
330
  Local functions
@@ -39,6 +39,11 @@ Local functions
39
39
  - `clientFeaturesRules(severity)`
40
40
  - `componentRules(severity)`
41
41
 
42
+ ### `dataAccess.js`
43
+ Exports
44
+ - `dataAccessConfig(files, severity = "error")`
45
+ - `dataAccessRules(severity = "error")`
46
+
42
47
  ### `formatter.js`
43
48
  Exports
44
49
  - `formatterConfig(files, { ignores = [] } = {})`
@@ -52,6 +57,8 @@ Exports
52
57
  - `sizeLimitsConfig`
53
58
  - `typedFeaturesConfig`
54
59
  - `clientFeaturesConfig`
60
+ - `dataAccessConfig`
61
+ - `dataAccessRules`
55
62
  - `formatterConfig`
56
63
  - `jskitPlugin`
57
64
 
@@ -78,6 +85,17 @@ Exports
78
85
 
79
86
  ### plugin
80
87
 
88
+ ### `plugin/dataAccess.js`
89
+ Exports
90
+ - `INFRASTRUCTURE_HINT`
91
+ - `KNEX_NAMES`
92
+ - `calledMethod(node)`
93
+ - `isAssignmentTarget(node)`
94
+ - `isInfrastructureFile(context, ruleName)`
95
+ - `isText(node)`
96
+ - `lastName(node)`
97
+ - `literalText(node)`
98
+
81
99
  ### `plugin/factoryResults.js`
82
100
  Exports
83
101
  - `CREATE_NAME`
@@ -129,10 +147,15 @@ Local functions
129
147
  ### `plugin/rules/allowCommentForm.js`
130
148
  Exports
131
149
  - `allowCommentForm`
150
+ - `isInfrastructureExcuse(line, ruleName)`
151
+ - `reasonProblem(reason)`
132
152
  Local functions
153
+ - `directedDataAccessRules({ type, value })`
154
+ - `readAllow(text)`
133
155
  - `holdsFunction(node)`
134
156
  - `excusedNode(sourceCode, comment)`
135
157
  - `allowLines(comment, opening = 2)`
158
+ - `dataAccessProblem(rule, reason, inHeader)`
136
159
 
137
160
  ### `plugin/rules/appErrorCode.js`
138
161
  Exports
@@ -176,6 +199,15 @@ Exports
176
199
  Local functions
177
200
  - `startsItsLine(lines, comment)`
178
201
 
202
+ ### `plugin/rules/knexReason.js`
203
+ Exports
204
+ - `knexReason`
205
+ Local functions
206
+ - `exported(node)`
207
+ - `namedFunction(node)`
208
+ - `knexLines(sourceCode, site)`
209
+ - `reasonProblem(lines)`
210
+
179
211
  ### `plugin/rules/namedRepeatedType.js`
180
212
  Exports
181
213
  - `namedRepeatedType`
@@ -187,6 +219,22 @@ Local functions
187
219
  - `typeKey(text, file, imports)`
188
220
  - `commentTypes(text)`
189
221
 
222
+ ### `plugin/rules/noDirectKnex.js`
223
+ Exports
224
+ - `noDirectKnex`
225
+ Local functions
226
+ - `namesKnex(node)`
227
+ - `namesBuilder(node)`
228
+ - `isReference(node)`
229
+ - `isTableText(node)`
230
+ - `namesTable(callee, first)`
231
+ - `isOtherLibrary(method, object, args)`
232
+ - `declaredValue(sourceCode, identifier)`
233
+ - `isSubqueryCallback(fn)`
234
+ - `inSubqueryCallback(node)`
235
+ - `namesTableArgument(sourceCode, first, strict, depth = 0)`
236
+ - `aliasesTable(sourceCode, callee, first)`
237
+
190
238
  ### `plugin/rules/noDualShape.js`
191
239
  Exports
192
240
  - `noDualShape`
@@ -224,6 +272,16 @@ Exports
224
272
  Local functions
225
273
  - `holdsVueState(sourceCode, value)`
226
274
 
275
+ ### `plugin/rules/noHandContext.js`
276
+ Exports
277
+ - `noHandContext`
278
+
279
+ ### `plugin/rules/noHandScope.js`
280
+ Exports
281
+ - `noHandScope`
282
+ Local functions
283
+ - `isWorkspaceColumn(node)`
284
+
227
285
  ### `plugin/rules/noIdempotency.js`
228
286
  Exports
229
287
  - `noIdempotency`
@@ -264,6 +322,14 @@ Exports
264
322
  Local functions
265
323
  - `exportedNames(node)`
266
324
 
325
+ ### `plugin/rules/noTransactionReader.js`
326
+ Exports
327
+ - `noTransactionReader`
328
+ Local functions
329
+ - `isKnexValue(node)`
330
+ - `isOptionsObject(node)`
331
+ - `txOptionsParameter(node)`
332
+
267
333
  ### `plugin/rules/oneLineAction.js`
268
334
  Exports
269
335
  - `oneLineAction`
@@ -304,6 +370,13 @@ Exports
304
370
  Local functions
305
371
  - `positionalCollaboratorDefaults(fn, visitorKeys)`
306
372
 
373
+ ### `plugin/rules/sqlLiteral.js`
374
+ Exports
375
+ - `sqlLiteral`
376
+ Local functions
377
+ - `sqlMethod(node)`
378
+ - `shortText(sourceCode, node)`
379
+
307
380
  ### `plugin/rules/typedDependencies.js`
308
381
  Exports
309
382
  - `typedDependencies`
@@ -321,6 +394,7 @@ Local functions
321
394
  Exports
322
395
  - `ABSENT_DEFAULT`
323
396
  - `CLIENT_GUIDE_URL`
397
+ - `DATA_ACCESS_GUIDE_URL`
324
398
  - `GUIDE_URL`
325
399
  - `compactText(sourceCode, node)`
326
400
  - `createReporter(context, ruleName)`