fastify-auto-sqlapi 0.1.14 → 0.2.0

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 (83) hide show
  1. package/AGENTS_BACKEND.md +4 -4
  2. package/BREAKING_CHANGES.md +5 -5
  3. package/README.md +1 -1
  4. package/dist/bin/generate-schema.js +89 -77
  5. package/dist/bin/generate-tables.js +72 -62
  6. package/dist/bin/utils.d.ts.map +1 -1
  7. package/dist/bin/utils.js +47 -33
  8. package/dist/lib/agent/manifest.d.ts +3 -2
  9. package/dist/lib/agent/manifest.d.ts.map +1 -1
  10. package/dist/lib/agent/manifest.js +102 -80
  11. package/dist/lib/cli/mysql-introspect.d.ts +4 -9
  12. package/dist/lib/cli/mysql-introspect.d.ts.map +1 -1
  13. package/dist/lib/cli/mysql-introspect.js +8 -7
  14. package/dist/lib/cli/pg-introspect.d.ts.map +1 -1
  15. package/dist/lib/cli/pg-introspect.js +0 -1
  16. package/dist/lib/cli/schema-codegen.d.ts +3 -0
  17. package/dist/lib/cli/schema-codegen.d.ts.map +1 -1
  18. package/dist/lib/cli/schema-codegen.js +3 -0
  19. package/dist/lib/cli/tables-codegen.d.ts +8 -1
  20. package/dist/lib/cli/tables-codegen.d.ts.map +1 -1
  21. package/dist/lib/cli/tables-codegen.js +100 -118
  22. package/dist/lib/condition-methods.d.ts +14 -4
  23. package/dist/lib/condition-methods.d.ts.map +1 -1
  24. package/dist/lib/condition-methods.js +18 -4
  25. package/dist/lib/db.d.ts +1 -1
  26. package/dist/lib/db.d.ts.map +1 -1
  27. package/dist/lib/db.js +16 -4
  28. package/dist/lib/dialect.d.ts +2 -1
  29. package/dist/lib/dialect.d.ts.map +1 -1
  30. package/dist/lib/engine/bulk/bulk-upsert.d.ts.map +1 -1
  31. package/dist/lib/engine/bulk/bulk-upsert.js +42 -35
  32. package/dist/lib/engine/rest/delete.d.ts.map +1 -1
  33. package/dist/lib/engine/rest/get.d.ts.map +1 -1
  34. package/dist/lib/engine/rest/insert.d.ts.map +1 -1
  35. package/dist/lib/engine/rest/insert.js +1 -1
  36. package/dist/lib/engine/rest/update.d.ts.map +1 -1
  37. package/dist/lib/engine/rest/update.js +25 -18
  38. package/dist/lib/engine/search/aggregations.d.ts +33 -0
  39. package/dist/lib/engine/search/aggregations.d.ts.map +1 -0
  40. package/dist/lib/engine/search/aggregations.js +109 -0
  41. package/dist/lib/engine/search/conditions.d.ts +31 -0
  42. package/dist/lib/engine/search/conditions.d.ts.map +1 -0
  43. package/dist/lib/engine/search/conditions.js +131 -0
  44. package/dist/lib/engine/search/fields.d.ts +49 -0
  45. package/dist/lib/engine/search/fields.d.ts.map +1 -0
  46. package/dist/lib/engine/search/fields.js +142 -0
  47. package/dist/lib/engine/search/join-families.d.ts +35 -0
  48. package/dist/lib/engine/search/join-families.d.ts.map +1 -0
  49. package/dist/lib/engine/search/join-families.js +345 -0
  50. package/dist/lib/engine/search/joins.d.ts +55 -0
  51. package/dist/lib/engine/search/joins.d.ts.map +1 -0
  52. package/dist/lib/engine/search/joins.js +81 -0
  53. package/dist/lib/engine/search/order-by.d.ts +35 -0
  54. package/dist/lib/engine/search/order-by.d.ts.map +1 -0
  55. package/dist/lib/engine/search/order-by.js +104 -0
  56. package/dist/lib/engine/search/search.d.ts.map +1 -1
  57. package/dist/lib/engine/search/search.js +101 -787
  58. package/dist/lib/engine/validate.d.ts +0 -5
  59. package/dist/lib/engine/validate.d.ts.map +1 -1
  60. package/dist/lib/engine/write-helpers.d.ts +25 -17
  61. package/dist/lib/engine/write-helpers.d.ts.map +1 -1
  62. package/dist/lib/engine/write-helpers.js +86 -44
  63. package/dist/lib/read-access.d.ts +12 -1
  64. package/dist/lib/read-access.d.ts.map +1 -1
  65. package/dist/lib/read-access.js +20 -4
  66. package/dist/lib/schema/helpers.d.ts +0 -15
  67. package/dist/lib/schema/helpers.d.ts.map +1 -1
  68. package/dist/lib/schema/helpers.js +7 -4
  69. package/dist/lib/schema/search.d.ts.map +1 -1
  70. package/dist/lib/schema/search.js +107 -128
  71. package/dist/lib/sql-api.d.ts.map +1 -1
  72. package/dist/lib/tenant.d.ts +26 -0
  73. package/dist/lib/tenant.d.ts.map +1 -1
  74. package/dist/lib/tenant.js +46 -0
  75. package/dist/routes/auto/route-helpers.d.ts +0 -7
  76. package/dist/routes/auto/route-helpers.d.ts.map +1 -1
  77. package/dist/routes/auto/route-helpers.js +46 -30
  78. package/dist/routes/auto/search.routes.js +0 -1
  79. package/dist/types/table.d.ts +1 -1
  80. package/docs/GLOSSARY.md +28 -0
  81. package/docs/adr/0012-anti-duplication-tooling.md +59 -0
  82. package/docs/adr/README.md +3 -1
  83. package/package.json +29 -2
@@ -26,11 +26,13 @@ not by editing history.
26
26
  | [0009](./0009-schema-exclusion-config-blacklist.md) | Schema exclusion is a config blacklist — excluded schemas are removed as orphans |
27
27
  | [0010](./0010-joins-do-not-run-route-guards.md) | A declared join is a read grant — joins do not run the target table's route guards |
28
28
  | [0011](./0011-join-fields-allowlist.md) | Per-relation field restriction is an allowlist, not a blocklist |
29
+ | [0012](./0012-anti-duplication-tooling.md) | Repository rules are enforced by executable gates, not by documentation |
29
30
 
30
31
  ## When to write one
31
32
 
32
33
  Only when a decision was genuinely debated, or is counter-intuitive enough that a reasonable
33
- outsider would mistake it for a bug. Plain conventions belong in [AGENTS.md](../../AGENTS.md).
34
+ outsider would mistake it for a bug. Plain conventions belong in [AGENTS.md](../../AGENTS.md)
35
+ for consumers, or in `CLAUDE.md` at the repository root for contributors.
34
36
 
35
37
  ## Format
36
38
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fastify-auto-sqlapi",
3
- "version": "0.1.14",
3
+ "version": "0.2.0",
4
4
  "description": "Fastify plugin for automatic CRUD API generation from PostgreSQL, MySQL and MariaDB tables",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -19,6 +19,7 @@
19
19
  "files": [
20
20
  "dist",
21
21
  "docs",
22
+ "!docs/INDEX.md",
22
23
  "AGENTS.md",
23
24
  "AGENTS_BACKEND.md",
24
25
  "AGENTS_FRONTEND.md",
@@ -28,6 +29,21 @@
28
29
  "scripts": {
29
30
  "clean": "rm -rf dist",
30
31
  "build": "rm -rf dist && tsc",
32
+ "lint": "eslint . --max-warnings 0",
33
+ "lint:fix": "eslint . --fix",
34
+ "lint:strict": "LINT_STRICT=1 eslint .",
35
+ "typecheck": "tsc --noEmit && tsc -p scripts/tsconfig.json",
36
+ "index": "node scripts/generate-index.ts",
37
+ "index:check": "node scripts/generate-index.ts --check",
38
+ "find-similar": "node scripts/find-similar.ts",
39
+ "dup": "jscpd src",
40
+ "dup:strict": "jscpd src --reporters console",
41
+ "knip": "knip --max-issues 0 --treat-config-hints-as-errors --treat-tag-hints-as-errors",
42
+ "depcruise": "depcruise src --config .dependency-cruiser.mjs --output-type err",
43
+ "depcruise:strict": "DEPCRUISE_STRICT=1 depcruise src --config .dependency-cruiser.mjs --output-type err",
44
+ "debt": "npm run lint:strict; npm run dup:strict; npm run depcruise:strict",
45
+ "check": "npm run lint && npm run typecheck",
46
+ "verify": "npm run check && npm run build && npm run index:check && npm run dup && npm run depcruise && npm run knip && npm run test:unit",
31
47
  "prepublishOnly": "npm run build && npm run test:unit",
32
48
  "test": "npm run test:unit && npm run test:integration:pg && npm run test:integration:mysql",
33
49
  "test:unit": "node --test test/unit/*.test.js",
@@ -67,18 +83,29 @@
67
83
  "homepage": "https://github.com/LucaRainone/fastify-auto-sqlapi#readme",
68
84
  "dependencies": {
69
85
  "@sinclair/typebox": "^0.34.14",
86
+ "fastify-plugin": "^5.1.0",
70
87
  "node-condition-builder": "^1.2.0"
71
88
  },
72
89
  "devDependencies": {
90
+ "@eslint/js": "^10.0.1",
73
91
  "@fastify/postgres": "^6.0.2",
74
92
  "@fastify/swagger": "^9.0.0",
75
93
  "@fastify/swagger-ui": "^5.0.0",
76
94
  "@types/node": "^22.13.4",
77
95
  "@types/pg": "^8.11.11",
96
+ "dependency-cruiser": "^18.1.0",
97
+ "eslint": "^10.8.0",
98
+ "eslint-plugin-sonarjs": "^4.2.0",
78
99
  "fastify": "5.8.5",
100
+ "fuse.js": "^7.5.0",
101
+ "jscpd": "^5.0.14",
102
+ "knip": "^6.31.0",
103
+ "lefthook": "^2.1.10",
79
104
  "mysql2": "^3.22.0",
80
105
  "pg": "^8.13.1",
81
- "typescript": "^5.7.3"
106
+ "ts-morph": "^28.0.0",
107
+ "typescript": "^5.7.3",
108
+ "typescript-eslint": "^8.65.0"
82
109
  },
83
110
  "peerDependencies": {
84
111
  "@fastify/mysql": ">=4.0.0",