gina 0.1.6-alpha.51 → 0.1.6-alpha.53
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/framework/v0.1.6-alpha.53/VERSION +1 -0
- package/framework/v0.1.6-alpha.53/core/asset/plugin/dist/vendor/gina/css/gina.min.css.map +1 -0
- package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.map +2 -2
- package/framework/v0.1.6-alpha.53/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +8 -0
- package/framework/v0.1.6-alpha.53/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.map +8 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-0.2.14/.travis.yml +17 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-0.2.14/LICENSE +19 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-0.2.14/README.md +225 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-0.2.14/deps/encoding/encoding-indexes.js +73 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-0.2.14/deps/encoding/encoding.js +2391 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-0.2.14/lib/main.js +89 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-0.2.14/lib/types/multipart.js +328 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-0.2.14/lib/types/urlencoded.js +214 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-0.2.14/lib/utils.js +191 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-0.2.14/package.json +69 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-1.6.0/.github/workflows/ci.yml +24 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-1.6.0/.github/workflows/lint.yml +23 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-1.6.0/LICENSE +19 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-1.6.0/README.md +191 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-1.6.0/bench/bench-multipart-fields-100mb-big.js +149 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-1.6.0/bench/bench-multipart-fields-100mb-small.js +143 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-1.6.0/bench/bench-multipart-files-100mb-big.js +154 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-1.6.0/bench/bench-multipart-files-100mb-small.js +148 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-1.6.0/bench/bench-urlencoded-fields-100pairs-small.js +101 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-1.6.0/bench/bench-urlencoded-fields-900pairs-small-alt.js +84 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-1.6.0/lib/index.js +57 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-1.6.0/lib/types/multipart.js +680 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-1.6.0/lib/types/urlencoded.js +350 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-1.6.0/lib/utils.js +596 -0
- package/framework/v0.1.6-alpha.53/core/deps/busboy-1.6.0/package.json +22 -0
- package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/server.js +4 -1
- package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/package.json +3 -3
- package/package.json +2 -2
- package/framework/v0.1.6-alpha.51/VERSION +0 -1
- package/framework/v0.1.6-alpha.51/core/asset/plugin/dist/vendor/gina/css/gina.min.css.map +0 -1
- package/framework/v0.1.6-alpha.51/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -7
- package/framework/v0.1.6-alpha.51/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.map +0 -8
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/AUTHORS +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/LICENSE +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/asset/html/static.html +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/asset/plugin/dist/vendor/gina/html/toolbar.html +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/asset/plugin/dist/vendor/gina/js/gina.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/asset/plugin/uuid.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/config.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/connectors/couchbase/lib/connector.v2.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/controller/controller.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/controller/index.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/deps/swig-client/swig-2.0.0.min.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/dev/index.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/gna.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/locales/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/locales/currency.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/locales/index.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/locales/src/make.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/locales/src/resources/currency.csv +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/locales/src/resources/region.csv +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/locales/src/resources/region.mapping.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/mime.types +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/model/entity.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/model/index.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/model/template/index.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/plugins/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/plugins/index.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/plugins/lib/file/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/plugins/lib/file/build.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/plugins/lib/file/package.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/plugins/lib/intl/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/plugins/lib/intl/build.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/plugins/lib/intl/package.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/plugins/lib/intl/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/router.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/server.express.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/server.isaac.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/status.codes +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/_gitignore +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/conf/env.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/conf/package.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/console.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/context.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/data/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/data/package.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/index.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/json/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/json/package.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/path.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/prototypes.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/task.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/helpers/text.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/archiver/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/archiver/build.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/archiver/package.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/index.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/collection/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/collection/build.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/collection/package.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/config.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cron/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cron/package.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/domain/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/domain/dist/public_suffix_list.dat +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/domain/exemples/backend.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/domain/exemples/frontend.html +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/domain/package.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/generator/index.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/index.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/inherits/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/inherits/example/inheriting_eventemitter.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/inherits/example/protected_inheritance.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/inherits/example/simple_inheritance.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/inherits/example/super_attribute_overridden_by_child_on_init.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/inherits/package.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/logger/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/logger/package.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/math/index.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/merge/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/merge/example/merge.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/merge/example/merge_2_literal objects.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/merge/example/merge_and_preserve_first.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/merge/package.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/model.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/proc.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/routing/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/routing/build.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/routing/package.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/session-store.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/shell.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/url/README.md +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/url/index.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/url/mocks.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/url/routing.json +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/url/test.js +0 -0
- /package/framework/{v0.1.6-alpha.51 → v0.1.6-alpha.53}/lib/validator.js +0 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
var jsencoding = require('../deps/encoding/encoding');
|
|
2
|
+
|
|
3
|
+
var RE_ENCODED = /%([a-fA-F0-9]{2})/g;
|
|
4
|
+
function encodedReplacer(match, byte) {
|
|
5
|
+
return String.fromCharCode(parseInt(byte, 16));
|
|
6
|
+
}
|
|
7
|
+
function parseParams(str) {
|
|
8
|
+
var res = [],
|
|
9
|
+
state = 'key',
|
|
10
|
+
charset = '',
|
|
11
|
+
inquote = false,
|
|
12
|
+
escaping = false,
|
|
13
|
+
p = 0,
|
|
14
|
+
tmp = '';
|
|
15
|
+
|
|
16
|
+
for (var i = 0, len = str.length; i < len; ++i) {
|
|
17
|
+
if (str[i] === '\\' && inquote) {
|
|
18
|
+
if (escaping)
|
|
19
|
+
escaping = false;
|
|
20
|
+
else {
|
|
21
|
+
escaping = true;
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
} else if (str[i] === '"') {
|
|
25
|
+
if (!escaping) {
|
|
26
|
+
if (inquote) {
|
|
27
|
+
inquote = false;
|
|
28
|
+
state = 'key';
|
|
29
|
+
} else
|
|
30
|
+
inquote = true;
|
|
31
|
+
continue;
|
|
32
|
+
} else
|
|
33
|
+
escaping = false;
|
|
34
|
+
} else {
|
|
35
|
+
if (escaping && inquote)
|
|
36
|
+
tmp += '\\';
|
|
37
|
+
escaping = false;
|
|
38
|
+
if ((state === 'charset' || state === 'lang') && str[i] === "'") {
|
|
39
|
+
if (state === 'charset') {
|
|
40
|
+
state = 'lang';
|
|
41
|
+
charset = tmp.substring(1);
|
|
42
|
+
} else
|
|
43
|
+
state = 'value';
|
|
44
|
+
tmp = '';
|
|
45
|
+
continue;
|
|
46
|
+
} else if (state === 'key'
|
|
47
|
+
&& (str[i] === '*' || str[i] === '=')
|
|
48
|
+
&& res.length) {
|
|
49
|
+
if (str[i] === '*')
|
|
50
|
+
state = 'charset';
|
|
51
|
+
else
|
|
52
|
+
state = 'value';
|
|
53
|
+
res[p] = [tmp, undefined];
|
|
54
|
+
tmp = '';
|
|
55
|
+
continue;
|
|
56
|
+
} else if (!inquote && str[i] === ';') {
|
|
57
|
+
state = 'key';
|
|
58
|
+
if (charset) {
|
|
59
|
+
if (tmp.length) {
|
|
60
|
+
tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),
|
|
61
|
+
'binary',
|
|
62
|
+
charset);
|
|
63
|
+
}
|
|
64
|
+
charset = '';
|
|
65
|
+
}
|
|
66
|
+
if (res[p] === undefined)
|
|
67
|
+
res[p] = tmp;
|
|
68
|
+
else
|
|
69
|
+
res[p][1] = tmp;
|
|
70
|
+
tmp = '';
|
|
71
|
+
++p;
|
|
72
|
+
continue;
|
|
73
|
+
} else if (!inquote && (str[i] === ' ' || str[i] === '\t'))
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
tmp += str[i];
|
|
77
|
+
}
|
|
78
|
+
if (charset && tmp.length) {
|
|
79
|
+
tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),
|
|
80
|
+
'binary',
|
|
81
|
+
charset);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (res[p] === undefined) {
|
|
85
|
+
if (tmp)
|
|
86
|
+
res[p] = tmp;
|
|
87
|
+
} else
|
|
88
|
+
res[p][1] = tmp;
|
|
89
|
+
|
|
90
|
+
return res;
|
|
91
|
+
};
|
|
92
|
+
exports.parseParams = parseParams;
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
function decodeText(text, textEncoding, destEncoding) {
|
|
96
|
+
var ret;
|
|
97
|
+
if (text && jsencoding.encodingExists(destEncoding)) {
|
|
98
|
+
try {
|
|
99
|
+
var buff = (typeof(Buffer.from) != 'undefined')
|
|
100
|
+
? Buffer.from(text, textEncoding)
|
|
101
|
+
: new Buffer(text, textEncoding)
|
|
102
|
+
;
|
|
103
|
+
|
|
104
|
+
ret = jsencoding.TextDecoder(destEncoding)
|
|
105
|
+
.decode(buff);
|
|
106
|
+
} catch(e) {}
|
|
107
|
+
}
|
|
108
|
+
return (typeof ret === 'string' ? ret : text);
|
|
109
|
+
}
|
|
110
|
+
exports.decodeText = decodeText;
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
var HEX = [
|
|
114
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
115
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
116
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
117
|
+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
|
|
118
|
+
0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
119
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
120
|
+
0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
121
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
122
|
+
], RE_PLUS = /\+/g;
|
|
123
|
+
function Decoder() {
|
|
124
|
+
this.buffer = undefined;
|
|
125
|
+
}
|
|
126
|
+
Decoder.prototype.write = function(str) {
|
|
127
|
+
// Replace '+' with ' ' before decoding
|
|
128
|
+
str = str.replace(RE_PLUS, ' ');
|
|
129
|
+
var res = '';
|
|
130
|
+
var i = 0, p = 0, len = str.length;
|
|
131
|
+
for (; i < len; ++i) {
|
|
132
|
+
if (this.buffer !== undefined) {
|
|
133
|
+
if (!HEX[str.charCodeAt(i)]) {
|
|
134
|
+
res += '%' + this.buffer;
|
|
135
|
+
this.buffer = undefined;
|
|
136
|
+
--i; // retry character
|
|
137
|
+
} else {
|
|
138
|
+
this.buffer += str[i];
|
|
139
|
+
++p;
|
|
140
|
+
if (this.buffer.length === 2) {
|
|
141
|
+
res += String.fromCharCode(parseInt(this.buffer, 16));
|
|
142
|
+
this.buffer = undefined;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
} else if (str[i] === '%') {
|
|
146
|
+
if (i > p) {
|
|
147
|
+
res += str.substring(p, i);
|
|
148
|
+
p = i;
|
|
149
|
+
}
|
|
150
|
+
this.buffer = '';
|
|
151
|
+
++p;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (p < len && this.buffer === undefined)
|
|
155
|
+
res += str.substring(p);
|
|
156
|
+
return res;
|
|
157
|
+
};
|
|
158
|
+
Decoder.prototype.reset = function() {
|
|
159
|
+
this.buffer = undefined;
|
|
160
|
+
};
|
|
161
|
+
exports.Decoder = Decoder;
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
var RE_SPLIT_POSIX =
|
|
165
|
+
/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,
|
|
166
|
+
RE_SPLIT_DEVICE =
|
|
167
|
+
/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,
|
|
168
|
+
RE_SPLIT_WINDOWS =
|
|
169
|
+
/^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/;
|
|
170
|
+
function splitPathPosix(filename) {
|
|
171
|
+
return RE_SPLIT_POSIX.exec(filename).slice(1);
|
|
172
|
+
}
|
|
173
|
+
function splitPathWindows(filename) {
|
|
174
|
+
// Separate device+slash from tail
|
|
175
|
+
var result = RE_SPLIT_DEVICE.exec(filename),
|
|
176
|
+
device = (result[1] || '') + (result[2] || ''),
|
|
177
|
+
tail = result[3] || '';
|
|
178
|
+
// Split the tail into dir, basename and extension
|
|
179
|
+
var result2 = RE_SPLIT_WINDOWS.exec(tail),
|
|
180
|
+
dir = result2[1],
|
|
181
|
+
basename = result2[2],
|
|
182
|
+
ext = result2[3];
|
|
183
|
+
return [device, dir, basename, ext];
|
|
184
|
+
}
|
|
185
|
+
function basename(path) {
|
|
186
|
+
var f = splitPathPosix(path)[2];
|
|
187
|
+
if (f === path)
|
|
188
|
+
f = splitPathWindows(path)[2];
|
|
189
|
+
return f;
|
|
190
|
+
}
|
|
191
|
+
exports.basename = basename;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_from": "busboy@^0.2.14",
|
|
3
|
+
"_id": "busboy@0.2.14",
|
|
4
|
+
"_inBundle": false,
|
|
5
|
+
"_integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=",
|
|
6
|
+
"_location": "/busboy",
|
|
7
|
+
"_phantomChildren": {
|
|
8
|
+
"core-util-is": "1.0.2",
|
|
9
|
+
"inherits": "2.0.3"
|
|
10
|
+
},
|
|
11
|
+
"_requested": {
|
|
12
|
+
"type": "range",
|
|
13
|
+
"registry": true,
|
|
14
|
+
"raw": "busboy@^0.2.14",
|
|
15
|
+
"name": "busboy",
|
|
16
|
+
"escapedName": "busboy",
|
|
17
|
+
"rawSpec": "^0.2.14",
|
|
18
|
+
"saveSpec": null,
|
|
19
|
+
"fetchSpec": "^0.2.14"
|
|
20
|
+
},
|
|
21
|
+
"_requiredBy": [
|
|
22
|
+
"#USER",
|
|
23
|
+
"/"
|
|
24
|
+
],
|
|
25
|
+
"_resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz",
|
|
26
|
+
"_shasum": "6c2a622efcf47c57bbbe1e2a9c37ad36c7925453",
|
|
27
|
+
"_spec": "busboy@^0.2.14",
|
|
28
|
+
"_where": "/usr/local/lib/node_modules/gina/framework/v0.1.0",
|
|
29
|
+
"author": {
|
|
30
|
+
"name": "Brian White",
|
|
31
|
+
"email": "mscdex@mscdex.net"
|
|
32
|
+
},
|
|
33
|
+
"bugs": {
|
|
34
|
+
"url": "https://github.com/mscdex/busboy/issues"
|
|
35
|
+
},
|
|
36
|
+
"bundleDependencies": false,
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"dicer": "0.2.5",
|
|
39
|
+
"readable-stream": "1.1.x"
|
|
40
|
+
},
|
|
41
|
+
"deprecated": false,
|
|
42
|
+
"description": "A streaming parser for HTML form data for node.js",
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">=0.8.0"
|
|
45
|
+
},
|
|
46
|
+
"homepage": "https://github.com/mscdex/busboy#readme",
|
|
47
|
+
"keywords": [
|
|
48
|
+
"uploads",
|
|
49
|
+
"forms",
|
|
50
|
+
"multipart",
|
|
51
|
+
"form-data"
|
|
52
|
+
],
|
|
53
|
+
"licenses": [
|
|
54
|
+
{
|
|
55
|
+
"type": "MIT",
|
|
56
|
+
"url": "http://github.com/mscdex/busboy/raw/master/LICENSE"
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"main": "./lib/main",
|
|
60
|
+
"name": "busboy",
|
|
61
|
+
"repository": {
|
|
62
|
+
"type": "git",
|
|
63
|
+
"url": "git+ssh://git@github.com/mscdex/busboy.git"
|
|
64
|
+
},
|
|
65
|
+
"scripts": {
|
|
66
|
+
"test": "node test/test.js"
|
|
67
|
+
},
|
|
68
|
+
"version": "0.2.14"
|
|
69
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches: [ master ]
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
tests-linux:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
strategy:
|
|
12
|
+
fail-fast: false
|
|
13
|
+
matrix:
|
|
14
|
+
node-version: [10.16.0, 10.x, 12.x, 14.x, 16.x]
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v2
|
|
17
|
+
- name: Use Node.js ${{ matrix.node-version }}
|
|
18
|
+
uses: actions/setup-node@v1
|
|
19
|
+
with:
|
|
20
|
+
node-version: ${{ matrix.node-version }}
|
|
21
|
+
- name: Install module
|
|
22
|
+
run: npm install
|
|
23
|
+
- name: Run tests
|
|
24
|
+
run: npm test
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
name: lint
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches: [ master ]
|
|
7
|
+
|
|
8
|
+
env:
|
|
9
|
+
NODE_VERSION: 16.x
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
lint-js:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v2
|
|
16
|
+
- name: Use Node.js ${{ env.NODE_VERSION }}
|
|
17
|
+
uses: actions/setup-node@v1
|
|
18
|
+
with:
|
|
19
|
+
node-version: ${{ env.NODE_VERSION }}
|
|
20
|
+
- name: Install ESLint + ESLint configs/plugins
|
|
21
|
+
run: npm install --only=dev
|
|
22
|
+
- name: Lint files
|
|
23
|
+
run: npm run lint
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Copyright Brian White. All rights reserved.
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
of this software and associated documentation files (the "Software"), to
|
|
5
|
+
deal in the Software without restriction, including without limitation the
|
|
6
|
+
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
7
|
+
sell copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
furnished to do so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
|
11
|
+
all copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
18
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
19
|
+
IN THE SOFTWARE.
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# Description
|
|
2
|
+
|
|
3
|
+
A node.js module for parsing incoming HTML form data.
|
|
4
|
+
|
|
5
|
+
Changes (breaking or otherwise) in v1.0.0 can be found [here](https://github.com/mscdex/busboy/issues/266).
|
|
6
|
+
|
|
7
|
+
# Requirements
|
|
8
|
+
|
|
9
|
+
* [node.js](http://nodejs.org/) -- v10.16.0 or newer
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# Install
|
|
13
|
+
|
|
14
|
+
npm install busboy
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# Examples
|
|
18
|
+
|
|
19
|
+
* Parsing (multipart) with default options:
|
|
20
|
+
|
|
21
|
+
```js
|
|
22
|
+
const http = require('http');
|
|
23
|
+
|
|
24
|
+
const busboy = require('busboy');
|
|
25
|
+
|
|
26
|
+
http.createServer((req, res) => {
|
|
27
|
+
if (req.method === 'POST') {
|
|
28
|
+
console.log('POST request');
|
|
29
|
+
const bb = busboy({ headers: req.headers });
|
|
30
|
+
bb.on('file', (name, file, info) => {
|
|
31
|
+
const { filename, encoding, mimeType } = info;
|
|
32
|
+
console.log(
|
|
33
|
+
`File [${name}]: filename: %j, encoding: %j, mimeType: %j`,
|
|
34
|
+
filename,
|
|
35
|
+
encoding,
|
|
36
|
+
mimeType
|
|
37
|
+
);
|
|
38
|
+
file.on('data', (data) => {
|
|
39
|
+
console.log(`File [${name}] got ${data.length} bytes`);
|
|
40
|
+
}).on('close', () => {
|
|
41
|
+
console.log(`File [${name}] done`);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
bb.on('field', (name, val, info) => {
|
|
45
|
+
console.log(`Field [${name}]: value: %j`, val);
|
|
46
|
+
});
|
|
47
|
+
bb.on('close', () => {
|
|
48
|
+
console.log('Done parsing form!');
|
|
49
|
+
res.writeHead(303, { Connection: 'close', Location: '/' });
|
|
50
|
+
res.end();
|
|
51
|
+
});
|
|
52
|
+
req.pipe(bb);
|
|
53
|
+
} else if (req.method === 'GET') {
|
|
54
|
+
res.writeHead(200, { Connection: 'close' });
|
|
55
|
+
res.end(`
|
|
56
|
+
<html>
|
|
57
|
+
<head></head>
|
|
58
|
+
<body>
|
|
59
|
+
<form method="POST" enctype="multipart/form-data">
|
|
60
|
+
<input type="file" name="filefield"><br />
|
|
61
|
+
<input type="text" name="textfield"><br />
|
|
62
|
+
<input type="submit">
|
|
63
|
+
</form>
|
|
64
|
+
</body>
|
|
65
|
+
</html>
|
|
66
|
+
`);
|
|
67
|
+
}
|
|
68
|
+
}).listen(8000, () => {
|
|
69
|
+
console.log('Listening for requests');
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
// Example output:
|
|
73
|
+
//
|
|
74
|
+
// Listening for requests
|
|
75
|
+
// < ... form submitted ... >
|
|
76
|
+
// POST request
|
|
77
|
+
// File [filefield]: filename: "logo.jpg", encoding: "binary", mime: "image/jpeg"
|
|
78
|
+
// File [filefield] got 11912 bytes
|
|
79
|
+
// Field [textfield]: value: "testing! :-)"
|
|
80
|
+
// File [filefield] done
|
|
81
|
+
// Done parsing form!
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
* Save all incoming files to disk:
|
|
85
|
+
|
|
86
|
+
```js
|
|
87
|
+
const { randomFillSync } = require('crypto');
|
|
88
|
+
const fs = require('fs');
|
|
89
|
+
const http = require('http');
|
|
90
|
+
const os = require('os');
|
|
91
|
+
const path = require('path');
|
|
92
|
+
|
|
93
|
+
const busboy = require('busboy');
|
|
94
|
+
|
|
95
|
+
const random = (() => {
|
|
96
|
+
const buf = Buffer.alloc(16);
|
|
97
|
+
return () => randomFillSync(buf).toString('hex');
|
|
98
|
+
})();
|
|
99
|
+
|
|
100
|
+
http.createServer((req, res) => {
|
|
101
|
+
if (req.method === 'POST') {
|
|
102
|
+
const bb = busboy({ headers: req.headers });
|
|
103
|
+
bb.on('file', (name, file, info) => {
|
|
104
|
+
const saveTo = path.join(os.tmpdir(), `busboy-upload-${random()}`);
|
|
105
|
+
file.pipe(fs.createWriteStream(saveTo));
|
|
106
|
+
});
|
|
107
|
+
bb.on('close', () => {
|
|
108
|
+
res.writeHead(200, { 'Connection': 'close' });
|
|
109
|
+
res.end(`That's all folks!`);
|
|
110
|
+
});
|
|
111
|
+
req.pipe(bb);
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
res.writeHead(404);
|
|
115
|
+
res.end();
|
|
116
|
+
}).listen(8000, () => {
|
|
117
|
+
console.log('Listening for requests');
|
|
118
|
+
});
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
# API
|
|
123
|
+
|
|
124
|
+
## Exports
|
|
125
|
+
|
|
126
|
+
`busboy` exports a single function:
|
|
127
|
+
|
|
128
|
+
**( _function_ )**(< _object_ >config) - Creates and returns a new _Writable_ form parser stream.
|
|
129
|
+
|
|
130
|
+
* Valid `config` properties:
|
|
131
|
+
|
|
132
|
+
* **headers** - _object_ - These are the HTTP headers of the incoming request, which are used by individual parsers.
|
|
133
|
+
|
|
134
|
+
* **highWaterMark** - _integer_ - highWaterMark to use for the parser stream. **Default:** node's _stream.Writable_ default.
|
|
135
|
+
|
|
136
|
+
* **fileHwm** - _integer_ - highWaterMark to use for individual file streams. **Default:** node's _stream.Readable_ default.
|
|
137
|
+
|
|
138
|
+
* **defCharset** - _string_ - Default character set to use when one isn't defined. **Default:** `'utf8'`.
|
|
139
|
+
|
|
140
|
+
* **defParamCharset** - _string_ - For multipart forms, the default character set to use for values of part header parameters (e.g. filename) that are not extended parameters (that contain an explicit charset). **Default:** `'latin1'`.
|
|
141
|
+
|
|
142
|
+
* **preservePath** - _boolean_ - If paths in filenames from file parts in a `'multipart/form-data'` request shall be preserved. **Default:** `false`.
|
|
143
|
+
|
|
144
|
+
* **limits** - _object_ - Various limits on incoming data. Valid properties are:
|
|
145
|
+
|
|
146
|
+
* **fieldNameSize** - _integer_ - Max field name size (in bytes). **Default:** `100`.
|
|
147
|
+
|
|
148
|
+
* **fieldSize** - _integer_ - Max field value size (in bytes). **Default:** `1048576` (1MB).
|
|
149
|
+
|
|
150
|
+
* **fields** - _integer_ - Max number of non-file fields. **Default:** `Infinity`.
|
|
151
|
+
|
|
152
|
+
* **fileSize** - _integer_ - For multipart forms, the max file size (in bytes). **Default:** `Infinity`.
|
|
153
|
+
|
|
154
|
+
* **files** - _integer_ - For multipart forms, the max number of file fields. **Default:** `Infinity`.
|
|
155
|
+
|
|
156
|
+
* **parts** - _integer_ - For multipart forms, the max number of parts (fields + files). **Default:** `Infinity`.
|
|
157
|
+
|
|
158
|
+
* **headerPairs** - _integer_ - For multipart forms, the max number of header key-value pairs to parse. **Default:** `2000` (same as node's http module).
|
|
159
|
+
|
|
160
|
+
This function can throw exceptions if there is something wrong with the values in `config`. For example, if the Content-Type in `headers` is missing entirely, is not a supported type, or is missing the boundary for `'multipart/form-data'` requests.
|
|
161
|
+
|
|
162
|
+
## (Special) Parser stream events
|
|
163
|
+
|
|
164
|
+
* **file**(< _string_ >name, < _Readable_ >stream, < _object_ >info) - Emitted for each new file found. `name` contains the form field name. `stream` is a _Readable_ stream containing the file's data. No transformations/conversions (e.g. base64 to raw binary) are done on the file's data. `info` contains the following properties:
|
|
165
|
+
|
|
166
|
+
* `filename` - _string_ - If supplied, this contains the file's filename. **WARNING:** You should almost _never_ use this value as-is (especially if you are using `preservePath: true` in your `config`) as it could contain malicious input. You are better off generating your own (safe) filenames, or at the very least using a hash of the filename.
|
|
167
|
+
|
|
168
|
+
* `encoding` - _string_ - The file's `'Content-Transfer-Encoding'` value.
|
|
169
|
+
|
|
170
|
+
* `mimeType` - _string_ - The file's `'Content-Type'` value.
|
|
171
|
+
|
|
172
|
+
**Note:** If you listen for this event, you should always consume the `stream` whether you care about its contents or not (you can simply do `stream.resume();` if you want to discard/skip the contents), otherwise the `'finish'`/`'close'` event will never fire on the busboy parser stream.
|
|
173
|
+
However, if you aren't accepting files, you can either simply not listen for the `'file'` event at all or set `limits.files` to `0`, and any/all files will be automatically skipped (these skipped files will still count towards any configured `limits.files` and `limits.parts` limits though).
|
|
174
|
+
|
|
175
|
+
**Note:** If a configured `limits.fileSize` limit was reached for a file, `stream` will both have a boolean property `truncated` set to `true` (best checked at the end of the stream) and emit a `'limit'` event to notify you when this happens.
|
|
176
|
+
|
|
177
|
+
* **field**(< _string_ >name, < _string_ >value, < _object_ >info) - Emitted for each new non-file field found. `name` contains the form field name. `value` contains the string value of the field. `info` contains the following properties:
|
|
178
|
+
|
|
179
|
+
* `nameTruncated` - _boolean_ - Whether `name` was truncated or not (due to a configured `limits.fieldNameSize` limit)
|
|
180
|
+
|
|
181
|
+
* `valueTruncated` - _boolean_ - Whether `value` was truncated or not (due to a configured `limits.fieldSize` limit)
|
|
182
|
+
|
|
183
|
+
* `encoding` - _string_ - The field's `'Content-Transfer-Encoding'` value.
|
|
184
|
+
|
|
185
|
+
* `mimeType` - _string_ - The field's `'Content-Type'` value.
|
|
186
|
+
|
|
187
|
+
* **partsLimit**() - Emitted when the configured `limits.parts` limit has been reached. No more `'file'` or `'field'` events will be emitted.
|
|
188
|
+
|
|
189
|
+
* **filesLimit**() - Emitted when the configured `limits.files` limit has been reached. No more `'file'` events will be emitted.
|
|
190
|
+
|
|
191
|
+
* **fieldsLimit**() - Emitted when the configured `limits.fields` limit has been reached. No more `'field'` events will be emitted.
|
package/framework/v0.1.6-alpha.53/core/deps/busboy-1.6.0/bench/bench-multipart-fields-100mb-big.js
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function createMultipartBuffers(boundary, sizes) {
|
|
4
|
+
const bufs = [];
|
|
5
|
+
for (let i = 0; i < sizes.length; ++i) {
|
|
6
|
+
const mb = sizes[i] * 1024 * 1024;
|
|
7
|
+
bufs.push(Buffer.from([
|
|
8
|
+
`--${boundary}`,
|
|
9
|
+
`content-disposition: form-data; name="field${i + 1}"`,
|
|
10
|
+
'',
|
|
11
|
+
'0'.repeat(mb),
|
|
12
|
+
'',
|
|
13
|
+
].join('\r\n')));
|
|
14
|
+
}
|
|
15
|
+
bufs.push(Buffer.from([
|
|
16
|
+
`--${boundary}--`,
|
|
17
|
+
'',
|
|
18
|
+
].join('\r\n')));
|
|
19
|
+
return bufs;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const boundary = '-----------------------------168072824752491622650073';
|
|
23
|
+
const buffers = createMultipartBuffers(boundary, [
|
|
24
|
+
10,
|
|
25
|
+
10,
|
|
26
|
+
10,
|
|
27
|
+
20,
|
|
28
|
+
50,
|
|
29
|
+
]);
|
|
30
|
+
const calls = {
|
|
31
|
+
partBegin: 0,
|
|
32
|
+
headerField: 0,
|
|
33
|
+
headerValue: 0,
|
|
34
|
+
headerEnd: 0,
|
|
35
|
+
headersEnd: 0,
|
|
36
|
+
partData: 0,
|
|
37
|
+
partEnd: 0,
|
|
38
|
+
end: 0,
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const moduleName = process.argv[2];
|
|
42
|
+
switch (moduleName) {
|
|
43
|
+
case 'busboy': {
|
|
44
|
+
const busboy = require('busboy');
|
|
45
|
+
|
|
46
|
+
const parser = busboy({
|
|
47
|
+
limits: {
|
|
48
|
+
fieldSizeLimit: Infinity,
|
|
49
|
+
},
|
|
50
|
+
headers: {
|
|
51
|
+
'content-type': `multipart/form-data; boundary=${boundary}`,
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
parser.on('field', (name, val, info) => {
|
|
55
|
+
++calls.partBegin;
|
|
56
|
+
++calls.partData;
|
|
57
|
+
++calls.partEnd;
|
|
58
|
+
}).on('close', () => {
|
|
59
|
+
++calls.end;
|
|
60
|
+
console.timeEnd(moduleName);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
console.time(moduleName);
|
|
64
|
+
for (const buf of buffers)
|
|
65
|
+
parser.write(buf);
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
case 'formidable': {
|
|
70
|
+
const { MultipartParser } = require('formidable');
|
|
71
|
+
|
|
72
|
+
const parser = new MultipartParser();
|
|
73
|
+
parser.initWithBoundary(boundary);
|
|
74
|
+
parser.on('data', ({ name }) => {
|
|
75
|
+
++calls[name];
|
|
76
|
+
if (name === 'end')
|
|
77
|
+
console.timeEnd(moduleName);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
console.time(moduleName);
|
|
81
|
+
for (const buf of buffers)
|
|
82
|
+
parser.write(buf);
|
|
83
|
+
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
case 'multiparty': {
|
|
88
|
+
const { Readable } = require('stream');
|
|
89
|
+
|
|
90
|
+
const { Form } = require('multiparty');
|
|
91
|
+
|
|
92
|
+
const form = new Form({
|
|
93
|
+
maxFieldsSize: Infinity,
|
|
94
|
+
maxFields: Infinity,
|
|
95
|
+
maxFilesSize: Infinity,
|
|
96
|
+
autoFields: false,
|
|
97
|
+
autoFiles: false,
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
const req = new Readable({ read: () => {} });
|
|
101
|
+
req.headers = {
|
|
102
|
+
'content-type': `multipart/form-data; boundary=${boundary}`,
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
function hijack(name, fn) {
|
|
106
|
+
const oldFn = form[name];
|
|
107
|
+
form[name] = function() {
|
|
108
|
+
fn();
|
|
109
|
+
return oldFn.apply(this, arguments);
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
hijack('onParseHeaderField', () => {
|
|
114
|
+
++calls.headerField;
|
|
115
|
+
});
|
|
116
|
+
hijack('onParseHeaderValue', () => {
|
|
117
|
+
++calls.headerValue;
|
|
118
|
+
});
|
|
119
|
+
hijack('onParsePartBegin', () => {
|
|
120
|
+
++calls.partBegin;
|
|
121
|
+
});
|
|
122
|
+
hijack('onParsePartData', () => {
|
|
123
|
+
++calls.partData;
|
|
124
|
+
});
|
|
125
|
+
hijack('onParsePartEnd', () => {
|
|
126
|
+
++calls.partEnd;
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
form.on('close', () => {
|
|
130
|
+
++calls.end;
|
|
131
|
+
console.timeEnd(moduleName);
|
|
132
|
+
}).on('part', (p) => p.resume());
|
|
133
|
+
|
|
134
|
+
console.time(moduleName);
|
|
135
|
+
form.parse(req);
|
|
136
|
+
for (const buf of buffers)
|
|
137
|
+
req.push(buf);
|
|
138
|
+
req.push(null);
|
|
139
|
+
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
default:
|
|
144
|
+
if (moduleName === undefined)
|
|
145
|
+
console.error('Missing parser module name');
|
|
146
|
+
else
|
|
147
|
+
console.error(`Invalid parser module name: ${moduleName}`);
|
|
148
|
+
process.exit(1);
|
|
149
|
+
}
|