@restforgejs/platform 4.2.8 → 4.3.1

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 (324) 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/templates/dashboard-catalog.js +1 -437
  25. package/generators/lib/templates/db-connection-env.js +1 -212
  26. package/generators/lib/templates/dbschema-catalog.js +1 -489
  27. package/generators/lib/templates/field-validation-catalog.js +1 -531
  28. package/generators/lib/templates/mysql-template.js +1 -3863
  29. package/generators/lib/templates/oracle-template.js +1 -3915
  30. package/generators/lib/templates/postgres-template.js +1 -5838
  31. package/generators/lib/templates/query-declarative-catalog.js +1 -199
  32. package/generators/lib/templates/sqlite-template.js +1 -3440
  33. package/generators/lib/utils/env-manager.js +6 -0
  34. package/generators/lib/utils/path-validator.js +71 -0
  35. package/generators/lib/validators/payload-validator.js +1 -2
  36. package/integrity-manifest.json +28 -10
  37. package/package.json +11 -3
  38. package/scripts/verify-integrity.js +1 -1
  39. package/server.js +1 -1
  40. package/src/components/handlers/adjust_handler.js +1 -1
  41. package/src/components/handlers/audit_handler.js +1 -1
  42. package/src/components/handlers/delete_handler.js +1 -1
  43. package/src/components/handlers/export_handler.js +1 -1
  44. package/src/components/handlers/import_handler.js +1 -1
  45. package/src/components/handlers/insert_handler.js +1 -1
  46. package/src/components/handlers/update_handler.js +1 -1
  47. package/src/components/handlers/upload_handler.js +1 -1
  48. package/src/components/handlers/workflow_handler.js +1 -1
  49. package/src/components/integrations/webhook.js +1 -1
  50. package/src/consumers/baseConsumer.js +1 -1
  51. package/src/consumers/declarativeMapper.js +1 -1
  52. package/src/consumers/handlers/apiHandler.js +1 -1
  53. package/src/consumers/handlers/consoleHandler.js +1 -1
  54. package/src/consumers/handlers/databaseHandler.js +1 -1
  55. package/src/consumers/handlers/index.js +1 -1
  56. package/src/consumers/handlers/kafkaHandler.js +1 -1
  57. package/src/consumers/index.js +1 -1
  58. package/src/consumers/messageTransformer.js +1 -1
  59. package/src/consumers/validator.js +1 -1
  60. package/src/core/db/dialect/base-dialect.js +1 -1
  61. package/src/core/db/dialect/index.js +1 -1
  62. package/src/core/db/dialect/mysql-dialect.js +1 -1
  63. package/src/core/db/dialect/oracle-dialect.js +1 -1
  64. package/src/core/db/dialect/postgres-dialect.js +1 -1
  65. package/src/core/db/dialect/sqlite-dialect.js +1 -1
  66. package/src/core/db/flatten-helper.js +1 -1
  67. package/src/core/db/query-builder-error.js +1 -1
  68. package/src/core/db/query-builder.js +1 -1
  69. package/src/core/db/relation-helper.js +1 -1
  70. package/src/core/handlers/delete_handler.js +1 -1
  71. package/src/core/handlers/insert_handler.js +1 -1
  72. package/src/core/handlers/update_handler.js +1 -1
  73. package/src/core/models/base-model.js +1 -1
  74. package/src/core/utils/cache-manager.js +1 -1
  75. package/src/core/utils/component-engine.js +1 -1
  76. package/src/core/utils/context-builder.js +1 -1
  77. package/src/core/utils/datetime-formatter.js +1 -1
  78. package/src/core/utils/datetime-parser.js +1 -1
  79. package/src/core/utils/db.js +1 -1
  80. package/src/core/utils/logger.js +1 -1
  81. package/src/core/utils/payload-loader.js +1 -1
  82. package/src/core/utils/security-checks.js +1 -1
  83. package/src/middleware/body-options.js +1 -1
  84. package/src/middleware/cors.js +1 -1
  85. package/src/middleware/idempotency.js +1 -1
  86. package/src/middleware/rate-limiter.js +1 -1
  87. package/src/middleware/request-logger.js +1 -1
  88. package/src/middleware/security-headers.js +1 -1
  89. package/src/models/base-model-mysql.js +1 -1
  90. package/src/models/base-model-oracle.js +1 -1
  91. package/src/models/base-model-sqlite.js +1 -1
  92. package/src/models/base-model.js +1 -1
  93. package/src/pro/caching/redis-client.js +1 -1
  94. package/src/pro/caching/redis-helper.js +1 -1
  95. package/src/pro/consumers/baseConsumer.js +1 -1
  96. package/src/pro/consumers/declarativeMapper.js +1 -1
  97. package/src/pro/consumers/handlers/apiHandler.js +1 -1
  98. package/src/pro/consumers/handlers/consoleHandler.js +1 -1
  99. package/src/pro/consumers/handlers/databaseHandler.js +1 -1
  100. package/src/pro/consumers/handlers/index.js +1 -1
  101. package/src/pro/consumers/handlers/kafkaHandler.js +1 -1
  102. package/src/pro/consumers/index.js +1 -1
  103. package/src/pro/consumers/messageTransformer.js +1 -1
  104. package/src/pro/consumers/validator.js +1 -1
  105. package/src/pro/database/base-model-mysql.js +1 -1
  106. package/src/pro/database/base-model-oracle.js +1 -1
  107. package/src/pro/database/base-model-sqlite.js +1 -1
  108. package/src/pro/database/db-mysql.js +1 -1
  109. package/src/pro/database/db-oracle.js +1 -1
  110. package/src/pro/database/db-sqlite.js +1 -1
  111. package/src/pro/excel/excel-generator.js +1 -1
  112. package/src/pro/excel/excel-parser.js +1 -1
  113. package/src/pro/excel/export-service.js +1 -1
  114. package/src/pro/excel/export_handler.js +1 -1
  115. package/src/pro/excel/import-service.js +1 -1
  116. package/src/pro/excel/import-validator.js +1 -1
  117. package/src/pro/excel/import_handler.js +1 -1
  118. package/src/pro/excel/upsert-builder.js +1 -1
  119. package/src/pro/idgen/idgen-routes.js +1 -1
  120. package/src/pro/integrations/lookup-resolver.js +1 -1
  121. package/src/pro/integrations/upload-handler-v2.js +1 -1
  122. package/src/pro/integrations/upload-handler.js +1 -1
  123. package/src/pro/integrations/webhook.js +1 -1
  124. package/src/pro/locking/lock-routes.js +1 -1
  125. package/src/pro/locking/resource-lock-manager.js +1 -1
  126. package/src/pro/messaging/kafkaConsumerService.js +1 -1
  127. package/src/pro/messaging/kafkaService.js +1 -1
  128. package/src/pro/messaging/messagehubService.js +1 -1
  129. package/src/pro/messaging/rabbitmqService.js +1 -1
  130. package/src/pro/scheduler/job-manager.js +1 -1
  131. package/src/pro/scheduler/job-routes.js +1 -1
  132. package/src/pro/scheduler/job-validator.js +1 -1
  133. package/src/pro/storage/base-storage-provider.js +1 -1
  134. package/src/pro/storage/file-metadata-helper.js +1 -1
  135. package/src/pro/storage/index.js +1 -1
  136. package/src/pro/storage/local-storage-provider.js +1 -1
  137. package/src/pro/storage/s3-storage-provider.js +1 -1
  138. package/src/pro/storage/upload-cleanup-job.js +1 -1
  139. package/src/pro/storage/upload-cleanup-scheduler.js +1 -1
  140. package/src/pro/storage/upload-pending-tracker.js +1 -1
  141. package/src/pro/websocket/broadcast-helper.js +1 -1
  142. package/src/pro/websocket/index.js +1 -1
  143. package/src/pro/websocket/livesync-server.js +1 -1
  144. package/src/pro/websocket/ws-broadcaster.js +1 -1
  145. package/src/services/export-service.js +1 -1
  146. package/src/services/import-service.js +1 -1
  147. package/src/services/kafkaConsumerService.js +1 -1
  148. package/src/services/kafkaService.js +1 -1
  149. package/src/services/messagehubService.js +1 -1
  150. package/src/services/rabbitmqService.js +1 -1
  151. package/src/utils/cache-invalidation-registry.js +1 -1
  152. package/src/utils/cache-manager.js +1 -1
  153. package/src/utils/component-engine.js +1 -1
  154. package/src/utils/config-extractor.js +1 -1
  155. package/src/utils/consumerLogger.js +1 -1
  156. package/src/utils/context-builder.js +1 -1
  157. package/src/utils/dashboard-helpers.js +1 -1
  158. package/src/utils/dateHelper.js +1 -1
  159. package/src/utils/datetime-formatter.js +1 -1
  160. package/src/utils/datetime-parser.js +1 -1
  161. package/src/utils/db-bootstrap.js +1 -1
  162. package/src/utils/db-mysql.js +1 -1
  163. package/src/utils/db-oracle.js +1 -1
  164. package/src/utils/db-sqlite.js +1 -1
  165. package/src/utils/db.js +1 -1
  166. package/src/utils/demo-generator.js +1 -1
  167. package/src/utils/excel-generator.js +1 -1
  168. package/src/utils/excel-parser.js +1 -1
  169. package/src/utils/file-watcher.js +1 -1
  170. package/src/utils/id-generator.js +1 -1
  171. package/src/utils/idempotency-manager.js +1 -1
  172. package/src/utils/import-validator.js +1 -1
  173. package/src/utils/license-client.js +1 -1
  174. package/src/utils/lock-manager.js +1 -1
  175. package/src/utils/logger.js +1 -1
  176. package/src/utils/lookup-resolver.js +1 -1
  177. package/src/utils/payload-loader.js +1 -1
  178. package/src/utils/processor-response.js +1 -1
  179. package/src/utils/rabbitmq.js +1 -1
  180. package/src/utils/redis-client.js +1 -1
  181. package/src/utils/redis-helper.js +1 -1
  182. package/src/utils/request-scope.js +1 -1
  183. package/src/utils/security-checks.js +1 -1
  184. package/src/utils/service-resolver.js +1 -1
  185. package/src/utils/shutdown-coordinator.js +1 -1
  186. package/src/utils/trusted-keys.js +1 -1
  187. package/src/utils/upload-handler.js +1 -1
  188. package/src/utils/upsert-builder.js +1 -1
  189. package/src/utils/workflow-hook-executor.js +1 -1
  190. package/generators/metadata/global.json +0 -58
  191. package/generators/metadata/test-mysql-workbench.json +0 -118
  192. package/generators/metadata/test-mysql.json +0 -56
  193. package/generators/metadata/test-oracle-workbench.json +0 -118
  194. package/generators/metadata/test-oracle.json +0 -56
  195. package/generators/metadata/test-pg-workbench.json +0 -118
  196. package/generators/metadata/test-pg.json +0 -56
  197. package/generators/scripts/obfuscate-source.js +0 -356
  198. package/generators/scripts/validate-catalog.js +0 -430
  199. package/generators/scripts/validate-dbschema-catalog.js +0 -708
  200. package/generators/tests/baseline/mysql/mini_inventory_item/src/models/mini-inventory/item.js +0 -944
  201. package/generators/tests/baseline/mysql/mini_inventory_item/src/modules/mini-inventory/item.js +0 -740
  202. package/generators/tests/baseline/mysql/mini_inventory_item/src/modules/mini-inventory.js +0 -336
  203. package/generators/tests/baseline/oracle/mini_inventory_item/src/models/mini-inventory/item.js +0 -1002
  204. package/generators/tests/baseline/oracle/mini_inventory_item/src/modules/mini-inventory/item.js +0 -740
  205. package/generators/tests/baseline/oracle/mini_inventory_item/src/modules/mini-inventory.js +0 -336
  206. package/generators/tests/baseline/postgres/mini_inventory_item/src/models/mini-inventory/item.js +0 -1333
  207. package/generators/tests/baseline/postgres/mini_inventory_item/src/modules/mini-inventory/item.js +0 -1173
  208. package/generators/tests/baseline/postgres/mini_inventory_item/src/modules/mini-inventory.js +0 -496
  209. package/generators/tests/fixtures/payloads/custom-sensitive.json +0 -27
  210. package/generators/tests/fixtures/payloads/dynamic-search-optout.json +0 -23
  211. package/generators/tests/fixtures/payloads/login-with-password.json +0 -22
  212. package/generators/tests/fixtures/payloads/order-process.json +0 -52
  213. package/generators/tests/fixtures/payloads/with-inline-sql.json +0 -26
  214. package/generators/tests/integration-tahap4b/README.md +0 -145
  215. package/generators/tests/integration-tahap4b/run-concurrent.js +0 -77
  216. package/generators/tests/integration-tahap4b/seed.sql +0 -53
  217. package/generators/tests/integration-tahap4b/verify.sql +0 -110
  218. package/generators/tests/unit/cli/create-dashboard.test.js +0 -505
  219. package/generators/tests/unit/cli/create-processor.test.js +0 -319
  220. package/generators/tests/unit/cli/dispatch-dashboard.test.js +0 -149
  221. package/generators/tests/unit/lib/dashboard-generator.test.js +0 -895
  222. package/generators/tests/unit/lib/dashboard-validator.test.js +0 -354
  223. package/generators/tests/unit/lib/dbschema-kit/apply-executor.test.js +0 -437
  224. package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-introspect.test.js +0 -393
  225. package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-kit-generate-ddl.test.js +0 -104
  226. package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-kit-init.test.js +0 -119
  227. package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-kit-list.test.js +0 -48
  228. package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-kit-migrate.test.js +0 -175
  229. package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-kit-validate.test.js +0 -102
  230. package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-models.test.js +0 -43
  231. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/introspect-stubs/all-schemas-listing.js +0 -84
  232. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/introspect-stubs/connection-error.js +0 -13
  233. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/introspect-stubs/empty.js +0 -12
  234. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/introspect-stubs/multi-schema.js +0 -124
  235. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/introspect-stubs/single-schema-inventory.js +0 -64
  236. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/introspect-stubs/two-tables.js +0 -66
  237. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/migrate-stubs/connection-error.js +0 -9
  238. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/migrate-stubs/partial.js +0 -29
  239. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/migrate-stubs/rollback.js +0 -26
  240. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/migrate-stubs/success.js +0 -43
  241. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/multi-schema/audit/events.js +0 -18
  242. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/multi-schema/inventory/products.js +0 -9
  243. package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/multi-schema/users.js +0 -8
  244. package/generators/tests/unit/lib/dbschema-kit/connection.test.js +0 -112
  245. package/generators/tests/unit/lib/dbschema-kit/ddl-generator.test.js +0 -205
  246. package/generators/tests/unit/lib/dbschema-kit/define-model.test.js +0 -56
  247. package/generators/tests/unit/lib/dbschema-kit/dialect/index.test.js +0 -46
  248. package/generators/tests/unit/lib/dbschema-kit/dialect/mysql.test.js +0 -126
  249. package/generators/tests/unit/lib/dbschema-kit/dialect/oracle.test.js +0 -126
  250. package/generators/tests/unit/lib/dbschema-kit/dialect/postgres.test.js +0 -131
  251. package/generators/tests/unit/lib/dbschema-kit/dialect/sqlite.test.js +0 -126
  252. package/generators/tests/unit/lib/dbschema-kit/driver-loader.test.js +0 -93
  253. package/generators/tests/unit/lib/dbschema-kit/emitters/create-index.test.js +0 -173
  254. package/generators/tests/unit/lib/dbschema-kit/emitters/create-table.test.js +0 -376
  255. package/generators/tests/unit/lib/dbschema-kit/emitters/drop-table.test.js +0 -78
  256. package/generators/tests/unit/lib/dbschema-kit/fixtures/connection/invalid-dialect.env +0 -6
  257. package/generators/tests/unit/lib/dbschema-kit/fixtures/connection/missing-dialect.env +0 -5
  258. package/generators/tests/unit/lib/dbschema-kit/fixtures/connection/missing-host.env +0 -5
  259. package/generators/tests/unit/lib/dbschema-kit/fixtures/connection/oracle-valid.env +0 -6
  260. package/generators/tests/unit/lib/dbschema-kit/fixtures/connection/postgres-valid.env +0 -7
  261. package/generators/tests/unit/lib/dbschema-kit/fixtures/connection/sqlite-valid.env +0 -2
  262. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory/category.js +0 -11
  263. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory/item_product.js +0 -11
  264. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory/stock_inbound.js +0 -24
  265. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory/stock_inbound_item.js +0 -28
  266. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory/supplier.js +0 -9
  267. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory/warehouse.js +0 -9
  268. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-invalid/orphan.js +0 -17
  269. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-multifolder/master/category.js +0 -11
  270. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-multifolder/master/item_product.js +0 -11
  271. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-multifolder/master/supplier.js +0 -9
  272. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-multifolder/master/warehouse.js +0 -9
  273. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-multifolder/transactions/stock_inbound.js +0 -24
  274. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-multifolder/transactions/stock_inbound_item.js +0 -28
  275. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/multi-schema/audit/events.js +0 -18
  276. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/multi-schema/inventory/products.js +0 -9
  277. package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/multi-schema/public/users.js +0 -9
  278. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/duplicate-subfolder/extra/category.js +0 -8
  279. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/duplicate-subfolder/master/category.js +0 -8
  280. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/duplicate-tablename/bar.js +0 -8
  281. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/duplicate-tablename/foo.js +0 -8
  282. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/empty-folder/README.md +0 -1
  283. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/invalid-export/plain.js +0 -3
  284. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/invalid-schema/bad.js +0 -6
  285. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/legacy-pattern/legacy.js +0 -12
  286. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/multi-schema-distinct/audit/products.js +0 -9
  287. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/multi-schema-distinct/inventory/products.js +0 -9
  288. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/multi-schema-duplicate/a/products.js +0 -8
  289. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/multi-schema-duplicate/b/products.js +0 -8
  290. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/nested-deep/a/b/c/deep_table.js +0 -8
  291. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/recursive-multi-folder/.hidden/ignored.js +0 -7
  292. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/recursive-multi-folder/master/category.js +0 -8
  293. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/recursive-multi-folder/master/supplier.js +0 -8
  294. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/recursive-multi-folder/transactions/stock_inbound.js +0 -8
  295. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/recursive-multi-folder/transactions/stock_inbound_item.js +0 -8
  296. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/valid-multiple/category.js +0 -8
  297. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/valid-multiple/item_product.js +0 -9
  298. package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/valid-single/category.js +0 -8
  299. package/generators/tests/unit/lib/dbschema-kit/integration.test.js +0 -217
  300. package/generators/tests/unit/lib/dbschema-kit/introspect-mapper.test.js +0 -403
  301. package/generators/tests/unit/lib/dbschema-kit/ir-builder.test.js +0 -390
  302. package/generators/tests/unit/lib/dbschema-kit/loader.test.js +0 -128
  303. package/generators/tests/unit/lib/dbschema-kit/naming.test.js +0 -170
  304. package/generators/tests/unit/lib/dbschema-kit/parser/shorthand-parser.test.js +0 -237
  305. package/generators/tests/unit/lib/dbschema-kit/schema-printer.test.js +0 -251
  306. package/generators/tests/unit/lib/dbschema-kit/statement-modifier.test.js +0 -105
  307. package/generators/tests/unit/lib/dbschema-kit/statement-splitter.test.js +0 -165
  308. package/generators/tests/unit/lib/dbschema-kit/topological-sort.test.js +0 -135
  309. package/generators/tests/unit/lib/dbschema-kit/validator/check-compatibility-validator.test.js +0 -373
  310. package/generators/tests/unit/lib/dbschema-kit/validator/circular-relation-validator.test.js +0 -454
  311. package/generators/tests/unit/lib/dbschema-kit/validator/cross-model-validator.test.js +0 -512
  312. package/generators/tests/unit/lib/dbschema-kit/validator/enhanced-validate-integration.test.js +0 -390
  313. package/generators/tests/unit/lib/dbschema-kit/validator/naming-convention-validator.test.js +0 -306
  314. package/generators/tests/unit/lib/dbschema-kit/validator/schema-validator.test.js +0 -443
  315. package/generators/tests/unit/lib/dbschema-kit/validator/type-compatibility-validator.test.js +0 -440
  316. package/generators/tests/unit/lib/dbschema-kit/validator/validator-reporter.test.js +0 -172
  317. package/generators/tests/unit/lib/metadata-manager-dashboard.test.js +0 -256
  318. package/generators/tests/unit/lib/payload-validator-fieldpolicy.test.js +0 -240
  319. package/generators/tests/unit/lib/processor-validation-generator.test.js +0 -300
  320. package/generators/tests/unit/lib/sensitive-field-masker.test.js +0 -170
  321. package/generators/tests/unit/lib/sql-table-extractor.test.js +0 -119
  322. package/scripts/generate-integrity-manifest.js +0 -124
  323. package/scripts/snapshot-cli-contracts.js +0 -194
  324. 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 (Oracle 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 (Oracle Database)',
236
- status: 'running',
237
- database: 'Oracle'
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 };