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.
Files changed (260) hide show
  1. package/CLAUDE.md +1 -2
  2. package/JSKIT_BACKEND_MIGRATION_TRACKER.txt +180 -0
  3. package/SINGLE_VALIDATION_CONTRACT_TODO.txt +172 -0
  4. package/docs/API.md +51 -14
  5. package/docs/COMPARISON.md +2 -2
  6. package/docs/GUIDE/GUIDE_1_Initial_Setup.md +28 -1
  7. package/docs/GUIDE/GUIDE_2_2_Manipulating_And_Searching_Tables.md +5 -1
  8. package/docs/GUIDE/GUIDE_2_7_Pagination_And_Ordering.md +3 -1
  9. package/docs/GUIDE/GUIDE_2_8_Effects_of_PUT_and_PATCH.md +12 -60
  10. package/docs/GUIDE/GUIDE_2_Data_And_Relations.md +2 -2
  11. package/docs/GUIDE/GUIDE_3_Field_Transformations.md +5 -1
  12. package/docs/GUIDE/GUIDE_7_Hooks_Data_Management_And_Plugins.md +2 -0
  13. package/docs/GUIDE/GUIDE_X_Autofiltering.md +355 -0
  14. package/docs/GUIDE/GUIDE_X_Fastify.md +78 -0
  15. package/docs/GUIDE/GUIDE_X_Knex_Schema_And_Migrations.md +250 -0
  16. package/docs/GUIDE/GUIDE_X_Query_Projections.md +159 -0
  17. package/docs/GUIDE/GUIDE_X_Writing_Plugins.md +199 -0
  18. package/docs/GUIDE/index.md +18 -9
  19. package/docs/QUICKSTART.md +5 -1
  20. package/docs/index.md +1 -1
  21. package/index.js +3 -2
  22. package/package.json +2 -2
  23. package/plugins/core/connectors/express-plugin.js +97 -184
  24. package/plugins/core/connectors/fastify-plugin.js +206 -0
  25. package/plugins/core/connectors/lib/connector-core.js +195 -0
  26. package/plugins/core/connectors/lib/transport-http-helpers.js +122 -0
  27. package/plugins/core/connectors/lib/transport-route-schemas.js +92 -0
  28. package/plugins/core/lib/dbIntrospection.js +1078 -0
  29. package/plugins/core/lib/dbTablesOperations.js +1104 -160
  30. package/plugins/core/lib/querying/knex-json-api-transformers-querying.js +5 -2
  31. package/plugins/core/lib/querying/knex-process-includes.js +3 -4
  32. package/plugins/core/lib/querying/knex-query-helpers.js +17 -71
  33. package/plugins/core/lib/querying/knex-relationship-includes.js +466 -206
  34. package/plugins/core/lib/querying/query-builder-utils.js +19 -0
  35. package/plugins/core/lib/querying/query-field-sort-helpers.js +135 -0
  36. package/plugins/core/lib/querying/sort-helpers.js +33 -0
  37. package/plugins/core/lib/querying/storage-adapter-utils.js +51 -0
  38. package/plugins/core/lib/querying/url-helpers.js +8 -2
  39. package/plugins/core/lib/querying-writing/compile-schemas.js +12 -1
  40. package/plugins/core/lib/querying-writing/knex-field-helpers.js +83 -13
  41. package/plugins/core/lib/querying-writing/knex-json-api-transformers.js +13 -12
  42. package/plugins/core/lib/querying-writing/query-field-helpers.js +88 -0
  43. package/plugins/core/lib/querying-writing/request-contracts.js +590 -0
  44. package/plugins/core/lib/storage/canonical-storage-mapping.js +113 -0
  45. package/plugins/core/lib/storage/storage-adapter.js +79 -2
  46. package/plugins/core/lib/storage/storage-mapping.js +204 -0
  47. package/plugins/core/rest-api-anyapi-knex-plugin.js +355 -228
  48. package/plugins/core/rest-api-autofilter-plugin.js +414 -0
  49. package/plugins/core/rest-api-knex-plugin.js +249 -211
  50. package/plugins/core/rest-api-plugin-hooks/register-relationship-routes.js +10 -5
  51. package/plugins/core/rest-api-plugin-hooks/register-scope-routes.js +12 -6
  52. package/plugins/core/rest-api-plugin-methods/apply-query-filters.js +41 -0
  53. package/plugins/core/rest-api-plugin-methods/common.js +121 -83
  54. package/plugins/core/rest-api-plugin-methods/enrich-attributes.js +6 -1
  55. package/plugins/core/rest-api-plugin-methods/get.js +23 -14
  56. package/plugins/core/rest-api-plugin-methods/patch.js +28 -12
  57. package/plugins/core/rest-api-plugin-methods/post.js +13 -8
  58. package/plugins/core/rest-api-plugin-methods/put.js +45 -21
  59. package/plugins/core/rest-api-plugin-methods/query.js +15 -53
  60. package/plugins/core/rest-api-plugin.js +2 -0
  61. package/plugins/core/rest-api-positioning-plugin.js +1 -1
  62. package/plugins/core/rest-api-query-projections-plugin.js +130 -0
  63. package/plugins/core/socketio-plugin.js +1 -3
  64. package/tests/autofilter.test.js +463 -0
  65. package/tests/custom-id-simplified-post.test.js +75 -0
  66. package/tests/custom-idproperty-relationships.test.js +33 -0
  67. package/tests/db-introspection.test.js +518 -0
  68. package/tests/db-table-operations.test.js +781 -0
  69. package/tests/fastify-plugin.test.js +141 -0
  70. package/tests/field-getters.test.js +1 -2
  71. package/tests/field-setters.test.js +0 -4
  72. package/tests/fixtures/api-configs.js +188 -219
  73. package/tests/helpers/fake-fastify.js +99 -0
  74. package/tests/http-connectors-parity.test.js +235 -0
  75. package/tests/projected-fields.test.js +319 -0
  76. package/tests/relationships.test.js +3 -3
  77. package/tests/searchschema-knex-behavior.test.js +187 -0
  78. package/tests/searchschema-merge.test.js +21 -69
  79. package/tests/storage-mapping.test.js +210 -0
  80. package/audit/00-charter.md +0 -103
  81. package/audit/01-scope-map.md +0 -84
  82. package/audit/02-coverage-matrix.csv +0 -174
  83. package/audit/03-invariants.md +0 -123
  84. package/audit/04-standards-rubric.md +0 -56
  85. package/audit/05-competitor-rubric.md +0 -77
  86. package/audit/06-findings.md +0 -160
  87. package/audit/07-risk-register.csv +0 -10
  88. package/audit/08-remediation-roadmap.md +0 -177
  89. package/audit/09-signoff-check.md +0 -23
  90. package/audit/10-final-synthesis.md +0 -29
  91. package/audit/evidence/code/all-files-json-rest-api.txt +0 -168
  92. package/audit/evidence/code/all-files-json-rest-schema.txt +0 -12
  93. package/audit/evidence/code/boundary-leak-checks.txt +0 -72
  94. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__bulk-operations-plugin.js.txt +0 -480
  95. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__connectors__express-plugin.js.txt +0 -532
  96. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__connectors__lib__busboy-detector.js.txt +0 -175
  97. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__connectors__lib__formidable-detector.js.txt +0 -138
  98. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__connectors__lib__request-helpers.js.txt +0 -222
  99. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__file-handling-plugin.js.txt +0 -342
  100. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__dbTablesOperations.js.txt +0 -304
  101. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__fractional-positioning.js.txt +0 -188
  102. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__compile-schemas.js.txt +0 -336
  103. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__connectors-query-parser.js.txt +0 -165
  104. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__database-capabilities.js.txt +0 -265
  105. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__database-value-normalizers.js.txt +0 -369
  106. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__default-data-helpers.js.txt +0 -72
  107. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__field-utils.js.txt +0 -139
  108. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__knex-constants.js.txt +0 -45
  109. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__knex-field-helpers.js.txt +0 -396
  110. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__knex-json-api-transformers.js.txt +0 -162
  111. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__payload-validators.js.txt +0 -1314
  112. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__schema-helpers.js.txt +0 -488
  113. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__scope-validations.js.txt +0 -484
  114. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying-writing__simplified-helpers.js.txt +0 -857
  115. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-cross-table-search.js.txt +0 -565
  116. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-json-api-transformers-querying.js.txt +0 -485
  117. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-pagination-helpers.js.txt +0 -560
  118. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-process-includes.js.txt +0 -167
  119. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-query-helpers-base.js.txt +0 -109
  120. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-query-helpers.js.txt +0 -1064
  121. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-relationship-includes.js.txt +0 -1983
  122. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__knex-window-queries.js.txt +0 -328
  123. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__querying__url-helpers.js.txt +0 -119
  124. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__storage__storage-adapter.js.txt +0 -160
  125. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__writing__many-to-many-manipulations.js.txt +0 -300
  126. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__lib__writing__relationship-processor.js.txt +0 -245
  127. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-access.js.txt +0 -459
  128. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-cors-plugin.js.txt +0 -237
  129. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-knex-plugin.js.txt +0 -1135
  130. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-multihome-plugin.js.txt +0 -314
  131. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-hooks__compile-resource-schemas.js.txt +0 -7
  132. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-hooks__register-relationship-routes.js.txt +0 -71
  133. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-hooks__register-scope-routes.js.txt +0 -102
  134. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-hooks__turn-scope-init-into-vars.js.txt +0 -49
  135. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-hooks__validate-include-configurations.js.txt +0 -39
  136. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__add-route.js.txt +0 -23
  137. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__check-permissions.js.txt +0 -13
  138. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__common.js.txt +0 -639
  139. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__delete-relationship.js.txt +0 -117
  140. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__delete.js.txt +0 -104
  141. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__enrich-attributes.js.txt +0 -199
  142. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__get-related.js.txt +0 -353
  143. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__get-relationship.js.txt +0 -61
  144. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__get.js.txt +0 -184
  145. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__patch-relationship.js.txt +0 -55
  146. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__patch.js.txt +0 -191
  147. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__post-relationship.js.txt +0 -110
  148. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__post.js.txt +0 -168
  149. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__put.js.txt +0 -253
  150. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__query.js.txt +0 -207
  151. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin-methods__release.js.txt +0 -12
  152. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-plugin.js.txt +0 -165
  153. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__rest-api-positioning-plugin.js.txt +0 -668
  154. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__core__socketio-plugin.js.txt +0 -621
  155. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__storage__local-storage.js.txt +0 -218
  156. package/audit/evidence/code/critical-pass1/json-rest-api__plugins__storage__s3-storage.js.txt +0 -124
  157. package/audit/evidence/code/critical-pass1/json-rest-schema__src__CorePlugin.js.txt +0 -269
  158. package/audit/evidence/code/critical-pass1/json-rest-schema__src__Schema.js.txt +0 -242
  159. package/audit/evidence/code/critical-pass1/json-rest-schema__src__index.js.txt +0 -77
  160. package/audit/evidence/code/critical-pass1-risk-keywords.txt +0 -238
  161. package/audit/evidence/code/critical-pass1-summary.csv +0 -67
  162. package/audit/evidence/code/critical-pass2-summary.csv +0 -67
  163. package/audit/evidence/code/early-silent-zones-no-test-token.txt +0 -57
  164. package/audit/evidence/code/error-model-signals.txt +0 -98
  165. package/audit/evidence/code/git-files-json-rest-api.txt +0 -171
  166. package/audit/evidence/code/git-files-json-rest-schema.txt +0 -27
  167. package/audit/evidence/code/hook-flow-signals.txt +0 -282
  168. package/audit/evidence/code/idproperty-signals.txt +0 -157
  169. package/audit/evidence/code/import-cycles-non-anyapi.txt +0 -3
  170. package/audit/evidence/code/import-hotspots-non-anyapi.txt +0 -96
  171. package/audit/evidence/code/imports-json-rest-api.txt +0 -354
  172. package/audit/evidence/code/imports-json-rest-schema.txt +0 -15
  173. package/audit/evidence/code/in-scope-files-json-rest-api.txt +0 -160
  174. package/audit/evidence/code/in-scope-files-json-rest-schema.txt +0 -13
  175. package/audit/evidence/code/non-anyapi-core-files.txt +0 -101
  176. package/audit/evidence/code/permission-signals.txt +0 -193
  177. package/audit/evidence/code/query-include-signals.txt +0 -687
  178. package/audit/evidence/code/transaction-signals.txt +0 -28
  179. package/audit/evidence/code/validation-signals.txt +0 -650
  180. package/audit/evidence/code/write-path-signals.txt +0 -61
  181. package/audit/evidence/docs/docs-claims-signals.txt +0 -1075
  182. package/audit/evidence/docs/schema-docs-claims-signals.txt +0 -179
  183. package/audit/evidence/external/corpus-freeze.md +0 -21
  184. package/audit/evidence/external/npm-competitor-metadata.txt +0 -70
  185. package/audit/evidence/external/npm-download-signals.txt +0 -23
  186. package/audit/evidence/external/npm-jsonapi-server.txt +0 -8
  187. package/audit/evidence/external/npm-modern-jsonapi-metadata.txt +0 -38
  188. package/audit/evidence/external/readme-fortune-signals.txt +0 -26
  189. package/audit/evidence/external/readme-fortune.md +0 -165
  190. package/audit/evidence/external/readme-json-api-serializer-signals.txt +0 -80
  191. package/audit/evidence/external/readme-json-api-serializer.md +0 -690
  192. package/audit/evidence/external/readme-jsonapi-serde-server-signals.txt +0 -0
  193. package/audit/evidence/external/readme-jsonapi-serde-server.md +0 -22
  194. package/audit/evidence/external/readme-jsonapi-serializer-signals.txt +0 -63
  195. package/audit/evidence/external/readme-jsonapi-serializer.md +0 -315
  196. package/audit/evidence/external/readme-jsonapi-server-signals.txt +0 -19
  197. package/audit/evidence/external/readme-jsonapi-server.md +0 -104
  198. package/audit/evidence/external/readme-nestjs-json-api-signals.txt +0 -4
  199. package/audit/evidence/external/readme-nestjs-json-api.md +0 -94
  200. package/audit/evidence/external/readme-yaser-json-api-nestjs-signals.txt +0 -47
  201. package/audit/evidence/external/readme-yaser-json-api-nestjs.md +0 -447
  202. package/audit/evidence/external/standard-jsonapi-snippets.txt +0 -84
  203. package/audit/evidence/external/standard-rfc-snippets.txt +0 -168
  204. package/audit/evidence/external/standards-sources.txt +0 -6
  205. package/audit/evidence/runtime/baseline-commits.txt +0 -2
  206. package/audit/evidence/runtime/db-adapter-assumptions.txt +0 -3
  207. package/audit/evidence/runtime/environment.txt +0 -4
  208. package/audit/evidence/runtime/invariant-runtime-mapping.md +0 -38
  209. package/audit/evidence/runtime/probe-patch-relationship-error.exitcode +0 -1
  210. package/audit/evidence/runtime/probe-patch-relationship-error.log +0 -76
  211. package/audit/evidence/runtime/probe-patch-relationship-error.mjs +0 -67
  212. package/audit/evidence/runtime/probe-patch-relationship-referenceerror.exitcode +0 -1
  213. package/audit/evidence/runtime/probe-patch-relationship-referenceerror.log +0 -62
  214. package/audit/evidence/runtime/probe-patch-relationship-referenceerror.mjs +0 -47
  215. package/audit/evidence/runtime/test-exitcodes.txt +0 -4
  216. package/audit/evidence/runtime/test-summary.md +0 -107
  217. package/audit/evidence/runtime/trace-anchors.txt +0 -61
  218. package/audit/evidence/tests/access-multitenancy-test-signals.txt +0 -125
  219. package/audit/evidence/tests/failing-tests-summary.txt +0 -25
  220. package/audit/evidence/tests/npm-test-json-rest-api.exitcode +0 -1
  221. package/audit/evidence/tests/npm-test-json-rest-api.log +0 -5885
  222. package/audit/evidence/tests/npm-test-json-rest-schema.exitcode +0 -1
  223. package/audit/evidence/tests/npm-test-json-rest-schema.log +0 -356
  224. package/audit/evidence/tests/query-include-test-signals.txt +0 -948
  225. package/audit/evidence/tests/relationship-test-signals.txt +0 -223
  226. package/audit/evidence/tests/skipped-tests.txt +0 -10
  227. package/audit/evidence/tests/test-suite-list-non-anyapi.txt +0 -30
  228. package/audit/evidence/tests/test-suite-list.txt +0 -32
  229. package/audit/subsystems/docs-drift.md +0 -49
  230. package/audit/subsystems/pass2-cross-review.md +0 -131
  231. package/audit/subsystems/plugins-access.md +0 -51
  232. package/audit/subsystems/plugins-bulk.md +0 -50
  233. package/audit/subsystems/plugins-cors.md +0 -48
  234. package/audit/subsystems/plugins-file.md +0 -53
  235. package/audit/subsystems/plugins-multihome.md +0 -50
  236. package/audit/subsystems/plugins-positioning.md +0 -54
  237. package/audit/subsystems/plugins-socketio.md +0 -50
  238. package/audit/subsystems/query-engine.md +0 -61
  239. package/audit/subsystems/relationships.md +0 -55
  240. package/audit/subsystems/rest-orchestration.md +0 -66
  241. package/audit/subsystems/schema-core.md +0 -64
  242. package/audit/subsystems/storage-knex.md +0 -57
  243. package/audit/subsystems/tests.md +0 -48
  244. package/audit/subsystems/transport-express.md +0 -55
  245. package/audit/traces/trace-read-get.md +0 -22
  246. package/audit/traces/trace-read-query.md +0 -25
  247. package/audit/traces/trace-relationship-endpoints.md +0 -31
  248. package/audit/traces/trace-write-delete.md +0 -17
  249. package/audit/traces/trace-write-patch.md +0 -26
  250. package/audit/traces/trace-write-post.md +0 -22
  251. package/audit/traces/trace-write-put.md +0 -23
  252. package/docs/GUIDE/GUIDE_4_Authentication_And_Permissions.md +0 -707
  253. package/docs/GUIDE/GUIDE_X_Multihome.md +0 -666
  254. package/plugins/core/lib/querying-writing/payload-validators.js +0 -1314
  255. package/plugins/core/rest-api-access.js +0 -459
  256. package/plugins/core/rest-api-multihome-plugin.js +0 -314
  257. package/tests/multihome.test.js +0 -553
  258. package/tests/multihome.test.js.bak +0 -550
  259. package/tests/ownership-optout.test.js +0 -76
  260. package/tests/rest-api-access.test.js +0 -206
@@ -1,356 +0,0 @@
1
-
2
- > json-rest-schema@1.0.12 test
3
- > node --test tests.js test-knex-table-real.js
4
-
5
- TAP version 13
6
- # file:///home/merc/Development/current/json-rest-schema/test-knex-table-real.js:8
7
- # import { createSchema, createKnexTable, generateKnexMigration } from './src/index.js'
8
- # ^^^^^^^^^^^^^^^
9
- # SyntaxError: The requested module './src/index.js' does not provide an export named 'createKnexTable'
10
- # at ModuleJob._instantiate (node:internal/modules/esm/module_job:175:21)
11
- # at async ModuleJob.run (node:internal/modules/esm/module_job:258:5)
12
- # at async ModuleLoader.import (node:internal/modules/esm/loader:540:24)
13
- # at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:117:5)
14
- # Node.js v20.19.0
15
- # Subtest: /home/merc/Development/current/json-rest-schema/test-knex-table-real.js
16
- not ok 1 - /home/merc/Development/current/json-rest-schema/test-knex-table-real.js
17
- ---
18
- duration_ms: 62.657109
19
- location: '/home/merc/Development/current/json-rest-schema/test-knex-table-real.js:1:1'
20
- failureType: 'testCodeFailure'
21
- exitCode: 1
22
- signal: ~
23
- error: 'test failed'
24
- code: 'ERR_TEST_FAILURE'
25
- ...
26
- # Subtest: 1. Core API (`createSchema`)
27
- # Subtest: should export a function `createSchema`
28
- ok 1 - should export a function `createSchema`
29
- ---
30
- duration_ms: 1.188615
31
- ...
32
- # Subtest: should have `use`, `addType`, and `addValidator` methods on the factory
33
- ok 2 - should have `use`, `addType`, and `addValidator` methods on the factory
34
- ---
35
- duration_ms: 0.154363
36
- ...
37
- # Subtest: `createSchema(structure)` should return an instance of Schema
38
- ok 3 - `createSchema(structure)` should return an instance of Schema
39
- ---
40
- duration_ms: 0.203725
41
- ...
42
- # Subtest: should allow adding a type handler and using it
43
- ok 4 - should allow adding a type handler and using it
44
- ---
45
- duration_ms: 0.557529
46
- ...
47
- # Subtest: should allow adding a validator and using it
48
- ok 5 - should allow adding a validator and using it
49
- ---
50
- duration_ms: 0.42148
51
- ...
52
- # Subtest: should throw when adding a non-function type handler
53
- ok 6 - should throw when adding a non-function type handler
54
- ---
55
- duration_ms: 0.45361
56
- ...
57
- # Subtest: should throw when adding a non-function validator handler
58
- ok 7 - should throw when adding a non-function validator handler
59
- ---
60
- duration_ms: 0.187978
61
- ...
62
- # Subtest: should throw when using a plugin without an `install` method
63
- ok 8 - should throw when using a plugin without an `install` method
64
- ---
65
- duration_ms: 0.177465
66
- ...
67
- 1..8
68
- ok 2 - 1. Core API (`createSchema`)
69
- ---
70
- duration_ms: 5.199871
71
- type: 'suite'
72
- ...
73
- # Subtest: 2. Core Validation Logic (`Schema.js`)
74
- # Subtest: should return no errors for a valid object
75
- ok 1 - should return no errors for a valid object
76
- ---
77
- duration_ms: 0.431981
78
- ...
79
- # Subtest: should return a `FIELD_NOT_ALLOWED` error for spurious fields
80
- ok 2 - should return a `FIELD_NOT_ALLOWED` error for spurious fields
81
- ---
82
- duration_ms: 0.28245
83
- ...
84
- # Subtest: should correctly handle the `required` validator
85
- ok 3 - should correctly handle the `required` validator
86
- ---
87
- duration_ms: 0.213408
88
- ...
89
- # Subtest: should return a `NOT_NULLABLE` error if a field is null but not allowed to be
90
- ok 4 - should return a `NOT_NULLABLE` error if a field is null but not allowed to be
91
- ---
92
- duration_ms: 0.246146
93
- ...
94
- # Subtest: should allow null if `nullable` is true
95
- ok 5 - should allow null if `nullable` is true
96
- ---
97
- duration_ms: 0.218771
98
- ...
99
- # Subtest: should cast empty string to null if `nullOnEmpty` is true
100
- ok 6 - should cast empty string to null if `nullOnEmpty` is true
101
- ---
102
- duration_ms: 0.290184
103
- ...
104
- # Subtest: should apply defaultTo values even when the object has validation errors
105
- ok 7 - should apply defaultTo values even when the object has validation errors
106
- ---
107
- duration_ms: 0.295443
108
- ...
109
- # Subtest: Validation Options
110
- # Subtest: `onlyObjectValues`: should only validate fields present in the input object
111
- ok 1 - `onlyObjectValues`: should only validate fields present in the input object
112
- ---
113
- duration_ms: 0.3571
114
- ...
115
- # Subtest: `skipFields`: should completely ignore specified fields
116
- ok 2 - `skipFields`: should completely ignore specified fields
117
- ---
118
- duration_ms: 0.298076
119
- ...
120
- # Subtest: `skipParams`: should skip specific validators on a field
121
- ok 3 - `skipParams`: should skip specific validators on a field
122
- ---
123
- duration_ms: 0.427076
124
- ...
125
- 1..3
126
- ok 8 - Validation Options
127
- ---
128
- duration_ms: 1.326774
129
- type: 'suite'
130
- ...
131
- # Subtest: `cleanup` method should work correctly
132
- ok 9 - `cleanup` method should work correctly
133
- ---
134
- duration_ms: 1.514896
135
- ...
136
- 1..9
137
- ok 3 - 2. Core Validation Logic (`Schema.js`)
138
- ---
139
- duration_ms: 5.311977
140
- type: 'suite'
141
- ...
142
- # Subtest: 3. Core Plugin: Type Handlers
143
- # Subtest: type:'none' should process input 123 to 123
144
- ok 1 - type:'none' should process input 123 to 123
145
- ---
146
- duration_ms: 0.503625
147
- ...
148
- # Subtest: type:'none' should process input {"a":1} to {"a":1}
149
- ok 2 - type:'none' should process input {"a":1} to {"a":1}
150
- ---
151
- duration_ms: 0.1565
152
- ...
153
- # Subtest: type:'string' should process input " test " to "test"
154
- ok 3 - type:'string' should process input " test " to "test"
155
- ---
156
- duration_ms: 0.127482
157
- ...
158
- # Subtest: type:'string' should process input " test " to " test "
159
- ok 4 - type:'string' should process input " test " to " test "
160
- ---
161
- duration_ms: 0.121573
162
- ...
163
- # Subtest: type:'string' should process input 123 to "123"
164
- ok 5 - type:'string' should process input 123 to "123"
165
- ---
166
- duration_ms: 0.429618
167
- ...
168
- # Subtest: type:'string' should fail for input: null
169
- ok 6 - type:'string' should fail for input: null
170
- ---
171
- duration_ms: 0.123805
172
- ...
173
- # Subtest: type:'string' should process input undefined to undefined
174
- ok 7 - type:'string' should process input undefined to undefined
175
- ---
176
- duration_ms: 0.142269
177
- ...
178
- # Subtest: type:'string' should fail for input: {}
179
- ok 8 - type:'string' should fail for input: {}
180
- ---
181
- duration_ms: 0.203089
182
- ...
183
- # Subtest: type:'number' should process input "42.5" to 42.5
184
- ok 9 - type:'number' should process input "42.5" to 42.5
185
- ---
186
- duration_ms: 0.239855
187
- ...
188
- # Subtest: type:'number' should process input "" to 0
189
- ok 10 - type:'number' should process input "" to 0
190
- ---
191
- duration_ms: 0.11886
192
- ...
193
- # Subtest: type:'number' should fail for input: null
194
- ok 11 - type:'number' should fail for input: null
195
- ---
196
- duration_ms: 0.107555
197
- ...
198
- # Subtest: type:'number' should fail for input: "abc"
199
- ok 12 - type:'number' should fail for input: "abc"
200
- ---
201
- duration_ms: 0.222444
202
- ...
203
- # Subtest: type:'timestamp' should process input 1672531200000 to 1672531200000
204
- ok 13 - type:'timestamp' should process input 1672531200000 to 1672531200000
205
- ---
206
- duration_ms: 0.509408
207
- ...
208
- # Subtest: type:'timestamp' should process input "0" to null
209
- ok 14 - type:'timestamp' should process input "0" to null
210
- ---
211
- duration_ms: 0.371079
212
- ...
213
- # Subtest: type:'timestamp' should fail for input: "abc"
214
- ok 15 - type:'timestamp' should fail for input: "abc"
215
- ---
216
- duration_ms: 0.177614
217
- ...
218
- # Subtest: type:'dateTime' should process input "2025-01-01T12:30:00Z" to "2025-01-01T12:30:00.000Z"
219
- ok 16 - type:'dateTime' should process input "2025-01-01T12:30:00Z" to "2025-01-01T12:30:00.000Z"
220
- ---
221
- duration_ms: 0.509069
222
- ...
223
- # Subtest: type:'dateTime' should process input "invalid" to null
224
- ok 17 - type:'dateTime' should process input "invalid" to null
225
- ---
226
- duration_ms: 0.372726
227
- ...
228
- # Subtest: type:'date' should process input "2025-01-01T12:30:00Z" to "2025-01-01T00:00:00.000Z"
229
- ok 18 - type:'date' should process input "2025-01-01T12:30:00Z" to "2025-01-01T00:00:00.000Z"
230
- ---
231
- duration_ms: 0.644094
232
- ...
233
- # Subtest: type:'date' should process input "2025-01-01" to "2025-01-01T00:00:00.000Z"
234
- ok 19 - type:'date' should process input "2025-01-01" to "2025-01-01T00:00:00.000Z"
235
- ---
236
- duration_ms: 0.345422
237
- ...
238
- # Subtest: type:'array' should process input "one" to ["one"]
239
- ok 20 - type:'array' should process input "one" to ["one"]
240
- ---
241
- duration_ms: 0.319356
242
- ...
243
- # Subtest: type:'array' should process input ["one","two"] to ["one","two"]
244
- ok 21 - type:'array' should process input ["one","two"] to ["one","two"]
245
- ---
246
- duration_ms: 0.227224
247
- ...
248
- # Subtest: type:'boolean' should process input "true" to true
249
- ok 22 - type:'boolean' should process input "true" to true
250
- ---
251
- duration_ms: 0.337235
252
- ...
253
- # Subtest: type:'boolean' should process input "on" to true
254
- ok 23 - type:'boolean' should process input "on" to true
255
- ---
256
- duration_ms: 0.38783
257
- ...
258
- # Subtest: type:'boolean' should process input "false" to false
259
- ok 24 - type:'boolean' should process input "false" to false
260
- ---
261
- duration_ms: 0.151125
262
- ...
263
- # Subtest: type:'boolean' should process input 1 to true
264
- ok 25 - type:'boolean' should process input 1 to true
265
- ---
266
- duration_ms: 0.206207
267
- ...
268
- # Subtest: type:'boolean' should process input 0 to false
269
- ok 26 - type:'boolean' should process input 0 to false
270
- ---
271
- duration_ms: 0.125641
272
- ...
273
- # Subtest: type:'boolean' should process input "no" to false
274
- ok 27 - type:'boolean' should process input "no" to false
275
- ---
276
- duration_ms: 0.210439
277
- ...
278
- # Subtest: type:'id' should process input "123" to 123
279
- ok 28 - type:'id' should process input "123" to 123
280
- ---
281
- duration_ms: 0.348163
282
- ...
283
- # Subtest: type:'id' should fail for input: "id-123"
284
- ok 29 - type:'id' should fail for input: "id-123"
285
- ---
286
- duration_ms: 0.308776
287
- ...
288
- # Subtest: type:'serialize' should process an object to a string
289
- ok 30 - type:'serialize' should process an object to a string
290
- ---
291
- duration_ms: 0.534748
292
- ...
293
- # Subtest: type:`serialize` should handle circular references
294
- ok 31 - type:`serialize` should handle circular references
295
- ---
296
- duration_ms: 1.331675
297
- ...
298
- 1..31
299
- ok 4 - 3. Core Plugin: Type Handlers
300
- ---
301
- duration_ms: 11.36291
302
- type: 'suite'
303
- ...
304
- # Subtest: 4. Core Plugin: Validator Handlers
305
- # Subtest: `min`/`max` validators should work for numbers, `minLength`/`maxLength` for strings
306
- ok 1 - `min`/`max` validators should work for numbers, `minLength`/`maxLength` for strings
307
- ---
308
- duration_ms: 1.125145
309
- ...
310
- # Subtest: `validator` should work with a custom function (sync and async)
311
- ok 2 - `validator` should work with a custom function (sync and async)
312
- ---
313
- duration_ms: 46.715326
314
- ...
315
- # Subtest: `uppercase`/`lowercase` should transform strings
316
- ok 3 - `uppercase`/`lowercase` should transform strings
317
- ---
318
- duration_ms: 0.547645
319
- ...
320
- # Subtest: `length` should truncate strings and error on long numbers
321
- ok 4 - `length` should truncate strings and error on long numbers
322
- ---
323
- duration_ms: 0.409615
324
- ...
325
- # Subtest: `notEmpty` should fail on empty strings
326
- ok 5 - `notEmpty` should fail on empty strings
327
- ---
328
- duration_ms: 0.339048
329
- ...
330
- 1..5
331
- ok 5 - 4. Core Plugin: Validator Handlers
332
- ---
333
- duration_ms: 49.558661
334
- type: 'suite'
335
- ...
336
- # Subtest: 5. Extensibility: Custom Plugins
337
- # Subtest: should allow defining and using a custom plugin
338
- ok 1 - should allow defining and using a custom plugin
339
- ---
340
- duration_ms: 0.770699
341
- ...
342
- 1..1
343
- ok 6 - 5. Extensibility: Custom Plugins
344
- ---
345
- duration_ms: 0.913155
346
- type: 'suite'
347
- ...
348
- 1..6
349
- # tests 57
350
- # suites 6
351
- # pass 56
352
- # fail 1
353
- # cancelled 0
354
- # skipped 0
355
- # todo 0
356
- # duration_ms 163.644013