@restforgejs/platform 4.2.8 → 4.3.2

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 (325) hide show
  1. package/SECURITY.md +83 -4
  2. package/bin/sdf-tools.exe +0 -0
  3. package/build-info.json +2 -2
  4. package/cli/consumer-deploy.js +1 -1
  5. package/cli/consumer.js +1 -1
  6. package/generators/cli/dashboard/create.js +4 -1
  7. package/generators/cli/endpoint/create.js +1 -1
  8. package/generators/cli/key/generate.js +2 -1
  9. package/generators/cli/key/revoke.js +2 -1
  10. package/generators/cli/payload/diff.js +3 -2
  11. package/generators/cli/payload/generate.js +3 -2
  12. package/generators/cli/payload/sync.js +3 -2
  13. package/generators/cli/payload/validate.js +3 -2
  14. package/generators/cli/processor/create.js +14 -3
  15. package/generators/cli/project/delete.js +2 -1
  16. package/generators/cli/query/validate.js +3 -2
  17. package/generators/cli/schema/apply.js +3 -2
  18. package/generators/cli/schema/describe.js +3 -2
  19. package/generators/cli/schema/diff.js +3 -2
  20. package/generators/cli/schema/introspect.js +3 -2
  21. package/generators/cli/schema/list.js +3 -2
  22. package/generators/cli/schema/migrate.js +3 -2
  23. package/generators/lib/migration/audit-table-runner.js +213 -215
  24. package/generators/lib/payload/payload-runner.js +1 -1
  25. package/generators/lib/templates/dashboard-catalog.js +1 -437
  26. package/generators/lib/templates/db-connection-env.js +1 -212
  27. package/generators/lib/templates/dbschema-catalog.js +1 -489
  28. package/generators/lib/templates/field-validation-catalog.js +1 -531
  29. package/generators/lib/templates/mysql-template.js +1 -3863
  30. package/generators/lib/templates/oracle-template.js +1 -3915
  31. package/generators/lib/templates/postgres-template.js +1 -5838
  32. package/generators/lib/templates/query-declarative-catalog.js +1 -199
  33. package/generators/lib/templates/sqlite-template.js +1 -3440
  34. package/generators/lib/utils/env-manager.js +6 -0
  35. package/generators/lib/utils/path-validator.js +71 -0
  36. package/generators/lib/validators/payload-validator.js +1 -2
  37. package/integrity-manifest.json +28 -10
  38. package/package.json +11 -3
  39. package/scripts/verify-integrity.js +1 -1
  40. package/server.js +1 -1
  41. package/src/components/handlers/adjust_handler.js +1 -1
  42. package/src/components/handlers/audit_handler.js +1 -1
  43. package/src/components/handlers/delete_handler.js +1 -1
  44. package/src/components/handlers/export_handler.js +1 -1
  45. package/src/components/handlers/import_handler.js +1 -1
  46. package/src/components/handlers/insert_handler.js +1 -1
  47. package/src/components/handlers/update_handler.js +1 -1
  48. package/src/components/handlers/upload_handler.js +1 -1
  49. package/src/components/handlers/workflow_handler.js +1 -1
  50. package/src/components/integrations/webhook.js +1 -1
  51. package/src/consumers/baseConsumer.js +1 -1
  52. package/src/consumers/declarativeMapper.js +1 -1
  53. package/src/consumers/handlers/apiHandler.js +1 -1
  54. package/src/consumers/handlers/consoleHandler.js +1 -1
  55. package/src/consumers/handlers/databaseHandler.js +1 -1
  56. package/src/consumers/handlers/index.js +1 -1
  57. package/src/consumers/handlers/kafkaHandler.js +1 -1
  58. package/src/consumers/index.js +1 -1
  59. package/src/consumers/messageTransformer.js +1 -1
  60. package/src/consumers/validator.js +1 -1
  61. package/src/core/db/dialect/base-dialect.js +1 -1
  62. package/src/core/db/dialect/index.js +1 -1
  63. package/src/core/db/dialect/mysql-dialect.js +1 -1
  64. package/src/core/db/dialect/oracle-dialect.js +1 -1
  65. package/src/core/db/dialect/postgres-dialect.js +1 -1
  66. package/src/core/db/dialect/sqlite-dialect.js +1 -1
  67. package/src/core/db/flatten-helper.js +1 -1
  68. package/src/core/db/query-builder-error.js +1 -1
  69. package/src/core/db/query-builder.js +1 -1
  70. package/src/core/db/relation-helper.js +1 -1
  71. package/src/core/handlers/delete_handler.js +1 -1
  72. package/src/core/handlers/insert_handler.js +1 -1
  73. package/src/core/handlers/update_handler.js +1 -1
  74. package/src/core/models/base-model.js +1 -1
  75. package/src/core/utils/cache-manager.js +1 -1
  76. package/src/core/utils/component-engine.js +1 -1
  77. package/src/core/utils/context-builder.js +1 -1
  78. package/src/core/utils/datetime-formatter.js +1 -1
  79. package/src/core/utils/datetime-parser.js +1 -1
  80. package/src/core/utils/db.js +1 -1
  81. package/src/core/utils/logger.js +1 -1
  82. package/src/core/utils/payload-loader.js +1 -1
  83. package/src/core/utils/security-checks.js +1 -1
  84. package/src/middleware/body-options.js +1 -1
  85. package/src/middleware/cors.js +1 -1
  86. package/src/middleware/idempotency.js +1 -1
  87. package/src/middleware/rate-limiter.js +1 -1
  88. package/src/middleware/request-logger.js +1 -1
  89. package/src/middleware/security-headers.js +1 -1
  90. package/src/models/base-model-mysql.js +1 -1
  91. package/src/models/base-model-oracle.js +1 -1
  92. package/src/models/base-model-sqlite.js +1 -1
  93. package/src/models/base-model.js +1 -1
  94. package/src/pro/caching/redis-client.js +1 -1
  95. package/src/pro/caching/redis-helper.js +1 -1
  96. package/src/pro/consumers/baseConsumer.js +1 -1
  97. package/src/pro/consumers/declarativeMapper.js +1 -1
  98. package/src/pro/consumers/handlers/apiHandler.js +1 -1
  99. package/src/pro/consumers/handlers/consoleHandler.js +1 -1
  100. package/src/pro/consumers/handlers/databaseHandler.js +1 -1
  101. package/src/pro/consumers/handlers/index.js +1 -1
  102. package/src/pro/consumers/handlers/kafkaHandler.js +1 -1
  103. package/src/pro/consumers/index.js +1 -1
  104. package/src/pro/consumers/messageTransformer.js +1 -1
  105. package/src/pro/consumers/validator.js +1 -1
  106. package/src/pro/database/base-model-mysql.js +1 -1
  107. package/src/pro/database/base-model-oracle.js +1 -1
  108. package/src/pro/database/base-model-sqlite.js +1 -1
  109. package/src/pro/database/db-mysql.js +1 -1
  110. package/src/pro/database/db-oracle.js +1 -1
  111. package/src/pro/database/db-sqlite.js +1 -1
  112. package/src/pro/excel/excel-generator.js +1 -1
  113. package/src/pro/excel/excel-parser.js +1 -1
  114. package/src/pro/excel/export-service.js +1 -1
  115. package/src/pro/excel/export_handler.js +1 -1
  116. package/src/pro/excel/import-service.js +1 -1
  117. package/src/pro/excel/import-validator.js +1 -1
  118. package/src/pro/excel/import_handler.js +1 -1
  119. package/src/pro/excel/upsert-builder.js +1 -1
  120. package/src/pro/idgen/idgen-routes.js +1 -1
  121. package/src/pro/integrations/lookup-resolver.js +1 -1
  122. package/src/pro/integrations/upload-handler-v2.js +1 -1
  123. package/src/pro/integrations/upload-handler.js +1 -1
  124. package/src/pro/integrations/webhook.js +1 -1
  125. package/src/pro/locking/lock-routes.js +1 -1
  126. package/src/pro/locking/resource-lock-manager.js +1 -1
  127. package/src/pro/messaging/kafkaConsumerService.js +1 -1
  128. package/src/pro/messaging/kafkaService.js +1 -1
  129. package/src/pro/messaging/messagehubService.js +1 -1
  130. package/src/pro/messaging/rabbitmqService.js +1 -1
  131. package/src/pro/scheduler/job-manager.js +1 -1
  132. package/src/pro/scheduler/job-routes.js +1 -1
  133. package/src/pro/scheduler/job-validator.js +1 -1
  134. package/src/pro/storage/base-storage-provider.js +1 -1
  135. package/src/pro/storage/file-metadata-helper.js +1 -1
  136. package/src/pro/storage/index.js +1 -1
  137. package/src/pro/storage/local-storage-provider.js +1 -1
  138. package/src/pro/storage/s3-storage-provider.js +1 -1
  139. package/src/pro/storage/upload-cleanup-job.js +1 -1
  140. package/src/pro/storage/upload-cleanup-scheduler.js +1 -1
  141. package/src/pro/storage/upload-pending-tracker.js +1 -1
  142. package/src/pro/websocket/broadcast-helper.js +1 -1
  143. package/src/pro/websocket/index.js +1 -1
  144. package/src/pro/websocket/livesync-server.js +1 -1
  145. package/src/pro/websocket/ws-broadcaster.js +1 -1
  146. package/src/services/export-service.js +1 -1
  147. package/src/services/import-service.js +1 -1
  148. package/src/services/kafkaConsumerService.js +1 -1
  149. package/src/services/kafkaService.js +1 -1
  150. package/src/services/messagehubService.js +1 -1
  151. package/src/services/rabbitmqService.js +1 -1
  152. package/src/utils/cache-invalidation-registry.js +1 -1
  153. package/src/utils/cache-manager.js +1 -1
  154. package/src/utils/component-engine.js +1 -1
  155. package/src/utils/config-extractor.js +1 -1
  156. package/src/utils/consumerLogger.js +1 -1
  157. package/src/utils/context-builder.js +1 -1
  158. package/src/utils/dashboard-helpers.js +1 -1
  159. package/src/utils/dateHelper.js +1 -1
  160. package/src/utils/datetime-formatter.js +1 -1
  161. package/src/utils/datetime-parser.js +1 -1
  162. package/src/utils/db-bootstrap.js +1 -1
  163. package/src/utils/db-mysql.js +1 -1
  164. package/src/utils/db-oracle.js +1 -1
  165. package/src/utils/db-sqlite.js +1 -1
  166. package/src/utils/db.js +1 -1
  167. package/src/utils/demo-generator.js +1 -1
  168. package/src/utils/excel-generator.js +1 -1
  169. package/src/utils/excel-parser.js +1 -1
  170. package/src/utils/file-watcher.js +1 -1
  171. package/src/utils/id-generator.js +1 -1
  172. package/src/utils/idempotency-manager.js +1 -1
  173. package/src/utils/import-validator.js +1 -1
  174. package/src/utils/license-client.js +1 -1
  175. package/src/utils/lock-manager.js +1 -1
  176. package/src/utils/logger.js +1 -1
  177. package/src/utils/lookup-resolver.js +1 -1
  178. package/src/utils/payload-loader.js +1 -1
  179. package/src/utils/processor-response.js +1 -1
  180. package/src/utils/rabbitmq.js +1 -1
  181. package/src/utils/redis-client.js +1 -1
  182. package/src/utils/redis-helper.js +1 -1
  183. package/src/utils/request-scope.js +1 -1
  184. package/src/utils/security-checks.js +1 -1
  185. package/src/utils/service-resolver.js +1 -1
  186. package/src/utils/shutdown-coordinator.js +1 -1
  187. package/src/utils/trusted-keys.js +1 -1
  188. package/src/utils/upload-handler.js +1 -1
  189. package/src/utils/upsert-builder.js +1 -1
  190. package/src/utils/workflow-hook-executor.js +1 -1
  191. package/generators/metadata/global.json +0 -58
  192. package/generators/metadata/test-mysql-workbench.json +0 -118
  193. package/generators/metadata/test-mysql.json +0 -56
  194. package/generators/metadata/test-oracle-workbench.json +0 -118
  195. package/generators/metadata/test-oracle.json +0 -56
  196. package/generators/metadata/test-pg-workbench.json +0 -118
  197. package/generators/metadata/test-pg.json +0 -56
  198. package/generators/scripts/obfuscate-source.js +0 -356
  199. package/generators/scripts/validate-catalog.js +0 -430
  200. package/generators/scripts/validate-dbschema-catalog.js +0 -708
  201. package/generators/tests/baseline/mysql/mini_inventory_item/src/models/mini-inventory/item.js +0 -944
  202. package/generators/tests/baseline/mysql/mini_inventory_item/src/modules/mini-inventory/item.js +0 -740
  203. package/generators/tests/baseline/mysql/mini_inventory_item/src/modules/mini-inventory.js +0 -336
  204. package/generators/tests/baseline/oracle/mini_inventory_item/src/models/mini-inventory/item.js +0 -1002
  205. package/generators/tests/baseline/oracle/mini_inventory_item/src/modules/mini-inventory/item.js +0 -740
  206. package/generators/tests/baseline/oracle/mini_inventory_item/src/modules/mini-inventory.js +0 -336
  207. package/generators/tests/baseline/postgres/mini_inventory_item/src/models/mini-inventory/item.js +0 -1333
  208. package/generators/tests/baseline/postgres/mini_inventory_item/src/modules/mini-inventory/item.js +0 -1173
  209. package/generators/tests/baseline/postgres/mini_inventory_item/src/modules/mini-inventory.js +0 -496
  210. package/generators/tests/fixtures/payloads/custom-sensitive.json +0 -27
  211. package/generators/tests/fixtures/payloads/dynamic-search-optout.json +0 -23
  212. package/generators/tests/fixtures/payloads/login-with-password.json +0 -22
  213. package/generators/tests/fixtures/payloads/order-process.json +0 -52
  214. package/generators/tests/fixtures/payloads/with-inline-sql.json +0 -26
  215. package/generators/tests/integration-tahap4b/README.md +0 -145
  216. package/generators/tests/integration-tahap4b/run-concurrent.js +0 -77
  217. package/generators/tests/integration-tahap4b/seed.sql +0 -53
  218. package/generators/tests/integration-tahap4b/verify.sql +0 -110
  219. package/generators/tests/unit/cli/create-dashboard.test.js +0 -505
  220. package/generators/tests/unit/cli/create-processor.test.js +0 -319
  221. package/generators/tests/unit/cli/dispatch-dashboard.test.js +0 -149
  222. package/generators/tests/unit/lib/dashboard-generator.test.js +0 -895
  223. package/generators/tests/unit/lib/dashboard-validator.test.js +0 -354
  224. package/generators/tests/unit/lib/dbschema-kit/apply-executor.test.js +0 -437
  225. package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-introspect.test.js +0 -393
  226. package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-kit-generate-ddl.test.js +0 -104
  227. package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-kit-init.test.js +0 -119
  228. package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-kit-list.test.js +0 -48
  229. package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-kit-migrate.test.js +0 -175
  230. package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-kit-validate.test.js +0 -102
  231. package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-models.test.js +0 -43
  232. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/introspect-stubs/all-schemas-listing.js +0 -84
  233. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/introspect-stubs/connection-error.js +0 -13
  234. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/introspect-stubs/empty.js +0 -12
  235. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/introspect-stubs/multi-schema.js +0 -124
  236. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/introspect-stubs/single-schema-inventory.js +0 -64
  237. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/introspect-stubs/two-tables.js +0 -66
  238. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/migrate-stubs/connection-error.js +0 -9
  239. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/migrate-stubs/partial.js +0 -29
  240. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/migrate-stubs/rollback.js +0 -26
  241. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/migrate-stubs/success.js +0 -43
  242. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/multi-schema/audit/events.js +0 -18
  243. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/multi-schema/inventory/products.js +0 -9
  244. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/multi-schema/users.js +0 -8
  245. package/generators/tests/unit/lib/dbschema-kit/connection.test.js +0 -112
  246. package/generators/tests/unit/lib/dbschema-kit/ddl-generator.test.js +0 -205
  247. package/generators/tests/unit/lib/dbschema-kit/define-model.test.js +0 -56
  248. package/generators/tests/unit/lib/dbschema-kit/dialect/index.test.js +0 -46
  249. package/generators/tests/unit/lib/dbschema-kit/dialect/mysql.test.js +0 -126
  250. package/generators/tests/unit/lib/dbschema-kit/dialect/oracle.test.js +0 -126
  251. package/generators/tests/unit/lib/dbschema-kit/dialect/postgres.test.js +0 -131
  252. package/generators/tests/unit/lib/dbschema-kit/dialect/sqlite.test.js +0 -126
  253. package/generators/tests/unit/lib/dbschema-kit/driver-loader.test.js +0 -93
  254. package/generators/tests/unit/lib/dbschema-kit/emitters/create-index.test.js +0 -173
  255. package/generators/tests/unit/lib/dbschema-kit/emitters/create-table.test.js +0 -376
  256. package/generators/tests/unit/lib/dbschema-kit/emitters/drop-table.test.js +0 -78
  257. package/generators/tests/unit/lib/dbschema-kit/fixtures/connection/invalid-dialect.env +0 -6
  258. package/generators/tests/unit/lib/dbschema-kit/fixtures/connection/missing-dialect.env +0 -5
  259. package/generators/tests/unit/lib/dbschema-kit/fixtures/connection/missing-host.env +0 -5
  260. package/generators/tests/unit/lib/dbschema-kit/fixtures/connection/oracle-valid.env +0 -6
  261. package/generators/tests/unit/lib/dbschema-kit/fixtures/connection/postgres-valid.env +0 -7
  262. package/generators/tests/unit/lib/dbschema-kit/fixtures/connection/sqlite-valid.env +0 -2
  263. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory/category.js +0 -11
  264. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory/item_product.js +0 -11
  265. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory/stock_inbound.js +0 -24
  266. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory/stock_inbound_item.js +0 -28
  267. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory/supplier.js +0 -9
  268. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory/warehouse.js +0 -9
  269. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-invalid/orphan.js +0 -17
  270. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-multifolder/master/category.js +0 -11
  271. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-multifolder/master/item_product.js +0 -11
  272. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-multifolder/master/supplier.js +0 -9
  273. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-multifolder/master/warehouse.js +0 -9
  274. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-multifolder/transactions/stock_inbound.js +0 -24
  275. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-multifolder/transactions/stock_inbound_item.js +0 -28
  276. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/multi-schema/audit/events.js +0 -18
  277. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/multi-schema/inventory/products.js +0 -9
  278. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/multi-schema/public/users.js +0 -9
  279. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/duplicate-subfolder/extra/category.js +0 -8
  280. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/duplicate-subfolder/master/category.js +0 -8
  281. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/duplicate-tablename/bar.js +0 -8
  282. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/duplicate-tablename/foo.js +0 -8
  283. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/empty-folder/README.md +0 -1
  284. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/invalid-export/plain.js +0 -3
  285. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/invalid-schema/bad.js +0 -6
  286. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/legacy-pattern/legacy.js +0 -12
  287. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/multi-schema-distinct/audit/products.js +0 -9
  288. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/multi-schema-distinct/inventory/products.js +0 -9
  289. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/multi-schema-duplicate/a/products.js +0 -8
  290. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/multi-schema-duplicate/b/products.js +0 -8
  291. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/nested-deep/a/b/c/deep_table.js +0 -8
  292. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/recursive-multi-folder/.hidden/ignored.js +0 -7
  293. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/recursive-multi-folder/master/category.js +0 -8
  294. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/recursive-multi-folder/master/supplier.js +0 -8
  295. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/recursive-multi-folder/transactions/stock_inbound.js +0 -8
  296. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/recursive-multi-folder/transactions/stock_inbound_item.js +0 -8
  297. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/valid-multiple/category.js +0 -8
  298. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/valid-multiple/item_product.js +0 -9
  299. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/valid-single/category.js +0 -8
  300. package/generators/tests/unit/lib/dbschema-kit/integration.test.js +0 -217
  301. package/generators/tests/unit/lib/dbschema-kit/introspect-mapper.test.js +0 -403
  302. package/generators/tests/unit/lib/dbschema-kit/ir-builder.test.js +0 -390
  303. package/generators/tests/unit/lib/dbschema-kit/loader.test.js +0 -128
  304. package/generators/tests/unit/lib/dbschema-kit/naming.test.js +0 -170
  305. package/generators/tests/unit/lib/dbschema-kit/parser/shorthand-parser.test.js +0 -237
  306. package/generators/tests/unit/lib/dbschema-kit/schema-printer.test.js +0 -251
  307. package/generators/tests/unit/lib/dbschema-kit/statement-modifier.test.js +0 -105
  308. package/generators/tests/unit/lib/dbschema-kit/statement-splitter.test.js +0 -165
  309. package/generators/tests/unit/lib/dbschema-kit/topological-sort.test.js +0 -135
  310. package/generators/tests/unit/lib/dbschema-kit/validator/check-compatibility-validator.test.js +0 -373
  311. package/generators/tests/unit/lib/dbschema-kit/validator/circular-relation-validator.test.js +0 -454
  312. package/generators/tests/unit/lib/dbschema-kit/validator/cross-model-validator.test.js +0 -512
  313. package/generators/tests/unit/lib/dbschema-kit/validator/enhanced-validate-integration.test.js +0 -390
  314. package/generators/tests/unit/lib/dbschema-kit/validator/naming-convention-validator.test.js +0 -306
  315. package/generators/tests/unit/lib/dbschema-kit/validator/schema-validator.test.js +0 -443
  316. package/generators/tests/unit/lib/dbschema-kit/validator/type-compatibility-validator.test.js +0 -440
  317. package/generators/tests/unit/lib/dbschema-kit/validator/validator-reporter.test.js +0 -172
  318. package/generators/tests/unit/lib/metadata-manager-dashboard.test.js +0 -256
  319. package/generators/tests/unit/lib/payload-validator-fieldpolicy.test.js +0 -240
  320. package/generators/tests/unit/lib/processor-validation-generator.test.js +0 -300
  321. package/generators/tests/unit/lib/sensitive-field-masker.test.js +0 -170
  322. package/generators/tests/unit/lib/sql-table-extractor.test.js +0 -119
  323. package/scripts/generate-integrity-manifest.js +0 -124
  324. package/scripts/snapshot-cli-contracts.js +0 -194
  325. package/scripts/verify-publish.js +0 -56
@@ -1,336 +0,0 @@
1
- const express = require('express');
2
- const bodyParser = require('body-parser');
3
- const path = require('path');
4
- const fs = require('fs');
5
- const { v4: uuidv4 } = require('uuid');
6
- const { logger, logServerReady, logEndpointRegistered, createRequestLogger, logRequest } = require('restforgejs/src/utils/logger');
7
- const ExportHandler = require('restforgejs/src/components/handlers/export_handler');
8
- const ImportHandler = require('restforgejs/src/components/handlers/import_handler');
9
- const UploadHandler = require('restforgejs/src/components/handlers/upload_handler');
10
- const { extractExportConfigFromEndpoint, extractImportConfigFromEndpoint, extractUploadConfigFromEndpoint } = require('restforgejs/src/utils/config-extractor');
11
- const rateLimiter = require('restforgejs/src/middleware/rate-limiter');
12
- const idempotencyMiddleware = require('restforgejs/src/middleware/idempotency');
13
- const bodyOptionsMiddleware = require('restforgejs/src/middleware/body-options');
14
- const corsMiddleware = require('restforgejs/src/middleware/cors');
15
- const securityHeaders = require('restforgejs/src/middleware/security-headers');
16
-
17
- /**
18
- * Fungsi untuk mengeksekusi modul mini-inventory (MySQL Database)
19
- * @param {Object} config - Konfigurasi untuk menjalankan modul
20
- * @param {number} config.port - Port untuk server
21
- * @param {string} config.key - API Key (opsional)
22
- * @returns {Promise<void>} Promise yang tidak pernah resolve agar server tetap berjalan
23
- */
24
- async function execute(config) {
25
- return new Promise((resolve) => {
26
- const app = express();
27
- const port = config.port || 3000;
28
- const serverAddress = config.serverAddress || '0.0.0.0';
29
- const moduleNameCapitalized = 'MiniInventory';
30
-
31
- // Configuration options
32
- const loggingEnabled = config.logging !== false;
33
- const apiKeyRequired = !!config.key;
34
-
35
- logger.info({
36
- event: 'module_starting',
37
- module: moduleNameCapitalized,
38
- port,
39
- cors: process.env.CORS_ENABLED !== 'false',
40
- helmet: process.env.HELMET_ENABLED === 'true',
41
- logging: loggingEnabled,
42
- apiKey: apiKeyRequired
43
- }, `Starting ${moduleNameCapitalized} module`);
44
-
45
- // CORS middleware (konfigurasi via CORS_ENABLED dan CORS_ORIGINS di .env)
46
- app.use(corsMiddleware.middleware());
47
-
48
- // Security headers middleware (konfigurasi via HELMET_ENABLED di .env)
49
- app.use(securityHeaders.middleware());
50
-
51
- // Middleware untuk parsing JSON dengan penanganan error
52
- app.use(bodyParser.json({
53
- verify: (req, res, buf, encoding) => {
54
- if (buf.length === 0) {
55
- return;
56
- }
57
- try {
58
- JSON.parse(buf);
59
- } catch (error) {
60
- res.status(400).json({
61
- success: false,
62
- error: 'Invalid JSON payload',
63
- message: 'The payload sent is not a valid JSON format',
64
- details: error.message
65
- });
66
- throw new Error('Invalid JSON');
67
- }
68
- }
69
- }));
70
-
71
- app.use(bodyParser.urlencoded({ extended: true }));
72
-
73
- // Request logging middleware (Pino-based)
74
- app.use((req, res, next) => {
75
- req.id = req.headers['x-request-id'] || uuidv4();
76
- res.set('X-Request-ID', req.id);
77
-
78
- req.log = createRequestLogger({
79
- requestId: req.id,
80
- method: req.method,
81
- path: req.path,
82
- ip: req.ip
83
- });
84
-
85
- const startTime = process.hrtime();
86
-
87
- res.on('finish', () => {
88
- const [seconds, nanoseconds] = process.hrtime(startTime);
89
- const durationMs = parseFloat((seconds * 1000 + nanoseconds / 1e6).toFixed(2));
90
- logRequest(req, res, durationMs);
91
- });
92
-
93
- next();
94
- });
95
-
96
- // Middleware untuk validasi API key jika diperlukan
97
- if (config.key) {
98
- app.use((req, res, next) => {
99
- const apiKey = req.headers['x-api-key'];
100
- if (!apiKey || apiKey !== config.key) {
101
- return res.status(401).json({ error: 'Unauthorized: Invalid API Key' });
102
- }
103
- next();
104
- });
105
- }
106
-
107
- // Rate limiting middleware (store: memory untuk single mode, Redis untuk cluster mode)
108
- rateLimiter.setStore(config.cluster ? 'redis' : 'memory');
109
- app.use('/api', rateLimiter.middleware());
110
-
111
- // Idempotency middleware (protects mutation endpoints from duplicate execution)
112
- if (process.env.IDEMPOTENCY_ENABLED === 'true') {
113
- app.use('/api', idempotencyMiddleware.middleware());
114
- }
115
-
116
- // Body options middleware (extract {data, options} format dari request body)
117
- app.use('/api', bodyOptionsMiddleware.middleware());
118
-
119
- // Auto-load plugin (jika ada)
120
- const moduleName = 'mini-inventory';
121
- const pluginPath = path.join(__dirname, '..', 'plugins', `${moduleName}-plugin.js`);
122
- let plugin = null;
123
- if (fs.existsSync(pluginPath)) {
124
- try {
125
- plugin = require(pluginPath);
126
- if (plugin.onBeforeEndpointsLoad) {
127
- plugin.onBeforeEndpointsLoad(app, config);
128
- }
129
- logger.info({ event: 'plugin_loaded', plugin: `${moduleName}-plugin` }, `Plugin loaded: ${moduleName}-plugin.js`);
130
- } catch (pluginError) {
131
- logger.error({ event: 'plugin_load_error', error: pluginError.message }, `Failed to load plugin: ${moduleName}-plugin.js`);
132
- }
133
- }
134
-
135
- // Health check endpoint
136
- app.get('/api/mini-inventory/health', (req, res) => {
137
- const healthInfo = {
138
- status: 'ok',
139
- timestamp: new Date().toISOString().replace('T', ' ').replace(/\.\d{3}Z$/, ''),
140
- service: 'mini-inventory',
141
- uptime: process.uptime(),
142
- memory: process.memoryUsage(),
143
- system: {
144
- platform: process.platform,
145
- nodeVersion: process.version,
146
- pid: process.pid
147
- }
148
- };
149
-
150
- res.json(healthInfo);
151
- });
152
-
153
- // Muat semua rute dari folder mini-inventory
154
- const modulesDir = path.join(__dirname, 'mini-inventory');
155
-
156
- try {
157
- if (!fs.existsSync(modulesDir)) {
158
- fs.mkdirSync(modulesDir, { recursive: true });
159
- console.log(`Directory ${modulesDir} created successfully`);
160
- }
161
-
162
- const files = fs.readdirSync(modulesDir);
163
- const endpointFiles = files.filter(file => file.endsWith('.js'));
164
-
165
- if (endpointFiles.length === 0) {
166
- console.log(`No endpoint files found in ${modulesDir}`);
167
- console.log(`Add endpoint files to enable API functionality`);
168
- } else {
169
- logger.info({ event: 'endpoints_loading', count: endpointFiles.length }, `Loading ${endpointFiles.length} endpoint(s)`);
170
- }
171
-
172
- for (const file of endpointFiles) {
173
- try {
174
- const endpointName = path.basename(file, '.js');
175
- const endpointPath = path.join(modulesDir, file);
176
-
177
- // Clear module cache untuk development
178
- if (require.cache[endpointPath]) {
179
- delete require.cache[endpointPath];
180
- }
181
-
182
- const moduleRoutes = require(endpointPath);
183
-
184
- const endpointPrefix = `/api/mini-inventory/${endpointName}`;
185
- app.use(endpointPrefix, moduleRoutes);
186
- logEndpointRegistered(endpointName, endpointPrefix);
187
-
188
- // Register export routes via centralized handler
189
- try {
190
- const exportConfig = extractExportConfigFromEndpoint(endpointPath);
191
- if (exportConfig) {
192
- ExportHandler.registerRoutes(app, 'mini-inventory', endpointName, exportConfig);
193
- logger.info({ event: 'export_routes_registered', endpoint: endpointName }, `Export routes registered for ${endpointName}`);
194
- }
195
- } catch (exportError) {
196
- logger.error({ event: 'export_registration_error', endpoint: endpointName, error: exportError.message }, `Export registration failed for ${endpointName}: ${exportError.message}`);
197
- }
198
-
199
- // Register import routes via centralized handler
200
- try {
201
- const importConfig = extractImportConfigFromEndpoint(endpointPath);
202
- if (importConfig) {
203
- ImportHandler.registerRoutes(app, 'mini-inventory', endpointName, importConfig);
204
- logger.info({ event: 'import_routes_registered', endpoint: endpointName }, `Import routes registered for ${endpointName}`);
205
- }
206
- } catch (importError) {
207
- logger.error({ event: 'import_registration_error', endpoint: endpointName, error: importError.message }, `Import registration failed for ${endpointName}: ${importError.message}`);
208
- }
209
-
210
- // Register upload routes via centralized handler
211
- try {
212
- const uploadConfig = extractUploadConfigFromEndpoint(endpointPath);
213
- if (uploadConfig) {
214
- UploadHandler.registerRoutes(app, 'mini-inventory', endpointName, uploadConfig);
215
- logger.info({ event: 'upload_routes_registered', endpoint: endpointName, fields: Object.keys(uploadConfig.fields || {}) }, `Upload routes registered for ${endpointName}`);
216
- }
217
- } catch (uploadError) {
218
- logger.error({ event: 'upload_registration_error', endpoint: endpointName, error: uploadError.message }, `Upload registration failed for ${endpointName}: ${uploadError.message}`);
219
- }
220
- } catch (error) {
221
- console.error(`Error loading module ${file} from mini-inventory:`, error);
222
- throw error;
223
- }
224
- }
225
-
226
- // Register export cleanup route
227
- try {
228
- ExportHandler.registerCleanupRoute(app);
229
- } catch (cleanupError) {
230
- console.error('Export cleanup route registration failed:', cleanupError.message);
231
- }
232
-
233
- app.get('/', (req, res) => {
234
- res.json({
235
- message: 'mini-inventory API (MySQL Database)',
236
- status: 'running',
237
- database: 'MySQL'
238
- });
239
- });
240
-
241
- // Error handling middleware
242
- app.use((err, req, res, next) => {
243
- console.error('Error:', err);
244
-
245
- if (err instanceof SyntaxError && err.status === 400 && 'body' in err && !res.headersSent) {
246
- return res.status(400).json({
247
- success: false,
248
- error: 'Invalid JSON payload',
249
- message: 'The payload sent is not a valid JSON format',
250
- details: err.message
251
- });
252
- }
253
-
254
- if (!res.headersSent) {
255
- return res.status(500).json({
256
- success: false,
257
- error: 'Internal Server Error',
258
- message: 'An error occurred on the server',
259
- details: err.message
260
- });
261
- }
262
-
263
- next(err);
264
- });
265
-
266
- // Hook untuk mount middleware tambahan sebelum catch-all 403
267
- // Digunakan oleh runtime untuk register admin endpoint dan middleware eksternal lainnya
268
- if (config.onAppReady && typeof config.onAppReady === 'function') {
269
- config.onAppReady(app);
270
- }
271
-
272
- app.use((req, res) => {
273
- res.status(403).json({
274
- success: false,
275
- error: 'Forbidden',
276
- message: 'Access to the requested resource is forbidden',
277
- timestamp: new Date().toISOString()
278
- });
279
- });
280
-
281
- const server = app.listen(port, serverAddress, (err) => {
282
- if (err) {
283
- console.error(`Failed to start ${moduleNameCapitalized} server:`, err);
284
- return;
285
- }
286
-
287
- console.log(`${moduleNameCapitalized} server started successfully!`);
288
-
289
- // Determine display URL based on serverAddress
290
- const displayHost = (serverAddress === '0.0.0.0' || !serverAddress) ? 'localhost' : serverAddress;
291
-
292
- logServerReady({
293
- port,
294
- module: 'mini-inventory',
295
- healthCheck: `http://${displayHost}:${port}/api/mini-inventory/health`,
296
- serviceInfo: `http://${displayHost}:${port}/api/mini-inventory/info`,
297
- baseUrl: `http://${displayHost}:${port}`
298
- });
299
- console.log('');
300
-
301
- // Execute plugin onAfterServerStart hook (jika ada)
302
- if (plugin && plugin.onAfterServerStart) {
303
- try {
304
- plugin.onAfterServerStart(app, config);
305
- } catch (pluginError) {
306
- logger.error({ event: 'plugin_after_start_error', error: pluginError.message }, 'Plugin onAfterServerStart failed');
307
- }
308
- }
309
- });
310
-
311
- process.on('SIGINT', () => {
312
- console.log('Menerima sinyal SIGINT, shutting down...');
313
- process.exit(0);
314
- });
315
-
316
- process.on('SIGTERM', () => {
317
- console.log('Menerima sinyal SIGTERM, shutting down...');
318
- process.exit(0);
319
- });
320
-
321
- process.on('uncaughtException', (error) => {
322
- console.error('Uncaught Exception:', error);
323
- });
324
-
325
- process.on('unhandledRejection', (reason, promise) => {
326
- console.error('Unhandled Rejection at:', promise, 'reason:', reason);
327
- });
328
-
329
- } catch (error) {
330
- console.error('Error saat menjalankan modul mini-inventory:', error);
331
- resolve();
332
- }
333
- });
334
- }
335
-
336
- module.exports = { execute };