json-rest-api 1.0.22 → 1.0.24

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 (290) hide show
  1. package/CLAUDE.md +1 -2
  2. package/JSKIT_BACKEND_MIGRATION_TRACKER.txt +180 -0
  3. package/README.md +22 -1
  4. package/SINGLE_VALIDATION_CONTRACT_TODO.txt +172 -0
  5. package/docs/API.md +196 -38
  6. package/docs/COMPARISON.md +2 -2
  7. package/docs/GUIDE/GUIDE_1_Initial_Setup.md +111 -5
  8. package/docs/GUIDE/GUIDE_2_2_Manipulating_And_Searching_Tables.md +5 -1
  9. package/docs/GUIDE/GUIDE_2_7_Pagination_And_Ordering.md +3 -1
  10. package/docs/GUIDE/GUIDE_2_8_Effects_of_PUT_and_PATCH.md +12 -60
  11. package/docs/GUIDE/GUIDE_2_Data_And_Relations.md +2 -2
  12. package/docs/GUIDE/GUIDE_3_Field_Transformations.md +5 -1
  13. package/docs/GUIDE/GUIDE_7_Hooks_Data_Management_And_Plugins.md +2 -0
  14. package/docs/GUIDE/GUIDE_X_Autofiltering.md +355 -0
  15. package/docs/GUIDE/GUIDE_X_Fastify.md +78 -0
  16. package/docs/GUIDE/GUIDE_X_Knex_Schema_And_Migrations.md +370 -0
  17. package/docs/GUIDE/GUIDE_X_Query_Projections.md +159 -0
  18. package/docs/GUIDE/GUIDE_X_Writing_Plugins.md +199 -0
  19. package/docs/GUIDE/index.md +18 -9
  20. package/docs/QUICKSTART.md +5 -1
  21. package/docs/index.md +1 -1
  22. package/index.js +3 -2
  23. package/lib/enhanced-logger.js +1 -1
  24. package/package.json +6 -2
  25. package/plugins/core/bulk-operations-plugin.js +26 -34
  26. package/plugins/core/connectors/express-plugin.js +97 -190
  27. package/plugins/core/connectors/fastify-plugin.js +206 -0
  28. package/plugins/core/connectors/lib/busboy-detector.js +4 -4
  29. package/plugins/core/connectors/lib/connector-core.js +195 -0
  30. package/plugins/core/connectors/lib/transport-http-helpers.js +122 -0
  31. package/plugins/core/connectors/lib/transport-route-schemas.js +92 -0
  32. package/plugins/core/lib/anyapi/schema-utils.js +43 -4
  33. package/plugins/core/lib/anyapi/utils/descriptor-helpers.js +4 -1
  34. package/plugins/core/lib/dbIntrospection.js +1078 -0
  35. package/plugins/core/lib/dbTablesOperations.js +1111 -160
  36. package/plugins/core/lib/querying/knex-cross-table-search.js +0 -7
  37. package/plugins/core/lib/querying/knex-json-api-transformers-querying.js +5 -3
  38. package/plugins/core/lib/querying/knex-process-includes.js +3 -4
  39. package/plugins/core/lib/querying/knex-query-helpers.js +21 -76
  40. package/plugins/core/lib/querying/knex-relationship-includes.js +468 -215
  41. package/plugins/core/lib/querying/query-builder-utils.js +19 -0
  42. package/plugins/core/lib/querying/query-field-sort-helpers.js +135 -0
  43. package/plugins/core/lib/querying/sort-helpers.js +33 -0
  44. package/plugins/core/lib/querying/storage-adapter-utils.js +51 -0
  45. package/plugins/core/lib/querying/url-helpers.js +8 -2
  46. package/plugins/core/lib/querying-writing/compile-schemas.js +20 -5
  47. package/plugins/core/lib/querying-writing/knex-field-helpers.js +83 -14
  48. package/plugins/core/lib/querying-writing/knex-json-api-transformers.js +13 -12
  49. package/plugins/core/lib/querying-writing/query-field-helpers.js +88 -0
  50. package/plugins/core/lib/querying-writing/request-contracts.js +590 -0
  51. package/plugins/core/lib/querying-writing/resource-id-normalization.js +131 -0
  52. package/plugins/core/lib/querying-writing/schema-helpers.js +0 -2
  53. package/plugins/core/lib/querying-writing/simplified-helpers.js +4 -11
  54. package/plugins/core/lib/storage/canonical-storage-mapping.js +133 -0
  55. package/plugins/core/lib/storage/storage-adapter.js +82 -4
  56. package/plugins/core/lib/storage/storage-mapping.js +274 -0
  57. package/plugins/core/lib/writing/many-to-many-manipulations.js +4 -2
  58. package/plugins/core/rest-api-anyapi-knex-plugin.js +531 -312
  59. package/plugins/core/rest-api-autofilter-plugin.js +414 -0
  60. package/plugins/core/rest-api-knex-plugin.js +271 -226
  61. package/plugins/core/rest-api-plugin-hooks/register-relationship-routes.js +10 -5
  62. package/plugins/core/rest-api-plugin-hooks/register-scope-routes.js +12 -6
  63. package/plugins/core/rest-api-plugin-hooks/turn-scope-init-into-vars.js +1 -0
  64. package/plugins/core/rest-api-plugin-methods/apply-query-filters.js +41 -0
  65. package/plugins/core/rest-api-plugin-methods/common.js +148 -92
  66. package/plugins/core/rest-api-plugin-methods/delete-relationship.js +11 -2
  67. package/plugins/core/rest-api-plugin-methods/delete.js +6 -1
  68. package/plugins/core/rest-api-plugin-methods/enrich-attributes.js +6 -1
  69. package/plugins/core/rest-api-plugin-methods/get-related.js +7 -2
  70. package/plugins/core/rest-api-plugin-methods/get-relationship.js +7 -2
  71. package/plugins/core/rest-api-plugin-methods/get.js +29 -14
  72. package/plugins/core/rest-api-plugin-methods/patch-relationship.js +10 -3
  73. package/plugins/core/rest-api-plugin-methods/patch.js +56 -12
  74. package/plugins/core/rest-api-plugin-methods/post-relationship.js +11 -2
  75. package/plugins/core/rest-api-plugin-methods/post.js +21 -8
  76. package/plugins/core/rest-api-plugin-methods/put.js +73 -21
  77. package/plugins/core/rest-api-plugin-methods/query.js +15 -53
  78. package/plugins/core/rest-api-plugin-methods/release.js +0 -2
  79. package/plugins/core/rest-api-plugin.js +6 -0
  80. package/plugins/core/rest-api-positioning-plugin.js +2 -5
  81. package/plugins/core/rest-api-query-projections-plugin.js +130 -0
  82. package/plugins/core/socketio-plugin.js +1 -4
  83. package/plugins/storage/local-storage.js +1 -1
  84. package/plugins/storage/s3-storage.js +5 -2
  85. package/quickTest.js +1 -0
  86. package/scripts/run-docs.js +80 -84
  87. package/test-debug.js +1 -1
  88. package/tests/README.md +7 -0
  89. package/tests/anyapi-basic.test.js +3 -0
  90. package/tests/autofilter.test.js +463 -0
  91. package/tests/custom-id-mysql-returning-fallback.test.js +128 -0
  92. package/tests/custom-id-simplified-post.test.js +75 -0
  93. package/tests/custom-idproperty-relationships.test.js +33 -0
  94. package/tests/db-introspection.test.js +521 -0
  95. package/tests/db-table-operations.test.js +786 -0
  96. package/tests/fastify-plugin.test.js +156 -0
  97. package/tests/field-getters.test.js +1 -2
  98. package/tests/field-setters.test.js +0 -4
  99. package/tests/fixtures/api-configs.js +278 -176
  100. package/tests/helpers/fake-fastify.js +99 -0
  101. package/tests/http-connectors-parity.test.js +235 -0
  102. package/tests/id-normalization.test.js +444 -0
  103. package/tests/logical-id-write-validation.test.js +151 -0
  104. package/tests/pagination-cursor-multifield.test.js +11 -11
  105. package/tests/projected-fields.test.js +319 -0
  106. package/tests/relationships.test.js +3 -3
  107. package/tests/searchschema-knex-behavior.test.js +187 -0
  108. package/tests/searchschema-merge.test.js +21 -69
  109. package/tests/storage-mapping.test.js +259 -0
  110. package/audit/00-charter.md +0 -103
  111. package/audit/01-scope-map.md +0 -84
  112. package/audit/02-coverage-matrix.csv +0 -174
  113. package/audit/03-invariants.md +0 -123
  114. package/audit/04-standards-rubric.md +0 -56
  115. package/audit/05-competitor-rubric.md +0 -77
  116. package/audit/06-findings.md +0 -160
  117. package/audit/07-risk-register.csv +0 -10
  118. package/audit/08-remediation-roadmap.md +0 -177
  119. package/audit/09-signoff-check.md +0 -23
  120. package/audit/10-final-synthesis.md +0 -29
  121. package/audit/evidence/code/all-files-json-rest-api.txt +0 -168
  122. package/audit/evidence/code/all-files-json-rest-schema.txt +0 -12
  123. package/audit/evidence/code/boundary-leak-checks.txt +0 -72
  124. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__bulk-operations-plugin.js.txt +0 -480
  125. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__connectors__express-plugin.js.txt +0 -532
  126. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__connectors__lib__busboy-detector.js.txt +0 -175
  127. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__connectors__lib__formidable-detector.js.txt +0 -138
  128. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__connectors__lib__request-helpers.js.txt +0 -222
  129. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__file-handling-plugin.js.txt +0 -342
  130. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__dbTablesOperations.js.txt +0 -304
  131. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__fractional-positioning.js.txt +0 -188
  132. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__compile-schemas.js.txt +0 -336
  133. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__connectors-query-parser.js.txt +0 -165
  134. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__database-capabilities.js.txt +0 -265
  135. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__database-value-normalizers.js.txt +0 -369
  136. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__default-data-helpers.js.txt +0 -72
  137. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__field-utils.js.txt +0 -139
  138. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__knex-constants.js.txt +0 -45
  139. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__knex-field-helpers.js.txt +0 -396
  140. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__knex-json-api-transformers.js.txt +0 -162
  141. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__payload-validators.js.txt +0 -1314
  142. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__schema-helpers.js.txt +0 -488
  143. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__scope-validations.js.txt +0 -484
  144. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__simplified-helpers.js.txt +0 -857
  145. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-cross-table-search.js.txt +0 -565
  146. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-json-api-transformers-querying.js.txt +0 -485
  147. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-pagination-helpers.js.txt +0 -560
  148. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-process-includes.js.txt +0 -167
  149. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-query-helpers-base.js.txt +0 -109
  150. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-query-helpers.js.txt +0 -1064
  151. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-relationship-includes.js.txt +0 -1983
  152. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-window-queries.js.txt +0 -328
  153. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__url-helpers.js.txt +0 -119
  154. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__storage__storage-adapter.js.txt +0 -160
  155. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__writing__many-to-many-manipulations.js.txt +0 -300
  156. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__writing__relationship-processor.js.txt +0 -245
  157. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-access.js.txt +0 -459
  158. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-cors-plugin.js.txt +0 -237
  159. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-knex-plugin.js.txt +0 -1135
  160. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-multihome-plugin.js.txt +0 -314
  161. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-hooks__compile-resource-schemas.js.txt +0 -7
  162. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-hooks__register-relationship-routes.js.txt +0 -71
  163. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-hooks__register-scope-routes.js.txt +0 -102
  164. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-hooks__turn-scope-init-into-vars.js.txt +0 -49
  165. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-hooks__validate-include-configurations.js.txt +0 -39
  166. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__add-route.js.txt +0 -23
  167. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__check-permissions.js.txt +0 -13
  168. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__common.js.txt +0 -639
  169. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__delete-relationship.js.txt +0 -117
  170. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__delete.js.txt +0 -104
  171. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__enrich-attributes.js.txt +0 -199
  172. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__get-related.js.txt +0 -353
  173. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__get-relationship.js.txt +0 -61
  174. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__get.js.txt +0 -184
  175. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__patch-relationship.js.txt +0 -55
  176. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__patch.js.txt +0 -191
  177. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__post-relationship.js.txt +0 -110
  178. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__post.js.txt +0 -168
  179. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__put.js.txt +0 -253
  180. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__query.js.txt +0 -207
  181. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__release.js.txt +0 -12
  182. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin.js.txt +0 -165
  183. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-positioning-plugin.js.txt +0 -668
  184. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__socketio-plugin.js.txt +0 -621
  185. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__storage__local-storage.js.txt +0 -218
  186. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__storage__s3-storage.js.txt +0 -124
  187. package/audit/evidence/code/critical-pass1/json-rest-schema__src__CorePlugin.js.txt +0 -269
  188. package/audit/evidence/code/critical-pass1/json-rest-schema__src__Schema.js.txt +0 -242
  189. package/audit/evidence/code/critical-pass1/json-rest-schema__src__index.js.txt +0 -77
  190. package/audit/evidence/code/critical-pass1-risk-keywords.txt +0 -238
  191. package/audit/evidence/code/critical-pass1-summary.csv +0 -67
  192. package/audit/evidence/code/critical-pass2-summary.csv +0 -67
  193. package/audit/evidence/code/early-silent-zones-no-test-token.txt +0 -57
  194. package/audit/evidence/code/error-model-signals.txt +0 -98
  195. package/audit/evidence/code/git-files-json-rest-api.txt +0 -171
  196. package/audit/evidence/code/git-files-json-rest-schema.txt +0 -27
  197. package/audit/evidence/code/hook-flow-signals.txt +0 -282
  198. package/audit/evidence/code/idproperty-signals.txt +0 -157
  199. package/audit/evidence/code/import-cycles-non-anyapi.txt +0 -3
  200. package/audit/evidence/code/import-hotspots-non-anyapi.txt +0 -96
  201. package/audit/evidence/code/imports-json-rest-api.txt +0 -354
  202. package/audit/evidence/code/imports-json-rest-schema.txt +0 -15
  203. package/audit/evidence/code/in-scope-files-json-rest-api.txt +0 -160
  204. package/audit/evidence/code/in-scope-files-json-rest-schema.txt +0 -13
  205. package/audit/evidence/code/non-anyapi-core-files.txt +0 -101
  206. package/audit/evidence/code/permission-signals.txt +0 -193
  207. package/audit/evidence/code/query-include-signals.txt +0 -687
  208. package/audit/evidence/code/transaction-signals.txt +0 -28
  209. package/audit/evidence/code/validation-signals.txt +0 -650
  210. package/audit/evidence/code/write-path-signals.txt +0 -61
  211. package/audit/evidence/docs/docs-claims-signals.txt +0 -1075
  212. package/audit/evidence/docs/schema-docs-claims-signals.txt +0 -179
  213. package/audit/evidence/external/corpus-freeze.md +0 -21
  214. package/audit/evidence/external/npm-competitor-metadata.txt +0 -70
  215. package/audit/evidence/external/npm-download-signals.txt +0 -23
  216. package/audit/evidence/external/npm-jsonapi-server.txt +0 -8
  217. package/audit/evidence/external/npm-modern-jsonapi-metadata.txt +0 -38
  218. package/audit/evidence/external/readme-fortune-signals.txt +0 -26
  219. package/audit/evidence/external/readme-fortune.md +0 -165
  220. package/audit/evidence/external/readme-json-api-serializer-signals.txt +0 -80
  221. package/audit/evidence/external/readme-json-api-serializer.md +0 -690
  222. package/audit/evidence/external/readme-jsonapi-serde-server-signals.txt +0 -0
  223. package/audit/evidence/external/readme-jsonapi-serde-server.md +0 -22
  224. package/audit/evidence/external/readme-jsonapi-serializer-signals.txt +0 -63
  225. package/audit/evidence/external/readme-jsonapi-serializer.md +0 -315
  226. package/audit/evidence/external/readme-jsonapi-server-signals.txt +0 -19
  227. package/audit/evidence/external/readme-jsonapi-server.md +0 -104
  228. package/audit/evidence/external/readme-nestjs-json-api-signals.txt +0 -4
  229. package/audit/evidence/external/readme-nestjs-json-api.md +0 -94
  230. package/audit/evidence/external/readme-yaser-json-api-nestjs-signals.txt +0 -47
  231. package/audit/evidence/external/readme-yaser-json-api-nestjs.md +0 -447
  232. package/audit/evidence/external/standard-jsonapi-snippets.txt +0 -84
  233. package/audit/evidence/external/standard-rfc-snippets.txt +0 -168
  234. package/audit/evidence/external/standards-sources.txt +0 -6
  235. package/audit/evidence/runtime/baseline-commits.txt +0 -2
  236. package/audit/evidence/runtime/db-adapter-assumptions.txt +0 -3
  237. package/audit/evidence/runtime/environment.txt +0 -4
  238. package/audit/evidence/runtime/invariant-runtime-mapping.md +0 -38
  239. package/audit/evidence/runtime/probe-patch-relationship-error.exitcode +0 -1
  240. package/audit/evidence/runtime/probe-patch-relationship-error.log +0 -76
  241. package/audit/evidence/runtime/probe-patch-relationship-error.mjs +0 -67
  242. package/audit/evidence/runtime/probe-patch-relationship-referenceerror.exitcode +0 -1
  243. package/audit/evidence/runtime/probe-patch-relationship-referenceerror.log +0 -62
  244. package/audit/evidence/runtime/probe-patch-relationship-referenceerror.mjs +0 -47
  245. package/audit/evidence/runtime/test-exitcodes.txt +0 -4
  246. package/audit/evidence/runtime/test-summary.md +0 -107
  247. package/audit/evidence/runtime/trace-anchors.txt +0 -61
  248. package/audit/evidence/tests/access-multitenancy-test-signals.txt +0 -125
  249. package/audit/evidence/tests/failing-tests-summary.txt +0 -25
  250. package/audit/evidence/tests/npm-test-json-rest-api.exitcode +0 -1
  251. package/audit/evidence/tests/npm-test-json-rest-api.log +0 -5885
  252. package/audit/evidence/tests/npm-test-json-rest-schema.exitcode +0 -1
  253. package/audit/evidence/tests/npm-test-json-rest-schema.log +0 -356
  254. package/audit/evidence/tests/query-include-test-signals.txt +0 -948
  255. package/audit/evidence/tests/relationship-test-signals.txt +0 -223
  256. package/audit/evidence/tests/skipped-tests.txt +0 -10
  257. package/audit/evidence/tests/test-suite-list-non-anyapi.txt +0 -30
  258. package/audit/evidence/tests/test-suite-list.txt +0 -32
  259. package/audit/subsystems/docs-drift.md +0 -49
  260. package/audit/subsystems/pass2-cross-review.md +0 -131
  261. package/audit/subsystems/plugins-access.md +0 -51
  262. package/audit/subsystems/plugins-bulk.md +0 -50
  263. package/audit/subsystems/plugins-cors.md +0 -48
  264. package/audit/subsystems/plugins-file.md +0 -53
  265. package/audit/subsystems/plugins-multihome.md +0 -50
  266. package/audit/subsystems/plugins-positioning.md +0 -54
  267. package/audit/subsystems/plugins-socketio.md +0 -50
  268. package/audit/subsystems/query-engine.md +0 -61
  269. package/audit/subsystems/relationships.md +0 -55
  270. package/audit/subsystems/rest-orchestration.md +0 -66
  271. package/audit/subsystems/schema-core.md +0 -64
  272. package/audit/subsystems/storage-knex.md +0 -57
  273. package/audit/subsystems/tests.md +0 -48
  274. package/audit/subsystems/transport-express.md +0 -55
  275. package/audit/traces/trace-read-get.md +0 -22
  276. package/audit/traces/trace-read-query.md +0 -25
  277. package/audit/traces/trace-relationship-endpoints.md +0 -31
  278. package/audit/traces/trace-write-delete.md +0 -17
  279. package/audit/traces/trace-write-patch.md +0 -26
  280. package/audit/traces/trace-write-post.md +0 -22
  281. package/audit/traces/trace-write-put.md +0 -23
  282. package/docs/GUIDE/GUIDE_4_Authentication_And_Permissions.md +0 -707
  283. package/docs/GUIDE/GUIDE_X_Multihome.md +0 -666
  284. package/plugins/core/lib/querying-writing/payload-validators.js +0 -1314
  285. package/plugins/core/rest-api-access.js +0 -459
  286. package/plugins/core/rest-api-multihome-plugin.js +0 -314
  287. package/tests/multihome.test.js +0 -553
  288. package/tests/multihome.test.js.bak +0 -550
  289. package/tests/ownership-optout.test.js +0 -76
  290. package/tests/rest-api-access.test.js +0 -206
@@ -1,101 +0,0 @@
1
- lib/enhanced-logger.js
2
- lib/error-formatter.js
3
- lib/rest-api-errors.js
4
- plugins/core/bulk-operations-plugin.js
5
- plugins/core/connectors/express-plugin.js
6
- plugins/core/connectors/lib/busboy-detector.js
7
- plugins/core/connectors/lib/formidable-detector.js
8
- plugins/core/connectors/lib/request-helpers.js
9
- plugins/core/file-handling-plugin.js
10
- plugins/core/lib/dbTablesOperations.js
11
- plugins/core/lib/fractional-positioning.js
12
- plugins/core/lib/querying-writing/compile-schemas.js
13
- plugins/core/lib/querying-writing/connectors-query-parser.js
14
- plugins/core/lib/querying-writing/database-capabilities.js
15
- plugins/core/lib/querying-writing/database-value-normalizers.js
16
- plugins/core/lib/querying-writing/default-data-helpers.js
17
- plugins/core/lib/querying-writing/field-utils.js
18
- plugins/core/lib/querying-writing/knex-constants.js
19
- plugins/core/lib/querying-writing/knex-field-helpers.js
20
- plugins/core/lib/querying-writing/knex-json-api-transformers.js
21
- plugins/core/lib/querying-writing/payload-validators.js
22
- plugins/core/lib/querying-writing/schema-helpers.js
23
- plugins/core/lib/querying-writing/scope-validations.js
24
- plugins/core/lib/querying-writing/simplified-helpers.js
25
- plugins/core/lib/querying/knex-cross-table-search.js
26
- plugins/core/lib/querying/knex-json-api-transformers-querying.js
27
- plugins/core/lib/querying/knex-pagination-helpers.js
28
- plugins/core/lib/querying/knex-process-includes.js
29
- plugins/core/lib/querying/knex-query-helpers-base.js
30
- plugins/core/lib/querying/knex-query-helpers.js
31
- plugins/core/lib/querying/knex-relationship-includes.js
32
- plugins/core/lib/querying/knex-window-queries.js
33
- plugins/core/lib/querying/url-helpers.js
34
- plugins/core/lib/storage/storage-adapter.js
35
- plugins/core/lib/writing/knex-json-api-transformers-writing.js
36
- plugins/core/lib/writing/many-to-many-manipulations.js
37
- plugins/core/lib/writing/relationship-processor.js
38
- plugins/core/rest-api-access.js
39
- plugins/core/rest-api-cors-plugin.js
40
- plugins/core/rest-api-knex-plugin.js
41
- plugins/core/rest-api-label-plugin.js
42
- plugins/core/rest-api-multihome-plugin.js
43
- plugins/core/rest-api-plugin-hooks/compile-resource-schemas.js
44
- plugins/core/rest-api-plugin-hooks/register-relationship-routes.js
45
- plugins/core/rest-api-plugin-hooks/register-scope-routes.js
46
- plugins/core/rest-api-plugin-hooks/turn-scope-init-into-vars.js
47
- plugins/core/rest-api-plugin-hooks/validate-include-configurations.js
48
- plugins/core/rest-api-plugin-methods/add-route.js
49
- plugins/core/rest-api-plugin-methods/check-permissions.js
50
- plugins/core/rest-api-plugin-methods/common.js
51
- plugins/core/rest-api-plugin-methods/delete-relationship.js
52
- plugins/core/rest-api-plugin-methods/delete.js
53
- plugins/core/rest-api-plugin-methods/enrich-attributes.js
54
- plugins/core/rest-api-plugin-methods/get-related.js
55
- plugins/core/rest-api-plugin-methods/get-relationship.js
56
- plugins/core/rest-api-plugin-methods/get.js
57
- plugins/core/rest-api-plugin-methods/patch-relationship.js
58
- plugins/core/rest-api-plugin-methods/patch.js
59
- plugins/core/rest-api-plugin-methods/post-relationship.js
60
- plugins/core/rest-api-plugin-methods/post.js
61
- plugins/core/rest-api-plugin-methods/put.js
62
- plugins/core/rest-api-plugin-methods/query.js
63
- plugins/core/rest-api-plugin-methods/release.js
64
- plugins/core/rest-api-plugin.js
65
- plugins/core/rest-api-positioning-plugin.js
66
- plugins/core/socketio-plugin.js
67
- tests/README.md
68
- tests/TEST_TEMPLATE.test.js
69
- tests/bulk-operations.test.js
70
- tests/computed-fields.test.js
71
- tests/cors.test.js
72
- tests/curl.test.js
73
- tests/custom-idproperty-relationships.test.js
74
- tests/field-getters.test.js
75
- tests/field-setters.test.js
76
- tests/fixtures/api-configs.js
77
- tests/helpers/storage-mode.js
78
- tests/helpers/test-utils.js
79
- tests/include-depth-validation.test.js
80
- tests/includes.test.js
81
- tests/multihome.test.js
82
- tests/nested-includes.test.js
83
- tests/ownership-optout.test.js
84
- tests/pagination-cursor-multifield.test.js
85
- tests/pagination-enhanced.test.js
86
- tests/polymorphic-relationships.test.js
87
- tests/polymorphic-simple.test.js
88
- tests/positioning-advanced.test.js
89
- tests/positioning-extended.test.js
90
- tests/positioning-multifilter.test.js
91
- tests/positioning.test.js
92
- tests/queries.test.js
93
- tests/query-limits.test.js
94
- tests/relationship-endpoints.test.js
95
- tests/relationships.test.js
96
- tests/rest-api-access.test.js
97
- tests/rest-api.test.js
98
- tests/searchschema-merge.test.js
99
- tests/socketio.test.js
100
- tests/test-development-guide.md
101
- tests/virtual-fields.test.js
@@ -1,193 +0,0 @@
1
- plugins/core/rest-api-plugin.js:18:import checkPermissionsMethod from './rest-api-plugin-methods/check-permissions.js'
2
- plugins/core/rest-api-plugin.js:150: addScopeMethod('checkPermissions', checkPermissionsMethod)
3
- plugins/core/rest-api-multihome-plugin.js:2: name: 'multihome',
4
- plugins/core/rest-api-multihome-plugin.js:11: const multihomeOptions = pluginOptions || {}
5
- plugins/core/rest-api-multihome-plugin.js:14: vars.multihome = {
6
- plugins/core/rest-api-multihome-plugin.js:15: field: multihomeOptions.field || 'multihome_id',
7
- plugins/core/rest-api-multihome-plugin.js:16: excludeResources: multihomeOptions.excludeResources || ['system_migrations', 'system_logs'],
8
- plugins/core/rest-api-multihome-plugin.js:17: requireAuth: multihomeOptions.requireAuth !== undefined ? multihomeOptions.requireAuth : true,
9
- plugins/core/rest-api-multihome-plugin.js:18: allowMissing: multihomeOptions.allowMissing || false
10
- plugins/core/rest-api-multihome-plugin.js:52: // Don't use 'www' or 'api' as tenant IDs
11
- plugins/core/rest-api-multihome-plugin.js:58: return request.headers?.['x-multihome-id'] || null
12
- plugins/core/rest-api-multihome-plugin.js:62: helpers.extractMultihomeId = multihomeOptions.extractor || defaultSubdomainExtractor
13
- plugins/core/rest-api-multihome-plugin.js:64: // Hook into transport layer to extract multihome_id
14
- plugins/core/rest-api-multihome-plugin.js:65: addHook('transport:request', 'extract-multihome-id', {}, async ({ context, request, helpers }) => {
15
- plugins/core/rest-api-multihome-plugin.js:66: // Extract multihome_id using configured extractor
16
- plugins/core/rest-api-multihome-plugin.js:67: const multihomeId = helpers.extractMultihomeId(request)
17
- plugins/core/rest-api-multihome-plugin.js:69: if (multihomeId) {
18
- plugins/core/rest-api-multihome-plugin.js:72: context.auth.multihome_id = multihomeId
19
- plugins/core/rest-api-multihome-plugin.js:75: multihome_id: multihomeId,
20
- plugins/core/rest-api-multihome-plugin.js:78: } else if (vars.multihome.requireAuth) {
21
- plugins/core/rest-api-multihome-plugin.js:79: log.warn('No multihome ID found in request', {
22
- plugins/core/rest-api-multihome-plugin.js:86: // Validate that resources have multihome field when added
23
- plugins/core/rest-api-multihome-plugin.js:87: addHook('scope:added', 'validate-multihome-field', {}, ({ context, vars }) => {
24
- plugins/core/rest-api-multihome-plugin.js:91: if (vars.multihome.excludeResources.includes(scopeName)) {
25
- plugins/core/rest-api-multihome-plugin.js:92: log.debug(`Resource ${scopeName} excluded from multihome validation`)
26
- plugins/core/rest-api-multihome-plugin.js:96: // Check if schema has multihome field
27
- plugins/core/rest-api-multihome-plugin.js:98: if (schema && !schema[vars.multihome.field]) {
28
- plugins/core/rest-api-multihome-plugin.js:99: if (vars.multihome.allowMissing) {
29
- plugins/core/rest-api-multihome-plugin.js:100: log.warn(`Resource ${scopeName} missing ${vars.multihome.field} field - multihome filtering disabled for this
30
- plugins/core/rest-api-multihome-plugin.js:104: `Resource '${scopeName}' must have '${vars.multihome.field}' field in schema for multi-tenancy`
31
- plugins/core/rest-api-multihome-plugin.js:111: log.debug('Registering multihome filter hook')
32
- plugins/core/rest-api-multihome-plugin.js:112: addHook('knexQueryFiltering', 'multihome-filter', {}, async ({ context, vars }) => {
33
- plugins/core/rest-api-multihome-plugin.js:117: if (vars.multihome.excludeResources.includes(scopeName)) {
34
- plugins/core/rest-api-multihome-plugin.js:118: log.trace(`Skipping multihome filter for excluded resource: ${scopeName}`)
35
- plugins/core/rest-api-multihome-plugin.js:122: // Skip if no multihome context
36
- plugins/core/rest-api-multihome-plugin.js:123: if (!context.auth?.multihome_id) {
37
- plugins/core/rest-api-multihome-plugin.js:124: if (vars.multihome.requireAuth) {
38
- plugins/core/rest-api-multihome-plugin.js:125: throw new Error('No multihome context available - cannot execute query')
39
- plugins/core/rest-api-multihome-plugin.js:130: log.debug('Applying multihome tenant filter', {
40
- plugins/core/rest-api-multihome-plugin.js:133: tenant: context.auth.multihome_id,
41
- plugins/core/rest-api-multihome-plugin.js:136: // Check if this resource has multihome field
42
- plugins/core/rest-api-multihome-plugin.js:138: const hasMultihomeField = scope?.vars?.schemaInfo?.schemaStructure?.[vars.multihome.field]
43
- plugins/core/rest-api-multihome-plugin.js:141: if (vars.multihome.allowMissing) {
44
- plugins/core/rest-api-multihome-plugin.js:142: log.trace(`Resource ${scopeName} has no ${vars.multihome.field} field - skipping filter`)
45
- plugins/core/rest-api-multihome-plugin.js:145: throw new Error(`Resource ${scopeName} missing required ${vars.multihome.field} field`)
46
- plugins/core/rest-api-multihome-plugin.js:155: field: vars.multihome.field,
47
- plugins/core/rest-api-multihome-plugin.js:161: const tenantValue = translateFilterValue({
48
- plugins/core/rest-api-multihome-plugin.js:162: field: vars.multihome.field,
49
- plugins/core/rest-api-multihome-plugin.js:163: value: context.auth.multihome_id,
50
- plugins/core/rest-api-multihome-plugin.js:168: if (tenantValue === null) {
51
- plugins/core/rest-api-multihome-plugin.js:171: query.where(columnRef, tenantValue)
52
- plugins/core/rest-api-multihome-plugin.js:174: log.trace('Added multihome filter', {
53
- plugins/core/rest-api-multihome-plugin.js:177: multihome_id: context.auth.multihome_id
54
- plugins/core/rest-api-multihome-plugin.js:181: // Set multihome_id on new records
55
- plugins/core/rest-api-multihome-plugin.js:182: addHook('beforeSchemaValidate', 'set-multihome-id', {}, async ({ context, scopeName, vars }) => {
56
- plugins/core/rest-api-multihome-plugin.js:184: if (vars.multihome.excludeResources.includes(scopeName)) {
57
- plugins/core/rest-api-multihome-plugin.js:188: // Skip if no multihome context
58
- plugins/core/rest-api-multihome-plugin.js:189: if (!context.auth?.multihome_id) {
59
- plugins/core/rest-api-multihome-plugin.js:190: if (vars.multihome.requireAuth) {
60
- plugins/core/rest-api-multihome-plugin.js:191: throw new Error('Cannot create record without multihome context')
61
- plugins/core/rest-api-multihome-plugin.js:196: // Check if this resource has multihome field
62
- plugins/core/rest-api-multihome-plugin.js:198: const hasMultihomeField = scope?.vars?.schemaInfo?.schemaStructure?.[vars.multihome.field]
63
- plugins/core/rest-api-multihome-plugin.js:201: if (!vars.multihome.allowMissing) {
64
- plugins/core/rest-api-multihome-plugin.js:202: throw new Error(`Resource ${scopeName} missing required ${vars.multihome.field} field`)
65
- plugins/core/rest-api-multihome-plugin.js:207: // For POST, always set multihome_id
66
- plugins/core/rest-api-multihome-plugin.js:210: context.inputRecord.data.attributes[vars.multihome.field] = context.auth.multihome_id
67
- plugins/core/rest-api-multihome-plugin.js:212: log.debug('Set multihome_id on new record', {
68
- plugins/core/rest-api-multihome-plugin.js:214: multihome_id: context.auth.multihome_id
69
- plugins/core/rest-api-multihome-plugin.js:218: // For PUT/PATCH, validate multihome_id if provided
70
- plugins/core/rest-api-multihome-plugin.js:220: context.inputRecord.data.attributes?.[vars.multihome.field]) {
71
- plugins/core/rest-api-multihome-plugin.js:221: const providedId = context.inputRecord.data.attributes[vars.multihome.field]
72
- plugins/core/rest-api-multihome-plugin.js:222: if (providedId !== context.auth.multihome_id) {
73
- plugins/core/rest-api-multihome-plugin.js:224: `Cannot set ${vars.multihome.field} to '${providedId}' - must match current context '${context.auth.multihome_id}'`
74
- plugins/core/rest-api-multihome-plugin.js:230: // Add checkPermissions hook to enforce tenant isolation
75
- plugins/core/rest-api-multihome-plugin.js:232: addHook('checkPermissions', 'multihome-check-permissions', {}, async ({ context, scopeName }) => {
76
- plugins/core/rest-api-multihome-plugin.js:239: if (vars.multihome.excludeResources.includes(scopeName)) {
77
- plugins/core/rest-api-multihome-plugin.js:243: // Skip if no multihome context
78
- plugins/core/rest-api-multihome-plugin.js:244: if (!auth?.multihome_id) {
79
- plugins/core/rest-api-multihome-plugin.js:245: if (vars.multihome.requireAuth) {
80
- plugins/core/rest-api-multihome-plugin.js:246: throw new Error('No multihome context available')
81
- plugins/core/rest-api-multihome-plugin.js:251: // Get the scope to check if it has multihome field
82
- plugins/core/rest-api-multihome-plugin.js:253: const hasMultihomeField = scope?.vars?.schemaInfo?.schemaStructure?.[vars.multihome.field]
83
- plugins/core/rest-api-multihome-plugin.js:256: return // Resource doesn't support multihome
84
- plugins/core/rest-api-multihome-plugin.js:259: // For operations on existing records, verify tenant ownership
85
- plugins/core/rest-api-multihome-plugin.js:261: // minimalRecord is in JSON:API format, so tenant_id is in attributes
86
- plugins/core/rest-api-multihome-plugin.js:262: const recordTenant = minimalRecord.attributes?.[vars.multihome.field]
87
- plugins/core/rest-api-multihome-plugin.js:263: const userTenant = auth.multihome_id
88
- plugins/core/rest-api-multihome-plugin.js:266: log.error('Multihome permission violation', {
89
- plugins/core/rest-api-multihome-plugin.js:281: const error = new Error('Access denied - insufficient permissions')
90
- plugins/core/rest-api-multihome-plugin.js:290: // doesn't exist due to tenant filtering in the GET operation that precedes them
91
- plugins/core/rest-api-multihome-plugin.js:292: // Add API method to get current multihome context
92
- plugins/core/rest-api-multihome-plugin.js:293: api.multihome = {
93
- plugins/core/rest-api-multihome-plugin.js:302: ...vars.multihome,
94
- plugins/core/rest-api-multihome-plugin.js:308: field: vars.multihome.field,
95
- plugins/core/rest-api-multihome-plugin.js:309: excludedResources: vars.multihome.excludeResources,
96
- plugins/core/rest-api-multihome-plugin.js:310: requireAuth: vars.multihome.requireAuth,
97
- plugins/core/rest-api-access.js:8: const ownershipOptions = pluginOptions.ownership || pluginOptions.autoOwnership || {}
98
- plugins/core/rest-api-access.js:11: ownership: {
99
- plugins/core/rest-api-access.js:12: enabled: ownershipOptions.enabled !== false,
100
- plugins/core/rest-api-access.js:13: field: ownershipOptions.field || 'user_id',
101
- plugins/core/rest-api-access.js:14: userResource: ownershipOptions.userResource || 'users',
102
- plugins/core/rest-api-access.js:15: excludeResources: ownershipOptions.excludeResources || [],
103
- plugins/core/rest-api-access.js:16: filterByOwner: ownershipOptions.filterByOwner !== false,
104
- plugins/core/rest-api-access.js:17: requireOwnership: ownershipOptions.requireOwnership || false
105
- plugins/core/rest-api-access.js:25: const ownershipField = () => config.ownership.field
106
- plugins/core/rest-api-access.js:27: // Minimal helper: treat ownerField false/null as ownership disabled (alias)
107
- plugins/core/rest-api-access.js:29: scopeOptions?.ownership === false ||
108
- plugins/core/rest-api-access.js:30: scopeOptions?.ownerField === false ||
109
- plugins/core/rest-api-access.js:31: scopeOptions?.ownerField === null
110
- plugins/core/rest-api-access.js:132: const field = scopeVars?.ownershipField || ownershipField()
111
- plugins/core/rest-api-access.js:135: const ownershipStatus = evaluateOwnership({
112
- plugins/core/rest-api-access.js:142: return ownershipStatus === 'match'
113
- plugins/core/rest-api-access.js:156: scope.vars.ownershipField = context.scopeOptions?.ownershipField
114
- plugins/core/rest-api-access.js:167: addHook('schema:enrich', 'rest-auth-auto-ownership-field', {}, ({ context }) => {
115
- plugins/core/rest-api-access.js:168: if (!config.ownership.enabled) return
116
- plugins/core/rest-api-access.js:170: if (config.ownership.excludeResources.includes(scopeName)) return
117
- plugins/core/rest-api-access.js:173: const field = ownershipField()
118
- plugins/core/rest-api-access.js:178: fields[field].belongsTo = config.ownership.userResource
119
- plugins/core/rest-api-access.js:188: belongsTo: config.ownership.userResource,
120
- plugins/core/rest-api-access.js:192: description: 'Automatically managed ownership field'
121
- plugins/core/rest-api-access.js:197: if (!config.ownership.enabled) return
122
- plugins/core/rest-api-access.js:198: if (config.ownership.excludeResources.includes(scopeName)) return
123
- plugins/core/rest-api-access.js:200: if (config.ownership.requireOwnership) {
124
- plugins/core/rest-api-access.js:208: const field = ownershipField()
125
- plugins/core/rest-api-access.js:213: const shouldSet = scopeOptions?.ownership === true || (scopeOptions?.ownership === undefined && hasField)
126
- plugins/core/rest-api-access.js:230: type: fieldSchema.belongsTo || config.ownership.userResource || 'users',
127
- plugins/core/rest-api-access.js:239: addHook('beforeProcessingPost', 'rest-auth-auto-set-owner', {}, ({ context, scopeName, scopes, scopeOptions }) => {
128
- plugins/core/rest-api-access.js:242: addHook('beforeProcessingPatch', 'rest-auth-auto-set-owner', {}, ({ context, scopeName, scopes, scopeOptions }) => {
129
- plugins/core/rest-api-access.js:245: addHook('beforeProcessingPut', 'rest-auth-auto-set-owner', {}, ({ context, scopeName, scopes, scopeOptions }) => {
130
- plugins/core/rest-api-access.js:249: addHook('knexQueryFiltering', 'rest-auth-filter-by-owner', { sequence: -40 }, ({ context, scopes, scopeOptions }) => {
131
- plugins/core/rest-api-access.js:250: if (!config.ownership.enabled || !config.ownership.filterByOwner) return
132
- plugins/core/rest-api-access.js:255: throw new Error('AccessPlugin: knexQuery must provide query and tableName for ownership filtering')
133
- plugins/core/rest-api-access.js:258: if (config.ownership.excludeResources.includes(scopeName)) return
134
- plugins/core/rest-api-access.js:260: if (config.ownership.requireOwnership) {
135
- plugins/core/rest-api-access.js:269: const field = ownershipField()
136
- plugins/core/rest-api-access.js:273: const shouldFilter = scopeOptions?.ownership === true || (scopeOptions?.ownership === undefined && hasField)
137
- plugins/core/rest-api-access.js:282: const ownerValue = translateFilterValue({ field, value: context.auth.userId, scopeName, hookContext: context })
138
- plugins/core/rest-api-access.js:284: if (ownerValue === null) {
139
- plugins/core/rest-api-access.js:287: query.where(columnRef, ownerValue)
140
- plugins/core/rest-api-access.js:291: addHook('checkPermissions', 'rest-auth-enforce', { sequence: -100 }, async ({ context, scope, scopeName }) => {
141
- plugins/core/rest-api-access.js:343: addHook('checkPermissions', 'rest-auth-check-get-ownership', { sequence: -80 }, ({ context, scope, scopeName, scopeOptions }) => {
142
- plugins/core/rest-api-access.js:344: if (!config.ownership.enabled || !config.ownership.filterByOwner) return
143
- plugins/core/rest-api-access.js:345: if (config.ownership.excludeResources.includes(scopeName)) return
144
- plugins/core/rest-api-access.js:354: const field = ownershipField()
145
- plugins/core/rest-api-access.js:357: const shouldCheck = scopeOptions?.ownership === true || (scopeOptions?.ownership === undefined && hasField)
146
- plugins/core/rest-api-access.js:374: const ownershipStatus = evaluateOwnership({
147
- plugins/core/rest-api-access.js:381: if (ownershipStatus === 'mismatch') {
148
- plugins/core/rest-api-access.js:401: const field = ownershipField()
149
- plugins/core/rest-api-access.js:403: let ownerId
150
- plugins/core/rest-api-access.js:406: ownerId = resourceOrUserId[field]
151
- plugins/core/rest-api-access.js:407: if (!ownerId) {
152
- plugins/core/rest-api-access.js:408: throw new Error(`Resource does not have ownership field '${field}'`)
153
- plugins/core/rest-api-access.js:411: ownerId = resourceOrUserId
154
- plugins/core/rest-api-access.js:413: ownerId = context.existingRecord[field]
155
- plugins/core/rest-api-access.js:414: if (!ownerId) {
156
- plugins/core/rest-api-access.js:415: throw new Error(`Resource does not have ownership field '${field}'`)
157
- plugins/core/rest-api-access.js:418: throw new Error('No resource or user ID provided for ownership check')
158
- plugins/core/rest-api-access.js:421: if (String(auth.userId) !== String(ownerId)) {
159
- plugins/core/rest-api-access.js:434: helpers.auth.checkPermission = async function checkPermission (context, rules, options = {}) {
160
- plugins/core/rest-api-plugin-methods/query.js:125: // Centralised checkPermissions function
161
- plugins/core/rest-api-plugin-methods/query.js:126: await scope.checkPermissions({
162
- plugins/core/rest-api-plugin-methods/get-relationship.js:30: // Check permissions
163
- plugins/core/rest-api-plugin-methods/get-relationship.js:31: await runHooks('checkPermissions')
164
- plugins/core/rest-api-plugin-methods/get-relationship.js:32: await runHooks('checkPermissionsGetRelationship')
165
- plugins/core/rest-api-plugin-methods/get-related.js:51: // Check permissions
166
- plugins/core/rest-api-plugin-methods/get-related.js:52: await runHooks('checkPermissions')
167
- plugins/core/rest-api-plugin-methods/get-related.js:53: await runHooks('checkPermissionsGetRelated')
168
- plugins/core/rest-api-plugin-methods/delete-relationship.js:47: // Check permissions
169
- plugins/core/rest-api-plugin-methods/delete-relationship.js:48: await runHooks('checkPermissions')
170
- plugins/core/rest-api-plugin-methods/delete-relationship.js:49: await runHooks('checkPermissionsDeleteRelationship')
171
- plugins/core/rest-api-plugin-methods/patch-relationship.js:23: // Check permissions
172
- plugins/core/rest-api-plugin-methods/patch-relationship.js:24: await runHooks('checkPermissions')
173
- plugins/core/rest-api-plugin-methods/patch-relationship.js:25: await runHooks('checkPermissionsPatchRelationship')
174
- plugins/core/rest-api-plugin-methods/common.js:445: method: 'get', // We're checking read permission
175
- plugins/core/rest-api-plugin-methods/common.js:460: // Check permissions using the related scope's checkPermissions
176
- plugins/core/rest-api-plugin-methods/common.js:461: await relatedScope.checkPermissions({
177
- plugins/core/rest-api-plugin-methods/patch.js:102: // Centralised checkPermissions function
178
- plugins/core/rest-api-plugin-methods/patch.js:103: await scope.checkPermissions({
179
- plugins/core/rest-api-plugin-methods/post-relationship.js:49: // Check permissions
180
- plugins/core/rest-api-plugin-methods/post-relationship.js:50: await runHooks('checkPermissions')
181
- plugins/core/rest-api-plugin-methods/post-relationship.js:51: await runHooks('checkPermissionsPostRelationship')
182
- plugins/core/rest-api-plugin-methods/get.js:88: // Centralised checkPermissions function
183
- plugins/core/rest-api-plugin-methods/get.js:89: await scope.checkPermissions({
184
- plugins/core/rest-api-plugin-methods/check-permissions.js:2: * checkPermissions
185
- plugins/core/rest-api-plugin-methods/check-permissions.js:3: * Check if ther are permissions to access a resource.
186
- plugins/core/rest-api-plugin-methods/check-permissions.js:6:export default async function checkPermissionsMethod ({ context, params, runHooks, scopeName, scopes, helpers }) {
187
- plugins/core/rest-api-plugin-methods/check-permissions.js:12: await runHooks('checkPermissions')
188
- plugins/core/rest-api-plugin-methods/put.js:170: // Centralised checkPermissions function
189
- plugins/core/rest-api-plugin-methods/put.js:171: await scope.checkPermissions({
190
- plugins/core/rest-api-plugin-methods/delete.js:67: // Centralised checkPermissions function
191
- plugins/core/rest-api-plugin-methods/delete.js:68: await scope.checkPermissions({
192
- plugins/core/rest-api-plugin-methods/post.js:97: // Centralised checkPermissions function
193
- plugins/core/rest-api-plugin-methods/post.js:98: await scope.checkPermissions({