@restforgejs/platform 4.1.1 → 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.
- package/SECURITY.md +83 -4
- package/bin/sdf-tools.exe +0 -0
- package/build-info.json +2 -2
- package/cli/consumer-deploy.js +1 -1
- package/cli/consumer.js +1 -1
- package/generators/cli/dashboard/create.js +4 -1
- package/generators/cli/endpoint/create.js +43 -4
- package/generators/cli/key/generate.js +2 -1
- package/generators/cli/key/revoke.js +2 -1
- package/generators/cli/payload/diff.js +3 -2
- package/generators/cli/payload/generate.js +3 -2
- package/generators/cli/payload/sync.js +3 -2
- package/generators/cli/payload/validate.js +3 -2
- package/generators/cli/processor/create.js +14 -3
- package/generators/cli/project/delete.js +2 -1
- package/generators/cli/query/validate.js +3 -2
- package/generators/cli/schema/apply.js +526 -0
- package/generators/cli/schema/describe.js +3 -2
- package/generators/cli/schema/diff.js +322 -0
- package/generators/cli/schema/generate-ddl.js +7 -10
- package/generators/cli/schema/init.js +95 -172
- package/generators/cli/schema/introspect.js +3 -2
- package/generators/cli/schema/list.js +3 -2
- package/generators/cli/schema/migrate.js +13 -18
- package/generators/cli/schema/models.js +8 -12
- package/generators/cli/schema/template.js +222 -0
- package/generators/cli/schema/validate.js +8 -12
- package/generators/cli-entry.js +17 -2
- package/generators/lib/dbschema-kit/apply-engine.js +582 -0
- package/generators/lib/dbschema-kit/diff-engine.js +703 -0
- package/generators/lib/dbschema-kit/diff-reporter.js +272 -0
- package/generators/lib/dbschema-kit/emitters/alter-table.js +275 -0
- package/generators/lib/migration/audit-table-runner.js +213 -215
- package/generators/lib/payload/endpoint-schema-validator.js +171 -0
- package/generators/lib/payload/payload-runner.js +137 -220
- package/generators/lib/payload/schema-diff.js +277 -0
- package/generators/lib/templates/dashboard-catalog.js +1 -437
- package/generators/lib/templates/db-connection-env.js +1 -212
- package/generators/lib/templates/dbschema-catalog.js +1 -489
- package/generators/lib/templates/field-validation-catalog.js +1 -531
- package/generators/lib/templates/mysql-template.js +1 -3863
- package/generators/lib/templates/oracle-template.js +1 -3915
- package/generators/lib/templates/postgres-template.js +1 -5838
- package/generators/lib/templates/query-declarative-catalog.js +1 -199
- package/generators/lib/templates/sqlite-template.js +1 -3440
- package/generators/lib/utils/audit-columns.js +181 -0
- package/generators/lib/utils/cli-output.js +17 -0
- package/generators/lib/utils/database-introspector.js +16 -13
- package/generators/lib/utils/env-manager.js +6 -0
- package/generators/lib/utils/path-validator.js +71 -0
- package/generators/lib/validators/payload-validator.js +1 -2
- package/integrity-manifest.json +28 -10
- package/package.json +11 -3
- package/scripts/verify-integrity.js +1 -1
- package/server.js +1 -1
- package/src/components/handlers/adjust_handler.js +1 -1
- package/src/components/handlers/audit_handler.js +1 -1
- package/src/components/handlers/delete_handler.js +1 -1
- package/src/components/handlers/export_handler.js +1 -1
- package/src/components/handlers/import_handler.js +1 -1
- package/src/components/handlers/insert_handler.js +1 -1
- package/src/components/handlers/update_handler.js +1 -1
- package/src/components/handlers/upload_handler.js +1 -1
- package/src/components/handlers/workflow_handler.js +1 -1
- package/src/components/integrations/webhook.js +1 -1
- package/src/consumers/baseConsumer.js +1 -1
- package/src/consumers/declarativeMapper.js +1 -1
- package/src/consumers/handlers/apiHandler.js +1 -1
- package/src/consumers/handlers/consoleHandler.js +1 -1
- package/src/consumers/handlers/databaseHandler.js +1 -1
- package/src/consumers/handlers/index.js +1 -1
- package/src/consumers/handlers/kafkaHandler.js +1 -1
- package/src/consumers/index.js +1 -1
- package/src/consumers/messageTransformer.js +1 -1
- package/src/consumers/validator.js +1 -1
- package/src/core/db/dialect/base-dialect.js +1 -1
- package/src/core/db/dialect/index.js +1 -1
- package/src/core/db/dialect/mysql-dialect.js +1 -1
- package/src/core/db/dialect/oracle-dialect.js +1 -1
- package/src/core/db/dialect/postgres-dialect.js +1 -1
- package/src/core/db/dialect/sqlite-dialect.js +1 -1
- package/src/core/db/flatten-helper.js +1 -1
- package/src/core/db/query-builder-error.js +1 -1
- package/src/core/db/query-builder.js +1 -1
- package/src/core/db/relation-helper.js +1 -1
- package/src/core/handlers/delete_handler.js +1 -1
- package/src/core/handlers/insert_handler.js +1 -1
- package/src/core/handlers/update_handler.js +1 -1
- package/src/core/models/base-model.js +1 -1
- package/src/core/utils/cache-manager.js +1 -1
- package/src/core/utils/component-engine.js +1 -1
- package/src/core/utils/context-builder.js +1 -1
- package/src/core/utils/datetime-formatter.js +1 -1
- package/src/core/utils/datetime-parser.js +1 -1
- package/src/core/utils/db.js +1 -1
- package/src/core/utils/logger.js +1 -1
- package/src/core/utils/payload-loader.js +1 -1
- package/src/core/utils/security-checks.js +1 -1
- package/src/middleware/body-options.js +1 -1
- package/src/middleware/cors.js +1 -1
- package/src/middleware/idempotency.js +1 -1
- package/src/middleware/rate-limiter.js +1 -1
- package/src/middleware/request-logger.js +1 -1
- package/src/middleware/security-headers.js +1 -1
- package/src/models/base-model-mysql.js +1 -1
- package/src/models/base-model-oracle.js +1 -1
- package/src/models/base-model-sqlite.js +1 -1
- package/src/models/base-model.js +1 -1
- package/src/pro/caching/redis-client.js +1 -1
- package/src/pro/caching/redis-helper.js +1 -1
- package/src/pro/consumers/baseConsumer.js +1 -1
- package/src/pro/consumers/declarativeMapper.js +1 -1
- package/src/pro/consumers/handlers/apiHandler.js +1 -1
- package/src/pro/consumers/handlers/consoleHandler.js +1 -1
- package/src/pro/consumers/handlers/databaseHandler.js +1 -1
- package/src/pro/consumers/handlers/index.js +1 -1
- package/src/pro/consumers/handlers/kafkaHandler.js +1 -1
- package/src/pro/consumers/index.js +1 -1
- package/src/pro/consumers/messageTransformer.js +1 -1
- package/src/pro/consumers/validator.js +1 -1
- package/src/pro/database/base-model-mysql.js +1 -1
- package/src/pro/database/base-model-oracle.js +1 -1
- package/src/pro/database/base-model-sqlite.js +1 -1
- package/src/pro/database/db-mysql.js +1 -1
- package/src/pro/database/db-oracle.js +1 -1
- package/src/pro/database/db-sqlite.js +1 -1
- package/src/pro/excel/excel-generator.js +1 -1
- package/src/pro/excel/excel-parser.js +1 -1
- package/src/pro/excel/export-service.js +1 -1
- package/src/pro/excel/export_handler.js +1 -1
- package/src/pro/excel/import-service.js +1 -1
- package/src/pro/excel/import-validator.js +1 -1
- package/src/pro/excel/import_handler.js +1 -1
- package/src/pro/excel/upsert-builder.js +1 -1
- package/src/pro/idgen/idgen-routes.js +1 -1
- package/src/pro/integrations/lookup-resolver.js +1 -1
- package/src/pro/integrations/upload-handler-v2.js +1 -1
- package/src/pro/integrations/upload-handler.js +1 -1
- package/src/pro/integrations/webhook.js +1 -1
- package/src/pro/locking/lock-routes.js +1 -1
- package/src/pro/locking/resource-lock-manager.js +1 -1
- package/src/pro/messaging/kafkaConsumerService.js +1 -1
- package/src/pro/messaging/kafkaService.js +1 -1
- package/src/pro/messaging/messagehubService.js +1 -1
- package/src/pro/messaging/rabbitmqService.js +1 -1
- package/src/pro/scheduler/job-manager.js +1 -1
- package/src/pro/scheduler/job-routes.js +1 -1
- package/src/pro/scheduler/job-validator.js +1 -1
- package/src/pro/storage/base-storage-provider.js +1 -1
- package/src/pro/storage/file-metadata-helper.js +1 -1
- package/src/pro/storage/index.js +1 -1
- package/src/pro/storage/local-storage-provider.js +1 -1
- package/src/pro/storage/s3-storage-provider.js +1 -1
- package/src/pro/storage/upload-cleanup-job.js +1 -1
- package/src/pro/storage/upload-cleanup-scheduler.js +1 -1
- package/src/pro/storage/upload-pending-tracker.js +1 -1
- package/src/pro/websocket/broadcast-helper.js +1 -1
- package/src/pro/websocket/index.js +1 -1
- package/src/pro/websocket/livesync-server.js +1 -1
- package/src/pro/websocket/ws-broadcaster.js +1 -1
- package/src/services/export-service.js +1 -1
- package/src/services/import-service.js +1 -1
- package/src/services/kafkaConsumerService.js +1 -1
- package/src/services/kafkaService.js +1 -1
- package/src/services/messagehubService.js +1 -1
- package/src/services/rabbitmqService.js +1 -1
- package/src/utils/cache-invalidation-registry.js +1 -1
- package/src/utils/cache-manager.js +1 -1
- package/src/utils/component-engine.js +1 -1
- package/src/utils/config-extractor.js +1 -1
- package/src/utils/consumerLogger.js +1 -1
- package/src/utils/context-builder.js +1 -1
- package/src/utils/dashboard-helpers.js +1 -1
- package/src/utils/dateHelper.js +1 -1
- package/src/utils/datetime-formatter.js +1 -1
- package/src/utils/datetime-parser.js +1 -1
- package/src/utils/db-bootstrap.js +1 -1
- package/src/utils/db-mysql.js +1 -1
- package/src/utils/db-oracle.js +1 -1
- package/src/utils/db-sqlite.js +1 -1
- package/src/utils/db.js +1 -1
- package/src/utils/demo-generator.js +1 -1
- package/src/utils/excel-generator.js +1 -1
- package/src/utils/excel-parser.js +1 -1
- package/src/utils/file-watcher.js +1 -1
- package/src/utils/id-generator.js +1 -1
- package/src/utils/idempotency-manager.js +1 -1
- package/src/utils/import-validator.js +1 -1
- package/src/utils/license-client.js +1 -1
- package/src/utils/lock-manager.js +1 -1
- package/src/utils/logger.js +1 -1
- package/src/utils/lookup-resolver.js +1 -1
- package/src/utils/payload-loader.js +1 -1
- package/src/utils/processor-response.js +1 -1
- package/src/utils/rabbitmq.js +1 -1
- package/src/utils/redis-client.js +1 -1
- package/src/utils/redis-helper.js +1 -1
- package/src/utils/request-scope.js +1 -1
- package/src/utils/security-checks.js +1 -1
- package/src/utils/service-resolver.js +1 -1
- package/src/utils/shutdown-coordinator.js +1 -1
- package/src/utils/trusted-keys.js +1 -1
- package/src/utils/upload-handler.js +1 -1
- package/src/utils/upsert-builder.js +1 -1
- package/src/utils/workflow-hook-executor.js +1 -1
- package/generators/metadata/global.json +0 -58
- package/generators/metadata/test-mysql-workbench.json +0 -118
- package/generators/metadata/test-mysql.json +0 -56
- package/generators/metadata/test-oracle-workbench.json +0 -118
- package/generators/metadata/test-oracle.json +0 -56
- package/generators/metadata/test-pg-workbench.json +0 -118
- package/generators/metadata/test-pg.json +0 -56
- package/generators/scripts/obfuscate-source.js +0 -356
- package/generators/scripts/validate-catalog.js +0 -430
- package/generators/scripts/validate-dbschema-catalog.js +0 -708
- package/generators/tests/baseline/mysql/mini_inventory_item/src/models/mini-inventory/item.js +0 -944
- package/generators/tests/baseline/mysql/mini_inventory_item/src/modules/mini-inventory/item.js +0 -740
- package/generators/tests/baseline/mysql/mini_inventory_item/src/modules/mini-inventory.js +0 -336
- package/generators/tests/baseline/oracle/mini_inventory_item/src/models/mini-inventory/item.js +0 -1002
- package/generators/tests/baseline/oracle/mini_inventory_item/src/modules/mini-inventory/item.js +0 -740
- package/generators/tests/baseline/oracle/mini_inventory_item/src/modules/mini-inventory.js +0 -336
- package/generators/tests/baseline/postgres/mini_inventory_item/src/models/mini-inventory/item.js +0 -1333
- package/generators/tests/baseline/postgres/mini_inventory_item/src/modules/mini-inventory/item.js +0 -1173
- package/generators/tests/baseline/postgres/mini_inventory_item/src/modules/mini-inventory.js +0 -496
- package/generators/tests/fixtures/payloads/custom-sensitive.json +0 -27
- package/generators/tests/fixtures/payloads/dynamic-search-optout.json +0 -23
- package/generators/tests/fixtures/payloads/login-with-password.json +0 -22
- package/generators/tests/fixtures/payloads/order-process.json +0 -52
- package/generators/tests/fixtures/payloads/with-inline-sql.json +0 -26
- package/generators/tests/integration-tahap4b/README.md +0 -145
- package/generators/tests/integration-tahap4b/run-concurrent.js +0 -77
- package/generators/tests/integration-tahap4b/seed.sql +0 -53
- package/generators/tests/integration-tahap4b/verify.sql +0 -110
- package/generators/tests/unit/cli/create-dashboard.test.js +0 -505
- package/generators/tests/unit/cli/create-processor.test.js +0 -319
- package/generators/tests/unit/cli/dispatch-dashboard.test.js +0 -149
- package/generators/tests/unit/lib/dashboard-generator.test.js +0 -895
- package/generators/tests/unit/lib/dashboard-validator.test.js +0 -354
- package/generators/tests/unit/lib/dbschema-kit/apply-executor.test.js +0 -437
- package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-introspect.test.js +0 -393
- package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-kit-generate-ddl.test.js +0 -104
- package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-kit-init.test.js +0 -119
- package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-kit-list.test.js +0 -48
- package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-kit-migrate.test.js +0 -175
- package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-kit-validate.test.js +0 -102
- package/generators/tests/unit/lib/dbschema-kit/cli/dbschema-models.test.js +0 -43
- package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/introspect-stubs/all-schemas-listing.js +0 -84
- package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/introspect-stubs/connection-error.js +0 -13
- package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/introspect-stubs/empty.js +0 -12
- package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/introspect-stubs/multi-schema.js +0 -124
- package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/introspect-stubs/single-schema-inventory.js +0 -64
- package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/introspect-stubs/two-tables.js +0 -66
- package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/migrate-stubs/connection-error.js +0 -9
- package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/migrate-stubs/partial.js +0 -29
- package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/migrate-stubs/rollback.js +0 -26
- package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/migrate-stubs/success.js +0 -43
- package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/multi-schema/audit/events.js +0 -18
- package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/multi-schema/inventory/products.js +0 -9
- package/generators/tests/unit/lib/dbschema-kit/cli/fixtures/multi-schema/users.js +0 -8
- package/generators/tests/unit/lib/dbschema-kit/connection.test.js +0 -112
- package/generators/tests/unit/lib/dbschema-kit/ddl-generator.test.js +0 -205
- package/generators/tests/unit/lib/dbschema-kit/define-model.test.js +0 -56
- package/generators/tests/unit/lib/dbschema-kit/dialect/index.test.js +0 -46
- package/generators/tests/unit/lib/dbschema-kit/dialect/mysql.test.js +0 -126
- package/generators/tests/unit/lib/dbschema-kit/dialect/oracle.test.js +0 -126
- package/generators/tests/unit/lib/dbschema-kit/dialect/postgres.test.js +0 -131
- package/generators/tests/unit/lib/dbschema-kit/dialect/sqlite.test.js +0 -126
- package/generators/tests/unit/lib/dbschema-kit/driver-loader.test.js +0 -93
- package/generators/tests/unit/lib/dbschema-kit/emitters/create-index.test.js +0 -173
- package/generators/tests/unit/lib/dbschema-kit/emitters/create-table.test.js +0 -376
- package/generators/tests/unit/lib/dbschema-kit/emitters/drop-table.test.js +0 -78
- package/generators/tests/unit/lib/dbschema-kit/fixtures/connection/invalid-dialect.env +0 -6
- package/generators/tests/unit/lib/dbschema-kit/fixtures/connection/missing-dialect.env +0 -5
- package/generators/tests/unit/lib/dbschema-kit/fixtures/connection/missing-host.env +0 -5
- package/generators/tests/unit/lib/dbschema-kit/fixtures/connection/oracle-valid.env +0 -6
- package/generators/tests/unit/lib/dbschema-kit/fixtures/connection/postgres-valid.env +0 -7
- package/generators/tests/unit/lib/dbschema-kit/fixtures/connection/sqlite-valid.env +0 -2
- package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory/category.js +0 -11
- package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory/item_product.js +0 -11
- package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory/stock_inbound.js +0 -24
- package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory/stock_inbound_item.js +0 -28
- package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory/supplier.js +0 -9
- package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory/warehouse.js +0 -9
- package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-invalid/orphan.js +0 -17
- package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-multifolder/master/category.js +0 -11
- package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-multifolder/master/item_product.js +0 -11
- package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-multifolder/master/supplier.js +0 -9
- package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-multifolder/master/warehouse.js +0 -9
- package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-multifolder/transactions/stock_inbound.js +0 -24
- package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/mini-inventory-multifolder/transactions/stock_inbound_item.js +0 -28
- package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/multi-schema/audit/events.js +0 -18
- package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/multi-schema/inventory/products.js +0 -9
- package/generators/tests/unit/lib/dbschema-kit/fixtures/integration/multi-schema/public/users.js +0 -9
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/duplicate-subfolder/extra/category.js +0 -8
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/duplicate-subfolder/master/category.js +0 -8
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/duplicate-tablename/bar.js +0 -8
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/duplicate-tablename/foo.js +0 -8
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/empty-folder/README.md +0 -1
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/invalid-export/plain.js +0 -3
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/invalid-schema/bad.js +0 -6
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/legacy-pattern/legacy.js +0 -12
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/multi-schema-distinct/audit/products.js +0 -9
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/multi-schema-distinct/inventory/products.js +0 -9
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/multi-schema-duplicate/a/products.js +0 -8
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/multi-schema-duplicate/b/products.js +0 -8
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/nested-deep/a/b/c/deep_table.js +0 -8
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/recursive-multi-folder/.hidden/ignored.js +0 -7
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/recursive-multi-folder/master/category.js +0 -8
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/recursive-multi-folder/master/supplier.js +0 -8
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/recursive-multi-folder/transactions/stock_inbound.js +0 -8
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/recursive-multi-folder/transactions/stock_inbound_item.js +0 -8
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/valid-multiple/category.js +0 -8
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/valid-multiple/item_product.js +0 -9
- package/generators/tests/unit/lib/dbschema-kit/fixtures/loader/valid-single/category.js +0 -8
- package/generators/tests/unit/lib/dbschema-kit/integration.test.js +0 -217
- package/generators/tests/unit/lib/dbschema-kit/introspect-mapper.test.js +0 -403
- package/generators/tests/unit/lib/dbschema-kit/ir-builder.test.js +0 -390
- package/generators/tests/unit/lib/dbschema-kit/loader.test.js +0 -128
- package/generators/tests/unit/lib/dbschema-kit/naming.test.js +0 -170
- package/generators/tests/unit/lib/dbschema-kit/parser/shorthand-parser.test.js +0 -237
- package/generators/tests/unit/lib/dbschema-kit/schema-printer.test.js +0 -251
- package/generators/tests/unit/lib/dbschema-kit/statement-modifier.test.js +0 -105
- package/generators/tests/unit/lib/dbschema-kit/statement-splitter.test.js +0 -165
- package/generators/tests/unit/lib/dbschema-kit/topological-sort.test.js +0 -135
- package/generators/tests/unit/lib/dbschema-kit/validator/check-compatibility-validator.test.js +0 -373
- package/generators/tests/unit/lib/dbschema-kit/validator/circular-relation-validator.test.js +0 -454
- package/generators/tests/unit/lib/dbschema-kit/validator/cross-model-validator.test.js +0 -512
- package/generators/tests/unit/lib/dbschema-kit/validator/enhanced-validate-integration.test.js +0 -390
- package/generators/tests/unit/lib/dbschema-kit/validator/naming-convention-validator.test.js +0 -306
- package/generators/tests/unit/lib/dbschema-kit/validator/schema-validator.test.js +0 -443
- package/generators/tests/unit/lib/dbschema-kit/validator/type-compatibility-validator.test.js +0 -440
- package/generators/tests/unit/lib/dbschema-kit/validator/validator-reporter.test.js +0 -172
- package/generators/tests/unit/lib/metadata-manager-dashboard.test.js +0 -256
- package/generators/tests/unit/lib/payload-validator-fieldpolicy.test.js +0 -240
- package/generators/tests/unit/lib/processor-validation-generator.test.js +0 -300
- package/generators/tests/unit/lib/sensitive-field-masker.test.js +0 -170
- package/generators/tests/unit/lib/sql-table-extractor.test.js +0 -119
- package/scripts/generate-integrity-manifest.js +0 -124
- package/scripts/snapshot-cli-contracts.js +0 -194
- package/scripts/verify-publish.js +0 -56
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Audit Columns Helper
|
|
5
|
+
*
|
|
6
|
+
* Resolve nama kolom audit yang efektif berdasarkan konfigurasi payload.
|
|
7
|
+
* Konvensi default mengikuti BaseModel runtime di `src/models/base-model.js`:
|
|
8
|
+
* createdAt -> created_at
|
|
9
|
+
* createdBy -> created_by
|
|
10
|
+
* updatedAt -> updated_at
|
|
11
|
+
* updatedBy -> updated_by
|
|
12
|
+
*
|
|
13
|
+
* Payload dapat override behavior:
|
|
14
|
+
* - `auditColumns: false` (atau null) -> disable audit columns
|
|
15
|
+
* - `auditColumns: { createdAt, createdBy, updatedAt, updatedBy }` -> custom mapping
|
|
16
|
+
* - tidak di-set / true -> pakai default 4 nama standar
|
|
17
|
+
*
|
|
18
|
+
* Helper ini dipakai oleh:
|
|
19
|
+
* - schema-diff: compute effective field list (fieldName ∪ audit columns)
|
|
20
|
+
* - endpoint create: validation pre-codegen
|
|
21
|
+
*
|
|
22
|
+
* @module lib/utils/audit-columns
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
const DEFAULT_AUDIT_COLUMN_MAP = {
|
|
26
|
+
createdAt: 'created_at',
|
|
27
|
+
createdBy: 'created_by',
|
|
28
|
+
updatedAt: 'updated_at',
|
|
29
|
+
updatedBy: 'updated_by'
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const DEFAULT_AUDIT_COLUMNS = Object.values(DEFAULT_AUDIT_COLUMN_MAP);
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Cek apakah audit columns aktif untuk payload ini.
|
|
36
|
+
*
|
|
37
|
+
* @param {Object} payload - Processed payload object
|
|
38
|
+
* @returns {boolean} true jika audit columns akan di-inject runtime
|
|
39
|
+
*/
|
|
40
|
+
function isAuditColumnsEnabled(payload) {
|
|
41
|
+
if (!payload) return false;
|
|
42
|
+
if (!Object.prototype.hasOwnProperty.call(payload, 'auditColumns')) return true;
|
|
43
|
+
const value = payload.auditColumns;
|
|
44
|
+
if (value === false || value === null) return false;
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Resolve nama kolom audit (sisi database) yang akan di-inject runtime.
|
|
50
|
+
* Mengembalikan empty array bila audit columns di-disable.
|
|
51
|
+
*
|
|
52
|
+
* @param {Object} payload - Processed payload object
|
|
53
|
+
* @returns {string[]} Array nama kolom database (snake_case)
|
|
54
|
+
*/
|
|
55
|
+
function resolveAuditColumnNames(payload) {
|
|
56
|
+
if (!isAuditColumnsEnabled(payload)) return [];
|
|
57
|
+
|
|
58
|
+
const value = payload && payload.auditColumns;
|
|
59
|
+
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
60
|
+
const out = [];
|
|
61
|
+
for (const key of Object.keys(DEFAULT_AUDIT_COLUMN_MAP)) {
|
|
62
|
+
const mapped = value[key];
|
|
63
|
+
if (typeof mapped === 'string' && mapped.length > 0) {
|
|
64
|
+
out.push(mapped);
|
|
65
|
+
} else {
|
|
66
|
+
out.push(DEFAULT_AUDIT_COLUMN_MAP[key]);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return out;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return DEFAULT_AUDIT_COLUMNS.slice();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Resolve effective field list yang dipakai generator codegen:
|
|
77
|
+
* gabungan fieldName eksplisit di payload + audit columns yang akan
|
|
78
|
+
* di-inject runtime.
|
|
79
|
+
*
|
|
80
|
+
* Dipakai oleh schema validation untuk men-detect drift yang berasal
|
|
81
|
+
* dari implicit audit columns (kasus umum: auditColumns aktif tapi
|
|
82
|
+
* tabel database tidak punya kolom audit).
|
|
83
|
+
*
|
|
84
|
+
* @param {Object} payload - Processed payload object
|
|
85
|
+
* @returns {{ fields: string[], audit: string[], explicit: string[] }}
|
|
86
|
+
*/
|
|
87
|
+
function resolveEffectiveFieldList(payload) {
|
|
88
|
+
const explicit = Array.isArray(payload && payload.fieldName)
|
|
89
|
+
? payload.fieldName.slice()
|
|
90
|
+
: [];
|
|
91
|
+
const audit = resolveAuditColumnNames(payload);
|
|
92
|
+
|
|
93
|
+
const merged = [];
|
|
94
|
+
const seen = new Set();
|
|
95
|
+
for (const f of explicit) {
|
|
96
|
+
if (!seen.has(f)) {
|
|
97
|
+
seen.add(f);
|
|
98
|
+
merged.push(f);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
for (const f of audit) {
|
|
102
|
+
if (!seen.has(f)) {
|
|
103
|
+
seen.add(f);
|
|
104
|
+
merged.push(f);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return {
|
|
109
|
+
fields: merged,
|
|
110
|
+
audit,
|
|
111
|
+
explicit
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Deteksi alignment kolom audit standar antara payload generator dan tabel
|
|
117
|
+
* database aktual. Helper ini dipakai oleh sync flow (payload-runner) dan
|
|
118
|
+
* initial generation untuk men-set `auditColumns: false` bila kolom audit
|
|
119
|
+
* tidak tersedia di database.
|
|
120
|
+
*
|
|
121
|
+
* Konvensi: kolom audit standar mengikuti DEFAULT_AUDIT_COLUMNS (snake_case).
|
|
122
|
+
* Match dilakukan exact lowercase; bila tabel pakai naming convention lain
|
|
123
|
+
* (mis. `CreatedAt`), audit detection akan miss.
|
|
124
|
+
*
|
|
125
|
+
* @param {string[]} dbColumns - Daftar nama kolom dari tabel database
|
|
126
|
+
* @returns {{
|
|
127
|
+
* all: boolean, // semua 4 kolom audit standar ada di database
|
|
128
|
+
* partial: boolean, // sebagian (1-3) kolom audit ada
|
|
129
|
+
* none: boolean, // tidak satupun kolom audit ada
|
|
130
|
+
* present: string[], // kolom audit yang ada di database
|
|
131
|
+
* missing: string[] // kolom audit yang tidak ada di database
|
|
132
|
+
* }}
|
|
133
|
+
*/
|
|
134
|
+
function detectAuditAlignment(dbColumns) {
|
|
135
|
+
const columns = Array.isArray(dbColumns) ? dbColumns : [];
|
|
136
|
+
const present = DEFAULT_AUDIT_COLUMNS.filter(col => columns.includes(col));
|
|
137
|
+
const missing = DEFAULT_AUDIT_COLUMNS.filter(col => !columns.includes(col));
|
|
138
|
+
return {
|
|
139
|
+
all: present.length === DEFAULT_AUDIT_COLUMNS.length,
|
|
140
|
+
partial: present.length > 0 && present.length < DEFAULT_AUDIT_COLUMNS.length,
|
|
141
|
+
none: present.length === 0,
|
|
142
|
+
present,
|
|
143
|
+
missing
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Cek apakah konfigurasi `auditColumns` di payload memerlukan resolusi
|
|
149
|
+
* berdasarkan alignment dengan database. Dipakai sync flow untuk men-detect
|
|
150
|
+
* "audit-only drift" yang tidak ter-detect oleh comparator schema reguler.
|
|
151
|
+
*
|
|
152
|
+
* Aturan resolusi:
|
|
153
|
+
* - `auditColumns: false`/`null` -> no-op (preserved)
|
|
154
|
+
* - `auditColumns: { ... }` (object form) -> no auto-override (manual)
|
|
155
|
+
* - `auditColumns: true` atau tidak di-set (default true) -> butuh resolusi
|
|
156
|
+
* bila database tidak punya keempat kolom audit standar (none atau partial)
|
|
157
|
+
*
|
|
158
|
+
* @param {Object} payload - Processed payload object
|
|
159
|
+
* @param {ReturnType<typeof detectAuditAlignment>} auditAlignment
|
|
160
|
+
* @returns {boolean} true bila sync wajib regenerate untuk men-set false
|
|
161
|
+
*/
|
|
162
|
+
function needsAuditColumnResolution(payload, auditAlignment) {
|
|
163
|
+
if (!payload || !auditAlignment) return false;
|
|
164
|
+
const hasField = Object.prototype.hasOwnProperty.call(payload, 'auditColumns');
|
|
165
|
+
const value = hasField ? payload.auditColumns : undefined;
|
|
166
|
+
|
|
167
|
+
if (value === false || value === null) return false;
|
|
168
|
+
if (value && typeof value === 'object' && !Array.isArray(value)) return false;
|
|
169
|
+
|
|
170
|
+
return !auditAlignment.all;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
module.exports = {
|
|
174
|
+
DEFAULT_AUDIT_COLUMN_MAP,
|
|
175
|
+
DEFAULT_AUDIT_COLUMNS,
|
|
176
|
+
isAuditColumnsEnabled,
|
|
177
|
+
resolveAuditColumnNames,
|
|
178
|
+
resolveEffectiveFieldList,
|
|
179
|
+
detectAuditAlignment,
|
|
180
|
+
needsAuditColumnResolution
|
|
181
|
+
};
|
|
@@ -67,6 +67,9 @@ class CliOutput {
|
|
|
67
67
|
? `${data.config.database} (force overwrite)`
|
|
68
68
|
: data.config.database;
|
|
69
69
|
out(` Database ${dbLine}`);
|
|
70
|
+
if (data.config.config) {
|
|
71
|
+
out(` Config ${data.config.config}`);
|
|
72
|
+
}
|
|
70
73
|
out('');
|
|
71
74
|
|
|
72
75
|
if (data.payload) {
|
|
@@ -79,6 +82,20 @@ class CliOutput {
|
|
|
79
82
|
out('');
|
|
80
83
|
}
|
|
81
84
|
|
|
85
|
+
if (data.schemaValidation) {
|
|
86
|
+
out('Schema Validation:');
|
|
87
|
+
if (data.schemaValidation.status === 'ok') {
|
|
88
|
+
const n = data.schemaValidation.columnsChecked || 0;
|
|
89
|
+
out(` Status OK (${n} column${n === 1 ? '' : 's'} match database)`);
|
|
90
|
+
} else if (data.schemaValidation.status === 'skipped') {
|
|
91
|
+
out(' Status SKIPPED (--skip-schema-check)');
|
|
92
|
+
if (data.schemaValidation.reason) {
|
|
93
|
+
out(` Reason ${data.schemaValidation.reason}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
out('');
|
|
97
|
+
}
|
|
98
|
+
|
|
82
99
|
if (data.archive && data.archive.count > 0) {
|
|
83
100
|
out('Archive (force):');
|
|
84
101
|
out(` Generation ${data.archive.generation} - ${data.archive.count} file(s) archived`);
|
|
@@ -242,22 +242,25 @@ class DatabaseIntrospector {
|
|
|
242
242
|
}
|
|
243
243
|
|
|
244
244
|
/**
|
|
245
|
-
* Close database connection
|
|
245
|
+
* Close database connection. Idempotent — panggilan kedua jadi no-op
|
|
246
|
+
* setelah `this.pool` di-null-kan. Ini mencegah pesan "Database connection
|
|
247
|
+
* closed" muncul dua kali ketika caller punya cleanup ganda (mis. cleanup
|
|
248
|
+
* eksplisit + cleanup di catch block).
|
|
246
249
|
*/
|
|
247
250
|
async close() {
|
|
248
|
-
if (this.pool)
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
}
|
|
255
|
-
} catch (e) {
|
|
256
|
-
// ignore close errors
|
|
257
|
-
}
|
|
258
|
-
if (!this.quiet) {
|
|
259
|
-
console.log('Database connection closed');
|
|
251
|
+
if (!this.pool) return;
|
|
252
|
+
try {
|
|
253
|
+
if (this.dbType === 'oracle') {
|
|
254
|
+
await this.pool.close(0);
|
|
255
|
+
} else {
|
|
256
|
+
await this.pool.end();
|
|
260
257
|
}
|
|
258
|
+
} catch (e) {
|
|
259
|
+
// ignore close errors
|
|
260
|
+
}
|
|
261
|
+
this.pool = null;
|
|
262
|
+
if (!this.quiet) {
|
|
263
|
+
console.log('Database connection closed');
|
|
261
264
|
}
|
|
262
265
|
}
|
|
263
266
|
|
|
@@ -302,6 +302,12 @@ function backupEnvFile(filePath) {
|
|
|
302
302
|
|
|
303
303
|
fs.copyFileSync(filePath, backupPath);
|
|
304
304
|
|
|
305
|
+
// Restrict permission ke owner-only karena .env mengandung credentials
|
|
306
|
+
// (LICENSE, KEY, DB_PASSWORD). No-op pada Windows yang pakai ACL.
|
|
307
|
+
if (process.platform !== 'win32') {
|
|
308
|
+
fs.chmodSync(backupPath, 0o600);
|
|
309
|
+
}
|
|
310
|
+
|
|
305
311
|
return backupPath;
|
|
306
312
|
}
|
|
307
313
|
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Path Validator Utility
|
|
5
|
+
*
|
|
6
|
+
* Utility validasi path-aware untuk CLI handler yang menerima input path-like.
|
|
7
|
+
* Mencegah path traversal via `..` atau absolute path keluar dari working directory.
|
|
8
|
+
*
|
|
9
|
+
* Phase 02 dari Security Hardening v1 (Temuan B3).
|
|
10
|
+
*
|
|
11
|
+
* @module lib/utils/path-validator
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const path = require('node:path');
|
|
15
|
+
|
|
16
|
+
const SAFE_NAME_REGEX = /^[a-zA-Z0-9_-]+$/;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Validate nama folder/file/module yang aman digunakan sebagai path component.
|
|
20
|
+
* Hanya memperbolehkan alphanumeric, dash, dan underscore.
|
|
21
|
+
*
|
|
22
|
+
* @param {string} value - Input value dari CLI argument
|
|
23
|
+
* @param {string} fieldName - Nama field untuk konteks error message
|
|
24
|
+
* @returns {string} value yang sudah divalidasi (untuk chaining)
|
|
25
|
+
* @throws {Error} jika value tidak valid (non-string, kosong, atau mengandung
|
|
26
|
+
* karakter di luar whitelist)
|
|
27
|
+
*/
|
|
28
|
+
function validateSafeName(value, fieldName) {
|
|
29
|
+
if (typeof value !== 'string' || value.length === 0) {
|
|
30
|
+
throw new Error(`${fieldName} must be a non-empty string`);
|
|
31
|
+
}
|
|
32
|
+
if (!SAFE_NAME_REGEX.test(value)) {
|
|
33
|
+
throw new Error(
|
|
34
|
+
`${fieldName} must contain only alphanumeric, dash, or underscore characters. ` +
|
|
35
|
+
`Got: ${JSON.stringify(value)}`
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
return value;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Validate bahwa resolved targetPath berada di dalam baseDir.
|
|
43
|
+
* Mencegah path traversal via `..` atau absolute path keluar.
|
|
44
|
+
*
|
|
45
|
+
* @param {string} targetPath - Path target (boleh relative atau absolute)
|
|
46
|
+
* @param {string} baseDir - Base directory yang harus mengandung targetPath
|
|
47
|
+
* @returns {string} resolved absolute path
|
|
48
|
+
* @throws {Error} jika resolved path escape dari baseDir
|
|
49
|
+
*/
|
|
50
|
+
function validatePathWithinBase(targetPath, baseDir) {
|
|
51
|
+
if (typeof targetPath !== 'string' || targetPath.length === 0) {
|
|
52
|
+
throw new Error('targetPath must be a non-empty string');
|
|
53
|
+
}
|
|
54
|
+
if (typeof baseDir !== 'string' || baseDir.length === 0) {
|
|
55
|
+
throw new Error('baseDir must be a non-empty string');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const baseResolved = path.resolve(baseDir);
|
|
59
|
+
const resolved = path.isAbsolute(targetPath)
|
|
60
|
+
? path.resolve(targetPath)
|
|
61
|
+
: path.resolve(baseResolved, targetPath);
|
|
62
|
+
|
|
63
|
+
if (resolved !== baseResolved && !resolved.startsWith(baseResolved + path.sep)) {
|
|
64
|
+
throw new Error(
|
|
65
|
+
`Path "${targetPath}" escapes from base directory ${baseDir}`
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
return resolved;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
module.exports = { validateSafeName, validatePathWithinBase };
|
|
@@ -263,7 +263,6 @@ class PayloadValidator {
|
|
|
263
263
|
if (payload.fieldProtection !== undefined) {
|
|
264
264
|
throw new Error(
|
|
265
265
|
`'fieldProtection' in ${fileName} has been replaced by 'fieldPolicy'. ` +
|
|
266
|
-
`See docs/todo/todo-fieldpolicy-extension.md for migration. ` +
|
|
267
266
|
`Example: { "fieldPolicy": { "${Object.keys(payload.fieldProtection)[0] || 'columnName'}": { "strategies": ["lock", "audit"] } } }`
|
|
268
267
|
);
|
|
269
268
|
}
|
|
@@ -468,7 +467,7 @@ class PayloadValidator {
|
|
|
468
467
|
|
|
469
468
|
if (PHASE2_STRATEGIES.includes(strategy)) {
|
|
470
469
|
throw new Error(
|
|
471
|
-
`fieldPolicy.${columnName}.strategies includes '${strategy}' which is planned for Phase 2 of fieldPolicy roadmap
|
|
470
|
+
`fieldPolicy.${columnName}.strategies includes '${strategy}' which is planned for Phase 2 of fieldPolicy roadmap. Currently only 'lock' and 'audit' are supported.`
|
|
472
471
|
);
|
|
473
472
|
}
|
|
474
473
|
|
package/integrity-manifest.json
CHANGED
|
@@ -1,19 +1,37 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "4.
|
|
3
|
-
"generated": "2026-05-
|
|
2
|
+
"version": "4.3.1",
|
|
3
|
+
"generated": "2026-05-23T07:28:02.234Z",
|
|
4
4
|
"generator": "restforge-build-system",
|
|
5
5
|
"algorithm": "sha256",
|
|
6
6
|
"files": {
|
|
7
|
-
"server.js": "
|
|
8
|
-
"src/utils/license-client.js": "
|
|
9
|
-
"src/utils/trusted-keys.js": "
|
|
10
|
-
"cli/consumer.js": "
|
|
11
|
-
"src/utils/security-checks.js": "
|
|
12
|
-
"scripts/verify-integrity.js": "
|
|
7
|
+
"server.js": "2ef2e146c66d74df2413398fa86944396ca20c310606237d2819eea504a3692c",
|
|
8
|
+
"src/utils/license-client.js": "5842a6fefa0ef4035cbd7ec1cac2ba65a6918e7faa1afa38812b2bb6e5be93b0",
|
|
9
|
+
"src/utils/trusted-keys.js": "2440fca5a73a633d9b37a2df2e740a8a00e131ecbabb05700cb6969cdf868da1",
|
|
10
|
+
"cli/consumer.js": "fcadb7f7c5b4c09c328ffb1ae882df823f5046d1a0c9ec61d25142bcca262663",
|
|
11
|
+
"src/utils/security-checks.js": "ca6d75ee3c20051f4931bd28d2ab12f0f5892e8d74e223bdac3038731979f557",
|
|
12
|
+
"scripts/verify-integrity.js": "bcd4ab356a196676235ffc81ab086b6fa7204e2720549f58006054f8cf7aafd3",
|
|
13
|
+
"bin/restforge-hwinfo-linux": "d9a0071b0acf58a020e738a29837de356f531a5a84d363a2adc50563e3874b8f",
|
|
14
|
+
"bin/restforge-hwinfo-darwin": "d35b15d4e6d7bbdd8317490335ba9602ce5c218519898fa3eabe18cc9c5bb1b6",
|
|
15
|
+
"bin/restforge-hwinfo.exe": "351fa4d33459d30de804ee78deb5eb977b77b688fe1b7b461cdaa214a82f145e",
|
|
16
|
+
"generators/lib/templates/mysql-template.js": "f0328973fb28dd1d01f314e1328d817aed4fde9243f8c9896f950cb57a3fcffb",
|
|
17
|
+
"generators/lib/templates/oracle-template.js": "58f3a1cff3fbcffc39ae6cacb72a6c88a8434e8c33b8ae7463806095c84cf1b3",
|
|
18
|
+
"generators/lib/templates/postgres-template.js": "d339fd5f0ce260233e3c80831a637dd8d27e4f4ca72aa39a3cd6946f4bd9886e",
|
|
19
|
+
"generators/lib/templates/sqlite-template.js": "778b0e44514694e3e1a4e0a4ce5d9b6bb2e4f716e4769331a723dd9ad0b250e4",
|
|
20
|
+
"generators/lib/templates/dashboard-catalog.js": "7ab933e347c60eff7359ca621cd3f40d493641bcb25870d4150a9dbf740c2105",
|
|
21
|
+
"generators/lib/templates/dbschema-catalog.js": "779388a04c512ec24f8f7822b4d8feb3c20ad8d70787a3dc3478ece1df823daf",
|
|
22
|
+
"generators/lib/templates/field-validation-catalog.js": "85f925cfe158ce6c00f98dcecbcdf7c45971c5ec64d694b7707f784bdd1a650c",
|
|
23
|
+
"generators/lib/templates/query-declarative-catalog.js": "d60fb26d9336e0aa2913d94d14b79a0934ed8cc848013bbd6d77a5cdda32bf9f",
|
|
24
|
+
"generators/lib/templates/db-connection-env.js": "85cd3f5b68121294b32fc706b4578ba7581e1e1f8399eee2e656ab1dadb5adcf"
|
|
13
25
|
},
|
|
14
26
|
"stats": {
|
|
15
|
-
"totalFiles":
|
|
16
|
-
"protectedFiles":
|
|
27
|
+
"totalFiles": 18,
|
|
28
|
+
"protectedFiles": 18,
|
|
17
29
|
"missingFiles": 0
|
|
30
|
+
},
|
|
31
|
+
"signature": {
|
|
32
|
+
"algorithm": "ed25519",
|
|
33
|
+
"keyId": "rfs-manifest-2026-05",
|
|
34
|
+
"value": "340f2df9ae9c75e0c51cee4be5dd7ac0ccc4a3daedc2fa732a24bbe9b4d3e35d7215358ca313d5dcbdd03b08bdd6242ed7e9f701907aad2fb2f91acf9cb92009",
|
|
35
|
+
"scope": "canonical-json(manifest-without-signature)"
|
|
18
36
|
}
|
|
19
37
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@restforgejs/platform",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.3.1",
|
|
4
4
|
"description": "RESTForge Platform — Schema-driven backend framework and code generator for full-stack Node.js applications. Generates production backend APIs with multi-database support (PostgreSQL, MySQL, Oracle). A platform builder and backend runtime, not an API testing or client tool.",
|
|
5
5
|
"main": "server.js",
|
|
6
6
|
"bin": {
|
|
@@ -34,10 +34,18 @@
|
|
|
34
34
|
"server.js",
|
|
35
35
|
"cli/",
|
|
36
36
|
"src/",
|
|
37
|
-
"scripts/",
|
|
37
|
+
"scripts/check-install.js",
|
|
38
|
+
"scripts/verify-integrity.js",
|
|
38
39
|
"config/",
|
|
39
40
|
"bin/",
|
|
40
|
-
"generators/",
|
|
41
|
+
"generators/cli-entry.js",
|
|
42
|
+
"generators/cli/",
|
|
43
|
+
"generators/lib/",
|
|
44
|
+
"generators/assets/",
|
|
45
|
+
"generators/payload/",
|
|
46
|
+
"generators/sync-version.js",
|
|
47
|
+
"generators/src/",
|
|
48
|
+
"generators/examples/",
|
|
41
49
|
"integrity-manifest.json",
|
|
42
50
|
"README.md",
|
|
43
51
|
"LICENSE.md",
|