json-rest-api 1.0.22 → 1.0.23
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.
- package/CLAUDE.md +1 -2
- package/JSKIT_BACKEND_MIGRATION_TRACKER.txt +180 -0
- package/SINGLE_VALIDATION_CONTRACT_TODO.txt +172 -0
- package/docs/API.md +51 -14
- package/docs/COMPARISON.md +2 -2
- package/docs/GUIDE/GUIDE_1_Initial_Setup.md +28 -1
- package/docs/GUIDE/GUIDE_2_2_Manipulating_And_Searching_Tables.md +5 -1
- package/docs/GUIDE/GUIDE_2_7_Pagination_And_Ordering.md +3 -1
- package/docs/GUIDE/GUIDE_2_8_Effects_of_PUT_and_PATCH.md +12 -60
- package/docs/GUIDE/GUIDE_2_Data_And_Relations.md +2 -2
- package/docs/GUIDE/GUIDE_3_Field_Transformations.md +5 -1
- package/docs/GUIDE/GUIDE_7_Hooks_Data_Management_And_Plugins.md +2 -0
- package/docs/GUIDE/GUIDE_X_Autofiltering.md +355 -0
- package/docs/GUIDE/GUIDE_X_Fastify.md +78 -0
- package/docs/GUIDE/GUIDE_X_Knex_Schema_And_Migrations.md +250 -0
- package/docs/GUIDE/GUIDE_X_Query_Projections.md +159 -0
- package/docs/GUIDE/GUIDE_X_Writing_Plugins.md +199 -0
- package/docs/GUIDE/index.md +18 -9
- package/docs/QUICKSTART.md +5 -1
- package/docs/index.md +1 -1
- package/index.js +3 -2
- package/package.json +2 -2
- package/plugins/core/connectors/express-plugin.js +97 -184
- package/plugins/core/connectors/fastify-plugin.js +206 -0
- package/plugins/core/connectors/lib/connector-core.js +195 -0
- package/plugins/core/connectors/lib/transport-http-helpers.js +122 -0
- package/plugins/core/connectors/lib/transport-route-schemas.js +92 -0
- package/plugins/core/lib/dbIntrospection.js +1078 -0
- package/plugins/core/lib/dbTablesOperations.js +1104 -160
- package/plugins/core/lib/querying/knex-json-api-transformers-querying.js +5 -2
- package/plugins/core/lib/querying/knex-process-includes.js +3 -4
- package/plugins/core/lib/querying/knex-query-helpers.js +17 -71
- package/plugins/core/lib/querying/knex-relationship-includes.js +466 -206
- package/plugins/core/lib/querying/query-builder-utils.js +19 -0
- package/plugins/core/lib/querying/query-field-sort-helpers.js +135 -0
- package/plugins/core/lib/querying/sort-helpers.js +33 -0
- package/plugins/core/lib/querying/storage-adapter-utils.js +51 -0
- package/plugins/core/lib/querying/url-helpers.js +8 -2
- package/plugins/core/lib/querying-writing/compile-schemas.js +12 -1
- package/plugins/core/lib/querying-writing/knex-field-helpers.js +83 -13
- package/plugins/core/lib/querying-writing/knex-json-api-transformers.js +13 -12
- package/plugins/core/lib/querying-writing/query-field-helpers.js +88 -0
- package/plugins/core/lib/querying-writing/request-contracts.js +590 -0
- package/plugins/core/lib/storage/canonical-storage-mapping.js +113 -0
- package/plugins/core/lib/storage/storage-adapter.js +79 -2
- package/plugins/core/lib/storage/storage-mapping.js +204 -0
- package/plugins/core/rest-api-anyapi-knex-plugin.js +355 -228
- package/plugins/core/rest-api-autofilter-plugin.js +414 -0
- package/plugins/core/rest-api-knex-plugin.js +249 -211
- package/plugins/core/rest-api-plugin-hooks/register-relationship-routes.js +10 -5
- package/plugins/core/rest-api-plugin-hooks/register-scope-routes.js +12 -6
- package/plugins/core/rest-api-plugin-methods/apply-query-filters.js +41 -0
- package/plugins/core/rest-api-plugin-methods/common.js +121 -83
- package/plugins/core/rest-api-plugin-methods/enrich-attributes.js +6 -1
- package/plugins/core/rest-api-plugin-methods/get.js +23 -14
- package/plugins/core/rest-api-plugin-methods/patch.js +28 -12
- package/plugins/core/rest-api-plugin-methods/post.js +13 -8
- package/plugins/core/rest-api-plugin-methods/put.js +45 -21
- package/plugins/core/rest-api-plugin-methods/query.js +15 -53
- package/plugins/core/rest-api-plugin.js +2 -0
- package/plugins/core/rest-api-positioning-plugin.js +1 -1
- package/plugins/core/rest-api-query-projections-plugin.js +130 -0
- package/plugins/core/socketio-plugin.js +1 -3
- package/tests/autofilter.test.js +463 -0
- package/tests/custom-id-simplified-post.test.js +75 -0
- package/tests/custom-idproperty-relationships.test.js +33 -0
- package/tests/db-introspection.test.js +518 -0
- package/tests/db-table-operations.test.js +781 -0
- package/tests/fastify-plugin.test.js +141 -0
- package/tests/field-getters.test.js +1 -2
- package/tests/field-setters.test.js +0 -4
- package/tests/fixtures/api-configs.js +188 -219
- package/tests/helpers/fake-fastify.js +99 -0
- package/tests/http-connectors-parity.test.js +235 -0
- package/tests/projected-fields.test.js +319 -0
- package/tests/relationships.test.js +3 -3
- package/tests/searchschema-knex-behavior.test.js +187 -0
- package/tests/searchschema-merge.test.js +21 -69
- package/tests/storage-mapping.test.js +210 -0
- package/audit/00-charter.md +0 -103
- package/audit/01-scope-map.md +0 -84
- package/audit/02-coverage-matrix.csv +0 -174
- package/audit/03-invariants.md +0 -123
- package/audit/04-standards-rubric.md +0 -56
- package/audit/05-competitor-rubric.md +0 -77
- package/audit/06-findings.md +0 -160
- package/audit/07-risk-register.csv +0 -10
- package/audit/08-remediation-roadmap.md +0 -177
- package/audit/09-signoff-check.md +0 -23
- package/audit/10-final-synthesis.md +0 -29
- package/audit/evidence/code/all-files-json-rest-api.txt +0 -168
- package/audit/evidence/code/all-files-json-rest-schema.txt +0 -12
- package/audit/evidence/code/boundary-leak-checks.txt +0 -72
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__bulk-operations-plugin.js.txt +0 -480
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__connectors__express-plugin.js.txt +0 -532
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__connectors__lib__busboy-detector.js.txt +0 -175
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__connectors__lib__formidable-detector.js.txt +0 -138
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__connectors__lib__request-helpers.js.txt +0 -222
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__file-handling-plugin.js.txt +0 -342
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__dbTablesOperations.js.txt +0 -304
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__fractional-positioning.js.txt +0 -188
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__compile-schemas.js.txt +0 -336
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__connectors-query-parser.js.txt +0 -165
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__database-capabilities.js.txt +0 -265
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__database-value-normalizers.js.txt +0 -369
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__default-data-helpers.js.txt +0 -72
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__field-utils.js.txt +0 -139
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__knex-constants.js.txt +0 -45
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__knex-field-helpers.js.txt +0 -396
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__knex-json-api-transformers.js.txt +0 -162
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__payload-validators.js.txt +0 -1314
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__schema-helpers.js.txt +0 -488
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__scope-validations.js.txt +0 -484
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__simplified-helpers.js.txt +0 -857
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-cross-table-search.js.txt +0 -565
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-json-api-transformers-querying.js.txt +0 -485
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-pagination-helpers.js.txt +0 -560
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-process-includes.js.txt +0 -167
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-query-helpers-base.js.txt +0 -109
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-query-helpers.js.txt +0 -1064
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-relationship-includes.js.txt +0 -1983
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-window-queries.js.txt +0 -328
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__url-helpers.js.txt +0 -119
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__storage__storage-adapter.js.txt +0 -160
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__writing__many-to-many-manipulations.js.txt +0 -300
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__writing__relationship-processor.js.txt +0 -245
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-access.js.txt +0 -459
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-cors-plugin.js.txt +0 -237
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-knex-plugin.js.txt +0 -1135
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-multihome-plugin.js.txt +0 -314
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-hooks__compile-resource-schemas.js.txt +0 -7
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-hooks__register-relationship-routes.js.txt +0 -71
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-hooks__register-scope-routes.js.txt +0 -102
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-hooks__turn-scope-init-into-vars.js.txt +0 -49
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-hooks__validate-include-configurations.js.txt +0 -39
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__add-route.js.txt +0 -23
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__check-permissions.js.txt +0 -13
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__common.js.txt +0 -639
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__delete-relationship.js.txt +0 -117
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__delete.js.txt +0 -104
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__enrich-attributes.js.txt +0 -199
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__get-related.js.txt +0 -353
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__get-relationship.js.txt +0 -61
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__get.js.txt +0 -184
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__patch-relationship.js.txt +0 -55
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__patch.js.txt +0 -191
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__post-relationship.js.txt +0 -110
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__post.js.txt +0 -168
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__put.js.txt +0 -253
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__query.js.txt +0 -207
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__release.js.txt +0 -12
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin.js.txt +0 -165
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-positioning-plugin.js.txt +0 -668
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__socketio-plugin.js.txt +0 -621
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__storage__local-storage.js.txt +0 -218
- package/audit/evidence/code/critical-pass1/json-rest-api__plugins__storage__s3-storage.js.txt +0 -124
- package/audit/evidence/code/critical-pass1/json-rest-schema__src__CorePlugin.js.txt +0 -269
- package/audit/evidence/code/critical-pass1/json-rest-schema__src__Schema.js.txt +0 -242
- package/audit/evidence/code/critical-pass1/json-rest-schema__src__index.js.txt +0 -77
- package/audit/evidence/code/critical-pass1-risk-keywords.txt +0 -238
- package/audit/evidence/code/critical-pass1-summary.csv +0 -67
- package/audit/evidence/code/critical-pass2-summary.csv +0 -67
- package/audit/evidence/code/early-silent-zones-no-test-token.txt +0 -57
- package/audit/evidence/code/error-model-signals.txt +0 -98
- package/audit/evidence/code/git-files-json-rest-api.txt +0 -171
- package/audit/evidence/code/git-files-json-rest-schema.txt +0 -27
- package/audit/evidence/code/hook-flow-signals.txt +0 -282
- package/audit/evidence/code/idproperty-signals.txt +0 -157
- package/audit/evidence/code/import-cycles-non-anyapi.txt +0 -3
- package/audit/evidence/code/import-hotspots-non-anyapi.txt +0 -96
- package/audit/evidence/code/imports-json-rest-api.txt +0 -354
- package/audit/evidence/code/imports-json-rest-schema.txt +0 -15
- package/audit/evidence/code/in-scope-files-json-rest-api.txt +0 -160
- package/audit/evidence/code/in-scope-files-json-rest-schema.txt +0 -13
- package/audit/evidence/code/non-anyapi-core-files.txt +0 -101
- package/audit/evidence/code/permission-signals.txt +0 -193
- package/audit/evidence/code/query-include-signals.txt +0 -687
- package/audit/evidence/code/transaction-signals.txt +0 -28
- package/audit/evidence/code/validation-signals.txt +0 -650
- package/audit/evidence/code/write-path-signals.txt +0 -61
- package/audit/evidence/docs/docs-claims-signals.txt +0 -1075
- package/audit/evidence/docs/schema-docs-claims-signals.txt +0 -179
- package/audit/evidence/external/corpus-freeze.md +0 -21
- package/audit/evidence/external/npm-competitor-metadata.txt +0 -70
- package/audit/evidence/external/npm-download-signals.txt +0 -23
- package/audit/evidence/external/npm-jsonapi-server.txt +0 -8
- package/audit/evidence/external/npm-modern-jsonapi-metadata.txt +0 -38
- package/audit/evidence/external/readme-fortune-signals.txt +0 -26
- package/audit/evidence/external/readme-fortune.md +0 -165
- package/audit/evidence/external/readme-json-api-serializer-signals.txt +0 -80
- package/audit/evidence/external/readme-json-api-serializer.md +0 -690
- package/audit/evidence/external/readme-jsonapi-serde-server-signals.txt +0 -0
- package/audit/evidence/external/readme-jsonapi-serde-server.md +0 -22
- package/audit/evidence/external/readme-jsonapi-serializer-signals.txt +0 -63
- package/audit/evidence/external/readme-jsonapi-serializer.md +0 -315
- package/audit/evidence/external/readme-jsonapi-server-signals.txt +0 -19
- package/audit/evidence/external/readme-jsonapi-server.md +0 -104
- package/audit/evidence/external/readme-nestjs-json-api-signals.txt +0 -4
- package/audit/evidence/external/readme-nestjs-json-api.md +0 -94
- package/audit/evidence/external/readme-yaser-json-api-nestjs-signals.txt +0 -47
- package/audit/evidence/external/readme-yaser-json-api-nestjs.md +0 -447
- package/audit/evidence/external/standard-jsonapi-snippets.txt +0 -84
- package/audit/evidence/external/standard-rfc-snippets.txt +0 -168
- package/audit/evidence/external/standards-sources.txt +0 -6
- package/audit/evidence/runtime/baseline-commits.txt +0 -2
- package/audit/evidence/runtime/db-adapter-assumptions.txt +0 -3
- package/audit/evidence/runtime/environment.txt +0 -4
- package/audit/evidence/runtime/invariant-runtime-mapping.md +0 -38
- package/audit/evidence/runtime/probe-patch-relationship-error.exitcode +0 -1
- package/audit/evidence/runtime/probe-patch-relationship-error.log +0 -76
- package/audit/evidence/runtime/probe-patch-relationship-error.mjs +0 -67
- package/audit/evidence/runtime/probe-patch-relationship-referenceerror.exitcode +0 -1
- package/audit/evidence/runtime/probe-patch-relationship-referenceerror.log +0 -62
- package/audit/evidence/runtime/probe-patch-relationship-referenceerror.mjs +0 -47
- package/audit/evidence/runtime/test-exitcodes.txt +0 -4
- package/audit/evidence/runtime/test-summary.md +0 -107
- package/audit/evidence/runtime/trace-anchors.txt +0 -61
- package/audit/evidence/tests/access-multitenancy-test-signals.txt +0 -125
- package/audit/evidence/tests/failing-tests-summary.txt +0 -25
- package/audit/evidence/tests/npm-test-json-rest-api.exitcode +0 -1
- package/audit/evidence/tests/npm-test-json-rest-api.log +0 -5885
- package/audit/evidence/tests/npm-test-json-rest-schema.exitcode +0 -1
- package/audit/evidence/tests/npm-test-json-rest-schema.log +0 -356
- package/audit/evidence/tests/query-include-test-signals.txt +0 -948
- package/audit/evidence/tests/relationship-test-signals.txt +0 -223
- package/audit/evidence/tests/skipped-tests.txt +0 -10
- package/audit/evidence/tests/test-suite-list-non-anyapi.txt +0 -30
- package/audit/evidence/tests/test-suite-list.txt +0 -32
- package/audit/subsystems/docs-drift.md +0 -49
- package/audit/subsystems/pass2-cross-review.md +0 -131
- package/audit/subsystems/plugins-access.md +0 -51
- package/audit/subsystems/plugins-bulk.md +0 -50
- package/audit/subsystems/plugins-cors.md +0 -48
- package/audit/subsystems/plugins-file.md +0 -53
- package/audit/subsystems/plugins-multihome.md +0 -50
- package/audit/subsystems/plugins-positioning.md +0 -54
- package/audit/subsystems/plugins-socketio.md +0 -50
- package/audit/subsystems/query-engine.md +0 -61
- package/audit/subsystems/relationships.md +0 -55
- package/audit/subsystems/rest-orchestration.md +0 -66
- package/audit/subsystems/schema-core.md +0 -64
- package/audit/subsystems/storage-knex.md +0 -57
- package/audit/subsystems/tests.md +0 -48
- package/audit/subsystems/transport-express.md +0 -55
- package/audit/traces/trace-read-get.md +0 -22
- package/audit/traces/trace-read-query.md +0 -25
- package/audit/traces/trace-relationship-endpoints.md +0 -31
- package/audit/traces/trace-write-delete.md +0 -17
- package/audit/traces/trace-write-patch.md +0 -26
- package/audit/traces/trace-write-post.md +0 -22
- package/audit/traces/trace-write-put.md +0 -23
- package/docs/GUIDE/GUIDE_4_Authentication_And_Permissions.md +0 -707
- package/docs/GUIDE/GUIDE_X_Multihome.md +0 -666
- package/plugins/core/lib/querying-writing/payload-validators.js +0 -1314
- package/plugins/core/rest-api-access.js +0 -459
- package/plugins/core/rest-api-multihome-plugin.js +0 -314
- package/tests/multihome.test.js +0 -553
- package/tests/multihome.test.js.bak +0 -550
- package/tests/ownership-optout.test.js +0 -76
- package/tests/rest-api-access.test.js +0 -206
package/audit/01-scope-map.md
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
# Scope Map (M1)
|
|
2
|
-
|
|
3
|
-
## Inventory Baseline (In Scope)
|
|
4
|
-
- `json-rest-api`: 160 tracked files in scope (`audit/evidence/code/in-scope-files-json-rest-api.txt`)
|
|
5
|
-
- `json-rest-schema`: 13 tracked files in scope (`audit/evidence/code/in-scope-files-json-rest-schema.txt`)
|
|
6
|
-
- Coverage matrix rows: 173 files + header (`audit/02-coverage-matrix.csv`)
|
|
7
|
-
|
|
8
|
-
## Architecture Boundaries (Expected Layer Contract)
|
|
9
|
-
`transport -> REST methods -> helper contracts -> storage adapter -> DB`
|
|
10
|
-
|
|
11
|
-
### schema-core
|
|
12
|
-
- Repo: `json-rest-schema`
|
|
13
|
-
- Core files: `src/index.js`, `src/Schema.js`, `src/CorePlugin.js`
|
|
14
|
-
- Responsibility: field casting, validation pipeline, validator/type plugin system.
|
|
15
|
-
|
|
16
|
-
### rest-orchestration
|
|
17
|
-
- Repo: `json-rest-api`
|
|
18
|
-
- Core files: `plugins/core/rest-api-plugin.js`, `plugins/core/rest-api-plugin-methods/*.js`, `plugins/core/rest-api-plugin-hooks/*.js`
|
|
19
|
-
- Responsibility: request lifecycle orchestration, permission hook dispatch, transaction lifecycle, response shape mode.
|
|
20
|
-
|
|
21
|
-
### transport-express
|
|
22
|
-
- Core files: `plugins/core/connectors/express-plugin.js`, `plugins/core/connectors/lib/*`
|
|
23
|
-
- Responsibility: HTTP ingress/egress, request parsing, status mapping, transport hooks.
|
|
24
|
-
|
|
25
|
-
### storage-knex
|
|
26
|
-
- Core files: `plugins/core/rest-api-knex-plugin.js`, `plugins/core/lib/storage/storage-adapter.js`, `plugins/core/lib/querying-writing/*`
|
|
27
|
-
- Responsibility: data adapter abstraction, SQL query/write execution, schema compilation and ID/column translation.
|
|
28
|
-
|
|
29
|
-
### query-engine
|
|
30
|
-
- Core files: `plugins/core/lib/querying/*`, `plugins/core/rest-api-plugin-methods/query.js`, `.../get.js`
|
|
31
|
-
- Responsibility: filtering/sorting/pagination/include processing and JSON:API assembly.
|
|
32
|
-
|
|
33
|
-
### relationships
|
|
34
|
-
- Core files: `plugins/core/lib/writing/relationship-processor.js`, `.../many-to-many-manipulations.js`, relationship endpoint methods
|
|
35
|
-
- Responsibility: relation semantics across CRUD + relationship endpoints.
|
|
36
|
-
|
|
37
|
-
### plugin subsystems
|
|
38
|
-
- Access: `plugins/core/rest-api-access.js`
|
|
39
|
-
- CORS: `plugins/core/rest-api-cors-plugin.js`
|
|
40
|
-
- File: `plugins/core/file-handling-plugin.js`
|
|
41
|
-
- Positioning: `plugins/core/rest-api-positioning-plugin.js`, `plugins/core/lib/fractional-positioning.js`
|
|
42
|
-
- Multihome: `plugins/core/rest-api-multihome-plugin.js`
|
|
43
|
-
- SocketIO: `plugins/core/socketio-plugin.js`
|
|
44
|
-
- Bulk: `plugins/core/bulk-operations-plugin.js`
|
|
45
|
-
|
|
46
|
-
## Primary Data/Control Flows
|
|
47
|
-
### Read flow
|
|
48
|
-
1. Route registration: `register-scope-routes.js` + `add-route.js`
|
|
49
|
-
2. Transport ingress + parsing: `express-plugin.js`, `connectors-query-parser.js`
|
|
50
|
-
3. Method orchestration: `query.js`/`get.js` -> payload validation -> `checkPermissions`
|
|
51
|
-
4. Storage read: `rest-api-knex-plugin.js` (`helpers.dataQuery`/`helpers.dataGet`)
|
|
52
|
-
5. Include/transform: `knex-process-includes.js`, `knex-relationship-includes.js`, `knex-json-api-transformers-querying.js`
|
|
53
|
-
6. Field enrichment/filtering: `enrich-attributes.js`, `field-utils.js`
|
|
54
|
-
7. Transport response/error mapping: `express-plugin.js`
|
|
55
|
-
|
|
56
|
-
### Write flow
|
|
57
|
-
1. Transport ingress/body validation.
|
|
58
|
-
2. Method setup + transaction open: `common.js::setupCommonRequest`
|
|
59
|
-
3. Payload validation and schema validation: `payload-validators.js` + `validateResourceAttributesBeforeWrite`
|
|
60
|
-
4. Permission checks before storage side effects: `scope.checkPermissions`
|
|
61
|
-
5. Storage mutation: `helpers.dataPost|dataPut|dataPatch|dataDelete`
|
|
62
|
-
6. Relationship side effects: `relationship-processor.js`, `many-to-many-manipulations.js`
|
|
63
|
-
7. Return mode and hooks: `handleRecordReturnAfterWrite`
|
|
64
|
-
8. Commit/rollback path: `common.js::handleWriteMethodError` and method-level transaction logic
|
|
65
|
-
|
|
66
|
-
## Early Silent Zones (Initial Detection)
|
|
67
|
-
### Files with weak direct test linkage (heuristic)
|
|
68
|
-
- Source: `audit/evidence/code/early-silent-zones-no-test-token.txt`
|
|
69
|
-
- 54/67 runtime files had no direct token mention in tests (heuristic, not execution coverage).
|
|
70
|
-
- Notable high-risk modules in this set: file upload detector libs, relationship endpoint methods, core helper glue, error formatting.
|
|
71
|
-
|
|
72
|
-
### Docs claims with likely weak direct code/test mapping (to validate in M2/M6)
|
|
73
|
-
- File upload guides vs no dedicated file-upload test suite name match.
|
|
74
|
-
- Label plugin present (`rest-api-label-plugin.js`) with no dedicated test suite name match.
|
|
75
|
-
- Transport helper internals (`connectors/lib/*`) lack targeted test files by name.
|
|
76
|
-
|
|
77
|
-
### Weak call-site coverage candidates (initial static signal)
|
|
78
|
-
- Relationship endpoint error path consistency needs runtime confirmation (`patch-relationship.js` catch path references symbols not declared in-file).
|
|
79
|
-
- Cross-table/polymorphic filter branches require targeted scenario coverage beyond happy-path query tests.
|
|
80
|
-
|
|
81
|
-
## Unknown Queue (Must Resolve)
|
|
82
|
-
- Exact runtime path usage for some helper modules without explicit test targeting.
|
|
83
|
-
- Relationship endpoint error envelope consistency under thrown failures.
|
|
84
|
-
- Performance behavior under nested includes and cross-table filter combinations.
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
"repo","path","layer","subsystem","criticality","review_pass_1","review_pass_2","runtime_touched","test_touched","notes_ref"
|
|
2
|
-
"json-rest-api",".claude/agents/library-guide-expert.md","support","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
3
|
-
"json-rest-api",".claude/agents/rest-api-internals-expert.md","support","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
4
|
-
"json-rest-api",".gitignore","support","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
5
|
-
"json-rest-api","AGENTS.md","docs","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
6
|
-
"json-rest-api","CLAUDE.md","docs","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
7
|
-
"json-rest-api","connectors_ideas/fastify.js","tooling","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
8
|
-
"json-rest-api","connectors_ideas/koa-plugin.js","tooling","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
9
|
-
"json-rest-api","CRUSH.md","docs","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
10
|
-
"json-rest-api","docs/_config.yml","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
11
|
-
"json-rest-api","docs/_layouts/default.html","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
12
|
-
"json-rest-api","docs/.bundle/config","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
13
|
-
"json-rest-api","docs/API.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
14
|
-
"json-rest-api","docs/apple-touch-icon.svg","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
15
|
-
"json-rest-api","docs/assets/css/style.scss","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
16
|
-
"json-rest-api","docs/COMPARISON.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
17
|
-
"json-rest-api","docs/favicon.svg","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
18
|
-
"json-rest-api","docs/Gemfile","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
19
|
-
"json-rest-api","docs/Gemfile.lock","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
20
|
-
"json-rest-api","docs/GUIDE/GUIDE_1_Initial_Setup.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
21
|
-
"json-rest-api","docs/GUIDE/GUIDE_2_1_The_Starting_Point.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
22
|
-
"json-rest-api","docs/GUIDE/GUIDE_2_2_Manipulating_And_Searching_Tables.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
23
|
-
"json-rest-api","docs/GUIDE/GUIDE_2_3_BelongsTo_Relationships.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
24
|
-
"json-rest-api","docs/GUIDE/GUIDE_2_4_HasMany_Records.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
25
|
-
"json-rest-api","docs/GUIDE/GUIDE_2_5_HasMany_Polymorphic.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
26
|
-
"json-rest-api","docs/GUIDE/GUIDE_2_6_Many_To_Many.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
27
|
-
"json-rest-api","docs/GUIDE/GUIDE_2_7_Pagination_And_Ordering.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
28
|
-
"json-rest-api","docs/GUIDE/GUIDE_2_8_Effects_of_PUT_and_PATCH.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
29
|
-
"json-rest-api","docs/GUIDE/GUIDE_2_9_Relationships_Urls.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
30
|
-
"json-rest-api","docs/GUIDE/GUIDE_2_Data_And_Relations.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
31
|
-
"json-rest-api","docs/GUIDE/GUIDE_3_Field_Transformations.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
32
|
-
"json-rest-api","docs/GUIDE/GUIDE_4_Authentication_And_Permissions.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
33
|
-
"json-rest-api","docs/GUIDE/GUIDE_5_Non-Db_Resources.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
34
|
-
"json-rest-api","docs/GUIDE/GUIDE_6_Positioning.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
35
|
-
"json-rest-api","docs/GUIDE/GUIDE_7_Hooks_Data_Management_And_Plugins.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
36
|
-
"json-rest-api","docs/GUIDE/GUIDE_X_Bulk_Operations.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
37
|
-
"json-rest-api","docs/GUIDE/GUIDE_X_Cors.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
38
|
-
"json-rest-api","docs/GUIDE/GUIDE_X_File_Uploads.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
39
|
-
"json-rest-api","docs/GUIDE/GUIDE_X_Multihome.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
40
|
-
"json-rest-api","docs/GUIDE/GUIDE_X_SocketIO.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
41
|
-
"json-rest-api","docs/GUIDE/GUIDE_X_URL_Management.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
42
|
-
"json-rest-api","docs/GUIDE/GUIDE_Y_Appendices.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
43
|
-
"json-rest-api","docs/GUIDE/index.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
44
|
-
"json-rest-api","docs/index.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
45
|
-
"json-rest-api","docs/mini-guides/file-uploads-complete.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
46
|
-
"json-rest-api","docs/ONBOARDING.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
47
|
-
"json-rest-api","docs/QUICKSTART.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
48
|
-
"json-rest-api","eslint.config.js","meta","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
49
|
-
"json-rest-api","examples/url-override-example.js","tooling","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
50
|
-
"json-rest-api","index.js","runtime-core","rest-orchestration","important","pending","pending","no","no","audit/subsystems/rest-orchestration.md"
|
|
51
|
-
"json-rest-api","lib/enhanced-logger.js","runtime-core","rest-orchestration","important","pending","pending","no","no","audit/subsystems/rest-orchestration.md"
|
|
52
|
-
"json-rest-api","lib/error-formatter.js","runtime-core","rest-orchestration","important","pending","pending","no","no","audit/subsystems/rest-orchestration.md"
|
|
53
|
-
"json-rest-api","lib/rest-api-errors.js","runtime-core","rest-orchestration","important","pending","pending","no","no","audit/subsystems/rest-orchestration.md"
|
|
54
|
-
"json-rest-api","LICENSE","support","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
55
|
-
"json-rest-api","package-lock.json","meta","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
56
|
-
"json-rest-api","package.json","meta","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
57
|
-
"json-rest-api","plugins/core/bulk-operations-plugin.js","plugin","plugins-bulk","critical","yes","yes","yes","yes","audit/subsystems/plugins-bulk.md"
|
|
58
|
-
"json-rest-api","plugins/core/connectors/express-plugin.js","transport","transport-express","critical","yes","yes","yes","yes","audit/subsystems/transport-express.md"
|
|
59
|
-
"json-rest-api","plugins/core/connectors/lib/busboy-detector.js","transport","transport-express","critical","yes","yes","no","no","audit/subsystems/transport-express.md"
|
|
60
|
-
"json-rest-api","plugins/core/connectors/lib/formidable-detector.js","transport","transport-express","critical","yes","yes","no","no","audit/subsystems/transport-express.md"
|
|
61
|
-
"json-rest-api","plugins/core/connectors/lib/request-helpers.js","transport","transport-express","critical","yes","yes","no","no","audit/subsystems/transport-express.md"
|
|
62
|
-
"json-rest-api","plugins/core/file-handling-plugin.js","plugin","plugins-file","critical","yes","yes","no","no","audit/subsystems/plugins-file.md"
|
|
63
|
-
"json-rest-api","plugins/core/lib/dbTablesOperations.js","runtime-storage","storage-knex","critical","yes","yes","no","no","audit/subsystems/storage-knex.md"
|
|
64
|
-
"json-rest-api","plugins/core/lib/fractional-positioning.js","plugin","plugins-positioning","critical","yes","yes","no","no","audit/subsystems/plugins-positioning.md"
|
|
65
|
-
"json-rest-api","plugins/core/lib/querying-writing/compile-schemas.js","runtime-storage","storage-knex","critical","yes","yes","yes","yes","audit/subsystems/storage-knex.md"
|
|
66
|
-
"json-rest-api","plugins/core/lib/querying-writing/connectors-query-parser.js","runtime-storage","storage-knex","critical","yes","yes","no","no","audit/subsystems/storage-knex.md"
|
|
67
|
-
"json-rest-api","plugins/core/lib/querying-writing/database-capabilities.js","runtime-storage","storage-knex","critical","yes","yes","no","no","audit/subsystems/storage-knex.md"
|
|
68
|
-
"json-rest-api","plugins/core/lib/querying-writing/database-value-normalizers.js","runtime-storage","storage-knex","critical","yes","yes","no","no","audit/subsystems/storage-knex.md"
|
|
69
|
-
"json-rest-api","plugins/core/lib/querying-writing/default-data-helpers.js","runtime-storage","storage-knex","critical","yes","yes","no","no","audit/subsystems/storage-knex.md"
|
|
70
|
-
"json-rest-api","plugins/core/lib/querying-writing/field-utils.js","runtime-storage","storage-knex","critical","yes","yes","no","no","audit/subsystems/storage-knex.md"
|
|
71
|
-
"json-rest-api","plugins/core/lib/querying-writing/knex-constants.js","runtime-storage","storage-knex","critical","yes","yes","no","no","audit/subsystems/storage-knex.md"
|
|
72
|
-
"json-rest-api","plugins/core/lib/querying-writing/knex-field-helpers.js","runtime-storage","storage-knex","critical","yes","yes","yes","yes","audit/subsystems/storage-knex.md"
|
|
73
|
-
"json-rest-api","plugins/core/lib/querying-writing/knex-json-api-transformers.js","runtime-storage","storage-knex","critical","yes","yes","no","no","audit/subsystems/storage-knex.md"
|
|
74
|
-
"json-rest-api","plugins/core/lib/querying-writing/payload-validators.js","runtime-storage","storage-knex","critical","yes","yes","yes","yes","audit/subsystems/storage-knex.md"
|
|
75
|
-
"json-rest-api","plugins/core/lib/querying-writing/schema-helpers.js","runtime-storage","storage-knex","critical","yes","yes","no","no","audit/subsystems/storage-knex.md"
|
|
76
|
-
"json-rest-api","plugins/core/lib/querying-writing/scope-validations.js","runtime-storage","storage-knex","critical","yes","yes","no","no","audit/subsystems/storage-knex.md"
|
|
77
|
-
"json-rest-api","plugins/core/lib/querying-writing/simplified-helpers.js","runtime-storage","storage-knex","critical","yes","yes","no","no","audit/subsystems/storage-knex.md"
|
|
78
|
-
"json-rest-api","plugins/core/lib/querying/knex-cross-table-search.js","runtime-query","query-engine","critical","yes","yes","no","no","audit/subsystems/query-engine.md"
|
|
79
|
-
"json-rest-api","plugins/core/lib/querying/knex-json-api-transformers-querying.js","runtime-query","query-engine","critical","yes","yes","no","no","audit/subsystems/query-engine.md"
|
|
80
|
-
"json-rest-api","plugins/core/lib/querying/knex-pagination-helpers.js","runtime-query","query-engine","critical","yes","yes","no","no","audit/subsystems/query-engine.md"
|
|
81
|
-
"json-rest-api","plugins/core/lib/querying/knex-process-includes.js","runtime-query","query-engine","critical","yes","yes","no","no","audit/subsystems/query-engine.md"
|
|
82
|
-
"json-rest-api","plugins/core/lib/querying/knex-query-helpers-base.js","runtime-query","query-engine","critical","yes","yes","no","no","audit/subsystems/query-engine.md"
|
|
83
|
-
"json-rest-api","plugins/core/lib/querying/knex-query-helpers.js","runtime-query","query-engine","critical","yes","yes","no","no","audit/subsystems/query-engine.md"
|
|
84
|
-
"json-rest-api","plugins/core/lib/querying/knex-relationship-includes.js","runtime-query","query-engine","critical","yes","yes","yes","yes","audit/subsystems/query-engine.md"
|
|
85
|
-
"json-rest-api","plugins/core/lib/querying/knex-window-queries.js","runtime-query","query-engine","critical","yes","yes","no","no","audit/subsystems/query-engine.md"
|
|
86
|
-
"json-rest-api","plugins/core/lib/querying/url-helpers.js","runtime-query","query-engine","critical","yes","yes","no","no","audit/subsystems/query-engine.md"
|
|
87
|
-
"json-rest-api","plugins/core/lib/storage/storage-adapter.js","runtime-storage","storage-knex","critical","yes","yes","no","no","audit/subsystems/storage-knex.md"
|
|
88
|
-
"json-rest-api","plugins/core/lib/writing/knex-json-api-transformers-writing.js","support","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
89
|
-
"json-rest-api","plugins/core/lib/writing/many-to-many-manipulations.js","runtime-relationships","relationships","critical","yes","yes","yes","yes","audit/subsystems/relationships.md"
|
|
90
|
-
"json-rest-api","plugins/core/lib/writing/relationship-processor.js","runtime-relationships","relationships","critical","yes","yes","yes","yes","audit/subsystems/relationships.md"
|
|
91
|
-
"json-rest-api","plugins/core/rest-api-access.js","plugin","plugins-access","critical","yes","yes","yes","yes","audit/subsystems/plugins-access.md"
|
|
92
|
-
"json-rest-api","plugins/core/rest-api-cors-plugin.js","plugin","plugins-cors","critical","yes","yes","yes","yes","audit/subsystems/plugins-cors.md"
|
|
93
|
-
"json-rest-api","plugins/core/rest-api-knex-plugin.js","runtime-storage","storage-knex","critical","yes","yes","yes","yes","audit/subsystems/storage-knex.md"
|
|
94
|
-
"json-rest-api","plugins/core/rest-api-label-plugin.js","support","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
95
|
-
"json-rest-api","plugins/core/rest-api-multihome-plugin.js","plugin","plugins-multihome","critical","yes","yes","yes","yes","audit/subsystems/plugins-multihome.md"
|
|
96
|
-
"json-rest-api","plugins/core/rest-api-plugin-hooks/compile-resource-schemas.js","runtime-orchestration","rest-orchestration","critical","yes","yes","no","no","audit/subsystems/rest-orchestration.md"
|
|
97
|
-
"json-rest-api","plugins/core/rest-api-plugin-hooks/register-relationship-routes.js","runtime-orchestration","rest-orchestration","critical","yes","yes","no","no","audit/subsystems/rest-orchestration.md"
|
|
98
|
-
"json-rest-api","plugins/core/rest-api-plugin-hooks/register-scope-routes.js","runtime-orchestration","rest-orchestration","critical","yes","yes","no","no","audit/subsystems/rest-orchestration.md"
|
|
99
|
-
"json-rest-api","plugins/core/rest-api-plugin-hooks/turn-scope-init-into-vars.js","runtime-orchestration","rest-orchestration","critical","yes","yes","no","no","audit/subsystems/rest-orchestration.md"
|
|
100
|
-
"json-rest-api","plugins/core/rest-api-plugin-hooks/validate-include-configurations.js","runtime-orchestration","rest-orchestration","critical","yes","yes","no","no","audit/subsystems/rest-orchestration.md"
|
|
101
|
-
"json-rest-api","plugins/core/rest-api-plugin-methods/add-route.js","runtime-orchestration","rest-orchestration","critical","yes","yes","no","no","audit/subsystems/rest-orchestration.md"
|
|
102
|
-
"json-rest-api","plugins/core/rest-api-plugin-methods/check-permissions.js","runtime-orchestration","rest-orchestration","critical","yes","yes","no","no","audit/subsystems/rest-orchestration.md"
|
|
103
|
-
"json-rest-api","plugins/core/rest-api-plugin-methods/common.js","runtime-orchestration","rest-orchestration","critical","yes","yes","yes","yes","audit/subsystems/rest-orchestration.md"
|
|
104
|
-
"json-rest-api","plugins/core/rest-api-plugin-methods/delete-relationship.js","runtime-relationships","relationships","critical","yes","yes","yes","yes","audit/subsystems/relationships.md"
|
|
105
|
-
"json-rest-api","plugins/core/rest-api-plugin-methods/delete.js","runtime-orchestration","rest-orchestration","critical","yes","yes","yes","yes","audit/subsystems/rest-orchestration.md"
|
|
106
|
-
"json-rest-api","plugins/core/rest-api-plugin-methods/enrich-attributes.js","runtime-orchestration","rest-orchestration","critical","yes","yes","no","no","audit/subsystems/rest-orchestration.md"
|
|
107
|
-
"json-rest-api","plugins/core/rest-api-plugin-methods/get-related.js","runtime-relationships","relationships","critical","yes","yes","yes","yes","audit/subsystems/relationships.md"
|
|
108
|
-
"json-rest-api","plugins/core/rest-api-plugin-methods/get-relationship.js","runtime-relationships","relationships","critical","yes","yes","yes","yes","audit/subsystems/relationships.md"
|
|
109
|
-
"json-rest-api","plugins/core/rest-api-plugin-methods/get.js","runtime-orchestration","rest-orchestration","critical","yes","yes","yes","yes","audit/subsystems/rest-orchestration.md"
|
|
110
|
-
"json-rest-api","plugins/core/rest-api-plugin-methods/patch-relationship.js","runtime-relationships","relationships","critical","yes","yes","yes","yes","audit/subsystems/relationships.md"
|
|
111
|
-
"json-rest-api","plugins/core/rest-api-plugin-methods/patch.js","runtime-orchestration","rest-orchestration","critical","yes","yes","yes","yes","audit/subsystems/rest-orchestration.md"
|
|
112
|
-
"json-rest-api","plugins/core/rest-api-plugin-methods/post-relationship.js","runtime-relationships","relationships","critical","yes","yes","yes","yes","audit/subsystems/relationships.md"
|
|
113
|
-
"json-rest-api","plugins/core/rest-api-plugin-methods/post.js","runtime-orchestration","rest-orchestration","critical","yes","yes","yes","yes","audit/subsystems/rest-orchestration.md"
|
|
114
|
-
"json-rest-api","plugins/core/rest-api-plugin-methods/put.js","runtime-orchestration","rest-orchestration","critical","yes","yes","yes","yes","audit/subsystems/rest-orchestration.md"
|
|
115
|
-
"json-rest-api","plugins/core/rest-api-plugin-methods/query.js","runtime-query","query-engine","critical","yes","yes","yes","yes","audit/subsystems/query-engine.md"
|
|
116
|
-
"json-rest-api","plugins/core/rest-api-plugin-methods/release.js","runtime-orchestration","rest-orchestration","critical","yes","yes","no","no","audit/subsystems/rest-orchestration.md"
|
|
117
|
-
"json-rest-api","plugins/core/rest-api-plugin.js","runtime-orchestration","rest-orchestration","critical","yes","yes","yes","yes","audit/subsystems/rest-orchestration.md"
|
|
118
|
-
"json-rest-api","plugins/core/rest-api-positioning-plugin.js","plugin","plugins-positioning","critical","yes","yes","yes","yes","audit/subsystems/plugins-positioning.md"
|
|
119
|
-
"json-rest-api","plugins/core/socketio-plugin.js","plugin","plugins-socketio","critical","yes","yes","yes","yes","audit/subsystems/plugins-socketio.md"
|
|
120
|
-
"json-rest-api","plugins/storage/local-storage.js","plugin","plugins-file","critical","yes","yes","no","no","audit/subsystems/plugins-file.md"
|
|
121
|
-
"json-rest-api","plugins/storage/s3-storage.js","plugin","plugins-file","critical","yes","yes","no","no","audit/subsystems/plugins-file.md"
|
|
122
|
-
"json-rest-api","quickTest.js","tooling","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
123
|
-
"json-rest-api","README.md","docs","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
124
|
-
"json-rest-api","scripts/run-docs.js","tooling","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
125
|
-
"json-rest-api","test-debug.js","tooling","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
126
|
-
"json-rest-api","tests/bulk-operations.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
127
|
-
"json-rest-api","tests/computed-fields.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
128
|
-
"json-rest-api","tests/cors.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
129
|
-
"json-rest-api","tests/curl.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
130
|
-
"json-rest-api","tests/custom-idproperty-relationships.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
131
|
-
"json-rest-api","tests/field-getters.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
132
|
-
"json-rest-api","tests/field-setters.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
133
|
-
"json-rest-api","tests/fixtures/api-configs.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
134
|
-
"json-rest-api","tests/helpers/storage-mode.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
135
|
-
"json-rest-api","tests/helpers/test-utils.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
136
|
-
"json-rest-api","tests/include-depth-validation.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
137
|
-
"json-rest-api","tests/includes.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
138
|
-
"json-rest-api","tests/multihome.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
139
|
-
"json-rest-api","tests/nested-includes.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
140
|
-
"json-rest-api","tests/ownership-optout.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
141
|
-
"json-rest-api","tests/pagination-cursor-multifield.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
142
|
-
"json-rest-api","tests/pagination-enhanced.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
143
|
-
"json-rest-api","tests/polymorphic-relationships.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
144
|
-
"json-rest-api","tests/polymorphic-simple.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
145
|
-
"json-rest-api","tests/positioning-advanced.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
146
|
-
"json-rest-api","tests/positioning-extended.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
147
|
-
"json-rest-api","tests/positioning-multifilter.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
148
|
-
"json-rest-api","tests/positioning.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
149
|
-
"json-rest-api","tests/queries.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
150
|
-
"json-rest-api","tests/query-limits.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
151
|
-
"json-rest-api","tests/README.md","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
152
|
-
"json-rest-api","tests/relationship-endpoints.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
153
|
-
"json-rest-api","tests/relationships.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
154
|
-
"json-rest-api","tests/rest-api-access.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
155
|
-
"json-rest-api","tests/rest-api.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
156
|
-
"json-rest-api","tests/searchschema-merge.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
157
|
-
"json-rest-api","tests/socketio.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
158
|
-
"json-rest-api","tests/TEST_TEMPLATE.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
159
|
-
"json-rest-api","tests/test-development-guide.md","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
160
|
-
"json-rest-api","tests/virtual-fields.test.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
161
|
-
"json-rest-api","TODO.todo","meta","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
162
|
-
"json-rest-schema",".gitignore","support","docs-drift","supporting","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
163
|
-
"json-rest-schema","eslint.config.js","meta","schema-core","supporting","pending","pending","no","no","audit/subsystems/schema-core.md"
|
|
164
|
-
"json-rest-schema","example.js","meta","schema-core","supporting","pending","pending","no","no","audit/subsystems/schema-core.md"
|
|
165
|
-
"json-rest-schema","FUTURE_MIGRATION_MODULE.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
166
|
-
"json-rest-schema","ONBOARDING.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
167
|
-
"json-rest-schema","package-lock.json","meta","schema-core","supporting","pending","pending","no","no","audit/subsystems/schema-core.md"
|
|
168
|
-
"json-rest-schema","package.json","meta","schema-core","supporting","pending","pending","no","no","audit/subsystems/schema-core.md"
|
|
169
|
-
"json-rest-schema","README.md","docs","docs-drift","important","pending","pending","no","no","audit/subsystems/docs-drift.md"
|
|
170
|
-
"json-rest-schema","src/CorePlugin.js","schema-runtime","schema-core","critical","yes","yes","yes","yes","audit/subsystems/schema-core.md"
|
|
171
|
-
"json-rest-schema","src/index.js","schema-runtime","schema-core","critical","yes","yes","yes","yes","audit/subsystems/schema-core.md"
|
|
172
|
-
"json-rest-schema","src/Schema.js","schema-runtime","schema-core","critical","yes","yes","yes","yes","audit/subsystems/schema-core.md"
|
|
173
|
-
"json-rest-schema","test-knex-table-real.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
|
174
|
-
"json-rest-schema","tests.js","tests","tests","important","pending","pending","no","no","audit/subsystems/tests.md"
|
package/audit/03-invariants.md
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
# Architecture Invariants (Final, non-anyapi)
|
|
2
|
-
|
|
3
|
-
Scope note: anyapi-specific code paths are excluded from invariant evaluation.
|
|
4
|
-
Status legend: `pass | fail | partial`.
|
|
5
|
-
Assertion tags: `[Verified]`, `[Inferred]`.
|
|
6
|
-
|
|
7
|
-
## Summary Table
|
|
8
|
-
|
|
9
|
-
| Invariant | Status | Confidence | Key evidence |
|
|
10
|
-
|---|---|---:|---|
|
|
11
|
-
| INV-001 Transactional mutation + rollback safety | fail | C5 | `patchRelationship` runtime `ReferenceError` in error path; catch handler broken |
|
|
12
|
-
| INV-002 Permission checks before irreversible side effects | pass | C4 | method ordering + access/multihome tests |
|
|
13
|
-
| INV-003 Validation/type normalization before query/write | pass | C4 | payload validators before data helpers; runtime malformed payload rejection |
|
|
14
|
-
| INV-004 Relationship semantics consistency across write + relationship endpoints | partial | C4 | post/delete endpoint pass + patch endpoint error-path defect |
|
|
15
|
-
| INV-005 idProperty consistency in query/write/transform/response | pass | C4 | compile + knex idProperty paths + custom idProperty tests |
|
|
16
|
-
| INV-006 Sparse fieldsets do not leak hidden/internal fields | pass | C4 | field helper behavior + virtual/computed/fieldset tests |
|
|
17
|
-
| INV-007 Include processing avoids N+1 in standard scenarios | partial | C3 | include correctness tests pass; no query-count budget assertions |
|
|
18
|
-
| INV-008 Error envelope consistency across transport and method paths | fail | C4 | CORS blocked-origin envelope mismatch + patchRelationship error-path mismatch |
|
|
19
|
-
| INV-009 Multi-tenant/ownership filters non-bypassable across alternate paths | partial | C3 | access/multihome checks pass; bypass matrix not exhaustive |
|
|
20
|
-
| INV-010 Plugin side effects scoped and contract-safe | partial | C4 | positioning test failures + inferred bulk optimization dead-path |
|
|
21
|
-
| INV-011 Docs claims match observed critical behavior | partial | C4 | `included` write docs/code mismatch; compliance wording drift |
|
|
22
|
-
| INV-012 Tests cover critical invariants (not just happy paths) | partial | C4 | broad suite + explicit gaps (skipped tests, missing patchRelationship regression) |
|
|
23
|
-
|
|
24
|
-
## INV-001 Transactional mutation + rollback safety
|
|
25
|
-
- [Verified][C5] `patch-relationship` catch path references undefined `handleWriteMethodError`, breaking canonical rollback/error handler path.
|
|
26
|
-
- Code evidence:
|
|
27
|
-
- [patch-relationship.js:52](/home/merc/Development/current/json-rest-api/plugins/core/rest-api-plugin-methods/patch-relationship.js:52)
|
|
28
|
-
- [common.js:198](/home/merc/Development/current/json-rest-api/plugins/core/rest-api-plugin-methods/common.js:198)
|
|
29
|
-
- Runtime evidence:
|
|
30
|
-
- [probe-patch-relationship-referenceerror.log](/home/merc/Development/current/json-rest-api/audit/evidence/runtime/probe-patch-relationship-referenceerror.log)
|
|
31
|
-
- Existing tests mapped:
|
|
32
|
-
- `tests/relationship-endpoints.test.js` covers post/delete but not patch failure path.
|
|
33
|
-
- Scenario validation:
|
|
34
|
-
- malformed relationship payload -> `ReferenceError: handleWriteMethodError is not defined`.
|
|
35
|
-
- Final: `fail`.
|
|
36
|
-
- Remediation pointer: `ROADMAP-A-001`.
|
|
37
|
-
|
|
38
|
-
## INV-002 Permission checks before irreversible side effects
|
|
39
|
-
- [Verified][C4] CRUD method paths call `scope.checkPermissions` before `helpers.dataPost|Put|Patch|Delete`.
|
|
40
|
-
- Code evidence: [post.js](/home/merc/Development/current/json-rest-api/plugins/core/rest-api-plugin-methods/post.js), [put.js](/home/merc/Development/current/json-rest-api/plugins/core/rest-api-plugin-methods/put.js), [patch.js](/home/merc/Development/current/json-rest-api/plugins/core/rest-api-plugin-methods/patch.js), [delete.js](/home/merc/Development/current/json-rest-api/plugins/core/rest-api-plugin-methods/delete.js).
|
|
41
|
-
- Test evidence: `tests/rest-api-access.test.js`, `tests/multihome.test.js`, `tests/ownership-optout.test.js` (all in full suite run).
|
|
42
|
-
- Final: `pass`.
|
|
43
|
-
|
|
44
|
-
## INV-003 Validation/type normalization before query construction and writes
|
|
45
|
-
- [Verified][C4] Method flows validate payload/query before storage helper calls.
|
|
46
|
-
- Code evidence: [payload-validators.js](/home/merc/Development/current/json-rest-api/plugins/core/lib/querying-writing/payload-validators.js), [query.js](/home/merc/Development/current/json-rest-api/plugins/core/rest-api-plugin-methods/query.js), [common.js](/home/merc/Development/current/json-rest-api/plugins/core/rest-api-plugin-methods/common.js).
|
|
47
|
-
- Runtime evidence: malformed relationship payload rejected in probe before successful write (`REST_API_PAYLOAD` emitted before endpoint-level failure masking).
|
|
48
|
-
- Final: `pass`.
|
|
49
|
-
|
|
50
|
-
## INV-004 Relationship semantics consistency across POST/PUT/PATCH + relationship endpoints
|
|
51
|
-
- [Verified][C4] POST/DELETE relationship endpoints pass in regression tests.
|
|
52
|
-
- [Verified][C5] PATCH relationship endpoint has broken failure semantics (`ReferenceError`).
|
|
53
|
-
- Evidence:
|
|
54
|
-
- [trace-relationship-endpoints.md](/home/merc/Development/current/json-rest-api/audit/traces/trace-relationship-endpoints.md)
|
|
55
|
-
- `audit/evidence/tests/npm-test-json-rest-api.log:5050,5060`
|
|
56
|
-
- Final: `partial`.
|
|
57
|
-
- Remediation pointer: `ROADMAP-A-001`, `ROADMAP-A-003`.
|
|
58
|
-
|
|
59
|
-
## INV-005 idProperty consistency in query/write/transform/response
|
|
60
|
-
- [Verified][C4] `idProperty` appears in compile metadata and knex read/write helpers.
|
|
61
|
-
- Code evidence: [compile-schemas.js](/home/merc/Development/current/json-rest-api/plugins/core/lib/querying-writing/compile-schemas.js), [rest-api-knex-plugin.js](/home/merc/Development/current/json-rest-api/plugins/core/rest-api-knex-plugin.js).
|
|
62
|
-
- Test evidence: `tests/custom-idproperty-relationships.test.js` passes in full run.
|
|
63
|
-
- Final: `pass`.
|
|
64
|
-
|
|
65
|
-
## INV-006 Sparse fieldsets do not leak hidden/internal fields
|
|
66
|
-
- [Verified][C4] field helper enforces hidden/sparse behavior and throws on unknown fields.
|
|
67
|
-
- Code evidence: [knex-field-helpers.js](/home/merc/Development/current/json-rest-api/plugins/core/lib/querying-writing/knex-field-helpers.js).
|
|
68
|
-
- Test evidence: `tests/virtual-fields.test.js`, `tests/computed-fields.test.js`, `tests/field-getters.test.js` pass in full suite.
|
|
69
|
-
- Final: `pass`.
|
|
70
|
-
|
|
71
|
-
## INV-007 Include processing avoids N+1 in standard scenarios
|
|
72
|
-
- [Verified][C3] include behavior is functionally correct in test suite.
|
|
73
|
-
- [Inferred][C3] batching present in include code; no direct query-count budget test.
|
|
74
|
-
- Evidence:
|
|
75
|
-
- [knex-relationship-includes.js](/home/merc/Development/current/json-rest-api/plugins/core/lib/querying/knex-relationship-includes.js)
|
|
76
|
-
- `tests/includes.test.js`, `tests/nested-includes.test.js`
|
|
77
|
-
- Final: `partial`.
|
|
78
|
-
- Remediation pointer: `ROADMAP-B-003`.
|
|
79
|
-
|
|
80
|
-
## INV-008 Error envelope consistency across transport and method paths
|
|
81
|
-
- [Verified][C4] CORS blocked-origin path returns `{ error: ... }` shape, diverging from JSON:API `errors` envelope.
|
|
82
|
-
- [Verified][C5] `patchRelationship` failure path returns runtime `ReferenceError` instead of normalized rest-api envelope.
|
|
83
|
-
- Evidence:
|
|
84
|
-
- [rest-api-cors-plugin.js:112](/home/merc/Development/current/json-rest-api/plugins/core/rest-api-cors-plugin.js:112)
|
|
85
|
-
- [probe-patch-relationship-referenceerror.log](/home/merc/Development/current/json-rest-api/audit/evidence/runtime/probe-patch-relationship-referenceerror.log)
|
|
86
|
-
- Final: `fail`.
|
|
87
|
-
- Remediation pointer: `ROADMAP-A-001`, `ROADMAP-B-002`.
|
|
88
|
-
|
|
89
|
-
## INV-009 Multi-tenant and ownership filters non-bypassable
|
|
90
|
-
- [Verified][C4] plugin-level filtering + permission checks exist and tests pass.
|
|
91
|
-
- [Inferred][C3] alternate-path bypass matrix (relationship endpoints + includes + custom filters) not exhaustively runtime-proven.
|
|
92
|
-
- Evidence:
|
|
93
|
-
- [rest-api-access.js](/home/merc/Development/current/json-rest-api/plugins/core/rest-api-access.js)
|
|
94
|
-
- [rest-api-multihome-plugin.js](/home/merc/Development/current/json-rest-api/plugins/core/rest-api-multihome-plugin.js)
|
|
95
|
-
- `tests/rest-api-access.test.js`, `tests/multihome.test.js`
|
|
96
|
-
- Final: `partial`.
|
|
97
|
-
- Remediation pointer: `ROADMAP-B-004`.
|
|
98
|
-
|
|
99
|
-
## INV-010 Plugin side effects remain scoped and contract-safe
|
|
100
|
-
- [Verified][C5] positioning plugin currently has failing multifilter edge tests.
|
|
101
|
-
- [Inferred][C3] bulk optimization hook may be non-executed/dead path.
|
|
102
|
-
- Evidence:
|
|
103
|
-
- `audit/evidence/tests/npm-test-json-rest-api.log:4235-4296`
|
|
104
|
-
- [bulk-operations-plugin.js](/home/merc/Development/current/json-rest-api/plugins/core/bulk-operations-plugin.js)
|
|
105
|
-
- Final: `partial`.
|
|
106
|
-
- Remediation pointer: `ROADMAP-A-002`, `ROADMAP-B-001`.
|
|
107
|
-
|
|
108
|
-
## INV-011 Documentation claims match observed behavior
|
|
109
|
-
- [Verified][C4] docs/comments claim patterns conflict with runtime behavior for write `included` handling.
|
|
110
|
-
- Evidence:
|
|
111
|
-
- [payload-validators.js](/home/merc/Development/current/json-rest-api/plugins/core/lib/querying-writing/payload-validators.js)
|
|
112
|
-
- [common.js](/home/merc/Development/current/json-rest-api/plugins/core/rest-api-plugin-methods/common.js)
|
|
113
|
-
- [docs-drift.md](/home/merc/Development/current/json-rest-api/audit/subsystems/docs-drift.md)
|
|
114
|
-
- Final: `partial`.
|
|
115
|
-
- Remediation pointer: `ROADMAP-B-005`.
|
|
116
|
-
|
|
117
|
-
## INV-012 Tests cover critical invariants beyond happy paths
|
|
118
|
-
- [Verified][C4] suite breadth is high, but critical gaps remain.
|
|
119
|
-
- Gap evidence:
|
|
120
|
-
- skipped cursor tests: [skipped-tests.txt](/home/merc/Development/current/json-rest-api/audit/evidence/tests/skipped-tests.txt)
|
|
121
|
-
- no direct regression for `patchRelationship` failure path before this audit probe.
|
|
122
|
-
- Final: `partial`.
|
|
123
|
-
- Remediation pointer: `ROADMAP-A-003`, `ROADMAP-B-003`.
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# Standards Rubric (M6, non-anyapi)
|
|
2
|
-
|
|
3
|
-
## Corpus freeze and sources
|
|
4
|
-
- JSON:API spec: `https://jsonapi.org/format/`
|
|
5
|
-
- HTTP Semantics: `https://www.rfc-editor.org/rfc/rfc9110`
|
|
6
|
-
- HTTP PATCH: `https://www.rfc-editor.org/rfc/rfc5789`
|
|
7
|
-
- Source snapshots:
|
|
8
|
-
- [standard-jsonapi-snippets.txt](/home/merc/Development/current/json-rest-api/audit/evidence/external/standard-jsonapi-snippets.txt)
|
|
9
|
-
- [standard-rfc-snippets.txt](/home/merc/Development/current/json-rest-api/audit/evidence/external/standard-rfc-snippets.txt)
|
|
10
|
-
|
|
11
|
-
Scoring scale: `1` poor, `3` mixed, `5` strong.
|
|
12
|
-
|
|
13
|
-
## Criteria IDs
|
|
14
|
-
- `STD-JAPI-01` JSON:API media/document envelope compliance.
|
|
15
|
-
- `STD-JAPI-02` Relationship endpoint semantics and consistency.
|
|
16
|
-
- `STD-HTTP-01` HTTP status code correctness.
|
|
17
|
-
- `STD-HTTP-02` PATCH semantics and failure atomicity handling.
|
|
18
|
-
- `STD-ERR-01` Error envelope quality/consistency.
|
|
19
|
-
- `STD-SEC-01` Secure defaults and trust-boundary explicitness.
|
|
20
|
-
- `STD-EXT-01` Extensibility/configurability hygiene.
|
|
21
|
-
- `STD-OBS-01` Observability/operability diagnostics.
|
|
22
|
-
- `STD-BC-01` Backward compatibility posture.
|
|
23
|
-
- `STD-DOC-01` Documentation reliability.
|
|
24
|
-
|
|
25
|
-
## Gap Matrix
|
|
26
|
-
|
|
27
|
-
| ID | Score | Evidence-backed assessment | Gap class | Severity | Confidence |
|
|
28
|
-
|---|---:|---|---|---|---|
|
|
29
|
-
| STD-JAPI-01 | 3.5 | Core JSON:API document structures and media-type handling are broadly implemented; explicit JSON:API error object support exists in error classes. | design choice | medium | C4 |
|
|
30
|
-
| STD-JAPI-02 | 2.5 | Relationship POST/DELETE endpoint paths pass; PATCH relationship error path is runtime-broken (`ReferenceError`), reducing conformance reliability. | defect | high | C5 |
|
|
31
|
-
| STD-HTTP-01 | 4.0 | Transport maps major codes (400/403/404/415/500) and method-specific 201/204 behavior correctly in most paths. | design choice | low | C4 |
|
|
32
|
-
| STD-HTTP-02 | 2.5 | PATCH baseline works for normal resource updates, but error-path handler defect in relationship PATCH violates robust failure handling expectations. | defect | high | C5 |
|
|
33
|
-
| STD-ERR-01 | 2.0 | Envelope inconsistency observed: CORS blocked-origin returns `{ error: ... }`; relationship PATCH can surface raw `ReferenceError`. | defect | high | C4 |
|
|
34
|
-
| STD-SEC-01 | 3.0 | Access/multitenancy plugins provide meaningful controls, but default CORS option combinations and error leakage behavior require explicit hardening guidance. | design choice | medium | C3 |
|
|
35
|
-
| STD-EXT-01 | 3.5 | Hook/plugin architecture is flexible; bulk optimization hook path appears under-specified in execution wiring. | design choice | medium | C3 |
|
|
36
|
-
| STD-OBS-01 | 3.0 | Logging is rich and structured, but unknown exceptions can surface raw messages; limited audit-style invariant telemetry. | design choice | medium | C3 |
|
|
37
|
-
| STD-BC-01 | 2.5 | No explicit compatibility matrix/deprecation contract found; test failures indicate regression detection exists but policy is implicit. | documentation drift | medium | C3 |
|
|
38
|
-
| STD-DOC-01 | 2.5 | Critical docs/comments drift found (`included` write behavior mismatch) and compliance language overstates edge consistency. | documentation drift | medium | C4 |
|
|
39
|
-
|
|
40
|
-
## Rule-by-rule evidence pointers
|
|
41
|
-
- Runtime and traces:
|
|
42
|
-
- [trace-write-patch.md](/home/merc/Development/current/json-rest-api/audit/traces/trace-write-patch.md)
|
|
43
|
-
- [trace-relationship-endpoints.md](/home/merc/Development/current/json-rest-api/audit/traces/trace-relationship-endpoints.md)
|
|
44
|
-
- [probe-patch-relationship-referenceerror.log](/home/merc/Development/current/json-rest-api/audit/evidence/runtime/probe-patch-relationship-referenceerror.log)
|
|
45
|
-
- Code:
|
|
46
|
-
- [patch-relationship.js](/home/merc/Development/current/json-rest-api/plugins/core/rest-api-plugin-methods/patch-relationship.js)
|
|
47
|
-
- [rest-api-cors-plugin.js](/home/merc/Development/current/json-rest-api/plugins/core/rest-api-cors-plugin.js)
|
|
48
|
-
- [express-plugin.js](/home/merc/Development/current/json-rest-api/plugins/core/connectors/express-plugin.js)
|
|
49
|
-
- [common.js](/home/merc/Development/current/json-rest-api/plugins/core/rest-api-plugin-methods/common.js)
|
|
50
|
-
- Docs drift:
|
|
51
|
-
- [docs-drift.md](/home/merc/Development/current/json-rest-api/audit/subsystems/docs-drift.md)
|
|
52
|
-
|
|
53
|
-
## Standards takeaways
|
|
54
|
-
- Strongest: method ordering discipline (validation/permissions before writes), broad JSON:API-oriented structure support, plugin extensibility.
|
|
55
|
-
- Weakest: failure-path consistency for relationship PATCH and error envelope uniformity.
|
|
56
|
-
- Immediate standards-critical fixes: `STD-JAPI-02`, `STD-HTTP-02`, `STD-ERR-01`.
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# Competitor Rubric (M6, non-anyapi)
|
|
2
|
-
|
|
3
|
-
## Comparator set (frozen)
|
|
4
|
-
1. `jsonapi-serializer`
|
|
5
|
-
2. `json-api-serializer`
|
|
6
|
-
3. `jsonapi-server` (used as closest available lineage for requested `@jsonapi/server`; npm package `@jsonapi/server` is not found)
|
|
7
|
-
4. `fortune` (+ JSON:API plugin model)
|
|
8
|
-
5. NestJS JSON:API ecosystem (`nestjs-json-api`, `@yaser2us/json-api-nestjs`)
|
|
9
|
-
6. `@jsonapi-serde/server` (+ `@jsonapi-serde/openapi`)
|
|
10
|
-
|
|
11
|
-
## Source evidence
|
|
12
|
-
- Package metadata and recency:
|
|
13
|
-
- [npm-competitor-metadata.txt](/home/merc/Development/current/json-rest-api/audit/evidence/external/npm-competitor-metadata.txt)
|
|
14
|
-
- [npm-jsonapi-server.txt](/home/merc/Development/current/json-rest-api/audit/evidence/external/npm-jsonapi-server.txt)
|
|
15
|
-
- [npm-modern-jsonapi-metadata.txt](/home/merc/Development/current/json-rest-api/audit/evidence/external/npm-modern-jsonapi-metadata.txt)
|
|
16
|
-
- Activity/adoption signal:
|
|
17
|
-
- [npm-download-signals.txt](/home/merc/Development/current/json-rest-api/audit/evidence/external/npm-download-signals.txt)
|
|
18
|
-
- Capability claims (maintainer readmes):
|
|
19
|
-
- [readme-jsonapi-serializer-signals.txt](/home/merc/Development/current/json-rest-api/audit/evidence/external/readme-jsonapi-serializer-signals.txt)
|
|
20
|
-
- [readme-json-api-serializer-signals.txt](/home/merc/Development/current/json-rest-api/audit/evidence/external/readme-json-api-serializer-signals.txt)
|
|
21
|
-
- [readme-jsonapi-server-signals.txt](/home/merc/Development/current/json-rest-api/audit/evidence/external/readme-jsonapi-server-signals.txt)
|
|
22
|
-
- [readme-fortune-signals.txt](/home/merc/Development/current/json-rest-api/audit/evidence/external/readme-fortune-signals.txt)
|
|
23
|
-
- [readme-nestjs-json-api-signals.txt](/home/merc/Development/current/json-rest-api/audit/evidence/external/readme-nestjs-json-api-signals.txt)
|
|
24
|
-
- [readme-yaser-json-api-nestjs-signals.txt](/home/merc/Development/current/json-rest-api/audit/evidence/external/readme-yaser-json-api-nestjs-signals.txt)
|
|
25
|
-
- [readme-jsonapi-serde-server.md](/home/merc/Development/current/json-rest-api/audit/evidence/external/readme-jsonapi-serde-server.md)
|
|
26
|
-
|
|
27
|
-
## Facts (separated from interpretation)
|
|
28
|
-
- [Fact] `@jsonapi/server` package is not available on npm (404 in metadata capture).
|
|
29
|
-
- [Fact] Recent updates (2026) are visible for `jsonapi-serializer` and `@jsonapi-serde/*`; several alternatives last modified in 2022.
|
|
30
|
-
- [Fact] Download volume is highest for serializer-focused packages; full-server JSON:API frameworks show lower monthly downloads.
|
|
31
|
-
- [Fact] `fortune` emphasizes graph relationships/inverse updates and adapter model; JSON:API is via plugin.
|
|
32
|
-
- [Fact] NestJS ecosystem options expose decorator-based CRUD/relationship endpoints and query features.
|
|
33
|
-
|
|
34
|
-
## Normalized scoring dimensions
|
|
35
|
-
Scoring scale: `1` weak, `3` mixed, `5` strong.
|
|
36
|
-
|
|
37
|
-
Dimensions:
|
|
38
|
-
- compliance depth
|
|
39
|
-
- architecture flexibility
|
|
40
|
-
- extensibility model
|
|
41
|
-
- relationship capability depth
|
|
42
|
-
- query/include sophistication
|
|
43
|
-
- performance strategy
|
|
44
|
-
- operational ergonomics
|
|
45
|
-
- security posture
|
|
46
|
-
- DX/migration complexity
|
|
47
|
-
- maintenance health
|
|
48
|
-
|
|
49
|
-
## Scored matrix (interpretation)
|
|
50
|
-
|
|
51
|
-
| Comparator | Compliance | Flexibility | Extensibility | Relationships | Query/Include | Performance | Ops ergonomics | Security posture | DX/migration | Maintenance |
|
|
52
|
-
|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|
|
|
53
|
-
| jsonapi-serializer | 2.5 | 4.0 | 3.0 | 2.0 | 1.0 | 4.0 | 4.0 | 3.0 | 4.5 | 5.0 |
|
|
54
|
-
| json-api-serializer | 2.5 | 4.0 | 3.0 | 2.0 | 1.0 | 4.0 | 3.5 | 3.0 | 4.0 | 2.0 |
|
|
55
|
-
| jsonapi-server | 3.5 | 3.0 | 3.0 | 3.5 | 3.0 | 2.5 | 2.5 | 2.5 | 3.0 | 2.0 |
|
|
56
|
-
| fortune (+JSON:API plugin) | 3.0 | 4.0 | 4.0 | 4.5 | 2.5 | 3.0 | 3.0 | 3.0 | 2.5 | 3.0 |
|
|
57
|
-
| NestJS JSON:API ecosystem | 3.0 | 3.5 | 3.5 | 4.0 | 3.5 | 3.0 | 3.5 | 3.5 | 3.5 | 3.0 |
|
|
58
|
-
| @jsonapi-serde/server | 2.5 | 4.0 | 4.0 | 2.0 | 1.0 | 4.0 | 3.5 | 3.0 | 3.5 | 5.0 |
|
|
59
|
-
|
|
60
|
-
## Positioning of this repo (non-anyapi)
|
|
61
|
-
- [Inferred][C4] `json-rest-api` is positioned as a full JSON:API-oriented server framework with richer runtime relationship/query behavior than serializer-only libraries.
|
|
62
|
-
- [Verified][C5] Current competitive weakness is failure-path reliability consistency (`patchRelationship` defect) and partial observability/contract consistency gaps.
|
|
63
|
-
|
|
64
|
-
## Strategic takeaways
|
|
65
|
-
- Must-copy patterns:
|
|
66
|
-
- Strongly typed/OpenAPI-adjacent tooling direction from `@jsonapi-serde/openapi`.
|
|
67
|
-
- Minimal-surface serializer ergonomics from `jsonapi-serializer` for simpler migration paths.
|
|
68
|
-
- Intentionally-different patterns:
|
|
69
|
-
- Keep hook/plugin orchestration and storage abstraction depth (a differentiator versus serializer-only tools).
|
|
70
|
-
- Keep relationship endpoint breadth and multihome/access plugin strategy.
|
|
71
|
-
- Avoid patterns:
|
|
72
|
-
- Aging/unmaintained core dependencies without clear ownership path.
|
|
73
|
-
- Config-driven magic that obscures failure semantics or transaction guarantees.
|
|
74
|
-
|
|
75
|
-
## Confidence notes
|
|
76
|
-
- Compliance/flexibility scores: `C3-C4` (feature claims mostly from readmes).
|
|
77
|
-
- Maintenance/adoption scores: `C5` (direct npm metadata/download signals).
|