gina 0.4.0 → 0.4.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/CHANGELOG.md +17 -0
- package/README.md +5 -11
- package/ROADMAP.md +18 -7
- package/bin/cli +12 -0
- package/framework/v0.4.1/VERSION +1 -0
- package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/js/gina.js +0 -3
- package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +1 -1
- package/framework/v0.4.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.4.0 → v0.4.1}/core/controller/controller.js +43 -0
- package/framework/{v0.4.0 → v0.4.1}/core/controller/controller.render-nunjucks.js +117 -7
- package/framework/{v0.4.0 → v0.4.1}/core/controller/controller.render-swig.js +21 -1
- package/framework/{v0.4.0 → v0.4.1}/core/server.js +23 -1
- package/framework/{v0.4.0 → v0.4.1}/lib/cache/src/main.js +0 -3
- package/framework/{v0.4.0 → v0.4.1}/lib/cmd/bundle/add.js +24 -0
- package/framework/{v0.4.0 → v0.4.1}/lib/cmd/bundle/arguments.json +3 -1
- package/framework/v0.4.1/lib/cmd/bundle/copy.js +467 -0
- package/framework/{v0.4.0 → v0.4.1}/lib/cmd/bundle/help.txt +74 -0
- package/framework/v0.4.1/lib/cmd/bundle/inc/name-rewrite.js +96 -0
- package/framework/{v0.4.0 → v0.4.1}/lib/cmd/bundle/list.js +7 -90
- package/framework/{v0.4.0 → v0.4.1}/lib/cmd/bundle/remove.js +11 -0
- package/framework/v0.4.1/lib/cmd/bundle/rename.js +506 -0
- package/framework/v0.4.1/lib/cmd/bundle/status.js +170 -0
- package/framework/{v0.4.0 → v0.4.1}/lib/cmd/connector/list.js +2 -18
- package/framework/{v0.4.0 → v0.4.1}/lib/cmd/helper.js +1 -1
- package/framework/v0.4.1/lib/cmd/minion/arguments.json +4 -0
- package/framework/{v0.4.0 → v0.4.1}/lib/cmd/minion/help.txt +5 -1
- package/framework/v0.4.1/lib/cmd/minion/kill.js +336 -0
- package/framework/v0.4.1/lib/cmd/minion/list.js +270 -0
- package/framework/{v0.4.0 → v0.4.1}/lib/cmd/port/set.js +12 -0
- package/framework/{v0.4.0 → v0.4.1}/lib/cmd/project/help.txt +16 -0
- package/framework/{v0.4.0 → v0.4.1}/lib/cmd/project/remove.js +11 -0
- package/framework/v0.4.1/lib/cmd/project/status.js +218 -0
- package/framework/v0.4.1/lib/cmd/protocol/arguments.json +5 -0
- package/framework/{v0.4.0 → v0.4.1}/lib/cmd/protocol/help.txt +8 -3
- package/framework/v0.4.1/lib/cmd/protocol/remove.js +308 -0
- package/framework/{v0.4.0 → v0.4.1}/lib/cmd/protocol/set.js +12 -0
- package/framework/{v0.4.0 → v0.4.1}/lib/cmd/service/list.js +4 -82
- package/framework/{v0.4.0 → v0.4.1}/lib/cmd/view/add.js +13 -0
- package/framework/v0.4.1/lib/cmd-status-format/package.json +17 -0
- package/framework/v0.4.1/lib/cmd-status-format/src/main.js +142 -0
- package/framework/{v0.4.0 → v0.4.1}/lib/collection/src/main.js +0 -3
- package/framework/{v0.4.0 → v0.4.1}/lib/index.js +4 -0
- package/framework/{v0.4.0 → v0.4.1}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +13 -6
- package/package.json +2 -2
- package/script/sync_docs_deps.js +147 -0
- package/framework/v0.4.0/VERSION +0 -1
- package/framework/v0.4.0/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.4.0/lib/cmd/bundle/copy.js +0 -18
- package/framework/v0.4.0/lib/cmd/bundle/rename.js +0 -7
- package/framework/v0.4.0/lib/cmd/bundle/status.js +0 -6
- package/framework/v0.4.0/lib/cmd/project/status.js +0 -3
- /package/framework/{v0.4.0 → v0.4.1}/AUTHORS +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/LICENSE +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/html/static.html +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/config.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/content.encoding +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/controller/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/deps/busboy-1.6.0/LICENSE +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/deps/busboy-1.6.0/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/deps/busboy-1.6.0/lib/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/deps/busboy-1.6.0/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/deps/streamsearch-1.1.0/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/dev/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/gna.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/locales/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/locales/currency.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/locales/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/mime.types +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/model/entity.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/model/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/model/template/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/router.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/server.express.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/server.isaac.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/status.codes +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/_gitignore +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/conf/env.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/conf/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/console.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/context.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/data/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/data/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/json/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/json/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/path.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/prototypes.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/task.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/helpers/text.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/archiver/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/archiver/build.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/archiver/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/async/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/async/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cache/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cache/build.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cache/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/collection/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/collection/build.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/collection/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/config.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cron/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cron/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/domain/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/domain/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/generator/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/i18n/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/inherits/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/inherits/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/instrument/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/job/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/job/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/logger/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/logger/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/math/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/merge/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/merge/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/metrics/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/model.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/proc.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/routing/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/routing/build.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/routing/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/secrets/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/session-store.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/shell.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/state.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/url/README.md +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/url/index.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/url/routing.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/uuid/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/validator.js +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/watcher/package.json +0 -0
- /package/framework/{v0.4.0 → v0.4.1}/lib/watcher/src/main.js +0 -0
|
@@ -0,0 +1,467 @@
|
|
|
1
|
+
var fs = require('fs');
|
|
2
|
+
var console = lib.logger;
|
|
3
|
+
|
|
4
|
+
var CmdHelper = require('./../helper');
|
|
5
|
+
var scan = require('./../port/inc/scan');
|
|
6
|
+
var nameRewrite = require('./inc/name-rewrite');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @module gina/lib/cmd/bundle/copy
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Duplicates an existing bundle under a NEW name within the SAME project.
|
|
13
|
+
*
|
|
14
|
+
* Copies the source bundle's `src/<source>` tree to `src/<new_name>`, rewrites
|
|
15
|
+
* the bundle-name footprint in the copied `.js`/`.json` files, allocates a fresh
|
|
16
|
+
* full protocol×scheme×env port matrix for the new name, and registers it in the
|
|
17
|
+
* project `manifest.json` + `env.json` + `~/.gina/ports.json` /
|
|
18
|
+
* `~/.gina/ports.reverse.json`.
|
|
19
|
+
*
|
|
20
|
+
* The name rewrite is **word-boundary anchored** — it rewrites the PascalCase
|
|
21
|
+
* identifiers the scaffolder derives from the bundle name (`<Name>Controller`,
|
|
22
|
+
* the gina require-var, etc.) and the lowercase whole-word name, but never a name
|
|
23
|
+
* embedded inside a larger token. It is limited to `.js`/`.json` files; user
|
|
24
|
+
* content in templates / SQL / CSS is copied verbatim. The first-bundle webroot
|
|
25
|
+
* collision (`"/"`) is repointed to `"/<new_name>"` (comment-preserving).
|
|
26
|
+
*
|
|
27
|
+
* Use `--dry-run` to preview every file the rewrite would touch (and the planned
|
|
28
|
+
* port / manifest changes) before anything is written.
|
|
29
|
+
*
|
|
30
|
+
* Bundle-scoped, same-project: `gina bundle:copy <source> <new_name> @<project>`.
|
|
31
|
+
*
|
|
32
|
+
* Usage:
|
|
33
|
+
* gina bundle:copy <source> <new_name> @<project>
|
|
34
|
+
* gina bundle:copy <source> <new_name> @<project> --dry-run
|
|
35
|
+
* gina bundle:copy <source> <new_name> @<project> --dry-run --format=json
|
|
36
|
+
* gina bundle:copy <source> <new_name> @<project> --force // overwrite an existing target
|
|
37
|
+
*
|
|
38
|
+
* @class Copy
|
|
39
|
+
* @constructor
|
|
40
|
+
* @param {object} opt - Parsed command-line options
|
|
41
|
+
* @param {object} opt.client - Socket client for terminal output
|
|
42
|
+
* @param {string[]} opt.argv - Full argv array
|
|
43
|
+
* @param {number} [opt.debugPort] - Node.js inspector port
|
|
44
|
+
* @param {boolean} [opt.debugBrkEnabled] - True when --inspect-brk is active
|
|
45
|
+
* @param {object} cmd - The cmd dispatcher object (lib/cmd/index.js)
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* // duplicate bundle `api` as `web` inside project `myproject`
|
|
49
|
+
* $ gina bundle:copy api web @myproject
|
|
50
|
+
* Bundle [ api@myproject ] copied to [ web@myproject ].
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* // preview only, machine-readable
|
|
54
|
+
* $ gina bundle:copy api web @myproject --dry-run --format=json
|
|
55
|
+
* {"source":"api","dest":"web","project":"myproject","dryRun":true,"overwrite":false,"filesToCopy":18,"rewriteSites":[{"file":"index.js","occurrences":9}],"portsToAllocate":8}
|
|
56
|
+
*/
|
|
57
|
+
function Copy(opt, cmd) {
|
|
58
|
+
var self = {};
|
|
59
|
+
var local = { source: null, dest: null, portCount: 0 };
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Wires CmdHelper, parses the two positionals (source + new name), validates
|
|
63
|
+
* the project, then runs the copy.
|
|
64
|
+
*
|
|
65
|
+
* @inner
|
|
66
|
+
* @private
|
|
67
|
+
*/
|
|
68
|
+
var init = function() {
|
|
69
|
+
|
|
70
|
+
// import CMD helpers
|
|
71
|
+
new CmdHelper(self, opt.client, { port: opt.debugPort, brkEnabled: opt.debugBrkEnabled });
|
|
72
|
+
// check CMD configuration
|
|
73
|
+
if (!isCmdConfigured()) return false;
|
|
74
|
+
|
|
75
|
+
// bundle:copy takes TWO positionals (source + new name). CmdHelper only
|
|
76
|
+
// sets self.name for a SINGLE positional, so read self.bundles directly.
|
|
77
|
+
var bundles = self.bundles || [];
|
|
78
|
+
if ( bundles.length !== 2 ) {
|
|
79
|
+
console.error('bundle:copy requires a source AND a new name: gina bundle:copy <source> <new_name> @<project>');
|
|
80
|
+
process.exit(1);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
local.source = bundles[0];
|
|
84
|
+
local.dest = bundles[1];
|
|
85
|
+
|
|
86
|
+
if ( self.projectName == null || typeof(self.projects[self.projectName]) == 'undefined' ) {
|
|
87
|
+
console.error('[ '+ self.projectName +' ] is not a registered project.');
|
|
88
|
+
process.exit(1);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// populate bundlesByProject[...] + ports/env/manifest context
|
|
93
|
+
loadAssets();
|
|
94
|
+
|
|
95
|
+
run();
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
// escapeRegex / capitalize / renameContent live in ./inc/name-rewrite.js
|
|
100
|
+
// (the pure rewrite engine shared with bundle:rename). Consumed below as
|
|
101
|
+
// `nameRewrite.*`; the fs-walking wrappers (walkFiles/rewriteTree/
|
|
102
|
+
// previewRewrite) stay here because they touch fs + lib.generator.
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Recursively collects every file path under `dir`.
|
|
107
|
+
*
|
|
108
|
+
* @inner
|
|
109
|
+
* @private
|
|
110
|
+
* @param {string} dir
|
|
111
|
+
* @param {string[]} [acc]
|
|
112
|
+
* @returns {string[]}
|
|
113
|
+
*/
|
|
114
|
+
var walkFiles = function(dir, acc) {
|
|
115
|
+
acc = acc || [];
|
|
116
|
+
var entries = [];
|
|
117
|
+
try { entries = fs.readdirSync(dir); } catch (e) { return acc; }
|
|
118
|
+
for (var i = 0; i < entries.length; i++) {
|
|
119
|
+
var full = dir + '/' + entries[i];
|
|
120
|
+
var st;
|
|
121
|
+
try { st = fs.statSync(full); } catch (e) { continue; }
|
|
122
|
+
if ( st.isDirectory() ) {
|
|
123
|
+
walkFiles(full, acc);
|
|
124
|
+
} else {
|
|
125
|
+
acc.push(full);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return acc;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Applies the name rewrite to every `.js`/`.json` file in the copied tree.
|
|
134
|
+
*
|
|
135
|
+
* @inner
|
|
136
|
+
* @private
|
|
137
|
+
* @param {string} destPath - Absolute path of the copied bundle tree
|
|
138
|
+
* @param {string} source
|
|
139
|
+
* @param {string} dest
|
|
140
|
+
* @returns {string[]} Absolute paths of the files actually rewritten
|
|
141
|
+
*/
|
|
142
|
+
var rewriteTree = function(destPath, source, dest) {
|
|
143
|
+
var files = walkFiles(destPath)
|
|
144
|
+
, touched = [];
|
|
145
|
+
for (var i = 0; i < files.length; i++) {
|
|
146
|
+
var f = files[i];
|
|
147
|
+
if ( !/\.(js|json)$/i.test(f) ) continue;
|
|
148
|
+
var content;
|
|
149
|
+
try { content = fs.readFileSync(f, 'utf8'); } catch (e) { continue; }
|
|
150
|
+
var isServerSettings = /config\/settings\.server\.json$/.test(f);
|
|
151
|
+
var updated = nameRewrite.renameContent(content, source, dest, { fixWebroot: isServerSettings });
|
|
152
|
+
if ( updated !== content ) {
|
|
153
|
+
lib.generator.createFileFromDataSync(updated, f);
|
|
154
|
+
touched.push(f);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return touched;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Previews the rewrite without writing: scans the SOURCE tree's `.js`/`.json`
|
|
163
|
+
* files and reports, per file, how many name occurrences would be rewritten.
|
|
164
|
+
* This is the `--dry-run` safety valve — it surfaces every site the rewrite
|
|
165
|
+
* would touch so a coincidental match can be eyeballed before any write.
|
|
166
|
+
*
|
|
167
|
+
* @inner
|
|
168
|
+
* @private
|
|
169
|
+
* @param {string} srcPath
|
|
170
|
+
* @param {string} source
|
|
171
|
+
* @param {string} dest
|
|
172
|
+
* @returns {Array<{file: string, occurrences: number}>}
|
|
173
|
+
*/
|
|
174
|
+
var previewRewrite = function(srcPath, source, dest) {
|
|
175
|
+
var files = walkFiles(srcPath)
|
|
176
|
+
, sites = [];
|
|
177
|
+
for (var i = 0; i < files.length; i++) {
|
|
178
|
+
var f = files[i];
|
|
179
|
+
if ( !/\.(js|json)$/i.test(f) ) continue;
|
|
180
|
+
var content;
|
|
181
|
+
try { content = fs.readFileSync(f, 'utf8'); } catch (e) { continue; }
|
|
182
|
+
var n = nameRewrite.countOccurrences(content, source);
|
|
183
|
+
if ( n > 0 ) {
|
|
184
|
+
sites.push({ file: f.replace(srcPath, '').replace(/^\//, ''), occurrences: n });
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return sites;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Removes a pre-existing destination bundle (used on `--force`): deletes its
|
|
193
|
+
* source tree + mount symlink, and its `env.json` / `manifest.json` /
|
|
194
|
+
* `ports.json` / `ports.reverse.json` entries — mirrors bundle/remove.js.
|
|
195
|
+
* Reloads assets afterwards so the fresh copy sees the cleaned state.
|
|
196
|
+
*
|
|
197
|
+
* @inner
|
|
198
|
+
* @private
|
|
199
|
+
* @param {string} dest
|
|
200
|
+
*/
|
|
201
|
+
var removeDest = function(dest) {
|
|
202
|
+
var project = self.projectName;
|
|
203
|
+
|
|
204
|
+
// source tree + mount symlink (best effort)
|
|
205
|
+
try {
|
|
206
|
+
var entry = (self.projectData && self.projectData.bundles) ? self.projectData.bundles[dest] : null;
|
|
207
|
+
if ( entry && entry.src ) {
|
|
208
|
+
var folder = new _(self.projects[project].path + '/' + entry.src, true);
|
|
209
|
+
if ( folder.isValidPath() ) folder.rmSync();
|
|
210
|
+
}
|
|
211
|
+
var coreEnv = getCoreEnv(dest);
|
|
212
|
+
new _(coreEnv.mountPath + '/' + dest, true).rmSync();
|
|
213
|
+
} catch (e) { /* best effort */ }
|
|
214
|
+
|
|
215
|
+
// env.json
|
|
216
|
+
if ( self.envData && typeof(self.envData[dest]) != 'undefined' ) {
|
|
217
|
+
delete self.envData[dest];
|
|
218
|
+
lib.generator.createFileFromDataSync(self.envData, self.envPath);
|
|
219
|
+
}
|
|
220
|
+
// manifest.json
|
|
221
|
+
if ( self.projectData && self.projectData.bundles && typeof(self.projectData.bundles[dest]) != 'undefined' ) {
|
|
222
|
+
delete self.projectData.bundles[dest];
|
|
223
|
+
lib.generator.createFileFromDataSync(self.projectData, self.projectManifestPath);
|
|
224
|
+
}
|
|
225
|
+
// ports.json / ports.reverse.json
|
|
226
|
+
var ports = JSON.clone(self.portsData)
|
|
227
|
+
, portsReverse = JSON.clone(self.portsReverseData)
|
|
228
|
+
, re;
|
|
229
|
+
for (var protocol in ports) {
|
|
230
|
+
for (var scheme in ports[protocol]) {
|
|
231
|
+
for (var port in ports[protocol][scheme]) {
|
|
232
|
+
re = new RegExp('^' + nameRewrite.escapeRegex(dest) + '@' + nameRewrite.escapeRegex(project) + '/');
|
|
233
|
+
if ( re.test(ports[protocol][scheme][port]) ) {
|
|
234
|
+
delete ports[protocol][scheme][port];
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
for (var addr in portsReverse) {
|
|
240
|
+
if ( addr === dest + '@' + project ) {
|
|
241
|
+
delete portsReverse[addr];
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
lib.generator.createFileFromDataSync(ports, self.portsPath);
|
|
245
|
+
lib.generator.createFileFromDataSync(portsReverse, self.portsReversePath);
|
|
246
|
+
|
|
247
|
+
// reload so setPorts / writeManifest see the cleaned files
|
|
248
|
+
loadAssets();
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Registers the new bundle in the project manifest by cloning the source
|
|
254
|
+
* entry and repointing its `src` / `link` / `releases` target paths to the
|
|
255
|
+
* new name (preserves the source's version / tag / comment).
|
|
256
|
+
*
|
|
257
|
+
* @inner
|
|
258
|
+
* @private
|
|
259
|
+
* @param {string} source
|
|
260
|
+
* @param {string} dest
|
|
261
|
+
*/
|
|
262
|
+
var writeManifest = function(source, dest) {
|
|
263
|
+
var data = requireJSON(self.projectManifestPath)
|
|
264
|
+
, srcEntry = data.bundles[source]
|
|
265
|
+
, entry = JSON.clone(srcEntry);
|
|
266
|
+
|
|
267
|
+
entry.src = 'src/' + dest;
|
|
268
|
+
entry.link = 'bundles/' + dest;
|
|
269
|
+
if ( entry.releases ) {
|
|
270
|
+
for (var scope in entry.releases) {
|
|
271
|
+
for (var env in entry.releases[scope]) {
|
|
272
|
+
var rel = entry.releases[scope][env];
|
|
273
|
+
if ( rel && rel.target ) {
|
|
274
|
+
rel.target = rel.target.replace('releases/' + source + '/', 'releases/' + dest + '/');
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
data.bundles[dest] = entry;
|
|
280
|
+
lib.generator.createFileFromDataSync(data, self.projectManifestPath);
|
|
281
|
+
try { delete require.cache[require.resolve(self.projectManifestPath)]; } catch (e) { /* not cached */ }
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Prints the copy result (or dry-run preview) as text, or a
|
|
287
|
+
* `{ source, dest, project, dryRun, overwrite, filesToCopy, rewriteSites, portsToAllocate }`
|
|
288
|
+
* envelope with `--format=json`, then exits.
|
|
289
|
+
*
|
|
290
|
+
* @inner
|
|
291
|
+
* @private
|
|
292
|
+
* @param {boolean} dryRun
|
|
293
|
+
* @param {string|null} format
|
|
294
|
+
* @param {string} source
|
|
295
|
+
* @param {string} dest
|
|
296
|
+
* @param {string} project
|
|
297
|
+
* @param {string} srcPath
|
|
298
|
+
* @param {string} destPath
|
|
299
|
+
* @param {boolean} overwrite
|
|
300
|
+
* @param {Array} rewriteSites - preview {file,occurrences}[] (dry-run) or touched paths[] (success)
|
|
301
|
+
*/
|
|
302
|
+
var report = function(dryRun, format, source, dest, project, srcPath, destPath, overwrite, rewriteSites) {
|
|
303
|
+
var fileCount = walkFiles(srcPath).length;
|
|
304
|
+
|
|
305
|
+
if ( /^json?/.test(format || '') ) {
|
|
306
|
+
var sites = (rewriteSites || []).map(function(s) {
|
|
307
|
+
return (typeof s === 'string')
|
|
308
|
+
? { file: s.replace(destPath, '').replace(/^\//, '') }
|
|
309
|
+
: s;
|
|
310
|
+
});
|
|
311
|
+
process.stdout.write(JSON.stringify({
|
|
312
|
+
source : source,
|
|
313
|
+
dest : dest,
|
|
314
|
+
project : project,
|
|
315
|
+
dryRun : dryRun,
|
|
316
|
+
overwrite : !!overwrite,
|
|
317
|
+
filesToCopy : fileCount,
|
|
318
|
+
rewriteSites : sites,
|
|
319
|
+
portsToAllocate : local.portCount
|
|
320
|
+
}));
|
|
321
|
+
return process.exit(0);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
if ( dryRun ) {
|
|
325
|
+
console.log('[ dry-run ] would copy bundle [ '+ source +'@'+ project +' ] → [ '+ dest +'@'+ project +' ] (no changes written).');
|
|
326
|
+
console.log(' source : '+ srcPath);
|
|
327
|
+
console.log(' target : '+ destPath + (overwrite ? ' (EXISTS — would be overwritten)' : ''));
|
|
328
|
+
console.log(' files : '+ fileCount + ' file(s) copied verbatim');
|
|
329
|
+
if ( rewriteSites.length > 0 ) {
|
|
330
|
+
console.log(' rename : `'+ source +'`/`'+ nameRewrite.capitalize(source) +'` → `'+ dest +'`/`'+ nameRewrite.capitalize(dest) +'` in '+ rewriteSites.length +' .js/.json file(s):');
|
|
331
|
+
for (var i = 0; i < rewriteSites.length; i++) {
|
|
332
|
+
var occ = rewriteSites[i].occurrences;
|
|
333
|
+
console.log(' - '+ rewriteSites[i].file +' ('+ occ +' occurrence'+ (occ === 1 ? '' : 's') +')');
|
|
334
|
+
}
|
|
335
|
+
} else {
|
|
336
|
+
console.log(' rename : no .js/.json occurrences of `'+ source +'` found.');
|
|
337
|
+
}
|
|
338
|
+
console.log(' ports : would allocate a fresh full matrix (~'+ local.portCount +' port slot(s)).');
|
|
339
|
+
return process.exit(0);
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
console.log('Bundle [ '+ source +'@'+ project +' ] copied to [ '+ dest +'@'+ project +' ].');
|
|
343
|
+
var touched = (rewriteSites && rewriteSites.length) || 0;
|
|
344
|
+
if ( touched > 0 ) {
|
|
345
|
+
console.log(' rewrote the bundle name in '+ touched +' file(s).');
|
|
346
|
+
}
|
|
347
|
+
console.log(' registered ports, env.json and manifest.json for the new bundle.');
|
|
348
|
+
console.log('You can now start it: gina bundle:start '+ dest +' @'+ project);
|
|
349
|
+
process.exit(0);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* Validates the source/destination, then (unless `--dry-run`) scans for free
|
|
355
|
+
* ports, copies the source tree, rewrites the name footprint, allocates the
|
|
356
|
+
* port matrix, and registers the manifest entry.
|
|
357
|
+
*
|
|
358
|
+
* @inner
|
|
359
|
+
* @private
|
|
360
|
+
*/
|
|
361
|
+
var run = function() {
|
|
362
|
+
var p = self.params || {};
|
|
363
|
+
var dryRun = !!p['dry-run'];
|
|
364
|
+
var force = !!p['force'];
|
|
365
|
+
var format = p['format'] || null;
|
|
366
|
+
|
|
367
|
+
var source = local.source;
|
|
368
|
+
var dest = local.dest;
|
|
369
|
+
var project = self.projectName;
|
|
370
|
+
|
|
371
|
+
if ( source === dest ) {
|
|
372
|
+
console.error('Source and new name are identical (`'+ source +'`). Choose a different new name.');
|
|
373
|
+
process.exit(1);
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
if ( !isValidName(dest) ) {
|
|
377
|
+
console.error('[ '+ dest +' ] is not a valid bundle name.');
|
|
378
|
+
process.exit(1);
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
// source must exist (registered + on disk)
|
|
383
|
+
var srcEntry = (self.bundlesByProject && self.bundlesByProject[project])
|
|
384
|
+
? self.bundlesByProject[project][source]
|
|
385
|
+
: null;
|
|
386
|
+
if ( !srcEntry ) {
|
|
387
|
+
console.error('Source bundle [ '+ source +' ] is not registered inside `@'+ project +'`.');
|
|
388
|
+
process.exit(1);
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
var srcPath = _(self.projects[project].path + '/' + srcEntry.src, true);
|
|
392
|
+
if ( !fs.existsSync(srcPath) ) {
|
|
393
|
+
console.error('Source bundle directory `'+ srcPath +'` does not exist.');
|
|
394
|
+
process.exit(1);
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
var destPath = _(self.projects[project].path + '/src/' + dest, true);
|
|
398
|
+
|
|
399
|
+
// destination existence (manifest OR ports OR on-disk dir)
|
|
400
|
+
var destInManifest = !!(self.projectData && self.projectData.bundles && self.projectData.bundles[dest]);
|
|
401
|
+
var destHasPorts = isDefined('bundle', dest);
|
|
402
|
+
var destHasDir = fs.existsSync(destPath);
|
|
403
|
+
var destExists = destInManifest || destHasPorts || destHasDir;
|
|
404
|
+
|
|
405
|
+
if ( destExists && !force ) {
|
|
406
|
+
console.error('Target bundle [ '+ dest +' ] already exists inside `@'+ project +'`. Re-run with --force to overwrite it, or choose a different name.');
|
|
407
|
+
process.exit(1);
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
// full-matrix port count for the new name (envs × protocols × schemes)
|
|
412
|
+
local.portCount = getBundleScanLimit(dest);
|
|
413
|
+
|
|
414
|
+
if ( dryRun ) {
|
|
415
|
+
return report(true, format, source, dest, project, srcPath, destPath, destExists, previewRewrite(srcPath, source, dest));
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
if ( destExists ) {
|
|
419
|
+
removeDest(dest);
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
// 1) scan for free ports
|
|
423
|
+
var options = {
|
|
424
|
+
ignore : getPortsList(),
|
|
425
|
+
limit : local.portCount,
|
|
426
|
+
startFrom : (p['start-port-from']) ? ~~p['start-port-from'] : null
|
|
427
|
+
};
|
|
428
|
+
scan(options, function(err, ports) {
|
|
429
|
+
if ( err ) {
|
|
430
|
+
console.error('Port scan failed: '+ (err.message || err));
|
|
431
|
+
process.exit(1);
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
// 2) copy the source tree (trailing slash → copy children into destPath)
|
|
436
|
+
var srcDir = new _(self.projects[project].path + '/' + srcEntry.src + '/');
|
|
437
|
+
srcDir.cp(destPath, function done(cpErr) {
|
|
438
|
+
if ( cpErr ) {
|
|
439
|
+
console.error('Copy failed: '+ (cpErr.message || cpErr));
|
|
440
|
+
process.exit(1);
|
|
441
|
+
return;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
// 3) rewrite the name footprint in the copied .js/.json files
|
|
445
|
+
var rewritten = rewriteTree(destPath, source, dest);
|
|
446
|
+
|
|
447
|
+
// 4) allocate the port matrix (writes ports.json / ports.reverse.json / env.json)
|
|
448
|
+
setPorts(dest, ports, function onPortsSet(pErr) {
|
|
449
|
+
if ( pErr ) {
|
|
450
|
+
console.error('Port allocation failed: '+ (pErr.message || pErr));
|
|
451
|
+
process.exit(1);
|
|
452
|
+
return;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
// 5) register the manifest entry (cloned from source, repointed)
|
|
456
|
+
writeManifest(source, dest);
|
|
457
|
+
|
|
458
|
+
report(false, format, source, dest, project, srcPath, destPath, destExists, rewritten);
|
|
459
|
+
});
|
|
460
|
+
});
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
init();
|
|
465
|
+
};
|
|
466
|
+
|
|
467
|
+
module.exports = Copy
|
|
@@ -20,6 +20,16 @@
|
|
|
20
20
|
$ gina bundle:add <bundle_name_1> <bundle_name_2> <bundle_name_3> @<project_name>
|
|
21
21
|
|
|
22
22
|
|
|
23
|
+
When the bundle already exists
|
|
24
|
+
----------
|
|
25
|
+
You are prompted to replace, import, or cancel. Pass a flag to skip the
|
|
26
|
+
prompt — required when running without an interactive terminal (container,
|
|
27
|
+
CI, or piped stdin):
|
|
28
|
+
|
|
29
|
+
$ gina bundle:add <bundle_name> @<project_name> --import (register the existing source)
|
|
30
|
+
$ gina bundle:add <bundle_name> @<project_name> --replace (overwrite; existing files are lost)
|
|
31
|
+
|
|
32
|
+
|
|
23
33
|
|
|
24
34
|
[ Removing an existing bundle ]
|
|
25
35
|
|
|
@@ -27,6 +37,61 @@
|
|
|
27
37
|
|
|
28
38
|
|
|
29
39
|
|
|
40
|
+
[ Copying a bundle under a new name ]
|
|
41
|
+
|
|
42
|
+
Duplicate a bundle's source + config under a new name inside the SAME
|
|
43
|
+
project. gina copies the source tree, rewrites the bundle-name footprint
|
|
44
|
+
(controller class names, the gina require-var, app.json name, webroot) in
|
|
45
|
+
the copied .js/.json files, allocates a fresh full protocol/scheme/env port
|
|
46
|
+
matrix for the new name, and registers it in manifest.json + env.json +
|
|
47
|
+
~/.gina/ports.json. User content in templates / SQL / CSS is copied verbatim.
|
|
48
|
+
|
|
49
|
+
$ gina bundle:copy <source_bundle_name> <new_bundle_name> @<project_name>
|
|
50
|
+
|
|
51
|
+
Alias
|
|
52
|
+
----------
|
|
53
|
+
$ gina bundle:cp <source_bundle_name> <new_bundle_name> @<project_name>
|
|
54
|
+
|
|
55
|
+
Preview without writing anything
|
|
56
|
+
----------
|
|
57
|
+
Lists every file the name rewrite would touch (and the planned port /
|
|
58
|
+
manifest changes) so coincidental matches can be reviewed before any write.
|
|
59
|
+
|
|
60
|
+
$ gina bundle:copy <source_bundle_name> <new_bundle_name> @<project_name> --dry-run
|
|
61
|
+
$ gina bundle:copy <source_bundle_name> <new_bundle_name> @<project_name> --dry-run --format=json
|
|
62
|
+
|
|
63
|
+
Overwrite an existing target
|
|
64
|
+
----------
|
|
65
|
+
$ gina bundle:copy <source_bundle_name> <new_bundle_name> @<project_name> --force
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
[ Renaming a bundle ]
|
|
70
|
+
|
|
71
|
+
Rename a bundle IN PLACE inside the SAME project. gina moves the source
|
|
72
|
+
tree to the new name, rewrites the bundle-name footprint (controller class
|
|
73
|
+
names, the gina require-var, app.json name, webroot) in the moved .js/.json
|
|
74
|
+
files, and rekeys manifest.json + env.json + the ports registry to the new
|
|
75
|
+
name. The existing port numbers are preserved (rekeyed, not reallocated).
|
|
76
|
+
User content in templates / SQL / CSS is moved verbatim. The bundle must be
|
|
77
|
+
stopped first.
|
|
78
|
+
|
|
79
|
+
$ gina bundle:rename <old_bundle_name> <new_bundle_name> @<project_name>
|
|
80
|
+
|
|
81
|
+
Preview without writing anything
|
|
82
|
+
----------
|
|
83
|
+
Lists every file the name rewrite would touch so coincidental matches can be
|
|
84
|
+
reviewed before any write.
|
|
85
|
+
|
|
86
|
+
$ gina bundle:rename <old_bundle_name> <new_bundle_name> @<project_name> --dry-run
|
|
87
|
+
$ gina bundle:rename <old_bundle_name> <new_bundle_name> @<project_name> --dry-run --format=json
|
|
88
|
+
|
|
89
|
+
Overwrite an existing target
|
|
90
|
+
----------
|
|
91
|
+
$ gina bundle:rename <old_bundle_name> <new_bundle_name> @<project_name> --force
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
30
95
|
[ Listing all bundles inside your project ]
|
|
31
96
|
|
|
32
97
|
$ gina bundle:list @<project_name>
|
|
@@ -36,6 +101,15 @@
|
|
|
36
101
|
$ gina bundle:list
|
|
37
102
|
|
|
38
103
|
|
|
104
|
+
[ Showing a bundle's status ]
|
|
105
|
+
|
|
106
|
+
$ gina bundle:status <bundle_name> @<project_name>
|
|
107
|
+
|
|
108
|
+
or as JSON
|
|
109
|
+
|
|
110
|
+
$ gina bundle:status <bundle_name> @<project_name> --format=json
|
|
111
|
+
|
|
112
|
+
|
|
39
113
|
[ Starting a bundle ]
|
|
40
114
|
|
|
41
115
|
$ gina bundle:start <bundle_name> @<project_name>
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module gina/lib/cmd/bundle/inc/name-rewrite
|
|
3
|
+
*
|
|
4
|
+
* Pure, dependency-free helpers for rewriting a bundle's name footprint in
|
|
5
|
+
* copied/renamed source files. Shared by `bundle:copy` and `bundle:rename`.
|
|
6
|
+
*
|
|
7
|
+
* The rewrite is **word-boundary anchored**: it renames the PascalCase
|
|
8
|
+
* identifiers the scaffolder derives from the bundle name (`<Name>Controller`,
|
|
9
|
+
* the gina require-var, etc.) and the lowercase whole-word name, but never a
|
|
10
|
+
* name embedded inside a larger token (`apiClient`, `rapid`, `api_key`). It is
|
|
11
|
+
* the caller's job to limit which files this runs on (`bundle:copy` /
|
|
12
|
+
* `bundle:rename` apply it to `.js`/`.json` only).
|
|
13
|
+
*
|
|
14
|
+
* No `fs`, no framework globals — require-by-path unit-testable.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Escapes regular-expression metacharacters so a bundle name can be embedded
|
|
19
|
+
* literally in a dynamically-built `RegExp`.
|
|
20
|
+
*
|
|
21
|
+
* @param {string} s
|
|
22
|
+
* @returns {string}
|
|
23
|
+
*/
|
|
24
|
+
function escapeRegex(s) {
|
|
25
|
+
return String(s).replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Returns the name with its first character upper-cased (the `${Bundle}`
|
|
30
|
+
* convention the scaffolder uses for controller class names, etc.).
|
|
31
|
+
*
|
|
32
|
+
* @param {string} s
|
|
33
|
+
* @returns {string}
|
|
34
|
+
*/
|
|
35
|
+
function capitalize(s) {
|
|
36
|
+
return s.charAt(0).toUpperCase() + s.slice(1);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Rewrites the bundle-name footprint in a single file's content:
|
|
41
|
+
* - `\b<Source>` (PascalCase prefix + standalone, e.g. `ApiController`, `Api`) → `<Dest>`
|
|
42
|
+
* - `\b<source>\b` (lowercase whole-word, e.g. require-var, `"name"`, webroot path) → `<dest>`
|
|
43
|
+
* - when `opts.fixWebroot` is true: a first-bundle webroot of `"/"` → `"/<dest>"`
|
|
44
|
+
*
|
|
45
|
+
* The two case-disjoint passes never collide. The webroot fix is opt-in because
|
|
46
|
+
* it is only correct for `bundle:copy` (a copied first bundle's `"/"` webroot
|
|
47
|
+
* would collide with the source's) — `bundle:rename` MUST leave a `"/"` webroot
|
|
48
|
+
* alone (it moves the only bundle, so there is no collision), while still
|
|
49
|
+
* rewriting a name-derived `"/<old>"` webroot via the lowercase pass.
|
|
50
|
+
*
|
|
51
|
+
* @param {string} content
|
|
52
|
+
* @param {string} source
|
|
53
|
+
* @param {string} dest
|
|
54
|
+
* @param {{fixWebroot?: boolean}} [opts]
|
|
55
|
+
* @returns {string}
|
|
56
|
+
*/
|
|
57
|
+
function renameContent(content, source, dest, opts) {
|
|
58
|
+
opts = opts || {};
|
|
59
|
+
var SrcCap = capitalize(source)
|
|
60
|
+
, DstCap = capitalize(dest);
|
|
61
|
+
|
|
62
|
+
// PascalCase-prefix + standalone capitalized form (ApiController, "Api bundle")
|
|
63
|
+
content = content.replace(new RegExp('\\b' + escapeRegex(SrcCap), 'g'), DstCap);
|
|
64
|
+
// lowercase whole-word form (var api, "api", /api, api@project)
|
|
65
|
+
content = content.replace(new RegExp('\\b' + escapeRegex(source) + '\\b', 'g'), dest);
|
|
66
|
+
|
|
67
|
+
// first-bundle webroot collision (copy only): a verbatim "/" would clash with
|
|
68
|
+
// the source bundle — repoint to "/<dest>" (string op preserves comments).
|
|
69
|
+
if ( opts.fixWebroot ) {
|
|
70
|
+
content = content.replace(/("webroot"\s*:\s*)"\/"/, '$1"/' + dest + '"');
|
|
71
|
+
}
|
|
72
|
+
return content;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Counts how many name occurrences `renameContent` would rewrite in `content`
|
|
77
|
+
* (the PascalCase-prefix hits plus the lowercase whole-word hits). Used to
|
|
78
|
+
* preview rewrite sites in `--dry-run`. Does NOT count the webroot fix (it is a
|
|
79
|
+
* follow-on edit, not a name occurrence).
|
|
80
|
+
*
|
|
81
|
+
* @param {string} content
|
|
82
|
+
* @param {string} source
|
|
83
|
+
* @returns {number}
|
|
84
|
+
*/
|
|
85
|
+
function countOccurrences(content, source) {
|
|
86
|
+
var reCap = new RegExp('\\b' + escapeRegex(capitalize(source)), 'g')
|
|
87
|
+
, reLow = new RegExp('\\b' + escapeRegex(source) + '\\b', 'g');
|
|
88
|
+
return (content.match(reCap) || []).length + (content.match(reLow) || []).length;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
module.exports = {
|
|
92
|
+
escapeRegex : escapeRegex,
|
|
93
|
+
capitalize : capitalize,
|
|
94
|
+
renameContent : renameContent,
|
|
95
|
+
countOccurrences : countOccurrences
|
|
96
|
+
};
|