From 63b20e949596f6d391308a63da01dd4c2d472973 Mon Sep 17 00:00:00 2001 From: rogerzma Date: Tue, 3 Dec 2024 13:11:39 -0600 Subject: [PATCH] Cambios en los modelos --- .../node_backend/routes/authRoutes.js | 46 - .../.cache/default-development/0.pack | Bin 464083 -> 0 bytes .../.cache/default-development/1.pack | Bin 92259 -> 0 bytes .../.cache/default-development/index.pack | Bin 1804818 -> 0 bytes .../.cache/default-development/index.pack.old | Bin 1804209 -> 0 bytes .../controllers/alumnoController.js | 5 +- node_backend/controllers/docenteController.js | 68 ++ .../controllers/materiaController.js | 61 +- .../controllers/userController.js | 0 node_backend/models/Administrador_Gen.js | 12 + node_backend/models/Administradores.js | 12 + .../models/Alumno.js | 2 + node_backend/models/Coordinador_Gen.js | 12 + node_backend/models/Coordinadores.js | 13 + node_backend/models/Docentes.js | 12 + .../models/Horario.js | 0 .../models/Materia.js | 4 +- node_backend/models/Tutores.js | 11 + .../models/User.js | 0 .../node_modules/.bin/color-support | 0 .../node_modules/.bin/color-support.cmd | 0 .../node_modules/.bin/color-support.ps1 | 0 node_backend/node_modules/.bin/csv-parser | 12 + node_backend/node_modules/.bin/csv-parser.cmd | 17 + node_backend/node_modules/.bin/csv-parser.ps1 | 28 + .../node_modules/.bin/mime | 0 .../node_modules/.bin/mime.cmd | 0 .../node_modules/.bin/mime.ps1 | 0 .../node_modules/.bin/mkdirp | 0 .../node_modules/.bin/mkdirp.cmd | 0 .../node_modules/.bin/mkdirp.ps1 | 0 .../node_modules/.bin/node-pre-gyp | 0 .../node_modules/.bin/node-pre-gyp.cmd | 0 .../node_modules/.bin/node-pre-gyp.ps1 | 0 .../node_modules/.bin/nopt | 0 .../node_modules/.bin/nopt.cmd | 0 .../node_modules/.bin/nopt.ps1 | 0 .../node_modules/.bin/rimraf | 0 .../node_modules/.bin/rimraf.cmd | 0 .../node_modules/.bin/rimraf.ps1 | 0 .../node_modules/.bin/semver | 0 .../node_modules/.bin/semver.cmd | 0 .../node_modules/.bin/semver.ps1 | 0 .../node_modules/.package-lock.json | 148 +++ .../node-pre-gyp/.github/workflows/codeql.yml | 0 .../@mapbox/node-pre-gyp/CHANGELOG.md | 0 .../node_modules/@mapbox/node-pre-gyp/LICENSE | 0 .../@mapbox/node-pre-gyp/README.md | 0 .../@mapbox/node-pre-gyp/bin/node-pre-gyp | 0 .../@mapbox/node-pre-gyp/bin/node-pre-gyp.cmd | 0 .../@mapbox/node-pre-gyp/contributing.md | 0 .../@mapbox/node-pre-gyp/lib/build.js | 0 .../@mapbox/node-pre-gyp/lib/clean.js | 0 .../@mapbox/node-pre-gyp/lib/configure.js | 0 .../@mapbox/node-pre-gyp/lib/info.js | 0 .../@mapbox/node-pre-gyp/lib/install.js | 0 .../@mapbox/node-pre-gyp/lib/main.js | 0 .../@mapbox/node-pre-gyp/lib/node-pre-gyp.js | 0 .../@mapbox/node-pre-gyp/lib/package.js | 0 .../@mapbox/node-pre-gyp/lib/pre-binding.js | 0 .../@mapbox/node-pre-gyp/lib/publish.js | 0 .../@mapbox/node-pre-gyp/lib/rebuild.js | 0 .../@mapbox/node-pre-gyp/lib/reinstall.js | 0 .../@mapbox/node-pre-gyp/lib/reveal.js | 0 .../@mapbox/node-pre-gyp/lib/testbinary.js | 0 .../@mapbox/node-pre-gyp/lib/testpackage.js | 0 .../@mapbox/node-pre-gyp/lib/unpublish.js | 0 .../node-pre-gyp/lib/util/abi_crosswalk.json | 0 .../@mapbox/node-pre-gyp/lib/util/compile.js | 0 .../node-pre-gyp/lib/util/handle_gyp_opts.js | 0 .../@mapbox/node-pre-gyp/lib/util/napi.js | 0 .../lib/util/nw-pre-gyp/index.html | 0 .../lib/util/nw-pre-gyp/package.json | 0 .../@mapbox/node-pre-gyp/lib/util/s3_setup.js | 0 .../node-pre-gyp/lib/util/versioning.js | 0 .../@mapbox/node-pre-gyp/package.json | 0 .../node_modules/@mongodb-js/saslprep/LICENSE | 0 .../saslprep/dist/.esm-wrapper.mjs | 0 .../@mongodb-js/saslprep/dist/browser.d.ts | 0 .../saslprep/dist/browser.d.ts.map | 0 .../@mongodb-js/saslprep/dist/browser.js | 0 .../@mongodb-js/saslprep/dist/browser.js.map | 0 .../dist/code-points-data-browser.d.ts | 0 .../dist/code-points-data-browser.d.ts.map | 0 .../saslprep/dist/code-points-data-browser.js | 0 .../dist/code-points-data-browser.js.map | 0 .../saslprep/dist/code-points-data.d.ts | 0 .../saslprep/dist/code-points-data.d.ts.map | 0 .../saslprep/dist/code-points-data.js | 0 .../saslprep/dist/code-points-data.js.map | 0 .../saslprep/dist/code-points-src.d.ts | 0 .../saslprep/dist/code-points-src.d.ts.map | 0 .../saslprep/dist/code-points-src.js | 0 .../saslprep/dist/code-points-src.js.map | 0 .../saslprep/dist/generate-code-points.d.ts | 0 .../dist/generate-code-points.d.ts.map | 0 .../saslprep/dist/generate-code-points.js | 0 .../saslprep/dist/generate-code-points.js.map | 0 .../@mongodb-js/saslprep/dist/index.d.ts | 0 .../@mongodb-js/saslprep/dist/index.d.ts.map | 0 .../@mongodb-js/saslprep/dist/index.js | 0 .../@mongodb-js/saslprep/dist/index.js.map | 0 .../saslprep/dist/memory-code-points.d.ts | 0 .../saslprep/dist/memory-code-points.d.ts.map | 0 .../saslprep/dist/memory-code-points.js | 0 .../saslprep/dist/memory-code-points.js.map | 0 .../@mongodb-js/saslprep/dist/node.d.ts | 0 .../@mongodb-js/saslprep/dist/node.d.ts.map | 0 .../@mongodb-js/saslprep/dist/node.js | 0 .../@mongodb-js/saslprep/dist/node.js.map | 0 .../@mongodb-js/saslprep/dist/util.d.ts | 0 .../@mongodb-js/saslprep/dist/util.d.ts.map | 0 .../@mongodb-js/saslprep/dist/util.js | 0 .../@mongodb-js/saslprep/dist/util.js.map | 0 .../@mongodb-js/saslprep/package.json | 0 .../@mongodb-js/saslprep/readme.md | 0 .../@types/webidl-conversions/LICENSE | 0 .../@types/webidl-conversions/README.md | 0 .../@types/webidl-conversions/index.d.ts | 0 .../@types/webidl-conversions/package.json | 0 .../node_modules/@types/whatwg-url/LICENSE | 0 .../node_modules/@types/whatwg-url/README.md | 0 .../node_modules/@types/whatwg-url/index.d.ts | 0 .../@types/whatwg-url/lib/URL-impl.d.ts | 0 .../@types/whatwg-url/lib/URL.d.ts | 0 .../whatwg-url/lib/URLSearchParams-impl.d.ts | 0 .../whatwg-url/lib/URLSearchParams.d.ts | 0 .../@types/whatwg-url/package.json | 0 .../@types/whatwg-url/webidl2js-wrapper.d.ts | 0 .../node_modules/abbrev/LICENSE | 0 .../node_modules/abbrev/README.md | 0 .../node_modules/abbrev/abbrev.js | 0 .../node_modules/abbrev/package.json | 0 .../node_modules/accepts/HISTORY.md | 0 .../node_modules/accepts/LICENSE | 0 .../node_modules/accepts/README.md | 0 .../node_modules/accepts/index.js | 0 .../node_modules/accepts/package.json | 0 .../node_modules/agent-base/README.md | 0 .../agent-base/dist/src/index.d.ts | 0 .../node_modules/agent-base/dist/src/index.js | 0 .../agent-base/dist/src/index.js.map | 0 .../agent-base/dist/src/promisify.d.ts | 0 .../agent-base/dist/src/promisify.js | 0 .../agent-base/dist/src/promisify.js.map | 0 .../agent-base/node_modules/debug/LICENSE | 0 .../agent-base/node_modules/debug/README.md | 0 .../node_modules/debug/package.json | 0 .../node_modules/debug/src/browser.js | 0 .../node_modules/debug/src/common.js | 0 .../node_modules/debug/src/index.js | 0 .../agent-base/node_modules/debug/src/node.js | 0 .../agent-base/node_modules/ms/index.js | 0 .../agent-base/node_modules/ms/license.md | 0 .../agent-base/node_modules/ms/package.json | 0 .../agent-base/node_modules/ms/readme.md | 0 .../node_modules/agent-base/package.json | 0 .../node_modules/agent-base/src/index.ts | 0 .../node_modules/agent-base/src/promisify.ts | 0 .../node_modules/ansi-regex/index.d.ts | 0 .../node_modules/ansi-regex/index.js | 0 .../node_modules/ansi-regex/license | 0 .../node_modules/ansi-regex/package.json | 0 .../node_modules/ansi-regex/readme.md | 0 .../node_modules/append-field}/.npmignore | 0 .../node_modules/append-field/LICENSE | 21 + .../node_modules/append-field/README.md | 44 + .../node_modules/append-field/index.js | 12 + .../append-field/lib/parse-path.js | 53 + .../append-field/lib/set-value.js | 64 + .../node_modules/append-field/package.json | 19 + .../node_modules/append-field/test/forms.js | 19 + .../node_modules/aproba/CHANGELOG.md | 0 .../node_modules/aproba/LICENSE | 0 .../node_modules/aproba/README.md | 0 .../node_modules/aproba/index.js | 0 .../node_modules/aproba/package.json | 0 .../node_modules/are-we-there-yet/LICENSE.md | 0 .../node_modules/are-we-there-yet/README.md | 0 .../are-we-there-yet/lib/index.js | 0 .../are-we-there-yet/lib/tracker-base.js | 0 .../are-we-there-yet/lib/tracker-group.js | 0 .../are-we-there-yet/lib/tracker-stream.js | 0 .../are-we-there-yet/lib/tracker.js | 0 .../are-we-there-yet/package.json | 0 .../node_modules/array-flatten/LICENSE | 0 .../node_modules/array-flatten/README.md | 0 .../array-flatten/array-flatten.js | 0 .../node_modules/array-flatten/package.json | 0 .../balanced-match/.github/FUNDING.yml | 0 .../node_modules/balanced-match/LICENSE.md | 0 .../node_modules/balanced-match/README.md | 0 .../node_modules/balanced-match/index.js | 0 .../node_modules/balanced-match/package.json | 0 .../node_modules/bcrypt/.editorconfig | 0 .../bcrypt/.github/workflows/ci.yaml | 0 .../node_modules/bcrypt/.travis.yml | 0 .../node_modules/bcrypt/CHANGELOG.md | 0 .../node_modules/bcrypt/ISSUE_TEMPLATE.md | 0 .../node_modules/bcrypt/LICENSE | 0 .../node_modules/bcrypt/Makefile | 0 .../node_modules/bcrypt/README.md | 0 .../node_modules/bcrypt/SECURITY.md | 0 .../node_modules/bcrypt/appveyor.yml | 0 .../node_modules/bcrypt/bcrypt.js | 0 .../node_modules/bcrypt/binding.gyp | 0 .../bcrypt/examples/async_compare.js | 0 .../bcrypt/examples/forever_gen_salt.js | 0 .../lib/binding/napi-v3/bcrypt_lib.node | Bin .../node_modules/bcrypt/package.json | 0 .../node_modules/bcrypt/promises.js | 0 .../node_modules/bcrypt/src/bcrypt.cc | 0 .../node_modules/bcrypt/src/bcrypt_node.cc | 0 .../node_modules/bcrypt/src/blowfish.cc | 0 .../node_modules/bcrypt/src/node_blf.h | 0 .../node_modules/bcrypt/test-docker.sh | 0 .../node_modules/bcrypt/test/async.test.js | 0 .../bcrypt/test/implementation.test.js | 0 .../node_modules/bcrypt/test/promise.test.js | 0 .../bcrypt/test/repetitions.test.js | 0 .../node_modules/bcrypt/test/sync.test.js | 0 .../node_modules/bcryptjs/.npmignore | 0 .../node_modules/bcryptjs/.travis.yml | 0 .../bcryptjs/.vscode/settings.json | 0 .../node_modules/bcryptjs/LICENSE | 0 .../node_modules/bcryptjs/README.md | 0 .../node_modules/bcryptjs/bin/bcrypt | 0 .../node_modules/bcryptjs/bower.json | 0 .../node_modules/bcryptjs/dist/README.md | 0 .../node_modules/bcryptjs/dist/bcrypt.js | 0 .../node_modules/bcryptjs/dist/bcrypt.min.js | 0 .../bcryptjs/dist/bcrypt.min.js.gz | Bin .../node_modules/bcryptjs/dist/bcrypt.min.map | 0 .../node_modules/bcryptjs/externs/bcrypt.js | 0 .../bcryptjs/externs/minimal-env.js | 0 .../node_modules/bcryptjs/index.js | 0 .../node_modules/bcryptjs/package.json | 0 .../node_modules/bcryptjs/scripts/build.js | 0 .../node_modules/bcryptjs/src/bcrypt.js | 0 .../node_modules/bcryptjs/src/bcrypt/impl.js | 0 .../bcryptjs/src/bcrypt/prng/README.md | 0 .../bcryptjs/src/bcrypt/prng/accum.js | 0 .../bcryptjs/src/bcrypt/prng/isaac.js | 0 .../node_modules/bcryptjs/src/bcrypt/util.js | 0 .../bcryptjs/src/bcrypt/util/base64.js | 0 .../node_modules/bcryptjs/src/bower.json | 0 .../node_modules/bcryptjs/src/wrap.js | 0 .../bcryptjs/tests/quickbrown.txt | 0 .../node_modules/bcryptjs/tests/suite.js | 0 .../node_modules/body-parser/HISTORY.md | 0 .../node_modules/body-parser/LICENSE | 0 .../node_modules/body-parser/README.md | 0 .../node_modules/body-parser/SECURITY.md | 0 .../node_modules/body-parser/index.js | 0 .../node_modules/body-parser/lib/read.js | 0 .../body-parser/lib/types/json.js | 0 .../node_modules/body-parser/lib/types/raw.js | 0 .../body-parser/lib/types/text.js | 0 .../body-parser/lib/types/urlencoded.js | 0 .../node_modules/body-parser/package.json | 0 .../node_modules/brace-expansion/LICENSE | 0 .../node_modules/brace-expansion/README.md | 0 .../node_modules/brace-expansion/index.js | 0 .../node_modules/brace-expansion/package.json | 0 .../node_modules/bson/LICENSE.md | 0 .../node_modules/bson/README.md | 0 .../node_modules/bson/bson.d.ts | 0 .../node_modules/bson/etc/prepare.js | 0 .../node_modules/bson/lib/bson.bundle.js | 0 .../node_modules/bson/lib/bson.bundle.js.map | 0 .../node_modules/bson/lib/bson.cjs | 0 .../node_modules/bson/lib/bson.cjs.map | 0 .../node_modules/bson/lib/bson.mjs | 0 .../node_modules/bson/lib/bson.mjs.map | 0 .../node_modules/bson/lib/bson.rn.cjs | 0 .../node_modules/bson/lib/bson.rn.cjs.map | 0 .../node_modules/bson/package.json | 0 .../node_modules/bson/src/binary.ts | 0 .../node_modules/bson/src/bson.ts | 0 .../node_modules/bson/src/bson_value.ts | 0 .../node_modules/bson/src/code.ts | 0 .../node_modules/bson/src/constants.ts | 0 .../node_modules/bson/src/db_ref.ts | 0 .../node_modules/bson/src/decimal128.ts | 0 .../node_modules/bson/src/double.ts | 0 .../node_modules/bson/src/error.ts | 0 .../node_modules/bson/src/extended_json.ts | 0 .../node_modules/bson/src/index.ts | 0 .../node_modules/bson/src/int_32.ts | 0 .../node_modules/bson/src/long.ts | 0 .../node_modules/bson/src/max_key.ts | 0 .../node_modules/bson/src/min_key.ts | 0 .../node_modules/bson/src/objectid.ts | 0 .../node_modules/bson/src/parse_utf8.ts | 0 .../bson/src/parser/calculate_size.ts | 0 .../bson/src/parser/deserializer.ts | 0 .../bson/src/parser/on_demand/index.ts | 0 .../src/parser/on_demand/parse_to_elements.ts | 0 .../bson/src/parser/serializer.ts | 0 .../node_modules/bson/src/parser/utils.ts | 0 .../node_modules/bson/src/regexp.ts | 0 .../node_modules/bson/src/symbol.ts | 0 .../node_modules/bson/src/timestamp.ts | 0 .../node_modules/bson/src/utils/byte_utils.ts | 0 .../node_modules/bson/src/utils/latin.ts | 0 .../bson/src/utils/node_byte_utils.ts | 0 .../bson/src/utils/number_utils.ts | 0 .../bson/src/utils/string_utils.ts | 0 .../bson/src/utils/web_byte_utils.ts | 0 .../bson/vendor/base64/LICENSE-MIT.txt | 0 .../node_modules/bson/vendor/base64/README.md | 0 .../node_modules/bson/vendor/base64/base64.js | 0 .../bson/vendor/base64/package.json | 0 .../bson/vendor/text-encoding/LICENSE.md | 0 .../bson/vendor/text-encoding/README.md | 0 .../bson/vendor/text-encoding/index.js | 0 .../text-encoding/lib/encoding-indexes.js | 0 .../bson/vendor/text-encoding/lib/encoding.js | 0 .../bson/vendor/text-encoding/package.json | 0 .../buffer-equal-constant-time/.npmignore | 0 .../buffer-equal-constant-time/.travis.yml | 0 .../buffer-equal-constant-time/LICENSE.txt | 0 .../buffer-equal-constant-time/README.md | 0 .../buffer-equal-constant-time/index.js | 0 .../buffer-equal-constant-time/package.json | 0 .../buffer-equal-constant-time/test.js | 0 node_backend/node_modules/buffer-from/LICENSE | 21 + .../node_modules/buffer-from/index.js | 72 ++ .../node_modules/buffer-from/package.json | 19 + .../node_modules/buffer-from/readme.md | 69 ++ node_backend/node_modules/busboy/.eslintrc.js | 5 + .../busboy/.github/workflows/ci.yml | 24 + .../busboy/.github/workflows/lint.yml | 23 + node_backend/node_modules/busboy/LICENSE | 19 + node_backend/node_modules/busboy/README.md | 191 +++ .../bench/bench-multipart-fields-100mb-big.js | 149 +++ .../bench-multipart-fields-100mb-small.js | 143 +++ .../bench/bench-multipart-files-100mb-big.js | 154 +++ .../bench-multipart-files-100mb-small.js | 148 +++ .../bench-urlencoded-fields-100pairs-small.js | 101 ++ ...ch-urlencoded-fields-900pairs-small-alt.js | 84 ++ node_backend/node_modules/busboy/lib/index.js | 57 + .../busboy/lib/types/multipart.js | 653 ++++++++++ .../busboy/lib/types/urlencoded.js | 350 ++++++ node_backend/node_modules/busboy/lib/utils.js | 596 ++++++++++ node_backend/node_modules/busboy/package.json | 22 + .../node_modules/busboy/test/common.js | 109 ++ .../test/test-types-multipart-charsets.js | 94 ++ .../test/test-types-multipart-stream-pause.js | 102 ++ .../busboy/test/test-types-multipart.js | 1053 +++++++++++++++++ .../busboy/test/test-types-urlencoded.js | 488 ++++++++ node_backend/node_modules/busboy/test/test.js | 20 + .../node_modules/bytes/History.md | 0 .../node_modules/bytes/LICENSE | 0 .../node_modules/bytes/Readme.md | 0 .../node_modules/bytes/index.js | 0 .../node_modules/bytes/package.json | 0 .../node_modules/call-bind/.eslintignore | 0 .../node_modules/call-bind/.eslintrc | 0 .../call-bind/.github/FUNDING.yml | 0 .../node_modules/call-bind/.nycrc | 0 .../node_modules/call-bind/CHANGELOG.md | 0 .../node_modules/call-bind/LICENSE | 0 .../node_modules/call-bind/README.md | 0 .../node_modules/call-bind/callBound.js | 0 .../node_modules/call-bind/index.js | 0 .../node_modules/call-bind/package.json | 0 .../node_modules/call-bind/test/callBound.js | 0 .../node_modules/call-bind/test/index.js | 0 .../node_modules/chownr/LICENSE | 0 .../node_modules/chownr/README.md | 0 .../node_modules/chownr/chownr.js | 0 .../node_modules/chownr/package.json | 0 .../node_modules/color-support/LICENSE | 0 .../node_modules/color-support/README.md | 0 .../node_modules/color-support/bin.js | 0 .../node_modules/color-support/browser.js | 0 .../node_modules/color-support/index.js | 0 .../node_modules/color-support/package.json | 0 .../node_modules/concat-map/.travis.yml | 0 .../node_modules/concat-map/LICENSE | 0 .../node_modules/concat-map/README.markdown | 0 .../node_modules/concat-map/example/map.js | 0 .../node_modules/concat-map/index.js | 0 .../node_modules/concat-map/package.json | 0 .../node_modules/concat-map/test/map.js | 0 .../node_modules/concat-stream/LICENSE | 24 + .../node_modules/concat-stream/index.js | 144 +++ .../node_modules/readable-stream/.travis.yml | 34 + .../readable-stream/CONTRIBUTING.md | 0 .../readable-stream/GOVERNANCE.md | 0 .../node_modules/readable-stream/LICENSE | 0 .../node_modules/readable-stream/README.md | 58 + .../doc/wg-meetings/2015-01-30.md | 60 + .../readable-stream/duplex-browser.js | 1 + .../node_modules/readable-stream/duplex.js | 1 + .../readable-stream/lib/_stream_duplex.js | 131 ++ .../lib/_stream_passthrough.js | 47 + .../readable-stream/lib/_stream_readable.js | 1019 ++++++++++++++++ .../readable-stream/lib/_stream_transform.js | 214 ++++ .../readable-stream/lib/_stream_writable.js | 685 +++++++++++ .../lib/internal/streams/BufferList.js | 78 ++ .../lib/internal/streams/destroy.js | 84 ++ .../lib/internal/streams/stream-browser.js | 0 .../lib/internal/streams/stream.js | 0 .../node_modules/readable-stream/package.json | 52 + .../readable-stream/passthrough.js | 1 + .../readable-stream/readable-browser.js | 7 + .../node_modules/readable-stream/readable.js | 19 + .../node_modules/readable-stream/transform.js | 1 + .../readable-stream/writable-browser.js | 1 + .../node_modules/readable-stream/writable.js | 8 + .../node_modules/safe-buffer/LICENSE | 0 .../node_modules/safe-buffer/README.md | 0 .../node_modules/safe-buffer/index.d.ts | 0 .../node_modules/safe-buffer/index.js | 62 + .../node_modules/safe-buffer/package.json | 37 + .../node_modules/string_decoder/.travis.yml | 50 + .../node_modules/string_decoder/LICENSE | 0 .../node_modules/string_decoder/README.md | 0 .../string_decoder/lib/string_decoder.js | 0 .../node_modules/string_decoder/package.json | 31 + .../node_modules/concat-stream/package.json | 55 + .../node_modules/concat-stream/readme.md | 102 ++ .../console-control-strings/LICENSE | 0 .../console-control-strings/README.md | 0 .../console-control-strings/README.md~ | 0 .../console-control-strings/index.js | 0 .../console-control-strings/package.json | 0 .../content-disposition/HISTORY.md | 0 .../node_modules/content-disposition/LICENSE | 0 .../content-disposition/README.md | 0 .../node_modules/content-disposition/index.js | 0 .../content-disposition/package.json | 0 .../node_modules/content-type/HISTORY.md | 0 .../node_modules/content-type/LICENSE | 0 .../node_modules/content-type/README.md | 0 .../node_modules/content-type/index.js | 0 .../node_modules/content-type/package.json | 0 .../node_modules/cookie-signature/.npmignore | 0 .../node_modules/cookie-signature/History.md | 0 .../node_modules/cookie-signature/Readme.md | 0 .../node_modules/cookie-signature/index.js | 0 .../cookie-signature/package.json | 0 .../node_modules/cookie/LICENSE | 0 .../node_modules/cookie/README.md | 0 .../node_modules/cookie/SECURITY.md | 0 .../node_modules/cookie/index.js | 0 .../node_modules/cookie/package.json | 0 .../node_modules/core-util-is/LICENSE | 19 + .../node_modules/core-util-is/README.md | 3 + .../node_modules/core-util-is/lib/util.js | 107 ++ .../node_modules/core-util-is/package.json | 38 + .../node_modules/cors/CONTRIBUTING.md | 0 .../node_modules/cors/HISTORY.md | 0 .../node_modules/cors/LICENSE | 0 .../node_modules/cors/README.md | 0 .../node_modules/cors/lib/index.js | 0 .../node_modules/cors/package.json | 0 node_backend/node_modules/csv-parser/LICENSE | 21 + .../node_modules/csv-parser/README.md | 358 ++++++ .../node_modules/csv-parser/bin/csv-parser | 94 ++ .../node_modules/csv-parser/index.d.ts | 146 +++ node_backend/node_modules/csv-parser/index.js | 275 +++++ .../node_modules/csv-parser/package.json | 92 ++ .../node_modules/debug/.coveralls.yml | 0 .../node_modules/debug/.eslintrc | 0 .../node_modules/debug/.npmignore | 0 .../node_modules/debug/.travis.yml | 0 .../node_modules/debug/CHANGELOG.md | 0 .../node_modules/debug/LICENSE | 0 .../node_modules/debug/Makefile | 0 .../node_modules/debug/README.md | 0 .../node_modules/debug/component.json | 0 .../node_modules/debug/karma.conf.js | 0 .../node_modules/debug/node.js | 0 .../node_modules/debug/package.json | 0 .../node_modules/debug/src/browser.js | 0 .../node_modules/debug/src/debug.js | 0 .../node_modules/debug/src/index.js | 0 .../node_modules/debug/src/inspector-log.js | 0 .../node_modules/debug/src/node.js | 0 .../define-data-property/.eslintrc | 0 .../define-data-property/.github/FUNDING.yml | 0 .../node_modules/define-data-property/.nycrc | 0 .../define-data-property/CHANGELOG.md | 0 .../node_modules/define-data-property/LICENSE | 0 .../define-data-property/README.md | 0 .../define-data-property/index.d.ts | 0 .../define-data-property/index.js | 0 .../define-data-property/package.json | 0 .../define-data-property/test/index.js | 0 .../define-data-property/tsconfig.json | 0 .../node_modules/delegates/.npmignore | 1 + .../node_modules/delegates/History.md | 0 .../node_modules/delegates/License | 0 .../node_modules/delegates/Makefile | 0 .../node_modules/delegates/Readme.md | 0 .../node_modules/delegates/index.js | 0 .../node_modules/delegates/package.json | 0 .../node_modules/delegates/test/index.js | 0 .../node_modules/depd/History.md | 0 .../node_modules/depd/LICENSE | 0 .../node_modules/depd/Readme.md | 0 .../node_modules/depd/index.js | 0 .../node_modules/depd/lib/browser/index.js | 0 .../node_modules/depd/package.json | 0 .../node_modules/destroy/LICENSE | 0 .../node_modules/destroy/README.md | 0 .../node_modules/destroy/index.js | 0 .../node_modules/destroy/package.json | 0 .../node_modules/detect-libc/LICENSE | 0 .../node_modules/detect-libc/README.md | 0 .../node_modules/detect-libc/index.d.ts | 0 .../detect-libc/lib/detect-libc.js | 0 .../detect-libc/lib/filesystem.js | 0 .../node_modules/detect-libc/lib/process.js | 0 .../node_modules/detect-libc/package.json | 0 .../node_modules/dotenv/CHANGELOG.md | 0 .../node_modules/dotenv/LICENSE | 0 .../node_modules/dotenv/README-es.md | 0 .../node_modules/dotenv/README.md | 0 .../node_modules/dotenv/config.d.ts | 0 .../node_modules/dotenv/config.js | 0 .../node_modules/dotenv/lib/cli-options.js | 0 .../node_modules/dotenv/lib/env-options.js | 0 .../node_modules/dotenv/lib/main.d.ts | 0 .../node_modules/dotenv/lib/main.js | 0 .../node_modules/dotenv/package.json | 0 .../ecdsa-sig-formatter/CODEOWNERS | 0 .../node_modules/ecdsa-sig-formatter/LICENSE | 0 .../ecdsa-sig-formatter/README.md | 0 .../ecdsa-sig-formatter/package.json | 0 .../src/ecdsa-sig-formatter.d.ts | 0 .../src/ecdsa-sig-formatter.js | 0 .../src/param-bytes-for-alg.js | 0 .../node_modules/ee-first/LICENSE | 0 .../node_modules/ee-first/README.md | 0 .../node_modules/ee-first/index.js | 0 .../node_modules/ee-first/package.json | 0 .../node_modules/emoji-regex/LICENSE-MIT.txt | 0 .../node_modules/emoji-regex/README.md | 0 .../node_modules/emoji-regex/es2015/index.js | 0 .../node_modules/emoji-regex/es2015/text.js | 0 .../node_modules/emoji-regex/index.d.ts | 0 .../node_modules/emoji-regex/index.js | 0 .../node_modules/emoji-regex/package.json | 0 .../node_modules/emoji-regex/text.js | 0 .../node_modules/encodeurl/LICENSE | 0 .../node_modules/encodeurl/README.md | 0 .../node_modules/encodeurl/index.js | 0 .../node_modules/encodeurl/package.json | 0 .../node_modules/es-define-property/.eslintrc | 0 .../es-define-property/.github/FUNDING.yml | 0 .../node_modules/es-define-property/.nycrc | 0 .../es-define-property/CHANGELOG.md | 0 .../node_modules/es-define-property/LICENSE | 0 .../node_modules/es-define-property/README.md | 0 .../es-define-property/index.d.ts | 0 .../node_modules/es-define-property/index.js | 0 .../es-define-property/package.json | 0 .../es-define-property/test/index.js | 0 .../es-define-property/tsconfig.json | 0 .../node_modules/es-errors/.eslintrc | 0 .../es-errors/.github/FUNDING.yml | 0 .../node_modules/es-errors/CHANGELOG.md | 0 .../node_modules/es-errors/LICENSE | 0 .../node_modules/es-errors/README.md | 0 .../node_modules/es-errors/eval.d.ts | 0 .../node_modules/es-errors/eval.js | 0 .../node_modules/es-errors/index.d.ts | 0 .../node_modules/es-errors/index.js | 0 .../node_modules/es-errors/package.json | 0 .../node_modules/es-errors/range.d.ts | 0 .../node_modules/es-errors/range.js | 0 .../node_modules/es-errors/ref.d.ts | 0 .../node_modules/es-errors/ref.js | 0 .../node_modules/es-errors/syntax.d.ts | 0 .../node_modules/es-errors/syntax.js | 0 .../node_modules/es-errors/test/index.js | 0 .../node_modules/es-errors/tsconfig.json | 0 .../node_modules/es-errors/type.d.ts | 0 .../node_modules/es-errors/type.js | 0 .../node_modules/es-errors/uri.d.ts | 0 .../node_modules/es-errors/uri.js | 0 .../node_modules/escape-html/LICENSE | 0 .../node_modules/escape-html/Readme.md | 0 .../node_modules/escape-html/index.js | 0 .../node_modules/escape-html/package.json | 0 .../node_modules/etag/HISTORY.md | 0 .../node_modules/etag/LICENSE | 0 .../node_modules/etag/README.md | 0 .../node_modules/etag/index.js | 0 .../node_modules/etag/package.json | 0 .../node_modules/express/History.md | 0 .../node_modules/express/LICENSE | 0 .../node_modules/express/Readme.md | 0 .../node_modules/express/index.js | 0 .../node_modules/express/lib/application.js | 0 .../node_modules/express/lib/express.js | 0 .../express/lib/middleware/init.js | 0 .../express/lib/middleware/query.js | 0 .../node_modules/express/lib/request.js | 0 .../node_modules/express/lib/response.js | 0 .../node_modules/express/lib/router/index.js | 0 .../node_modules/express/lib/router/layer.js | 0 .../node_modules/express/lib/router/route.js | 0 .../node_modules/express/lib/utils.js | 0 .../node_modules/express/lib/view.js | 0 .../node_modules/express/package.json | 0 .../node_modules/finalhandler/HISTORY.md | 0 .../node_modules/finalhandler/LICENSE | 0 .../node_modules/finalhandler/README.md | 0 .../node_modules/finalhandler/SECURITY.md | 0 .../node_modules/finalhandler/index.js | 0 .../node_modules/finalhandler/package.json | 0 .../node_modules/forwarded/HISTORY.md | 0 .../node_modules/forwarded/LICENSE | 0 .../node_modules/forwarded/README.md | 0 .../node_modules/forwarded/index.js | 0 .../node_modules/forwarded/package.json | 0 .../node_modules/fresh/HISTORY.md | 0 .../node_modules/fresh/LICENSE | 0 .../node_modules/fresh/README.md | 0 .../node_modules/fresh/index.js | 0 .../node_modules/fresh/package.json | 0 .../node_modules/fs-minipass/LICENSE | 0 .../node_modules/fs-minipass/README.md | 0 .../node_modules/fs-minipass/index.js | 0 .../fs-minipass/node_modules/minipass/LICENSE | 0 .../node_modules/minipass/README.md | 0 .../node_modules/minipass/index.d.ts | 0 .../node_modules/minipass/index.js | 0 .../node_modules/minipass/package.json | 0 .../node_modules/fs-minipass/package.json | 0 .../node_modules/fs.realpath/LICENSE | 0 .../node_modules/fs.realpath/README.md | 0 .../node_modules/fs.realpath/index.js | 0 .../node_modules/fs.realpath/old.js | 0 .../node_modules/fs.realpath/package.json | 0 .../node_modules/function-bind/.eslintrc | 0 .../function-bind/.github/FUNDING.yml | 0 .../function-bind/.github/SECURITY.md | 0 .../node_modules/function-bind/.nycrc | 0 .../node_modules/function-bind/CHANGELOG.md | 0 .../node_modules/function-bind/LICENSE | 0 .../node_modules/function-bind/README.md | 0 .../function-bind/implementation.js | 0 .../node_modules/function-bind/index.js | 0 .../node_modules/function-bind/package.json | 0 .../node_modules/function-bind/test/.eslintrc | 0 .../node_modules/function-bind/test/index.js | 0 .../node_modules/gauge/CHANGELOG.md | 0 .../node_modules/gauge/LICENSE | 0 .../node_modules/gauge/README.md | 0 .../node_modules/gauge/base-theme.js | 0 .../node_modules/gauge/error.js | 0 .../node_modules/gauge/has-color.js | 0 .../node_modules/gauge/index.js | 0 .../node_modules/gauge/package.json | 0 .../node_modules/gauge/plumbing.js | 0 .../node_modules/gauge/process.js | 0 .../node_modules/gauge/progress-bar.js | 0 .../node_modules/gauge/render-template.js | 0 .../node_modules/gauge/set-immediate.js | 0 .../node_modules/gauge/set-interval.js | 0 .../node_modules/gauge/spin.js | 0 .../node_modules/gauge/template-item.js | 0 .../node_modules/gauge/theme-set.js | 0 .../node_modules/gauge/themes.js | 0 .../node_modules/gauge/wide-truncate.js | 0 .../node_modules/get-intrinsic/.eslintrc | 0 .../get-intrinsic/.github/FUNDING.yml | 0 .../node_modules/get-intrinsic/.nycrc | 0 .../node_modules/get-intrinsic/CHANGELOG.md | 0 .../node_modules/get-intrinsic/LICENSE | 0 .../node_modules/get-intrinsic/README.md | 0 .../node_modules/get-intrinsic/index.js | 0 .../node_modules/get-intrinsic/package.json | 0 .../get-intrinsic/test/GetIntrinsic.js | 0 .../node_modules/glob/LICENSE | 0 .../node_modules/glob/README.md | 0 .../node_modules/glob/common.js | 0 .../node_modules/glob/glob.js | 0 .../node_modules/glob/package.json | 0 .../node_modules/glob/sync.js | 0 .../node_modules/gopd/.eslintrc | 0 .../node_modules/gopd/.github/FUNDING.yml | 0 .../node_modules/gopd/CHANGELOG.md | 0 .../node_modules/gopd/LICENSE | 0 .../node_modules/gopd/README.md | 0 .../node_modules/gopd/index.js | 0 .../node_modules/gopd/package.json | 0 .../node_modules/gopd/test/index.js | 0 .../has-property-descriptors/.eslintrc | 0 .../.github/FUNDING.yml | 0 .../has-property-descriptors/.nycrc | 0 .../has-property-descriptors/CHANGELOG.md | 0 .../has-property-descriptors/LICENSE | 0 .../has-property-descriptors/README.md | 0 .../has-property-descriptors/index.js | 0 .../has-property-descriptors/package.json | 0 .../has-property-descriptors/test/index.js | 0 .../node_modules/has-proto/.eslintrc | 0 .../has-proto/.github/FUNDING.yml | 0 .../node_modules/has-proto/CHANGELOG.md | 0 .../node_modules/has-proto/LICENSE | 0 .../node_modules/has-proto/README.md | 0 .../node_modules/has-proto/index.d.ts | 0 .../node_modules/has-proto/index.js | 0 .../node_modules/has-proto/package.json | 0 .../node_modules/has-proto/test/index.js | 0 .../node_modules/has-proto/tsconfig.json | 0 .../node_modules/has-symbols/.eslintrc | 0 .../has-symbols/.github/FUNDING.yml | 0 .../node_modules/has-symbols/.nycrc | 0 .../node_modules/has-symbols/CHANGELOG.md | 0 .../node_modules/has-symbols/LICENSE | 0 .../node_modules/has-symbols/README.md | 0 .../node_modules/has-symbols/index.js | 0 .../node_modules/has-symbols/package.json | 0 .../node_modules/has-symbols/shams.js | 0 .../node_modules/has-symbols/test/index.js | 0 .../has-symbols/test/shams/core-js.js | 0 .../test/shams/get-own-property-symbols.js | 0 .../node_modules/has-symbols/test/tests.js | 0 .../node_modules/has-unicode/LICENSE | 0 .../node_modules/has-unicode/README.md | 0 .../node_modules/has-unicode/index.js | 0 .../node_modules/has-unicode/package.json | 0 .../node_modules/hasown/.eslintrc | 0 .../node_modules/hasown/.github/FUNDING.yml | 0 .../node_modules/hasown/.nycrc | 0 .../node_modules/hasown/CHANGELOG.md | 0 .../node_modules/hasown/LICENSE | 0 .../node_modules/hasown/README.md | 0 .../node_modules/hasown/index.d.ts | 0 .../node_modules/hasown/index.js | 0 .../node_modules/hasown/package.json | 0 .../node_modules/hasown/tsconfig.json | 0 .../node_modules/http-errors/HISTORY.md | 0 .../node_modules/http-errors/LICENSE | 0 .../node_modules/http-errors/README.md | 0 .../node_modules/http-errors/index.js | 0 .../node_modules/http-errors/package.json | 0 .../node_modules/https-proxy-agent/README.md | 0 .../https-proxy-agent/dist/agent.d.ts | 0 .../https-proxy-agent/dist/agent.js | 0 .../https-proxy-agent/dist/agent.js.map | 0 .../https-proxy-agent/dist/index.d.ts | 0 .../https-proxy-agent/dist/index.js | 0 .../https-proxy-agent/dist/index.js.map | 0 .../dist/parse-proxy-response.d.ts | 0 .../dist/parse-proxy-response.js | 0 .../dist/parse-proxy-response.js.map | 0 .../node_modules/debug/LICENSE | 0 .../node_modules/debug/README.md | 0 .../node_modules/debug/package.json | 0 .../node_modules/debug/src/browser.js | 0 .../node_modules/debug/src/common.js | 0 .../node_modules/debug/src/index.js | 0 .../node_modules/debug/src/node.js | 0 .../node_modules/ms/index.js | 0 .../node_modules/ms/license.md | 0 .../node_modules/ms/package.json | 0 .../node_modules/ms/readme.md | 0 .../https-proxy-agent/package.json | 0 .../node_modules/iconv-lite/Changelog.md | 0 .../node_modules/iconv-lite/LICENSE | 0 .../node_modules/iconv-lite/README.md | 0 .../iconv-lite/encodings/dbcs-codec.js | 0 .../iconv-lite/encodings/dbcs-data.js | 0 .../iconv-lite/encodings/index.js | 0 .../iconv-lite/encodings/internal.js | 0 .../iconv-lite/encodings/sbcs-codec.js | 0 .../encodings/sbcs-data-generated.js | 0 .../iconv-lite/encodings/sbcs-data.js | 0 .../encodings/tables/big5-added.json | 0 .../iconv-lite/encodings/tables/cp936.json | 0 .../iconv-lite/encodings/tables/cp949.json | 0 .../iconv-lite/encodings/tables/cp950.json | 0 .../iconv-lite/encodings/tables/eucjp.json | 0 .../encodings/tables/gb18030-ranges.json | 0 .../encodings/tables/gbk-added.json | 0 .../iconv-lite/encodings/tables/shiftjis.json | 0 .../iconv-lite/encodings/utf16.js | 0 .../node_modules/iconv-lite/encodings/utf7.js | 0 .../iconv-lite/lib/bom-handling.js | 0 .../iconv-lite/lib/extend-node.js | 0 .../node_modules/iconv-lite/lib/index.d.ts | 0 .../node_modules/iconv-lite/lib/index.js | 0 .../node_modules/iconv-lite/lib/streams.js | 0 .../node_modules/iconv-lite/package.json | 0 .../node_modules/inflight/LICENSE | 0 .../node_modules/inflight/README.md | 0 .../node_modules/inflight/inflight.js | 0 .../node_modules/inflight/package.json | 0 .../node_modules/inherits/LICENSE | 0 .../node_modules/inherits/README.md | 0 .../node_modules/inherits/inherits.js | 0 .../node_modules/inherits/inherits_browser.js | 0 .../node_modules/inherits/package.json | 0 .../node_modules/ipaddr.js/LICENSE | 0 .../node_modules/ipaddr.js/README.md | 0 .../node_modules/ipaddr.js/ipaddr.min.js | 0 .../node_modules/ipaddr.js/lib/ipaddr.js | 0 .../node_modules/ipaddr.js/lib/ipaddr.js.d.ts | 0 .../node_modules/ipaddr.js/package.json | 0 .../is-fullwidth-code-point/index.d.ts | 0 .../is-fullwidth-code-point/index.js | 0 .../is-fullwidth-code-point/license | 0 .../is-fullwidth-code-point/package.json | 0 .../is-fullwidth-code-point/readme.md | 0 .../node_modules/isarray}/.npmignore | 0 node_backend/node_modules/isarray/.travis.yml | 4 + node_backend/node_modules/isarray/Makefile | 6 + node_backend/node_modules/isarray/README.md | 60 + .../node_modules/isarray/component.json | 19 + node_backend/node_modules/isarray/index.js | 5 + .../node_modules/isarray/package.json | 45 + node_backend/node_modules/isarray/test.js | 20 + .../node_modules/jsonwebtoken/LICENSE | 0 .../node_modules/jsonwebtoken/README.md | 0 .../node_modules/jsonwebtoken/decode.js | 0 .../node_modules/jsonwebtoken/index.js | 0 .../jsonwebtoken/lib/JsonWebTokenError.js | 0 .../jsonwebtoken/lib/NotBeforeError.js | 0 .../jsonwebtoken/lib/TokenExpiredError.js | 0 .../lib/asymmetricKeyDetailsSupported.js | 0 .../jsonwebtoken/lib/psSupported.js | 0 .../lib/rsaPssKeyDetailsSupported.js | 0 .../node_modules/jsonwebtoken/lib/timespan.js | 0 .../jsonwebtoken/lib/validateAsymmetricKey.js | 0 .../jsonwebtoken/node_modules/ms/index.js | 0 .../jsonwebtoken/node_modules/ms/license.md | 0 .../jsonwebtoken/node_modules/ms/package.json | 0 .../jsonwebtoken/node_modules/ms/readme.md | 0 .../node_modules/jsonwebtoken/package.json | 0 .../node_modules/jsonwebtoken/sign.js | 0 .../node_modules/jsonwebtoken/verify.js | 0 .../node_modules/jwa/LICENSE | 0 .../node_modules/jwa/README.md | 0 .../node_modules/jwa/index.js | 0 .../node_modules/jwa/package.json | 0 .../node_modules/jws/CHANGELOG.md | 0 .../node_modules/jws/LICENSE | 0 .../node_modules/jws/index.js | 0 .../node_modules/jws/lib/data-stream.js | 0 .../node_modules/jws/lib/sign-stream.js | 0 .../node_modules/jws/lib/tostring.js | 0 .../node_modules/jws/lib/verify-stream.js | 0 .../node_modules/jws/package.json | 0 .../node_modules/jws/readme.md | 0 .../node_modules/kareem/CHANGELOG.md | 0 .../node_modules/kareem/LICENSE | 0 .../node_modules/kareem/README.md | 0 .../node_modules/kareem/SECURITY.md | 0 .../node_modules/kareem/index.d.ts | 0 .../node_modules/kareem/index.js | 0 .../node_modules/kareem/package.json | 0 .../node_modules/lodash.includes/LICENSE | 0 .../node_modules/lodash.includes/README.md | 0 .../node_modules/lodash.includes/index.js | 0 .../node_modules/lodash.includes/package.json | 0 .../node_modules/lodash.isboolean/LICENSE | 0 .../node_modules/lodash.isboolean/README.md | 0 .../node_modules/lodash.isboolean/index.js | 0 .../lodash.isboolean/package.json | 0 .../node_modules/lodash.isinteger/LICENSE | 0 .../node_modules/lodash.isinteger/README.md | 0 .../node_modules/lodash.isinteger/index.js | 0 .../lodash.isinteger/package.json | 0 .../node_modules/lodash.isnumber/LICENSE | 0 .../node_modules/lodash.isnumber/README.md | 0 .../node_modules/lodash.isnumber/index.js | 0 .../node_modules/lodash.isnumber/package.json | 0 .../node_modules/lodash.isplainobject/LICENSE | 0 .../lodash.isplainobject/README.md | 0 .../lodash.isplainobject/index.js | 0 .../lodash.isplainobject/package.json | 0 .../node_modules/lodash.isstring/LICENSE | 0 .../node_modules/lodash.isstring/README.md | 0 .../node_modules/lodash.isstring/index.js | 0 .../node_modules/lodash.isstring/package.json | 0 .../node_modules/lodash.once/LICENSE | 0 .../node_modules/lodash.once/README.md | 0 .../node_modules/lodash.once/index.js | 0 .../node_modules/lodash.once/package.json | 0 .../node_modules/make-dir/index.d.ts | 0 .../node_modules/make-dir/index.js | 0 .../node_modules/make-dir/license | 0 .../make-dir/node_modules/.bin/semver | 0 .../make-dir/node_modules/.bin/semver.cmd | 0 .../make-dir/node_modules/.bin/semver.ps1 | 0 .../make-dir/node_modules/semver/LICENSE | 0 .../make-dir/node_modules/semver/README.md | 0 .../node_modules/semver/bin/semver.js | 0 .../make-dir/node_modules/semver/package.json | 0 .../make-dir/node_modules/semver/range.bnf | 0 .../make-dir/node_modules/semver/semver.js | 0 .../node_modules/make-dir/package.json | 0 .../node_modules/make-dir/readme.md | 0 .../node_modules/media-typer/HISTORY.md | 0 .../node_modules/media-typer/LICENSE | 0 .../node_modules/media-typer/README.md | 0 .../node_modules/media-typer/index.js | 0 .../node_modules/media-typer/package.json | 0 .../node_modules/memory-pager/.travis.yml | 0 .../node_modules/memory-pager/LICENSE | 0 .../node_modules/memory-pager/README.md | 0 .../node_modules/memory-pager/index.js | 0 .../node_modules/memory-pager/package.json | 0 .../node_modules/memory-pager/test.js | 0 .../node_modules/merge-descriptors/HISTORY.md | 0 .../node_modules/merge-descriptors/LICENSE | 0 .../node_modules/merge-descriptors/README.md | 0 .../node_modules/merge-descriptors/index.js | 0 .../merge-descriptors/package.json | 0 .../node_modules/methods/HISTORY.md | 0 .../node_modules/methods/LICENSE | 0 .../node_modules/methods/README.md | 0 .../node_modules/methods/index.js | 0 .../node_modules/methods/package.json | 0 .../node_modules/mime-db/HISTORY.md | 0 .../node_modules/mime-db/LICENSE | 0 .../node_modules/mime-db/README.md | 0 .../node_modules/mime-db/db.json | 0 .../node_modules/mime-db/index.js | 0 .../node_modules/mime-db/package.json | 0 .../node_modules/mime-types/HISTORY.md | 0 .../node_modules/mime-types/LICENSE | 0 .../node_modules/mime-types/README.md | 0 .../node_modules/mime-types/index.js | 0 .../node_modules/mime-types/package.json | 0 .../node_modules/mime/.npmignore | 0 .../node_modules/mime/CHANGELOG.md | 0 .../node_modules/mime/LICENSE | 0 .../node_modules/mime/README.md | 0 .../node_modules/mime/cli.js | 0 .../node_modules/mime/mime.js | 0 .../node_modules/mime/package.json | 0 .../node_modules/mime/src/build.js | 0 .../node_modules/mime/src/test.js | 0 .../node_modules/mime/types.json | 0 .../node_modules/minimatch/LICENSE | 0 .../node_modules/minimatch/README.md | 0 .../node_modules/minimatch/minimatch.js | 0 .../node_modules/minimatch/package.json | 0 node_backend/node_modules/minimist/.eslintrc | 29 + .../node_modules/minimist/.github/FUNDING.yml | 12 + node_backend/node_modules/minimist/.nycrc | 14 + .../node_modules/minimist/CHANGELOG.md | 298 +++++ node_backend/node_modules/minimist/LICENSE | 18 + node_backend/node_modules/minimist/README.md | 121 ++ .../node_modules/minimist/example/parse.js | 4 + node_backend/node_modules/minimist/index.js | 263 ++++ .../node_modules/minimist/package.json | 75 ++ .../node_modules/minimist/test/all_bool.js | 34 + .../node_modules/minimist/test/bool.js | 177 +++ .../node_modules/minimist/test/dash.js | 43 + .../minimist/test/default_bool.js | 37 + .../node_modules/minimist/test/dotted.js | 24 + .../node_modules/minimist/test/kv_short.js | 32 + .../node_modules/minimist/test/long.js | 33 + .../node_modules/minimist/test/num.js | 38 + .../node_modules/minimist/test/parse.js | 209 ++++ .../minimist/test/parse_modified.js | 11 + .../node_modules/minimist/test/proto.js | 64 + .../node_modules/minimist/test/short.js | 69 ++ .../node_modules/minimist/test/stop_early.js | 17 + .../node_modules/minimist/test/unknown.js | 104 ++ .../node_modules/minimist/test/whitespace.js | 10 + .../node_modules/minipass/LICENSE | 0 .../node_modules/minipass/README.md | 0 .../node_modules/minipass/index.d.ts | 0 .../node_modules/minipass/index.js | 0 .../node_modules/minipass/index.mjs | 0 .../node_modules/minipass/package.json | 0 .../node_modules/minizlib/LICENSE | 0 .../node_modules/minizlib/README.md | 0 .../node_modules/minizlib/constants.js | 0 .../node_modules/minizlib/index.js | 0 .../minizlib/node_modules/minipass/LICENSE | 0 .../minizlib/node_modules/minipass/README.md | 0 .../minizlib/node_modules/minipass/index.d.ts | 0 .../minizlib/node_modules/minipass/index.js | 0 .../node_modules/minipass/package.json | 0 .../node_modules/minizlib/package.json | 0 .../node_modules/mkdirp/CHANGELOG.md | 0 .../node_modules/mkdirp/LICENSE | 0 .../node_modules/mkdirp/bin/cmd.js | 0 .../node_modules/mkdirp/index.js | 0 .../node_modules/mkdirp/lib/find-made.js | 0 .../node_modules/mkdirp/lib/mkdirp-manual.js | 0 .../node_modules/mkdirp/lib/mkdirp-native.js | 0 .../node_modules/mkdirp/lib/opts-arg.js | 0 .../node_modules/mkdirp/lib/path-arg.js | 0 .../node_modules/mkdirp/lib/use-native.js | 0 .../node_modules/mkdirp/package.json | 0 .../node_modules/mkdirp/readme.markdown | 0 .../.esm-wrapper.mjs | 0 .../mongodb-connection-string-url/LICENSE | 0 .../mongodb-connection-string-url/README.md | 0 .../lib/index.d.ts | 0 .../lib/index.js | 0 .../lib/index.js.map | 0 .../lib/redact.d.ts | 0 .../lib/redact.js | 0 .../lib/redact.js.map | 0 .../package.json | 0 .../node_modules/mongodb/LICENSE.md | 0 .../node_modules/mongodb/README.md | 0 .../node_modules/mongodb/etc/prepare.js | 0 .../node_modules/mongodb/lib/admin.js | 0 .../node_modules/mongodb/lib/admin.js.map | 0 .../node_modules/mongodb/lib/beta.d.ts | 0 .../node_modules/mongodb/lib/beta.js | 0 .../node_modules/mongodb/lib/beta.js.map | 0 .../node_modules/mongodb/lib/bson.js | 0 .../node_modules/mongodb/lib/bson.js.map | 0 .../node_modules/mongodb/lib/bulk/common.js | 0 .../mongodb/lib/bulk/common.js.map | 0 .../node_modules/mongodb/lib/bulk/ordered.js | 0 .../mongodb/lib/bulk/ordered.js.map | 0 .../mongodb/lib/bulk/unordered.js | 0 .../mongodb/lib/bulk/unordered.js.map | 0 .../node_modules/mongodb/lib/change_stream.js | 0 .../mongodb/lib/change_stream.js.map | 0 .../client-side-encryption/auto_encrypter.js | 0 .../auto_encrypter.js.map | 0 .../client_encryption.js | 0 .../client_encryption.js.map | 0 .../crypto_callbacks.js | 0 .../crypto_callbacks.js.map | 0 .../lib/client-side-encryption/errors.js | 0 .../lib/client-side-encryption/errors.js.map | 0 .../mongocryptd_manager.js | 0 .../mongocryptd_manager.js.map | 0 .../client-side-encryption/providers/aws.js | 0 .../providers/aws.js.map | 0 .../client-side-encryption/providers/azure.js | 0 .../providers/azure.js.map | 0 .../client-side-encryption/providers/gcp.js | 0 .../providers/gcp.js.map | 0 .../client-side-encryption/providers/index.js | 0 .../providers/index.js.map | 0 .../client-side-encryption/state_machine.js | 0 .../state_machine.js.map | 0 .../mongodb/lib/cmap/auth/auth_provider.js | 0 .../lib/cmap/auth/auth_provider.js.map | 0 .../cmap/auth/aws_temporary_credentials.js | 0 .../auth/aws_temporary_credentials.js.map | 0 .../mongodb/lib/cmap/auth/gssapi.js | 0 .../mongodb/lib/cmap/auth/gssapi.js.map | 0 .../lib/cmap/auth/mongo_credentials.js | 0 .../lib/cmap/auth/mongo_credentials.js.map | 0 .../mongodb/lib/cmap/auth/mongodb_aws.js | 0 .../mongodb/lib/cmap/auth/mongodb_aws.js.map | 0 .../mongodb/lib/cmap/auth/mongodb_oidc.js | 0 .../mongodb/lib/cmap/auth/mongodb_oidc.js.map | 0 .../automated_callback_workflow.js | 0 .../automated_callback_workflow.js.map | 0 .../mongodb_oidc/azure_machine_workflow.js | 0 .../azure_machine_workflow.js.map | 0 .../auth/mongodb_oidc/callback_workflow.js | 0 .../mongodb_oidc/callback_workflow.js.map | 0 .../auth/mongodb_oidc/command_builders.js | 0 .../auth/mongodb_oidc/command_builders.js.map | 0 .../auth/mongodb_oidc/gcp_machine_workflow.js | 0 .../mongodb_oidc/gcp_machine_workflow.js.map | 0 .../mongodb_oidc/human_callback_workflow.js | 0 .../human_callback_workflow.js.map | 0 .../auth/mongodb_oidc/machine_workflow.js | 0 .../auth/mongodb_oidc/machine_workflow.js.map | 0 .../lib/cmap/auth/mongodb_oidc/token_cache.js | 0 .../cmap/auth/mongodb_oidc/token_cache.js.map | 0 .../mongodb_oidc/token_machine_workflow.js | 0 .../token_machine_workflow.js.map | 0 .../mongodb/lib/cmap/auth/plain.js | 0 .../mongodb/lib/cmap/auth/plain.js.map | 0 .../mongodb/lib/cmap/auth/providers.js | 0 .../mongodb/lib/cmap/auth/providers.js.map | 0 .../mongodb/lib/cmap/auth/scram.js | 0 .../mongodb/lib/cmap/auth/scram.js.map | 0 .../mongodb/lib/cmap/auth/x509.js | 0 .../mongodb/lib/cmap/auth/x509.js.map | 0 .../lib/cmap/command_monitoring_events.js | 0 .../lib/cmap/command_monitoring_events.js.map | 0 .../node_modules/mongodb/lib/cmap/commands.js | 0 .../mongodb/lib/cmap/commands.js.map | 0 .../node_modules/mongodb/lib/cmap/connect.js | 0 .../mongodb/lib/cmap/connect.js.map | 0 .../mongodb/lib/cmap/connection.js | 0 .../mongodb/lib/cmap/connection.js.map | 0 .../mongodb/lib/cmap/connection_pool.js | 0 .../mongodb/lib/cmap/connection_pool.js.map | 0 .../lib/cmap/connection_pool_events.js | 0 .../lib/cmap/connection_pool_events.js.map | 0 .../node_modules/mongodb/lib/cmap/errors.js | 0 .../mongodb/lib/cmap/errors.js.map | 0 .../lib/cmap/handshake/client_metadata.js | 0 .../lib/cmap/handshake/client_metadata.js.map | 0 .../node_modules/mongodb/lib/cmap/metrics.js | 0 .../mongodb/lib/cmap/metrics.js.map | 0 .../mongodb/lib/cmap/stream_description.js | 0 .../lib/cmap/stream_description.js.map | 0 .../lib/cmap/wire_protocol/compression.js | 0 .../lib/cmap/wire_protocol/compression.js.map | 0 .../lib/cmap/wire_protocol/constants.js | 0 .../lib/cmap/wire_protocol/constants.js.map | 0 .../mongodb/lib/cmap/wire_protocol/on_data.js | 0 .../lib/cmap/wire_protocol/on_data.js.map | 0 .../cmap/wire_protocol/on_demand/document.js | 0 .../wire_protocol/on_demand/document.js.map | 0 .../lib/cmap/wire_protocol/responses.js | 0 .../lib/cmap/wire_protocol/responses.js.map | 0 .../mongodb/lib/cmap/wire_protocol/shared.js | 0 .../lib/cmap/wire_protocol/shared.js.map | 0 .../node_modules/mongodb/lib/collection.js | 0 .../mongodb/lib/collection.js.map | 0 .../mongodb/lib/connection_string.js | 0 .../mongodb/lib/connection_string.js.map | 0 .../node_modules/mongodb/lib/constants.js | 0 .../node_modules/mongodb/lib/constants.js.map | 0 .../mongodb/lib/cursor/abstract_cursor.js | 0 .../mongodb/lib/cursor/abstract_cursor.js.map | 0 .../mongodb/lib/cursor/aggregation_cursor.js | 0 .../lib/cursor/aggregation_cursor.js.map | 0 .../lib/cursor/change_stream_cursor.js | 0 .../lib/cursor/change_stream_cursor.js.map | 0 .../lib/cursor/client_bulk_write_cursor.js | 0 .../cursor/client_bulk_write_cursor.js.map | 0 .../mongodb/lib/cursor/find_cursor.js | 0 .../mongodb/lib/cursor/find_cursor.js.map | 0 .../lib/cursor/list_collections_cursor.js | 0 .../lib/cursor/list_collections_cursor.js.map | 0 .../mongodb/lib/cursor/list_indexes_cursor.js | 0 .../lib/cursor/list_indexes_cursor.js.map | 0 .../lib/cursor/list_search_indexes_cursor.js | 0 .../cursor/list_search_indexes_cursor.js.map | 0 .../mongodb/lib/cursor/run_command_cursor.js | 0 .../lib/cursor/run_command_cursor.js.map | 0 .../node_modules/mongodb/lib/db.js | 0 .../node_modules/mongodb/lib/db.js.map | 0 .../node_modules/mongodb/lib/deps.js | 0 .../node_modules/mongodb/lib/deps.js.map | 0 .../node_modules/mongodb/lib/encrypter.js | 0 .../node_modules/mongodb/lib/encrypter.js.map | 0 .../node_modules/mongodb/lib/error.js | 0 .../node_modules/mongodb/lib/error.js.map | 0 .../node_modules/mongodb/lib/explain.js | 0 .../node_modules/mongodb/lib/explain.js.map | 0 .../mongodb/lib/gridfs/download.js | 0 .../mongodb/lib/gridfs/download.js.map | 0 .../node_modules/mongodb/lib/gridfs/index.js | 0 .../mongodb/lib/gridfs/index.js.map | 0 .../node_modules/mongodb/lib/gridfs/upload.js | 0 .../mongodb/lib/gridfs/upload.js.map | 0 .../node_modules/mongodb/lib/index.js | 0 .../node_modules/mongodb/lib/index.js.map | 0 .../node_modules/mongodb/lib/mongo_client.js | 0 .../mongodb/lib/mongo_client.js.map | 0 .../lib/mongo_client_auth_providers.js | 0 .../lib/mongo_client_auth_providers.js.map | 0 .../node_modules/mongodb/lib/mongo_logger.js | 0 .../mongodb/lib/mongo_logger.js.map | 0 .../node_modules/mongodb/lib/mongo_types.js | 0 .../mongodb/lib/mongo_types.js.map | 0 .../mongodb/lib/operations/aggregate.js | 0 .../mongodb/lib/operations/aggregate.js.map | 0 .../mongodb/lib/operations/bulk_write.js | 0 .../mongodb/lib/operations/bulk_write.js.map | 0 .../client_bulk_write/client_bulk_write.js | 0 .../client_bulk_write.js.map | 0 .../client_bulk_write/command_builder.js | 0 .../client_bulk_write/command_builder.js.map | 0 .../operations/client_bulk_write/common.js | 0 .../client_bulk_write/common.js.map | 0 .../operations/client_bulk_write/executor.js | 0 .../client_bulk_write/executor.js.map | 0 .../client_bulk_write/results_merger.js | 0 .../client_bulk_write/results_merger.js.map | 0 .../mongodb/lib/operations/collections.js | 0 .../mongodb/lib/operations/collections.js.map | 0 .../mongodb/lib/operations/command.js | 0 .../mongodb/lib/operations/command.js.map | 0 .../mongodb/lib/operations/count.js | 0 .../mongodb/lib/operations/count.js.map | 0 .../lib/operations/create_collection.js | 0 .../lib/operations/create_collection.js.map | 0 .../mongodb/lib/operations/delete.js | 0 .../mongodb/lib/operations/delete.js.map | 0 .../mongodb/lib/operations/distinct.js | 0 .../mongodb/lib/operations/distinct.js.map | 0 .../mongodb/lib/operations/drop.js | 0 .../mongodb/lib/operations/drop.js.map | 0 .../operations/estimated_document_count.js | 0 .../estimated_document_count.js.map | 0 .../lib/operations/execute_operation.js | 0 .../lib/operations/execute_operation.js.map | 0 .../mongodb/lib/operations/find.js | 0 .../mongodb/lib/operations/find.js.map | 0 .../mongodb/lib/operations/find_and_modify.js | 0 .../lib/operations/find_and_modify.js.map | 0 .../mongodb/lib/operations/get_more.js | 0 .../mongodb/lib/operations/get_more.js.map | 0 .../mongodb/lib/operations/indexes.js | 0 .../mongodb/lib/operations/indexes.js.map | 0 .../mongodb/lib/operations/insert.js | 0 .../mongodb/lib/operations/insert.js.map | 0 .../mongodb/lib/operations/is_capped.js | 0 .../mongodb/lib/operations/is_capped.js.map | 0 .../mongodb/lib/operations/kill_cursors.js | 0 .../lib/operations/kill_cursors.js.map | 0 .../lib/operations/list_collections.js | 0 .../lib/operations/list_collections.js.map | 0 .../mongodb/lib/operations/list_databases.js | 0 .../lib/operations/list_databases.js.map | 0 .../mongodb/lib/operations/operation.js | 0 .../mongodb/lib/operations/operation.js.map | 0 .../lib/operations/options_operation.js | 0 .../lib/operations/options_operation.js.map | 0 .../mongodb/lib/operations/profiling_level.js | 0 .../lib/operations/profiling_level.js.map | 0 .../mongodb/lib/operations/remove_user.js | 0 .../mongodb/lib/operations/remove_user.js.map | 0 .../mongodb/lib/operations/rename.js | 0 .../mongodb/lib/operations/rename.js.map | 0 .../mongodb/lib/operations/run_command.js | 0 .../mongodb/lib/operations/run_command.js.map | 0 .../lib/operations/search_indexes/create.js | 0 .../operations/search_indexes/create.js.map | 0 .../lib/operations/search_indexes/drop.js | 0 .../lib/operations/search_indexes/drop.js.map | 0 .../lib/operations/search_indexes/update.js | 0 .../operations/search_indexes/update.js.map | 0 .../lib/operations/set_profiling_level.js | 0 .../lib/operations/set_profiling_level.js.map | 0 .../mongodb/lib/operations/stats.js | 0 .../mongodb/lib/operations/stats.js.map | 0 .../mongodb/lib/operations/update.js | 0 .../mongodb/lib/operations/update.js.map | 0 .../lib/operations/validate_collection.js | 0 .../lib/operations/validate_collection.js.map | 0 .../node_modules/mongodb/lib/read_concern.js | 0 .../mongodb/lib/read_concern.js.map | 0 .../mongodb/lib/read_preference.js | 0 .../mongodb/lib/read_preference.js.map | 0 .../mongodb/lib/resource_management.js | 0 .../mongodb/lib/resource_management.js.map | 0 .../node_modules/mongodb/lib/sdam/common.js | 0 .../mongodb/lib/sdam/common.js.map | 0 .../node_modules/mongodb/lib/sdam/events.js | 0 .../mongodb/lib/sdam/events.js.map | 0 .../node_modules/mongodb/lib/sdam/monitor.js | 0 .../mongodb/lib/sdam/monitor.js.map | 0 .../node_modules/mongodb/lib/sdam/server.js | 0 .../mongodb/lib/sdam/server.js.map | 0 .../mongodb/lib/sdam/server_description.js | 0 .../lib/sdam/server_description.js.map | 0 .../mongodb/lib/sdam/server_selection.js | 0 .../mongodb/lib/sdam/server_selection.js.map | 0 .../lib/sdam/server_selection_events.js | 0 .../lib/sdam/server_selection_events.js.map | 0 .../mongodb/lib/sdam/srv_polling.js | 0 .../mongodb/lib/sdam/srv_polling.js.map | 0 .../node_modules/mongodb/lib/sdam/topology.js | 0 .../mongodb/lib/sdam/topology.js.map | 0 .../mongodb/lib/sdam/topology_description.js | 0 .../lib/sdam/topology_description.js.map | 0 .../node_modules/mongodb/lib/sessions.js | 0 .../node_modules/mongodb/lib/sessions.js.map | 0 .../node_modules/mongodb/lib/sort.js | 0 .../node_modules/mongodb/lib/sort.js.map | 0 .../node_modules/mongodb/lib/timeout.js | 0 .../node_modules/mongodb/lib/timeout.js.map | 0 .../node_modules/mongodb/lib/transactions.js | 0 .../mongodb/lib/transactions.js.map | 0 .../node_modules/mongodb/lib/utils.js | 0 .../node_modules/mongodb/lib/utils.js.map | 0 .../node_modules/mongodb/lib/write_concern.js | 0 .../mongodb/lib/write_concern.js.map | 0 .../node_modules/mongodb/mongodb.d.ts | 0 .../node_modules/mongodb/package.json | 0 .../node_modules/mongodb/src/admin.ts | 0 .../node_modules/mongodb/src/beta.ts | 0 .../node_modules/mongodb/src/bson.ts | 0 .../node_modules/mongodb/src/bulk/common.ts | 0 .../node_modules/mongodb/src/bulk/ordered.ts | 0 .../mongodb/src/bulk/unordered.ts | 0 .../node_modules/mongodb/src/change_stream.ts | 0 .../client-side-encryption/auto_encrypter.ts | 0 .../client_encryption.ts | 0 .../crypto_callbacks.ts | 0 .../src/client-side-encryption/errors.ts | 0 .../mongocryptd_manager.ts | 0 .../client-side-encryption/providers/aws.ts | 0 .../client-side-encryption/providers/azure.ts | 0 .../client-side-encryption/providers/gcp.ts | 0 .../client-side-encryption/providers/index.ts | 0 .../client-side-encryption/state_machine.ts | 0 .../mongodb/src/cmap/auth/auth_provider.ts | 0 .../cmap/auth/aws_temporary_credentials.ts | 0 .../mongodb/src/cmap/auth/gssapi.ts | 0 .../src/cmap/auth/mongo_credentials.ts | 0 .../mongodb/src/cmap/auth/mongodb_aws.ts | 0 .../mongodb/src/cmap/auth/mongodb_oidc.ts | 0 .../automated_callback_workflow.ts | 0 .../mongodb_oidc/azure_machine_workflow.ts | 0 .../auth/mongodb_oidc/callback_workflow.ts | 0 .../auth/mongodb_oidc/command_builders.ts | 0 .../auth/mongodb_oidc/gcp_machine_workflow.ts | 0 .../mongodb_oidc/human_callback_workflow.ts | 0 .../auth/mongodb_oidc/machine_workflow.ts | 0 .../src/cmap/auth/mongodb_oidc/token_cache.ts | 0 .../mongodb_oidc/token_machine_workflow.ts | 0 .../mongodb/src/cmap/auth/plain.ts | 0 .../mongodb/src/cmap/auth/providers.ts | 0 .../mongodb/src/cmap/auth/scram.ts | 0 .../mongodb/src/cmap/auth/x509.ts | 0 .../src/cmap/command_monitoring_events.ts | 0 .../node_modules/mongodb/src/cmap/commands.ts | 0 .../node_modules/mongodb/src/cmap/connect.ts | 0 .../mongodb/src/cmap/connection.ts | 0 .../mongodb/src/cmap/connection_pool.ts | 0 .../src/cmap/connection_pool_events.ts | 0 .../node_modules/mongodb/src/cmap/errors.ts | 0 .../src/cmap/handshake/client_metadata.ts | 0 .../node_modules/mongodb/src/cmap/metrics.ts | 0 .../mongodb/src/cmap/stream_description.ts | 0 .../src/cmap/wire_protocol/compression.ts | 0 .../src/cmap/wire_protocol/constants.ts | 0 .../mongodb/src/cmap/wire_protocol/on_data.ts | 0 .../cmap/wire_protocol/on_demand/document.ts | 0 .../src/cmap/wire_protocol/responses.ts | 0 .../mongodb/src/cmap/wire_protocol/shared.ts | 0 .../node_modules/mongodb/src/collection.ts | 0 .../mongodb/src/connection_string.ts | 0 .../node_modules/mongodb/src/constants.ts | 0 .../mongodb/src/cursor/abstract_cursor.ts | 0 .../mongodb/src/cursor/aggregation_cursor.ts | 0 .../src/cursor/change_stream_cursor.ts | 0 .../src/cursor/client_bulk_write_cursor.ts | 0 .../mongodb/src/cursor/find_cursor.ts | 0 .../src/cursor/list_collections_cursor.ts | 0 .../mongodb/src/cursor/list_indexes_cursor.ts | 0 .../src/cursor/list_search_indexes_cursor.ts | 0 .../mongodb/src/cursor/run_command_cursor.ts | 0 .../node_modules/mongodb/src/db.ts | 0 .../node_modules/mongodb/src/deps.ts | 0 .../node_modules/mongodb/src/encrypter.ts | 0 .../node_modules/mongodb/src/error.ts | 0 .../node_modules/mongodb/src/explain.ts | 0 .../mongodb/src/gridfs/download.ts | 0 .../node_modules/mongodb/src/gridfs/index.ts | 0 .../node_modules/mongodb/src/gridfs/upload.ts | 0 .../node_modules/mongodb/src/index.ts | 0 .../node_modules/mongodb/src/mongo_client.ts | 0 .../src/mongo_client_auth_providers.ts | 0 .../node_modules/mongodb/src/mongo_logger.ts | 0 .../node_modules/mongodb/src/mongo_types.ts | 0 .../mongodb/src/operations/aggregate.ts | 0 .../mongodb/src/operations/bulk_write.ts | 0 .../client_bulk_write/client_bulk_write.ts | 0 .../client_bulk_write/command_builder.ts | 0 .../operations/client_bulk_write/common.ts | 0 .../operations/client_bulk_write/executor.ts | 0 .../client_bulk_write/results_merger.ts | 0 .../mongodb/src/operations/collections.ts | 0 .../mongodb/src/operations/command.ts | 0 .../mongodb/src/operations/count.ts | 0 .../src/operations/create_collection.ts | 0 .../mongodb/src/operations/delete.ts | 0 .../mongodb/src/operations/distinct.ts | 0 .../mongodb/src/operations/drop.ts | 0 .../operations/estimated_document_count.ts | 0 .../src/operations/execute_operation.ts | 0 .../mongodb/src/operations/find.ts | 0 .../mongodb/src/operations/find_and_modify.ts | 0 .../mongodb/src/operations/get_more.ts | 0 .../mongodb/src/operations/indexes.ts | 0 .../mongodb/src/operations/insert.ts | 0 .../mongodb/src/operations/is_capped.ts | 0 .../mongodb/src/operations/kill_cursors.ts | 0 .../src/operations/list_collections.ts | 0 .../mongodb/src/operations/list_databases.ts | 0 .../mongodb/src/operations/operation.ts | 0 .../src/operations/options_operation.ts | 0 .../mongodb/src/operations/profiling_level.ts | 0 .../mongodb/src/operations/remove_user.ts | 0 .../mongodb/src/operations/rename.ts | 0 .../mongodb/src/operations/run_command.ts | 0 .../src/operations/search_indexes/create.ts | 0 .../src/operations/search_indexes/drop.ts | 0 .../src/operations/search_indexes/update.ts | 0 .../src/operations/set_profiling_level.ts | 0 .../mongodb/src/operations/stats.ts | 0 .../mongodb/src/operations/update.ts | 0 .../src/operations/validate_collection.ts | 0 .../node_modules/mongodb/src/read_concern.ts | 0 .../mongodb/src/read_preference.ts | 0 .../mongodb/src/resource_management.ts | 0 .../node_modules/mongodb/src/sdam/common.ts | 0 .../node_modules/mongodb/src/sdam/events.ts | 0 .../node_modules/mongodb/src/sdam/monitor.ts | 0 .../node_modules/mongodb/src/sdam/server.ts | 0 .../mongodb/src/sdam/server_description.ts | 0 .../mongodb/src/sdam/server_selection.ts | 0 .../src/sdam/server_selection_events.ts | 0 .../mongodb/src/sdam/srv_polling.ts | 0 .../node_modules/mongodb/src/sdam/topology.ts | 0 .../mongodb/src/sdam/topology_description.ts | 0 .../node_modules/mongodb/src/sessions.ts | 0 .../node_modules/mongodb/src/sort.ts | 0 .../node_modules/mongodb/src/timeout.ts | 0 .../node_modules/mongodb/src/transactions.ts | 0 .../node_modules/mongodb/src/utils.ts | 0 .../node_modules/mongodb/src/write_concern.ts | 0 .../node_modules/mongodb/tsconfig.json | 0 .../node_modules/mongoose/LICENSE.md | 0 .../node_modules/mongoose/README.md | 0 .../node_modules/mongoose/SECURITY.md | 0 .../node_modules/mongoose/browser.js | 0 .../node_modules/mongoose/dist/browser.umd.js | 0 .../node_modules/mongoose/index.js | 0 .../node_modules/mongoose/lib/aggregate.js | 0 .../node_modules/mongoose/lib/browser.js | 0 .../mongoose/lib/browserDocument.js | 0 .../node_modules/mongoose/lib/cast.js | 0 .../node_modules/mongoose/lib/cast/bigint.js | 0 .../node_modules/mongoose/lib/cast/boolean.js | 0 .../node_modules/mongoose/lib/cast/date.js | 0 .../mongoose/lib/cast/decimal128.js | 0 .../node_modules/mongoose/lib/cast/number.js | 0 .../mongoose/lib/cast/objectid.js | 0 .../node_modules/mongoose/lib/cast/string.js | 0 .../node_modules/mongoose/lib/collection.js | 0 .../node_modules/mongoose/lib/connection.js | 0 .../mongoose/lib/connectionState.js | 0 .../node_modules/mongoose/lib/constants.js | 0 .../mongoose/lib/cursor/aggregationCursor.js | 0 .../mongoose/lib/cursor/changeStream.js | 0 .../mongoose/lib/cursor/queryCursor.js | 0 .../node_modules/mongoose/lib/document.js | 0 .../mongoose/lib/documentProvider.js | 0 .../node_modules/mongoose/lib/driver.js | 0 .../node_modules/mongoose/lib/drivers/SPEC.md | 0 .../mongoose/lib/drivers/browser/binary.js | 0 .../lib/drivers/browser/decimal128.js | 0 .../mongoose/lib/drivers/browser/index.js | 0 .../mongoose/lib/drivers/browser/objectid.js | 0 .../drivers/node-mongodb-native/collection.js | 0 .../drivers/node-mongodb-native/connection.js | 0 .../lib/drivers/node-mongodb-native/index.js | 0 .../lib/error/browserMissingSchema.js | 0 .../lib/error/bulkSaveIncompleteError.js | 0 .../mongoose/lib/error/bulkWriteError.js | 0 .../node_modules/mongoose/lib/error/cast.js | 0 .../lib/error/createCollectionsError.js | 0 .../mongoose/lib/error/divergentArray.js | 0 .../mongoose/lib/error/eachAsyncMultiError.js | 0 .../node_modules/mongoose/lib/error/index.js | 0 .../mongoose/lib/error/invalidSchemaOption.js | 0 .../mongoose/lib/error/messages.js | 0 .../mongoose/lib/error/missingSchema.js | 0 .../mongoose/lib/error/mongooseError.js | 0 .../mongoose/lib/error/notFound.js | 0 .../mongoose/lib/error/objectExpected.js | 0 .../mongoose/lib/error/objectParameter.js | 0 .../mongoose/lib/error/overwriteModel.js | 0 .../mongoose/lib/error/parallelSave.js | 0 .../mongoose/lib/error/parallelValidate.js | 0 .../mongoose/lib/error/serverSelection.js | 0 .../mongoose/lib/error/setOptionError.js | 0 .../node_modules/mongoose/lib/error/strict.js | 0 .../mongoose/lib/error/strictPopulate.js | 0 .../mongoose/lib/error/syncIndexes.js | 0 .../mongoose/lib/error/validation.js | 0 .../mongoose/lib/error/validator.js | 0 .../mongoose/lib/error/version.js | 0 .../aggregate/prepareDiscriminatorPipeline.js | 0 .../aggregate/stringifyFunctionOperators.js | 0 .../mongoose/lib/helpers/arrayDepth.js | 0 .../mongoose/lib/helpers/clone.js | 0 .../mongoose/lib/helpers/common.js | 0 .../mongoose/lib/helpers/cursor/eachAsync.js | 0 .../applyEmbeddedDiscriminators.js | 0 .../areDiscriminatorValuesEqual.js | 0 ...checkEmbeddedDiscriminatorKeyProjection.js | 0 .../helpers/discriminator/getConstructor.js | 0 .../discriminator/getDiscriminatorByValue.js | 0 .../getSchemaDiscriminatorByValue.js | 0 .../discriminator/mergeDiscriminatorSchema.js | 0 .../lib/helpers/document/applyDefaults.js | 0 .../lib/helpers/document/applyTimestamps.js | 0 .../lib/helpers/document/applyVirtuals.js | 0 .../helpers/document/cleanModifiedSubpaths.js | 0 .../mongoose/lib/helpers/document/compile.js | 0 .../document/getDeepestSubdocumentForPath.js | 0 .../document/getEmbeddedDiscriminatorPath.js | 0 .../lib/helpers/document/handleSpreadDoc.js | 0 .../node_modules/mongoose/lib/helpers/each.js | 0 .../lib/helpers/error/combinePathErrors.js | 0 .../mongoose/lib/helpers/firstKey.js | 0 .../node_modules/mongoose/lib/helpers/get.js | 0 .../lib/helpers/getConstructorName.js | 0 .../lib/helpers/getDefaultBulkwriteResult.js | 0 .../mongoose/lib/helpers/getFunctionName.js | 0 .../mongoose/lib/helpers/immediate.js | 0 .../helpers/indexes/applySchemaCollation.js | 0 .../decorateDiscriminatorIndexOptions.js | 0 .../lib/helpers/indexes/getRelatedIndexes.js | 0 .../lib/helpers/indexes/isDefaultIdIndex.js | 0 .../lib/helpers/indexes/isIndexEqual.js | 0 .../lib/helpers/indexes/isTextIndex.js | 0 .../lib/helpers/indexes/isTimeseriesIndex.js | 0 .../mongoose/lib/helpers/isAsyncFunction.js | 0 .../mongoose/lib/helpers/isBsonType.js | 0 .../mongoose/lib/helpers/isMongooseObject.js | 0 .../mongoose/lib/helpers/isObject.js | 0 .../mongoose/lib/helpers/isPOJO.js | 0 .../mongoose/lib/helpers/isPromise.js | 0 .../mongoose/lib/helpers/isSimpleValidator.js | 0 .../mongoose/lib/helpers/minimize.js | 0 .../lib/helpers/model/applyDefaultsToPOJO.js | 0 .../mongoose/lib/helpers/model/applyHooks.js | 0 .../lib/helpers/model/applyMethods.js | 0 .../lib/helpers/model/applyStaticHooks.js | 0 .../lib/helpers/model/applyStatics.js | 0 .../lib/helpers/model/castBulkWrite.js | 0 .../lib/helpers/model/discriminator.js | 0 .../lib/helpers/model/pushNestedArrayPaths.js | 0 .../mongoose/lib/helpers/omitUndefined.js | 0 .../node_modules/mongoose/lib/helpers/once.js | 0 .../mongoose/lib/helpers/parallelLimit.js | 0 .../mongoose/lib/helpers/path/parentPaths.js | 0 .../lib/helpers/path/setDottedPath.js | 0 .../mongoose/lib/helpers/pluralize.js | 0 .../populate/assignRawDocsToIdStructure.js | 0 .../lib/helpers/populate/assignVals.js | 0 .../populate/createPopulateQueryFilter.js | 0 .../populate/getModelsMapForPopulate.js | 0 .../lib/helpers/populate/getSchemaTypes.js | 0 .../lib/helpers/populate/getVirtual.js | 0 .../lib/helpers/populate/leanPopulateMap.js | 0 .../lib/helpers/populate/lookupLocalFields.js | 0 .../populate/markArraySubdocsPopulated.js | 0 .../helpers/populate/modelNamesFromRefPath.js | 0 .../populate/removeDeselectedForeignField.js | 0 .../populate/setPopulatedVirtualValue.js | 0 .../lib/helpers/populate/skipPopulateValue.js | 0 .../lib/helpers/populate/validateRef.js | 0 .../mongoose/lib/helpers/printJestWarning.js | 0 .../lib/helpers/processConnectionOptions.js | 0 .../lib/helpers/projection/applyProjection.js | 0 .../helpers/projection/hasIncludedChildren.js | 0 .../projection/isDefiningProjection.js | 0 .../lib/helpers/projection/isExclusive.js | 0 .../lib/helpers/projection/isInclusive.js | 0 .../helpers/projection/isNestedProjection.js | 0 .../lib/helpers/projection/isPathExcluded.js | 0 .../projection/isPathSelectedInclusive.js | 0 .../lib/helpers/projection/isSubpath.js | 0 .../lib/helpers/projection/parseProjection.js | 0 .../mongoose/lib/helpers/promiseOrCallback.js | 0 .../lib/helpers/query/applyGlobalOption.js | 0 .../mongoose/lib/helpers/query/cast$expr.js | 0 .../lib/helpers/query/castFilterPath.js | 0 .../mongoose/lib/helpers/query/castUpdate.js | 0 .../query/getEmbeddedDiscriminatorPath.js | 0 .../lib/helpers/query/handleImmutable.js | 0 .../query/handleReadPreferenceAliases.js | 0 .../lib/helpers/query/hasDollarKeys.js | 0 .../mongoose/lib/helpers/query/isOperator.js | 0 .../lib/helpers/query/sanitizeFilter.js | 0 .../lib/helpers/query/sanitizeProjection.js | 0 .../helpers/query/selectPopulatedFields.js | 0 .../mongoose/lib/helpers/query/trusted.js | 0 .../mongoose/lib/helpers/query/validOps.js | 0 .../mongoose/lib/helpers/schema/addAutoId.js | 0 .../lib/helpers/schema/applyBuiltinPlugins.js | 0 .../lib/helpers/schema/applyPlugins.js | 0 .../lib/helpers/schema/applyReadConcern.js | 0 .../lib/helpers/schema/applyWriteConcern.js | 0 .../schema/cleanPositionalOperators.js | 0 .../mongoose/lib/helpers/schema/getIndexes.js | 0 .../helpers/schema/getKeysInSchemaOrder.js | 0 .../mongoose/lib/helpers/schema/getPath.js | 0 .../schema/getSubdocumentStrictValue.js | 0 .../lib/helpers/schema/handleIdOption.js | 0 .../helpers/schema/handleTimestampOption.js | 0 .../mongoose/lib/helpers/schema/idGetter.js | 0 .../mongoose/lib/helpers/schema/merge.js | 0 .../lib/helpers/schematype/handleImmutable.js | 0 .../lib/helpers/setDefaultsOnInsert.js | 0 .../mongoose/lib/helpers/specialProperties.js | 0 .../mongoose/lib/helpers/symbols.js | 0 .../mongoose/lib/helpers/timers.js | 0 .../timestamps/setDocumentTimestamps.js | 0 .../lib/helpers/timestamps/setupTimestamps.js | 0 .../lib/helpers/topology/allServersUnknown.js | 0 .../mongoose/lib/helpers/topology/isAtlas.js | 0 .../lib/helpers/topology/isSSLError.js | 0 .../update/applyTimestampsToChildren.js | 0 .../helpers/update/applyTimestampsToUpdate.js | 0 .../lib/helpers/update/castArrayFilters.js | 0 .../update/decorateUpdateWithVersionKey.js | 0 .../lib/helpers/update/modifiedPaths.js | 0 .../helpers/update/moveImmutableProperties.js | 0 .../update/removeUnusedArrayFilters.js | 0 .../update/updatedPathsByArrayFilter.js | 0 .../mongoose/lib/helpers/updateValidators.js | 0 .../node_modules/mongoose/lib/index.js | 0 .../node_modules/mongoose/lib/internal.js | 0 .../node_modules/mongoose/lib/model.js | 0 .../mongoose/lib/modifiedPathsSnapshot.js | 0 .../node_modules/mongoose/lib/mongoose.js | 0 .../node_modules/mongoose/lib/options.js | 0 .../mongoose/lib/options/populateOptions.js | 0 .../mongoose/lib/options/propertyOptions.js | 0 .../mongoose/lib/options/saveOptions.js | 0 .../lib/options/schemaArrayOptions.js | 0 .../lib/options/schemaBufferOptions.js | 0 .../mongoose/lib/options/schemaDateOptions.js | 0 .../lib/options/schemaDocumentArrayOptions.js | 0 .../mongoose/lib/options/schemaMapOptions.js | 0 .../lib/options/schemaNumberOptions.js | 0 .../lib/options/schemaObjectIdOptions.js | 0 .../lib/options/schemaStringOptions.js | 0 .../lib/options/schemaSubdocumentOptions.js | 0 .../mongoose/lib/options/schemaTypeOptions.js | 0 .../mongoose/lib/options/virtualOptions.js | 0 .../mongoose/lib/plugins/index.js | 0 .../mongoose/lib/plugins/saveSubdocs.js | 0 .../mongoose/lib/plugins/sharding.js | 0 .../mongoose/lib/plugins/trackTransaction.js | 0 .../lib/plugins/validateBeforeSave.js | 0 .../node_modules/mongoose/lib/query.js | 0 .../node_modules/mongoose/lib/queryHelpers.js | 0 .../node_modules/mongoose/lib/schema.js | 0 .../node_modules/mongoose/lib/schema/array.js | 0 .../mongoose/lib/schema/bigint.js | 0 .../mongoose/lib/schema/boolean.js | 0 .../mongoose/lib/schema/buffer.js | 0 .../node_modules/mongoose/lib/schema/date.js | 0 .../mongoose/lib/schema/decimal128.js | 0 .../mongoose/lib/schema/documentArray.js | 0 .../lib/schema/documentArrayElement.js | 0 .../node_modules/mongoose/lib/schema/index.js | 0 .../node_modules/mongoose/lib/schema/map.js | 0 .../node_modules/mongoose/lib/schema/mixed.js | 0 .../mongoose/lib/schema/number.js | 0 .../mongoose/lib/schema/objectId.js | 0 .../mongoose/lib/schema/operators/bitwise.js | 0 .../mongoose/lib/schema/operators/exists.js | 0 .../lib/schema/operators/geospatial.js | 0 .../mongoose/lib/schema/operators/helpers.js | 0 .../mongoose/lib/schema/operators/text.js | 0 .../mongoose/lib/schema/operators/type.js | 0 .../mongoose/lib/schema/string.js | 0 .../mongoose/lib/schema/subdocument.js | 0 .../mongoose/lib/schema/symbols.js | 0 .../node_modules/mongoose/lib/schema/uuid.js | 0 .../node_modules/mongoose/lib/schemaType.js | 0 .../node_modules/mongoose/lib/stateMachine.js | 0 .../mongoose/lib/types/array/index.js | 0 .../lib/types/array/isMongooseArray.js | 0 .../mongoose/lib/types/array/methods/index.js | 0 .../mongoose/lib/types/arraySubdocument.js | 0 .../node_modules/mongoose/lib/types/buffer.js | 0 .../mongoose/lib/types/decimal128.js | 0 .../mongoose/lib/types/documentArray/index.js | 0 .../documentArray/isMongooseDocumentArray.js | 0 .../lib/types/documentArray/methods/index.js | 0 .../node_modules/mongoose/lib/types/index.js | 0 .../node_modules/mongoose/lib/types/map.js | 0 .../mongoose/lib/types/objectid.js | 0 .../mongoose/lib/types/subdocument.js | 0 .../node_modules/mongoose/lib/types/uuid.js | 0 .../node_modules/mongoose/lib/utils.js | 0 .../node_modules/mongoose/lib/validOptions.js | 0 .../node_modules/mongoose/lib/virtualType.js | 0 .../mongoose/node_modules/ms/index.js | 0 .../mongoose/node_modules/ms/license.md | 0 .../mongoose/node_modules/ms/package.json | 0 .../mongoose/node_modules/ms/readme.md | 0 .../node_modules/mongoose/package.json | 0 .../mongoose/types/aggregate.d.ts | 0 .../mongoose/types/augmentations.d.ts | 0 .../node_modules/mongoose/types/callback.d.ts | 0 .../mongoose/types/collection.d.ts | 0 .../mongoose/types/connection.d.ts | 0 .../node_modules/mongoose/types/cursor.d.ts | 0 .../node_modules/mongoose/types/document.d.ts | 0 .../node_modules/mongoose/types/error.d.ts | 0 .../mongoose/types/expressions.d.ts | 0 .../node_modules/mongoose/types/helpers.d.ts | 0 .../node_modules/mongoose/types/index.d.ts | 0 .../node_modules/mongoose/types/indexes.d.ts | 0 .../mongoose/types/inferrawdoctype.d.ts | 0 .../mongoose/types/inferschematype.d.ts | 0 .../mongoose/types/middlewares.d.ts | 0 .../node_modules/mongoose/types/models.d.ts | 0 .../mongoose/types/mongooseoptions.d.ts | 0 .../mongoose/types/pipelinestage.d.ts | 0 .../node_modules/mongoose/types/populate.d.ts | 0 .../node_modules/mongoose/types/query.d.ts | 0 .../mongoose/types/schemaoptions.d.ts | 0 .../mongoose/types/schematypes.d.ts | 0 .../node_modules/mongoose/types/session.d.ts | 0 .../node_modules/mongoose/types/types.d.ts | 0 .../node_modules/mongoose/types/utility.d.ts | 0 .../mongoose/types/validation.d.ts | 0 .../node_modules/mongoose/types/virtuals.d.ts | 0 .../node_modules/mpath/.travis.yml | 0 .../node_modules/mpath/History.md | 0 .../node_modules/mpath/LICENSE | 0 .../node_modules/mpath/README.md | 0 .../node_modules/mpath/SECURITY.md | 0 .../node_modules/mpath/index.js | 0 .../node_modules/mpath/lib/index.js | 0 .../node_modules/mpath/lib/stringToParts.js | 0 .../node_modules/mpath/package.json | 0 .../node_modules/mpath/test/.eslintrc.yml | 0 .../node_modules/mpath/test/index.js | 0 .../node_modules/mpath/test/stringToParts.js | 0 .../mquery/.github/ISSUE_TEMPLATE.md | 0 .../mquery/.github/PULL_REQUEST_TEMPLATE.md | 0 .../node_modules/mquery/History.md | 0 .../node_modules/mquery/LICENSE | 0 .../node_modules/mquery/README.md | 0 .../node_modules/mquery/SECURITY.md | 0 .../mquery/lib/collection/collection.js | 0 .../mquery/lib/collection/index.js | 0 .../mquery/lib/collection/node.js | 0 .../node_modules/mquery/lib/env.js | 0 .../node_modules/mquery/lib/mquery.js | 0 .../node_modules/mquery/lib/permissions.js | 0 .../node_modules/mquery/lib/utils.js | 0 .../mquery/node_modules/debug/LICENSE | 0 .../mquery/node_modules/debug/README.md | 0 .../mquery/node_modules/debug/package.json | 0 .../mquery/node_modules/debug/src/browser.js | 0 .../mquery/node_modules/debug/src/common.js | 0 .../mquery/node_modules/debug/src/index.js | 0 .../mquery/node_modules/debug/src/node.js | 0 .../mquery/node_modules/ms/index.js | 0 .../mquery/node_modules/ms/license.md | 0 .../mquery/node_modules/ms/package.json | 0 .../mquery/node_modules/ms/readme.md | 0 .../node_modules/mquery/package.json | 0 .../node_modules/ms/index.js | 0 .../node_modules/ms/license.md | 0 .../node_modules/ms/package.json | 0 .../node_modules/ms/readme.md | 0 node_backend/node_modules/multer/LICENSE | 17 + node_backend/node_modules/multer/README.md | 333 ++++++ node_backend/node_modules/multer/index.js | 104 ++ .../node_modules/multer/lib/counter.js | 28 + .../node_modules/multer/lib/file-appender.js | 67 ++ .../multer/lib/make-middleware.js | 173 +++ .../node_modules/multer/lib/multer-error.js | 24 + .../multer/lib/remove-uploaded-files.js | 28 + .../multer/node_modules/.bin/mkdirp | 12 + .../multer/node_modules/.bin/mkdirp.cmd | 17 + .../multer/node_modules/.bin/mkdirp.ps1 | 28 + .../multer/node_modules/mkdirp/LICENSE | 21 + .../multer/node_modules/mkdirp/bin/cmd.js | 33 + .../multer/node_modules/mkdirp/bin/usage.txt | 12 + .../multer/node_modules/mkdirp/index.js | 102 ++ .../multer/node_modules/mkdirp/package.json | 33 + .../node_modules/mkdirp/readme.markdown | 100 ++ node_backend/node_modules/multer/package.json | 52 + .../node_modules/multer/storage/disk.js | 66 ++ .../node_modules/multer/storage/memory.js | 21 + .../node_modules/negotiator/HISTORY.md | 0 .../node_modules/negotiator/LICENSE | 0 .../node_modules/negotiator/README.md | 0 .../node_modules/negotiator/index.js | 0 .../node_modules/negotiator/lib/charset.js | 0 .../node_modules/negotiator/lib/encoding.js | 0 .../node_modules/negotiator/lib/language.js | 0 .../node_modules/negotiator/lib/mediaType.js | 0 .../node_modules/negotiator/package.json | 0 .../node_modules/node-addon-api/LICENSE.md | 0 .../node_modules/node-addon-api/README.md | 0 .../node_modules/node-addon-api/common.gypi | 0 .../node_modules/node-addon-api/except.gypi | 0 .../node_modules/node-addon-api/index.js | 0 .../node-addon-api/napi-inl.deprecated.h | 0 .../node_modules/node-addon-api/napi-inl.h | 0 .../node_modules/node-addon-api/napi.h | 0 .../node_modules/node-addon-api/node_api.gyp | 0 .../node_modules/node-addon-api/noexcept.gypi | 0 .../node_modules/node-addon-api/nothing.c | 0 .../node-addon-api/package-support.json | 0 .../node_modules/node-addon-api/package.json | 0 .../node-addon-api/tools/README.md | 0 .../node-addon-api/tools/check-napi.js | 0 .../node-addon-api/tools/clang-format.js | 0 .../node-addon-api/tools/conversion.js | 0 .../node-addon-api/tools/eslint-format.js | 0 .../node_modules/node-fetch/LICENSE.md | 0 .../node_modules/node-fetch/README.md | 0 .../node_modules/node-fetch/browser.js | 0 .../node_modules/node-fetch/lib/index.es.js | 0 .../node_modules/node-fetch/lib/index.js | 0 .../node_modules/node-fetch/lib/index.mjs | 0 .../node-fetch/node_modules/tr46/.npmignore | 0 .../node-fetch/node_modules/tr46/index.js | 0 .../node-fetch/node_modules/tr46/lib/.gitkeep | 0 .../node_modules/tr46/lib/mappingTable.json | 0 .../node-fetch/node_modules/tr46/package.json | 0 .../webidl-conversions/LICENSE.md | 0 .../node_modules/webidl-conversions/README.md | 0 .../webidl-conversions/lib/index.js | 0 .../webidl-conversions/package.json | 0 .../node_modules/whatwg-url/LICENSE.txt | 0 .../node_modules/whatwg-url/README.md | 0 .../node_modules/whatwg-url/lib/URL-impl.js | 0 .../node_modules/whatwg-url/lib/URL.js | 0 .../node_modules/whatwg-url/lib/public-api.js | 0 .../whatwg-url/lib/url-state-machine.js | 0 .../node_modules/whatwg-url/lib/utils.js | 0 .../node_modules/whatwg-url/package.json | 0 .../node_modules/node-fetch/package.json | 0 .../node_modules/nopt/CHANGELOG.md | 0 .../node_modules/nopt/LICENSE | 0 .../node_modules/nopt/README.md | 0 .../node_modules/nopt/bin/nopt.js | 0 .../node_modules/nopt/lib/nopt.js | 0 .../node_modules/nopt/package.json | 0 .../node_modules/npmlog/LICENSE | 0 .../node_modules/npmlog/README.md | 0 .../node_modules/npmlog/log.js | 0 .../node_modules/npmlog/package.json | 0 .../node_modules/object-assign/index.js | 0 .../node_modules/object-assign/license | 0 .../node_modules/object-assign/package.json | 0 .../node_modules/object-assign/readme.md | 0 .../node_modules/object-inspect/.eslintrc | 0 .../object-inspect/.github/FUNDING.yml | 0 .../node_modules/object-inspect/.nycrc | 0 .../node_modules/object-inspect/CHANGELOG.md | 0 .../node_modules/object-inspect/LICENSE | 0 .../object-inspect/example/all.js | 0 .../object-inspect/example/circular.js | 0 .../node_modules/object-inspect/example/fn.js | 0 .../object-inspect/example/inspect.js | 0 .../node_modules/object-inspect/index.js | 0 .../object-inspect/package-support.json | 0 .../node_modules/object-inspect/package.json | 0 .../object-inspect/readme.markdown | 0 .../object-inspect/test-core-js.js | 0 .../object-inspect/test/bigint.js | 0 .../object-inspect/test/browser/dom.js | 0 .../object-inspect/test/circular.js | 0 .../node_modules/object-inspect/test/deep.js | 0 .../object-inspect/test/element.js | 0 .../node_modules/object-inspect/test/err.js | 0 .../node_modules/object-inspect/test/fakes.js | 0 .../node_modules/object-inspect/test/fn.js | 0 .../object-inspect/test/global.js | 0 .../node_modules/object-inspect/test/has.js | 0 .../node_modules/object-inspect/test/holes.js | 0 .../object-inspect/test/indent-option.js | 0 .../object-inspect/test/inspect.js | 0 .../object-inspect/test/lowbyte.js | 0 .../object-inspect/test/number.js | 0 .../object-inspect/test/quoteStyle.js | 0 .../object-inspect/test/toStringTag.js | 0 .../node_modules/object-inspect/test/undef.js | 0 .../object-inspect/test/values.js | 0 .../object-inspect/util.inspect.js | 0 .../node_modules/on-finished/HISTORY.md | 0 .../node_modules/on-finished/LICENSE | 0 .../node_modules/on-finished/README.md | 0 .../node_modules/on-finished/index.js | 0 .../node_modules/on-finished/package.json | 0 .../node_modules/once/LICENSE | 0 .../node_modules/once/README.md | 0 .../node_modules/once/once.js | 0 .../node_modules/once/package.json | 0 .../node_modules/parseurl/HISTORY.md | 0 .../node_modules/parseurl/LICENSE | 0 .../node_modules/parseurl/README.md | 0 .../node_modules/parseurl/index.js | 0 .../node_modules/parseurl/package.json | 0 .../node_modules/path-is-absolute/index.js | 0 .../node_modules/path-is-absolute/license | 0 .../path-is-absolute/package.json | 0 .../node_modules/path-is-absolute/readme.md | 0 .../node_modules/path-to-regexp/LICENSE | 0 .../node_modules/path-to-regexp/Readme.md | 0 .../node_modules/path-to-regexp/index.js | 0 .../node_modules/path-to-regexp/package.json | 0 .../process-nextick-args/index.js | 45 + .../process-nextick-args/license.md | 19 + .../process-nextick-args/package.json | 25 + .../process-nextick-args/readme.md | 18 + .../node_modules/proxy-addr/HISTORY.md | 0 .../node_modules/proxy-addr/LICENSE | 0 .../node_modules/proxy-addr/README.md | 0 .../node_modules/proxy-addr/index.js | 0 .../node_modules/proxy-addr/package.json | 0 .../node_modules/punycode/LICENSE-MIT.txt | 0 .../node_modules/punycode/README.md | 0 .../node_modules/punycode/package.json | 0 .../node_modules/punycode/punycode.es6.js | 0 .../node_modules/punycode/punycode.js | 0 .../node_modules/qs/.editorconfig | 0 .../node_modules/qs/.eslintrc | 0 .../node_modules/qs/.github/FUNDING.yml | 0 .../node_modules/qs/.nycrc | 0 .../node_modules/qs/CHANGELOG.md | 0 .../node_modules/qs/LICENSE.md | 0 .../node_modules/qs/README.md | 0 .../node_modules/qs/dist/qs.js | 0 .../node_modules/qs/lib/formats.js | 0 .../node_modules/qs/lib/index.js | 0 .../node_modules/qs/lib/parse.js | 0 .../node_modules/qs/lib/stringify.js | 0 .../node_modules/qs/lib/utils.js | 0 .../node_modules/qs/package.json | 0 .../node_modules/qs/test/empty-keys-cases.js | 0 .../node_modules/qs/test/parse.js | 0 .../node_modules/qs/test/stringify.js | 0 .../node_modules/qs/test/utils.js | 0 .../node_modules/range-parser/HISTORY.md | 0 .../node_modules/range-parser/LICENSE | 0 .../node_modules/range-parser/README.md | 0 .../node_modules/range-parser/index.js | 0 .../node_modules/range-parser/package.json | 0 .../node_modules/raw-body/HISTORY.md | 0 .../node_modules/raw-body/LICENSE | 0 .../node_modules/raw-body/README.md | 0 .../node_modules/raw-body/SECURITY.md | 0 .../node_modules/raw-body/index.d.ts | 0 .../node_modules/raw-body/index.js | 0 .../node_modules/raw-body/package.json | 0 .../readable-stream/CONTRIBUTING.md | 38 + .../readable-stream/GOVERNANCE.md | 136 +++ .../node_modules/readable-stream/LICENSE | 47 + .../node_modules/readable-stream/README.md | 0 .../readable-stream/errors-browser.js | 0 .../node_modules/readable-stream/errors.js | 0 .../readable-stream/experimentalWarning.js | 0 .../readable-stream/lib/_stream_duplex.js | 0 .../lib/_stream_passthrough.js | 0 .../readable-stream/lib/_stream_readable.js | 0 .../readable-stream/lib/_stream_transform.js | 0 .../readable-stream/lib/_stream_writable.js | 0 .../lib/internal/streams/async_iterator.js | 0 .../lib/internal/streams/buffer_list.js | 0 .../lib/internal/streams/destroy.js | 0 .../lib/internal/streams/end-of-stream.js | 0 .../lib/internal/streams/from-browser.js | 0 .../lib/internal/streams/from.js | 0 .../lib/internal/streams/pipeline.js | 0 .../lib/internal/streams/state.js | 0 .../lib/internal/streams/stream-browser.js | 1 + .../lib/internal/streams/stream.js | 1 + .../node_modules/readable-stream/package.json | 0 .../readable-stream/readable-browser.js | 0 .../node_modules/readable-stream/readable.js | 0 .../node_modules/rimraf/CHANGELOG.md | 0 .../node_modules/rimraf/LICENSE | 0 .../node_modules/rimraf/README.md | 0 .../node_modules/rimraf/bin.js | 0 .../node_modules/rimraf/package.json | 0 .../node_modules/rimraf/rimraf.js | 0 node_backend/node_modules/safe-buffer/LICENSE | 21 + .../node_modules/safe-buffer/README.md | 584 +++++++++ .../node_modules/safe-buffer/index.d.ts | 187 +++ .../node_modules/safe-buffer/index.js | 0 .../node_modules/safe-buffer/package.json | 0 .../node_modules/safer-buffer/LICENSE | 0 .../safer-buffer/Porting-Buffer.md | 0 .../node_modules/safer-buffer/Readme.md | 0 .../node_modules/safer-buffer/dangerous.js | 0 .../node_modules/safer-buffer/package.json | 0 .../node_modules/safer-buffer/safer.js | 0 .../node_modules/safer-buffer/tests.js | 0 .../node_modules/semver/LICENSE | 0 .../node_modules/semver/README.md | 0 .../node_modules/semver/bin/semver.js | 0 .../node_modules/semver/classes/comparator.js | 0 .../node_modules/semver/classes/index.js | 0 .../node_modules/semver/classes/range.js | 0 .../node_modules/semver/classes/semver.js | 0 .../node_modules/semver/functions/clean.js | 0 .../node_modules/semver/functions/cmp.js | 0 .../node_modules/semver/functions/coerce.js | 0 .../semver/functions/compare-build.js | 0 .../semver/functions/compare-loose.js | 0 .../node_modules/semver/functions/compare.js | 0 .../node_modules/semver/functions/diff.js | 0 .../node_modules/semver/functions/eq.js | 0 .../node_modules/semver/functions/gt.js | 0 .../node_modules/semver/functions/gte.js | 0 .../node_modules/semver/functions/inc.js | 0 .../node_modules/semver/functions/lt.js | 0 .../node_modules/semver/functions/lte.js | 0 .../node_modules/semver/functions/major.js | 0 .../node_modules/semver/functions/minor.js | 0 .../node_modules/semver/functions/neq.js | 0 .../node_modules/semver/functions/parse.js | 0 .../node_modules/semver/functions/patch.js | 0 .../semver/functions/prerelease.js | 0 .../node_modules/semver/functions/rcompare.js | 0 .../node_modules/semver/functions/rsort.js | 0 .../semver/functions/satisfies.js | 0 .../node_modules/semver/functions/sort.js | 0 .../node_modules/semver/functions/valid.js | 0 .../node_modules/semver/index.js | 0 .../node_modules/semver/internal/constants.js | 0 .../node_modules/semver/internal/debug.js | 0 .../semver/internal/identifiers.js | 0 .../node_modules/semver/internal/lrucache.js | 0 .../semver/internal/parse-options.js | 0 .../node_modules/semver/internal/re.js | 0 .../node_modules/semver/package.json | 0 .../node_modules/semver/preload.js | 0 .../node_modules/semver/range.bnf | 0 .../node_modules/semver/ranges/gtr.js | 0 .../node_modules/semver/ranges/intersects.js | 0 .../node_modules/semver/ranges/ltr.js | 0 .../semver/ranges/max-satisfying.js | 0 .../semver/ranges/min-satisfying.js | 0 .../node_modules/semver/ranges/min-version.js | 0 .../node_modules/semver/ranges/outside.js | 0 .../node_modules/semver/ranges/simplify.js | 0 .../node_modules/semver/ranges/subset.js | 0 .../semver/ranges/to-comparators.js | 0 .../node_modules/semver/ranges/valid.js | 0 .../node_modules/send/HISTORY.md | 0 .../node_modules/send/LICENSE | 0 .../node_modules/send/README.md | 0 .../node_modules/send/SECURITY.md | 0 .../node_modules/send/index.js | 0 .../send/node_modules/encodeurl/HISTORY.md | 0 .../send/node_modules/encodeurl/LICENSE | 0 .../send/node_modules/encodeurl/README.md | 0 .../send/node_modules/encodeurl/index.js | 0 .../send/node_modules/encodeurl/package.json | 0 .../send/node_modules/ms/index.js | 0 .../send/node_modules/ms/license.md | 0 .../send/node_modules/ms/package.json | 0 .../send/node_modules/ms/readme.md | 0 .../node_modules/send/package.json | 0 .../node_modules/serve-static/HISTORY.md | 0 .../node_modules/serve-static/LICENSE | 0 .../node_modules/serve-static/README.md | 0 .../node_modules/serve-static/index.js | 0 .../node_modules/serve-static/package.json | 0 .../node_modules/set-blocking/CHANGELOG.md | 0 .../node_modules/set-blocking/LICENSE.txt | 0 .../node_modules/set-blocking/README.md | 0 .../node_modules/set-blocking/index.js | 0 .../node_modules/set-blocking/package.json | 0 .../set-function-length/.eslintrc | 0 .../set-function-length/.github/FUNDING.yml | 0 .../node_modules/set-function-length/.nycrc | 0 .../set-function-length/CHANGELOG.md | 0 .../node_modules/set-function-length/LICENSE | 0 .../set-function-length/README.md | 0 .../node_modules/set-function-length/env.d.ts | 0 .../node_modules/set-function-length/env.js | 0 .../set-function-length/index.d.ts | 0 .../node_modules/set-function-length/index.js | 0 .../set-function-length/package.json | 0 .../set-function-length/tsconfig.json | 0 .../node_modules/setprototypeof/LICENSE | 0 .../node_modules/setprototypeof/README.md | 0 .../node_modules/setprototypeof/index.d.ts | 0 .../node_modules/setprototypeof/index.js | 0 .../node_modules/setprototypeof/package.json | 0 .../node_modules/setprototypeof/test/index.js | 0 .../node_modules/side-channel/.editorconfig | 0 .../node_modules/side-channel/.eslintrc | 0 .../side-channel/.github/FUNDING.yml | 0 .../node_modules/side-channel/.nycrc | 0 .../node_modules/side-channel/CHANGELOG.md | 0 .../node_modules/side-channel/LICENSE | 0 .../node_modules/side-channel/README.md | 0 .../node_modules/side-channel/index.d.ts | 0 .../node_modules/side-channel/index.js | 0 .../node_modules/side-channel/package.json | 0 .../node_modules/side-channel/test/index.js | 0 .../node_modules/side-channel/tsconfig.json | 0 .../node_modules/sift/MIT-LICENSE.txt | 0 .../node_modules/sift/README.md | 0 .../node_modules/sift/es/index.js | 0 .../node_modules/sift/es/index.js.map | 0 .../node_modules/sift/es5m/index.js | 0 .../node_modules/sift/es5m/index.js.map | 0 .../node_modules/sift/index.d.ts | 0 .../node_modules/sift/index.js | 0 .../node_modules/sift/lib/core.d.ts | 0 .../node_modules/sift/lib/index.d.ts | 0 .../node_modules/sift/lib/index.js | 0 .../node_modules/sift/lib/index.js.map | 0 .../node_modules/sift/lib/operations.d.ts | 0 .../node_modules/sift/lib/utils.d.ts | 0 .../node_modules/sift/package.json | 0 .../node_modules/sift/sift.csp.min.js | 0 .../node_modules/sift/sift.csp.min.js.map | 0 .../node_modules/sift/sift.min.js | 0 .../node_modules/sift/sift.min.js.map | 0 .../node_modules/sift/src/core.ts | 0 .../node_modules/sift/src/index.ts | 0 .../node_modules/sift/src/operations.ts | 0 .../node_modules/sift/src/utils.ts | 0 .../node_modules/signal-exit/LICENSE.txt | 0 .../node_modules/signal-exit/README.md | 0 .../node_modules/signal-exit/index.js | 0 .../node_modules/signal-exit/package.json | 0 .../node_modules/signal-exit/signals.js | 0 .../node_modules/sparse-bitfield/.npmignore | 1 + .../node_modules/sparse-bitfield/.travis.yml | 0 .../node_modules/sparse-bitfield/LICENSE | 0 .../node_modules/sparse-bitfield/README.md | 0 .../node_modules/sparse-bitfield/index.js | 0 .../node_modules/sparse-bitfield/package.json | 0 .../node_modules/sparse-bitfield/test.js | 0 .../node_modules/statuses/HISTORY.md | 0 .../node_modules/statuses/LICENSE | 0 .../node_modules/statuses/README.md | 0 .../node_modules/statuses/codes.json | 0 .../node_modules/statuses/index.js | 0 .../node_modules/statuses/package.json | 0 .../node_modules/streamsearch/.eslintrc.js | 5 + .../streamsearch/.github/workflows/ci.yml | 24 + .../streamsearch/.github/workflows/lint.yml | 23 + .../node_modules/streamsearch/LICENSE | 19 + .../node_modules/streamsearch/README.md | 95 ++ .../node_modules/streamsearch/lib/sbmh.js | 267 +++++ .../node_modules/streamsearch/package.json | 34 + .../node_modules/streamsearch/test/test.js | 70 ++ .../node_modules/string-width/index.d.ts | 0 .../node_modules/string-width/index.js | 0 .../node_modules/string-width/license | 0 .../node_modules/string-width/package.json | 0 .../node_modules/string-width/readme.md | 0 .../node_modules/string_decoder/LICENSE | 48 + .../node_modules/string_decoder/README.md | 47 + .../string_decoder/lib/string_decoder.js | 296 +++++ .../node_modules/string_decoder/package.json | 0 .../node_modules/strip-ansi/index.d.ts | 0 .../node_modules/strip-ansi/index.js | 0 .../node_modules/strip-ansi/license | 0 .../node_modules/strip-ansi/package.json | 0 .../node_modules/strip-ansi/readme.md | 0 .../node_modules/tar/LICENSE | 0 .../node_modules/tar/README.md | 0 .../node_modules/tar/index.js | 0 .../node_modules/tar/lib/create.js | 0 .../node_modules/tar/lib/extract.js | 0 .../node_modules/tar/lib/get-write-flag.js | 0 .../node_modules/tar/lib/header.js | 0 .../node_modules/tar/lib/high-level-opt.js | 0 .../node_modules/tar/lib/large-numbers.js | 0 .../node_modules/tar/lib/list.js | 0 .../node_modules/tar/lib/mkdir.js | 0 .../node_modules/tar/lib/mode-fix.js | 0 .../node_modules/tar/lib/normalize-unicode.js | 0 .../tar/lib/normalize-windows-path.js | 0 .../node_modules/tar/lib/pack.js | 0 .../node_modules/tar/lib/parse.js | 0 .../node_modules/tar/lib/path-reservations.js | 0 .../node_modules/tar/lib/pax.js | 0 .../node_modules/tar/lib/read-entry.js | 0 .../node_modules/tar/lib/replace.js | 0 .../tar/lib/strip-absolute-path.js | 0 .../tar/lib/strip-trailing-slashes.js | 0 .../node_modules/tar/lib/types.js | 0 .../node_modules/tar/lib/unpack.js | 0 .../node_modules/tar/lib/update.js | 0 .../node_modules/tar/lib/warn-mixin.js | 0 .../node_modules/tar/lib/winchars.js | 0 .../node_modules/tar/lib/write-entry.js | 0 .../node_modules/tar/package.json | 0 .../node_modules/toidentifier/HISTORY.md | 0 .../node_modules/toidentifier/LICENSE | 0 .../node_modules/toidentifier/README.md | 0 .../node_modules/toidentifier/index.js | 0 .../node_modules/toidentifier/package.json | 0 .../node_modules/tr46/LICENSE.md | 0 .../node_modules/tr46/README.md | 0 .../node_modules/tr46/index.js | 0 .../node_modules/tr46/lib/mappingTable.json | 0 .../node_modules/tr46/lib/regexes.js | 0 .../node_modules/tr46/lib/statusMapping.js | 0 .../node_modules/tr46/package.json | 0 .../node_modules/type-is/HISTORY.md | 0 .../node_modules/type-is/LICENSE | 0 .../node_modules/type-is/README.md | 0 .../node_modules/type-is/index.js | 0 .../node_modules/type-is/package.json | 0 .../node_modules/typedarray/.travis.yml | 4 + node_backend/node_modules/typedarray/LICENSE | 35 + .../node_modules/typedarray/example/tarray.js | 4 + node_backend/node_modules/typedarray/index.js | 630 ++++++++++ .../node_modules/typedarray/package.json | 55 + .../node_modules/typedarray/readme.markdown | 61 + .../typedarray/test/server/undef_globals.js | 19 + .../node_modules/typedarray/test/tarray.js | 10 + .../node_modules/unpipe/HISTORY.md | 0 .../node_modules/unpipe/LICENSE | 0 .../node_modules/unpipe/README.md | 0 .../node_modules/unpipe/index.js | 0 .../node_modules/unpipe/package.json | 0 .../node_modules/util-deprecate/History.md | 0 .../node_modules/util-deprecate/LICENSE | 0 .../node_modules/util-deprecate/README.md | 0 .../node_modules/util-deprecate/browser.js | 0 .../node_modules/util-deprecate/node.js | 0 .../node_modules/util-deprecate/package.json | 0 .../node_modules/utils-merge/.npmignore | 0 .../node_modules/utils-merge/LICENSE | 0 .../node_modules/utils-merge/README.md | 0 .../node_modules/utils-merge/index.js | 0 .../node_modules/utils-merge/package.json | 0 .../node_modules/vary/HISTORY.md | 0 .../node_modules/vary/LICENSE | 0 .../node_modules/vary/README.md | 0 .../node_modules/vary/index.js | 0 .../node_modules/vary/package.json | 0 .../webidl-conversions/LICENSE.md | 0 .../node_modules/webidl-conversions/README.md | 0 .../webidl-conversions/lib/index.js | 0 .../webidl-conversions/package.json | 0 .../node_modules/whatwg-url/LICENSE.txt | 0 .../node_modules/whatwg-url/README.md | 0 .../node_modules/whatwg-url/index.js | 0 .../node_modules/whatwg-url/lib/Function.js | 0 .../node_modules/whatwg-url/lib/URL-impl.js | 0 .../node_modules/whatwg-url/lib/URL.js | 0 .../whatwg-url/lib/URLSearchParams-impl.js | 0 .../whatwg-url/lib/URLSearchParams.js | 0 .../whatwg-url/lib/VoidFunction.js | 0 .../node_modules/whatwg-url/lib/encoding.js | 0 .../node_modules/whatwg-url/lib/infra.js | 0 .../whatwg-url/lib/percent-encoding.js | 0 .../whatwg-url/lib/url-state-machine.js | 0 .../node_modules/whatwg-url/lib/urlencoded.js | 0 .../node_modules/whatwg-url/lib/utils.js | 0 .../node_modules/whatwg-url/package.json | 0 .../whatwg-url/webidl2js-wrapper.js | 0 .../node_modules/wide-align/LICENSE | 0 .../node_modules/wide-align/README.md | 0 .../node_modules/wide-align/align.js | 0 .../node_modules/wide-align/package.json | 0 .../node_modules/wrappy/LICENSE | 0 .../node_modules/wrappy/README.md | 0 .../node_modules/wrappy/package.json | 0 .../node_modules/wrappy/wrappy.js | 0 node_backend/node_modules/xtend/.jshintrc | 30 + node_backend/node_modules/xtend/LICENSE | 20 + node_backend/node_modules/xtend/README.md | 32 + node_backend/node_modules/xtend/immutable.js | 19 + node_backend/node_modules/xtend/mutable.js | 17 + node_backend/node_modules/xtend/package.json | 55 + node_backend/node_modules/xtend/test.js | 103 ++ .../node_modules/yallist/LICENSE | 0 .../node_modules/yallist/README.md | 0 .../node_modules/yallist/iterator.js | 0 .../node_modules/yallist/package.json | 0 .../node_modules/yallist/yallist.js | 0 .../package-lock.json | 152 ++- .../package.json | 4 +- node_backend/routes/administradorRoutes | 280 +++++ .../routes/alumnoRoutes.js | 0 node_backend/routes/authRoutes.js | 134 +++ node_backend/routes/docenteRoutes.js | 0 .../routes/materiasRoutes.js | 6 + .../routes/userRoutes.js | 0 .../node_backend => node_backend}/server.js | 0 package-lock.json | 218 ++++ package.json | 6 + .../.gitignore | 0 .../README.md | 0 .../package-lock.json | 0 .../package.json | 0 .../public/favicon.ico | Bin .../public/index.html | 0 .../public/logo192.png | Bin .../public/logo512.png | Bin .../public/manifest.json | 0 .../public/robots.txt | 0 .../src/App.css | 0 .../src/App.js | 12 + .../src/App.test.js | 0 .../src/assets/logo_uaei.png | Bin .../src/assets/logo_uaz.png | Bin .../src/components/AlumnoList.js | 0 .../src/components/CreateAlumno.js | 0 .../src/components/CreateMateria.js | 0 .../src/components/CreateUser.js | 0 .../src/components/DocenteAlumnos.css | 189 +++ .../src/components/DocenteAlumnos.js | 81 ++ .../src/components/Encabezado.css | 0 .../src/components/Encabezado.js | 0 .../src/components/HorarioSeleccion.css | 0 .../src/components/HorarioSeleccion.js | 45 +- .../src/components/InicioDocente.css | 59 +- .../src/components/InicioDocente.js | 141 +++ .../src/components/InicioDocente2.css | 181 +++ .../src/components/InicioDocente2.js | 149 +++ react_frontend/src/components/InicioTutor.css | 180 +++ .../src/components/InicioTutor.js | 11 + .../src/components/Pie_pagina.css | 0 .../src/components/Pie_pagina.js | 0 .../src/components/PrivateRoute.js | 2 +- .../src/components/RedirectRoute.js | 0 .../src/components/Registro.css | 0 .../src/components/Registro.js | 5 +- .../src/components/RevisionHorarioTutor.css | 0 .../src/components/RevisionHorarioTutor.js | 31 +- .../src/components/UserList.js | 0 .../src/components/Validacion1.css | 0 .../src/components/Validacion1.js | 1 - .../src/components/Validacion2.css | 0 .../src/components/Validacion2.js | 9 +- .../src/index.css | 0 .../src/index.js | 0 .../src/logo.svg | 0 .../src/reportWebVitals.js | 0 .../src/setupTests.js | 0 2329 files changed, 17734 insertions(+), 94 deletions(-) delete mode 100644 Inscripciones_UAIE/node_backend/routes/authRoutes.js delete mode 100644 Inscripciones_UAIE/react_frontend/node_modules/.cache/default-development/0.pack delete mode 100644 Inscripciones_UAIE/react_frontend/node_modules/.cache/default-development/1.pack delete mode 100644 Inscripciones_UAIE/react_frontend/node_modules/.cache/default-development/index.pack delete mode 100644 Inscripciones_UAIE/react_frontend/node_modules/.cache/default-development/index.pack.old rename {Inscripciones_UAIE/node_backend => node_backend}/controllers/alumnoController.js (91%) create mode 100644 node_backend/controllers/docenteController.js rename {Inscripciones_UAIE/node_backend => node_backend}/controllers/materiaController.js (52%) rename {Inscripciones_UAIE/node_backend => node_backend}/controllers/userController.js (100%) create mode 100644 node_backend/models/Administrador_Gen.js create mode 100644 node_backend/models/Administradores.js rename {Inscripciones_UAIE/node_backend => node_backend}/models/Alumno.js (79%) create mode 100644 node_backend/models/Coordinador_Gen.js create mode 100644 node_backend/models/Coordinadores.js create mode 100644 node_backend/models/Docentes.js rename {Inscripciones_UAIE/node_backend => node_backend}/models/Horario.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/models/Materia.js (82%) create mode 100644 node_backend/models/Tutores.js rename {Inscripciones_UAIE/node_backend => node_backend}/models/User.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/color-support (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/color-support.cmd (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/color-support.ps1 (100%) create mode 100644 node_backend/node_modules/.bin/csv-parser create mode 100644 node_backend/node_modules/.bin/csv-parser.cmd create mode 100644 node_backend/node_modules/.bin/csv-parser.ps1 rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/mime (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/mime.cmd (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/mime.ps1 (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/mkdirp (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/mkdirp.cmd (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/mkdirp.ps1 (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/node-pre-gyp (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/node-pre-gyp.cmd (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/node-pre-gyp.ps1 (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/nopt (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/nopt.cmd (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/nopt.ps1 (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/rimraf (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/rimraf.cmd (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/rimraf.ps1 (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/semver (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/semver.cmd (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.bin/semver.ps1 (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/.package-lock.json (90%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/.github/workflows/codeql.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/bin/node-pre-gyp (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/bin/node-pre-gyp.cmd (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/contributing.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/build.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/clean.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/configure.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/info.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/install.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/main.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/node-pre-gyp.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/package.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/pre-binding.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/publish.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/rebuild.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/reinstall.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/reveal.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/testbinary.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/testpackage.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/unpublish.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/util/abi_crosswalk.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/util/compile.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/util/handle_gyp_opts.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/util/napi.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/index.html (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/util/s3_setup.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/lib/util/versioning.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mapbox/node-pre-gyp/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/.esm-wrapper.mjs (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/browser.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/browser.d.ts.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/browser.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/browser.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/code-points-data.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/code-points-data.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/code-points-src.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/code-points-src.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/index.d.ts.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/index.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/node.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/node.d.ts.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/node.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/node.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/util.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/util.d.ts.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/util.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/dist/util.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@mongodb-js/saslprep/readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@types/webidl-conversions/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@types/webidl-conversions/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@types/webidl-conversions/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@types/webidl-conversions/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@types/whatwg-url/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@types/whatwg-url/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@types/whatwg-url/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@types/whatwg-url/lib/URL-impl.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@types/whatwg-url/lib/URL.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@types/whatwg-url/lib/URLSearchParams-impl.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@types/whatwg-url/lib/URLSearchParams.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@types/whatwg-url/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/@types/whatwg-url/webidl2js-wrapper.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/abbrev/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/abbrev/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/abbrev/abbrev.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/abbrev/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/accepts/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/accepts/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/accepts/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/accepts/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/accepts/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/dist/src/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/dist/src/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/dist/src/index.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/dist/src/promisify.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/dist/src/promisify.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/dist/src/promisify.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/node_modules/debug/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/node_modules/debug/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/node_modules/debug/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/node_modules/debug/src/browser.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/node_modules/debug/src/common.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/node_modules/debug/src/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/node_modules/debug/src/node.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/node_modules/ms/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/node_modules/ms/license.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/node_modules/ms/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/node_modules/ms/readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/src/index.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/agent-base/src/promisify.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ansi-regex/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ansi-regex/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ansi-regex/license (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ansi-regex/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ansi-regex/readme.md (100%) rename {Inscripciones_UAIE/node_backend/node_modules/delegates => node_backend/node_modules/append-field}/.npmignore (100%) create mode 100644 node_backend/node_modules/append-field/LICENSE create mode 100644 node_backend/node_modules/append-field/README.md create mode 100644 node_backend/node_modules/append-field/index.js create mode 100644 node_backend/node_modules/append-field/lib/parse-path.js create mode 100644 node_backend/node_modules/append-field/lib/set-value.js create mode 100644 node_backend/node_modules/append-field/package.json create mode 100644 node_backend/node_modules/append-field/test/forms.js rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/aproba/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/aproba/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/aproba/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/aproba/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/aproba/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/are-we-there-yet/LICENSE.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/are-we-there-yet/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/are-we-there-yet/lib/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/are-we-there-yet/lib/tracker-base.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/are-we-there-yet/lib/tracker-group.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/are-we-there-yet/lib/tracker-stream.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/are-we-there-yet/lib/tracker.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/are-we-there-yet/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/array-flatten/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/array-flatten/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/array-flatten/array-flatten.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/array-flatten/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/balanced-match/.github/FUNDING.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/balanced-match/LICENSE.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/balanced-match/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/balanced-match/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/balanced-match/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/.editorconfig (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/.github/workflows/ci.yaml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/.travis.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/ISSUE_TEMPLATE.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/Makefile (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/SECURITY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/appveyor.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/bcrypt.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/binding.gyp (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/examples/async_compare.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/examples/forever_gen_salt.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/promises.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/src/bcrypt.cc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/src/bcrypt_node.cc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/src/blowfish.cc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/src/node_blf.h (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/test-docker.sh (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/test/async.test.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/test/implementation.test.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/test/promise.test.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/test/repetitions.test.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcrypt/test/sync.test.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/.npmignore (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/.travis.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/.vscode/settings.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/bin/bcrypt (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/bower.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/dist/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/dist/bcrypt.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/dist/bcrypt.min.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/dist/bcrypt.min.js.gz (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/dist/bcrypt.min.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/externs/bcrypt.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/externs/minimal-env.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/scripts/build.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/src/bcrypt.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/src/bcrypt/impl.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/src/bcrypt/prng/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/src/bcrypt/prng/accum.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/src/bcrypt/prng/isaac.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/src/bcrypt/util.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/src/bcrypt/util/base64.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/src/bower.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/src/wrap.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/tests/quickbrown.txt (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bcryptjs/tests/suite.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/body-parser/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/body-parser/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/body-parser/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/body-parser/SECURITY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/body-parser/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/body-parser/lib/read.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/body-parser/lib/types/json.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/body-parser/lib/types/raw.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/body-parser/lib/types/text.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/body-parser/lib/types/urlencoded.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/body-parser/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/brace-expansion/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/brace-expansion/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/brace-expansion/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/brace-expansion/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/LICENSE.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/bson.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/etc/prepare.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/lib/bson.bundle.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/lib/bson.bundle.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/lib/bson.cjs (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/lib/bson.cjs.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/lib/bson.mjs (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/lib/bson.mjs.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/lib/bson.rn.cjs (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/lib/bson.rn.cjs.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/binary.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/bson.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/bson_value.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/code.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/constants.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/db_ref.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/decimal128.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/double.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/error.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/extended_json.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/index.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/int_32.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/long.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/max_key.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/min_key.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/objectid.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/parse_utf8.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/parser/calculate_size.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/parser/deserializer.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/parser/on_demand/index.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/parser/on_demand/parse_to_elements.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/parser/serializer.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/parser/utils.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/regexp.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/symbol.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/timestamp.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/utils/byte_utils.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/utils/latin.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/utils/node_byte_utils.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/utils/number_utils.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/utils/string_utils.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/src/utils/web_byte_utils.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/vendor/base64/LICENSE-MIT.txt (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/vendor/base64/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/vendor/base64/base64.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/vendor/base64/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/vendor/text-encoding/LICENSE.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/vendor/text-encoding/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/vendor/text-encoding/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/vendor/text-encoding/lib/encoding-indexes.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/vendor/text-encoding/lib/encoding.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bson/vendor/text-encoding/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/buffer-equal-constant-time/.npmignore (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/buffer-equal-constant-time/.travis.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/buffer-equal-constant-time/LICENSE.txt (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/buffer-equal-constant-time/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/buffer-equal-constant-time/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/buffer-equal-constant-time/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/buffer-equal-constant-time/test.js (100%) create mode 100644 node_backend/node_modules/buffer-from/LICENSE create mode 100644 node_backend/node_modules/buffer-from/index.js create mode 100644 node_backend/node_modules/buffer-from/package.json create mode 100644 node_backend/node_modules/buffer-from/readme.md create mode 100644 node_backend/node_modules/busboy/.eslintrc.js create mode 100644 node_backend/node_modules/busboy/.github/workflows/ci.yml create mode 100644 node_backend/node_modules/busboy/.github/workflows/lint.yml create mode 100644 node_backend/node_modules/busboy/LICENSE create mode 100644 node_backend/node_modules/busboy/README.md create mode 100644 node_backend/node_modules/busboy/bench/bench-multipart-fields-100mb-big.js create mode 100644 node_backend/node_modules/busboy/bench/bench-multipart-fields-100mb-small.js create mode 100644 node_backend/node_modules/busboy/bench/bench-multipart-files-100mb-big.js create mode 100644 node_backend/node_modules/busboy/bench/bench-multipart-files-100mb-small.js create mode 100644 node_backend/node_modules/busboy/bench/bench-urlencoded-fields-100pairs-small.js create mode 100644 node_backend/node_modules/busboy/bench/bench-urlencoded-fields-900pairs-small-alt.js create mode 100644 node_backend/node_modules/busboy/lib/index.js create mode 100644 node_backend/node_modules/busboy/lib/types/multipart.js create mode 100644 node_backend/node_modules/busboy/lib/types/urlencoded.js create mode 100644 node_backend/node_modules/busboy/lib/utils.js create mode 100644 node_backend/node_modules/busboy/package.json create mode 100644 node_backend/node_modules/busboy/test/common.js create mode 100644 node_backend/node_modules/busboy/test/test-types-multipart-charsets.js create mode 100644 node_backend/node_modules/busboy/test/test-types-multipart-stream-pause.js create mode 100644 node_backend/node_modules/busboy/test/test-types-multipart.js create mode 100644 node_backend/node_modules/busboy/test/test-types-urlencoded.js create mode 100644 node_backend/node_modules/busboy/test/test.js rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bytes/History.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bytes/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bytes/Readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bytes/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/bytes/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/call-bind/.eslintignore (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/call-bind/.eslintrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/call-bind/.github/FUNDING.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/call-bind/.nycrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/call-bind/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/call-bind/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/call-bind/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/call-bind/callBound.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/call-bind/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/call-bind/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/call-bind/test/callBound.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/call-bind/test/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/chownr/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/chownr/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/chownr/chownr.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/chownr/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/color-support/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/color-support/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/color-support/bin.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/color-support/browser.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/color-support/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/color-support/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/concat-map/.travis.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/concat-map/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/concat-map/README.markdown (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/concat-map/example/map.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/concat-map/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/concat-map/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/concat-map/test/map.js (100%) create mode 100644 node_backend/node_modules/concat-stream/LICENSE create mode 100644 node_backend/node_modules/concat-stream/index.js create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/.travis.yml rename {Inscripciones_UAIE/node_backend => node_backend/node_modules/concat-stream}/node_modules/readable-stream/CONTRIBUTING.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend/node_modules/concat-stream}/node_modules/readable-stream/GOVERNANCE.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend/node_modules/concat-stream}/node_modules/readable-stream/LICENSE (100%) create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/README.md create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/duplex-browser.js create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/duplex.js create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/internal/streams/BufferList.js create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/internal/streams/destroy.js rename {Inscripciones_UAIE/node_backend => node_backend/node_modules/concat-stream}/node_modules/readable-stream/lib/internal/streams/stream-browser.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend/node_modules/concat-stream}/node_modules/readable-stream/lib/internal/streams/stream.js (100%) create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/package.json create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/passthrough.js create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/readable-browser.js create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/readable.js create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/transform.js create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/writable-browser.js create mode 100644 node_backend/node_modules/concat-stream/node_modules/readable-stream/writable.js rename {Inscripciones_UAIE/node_backend => node_backend/node_modules/concat-stream}/node_modules/safe-buffer/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend/node_modules/concat-stream}/node_modules/safe-buffer/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend/node_modules/concat-stream}/node_modules/safe-buffer/index.d.ts (100%) create mode 100644 node_backend/node_modules/concat-stream/node_modules/safe-buffer/index.js create mode 100644 node_backend/node_modules/concat-stream/node_modules/safe-buffer/package.json create mode 100644 node_backend/node_modules/concat-stream/node_modules/string_decoder/.travis.yml rename {Inscripciones_UAIE/node_backend => node_backend/node_modules/concat-stream}/node_modules/string_decoder/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend/node_modules/concat-stream}/node_modules/string_decoder/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend/node_modules/concat-stream}/node_modules/string_decoder/lib/string_decoder.js (100%) create mode 100644 node_backend/node_modules/concat-stream/node_modules/string_decoder/package.json create mode 100644 node_backend/node_modules/concat-stream/package.json create mode 100644 node_backend/node_modules/concat-stream/readme.md rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/console-control-strings/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/console-control-strings/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/console-control-strings/README.md~ (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/console-control-strings/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/console-control-strings/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/content-disposition/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/content-disposition/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/content-disposition/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/content-disposition/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/content-disposition/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/content-type/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/content-type/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/content-type/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/content-type/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/content-type/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/cookie-signature/.npmignore (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/cookie-signature/History.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/cookie-signature/Readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/cookie-signature/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/cookie-signature/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/cookie/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/cookie/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/cookie/SECURITY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/cookie/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/cookie/package.json (100%) create mode 100644 node_backend/node_modules/core-util-is/LICENSE create mode 100644 node_backend/node_modules/core-util-is/README.md create mode 100644 node_backend/node_modules/core-util-is/lib/util.js create mode 100644 node_backend/node_modules/core-util-is/package.json rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/cors/CONTRIBUTING.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/cors/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/cors/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/cors/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/cors/lib/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/cors/package.json (100%) create mode 100644 node_backend/node_modules/csv-parser/LICENSE create mode 100644 node_backend/node_modules/csv-parser/README.md create mode 100644 node_backend/node_modules/csv-parser/bin/csv-parser create mode 100644 node_backend/node_modules/csv-parser/index.d.ts create mode 100644 node_backend/node_modules/csv-parser/index.js create mode 100644 node_backend/node_modules/csv-parser/package.json rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/debug/.coveralls.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/debug/.eslintrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/debug/.npmignore (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/debug/.travis.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/debug/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/debug/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/debug/Makefile (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/debug/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/debug/component.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/debug/karma.conf.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/debug/node.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/debug/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/debug/src/browser.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/debug/src/debug.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/debug/src/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/debug/src/inspector-log.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/debug/src/node.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/define-data-property/.eslintrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/define-data-property/.github/FUNDING.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/define-data-property/.nycrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/define-data-property/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/define-data-property/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/define-data-property/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/define-data-property/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/define-data-property/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/define-data-property/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/define-data-property/test/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/define-data-property/tsconfig.json (100%) create mode 100644 node_backend/node_modules/delegates/.npmignore rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/delegates/History.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/delegates/License (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/delegates/Makefile (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/delegates/Readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/delegates/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/delegates/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/delegates/test/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/depd/History.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/depd/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/depd/Readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/depd/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/depd/lib/browser/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/depd/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/destroy/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/destroy/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/destroy/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/destroy/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/detect-libc/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/detect-libc/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/detect-libc/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/detect-libc/lib/detect-libc.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/detect-libc/lib/filesystem.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/detect-libc/lib/process.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/detect-libc/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/dotenv/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/dotenv/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/dotenv/README-es.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/dotenv/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/dotenv/config.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/dotenv/config.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/dotenv/lib/cli-options.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/dotenv/lib/env-options.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/dotenv/lib/main.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/dotenv/lib/main.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/dotenv/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ecdsa-sig-formatter/CODEOWNERS (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ecdsa-sig-formatter/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ecdsa-sig-formatter/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ecdsa-sig-formatter/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ee-first/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ee-first/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ee-first/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ee-first/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/emoji-regex/LICENSE-MIT.txt (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/emoji-regex/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/emoji-regex/es2015/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/emoji-regex/es2015/text.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/emoji-regex/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/emoji-regex/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/emoji-regex/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/emoji-regex/text.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/encodeurl/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/encodeurl/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/encodeurl/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/encodeurl/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-define-property/.eslintrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-define-property/.github/FUNDING.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-define-property/.nycrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-define-property/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-define-property/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-define-property/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-define-property/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-define-property/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-define-property/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-define-property/test/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-define-property/tsconfig.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/.eslintrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/.github/FUNDING.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/eval.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/eval.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/range.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/range.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/ref.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/ref.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/syntax.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/syntax.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/test/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/tsconfig.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/type.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/type.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/uri.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/es-errors/uri.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/escape-html/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/escape-html/Readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/escape-html/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/escape-html/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/etag/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/etag/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/etag/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/etag/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/etag/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/express/History.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/express/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/express/Readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/express/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/express/lib/application.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/express/lib/express.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/express/lib/middleware/init.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/express/lib/middleware/query.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/express/lib/request.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/express/lib/response.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/express/lib/router/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/express/lib/router/layer.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/express/lib/router/route.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/express/lib/utils.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/express/lib/view.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/express/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/finalhandler/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/finalhandler/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/finalhandler/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/finalhandler/SECURITY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/finalhandler/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/finalhandler/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/forwarded/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/forwarded/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/forwarded/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/forwarded/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/forwarded/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fresh/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fresh/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fresh/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fresh/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fresh/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fs-minipass/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fs-minipass/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fs-minipass/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fs-minipass/node_modules/minipass/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fs-minipass/node_modules/minipass/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fs-minipass/node_modules/minipass/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fs-minipass/node_modules/minipass/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fs-minipass/node_modules/minipass/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fs-minipass/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fs.realpath/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fs.realpath/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fs.realpath/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fs.realpath/old.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/fs.realpath/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/function-bind/.eslintrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/function-bind/.github/FUNDING.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/function-bind/.github/SECURITY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/function-bind/.nycrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/function-bind/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/function-bind/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/function-bind/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/function-bind/implementation.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/function-bind/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/function-bind/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/function-bind/test/.eslintrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/function-bind/test/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/base-theme.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/error.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/has-color.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/plumbing.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/process.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/progress-bar.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/render-template.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/set-immediate.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/set-interval.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/spin.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/template-item.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/theme-set.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/themes.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gauge/wide-truncate.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/get-intrinsic/.eslintrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/get-intrinsic/.github/FUNDING.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/get-intrinsic/.nycrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/get-intrinsic/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/get-intrinsic/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/get-intrinsic/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/get-intrinsic/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/get-intrinsic/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/get-intrinsic/test/GetIntrinsic.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/glob/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/glob/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/glob/common.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/glob/glob.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/glob/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/glob/sync.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gopd/.eslintrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gopd/.github/FUNDING.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gopd/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gopd/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gopd/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gopd/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gopd/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/gopd/test/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-property-descriptors/.eslintrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-property-descriptors/.github/FUNDING.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-property-descriptors/.nycrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-property-descriptors/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-property-descriptors/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-property-descriptors/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-property-descriptors/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-property-descriptors/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-property-descriptors/test/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-proto/.eslintrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-proto/.github/FUNDING.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-proto/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-proto/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-proto/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-proto/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-proto/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-proto/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-proto/test/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-proto/tsconfig.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-symbols/.eslintrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-symbols/.github/FUNDING.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-symbols/.nycrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-symbols/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-symbols/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-symbols/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-symbols/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-symbols/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-symbols/shams.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-symbols/test/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-symbols/test/shams/core-js.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-symbols/test/shams/get-own-property-symbols.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-symbols/test/tests.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-unicode/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-unicode/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-unicode/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/has-unicode/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/hasown/.eslintrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/hasown/.github/FUNDING.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/hasown/.nycrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/hasown/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/hasown/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/hasown/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/hasown/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/hasown/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/hasown/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/hasown/tsconfig.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/http-errors/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/http-errors/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/http-errors/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/http-errors/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/http-errors/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/dist/agent.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/dist/agent.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/dist/agent.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/dist/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/dist/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/dist/index.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/dist/parse-proxy-response.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/node_modules/debug/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/node_modules/debug/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/node_modules/debug/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/node_modules/debug/src/browser.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/node_modules/debug/src/common.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/node_modules/debug/src/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/node_modules/debug/src/node.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/node_modules/ms/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/node_modules/ms/license.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/node_modules/ms/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/node_modules/ms/readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/https-proxy-agent/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/Changelog.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/encodings/dbcs-codec.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/encodings/dbcs-data.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/encodings/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/encodings/internal.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/encodings/sbcs-codec.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/encodings/sbcs-data-generated.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/encodings/sbcs-data.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/encodings/tables/big5-added.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/encodings/tables/cp936.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/encodings/tables/cp949.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/encodings/tables/cp950.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/encodings/tables/eucjp.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/encodings/tables/gbk-added.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/encodings/tables/shiftjis.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/encodings/utf16.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/encodings/utf7.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/lib/bom-handling.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/lib/extend-node.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/lib/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/lib/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/lib/streams.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/iconv-lite/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/inflight/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/inflight/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/inflight/inflight.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/inflight/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/inherits/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/inherits/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/inherits/inherits.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/inherits/inherits_browser.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/inherits/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ipaddr.js/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ipaddr.js/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ipaddr.js/ipaddr.min.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ipaddr.js/lib/ipaddr.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ipaddr.js/lib/ipaddr.js.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ipaddr.js/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/is-fullwidth-code-point/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/is-fullwidth-code-point/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/is-fullwidth-code-point/license (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/is-fullwidth-code-point/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/is-fullwidth-code-point/readme.md (100%) rename {Inscripciones_UAIE/node_backend/node_modules/sparse-bitfield => node_backend/node_modules/isarray}/.npmignore (100%) create mode 100644 node_backend/node_modules/isarray/.travis.yml create mode 100644 node_backend/node_modules/isarray/Makefile create mode 100644 node_backend/node_modules/isarray/README.md create mode 100644 node_backend/node_modules/isarray/component.json create mode 100644 node_backend/node_modules/isarray/index.js create mode 100644 node_backend/node_modules/isarray/package.json create mode 100644 node_backend/node_modules/isarray/test.js rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/decode.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/lib/JsonWebTokenError.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/lib/NotBeforeError.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/lib/TokenExpiredError.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/lib/psSupported.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/lib/timespan.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/node_modules/ms/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/node_modules/ms/license.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/node_modules/ms/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/node_modules/ms/readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/sign.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jsonwebtoken/verify.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jwa/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jwa/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jwa/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jwa/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jws/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jws/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jws/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jws/lib/data-stream.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jws/lib/sign-stream.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jws/lib/tostring.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jws/lib/verify-stream.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jws/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/jws/readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/kareem/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/kareem/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/kareem/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/kareem/SECURITY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/kareem/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/kareem/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/kareem/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.includes/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.includes/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.includes/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.includes/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isboolean/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isboolean/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isboolean/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isboolean/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isinteger/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isinteger/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isinteger/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isinteger/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isnumber/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isnumber/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isnumber/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isnumber/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isplainobject/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isplainobject/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isplainobject/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isplainobject/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isstring/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isstring/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isstring/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.isstring/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.once/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.once/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.once/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/lodash.once/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/make-dir/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/make-dir/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/make-dir/license (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/make-dir/node_modules/.bin/semver (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/make-dir/node_modules/.bin/semver.cmd (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/make-dir/node_modules/.bin/semver.ps1 (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/make-dir/node_modules/semver/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/make-dir/node_modules/semver/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/make-dir/node_modules/semver/bin/semver.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/make-dir/node_modules/semver/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/make-dir/node_modules/semver/range.bnf (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/make-dir/node_modules/semver/semver.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/make-dir/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/make-dir/readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/media-typer/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/media-typer/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/media-typer/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/media-typer/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/media-typer/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/memory-pager/.travis.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/memory-pager/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/memory-pager/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/memory-pager/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/memory-pager/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/memory-pager/test.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/merge-descriptors/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/merge-descriptors/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/merge-descriptors/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/merge-descriptors/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/merge-descriptors/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/methods/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/methods/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/methods/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/methods/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/methods/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime-db/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime-db/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime-db/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime-db/db.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime-db/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime-db/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime-types/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime-types/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime-types/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime-types/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime-types/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime/.npmignore (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime/cli.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime/mime.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime/src/build.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime/src/test.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mime/types.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minimatch/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minimatch/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minimatch/minimatch.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minimatch/package.json (100%) create mode 100644 node_backend/node_modules/minimist/.eslintrc create mode 100644 node_backend/node_modules/minimist/.github/FUNDING.yml create mode 100644 node_backend/node_modules/minimist/.nycrc create mode 100644 node_backend/node_modules/minimist/CHANGELOG.md create mode 100644 node_backend/node_modules/minimist/LICENSE create mode 100644 node_backend/node_modules/minimist/README.md create mode 100644 node_backend/node_modules/minimist/example/parse.js create mode 100644 node_backend/node_modules/minimist/index.js create mode 100644 node_backend/node_modules/minimist/package.json create mode 100644 node_backend/node_modules/minimist/test/all_bool.js create mode 100644 node_backend/node_modules/minimist/test/bool.js create mode 100644 node_backend/node_modules/minimist/test/dash.js create mode 100644 node_backend/node_modules/minimist/test/default_bool.js create mode 100644 node_backend/node_modules/minimist/test/dotted.js create mode 100644 node_backend/node_modules/minimist/test/kv_short.js create mode 100644 node_backend/node_modules/minimist/test/long.js create mode 100644 node_backend/node_modules/minimist/test/num.js create mode 100644 node_backend/node_modules/minimist/test/parse.js create mode 100644 node_backend/node_modules/minimist/test/parse_modified.js create mode 100644 node_backend/node_modules/minimist/test/proto.js create mode 100644 node_backend/node_modules/minimist/test/short.js create mode 100644 node_backend/node_modules/minimist/test/stop_early.js create mode 100644 node_backend/node_modules/minimist/test/unknown.js create mode 100644 node_backend/node_modules/minimist/test/whitespace.js rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minipass/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minipass/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minipass/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minipass/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minipass/index.mjs (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minipass/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minizlib/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minizlib/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minizlib/constants.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minizlib/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minizlib/node_modules/minipass/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minizlib/node_modules/minipass/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minizlib/node_modules/minipass/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minizlib/node_modules/minipass/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minizlib/node_modules/minipass/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/minizlib/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mkdirp/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mkdirp/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mkdirp/bin/cmd.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mkdirp/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mkdirp/lib/find-made.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mkdirp/lib/mkdirp-manual.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mkdirp/lib/mkdirp-native.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mkdirp/lib/opts-arg.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mkdirp/lib/path-arg.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mkdirp/lib/use-native.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mkdirp/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mkdirp/readme.markdown (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb-connection-string-url/.esm-wrapper.mjs (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb-connection-string-url/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb-connection-string-url/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb-connection-string-url/lib/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb-connection-string-url/lib/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb-connection-string-url/lib/index.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb-connection-string-url/lib/redact.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb-connection-string-url/lib/redact.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb-connection-string-url/lib/redact.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb-connection-string-url/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/LICENSE.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/etc/prepare.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/admin.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/admin.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/beta.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/beta.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/beta.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/bson.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/bson.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/bulk/common.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/bulk/common.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/bulk/ordered.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/bulk/ordered.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/bulk/unordered.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/bulk/unordered.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/change_stream.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/change_stream.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/auto_encrypter.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/auto_encrypter.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/client_encryption.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/client_encryption.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/crypto_callbacks.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/crypto_callbacks.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/errors.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/errors.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/mongocryptd_manager.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/mongocryptd_manager.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/providers/aws.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/providers/aws.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/providers/azure.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/providers/azure.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/providers/gcp.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/providers/gcp.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/providers/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/providers/index.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/state_machine.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/client-side-encryption/state_machine.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/auth_provider.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/auth_provider.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/aws_temporary_credentials.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/aws_temporary_credentials.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/gssapi.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/gssapi.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongo_credentials.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongo_credentials.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/machine_workflow.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/machine_workflow.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/plain.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/plain.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/providers.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/providers.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/scram.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/scram.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/x509.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/auth/x509.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/command_monitoring_events.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/command_monitoring_events.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/commands.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/commands.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/connect.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/connect.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/connection.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/connection.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/connection_pool.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/connection_pool.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/connection_pool_events.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/connection_pool_events.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/errors.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/errors.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/handshake/client_metadata.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/handshake/client_metadata.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/metrics.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/metrics.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/stream_description.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/stream_description.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/wire_protocol/compression.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/wire_protocol/compression.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/wire_protocol/constants.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/wire_protocol/constants.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/wire_protocol/on_data.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/wire_protocol/on_data.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/wire_protocol/on_demand/document.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/wire_protocol/on_demand/document.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/wire_protocol/responses.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/wire_protocol/responses.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/wire_protocol/shared.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cmap/wire_protocol/shared.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/collection.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/collection.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/connection_string.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/connection_string.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/constants.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/constants.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cursor/abstract_cursor.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cursor/abstract_cursor.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cursor/aggregation_cursor.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cursor/aggregation_cursor.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cursor/change_stream_cursor.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cursor/change_stream_cursor.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cursor/client_bulk_write_cursor.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cursor/client_bulk_write_cursor.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cursor/find_cursor.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cursor/find_cursor.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cursor/list_collections_cursor.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cursor/list_collections_cursor.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cursor/list_indexes_cursor.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cursor/list_indexes_cursor.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cursor/list_search_indexes_cursor.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cursor/list_search_indexes_cursor.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cursor/run_command_cursor.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/cursor/run_command_cursor.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/db.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/db.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/deps.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/deps.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/encrypter.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/encrypter.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/error.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/error.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/explain.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/explain.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/gridfs/download.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/gridfs/download.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/gridfs/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/gridfs/index.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/gridfs/upload.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/gridfs/upload.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/index.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/mongo_client.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/mongo_client.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/mongo_client_auth_providers.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/mongo_client_auth_providers.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/mongo_logger.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/mongo_logger.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/mongo_types.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/mongo_types.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/aggregate.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/aggregate.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/bulk_write.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/bulk_write.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/client_bulk_write/client_bulk_write.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/client_bulk_write/client_bulk_write.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/client_bulk_write/command_builder.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/client_bulk_write/command_builder.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/client_bulk_write/common.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/client_bulk_write/common.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/client_bulk_write/executor.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/client_bulk_write/executor.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/client_bulk_write/results_merger.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/client_bulk_write/results_merger.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/collections.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/collections.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/command.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/command.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/count.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/count.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/create_collection.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/create_collection.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/delete.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/delete.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/distinct.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/distinct.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/drop.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/drop.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/estimated_document_count.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/estimated_document_count.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/execute_operation.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/execute_operation.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/find.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/find.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/find_and_modify.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/find_and_modify.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/get_more.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/get_more.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/indexes.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/indexes.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/insert.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/insert.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/is_capped.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/is_capped.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/kill_cursors.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/kill_cursors.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/list_collections.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/list_collections.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/list_databases.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/list_databases.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/operation.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/operation.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/options_operation.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/options_operation.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/profiling_level.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/profiling_level.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/remove_user.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/remove_user.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/rename.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/rename.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/run_command.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/run_command.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/search_indexes/create.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/search_indexes/create.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/search_indexes/drop.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/search_indexes/drop.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/search_indexes/update.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/search_indexes/update.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/set_profiling_level.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/set_profiling_level.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/stats.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/stats.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/update.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/update.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/validate_collection.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/operations/validate_collection.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/read_concern.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/read_concern.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/read_preference.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/read_preference.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/resource_management.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/resource_management.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/common.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/common.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/events.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/events.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/monitor.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/monitor.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/server.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/server.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/server_description.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/server_description.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/server_selection.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/server_selection.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/server_selection_events.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/server_selection_events.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/srv_polling.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/srv_polling.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/topology.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/topology.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/topology_description.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sdam/topology_description.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sessions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sessions.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sort.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/sort.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/timeout.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/timeout.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/transactions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/transactions.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/utils.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/utils.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/write_concern.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/lib/write_concern.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/mongodb.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/admin.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/beta.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/bson.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/bulk/common.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/bulk/ordered.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/bulk/unordered.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/change_stream.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/client-side-encryption/auto_encrypter.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/client-side-encryption/client_encryption.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/client-side-encryption/crypto_callbacks.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/client-side-encryption/errors.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/client-side-encryption/mongocryptd_manager.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/client-side-encryption/providers/aws.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/client-side-encryption/providers/azure.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/client-side-encryption/providers/gcp.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/client-side-encryption/providers/index.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/client-side-encryption/state_machine.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/auth_provider.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/aws_temporary_credentials.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/gssapi.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/mongo_credentials.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/mongodb_aws.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/mongodb_oidc.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/mongodb_oidc/automated_callback_workflow.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/mongodb_oidc/azure_machine_workflow.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/mongodb_oidc/callback_workflow.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/mongodb_oidc/command_builders.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/mongodb_oidc/gcp_machine_workflow.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/mongodb_oidc/human_callback_workflow.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/mongodb_oidc/machine_workflow.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/mongodb_oidc/token_cache.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/mongodb_oidc/token_machine_workflow.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/plain.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/providers.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/scram.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/auth/x509.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/command_monitoring_events.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/commands.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/connect.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/connection.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/connection_pool.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/connection_pool_events.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/errors.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/handshake/client_metadata.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/metrics.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/stream_description.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/wire_protocol/compression.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/wire_protocol/constants.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/wire_protocol/on_data.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/wire_protocol/on_demand/document.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/wire_protocol/responses.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cmap/wire_protocol/shared.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/collection.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/connection_string.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/constants.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cursor/abstract_cursor.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cursor/aggregation_cursor.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cursor/change_stream_cursor.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cursor/client_bulk_write_cursor.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cursor/find_cursor.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cursor/list_collections_cursor.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cursor/list_indexes_cursor.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cursor/list_search_indexes_cursor.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/cursor/run_command_cursor.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/db.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/deps.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/encrypter.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/error.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/explain.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/gridfs/download.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/gridfs/index.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/gridfs/upload.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/index.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/mongo_client.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/mongo_client_auth_providers.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/mongo_logger.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/mongo_types.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/aggregate.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/bulk_write.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/client_bulk_write/client_bulk_write.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/client_bulk_write/command_builder.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/client_bulk_write/common.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/client_bulk_write/executor.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/client_bulk_write/results_merger.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/collections.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/command.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/count.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/create_collection.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/delete.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/distinct.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/drop.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/estimated_document_count.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/execute_operation.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/find.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/find_and_modify.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/get_more.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/indexes.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/insert.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/is_capped.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/kill_cursors.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/list_collections.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/list_databases.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/operation.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/options_operation.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/profiling_level.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/remove_user.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/rename.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/run_command.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/search_indexes/create.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/search_indexes/drop.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/search_indexes/update.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/set_profiling_level.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/stats.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/update.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/operations/validate_collection.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/read_concern.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/read_preference.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/resource_management.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/sdam/common.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/sdam/events.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/sdam/monitor.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/sdam/server.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/sdam/server_description.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/sdam/server_selection.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/sdam/server_selection_events.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/sdam/srv_polling.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/sdam/topology.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/sdam/topology_description.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/sessions.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/sort.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/timeout.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/transactions.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/utils.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/src/write_concern.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongodb/tsconfig.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/LICENSE.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/SECURITY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/browser.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/dist/browser.umd.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/aggregate.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/browser.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/browserDocument.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/cast.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/cast/bigint.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/cast/boolean.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/cast/date.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/cast/decimal128.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/cast/number.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/cast/objectid.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/cast/string.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/collection.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/connection.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/connectionState.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/constants.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/cursor/aggregationCursor.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/cursor/changeStream.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/cursor/queryCursor.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/document.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/documentProvider.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/driver.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/drivers/SPEC.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/drivers/browser/binary.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/drivers/browser/decimal128.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/drivers/browser/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/drivers/browser/objectid.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/drivers/node-mongodb-native/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/browserMissingSchema.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/bulkSaveIncompleteError.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/bulkWriteError.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/cast.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/createCollectionsError.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/divergentArray.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/eachAsyncMultiError.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/invalidSchemaOption.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/messages.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/missingSchema.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/mongooseError.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/notFound.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/objectExpected.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/objectParameter.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/overwriteModel.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/parallelSave.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/parallelValidate.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/serverSelection.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/setOptionError.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/strict.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/strictPopulate.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/syncIndexes.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/validation.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/validator.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/error/version.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/aggregate/prepareDiscriminatorPipeline.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/aggregate/stringifyFunctionOperators.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/arrayDepth.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/clone.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/common.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/cursor/eachAsync.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/discriminator/applyEmbeddedDiscriminators.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/discriminator/areDiscriminatorValuesEqual.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/discriminator/checkEmbeddedDiscriminatorKeyProjection.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/discriminator/getConstructor.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/discriminator/getDiscriminatorByValue.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/discriminator/getSchemaDiscriminatorByValue.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/discriminator/mergeDiscriminatorSchema.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/document/applyDefaults.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/document/applyTimestamps.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/document/applyVirtuals.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/document/cleanModifiedSubpaths.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/document/compile.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/document/getDeepestSubdocumentForPath.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/document/getEmbeddedDiscriminatorPath.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/document/handleSpreadDoc.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/each.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/error/combinePathErrors.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/firstKey.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/get.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/getConstructorName.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/getDefaultBulkwriteResult.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/getFunctionName.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/immediate.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/indexes/applySchemaCollation.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/indexes/decorateDiscriminatorIndexOptions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/indexes/getRelatedIndexes.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/indexes/isDefaultIdIndex.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/indexes/isIndexEqual.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/indexes/isTextIndex.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/indexes/isTimeseriesIndex.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/isAsyncFunction.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/isBsonType.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/isMongooseObject.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/isObject.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/isPOJO.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/isPromise.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/isSimpleValidator.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/minimize.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/model/applyDefaultsToPOJO.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/model/applyHooks.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/model/applyMethods.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/model/applyStaticHooks.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/model/applyStatics.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/model/castBulkWrite.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/model/discriminator.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/model/pushNestedArrayPaths.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/omitUndefined.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/once.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/parallelLimit.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/path/parentPaths.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/path/setDottedPath.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/pluralize.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/populate/assignRawDocsToIdStructure.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/populate/assignVals.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/populate/createPopulateQueryFilter.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/populate/getModelsMapForPopulate.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/populate/getSchemaTypes.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/populate/getVirtual.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/populate/leanPopulateMap.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/populate/lookupLocalFields.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/populate/markArraySubdocsPopulated.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/populate/modelNamesFromRefPath.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/populate/removeDeselectedForeignField.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/populate/setPopulatedVirtualValue.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/populate/skipPopulateValue.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/populate/validateRef.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/printJestWarning.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/processConnectionOptions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/projection/applyProjection.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/projection/hasIncludedChildren.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/projection/isDefiningProjection.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/projection/isExclusive.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/projection/isInclusive.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/projection/isNestedProjection.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/projection/isPathExcluded.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/projection/isPathSelectedInclusive.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/projection/isSubpath.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/projection/parseProjection.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/promiseOrCallback.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/query/applyGlobalOption.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/query/cast$expr.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/query/castFilterPath.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/query/castUpdate.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/query/getEmbeddedDiscriminatorPath.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/query/handleImmutable.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/query/handleReadPreferenceAliases.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/query/hasDollarKeys.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/query/isOperator.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/query/sanitizeFilter.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/query/sanitizeProjection.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/query/selectPopulatedFields.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/query/trusted.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/query/validOps.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/schema/addAutoId.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/schema/applyBuiltinPlugins.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/schema/applyPlugins.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/schema/applyReadConcern.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/schema/applyWriteConcern.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/schema/cleanPositionalOperators.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/schema/getIndexes.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/schema/getKeysInSchemaOrder.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/schema/getPath.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/schema/getSubdocumentStrictValue.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/schema/handleIdOption.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/schema/handleTimestampOption.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/schema/idGetter.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/schema/merge.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/schematype/handleImmutable.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/setDefaultsOnInsert.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/specialProperties.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/symbols.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/timers.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/timestamps/setDocumentTimestamps.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/timestamps/setupTimestamps.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/topology/allServersUnknown.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/topology/isAtlas.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/topology/isSSLError.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/update/applyTimestampsToChildren.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/update/applyTimestampsToUpdate.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/update/castArrayFilters.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/update/decorateUpdateWithVersionKey.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/update/modifiedPaths.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/update/moveImmutableProperties.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/update/removeUnusedArrayFilters.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/update/updatedPathsByArrayFilter.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/helpers/updateValidators.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/internal.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/model.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/modifiedPathsSnapshot.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/mongoose.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/options.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/options/populateOptions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/options/propertyOptions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/options/saveOptions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/options/schemaArrayOptions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/options/schemaBufferOptions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/options/schemaDateOptions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/options/schemaDocumentArrayOptions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/options/schemaMapOptions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/options/schemaNumberOptions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/options/schemaObjectIdOptions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/options/schemaStringOptions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/options/schemaSubdocumentOptions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/options/schemaTypeOptions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/options/virtualOptions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/plugins/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/plugins/saveSubdocs.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/plugins/sharding.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/plugins/trackTransaction.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/plugins/validateBeforeSave.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/query.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/queryHelpers.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/array.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/bigint.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/boolean.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/buffer.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/date.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/decimal128.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/documentArray.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/documentArrayElement.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/map.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/mixed.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/number.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/objectId.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/operators/bitwise.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/operators/exists.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/operators/geospatial.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/operators/helpers.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/operators/text.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/operators/type.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/string.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/subdocument.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/symbols.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schema/uuid.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/schemaType.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/stateMachine.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/types/array/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/types/array/isMongooseArray.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/types/array/methods/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/types/arraySubdocument.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/types/buffer.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/types/decimal128.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/types/documentArray/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/types/documentArray/isMongooseDocumentArray.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/types/documentArray/methods/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/types/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/types/map.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/types/objectid.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/types/subdocument.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/types/uuid.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/utils.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/validOptions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/lib/virtualType.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/node_modules/ms/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/node_modules/ms/license.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/node_modules/ms/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/node_modules/ms/readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/aggregate.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/augmentations.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/callback.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/collection.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/connection.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/cursor.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/document.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/error.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/expressions.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/helpers.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/indexes.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/inferrawdoctype.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/inferschematype.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/middlewares.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/models.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/mongooseoptions.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/pipelinestage.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/populate.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/query.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/schemaoptions.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/schematypes.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/session.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/types.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/utility.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/validation.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mongoose/types/virtuals.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mpath/.travis.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mpath/History.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mpath/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mpath/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mpath/SECURITY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mpath/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mpath/lib/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mpath/lib/stringToParts.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mpath/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mpath/test/.eslintrc.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mpath/test/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mpath/test/stringToParts.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/.github/ISSUE_TEMPLATE.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/.github/PULL_REQUEST_TEMPLATE.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/History.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/SECURITY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/lib/collection/collection.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/lib/collection/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/lib/collection/node.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/lib/env.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/lib/mquery.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/lib/permissions.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/lib/utils.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/node_modules/debug/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/node_modules/debug/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/node_modules/debug/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/node_modules/debug/src/browser.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/node_modules/debug/src/common.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/node_modules/debug/src/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/node_modules/debug/src/node.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/node_modules/ms/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/node_modules/ms/license.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/node_modules/ms/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/node_modules/ms/readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/mquery/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ms/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ms/license.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ms/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/ms/readme.md (100%) create mode 100644 node_backend/node_modules/multer/LICENSE create mode 100644 node_backend/node_modules/multer/README.md create mode 100644 node_backend/node_modules/multer/index.js create mode 100644 node_backend/node_modules/multer/lib/counter.js create mode 100644 node_backend/node_modules/multer/lib/file-appender.js create mode 100644 node_backend/node_modules/multer/lib/make-middleware.js create mode 100644 node_backend/node_modules/multer/lib/multer-error.js create mode 100644 node_backend/node_modules/multer/lib/remove-uploaded-files.js create mode 100644 node_backend/node_modules/multer/node_modules/.bin/mkdirp create mode 100644 node_backend/node_modules/multer/node_modules/.bin/mkdirp.cmd create mode 100644 node_backend/node_modules/multer/node_modules/.bin/mkdirp.ps1 create mode 100644 node_backend/node_modules/multer/node_modules/mkdirp/LICENSE create mode 100644 node_backend/node_modules/multer/node_modules/mkdirp/bin/cmd.js create mode 100644 node_backend/node_modules/multer/node_modules/mkdirp/bin/usage.txt create mode 100644 node_backend/node_modules/multer/node_modules/mkdirp/index.js create mode 100644 node_backend/node_modules/multer/node_modules/mkdirp/package.json create mode 100644 node_backend/node_modules/multer/node_modules/mkdirp/readme.markdown create mode 100644 node_backend/node_modules/multer/package.json create mode 100644 node_backend/node_modules/multer/storage/disk.js create mode 100644 node_backend/node_modules/multer/storage/memory.js rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/negotiator/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/negotiator/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/negotiator/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/negotiator/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/negotiator/lib/charset.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/negotiator/lib/encoding.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/negotiator/lib/language.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/negotiator/lib/mediaType.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/negotiator/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-addon-api/LICENSE.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-addon-api/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-addon-api/common.gypi (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-addon-api/except.gypi (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-addon-api/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-addon-api/napi-inl.deprecated.h (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-addon-api/napi-inl.h (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-addon-api/napi.h (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-addon-api/node_api.gyp (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-addon-api/noexcept.gypi (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-addon-api/nothing.c (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-addon-api/package-support.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-addon-api/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-addon-api/tools/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-addon-api/tools/check-napi.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-addon-api/tools/clang-format.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-addon-api/tools/conversion.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-addon-api/tools/eslint-format.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/LICENSE.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/browser.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/lib/index.es.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/lib/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/lib/index.mjs (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/node_modules/tr46/.npmignore (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/node_modules/tr46/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/node_modules/tr46/lib/.gitkeep (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/node_modules/tr46/lib/mappingTable.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/node_modules/tr46/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/node_modules/webidl-conversions/LICENSE.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/node_modules/webidl-conversions/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/node_modules/webidl-conversions/lib/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/node_modules/webidl-conversions/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/node_modules/whatwg-url/LICENSE.txt (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/node_modules/whatwg-url/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/node_modules/whatwg-url/lib/URL-impl.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/node_modules/whatwg-url/lib/URL.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/node_modules/whatwg-url/lib/public-api.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/node_modules/whatwg-url/lib/url-state-machine.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/node_modules/whatwg-url/lib/utils.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/node_modules/whatwg-url/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/node-fetch/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/nopt/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/nopt/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/nopt/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/nopt/bin/nopt.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/nopt/lib/nopt.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/nopt/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/npmlog/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/npmlog/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/npmlog/log.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/npmlog/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-assign/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-assign/license (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-assign/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-assign/readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/.eslintrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/.github/FUNDING.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/.nycrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/example/all.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/example/circular.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/example/fn.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/example/inspect.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/package-support.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/readme.markdown (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test-core-js.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/bigint.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/browser/dom.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/circular.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/deep.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/element.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/err.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/fakes.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/fn.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/global.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/has.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/holes.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/indent-option.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/inspect.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/lowbyte.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/number.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/quoteStyle.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/toStringTag.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/undef.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/test/values.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/object-inspect/util.inspect.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/on-finished/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/on-finished/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/on-finished/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/on-finished/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/on-finished/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/once/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/once/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/once/once.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/once/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/parseurl/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/parseurl/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/parseurl/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/parseurl/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/parseurl/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/path-is-absolute/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/path-is-absolute/license (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/path-is-absolute/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/path-is-absolute/readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/path-to-regexp/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/path-to-regexp/Readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/path-to-regexp/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/path-to-regexp/package.json (100%) create mode 100644 node_backend/node_modules/process-nextick-args/index.js create mode 100644 node_backend/node_modules/process-nextick-args/license.md create mode 100644 node_backend/node_modules/process-nextick-args/package.json create mode 100644 node_backend/node_modules/process-nextick-args/readme.md rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/proxy-addr/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/proxy-addr/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/proxy-addr/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/proxy-addr/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/proxy-addr/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/punycode/LICENSE-MIT.txt (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/punycode/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/punycode/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/punycode/punycode.es6.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/punycode/punycode.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/qs/.editorconfig (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/qs/.eslintrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/qs/.github/FUNDING.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/qs/.nycrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/qs/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/qs/LICENSE.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/qs/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/qs/dist/qs.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/qs/lib/formats.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/qs/lib/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/qs/lib/parse.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/qs/lib/stringify.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/qs/lib/utils.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/qs/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/qs/test/empty-keys-cases.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/qs/test/parse.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/qs/test/stringify.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/qs/test/utils.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/range-parser/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/range-parser/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/range-parser/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/range-parser/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/range-parser/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/raw-body/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/raw-body/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/raw-body/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/raw-body/SECURITY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/raw-body/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/raw-body/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/raw-body/package.json (100%) create mode 100644 node_backend/node_modules/readable-stream/CONTRIBUTING.md create mode 100644 node_backend/node_modules/readable-stream/GOVERNANCE.md create mode 100644 node_backend/node_modules/readable-stream/LICENSE rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/errors-browser.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/errors.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/experimentalWarning.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/lib/_stream_duplex.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/lib/_stream_passthrough.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/lib/_stream_readable.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/lib/_stream_transform.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/lib/_stream_writable.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/lib/internal/streams/async_iterator.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/lib/internal/streams/buffer_list.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/lib/internal/streams/destroy.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/lib/internal/streams/end-of-stream.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/lib/internal/streams/from-browser.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/lib/internal/streams/from.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/lib/internal/streams/pipeline.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/lib/internal/streams/state.js (100%) create mode 100644 node_backend/node_modules/readable-stream/lib/internal/streams/stream-browser.js create mode 100644 node_backend/node_modules/readable-stream/lib/internal/streams/stream.js rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/readable-browser.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/readable-stream/readable.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/rimraf/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/rimraf/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/rimraf/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/rimraf/bin.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/rimraf/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/rimraf/rimraf.js (100%) create mode 100644 node_backend/node_modules/safe-buffer/LICENSE create mode 100644 node_backend/node_modules/safe-buffer/README.md create mode 100644 node_backend/node_modules/safe-buffer/index.d.ts rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/safe-buffer/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/safe-buffer/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/safer-buffer/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/safer-buffer/Porting-Buffer.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/safer-buffer/Readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/safer-buffer/dangerous.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/safer-buffer/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/safer-buffer/safer.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/safer-buffer/tests.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/bin/semver.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/classes/comparator.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/classes/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/classes/range.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/classes/semver.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/clean.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/cmp.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/coerce.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/compare-build.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/compare-loose.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/compare.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/diff.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/eq.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/gt.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/gte.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/inc.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/lt.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/lte.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/major.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/minor.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/neq.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/parse.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/patch.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/prerelease.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/rcompare.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/rsort.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/satisfies.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/sort.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/functions/valid.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/internal/constants.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/internal/debug.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/internal/identifiers.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/internal/lrucache.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/internal/parse-options.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/internal/re.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/preload.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/range.bnf (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/ranges/gtr.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/ranges/intersects.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/ranges/ltr.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/ranges/max-satisfying.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/ranges/min-satisfying.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/ranges/min-version.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/ranges/outside.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/ranges/simplify.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/ranges/subset.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/ranges/to-comparators.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/semver/ranges/valid.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/send/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/send/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/send/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/send/SECURITY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/send/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/send/node_modules/encodeurl/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/send/node_modules/encodeurl/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/send/node_modules/encodeurl/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/send/node_modules/encodeurl/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/send/node_modules/encodeurl/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/send/node_modules/ms/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/send/node_modules/ms/license.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/send/node_modules/ms/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/send/node_modules/ms/readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/send/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/serve-static/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/serve-static/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/serve-static/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/serve-static/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/serve-static/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/set-blocking/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/set-blocking/LICENSE.txt (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/set-blocking/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/set-blocking/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/set-blocking/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/set-function-length/.eslintrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/set-function-length/.github/FUNDING.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/set-function-length/.nycrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/set-function-length/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/set-function-length/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/set-function-length/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/set-function-length/env.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/set-function-length/env.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/set-function-length/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/set-function-length/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/set-function-length/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/set-function-length/tsconfig.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/setprototypeof/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/setprototypeof/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/setprototypeof/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/setprototypeof/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/setprototypeof/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/setprototypeof/test/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/side-channel/.editorconfig (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/side-channel/.eslintrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/side-channel/.github/FUNDING.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/side-channel/.nycrc (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/side-channel/CHANGELOG.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/side-channel/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/side-channel/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/side-channel/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/side-channel/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/side-channel/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/side-channel/test/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/side-channel/tsconfig.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/MIT-LICENSE.txt (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/es/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/es/index.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/es5m/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/es5m/index.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/lib/core.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/lib/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/lib/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/lib/index.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/lib/operations.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/lib/utils.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/sift.csp.min.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/sift.csp.min.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/sift.min.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/sift.min.js.map (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/src/core.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/src/index.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/src/operations.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sift/src/utils.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/signal-exit/LICENSE.txt (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/signal-exit/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/signal-exit/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/signal-exit/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/signal-exit/signals.js (100%) create mode 100644 node_backend/node_modules/sparse-bitfield/.npmignore rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sparse-bitfield/.travis.yml (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sparse-bitfield/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sparse-bitfield/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sparse-bitfield/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sparse-bitfield/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/sparse-bitfield/test.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/statuses/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/statuses/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/statuses/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/statuses/codes.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/statuses/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/statuses/package.json (100%) create mode 100644 node_backend/node_modules/streamsearch/.eslintrc.js create mode 100644 node_backend/node_modules/streamsearch/.github/workflows/ci.yml create mode 100644 node_backend/node_modules/streamsearch/.github/workflows/lint.yml create mode 100644 node_backend/node_modules/streamsearch/LICENSE create mode 100644 node_backend/node_modules/streamsearch/README.md create mode 100644 node_backend/node_modules/streamsearch/lib/sbmh.js create mode 100644 node_backend/node_modules/streamsearch/package.json create mode 100644 node_backend/node_modules/streamsearch/test/test.js rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/string-width/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/string-width/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/string-width/license (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/string-width/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/string-width/readme.md (100%) create mode 100644 node_backend/node_modules/string_decoder/LICENSE create mode 100644 node_backend/node_modules/string_decoder/README.md create mode 100644 node_backend/node_modules/string_decoder/lib/string_decoder.js rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/string_decoder/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/strip-ansi/index.d.ts (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/strip-ansi/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/strip-ansi/license (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/strip-ansi/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/strip-ansi/readme.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/create.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/extract.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/get-write-flag.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/header.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/high-level-opt.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/large-numbers.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/list.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/mkdir.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/mode-fix.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/normalize-unicode.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/normalize-windows-path.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/pack.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/parse.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/path-reservations.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/pax.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/read-entry.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/replace.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/strip-absolute-path.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/strip-trailing-slashes.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/types.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/unpack.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/update.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/warn-mixin.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/winchars.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/lib/write-entry.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tar/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/toidentifier/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/toidentifier/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/toidentifier/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/toidentifier/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/toidentifier/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tr46/LICENSE.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tr46/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tr46/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tr46/lib/mappingTable.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tr46/lib/regexes.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tr46/lib/statusMapping.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/tr46/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/type-is/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/type-is/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/type-is/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/type-is/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/type-is/package.json (100%) create mode 100644 node_backend/node_modules/typedarray/.travis.yml create mode 100644 node_backend/node_modules/typedarray/LICENSE create mode 100644 node_backend/node_modules/typedarray/example/tarray.js create mode 100644 node_backend/node_modules/typedarray/index.js create mode 100644 node_backend/node_modules/typedarray/package.json create mode 100644 node_backend/node_modules/typedarray/readme.markdown create mode 100644 node_backend/node_modules/typedarray/test/server/undef_globals.js create mode 100644 node_backend/node_modules/typedarray/test/tarray.js rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/unpipe/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/unpipe/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/unpipe/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/unpipe/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/unpipe/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/util-deprecate/History.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/util-deprecate/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/util-deprecate/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/util-deprecate/browser.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/util-deprecate/node.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/util-deprecate/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/utils-merge/.npmignore (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/utils-merge/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/utils-merge/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/utils-merge/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/utils-merge/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/vary/HISTORY.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/vary/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/vary/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/vary/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/vary/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/webidl-conversions/LICENSE.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/webidl-conversions/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/webidl-conversions/lib/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/webidl-conversions/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/whatwg-url/LICENSE.txt (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/whatwg-url/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/whatwg-url/index.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/whatwg-url/lib/Function.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/whatwg-url/lib/URL-impl.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/whatwg-url/lib/URL.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/whatwg-url/lib/URLSearchParams-impl.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/whatwg-url/lib/URLSearchParams.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/whatwg-url/lib/VoidFunction.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/whatwg-url/lib/encoding.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/whatwg-url/lib/infra.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/whatwg-url/lib/percent-encoding.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/whatwg-url/lib/url-state-machine.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/whatwg-url/lib/urlencoded.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/whatwg-url/lib/utils.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/whatwg-url/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/whatwg-url/webidl2js-wrapper.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/wide-align/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/wide-align/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/wide-align/align.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/wide-align/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/wrappy/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/wrappy/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/wrappy/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/wrappy/wrappy.js (100%) create mode 100644 node_backend/node_modules/xtend/.jshintrc create mode 100644 node_backend/node_modules/xtend/LICENSE create mode 100644 node_backend/node_modules/xtend/README.md create mode 100644 node_backend/node_modules/xtend/immutable.js create mode 100644 node_backend/node_modules/xtend/mutable.js create mode 100644 node_backend/node_modules/xtend/package.json create mode 100644 node_backend/node_modules/xtend/test.js rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/yallist/LICENSE (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/yallist/README.md (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/yallist/iterator.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/yallist/package.json (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/node_modules/yallist/yallist.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/package-lock.json (90%) rename {Inscripciones_UAIE/node_backend => node_backend}/package.json (82%) create mode 100644 node_backend/routes/administradorRoutes rename {Inscripciones_UAIE/node_backend => node_backend}/routes/alumnoRoutes.js (100%) create mode 100644 node_backend/routes/authRoutes.js create mode 100644 node_backend/routes/docenteRoutes.js rename {Inscripciones_UAIE/node_backend => node_backend}/routes/materiasRoutes.js (69%) rename {Inscripciones_UAIE/node_backend => node_backend}/routes/userRoutes.js (100%) rename {Inscripciones_UAIE/node_backend => node_backend}/server.js (100%) create mode 100644 package-lock.json create mode 100644 package.json rename {Inscripciones_UAIE/react_frontend => react_frontend}/.gitignore (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/README.md (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/package-lock.json (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/package.json (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/public/favicon.ico (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/public/index.html (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/public/logo192.png (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/public/logo512.png (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/public/manifest.json (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/public/robots.txt (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/App.css (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/App.js (77%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/App.test.js (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/assets/logo_uaei.png (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/assets/logo_uaz.png (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/AlumnoList.js (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/CreateAlumno.js (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/CreateMateria.js (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/CreateUser.js (100%) create mode 100644 react_frontend/src/components/DocenteAlumnos.css create mode 100644 react_frontend/src/components/DocenteAlumnos.js rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/Encabezado.css (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/Encabezado.js (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/HorarioSeleccion.css (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/HorarioSeleccion.js (83%) rename Inscripciones_UAIE/react_frontend/src/components/InicioTutor.css => react_frontend/src/components/InicioDocente.css (69%) create mode 100644 react_frontend/src/components/InicioDocente.js create mode 100644 react_frontend/src/components/InicioDocente2.css create mode 100644 react_frontend/src/components/InicioDocente2.js create mode 100644 react_frontend/src/components/InicioTutor.css rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/InicioTutor.js (94%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/Pie_pagina.css (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/Pie_pagina.js (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/PrivateRoute.js (80%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/RedirectRoute.js (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/Registro.css (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/Registro.js (93%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/RevisionHorarioTutor.css (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/RevisionHorarioTutor.js (68%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/UserList.js (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/Validacion1.css (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/Validacion1.js (98%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/Validacion2.css (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/components/Validacion2.js (95%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/index.css (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/index.js (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/logo.svg (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/reportWebVitals.js (100%) rename {Inscripciones_UAIE/react_frontend => react_frontend}/src/setupTests.js (100%) diff --git a/Inscripciones_UAIE/node_backend/routes/authRoutes.js b/Inscripciones_UAIE/node_backend/routes/authRoutes.js deleted file mode 100644 index bb404479..00000000 --- a/Inscripciones_UAIE/node_backend/routes/authRoutes.js +++ /dev/null @@ -1,46 +0,0 @@ -// routes/authRoutes.js -const express = require('express'); -const router = express.Router(); -const jwt = require('jsonwebtoken'); -const bcrypt = require('bcrypt'); -const Alumno = require('../models/Alumno'); -const User = require('../models/User'); - -// Ruta de inicio de sesión para alumnos -router.post('/alumno/login', async (req, res) => { - const { matricula } = req.body; - try { - const alumno = await Alumno.findOne({ matricula }); - if (!alumno) { - return res.status(400).json({ mensaje: 'Alumno no encontrado' }); - } - - const token = jwt.sign({ id: alumno._id }, 'tu_secreto', { expiresIn: '1h' }); - return res.json({ mensaje: 'Inicio de sesión exitoso', token }); - } catch (error) { - return res.status(500).json({ mensaje: 'Error al iniciar sesión', error }); - } -}); - -// Ruta de inicio de sesión para personal -router.post('/usuario/login', async (req, res) => { - const { matricula, password } = req.body; - try { - const usuario = await User.findOne({ matricula }); - if (!usuario) { - return res.status(400).json({ mensaje: 'Usuario no encontrado' }); - } - - const isMatch = await bcrypt.compare(password, usuario.password); - if (!isMatch) { - return res.status(400).json({ mensaje: 'Contraseña incorrecta' }); - } - - const token = jwt.sign({ id: usuario._id }, 'tu_secreto', { expiresIn: '1h' }); - return res.json({ mensaje: 'Inicio de sesión exitoso', token }); - } catch (error) { - return res.status(500).json({ mensaje: 'Error al iniciar sesión', error }); - } -}); - -module.exports = router; diff --git a/Inscripciones_UAIE/react_frontend/node_modules/.cache/default-development/0.pack b/Inscripciones_UAIE/react_frontend/node_modules/.cache/default-development/0.pack deleted file mode 100644 index ebd8f6e86c4b3dc356d224c3ff054af5c52ee821..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 464083 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%0DZ}QuU@BnlMNTP@+8sLG15*eQ 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 Gad7}-kcR01 diff --git a/Inscripciones_UAIE/react_frontend/node_modules/.cache/default-development/index.pack b/Inscripciones_UAIE/react_frontend/node_modules/.cache/default-development/index.pack deleted file mode 100644 index ced78dcbca364aba7a0545dfe0bbd8cf558739cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1804818 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

B( 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\UK(5dQSpseZCYNA~ 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 diff --git a/Inscripciones_UAIE/react_frontend/node_modules/.cache/default-development/index.pack.old b/Inscripciones_UAIE/react_frontend/node_modules/.cache/default-development/index.pack.old deleted file mode 100644 index 1e9296c7be29437dfe4c541e6c9a95e78bb766ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1804209 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

L? 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%0AjPTkyI9d}ftzVo7p_Z)$E*Y7yeNU#gBhfkOaP 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

4)R(}khZ5TN)<$pRjmXfE3r7$%!E2)+IYjJ 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 baE0_n4GlrPY> { - const { matricula, nombre } = req.body; + console.log('Alumno:', req.body); + const { matricula, nombre, telefono, correo } = req.body; try { - const newAlumno = new Alumno({ matricula, nombre }); + const newAlumno = new Alumno({ matricula, nombre, telefono, correo }); await newAlumno.save(); res.status(201).json(newAlumno); } catch (error) { diff --git a/node_backend/controllers/docenteController.js b/node_backend/controllers/docenteController.js new file mode 100644 index 00000000..5d6b8290 --- /dev/null +++ b/node_backend/controllers/docenteController.js @@ -0,0 +1,68 @@ +const Docente = require('../models/Docentes'); +const bcrypt = require('bcryptjs'); + +exports.createDocente = async (req, res) => { + console.log('Docente:', req.body); + const { nombre, matricula, password } = req.body; + try { + const newDocente = new Docente({ nombre, matricula, password }); + await newDocente.save(); + res.status(201).json(newDocente); + } catch (error) { + res.status(500).json({ message: 'Error al crear el docente', error }); + } + }; + + // Obtener todos los docentes + exports.getDocentes = async (req, res) => { + try { + const docentes = await Docente.find(); + res.status(200).json(docentes); + } catch (error) { + res.status(500).json({ message: 'Error al obtener docentes', error }); + } + }; + + // Obtener un docente por ID + exports.getDocenteById = async (req, res) => { + try { + const docente = await Docente.findById(req.params.id); + if (!docente) { + return res.status(404).json({ message: 'Docente no encontrado' }); + } + res.status(200).json(docente); + } catch (error) { + res.status(500).json({ message: 'Error al obtener el docente', error }); + } + }; + + // Actualizar un docente + exports.updateDocente = async (req, res) => { + const { nombre, matricula, password } = req.body; + try { + const docente = await Docente.findByIdAndUpdate( + req.params.id, + { nombre, matricula, password }, + { new: true } + ); + if (!docente) { + return res.status(404).json({ message: 'Docente no encontrado' }); + } + res.status(200).json(docente); + } catch (error) { + res.status(500).json({ message: 'Error al actualizar el docente', error }); + } + }; + + // Eliminar un docente + exports.deleteDocente = async (req, res) => { + try { + const docente = await Docente.findByIdAndDelete(req.params.id); + if (!docente) { + return res.status(404).json({ message: 'Docente no encontrado' }); + } + res.status(204).json({ message: 'Docente eliminado' }); + } catch (error) { + res.status(500).json({ message: 'Error al eliminar el docente', error }); + } + }; \ No newline at end of file diff --git a/Inscripciones_UAIE/node_backend/controllers/materiaController.js b/node_backend/controllers/materiaController.js similarity index 52% rename from Inscripciones_UAIE/node_backend/controllers/materiaController.js rename to node_backend/controllers/materiaController.js index 1a0ba098..b73960fb 100644 --- a/Inscripciones_UAIE/node_backend/controllers/materiaController.js +++ b/node_backend/controllers/materiaController.js @@ -1,14 +1,16 @@ +const fs = require('fs'); +const csv = require('csv-parser'); const Materia = require('../models/Materia'); // Crear una nueva materia exports.createMateria = async (req, res) => { - const { nombre, horarios, salon, cupo, docente } = req.body; + const { id_materia, nombre, horarios, salon, cupo, docente } = req.body; console.log('Datos recibidos para crear la materia:', req.body); try { const docenteFinal = docente.trim() === "" ? null : docente; - const newMateria = new Materia({ nombre, horarios, salon, cupo, docente: docenteFinal }); + const newMateria = new Materia({ id_materia, nombre, horarios, salon, cupo, docente: docenteFinal }); await newMateria.save(); console.log('Materia creada:', newMateria); @@ -75,3 +77,58 @@ exports.deleteMateria = async (req, res) => { res.status(500).json({ message: 'Error al eliminar la materia', error }); } }; + +exports.uploadCSV = async (req, res) => { + try { + const filePath = req.file.path; // Ruta del archivo subido + const materias = []; + + // Leer y procesar el archivo CSV + fs.createReadStream(filePath) + .pipe(csv()) + .on('data', async (row) => { + try { + // Buscar el docente si es necesario + const docenteEncontrado = row['ID_DOCENTE'] + ? await Docente.findOne({ nombre: row['ID_DOCENTE'] }) + : null; + + // Crear un objeto Materia para cada fila del CSV + const materia = { + nombre: row['MATERIA'], + grupo: row['GRUPO'], + salon: row['SALON'], + cupo: parseInt(row['CUPO'], 10), + docente: docenteEncontrado ? docenteEncontrado._id : null, + horarios: { + lunes: row['LUNES'] || null, + martes: row['MARTES'] || null, + miercoles: row['MIERCOLES'] || null, + jueves: row['JUEVES'] || null, + viernes: row['VIERNES'] || null, + sabado: row['SABADO'] || null, + }, + }; + + materias.push(materia); + } catch (error) { + console.error(`Error al procesar la fila: ${JSON.stringify(row)}. Error: ${error.message}`); + } + }) + .on('end', async () => { + try { + // Guardar todas las materias en MongoDB + await Materia.insertMany(materias); + res.status(201).json({ message: 'Materias subidas exitosamente' }); + } catch (err) { + console.error('Error al guardar las materias:', err); + res.status(500).json({ message: 'Error al guardar las materias', error: err }); + } finally { + // Eliminar el archivo temporal + fs.unlinkSync(filePath); + } + }); + } catch (err) { + res.status(500).json({ message: 'Error al procesar el archivo', error: err }); + } +}; \ No newline at end of file diff --git a/Inscripciones_UAIE/node_backend/controllers/userController.js b/node_backend/controllers/userController.js similarity index 100% rename from Inscripciones_UAIE/node_backend/controllers/userController.js rename to node_backend/controllers/userController.js diff --git a/node_backend/models/Administrador_Gen.js b/node_backend/models/Administrador_Gen.js new file mode 100644 index 00000000..1f4b127f --- /dev/null +++ b/node_backend/models/Administrador_Gen.js @@ -0,0 +1,12 @@ +const mongoose = require('mongoose'); +const Schema = mongoose.Schema; + +const AdministradorGenMdl = new Schema({ + nombre: { type: String, required: true }, + matricula: { type: String, required: true, unique: true }, + password:{ type: String, required: true }, + }); + + + +module.exports = mongoose.model('AdministradorGen', AdministradorGenMdl); \ No newline at end of file diff --git a/node_backend/models/Administradores.js b/node_backend/models/Administradores.js new file mode 100644 index 00000000..20089825 --- /dev/null +++ b/node_backend/models/Administradores.js @@ -0,0 +1,12 @@ +const mongoose = require('mongoose'); +const Schema = mongoose.Schema; + +const AdministradorMdl = new Schema({ + idcarrera:{type: String, required: true}, + nombre: { type: String, required: true }, + matricula: { type: String, required: true, unique: true }, + password:{ type: String, required: true }, + }); + + +module.exports = mongoose.model('Administrador', AdministradorMdl); \ No newline at end of file diff --git a/Inscripciones_UAIE/node_backend/models/Alumno.js b/node_backend/models/Alumno.js similarity index 79% rename from Inscripciones_UAIE/node_backend/models/Alumno.js rename to node_backend/models/Alumno.js index adb4e1ed..3ef13669 100644 --- a/Inscripciones_UAIE/node_backend/models/Alumno.js +++ b/node_backend/models/Alumno.js @@ -4,6 +4,8 @@ const Schema = mongoose.Schema; const AlumnoSchema = new Schema({ matricula: { type: String, required: true, unique: true }, nombre: { type: String, required: true }, + telefono: { type: String, required: true }, + correo: { type: String, required: true }, horario: { type: Schema.Types.ObjectId, ref: 'Horario', default: null } }); diff --git a/node_backend/models/Coordinador_Gen.js b/node_backend/models/Coordinador_Gen.js new file mode 100644 index 00000000..ca1fa45e --- /dev/null +++ b/node_backend/models/Coordinador_Gen.js @@ -0,0 +1,12 @@ +const mongoose = require('mongoose'); +const Schema = mongoose.Schema; + +const CoordinadorGenMdl = new Schema({ + nombre: { type: String, required: true }, + matricula: { type: String, required: true, unique: true }, + password:{ type: String, required: true }, + alumnos: [{ type: Schema.Types.ObjectId, ref: 'Alumno', default: [] }] // Array de referencias a 'Alumno' +}); + + +module.exports = mongoose.model('CoordinadorGen', CoordinadorGenMdl); \ No newline at end of file diff --git a/node_backend/models/Coordinadores.js b/node_backend/models/Coordinadores.js new file mode 100644 index 00000000..602b65ba --- /dev/null +++ b/node_backend/models/Coordinadores.js @@ -0,0 +1,13 @@ +const mongoose = require('mongoose'); +const Schema = mongoose.Schema; + +const CoordinadorMdl = new Schema({ + idcarrera:{type: String, required: true}, + nombre: { type: String, required: true }, + matricula: { type: String, required: true, unique: true }, + password:{ type: String, required: true }, + alumnos: [{ type: Schema.Types.ObjectId, ref: 'Alumno', default: [] }] // Array de referencias a 'Alumno' + }); + + +module.exports = mongoose.model('Coordinador', CoordinadorMdl); \ No newline at end of file diff --git a/node_backend/models/Docentes.js b/node_backend/models/Docentes.js new file mode 100644 index 00000000..6ed30f0b --- /dev/null +++ b/node_backend/models/Docentes.js @@ -0,0 +1,12 @@ +const mongoose = require('mongoose'); +const Schema = mongoose.Schema; + +const DocentesMdl = new Schema({ + nombre: { type: String, required: true }, + matricula: { type: String, required: true, unique: true }, + password:{ type: String, required: true }, + materias: [{ type: Schema.Types.ObjectId, ref: 'Materia', default: [] }], // Array de referencias a 'Horario' + alumnos: [{ type: Schema.Types.ObjectId, ref: 'Alumno', default: [] }] // Array de referencias a 'Alumno' + }); + +module.exports = mongoose.model('Docente', DocentesMdl); \ No newline at end of file diff --git a/Inscripciones_UAIE/node_backend/models/Horario.js b/node_backend/models/Horario.js similarity index 100% rename from Inscripciones_UAIE/node_backend/models/Horario.js rename to node_backend/models/Horario.js diff --git a/Inscripciones_UAIE/node_backend/models/Materia.js b/node_backend/models/Materia.js similarity index 82% rename from Inscripciones_UAIE/node_backend/models/Materia.js rename to node_backend/models/Materia.js index 7e1b6c46..bb2aa09d 100644 --- a/Inscripciones_UAIE/node_backend/models/Materia.js +++ b/node_backend/models/Materia.js @@ -2,13 +2,15 @@ const mongoose = require('mongoose'); const Schema = mongoose.Schema; const MateriaSchema = new Schema({ + id_materia: {type: Number, required: false}, nombre: { type: String, required: true }, horarios: { lunes: { type: String, default: null }, // "8:30-10:00" formato opcional martes: { type: String, default: null }, miercoles: { type: String, default: null }, jueves: { type: String, default: null }, - viernes: { type: String, default: null } + viernes: { type: String, default: null }, + sabado: { type: String, default: null } }, salon: { type: String, required: true }, grupo: { type: String, required: true }, diff --git a/node_backend/models/Tutores.js b/node_backend/models/Tutores.js new file mode 100644 index 00000000..18861386 --- /dev/null +++ b/node_backend/models/Tutores.js @@ -0,0 +1,11 @@ +const mongoose = require('mongoose'); +const Schema = mongoose.Schema; + +const TutoresMdl = new Schema({ + nombre: { type: String, required: true }, + matricula: { type: String, required: true, unique: true }, + password:{ type: String, required: true }, + alumnos: [{ type: Schema.Types.ObjectId, ref: 'Alumno', default: [] }] // Array de referencias a 'Alumno' + }); + +module.exports = mongoose.model('Tutor', TutoresMdl); \ No newline at end of file diff --git a/Inscripciones_UAIE/node_backend/models/User.js b/node_backend/models/User.js similarity index 100% rename from Inscripciones_UAIE/node_backend/models/User.js rename to node_backend/models/User.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/color-support b/node_backend/node_modules/.bin/color-support similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/color-support rename to node_backend/node_modules/.bin/color-support diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/color-support.cmd b/node_backend/node_modules/.bin/color-support.cmd similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/color-support.cmd rename to node_backend/node_modules/.bin/color-support.cmd diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/color-support.ps1 b/node_backend/node_modules/.bin/color-support.ps1 similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/color-support.ps1 rename to node_backend/node_modules/.bin/color-support.ps1 diff --git a/node_backend/node_modules/.bin/csv-parser b/node_backend/node_modules/.bin/csv-parser new file mode 100644 index 00000000..bb9d835d --- /dev/null +++ b/node_backend/node_modules/.bin/csv-parser @@ -0,0 +1,12 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../csv-parser/bin/csv-parser" "$@" +else + exec node "$basedir/../csv-parser/bin/csv-parser" "$@" +fi diff --git a/node_backend/node_modules/.bin/csv-parser.cmd b/node_backend/node_modules/.bin/csv-parser.cmd new file mode 100644 index 00000000..f63e2b84 --- /dev/null +++ b/node_backend/node_modules/.bin/csv-parser.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\csv-parser\bin\csv-parser" %* diff --git a/node_backend/node_modules/.bin/csv-parser.ps1 b/node_backend/node_modules/.bin/csv-parser.ps1 new file mode 100644 index 00000000..34496c29 --- /dev/null +++ b/node_backend/node_modules/.bin/csv-parser.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../csv-parser/bin/csv-parser" $args + } else { + & "$basedir/node$exe" "$basedir/../csv-parser/bin/csv-parser" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../csv-parser/bin/csv-parser" $args + } else { + & "node$exe" "$basedir/../csv-parser/bin/csv-parser" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/mime b/node_backend/node_modules/.bin/mime similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/mime rename to node_backend/node_modules/.bin/mime diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/mime.cmd b/node_backend/node_modules/.bin/mime.cmd similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/mime.cmd rename to node_backend/node_modules/.bin/mime.cmd diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/mime.ps1 b/node_backend/node_modules/.bin/mime.ps1 similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/mime.ps1 rename to node_backend/node_modules/.bin/mime.ps1 diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/mkdirp b/node_backend/node_modules/.bin/mkdirp similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/mkdirp rename to node_backend/node_modules/.bin/mkdirp diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/mkdirp.cmd b/node_backend/node_modules/.bin/mkdirp.cmd similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/mkdirp.cmd rename to node_backend/node_modules/.bin/mkdirp.cmd diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/mkdirp.ps1 b/node_backend/node_modules/.bin/mkdirp.ps1 similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/mkdirp.ps1 rename to node_backend/node_modules/.bin/mkdirp.ps1 diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/node-pre-gyp b/node_backend/node_modules/.bin/node-pre-gyp similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/node-pre-gyp rename to node_backend/node_modules/.bin/node-pre-gyp diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/node-pre-gyp.cmd b/node_backend/node_modules/.bin/node-pre-gyp.cmd similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/node-pre-gyp.cmd rename to node_backend/node_modules/.bin/node-pre-gyp.cmd diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/node-pre-gyp.ps1 b/node_backend/node_modules/.bin/node-pre-gyp.ps1 similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/node-pre-gyp.ps1 rename to node_backend/node_modules/.bin/node-pre-gyp.ps1 diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/nopt b/node_backend/node_modules/.bin/nopt similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/nopt rename to node_backend/node_modules/.bin/nopt diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/nopt.cmd b/node_backend/node_modules/.bin/nopt.cmd similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/nopt.cmd rename to node_backend/node_modules/.bin/nopt.cmd diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/nopt.ps1 b/node_backend/node_modules/.bin/nopt.ps1 similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/nopt.ps1 rename to node_backend/node_modules/.bin/nopt.ps1 diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/rimraf b/node_backend/node_modules/.bin/rimraf similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/rimraf rename to node_backend/node_modules/.bin/rimraf diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/rimraf.cmd b/node_backend/node_modules/.bin/rimraf.cmd similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/rimraf.cmd rename to node_backend/node_modules/.bin/rimraf.cmd diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/rimraf.ps1 b/node_backend/node_modules/.bin/rimraf.ps1 similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/rimraf.ps1 rename to node_backend/node_modules/.bin/rimraf.ps1 diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/semver b/node_backend/node_modules/.bin/semver similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/semver rename to node_backend/node_modules/.bin/semver diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/semver.cmd b/node_backend/node_modules/.bin/semver.cmd similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/semver.cmd rename to node_backend/node_modules/.bin/semver.cmd diff --git a/Inscripciones_UAIE/node_backend/node_modules/.bin/semver.ps1 b/node_backend/node_modules/.bin/semver.ps1 similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/.bin/semver.ps1 rename to node_backend/node_modules/.bin/semver.ps1 diff --git a/Inscripciones_UAIE/node_backend/node_modules/.package-lock.json b/node_backend/node_modules/.package-lock.json similarity index 90% rename from Inscripciones_UAIE/node_backend/node_modules/.package-lock.json rename to node_backend/node_modules/.package-lock.json index e34551ef..0dac5d82 100644 --- a/Inscripciones_UAIE/node_backend/node_modules/.package-lock.json +++ b/node_backend/node_modules/.package-lock.json @@ -101,6 +101,11 @@ "node": ">=8" } }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, "node_modules/aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", @@ -192,6 +197,22 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -239,6 +260,47 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -276,6 +338,11 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", @@ -288,6 +355,20 @@ "node": ">= 0.10" } }, + "node_modules/csv-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-3.0.0.tgz", + "integrity": "sha512-s6OYSXAK3IdKqYO33y09jhypG/bSDHPuyCme/IdEHfWpLf/jKcpitVFyOC6UemgGk8v7Q5u2XE0vvwmanxhGlQ==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "csv-parser": "bin/csv-parser" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -728,6 +809,11 @@ "node": ">=8" } }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "node_modules/jsonwebtoken": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", @@ -908,6 +994,14 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -1075,6 +1169,34 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/multer/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -1211,6 +1333,11 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -1449,6 +1576,14 @@ "node": ">= 0.8" } }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -1528,6 +1663,11 @@ "node": ">= 0.6" } }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -1590,6 +1730,14 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/.github/workflows/codeql.yml b/node_backend/node_modules/@mapbox/node-pre-gyp/.github/workflows/codeql.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/.github/workflows/codeql.yml rename to node_backend/node_modules/@mapbox/node-pre-gyp/.github/workflows/codeql.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/CHANGELOG.md b/node_backend/node_modules/@mapbox/node-pre-gyp/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/CHANGELOG.md rename to node_backend/node_modules/@mapbox/node-pre-gyp/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/LICENSE b/node_backend/node_modules/@mapbox/node-pre-gyp/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/LICENSE rename to node_backend/node_modules/@mapbox/node-pre-gyp/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/README.md b/node_backend/node_modules/@mapbox/node-pre-gyp/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/README.md rename to node_backend/node_modules/@mapbox/node-pre-gyp/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/bin/node-pre-gyp b/node_backend/node_modules/@mapbox/node-pre-gyp/bin/node-pre-gyp similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/bin/node-pre-gyp rename to node_backend/node_modules/@mapbox/node-pre-gyp/bin/node-pre-gyp diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/bin/node-pre-gyp.cmd b/node_backend/node_modules/@mapbox/node-pre-gyp/bin/node-pre-gyp.cmd similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/bin/node-pre-gyp.cmd rename to node_backend/node_modules/@mapbox/node-pre-gyp/bin/node-pre-gyp.cmd diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/contributing.md b/node_backend/node_modules/@mapbox/node-pre-gyp/contributing.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/contributing.md rename to node_backend/node_modules/@mapbox/node-pre-gyp/contributing.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/build.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/build.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/build.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/build.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/clean.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/clean.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/clean.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/clean.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/configure.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/configure.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/configure.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/configure.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/info.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/info.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/info.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/info.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/install.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/install.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/install.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/install.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/main.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/main.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/main.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/main.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/node-pre-gyp.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/node-pre-gyp.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/node-pre-gyp.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/node-pre-gyp.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/package.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/package.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/package.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/package.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/pre-binding.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/pre-binding.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/pre-binding.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/pre-binding.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/publish.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/publish.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/publish.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/publish.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/rebuild.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/rebuild.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/rebuild.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/rebuild.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/reinstall.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/reinstall.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/reinstall.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/reinstall.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/reveal.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/reveal.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/reveal.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/reveal.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/testbinary.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/testbinary.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/testbinary.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/testbinary.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/testpackage.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/testpackage.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/testpackage.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/testpackage.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/unpublish.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/unpublish.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/unpublish.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/unpublish.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/abi_crosswalk.json b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/abi_crosswalk.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/abi_crosswalk.json rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/abi_crosswalk.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/compile.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/compile.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/compile.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/compile.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/handle_gyp_opts.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/handle_gyp_opts.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/handle_gyp_opts.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/handle_gyp_opts.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/napi.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/napi.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/napi.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/napi.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/index.html b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/index.html similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/index.html rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/index.html diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/package.json b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/package.json rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/s3_setup.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/s3_setup.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/s3_setup.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/s3_setup.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/versioning.js b/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/versioning.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/versioning.js rename to node_backend/node_modules/@mapbox/node-pre-gyp/lib/util/versioning.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/package.json b/node_backend/node_modules/@mapbox/node-pre-gyp/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mapbox/node-pre-gyp/package.json rename to node_backend/node_modules/@mapbox/node-pre-gyp/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/LICENSE b/node_backend/node_modules/@mongodb-js/saslprep/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/LICENSE rename to node_backend/node_modules/@mongodb-js/saslprep/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/.esm-wrapper.mjs b/node_backend/node_modules/@mongodb-js/saslprep/dist/.esm-wrapper.mjs similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/.esm-wrapper.mjs rename to node_backend/node_modules/@mongodb-js/saslprep/dist/.esm-wrapper.mjs diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/browser.d.ts b/node_backend/node_modules/@mongodb-js/saslprep/dist/browser.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/browser.d.ts rename to node_backend/node_modules/@mongodb-js/saslprep/dist/browser.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/browser.d.ts.map b/node_backend/node_modules/@mongodb-js/saslprep/dist/browser.d.ts.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/browser.d.ts.map rename to node_backend/node_modules/@mongodb-js/saslprep/dist/browser.d.ts.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/browser.js b/node_backend/node_modules/@mongodb-js/saslprep/dist/browser.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/browser.js rename to node_backend/node_modules/@mongodb-js/saslprep/dist/browser.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/browser.js.map b/node_backend/node_modules/@mongodb-js/saslprep/dist/browser.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/browser.js.map rename to node_backend/node_modules/@mongodb-js/saslprep/dist/browser.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts b/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts rename to node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts.map b/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts.map rename to node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js b/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js rename to node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js.map b/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js.map rename to node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts b/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts rename to node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts.map b/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts.map rename to node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data.js b/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data.js rename to node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data.js.map b/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data.js.map rename to node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-data.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts b/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts rename to node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts.map b/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts.map rename to node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-src.js b/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-src.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-src.js rename to node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-src.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-src.js.map b/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-src.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-src.js.map rename to node_backend/node_modules/@mongodb-js/saslprep/dist/code-points-src.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts b/node_backend/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts rename to node_backend/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts.map b/node_backend/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts.map rename to node_backend/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js b/node_backend/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js rename to node_backend/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js.map b/node_backend/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js.map rename to node_backend/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/index.d.ts b/node_backend/node_modules/@mongodb-js/saslprep/dist/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/index.d.ts rename to node_backend/node_modules/@mongodb-js/saslprep/dist/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/index.d.ts.map b/node_backend/node_modules/@mongodb-js/saslprep/dist/index.d.ts.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/index.d.ts.map rename to node_backend/node_modules/@mongodb-js/saslprep/dist/index.d.ts.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/index.js b/node_backend/node_modules/@mongodb-js/saslprep/dist/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/index.js rename to node_backend/node_modules/@mongodb-js/saslprep/dist/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/index.js.map b/node_backend/node_modules/@mongodb-js/saslprep/dist/index.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/index.js.map rename to node_backend/node_modules/@mongodb-js/saslprep/dist/index.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts b/node_backend/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts rename to node_backend/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts.map b/node_backend/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts.map rename to node_backend/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js b/node_backend/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js rename to node_backend/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js.map b/node_backend/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js.map rename to node_backend/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/node.d.ts b/node_backend/node_modules/@mongodb-js/saslprep/dist/node.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/node.d.ts rename to node_backend/node_modules/@mongodb-js/saslprep/dist/node.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/node.d.ts.map b/node_backend/node_modules/@mongodb-js/saslprep/dist/node.d.ts.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/node.d.ts.map rename to node_backend/node_modules/@mongodb-js/saslprep/dist/node.d.ts.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/node.js b/node_backend/node_modules/@mongodb-js/saslprep/dist/node.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/node.js rename to node_backend/node_modules/@mongodb-js/saslprep/dist/node.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/node.js.map b/node_backend/node_modules/@mongodb-js/saslprep/dist/node.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/node.js.map rename to node_backend/node_modules/@mongodb-js/saslprep/dist/node.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/util.d.ts b/node_backend/node_modules/@mongodb-js/saslprep/dist/util.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/util.d.ts rename to node_backend/node_modules/@mongodb-js/saslprep/dist/util.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/util.d.ts.map b/node_backend/node_modules/@mongodb-js/saslprep/dist/util.d.ts.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/util.d.ts.map rename to node_backend/node_modules/@mongodb-js/saslprep/dist/util.d.ts.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/util.js b/node_backend/node_modules/@mongodb-js/saslprep/dist/util.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/util.js rename to node_backend/node_modules/@mongodb-js/saslprep/dist/util.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/util.js.map b/node_backend/node_modules/@mongodb-js/saslprep/dist/util.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/dist/util.js.map rename to node_backend/node_modules/@mongodb-js/saslprep/dist/util.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/package.json b/node_backend/node_modules/@mongodb-js/saslprep/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/package.json rename to node_backend/node_modules/@mongodb-js/saslprep/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/readme.md b/node_backend/node_modules/@mongodb-js/saslprep/readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@mongodb-js/saslprep/readme.md rename to node_backend/node_modules/@mongodb-js/saslprep/readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/@types/webidl-conversions/LICENSE b/node_backend/node_modules/@types/webidl-conversions/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@types/webidl-conversions/LICENSE rename to node_backend/node_modules/@types/webidl-conversions/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/@types/webidl-conversions/README.md b/node_backend/node_modules/@types/webidl-conversions/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@types/webidl-conversions/README.md rename to node_backend/node_modules/@types/webidl-conversions/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/@types/webidl-conversions/index.d.ts b/node_backend/node_modules/@types/webidl-conversions/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@types/webidl-conversions/index.d.ts rename to node_backend/node_modules/@types/webidl-conversions/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/@types/webidl-conversions/package.json b/node_backend/node_modules/@types/webidl-conversions/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@types/webidl-conversions/package.json rename to node_backend/node_modules/@types/webidl-conversions/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/@types/whatwg-url/LICENSE b/node_backend/node_modules/@types/whatwg-url/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@types/whatwg-url/LICENSE rename to node_backend/node_modules/@types/whatwg-url/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/@types/whatwg-url/README.md b/node_backend/node_modules/@types/whatwg-url/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@types/whatwg-url/README.md rename to node_backend/node_modules/@types/whatwg-url/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/@types/whatwg-url/index.d.ts b/node_backend/node_modules/@types/whatwg-url/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@types/whatwg-url/index.d.ts rename to node_backend/node_modules/@types/whatwg-url/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/@types/whatwg-url/lib/URL-impl.d.ts b/node_backend/node_modules/@types/whatwg-url/lib/URL-impl.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@types/whatwg-url/lib/URL-impl.d.ts rename to node_backend/node_modules/@types/whatwg-url/lib/URL-impl.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/@types/whatwg-url/lib/URL.d.ts b/node_backend/node_modules/@types/whatwg-url/lib/URL.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@types/whatwg-url/lib/URL.d.ts rename to node_backend/node_modules/@types/whatwg-url/lib/URL.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/@types/whatwg-url/lib/URLSearchParams-impl.d.ts b/node_backend/node_modules/@types/whatwg-url/lib/URLSearchParams-impl.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@types/whatwg-url/lib/URLSearchParams-impl.d.ts rename to node_backend/node_modules/@types/whatwg-url/lib/URLSearchParams-impl.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/@types/whatwg-url/lib/URLSearchParams.d.ts b/node_backend/node_modules/@types/whatwg-url/lib/URLSearchParams.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@types/whatwg-url/lib/URLSearchParams.d.ts rename to node_backend/node_modules/@types/whatwg-url/lib/URLSearchParams.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/@types/whatwg-url/package.json b/node_backend/node_modules/@types/whatwg-url/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@types/whatwg-url/package.json rename to node_backend/node_modules/@types/whatwg-url/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/@types/whatwg-url/webidl2js-wrapper.d.ts b/node_backend/node_modules/@types/whatwg-url/webidl2js-wrapper.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/@types/whatwg-url/webidl2js-wrapper.d.ts rename to node_backend/node_modules/@types/whatwg-url/webidl2js-wrapper.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/abbrev/LICENSE b/node_backend/node_modules/abbrev/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/abbrev/LICENSE rename to node_backend/node_modules/abbrev/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/abbrev/README.md b/node_backend/node_modules/abbrev/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/abbrev/README.md rename to node_backend/node_modules/abbrev/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/abbrev/abbrev.js b/node_backend/node_modules/abbrev/abbrev.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/abbrev/abbrev.js rename to node_backend/node_modules/abbrev/abbrev.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/abbrev/package.json b/node_backend/node_modules/abbrev/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/abbrev/package.json rename to node_backend/node_modules/abbrev/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/accepts/HISTORY.md b/node_backend/node_modules/accepts/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/accepts/HISTORY.md rename to node_backend/node_modules/accepts/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/accepts/LICENSE b/node_backend/node_modules/accepts/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/accepts/LICENSE rename to node_backend/node_modules/accepts/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/accepts/README.md b/node_backend/node_modules/accepts/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/accepts/README.md rename to node_backend/node_modules/accepts/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/accepts/index.js b/node_backend/node_modules/accepts/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/accepts/index.js rename to node_backend/node_modules/accepts/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/accepts/package.json b/node_backend/node_modules/accepts/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/accepts/package.json rename to node_backend/node_modules/accepts/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/README.md b/node_backend/node_modules/agent-base/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/README.md rename to node_backend/node_modules/agent-base/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/dist/src/index.d.ts b/node_backend/node_modules/agent-base/dist/src/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/dist/src/index.d.ts rename to node_backend/node_modules/agent-base/dist/src/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/dist/src/index.js b/node_backend/node_modules/agent-base/dist/src/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/dist/src/index.js rename to node_backend/node_modules/agent-base/dist/src/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/dist/src/index.js.map b/node_backend/node_modules/agent-base/dist/src/index.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/dist/src/index.js.map rename to node_backend/node_modules/agent-base/dist/src/index.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/dist/src/promisify.d.ts b/node_backend/node_modules/agent-base/dist/src/promisify.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/dist/src/promisify.d.ts rename to node_backend/node_modules/agent-base/dist/src/promisify.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/dist/src/promisify.js b/node_backend/node_modules/agent-base/dist/src/promisify.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/dist/src/promisify.js rename to node_backend/node_modules/agent-base/dist/src/promisify.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/dist/src/promisify.js.map b/node_backend/node_modules/agent-base/dist/src/promisify.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/dist/src/promisify.js.map rename to node_backend/node_modules/agent-base/dist/src/promisify.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/debug/LICENSE b/node_backend/node_modules/agent-base/node_modules/debug/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/debug/LICENSE rename to node_backend/node_modules/agent-base/node_modules/debug/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/debug/README.md b/node_backend/node_modules/agent-base/node_modules/debug/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/debug/README.md rename to node_backend/node_modules/agent-base/node_modules/debug/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/debug/package.json b/node_backend/node_modules/agent-base/node_modules/debug/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/debug/package.json rename to node_backend/node_modules/agent-base/node_modules/debug/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/debug/src/browser.js b/node_backend/node_modules/agent-base/node_modules/debug/src/browser.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/debug/src/browser.js rename to node_backend/node_modules/agent-base/node_modules/debug/src/browser.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/debug/src/common.js b/node_backend/node_modules/agent-base/node_modules/debug/src/common.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/debug/src/common.js rename to node_backend/node_modules/agent-base/node_modules/debug/src/common.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/debug/src/index.js b/node_backend/node_modules/agent-base/node_modules/debug/src/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/debug/src/index.js rename to node_backend/node_modules/agent-base/node_modules/debug/src/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/debug/src/node.js b/node_backend/node_modules/agent-base/node_modules/debug/src/node.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/debug/src/node.js rename to node_backend/node_modules/agent-base/node_modules/debug/src/node.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/ms/index.js b/node_backend/node_modules/agent-base/node_modules/ms/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/ms/index.js rename to node_backend/node_modules/agent-base/node_modules/ms/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/ms/license.md b/node_backend/node_modules/agent-base/node_modules/ms/license.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/ms/license.md rename to node_backend/node_modules/agent-base/node_modules/ms/license.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/ms/package.json b/node_backend/node_modules/agent-base/node_modules/ms/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/ms/package.json rename to node_backend/node_modules/agent-base/node_modules/ms/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/ms/readme.md b/node_backend/node_modules/agent-base/node_modules/ms/readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/node_modules/ms/readme.md rename to node_backend/node_modules/agent-base/node_modules/ms/readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/package.json b/node_backend/node_modules/agent-base/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/package.json rename to node_backend/node_modules/agent-base/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/src/index.ts b/node_backend/node_modules/agent-base/src/index.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/src/index.ts rename to node_backend/node_modules/agent-base/src/index.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/agent-base/src/promisify.ts b/node_backend/node_modules/agent-base/src/promisify.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/agent-base/src/promisify.ts rename to node_backend/node_modules/agent-base/src/promisify.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/ansi-regex/index.d.ts b/node_backend/node_modules/ansi-regex/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ansi-regex/index.d.ts rename to node_backend/node_modules/ansi-regex/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/ansi-regex/index.js b/node_backend/node_modules/ansi-regex/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ansi-regex/index.js rename to node_backend/node_modules/ansi-regex/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/ansi-regex/license b/node_backend/node_modules/ansi-regex/license similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ansi-regex/license rename to node_backend/node_modules/ansi-regex/license diff --git a/Inscripciones_UAIE/node_backend/node_modules/ansi-regex/package.json b/node_backend/node_modules/ansi-regex/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ansi-regex/package.json rename to node_backend/node_modules/ansi-regex/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/ansi-regex/readme.md b/node_backend/node_modules/ansi-regex/readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ansi-regex/readme.md rename to node_backend/node_modules/ansi-regex/readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/delegates/.npmignore b/node_backend/node_modules/append-field/.npmignore similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/delegates/.npmignore rename to node_backend/node_modules/append-field/.npmignore diff --git a/node_backend/node_modules/append-field/LICENSE b/node_backend/node_modules/append-field/LICENSE new file mode 100644 index 00000000..14b1f891 --- /dev/null +++ b/node_backend/node_modules/append-field/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Linus Unnebäck + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_backend/node_modules/append-field/README.md b/node_backend/node_modules/append-field/README.md new file mode 100644 index 00000000..62b901b7 --- /dev/null +++ b/node_backend/node_modules/append-field/README.md @@ -0,0 +1,44 @@ +# `append-field` + +A [W3C HTML JSON forms spec](http://www.w3.org/TR/html-json-forms/) compliant +field appender (for lack of a better name). Useful for people implementing +`application/x-www-form-urlencoded` and `multipart/form-data` parsers. + +It works best on objects created with `Object.create(null)`. Otherwise it might +conflict with variables from the prototype (e.g. `hasOwnProperty`). + +## Installation + +```sh +npm install --save append-field +``` + +## Usage + +```javascript +var appendField = require('append-field') +var obj = Object.create(null) + +appendField(obj, 'pets[0][species]', 'Dahut') +appendField(obj, 'pets[0][name]', 'Hypatia') +appendField(obj, 'pets[1][species]', 'Felis Stultus') +appendField(obj, 'pets[1][name]', 'Billie') + +console.log(obj) +``` + +```text +{ pets: + [ { species: 'Dahut', name: 'Hypatia' }, + { species: 'Felis Stultus', name: 'Billie' } ] } +``` + +## API + +### `appendField(store, key, value)` + +Adds the field named `key` with the value `value` to the object `store`. + +## License + +MIT diff --git a/node_backend/node_modules/append-field/index.js b/node_backend/node_modules/append-field/index.js new file mode 100644 index 00000000..fc5acc8b --- /dev/null +++ b/node_backend/node_modules/append-field/index.js @@ -0,0 +1,12 @@ +var parsePath = require('./lib/parse-path') +var setValue = require('./lib/set-value') + +function appendField (store, key, value) { + var steps = parsePath(key) + + steps.reduce(function (context, step) { + return setValue(context, step, context[step.key], value) + }, store) +} + +module.exports = appendField diff --git a/node_backend/node_modules/append-field/lib/parse-path.js b/node_backend/node_modules/append-field/lib/parse-path.js new file mode 100644 index 00000000..31d61796 --- /dev/null +++ b/node_backend/node_modules/append-field/lib/parse-path.js @@ -0,0 +1,53 @@ +var reFirstKey = /^[^\[]*/ +var reDigitPath = /^\[(\d+)\]/ +var reNormalPath = /^\[([^\]]+)\]/ + +function parsePath (key) { + function failure () { + return [{ type: 'object', key: key, last: true }] + } + + var firstKey = reFirstKey.exec(key)[0] + if (!firstKey) return failure() + + var len = key.length + var pos = firstKey.length + var tail = { type: 'object', key: firstKey } + var steps = [tail] + + while (pos < len) { + var m + + if (key[pos] === '[' && key[pos + 1] === ']') { + pos += 2 + tail.append = true + if (pos !== len) return failure() + continue + } + + m = reDigitPath.exec(key.substring(pos)) + if (m !== null) { + pos += m[0].length + tail.nextType = 'array' + tail = { type: 'array', key: parseInt(m[1], 10) } + steps.push(tail) + continue + } + + m = reNormalPath.exec(key.substring(pos)) + if (m !== null) { + pos += m[0].length + tail.nextType = 'object' + tail = { type: 'object', key: m[1] } + steps.push(tail) + continue + } + + return failure() + } + + tail.last = true + return steps +} + +module.exports = parsePath diff --git a/node_backend/node_modules/append-field/lib/set-value.js b/node_backend/node_modules/append-field/lib/set-value.js new file mode 100644 index 00000000..c15e8737 --- /dev/null +++ b/node_backend/node_modules/append-field/lib/set-value.js @@ -0,0 +1,64 @@ +function valueType (value) { + if (value === undefined) return 'undefined' + if (Array.isArray(value)) return 'array' + if (typeof value === 'object') return 'object' + return 'scalar' +} + +function setLastValue (context, step, currentValue, entryValue) { + switch (valueType(currentValue)) { + case 'undefined': + if (step.append) { + context[step.key] = [entryValue] + } else { + context[step.key] = entryValue + } + break + case 'array': + context[step.key].push(entryValue) + break + case 'object': + return setLastValue(currentValue, { type: 'object', key: '', last: true }, currentValue[''], entryValue) + case 'scalar': + context[step.key] = [context[step.key], entryValue] + break + } + + return context +} + +function setValue (context, step, currentValue, entryValue) { + if (step.last) return setLastValue(context, step, currentValue, entryValue) + + var obj + switch (valueType(currentValue)) { + case 'undefined': + if (step.nextType === 'array') { + context[step.key] = [] + } else { + context[step.key] = Object.create(null) + } + return context[step.key] + case 'object': + return context[step.key] + case 'array': + if (step.nextType === 'array') { + return currentValue + } + + obj = Object.create(null) + context[step.key] = obj + currentValue.forEach(function (item, i) { + if (item !== undefined) obj['' + i] = item + }) + + return obj + case 'scalar': + obj = Object.create(null) + obj[''] = currentValue + context[step.key] = obj + return obj + } +} + +module.exports = setValue diff --git a/node_backend/node_modules/append-field/package.json b/node_backend/node_modules/append-field/package.json new file mode 100644 index 00000000..8d6e7164 --- /dev/null +++ b/node_backend/node_modules/append-field/package.json @@ -0,0 +1,19 @@ +{ + "name": "append-field", + "version": "1.0.0", + "license": "MIT", + "author": "Linus Unnebäck ", + "main": "index.js", + "devDependencies": { + "mocha": "^2.2.4", + "standard": "^6.0.5", + "testdata-w3c-json-form": "^0.2.0" + }, + "scripts": { + "test": "standard && mocha" + }, + "repository": { + "type": "git", + "url": "http://github.com/LinusU/node-append-field.git" + } +} diff --git a/node_backend/node_modules/append-field/test/forms.js b/node_backend/node_modules/append-field/test/forms.js new file mode 100644 index 00000000..dd6fbc98 --- /dev/null +++ b/node_backend/node_modules/append-field/test/forms.js @@ -0,0 +1,19 @@ +/* eslint-env mocha */ + +var assert = require('assert') +var appendField = require('../') +var testData = require('testdata-w3c-json-form') + +describe('Append Field', function () { + for (var test of testData) { + it('handles ' + test.name, function () { + var store = Object.create(null) + + for (var field of test.fields) { + appendField(store, field.key, field.value) + } + + assert.deepEqual(store, test.expected) + }) + } +}) diff --git a/Inscripciones_UAIE/node_backend/node_modules/aproba/CHANGELOG.md b/node_backend/node_modules/aproba/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/aproba/CHANGELOG.md rename to node_backend/node_modules/aproba/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/aproba/LICENSE b/node_backend/node_modules/aproba/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/aproba/LICENSE rename to node_backend/node_modules/aproba/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/aproba/README.md b/node_backend/node_modules/aproba/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/aproba/README.md rename to node_backend/node_modules/aproba/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/aproba/index.js b/node_backend/node_modules/aproba/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/aproba/index.js rename to node_backend/node_modules/aproba/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/aproba/package.json b/node_backend/node_modules/aproba/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/aproba/package.json rename to node_backend/node_modules/aproba/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/are-we-there-yet/LICENSE.md b/node_backend/node_modules/are-we-there-yet/LICENSE.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/are-we-there-yet/LICENSE.md rename to node_backend/node_modules/are-we-there-yet/LICENSE.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/are-we-there-yet/README.md b/node_backend/node_modules/are-we-there-yet/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/are-we-there-yet/README.md rename to node_backend/node_modules/are-we-there-yet/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/are-we-there-yet/lib/index.js b/node_backend/node_modules/are-we-there-yet/lib/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/are-we-there-yet/lib/index.js rename to node_backend/node_modules/are-we-there-yet/lib/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/are-we-there-yet/lib/tracker-base.js b/node_backend/node_modules/are-we-there-yet/lib/tracker-base.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/are-we-there-yet/lib/tracker-base.js rename to node_backend/node_modules/are-we-there-yet/lib/tracker-base.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/are-we-there-yet/lib/tracker-group.js b/node_backend/node_modules/are-we-there-yet/lib/tracker-group.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/are-we-there-yet/lib/tracker-group.js rename to node_backend/node_modules/are-we-there-yet/lib/tracker-group.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/are-we-there-yet/lib/tracker-stream.js b/node_backend/node_modules/are-we-there-yet/lib/tracker-stream.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/are-we-there-yet/lib/tracker-stream.js rename to node_backend/node_modules/are-we-there-yet/lib/tracker-stream.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/are-we-there-yet/lib/tracker.js b/node_backend/node_modules/are-we-there-yet/lib/tracker.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/are-we-there-yet/lib/tracker.js rename to node_backend/node_modules/are-we-there-yet/lib/tracker.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/are-we-there-yet/package.json b/node_backend/node_modules/are-we-there-yet/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/are-we-there-yet/package.json rename to node_backend/node_modules/are-we-there-yet/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/array-flatten/LICENSE b/node_backend/node_modules/array-flatten/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/array-flatten/LICENSE rename to node_backend/node_modules/array-flatten/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/array-flatten/README.md b/node_backend/node_modules/array-flatten/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/array-flatten/README.md rename to node_backend/node_modules/array-flatten/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/array-flatten/array-flatten.js b/node_backend/node_modules/array-flatten/array-flatten.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/array-flatten/array-flatten.js rename to node_backend/node_modules/array-flatten/array-flatten.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/array-flatten/package.json b/node_backend/node_modules/array-flatten/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/array-flatten/package.json rename to node_backend/node_modules/array-flatten/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/balanced-match/.github/FUNDING.yml b/node_backend/node_modules/balanced-match/.github/FUNDING.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/balanced-match/.github/FUNDING.yml rename to node_backend/node_modules/balanced-match/.github/FUNDING.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/balanced-match/LICENSE.md b/node_backend/node_modules/balanced-match/LICENSE.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/balanced-match/LICENSE.md rename to node_backend/node_modules/balanced-match/LICENSE.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/balanced-match/README.md b/node_backend/node_modules/balanced-match/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/balanced-match/README.md rename to node_backend/node_modules/balanced-match/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/balanced-match/index.js b/node_backend/node_modules/balanced-match/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/balanced-match/index.js rename to node_backend/node_modules/balanced-match/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/balanced-match/package.json b/node_backend/node_modules/balanced-match/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/balanced-match/package.json rename to node_backend/node_modules/balanced-match/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/.editorconfig b/node_backend/node_modules/bcrypt/.editorconfig similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/.editorconfig rename to node_backend/node_modules/bcrypt/.editorconfig diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/.github/workflows/ci.yaml b/node_backend/node_modules/bcrypt/.github/workflows/ci.yaml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/.github/workflows/ci.yaml rename to node_backend/node_modules/bcrypt/.github/workflows/ci.yaml diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/.travis.yml b/node_backend/node_modules/bcrypt/.travis.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/.travis.yml rename to node_backend/node_modules/bcrypt/.travis.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/CHANGELOG.md b/node_backend/node_modules/bcrypt/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/CHANGELOG.md rename to node_backend/node_modules/bcrypt/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/ISSUE_TEMPLATE.md b/node_backend/node_modules/bcrypt/ISSUE_TEMPLATE.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/ISSUE_TEMPLATE.md rename to node_backend/node_modules/bcrypt/ISSUE_TEMPLATE.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/LICENSE b/node_backend/node_modules/bcrypt/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/LICENSE rename to node_backend/node_modules/bcrypt/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/Makefile b/node_backend/node_modules/bcrypt/Makefile similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/Makefile rename to node_backend/node_modules/bcrypt/Makefile diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/README.md b/node_backend/node_modules/bcrypt/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/README.md rename to node_backend/node_modules/bcrypt/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/SECURITY.md b/node_backend/node_modules/bcrypt/SECURITY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/SECURITY.md rename to node_backend/node_modules/bcrypt/SECURITY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/appveyor.yml b/node_backend/node_modules/bcrypt/appveyor.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/appveyor.yml rename to node_backend/node_modules/bcrypt/appveyor.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/bcrypt.js b/node_backend/node_modules/bcrypt/bcrypt.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/bcrypt.js rename to node_backend/node_modules/bcrypt/bcrypt.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/binding.gyp b/node_backend/node_modules/bcrypt/binding.gyp similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/binding.gyp rename to node_backend/node_modules/bcrypt/binding.gyp diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/examples/async_compare.js b/node_backend/node_modules/bcrypt/examples/async_compare.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/examples/async_compare.js rename to node_backend/node_modules/bcrypt/examples/async_compare.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/examples/forever_gen_salt.js b/node_backend/node_modules/bcrypt/examples/forever_gen_salt.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/examples/forever_gen_salt.js rename to node_backend/node_modules/bcrypt/examples/forever_gen_salt.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node b/node_backend/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node rename to node_backend/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/package.json b/node_backend/node_modules/bcrypt/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/package.json rename to node_backend/node_modules/bcrypt/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/promises.js b/node_backend/node_modules/bcrypt/promises.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/promises.js rename to node_backend/node_modules/bcrypt/promises.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/src/bcrypt.cc b/node_backend/node_modules/bcrypt/src/bcrypt.cc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/src/bcrypt.cc rename to node_backend/node_modules/bcrypt/src/bcrypt.cc diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/src/bcrypt_node.cc b/node_backend/node_modules/bcrypt/src/bcrypt_node.cc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/src/bcrypt_node.cc rename to node_backend/node_modules/bcrypt/src/bcrypt_node.cc diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/src/blowfish.cc b/node_backend/node_modules/bcrypt/src/blowfish.cc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/src/blowfish.cc rename to node_backend/node_modules/bcrypt/src/blowfish.cc diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/src/node_blf.h b/node_backend/node_modules/bcrypt/src/node_blf.h similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/src/node_blf.h rename to node_backend/node_modules/bcrypt/src/node_blf.h diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/test-docker.sh b/node_backend/node_modules/bcrypt/test-docker.sh similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/test-docker.sh rename to node_backend/node_modules/bcrypt/test-docker.sh diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/test/async.test.js b/node_backend/node_modules/bcrypt/test/async.test.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/test/async.test.js rename to node_backend/node_modules/bcrypt/test/async.test.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/test/implementation.test.js b/node_backend/node_modules/bcrypt/test/implementation.test.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/test/implementation.test.js rename to node_backend/node_modules/bcrypt/test/implementation.test.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/test/promise.test.js b/node_backend/node_modules/bcrypt/test/promise.test.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/test/promise.test.js rename to node_backend/node_modules/bcrypt/test/promise.test.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/test/repetitions.test.js b/node_backend/node_modules/bcrypt/test/repetitions.test.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/test/repetitions.test.js rename to node_backend/node_modules/bcrypt/test/repetitions.test.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcrypt/test/sync.test.js b/node_backend/node_modules/bcrypt/test/sync.test.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcrypt/test/sync.test.js rename to node_backend/node_modules/bcrypt/test/sync.test.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/.npmignore b/node_backend/node_modules/bcryptjs/.npmignore similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/.npmignore rename to node_backend/node_modules/bcryptjs/.npmignore diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/.travis.yml b/node_backend/node_modules/bcryptjs/.travis.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/.travis.yml rename to node_backend/node_modules/bcryptjs/.travis.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/.vscode/settings.json b/node_backend/node_modules/bcryptjs/.vscode/settings.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/.vscode/settings.json rename to node_backend/node_modules/bcryptjs/.vscode/settings.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/LICENSE b/node_backend/node_modules/bcryptjs/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/LICENSE rename to node_backend/node_modules/bcryptjs/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/README.md b/node_backend/node_modules/bcryptjs/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/README.md rename to node_backend/node_modules/bcryptjs/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/bin/bcrypt b/node_backend/node_modules/bcryptjs/bin/bcrypt similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/bin/bcrypt rename to node_backend/node_modules/bcryptjs/bin/bcrypt diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/bower.json b/node_backend/node_modules/bcryptjs/bower.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/bower.json rename to node_backend/node_modules/bcryptjs/bower.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/dist/README.md b/node_backend/node_modules/bcryptjs/dist/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/dist/README.md rename to node_backend/node_modules/bcryptjs/dist/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/dist/bcrypt.js b/node_backend/node_modules/bcryptjs/dist/bcrypt.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/dist/bcrypt.js rename to node_backend/node_modules/bcryptjs/dist/bcrypt.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/dist/bcrypt.min.js b/node_backend/node_modules/bcryptjs/dist/bcrypt.min.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/dist/bcrypt.min.js rename to node_backend/node_modules/bcryptjs/dist/bcrypt.min.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/dist/bcrypt.min.js.gz b/node_backend/node_modules/bcryptjs/dist/bcrypt.min.js.gz similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/dist/bcrypt.min.js.gz rename to node_backend/node_modules/bcryptjs/dist/bcrypt.min.js.gz diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/dist/bcrypt.min.map b/node_backend/node_modules/bcryptjs/dist/bcrypt.min.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/dist/bcrypt.min.map rename to node_backend/node_modules/bcryptjs/dist/bcrypt.min.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/externs/bcrypt.js b/node_backend/node_modules/bcryptjs/externs/bcrypt.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/externs/bcrypt.js rename to node_backend/node_modules/bcryptjs/externs/bcrypt.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/externs/minimal-env.js b/node_backend/node_modules/bcryptjs/externs/minimal-env.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/externs/minimal-env.js rename to node_backend/node_modules/bcryptjs/externs/minimal-env.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/index.js b/node_backend/node_modules/bcryptjs/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/index.js rename to node_backend/node_modules/bcryptjs/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/package.json b/node_backend/node_modules/bcryptjs/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/package.json rename to node_backend/node_modules/bcryptjs/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/scripts/build.js b/node_backend/node_modules/bcryptjs/scripts/build.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/scripts/build.js rename to node_backend/node_modules/bcryptjs/scripts/build.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/src/bcrypt.js b/node_backend/node_modules/bcryptjs/src/bcrypt.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/src/bcrypt.js rename to node_backend/node_modules/bcryptjs/src/bcrypt.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/src/bcrypt/impl.js b/node_backend/node_modules/bcryptjs/src/bcrypt/impl.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/src/bcrypt/impl.js rename to node_backend/node_modules/bcryptjs/src/bcrypt/impl.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/src/bcrypt/prng/README.md b/node_backend/node_modules/bcryptjs/src/bcrypt/prng/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/src/bcrypt/prng/README.md rename to node_backend/node_modules/bcryptjs/src/bcrypt/prng/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/src/bcrypt/prng/accum.js b/node_backend/node_modules/bcryptjs/src/bcrypt/prng/accum.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/src/bcrypt/prng/accum.js rename to node_backend/node_modules/bcryptjs/src/bcrypt/prng/accum.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/src/bcrypt/prng/isaac.js b/node_backend/node_modules/bcryptjs/src/bcrypt/prng/isaac.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/src/bcrypt/prng/isaac.js rename to node_backend/node_modules/bcryptjs/src/bcrypt/prng/isaac.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/src/bcrypt/util.js b/node_backend/node_modules/bcryptjs/src/bcrypt/util.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/src/bcrypt/util.js rename to node_backend/node_modules/bcryptjs/src/bcrypt/util.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/src/bcrypt/util/base64.js b/node_backend/node_modules/bcryptjs/src/bcrypt/util/base64.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/src/bcrypt/util/base64.js rename to node_backend/node_modules/bcryptjs/src/bcrypt/util/base64.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/src/bower.json b/node_backend/node_modules/bcryptjs/src/bower.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/src/bower.json rename to node_backend/node_modules/bcryptjs/src/bower.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/src/wrap.js b/node_backend/node_modules/bcryptjs/src/wrap.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/src/wrap.js rename to node_backend/node_modules/bcryptjs/src/wrap.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/tests/quickbrown.txt b/node_backend/node_modules/bcryptjs/tests/quickbrown.txt similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/tests/quickbrown.txt rename to node_backend/node_modules/bcryptjs/tests/quickbrown.txt diff --git a/Inscripciones_UAIE/node_backend/node_modules/bcryptjs/tests/suite.js b/node_backend/node_modules/bcryptjs/tests/suite.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bcryptjs/tests/suite.js rename to node_backend/node_modules/bcryptjs/tests/suite.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/body-parser/HISTORY.md b/node_backend/node_modules/body-parser/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/body-parser/HISTORY.md rename to node_backend/node_modules/body-parser/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/body-parser/LICENSE b/node_backend/node_modules/body-parser/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/body-parser/LICENSE rename to node_backend/node_modules/body-parser/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/body-parser/README.md b/node_backend/node_modules/body-parser/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/body-parser/README.md rename to node_backend/node_modules/body-parser/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/body-parser/SECURITY.md b/node_backend/node_modules/body-parser/SECURITY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/body-parser/SECURITY.md rename to node_backend/node_modules/body-parser/SECURITY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/body-parser/index.js b/node_backend/node_modules/body-parser/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/body-parser/index.js rename to node_backend/node_modules/body-parser/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/body-parser/lib/read.js b/node_backend/node_modules/body-parser/lib/read.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/body-parser/lib/read.js rename to node_backend/node_modules/body-parser/lib/read.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/body-parser/lib/types/json.js b/node_backend/node_modules/body-parser/lib/types/json.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/body-parser/lib/types/json.js rename to node_backend/node_modules/body-parser/lib/types/json.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/body-parser/lib/types/raw.js b/node_backend/node_modules/body-parser/lib/types/raw.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/body-parser/lib/types/raw.js rename to node_backend/node_modules/body-parser/lib/types/raw.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/body-parser/lib/types/text.js b/node_backend/node_modules/body-parser/lib/types/text.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/body-parser/lib/types/text.js rename to node_backend/node_modules/body-parser/lib/types/text.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/body-parser/lib/types/urlencoded.js b/node_backend/node_modules/body-parser/lib/types/urlencoded.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/body-parser/lib/types/urlencoded.js rename to node_backend/node_modules/body-parser/lib/types/urlencoded.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/body-parser/package.json b/node_backend/node_modules/body-parser/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/body-parser/package.json rename to node_backend/node_modules/body-parser/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/brace-expansion/LICENSE b/node_backend/node_modules/brace-expansion/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/brace-expansion/LICENSE rename to node_backend/node_modules/brace-expansion/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/brace-expansion/README.md b/node_backend/node_modules/brace-expansion/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/brace-expansion/README.md rename to node_backend/node_modules/brace-expansion/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/brace-expansion/index.js b/node_backend/node_modules/brace-expansion/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/brace-expansion/index.js rename to node_backend/node_modules/brace-expansion/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/brace-expansion/package.json b/node_backend/node_modules/brace-expansion/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/brace-expansion/package.json rename to node_backend/node_modules/brace-expansion/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/LICENSE.md b/node_backend/node_modules/bson/LICENSE.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/LICENSE.md rename to node_backend/node_modules/bson/LICENSE.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/README.md b/node_backend/node_modules/bson/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/README.md rename to node_backend/node_modules/bson/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/bson.d.ts b/node_backend/node_modules/bson/bson.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/bson.d.ts rename to node_backend/node_modules/bson/bson.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/etc/prepare.js b/node_backend/node_modules/bson/etc/prepare.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/etc/prepare.js rename to node_backend/node_modules/bson/etc/prepare.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/lib/bson.bundle.js b/node_backend/node_modules/bson/lib/bson.bundle.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/lib/bson.bundle.js rename to node_backend/node_modules/bson/lib/bson.bundle.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/lib/bson.bundle.js.map b/node_backend/node_modules/bson/lib/bson.bundle.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/lib/bson.bundle.js.map rename to node_backend/node_modules/bson/lib/bson.bundle.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/lib/bson.cjs b/node_backend/node_modules/bson/lib/bson.cjs similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/lib/bson.cjs rename to node_backend/node_modules/bson/lib/bson.cjs diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/lib/bson.cjs.map b/node_backend/node_modules/bson/lib/bson.cjs.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/lib/bson.cjs.map rename to node_backend/node_modules/bson/lib/bson.cjs.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/lib/bson.mjs b/node_backend/node_modules/bson/lib/bson.mjs similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/lib/bson.mjs rename to node_backend/node_modules/bson/lib/bson.mjs diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/lib/bson.mjs.map b/node_backend/node_modules/bson/lib/bson.mjs.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/lib/bson.mjs.map rename to node_backend/node_modules/bson/lib/bson.mjs.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/lib/bson.rn.cjs b/node_backend/node_modules/bson/lib/bson.rn.cjs similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/lib/bson.rn.cjs rename to node_backend/node_modules/bson/lib/bson.rn.cjs diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/lib/bson.rn.cjs.map b/node_backend/node_modules/bson/lib/bson.rn.cjs.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/lib/bson.rn.cjs.map rename to node_backend/node_modules/bson/lib/bson.rn.cjs.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/package.json b/node_backend/node_modules/bson/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/package.json rename to node_backend/node_modules/bson/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/binary.ts b/node_backend/node_modules/bson/src/binary.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/binary.ts rename to node_backend/node_modules/bson/src/binary.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/bson.ts b/node_backend/node_modules/bson/src/bson.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/bson.ts rename to node_backend/node_modules/bson/src/bson.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/bson_value.ts b/node_backend/node_modules/bson/src/bson_value.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/bson_value.ts rename to node_backend/node_modules/bson/src/bson_value.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/code.ts b/node_backend/node_modules/bson/src/code.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/code.ts rename to node_backend/node_modules/bson/src/code.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/constants.ts b/node_backend/node_modules/bson/src/constants.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/constants.ts rename to node_backend/node_modules/bson/src/constants.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/db_ref.ts b/node_backend/node_modules/bson/src/db_ref.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/db_ref.ts rename to node_backend/node_modules/bson/src/db_ref.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/decimal128.ts b/node_backend/node_modules/bson/src/decimal128.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/decimal128.ts rename to node_backend/node_modules/bson/src/decimal128.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/double.ts b/node_backend/node_modules/bson/src/double.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/double.ts rename to node_backend/node_modules/bson/src/double.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/error.ts b/node_backend/node_modules/bson/src/error.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/error.ts rename to node_backend/node_modules/bson/src/error.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/extended_json.ts b/node_backend/node_modules/bson/src/extended_json.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/extended_json.ts rename to node_backend/node_modules/bson/src/extended_json.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/index.ts b/node_backend/node_modules/bson/src/index.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/index.ts rename to node_backend/node_modules/bson/src/index.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/int_32.ts b/node_backend/node_modules/bson/src/int_32.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/int_32.ts rename to node_backend/node_modules/bson/src/int_32.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/long.ts b/node_backend/node_modules/bson/src/long.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/long.ts rename to node_backend/node_modules/bson/src/long.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/max_key.ts b/node_backend/node_modules/bson/src/max_key.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/max_key.ts rename to node_backend/node_modules/bson/src/max_key.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/min_key.ts b/node_backend/node_modules/bson/src/min_key.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/min_key.ts rename to node_backend/node_modules/bson/src/min_key.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/objectid.ts b/node_backend/node_modules/bson/src/objectid.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/objectid.ts rename to node_backend/node_modules/bson/src/objectid.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/parse_utf8.ts b/node_backend/node_modules/bson/src/parse_utf8.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/parse_utf8.ts rename to node_backend/node_modules/bson/src/parse_utf8.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/parser/calculate_size.ts b/node_backend/node_modules/bson/src/parser/calculate_size.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/parser/calculate_size.ts rename to node_backend/node_modules/bson/src/parser/calculate_size.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/parser/deserializer.ts b/node_backend/node_modules/bson/src/parser/deserializer.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/parser/deserializer.ts rename to node_backend/node_modules/bson/src/parser/deserializer.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/parser/on_demand/index.ts b/node_backend/node_modules/bson/src/parser/on_demand/index.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/parser/on_demand/index.ts rename to node_backend/node_modules/bson/src/parser/on_demand/index.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/parser/on_demand/parse_to_elements.ts b/node_backend/node_modules/bson/src/parser/on_demand/parse_to_elements.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/parser/on_demand/parse_to_elements.ts rename to node_backend/node_modules/bson/src/parser/on_demand/parse_to_elements.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/parser/serializer.ts b/node_backend/node_modules/bson/src/parser/serializer.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/parser/serializer.ts rename to node_backend/node_modules/bson/src/parser/serializer.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/parser/utils.ts b/node_backend/node_modules/bson/src/parser/utils.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/parser/utils.ts rename to node_backend/node_modules/bson/src/parser/utils.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/regexp.ts b/node_backend/node_modules/bson/src/regexp.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/regexp.ts rename to node_backend/node_modules/bson/src/regexp.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/symbol.ts b/node_backend/node_modules/bson/src/symbol.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/symbol.ts rename to node_backend/node_modules/bson/src/symbol.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/timestamp.ts b/node_backend/node_modules/bson/src/timestamp.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/timestamp.ts rename to node_backend/node_modules/bson/src/timestamp.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/utils/byte_utils.ts b/node_backend/node_modules/bson/src/utils/byte_utils.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/utils/byte_utils.ts rename to node_backend/node_modules/bson/src/utils/byte_utils.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/utils/latin.ts b/node_backend/node_modules/bson/src/utils/latin.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/utils/latin.ts rename to node_backend/node_modules/bson/src/utils/latin.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/utils/node_byte_utils.ts b/node_backend/node_modules/bson/src/utils/node_byte_utils.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/utils/node_byte_utils.ts rename to node_backend/node_modules/bson/src/utils/node_byte_utils.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/utils/number_utils.ts b/node_backend/node_modules/bson/src/utils/number_utils.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/utils/number_utils.ts rename to node_backend/node_modules/bson/src/utils/number_utils.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/utils/string_utils.ts b/node_backend/node_modules/bson/src/utils/string_utils.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/utils/string_utils.ts rename to node_backend/node_modules/bson/src/utils/string_utils.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/src/utils/web_byte_utils.ts b/node_backend/node_modules/bson/src/utils/web_byte_utils.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/src/utils/web_byte_utils.ts rename to node_backend/node_modules/bson/src/utils/web_byte_utils.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/vendor/base64/LICENSE-MIT.txt b/node_backend/node_modules/bson/vendor/base64/LICENSE-MIT.txt similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/vendor/base64/LICENSE-MIT.txt rename to node_backend/node_modules/bson/vendor/base64/LICENSE-MIT.txt diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/vendor/base64/README.md b/node_backend/node_modules/bson/vendor/base64/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/vendor/base64/README.md rename to node_backend/node_modules/bson/vendor/base64/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/vendor/base64/base64.js b/node_backend/node_modules/bson/vendor/base64/base64.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/vendor/base64/base64.js rename to node_backend/node_modules/bson/vendor/base64/base64.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/vendor/base64/package.json b/node_backend/node_modules/bson/vendor/base64/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/vendor/base64/package.json rename to node_backend/node_modules/bson/vendor/base64/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/vendor/text-encoding/LICENSE.md b/node_backend/node_modules/bson/vendor/text-encoding/LICENSE.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/vendor/text-encoding/LICENSE.md rename to node_backend/node_modules/bson/vendor/text-encoding/LICENSE.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/vendor/text-encoding/README.md b/node_backend/node_modules/bson/vendor/text-encoding/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/vendor/text-encoding/README.md rename to node_backend/node_modules/bson/vendor/text-encoding/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/vendor/text-encoding/index.js b/node_backend/node_modules/bson/vendor/text-encoding/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/vendor/text-encoding/index.js rename to node_backend/node_modules/bson/vendor/text-encoding/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/vendor/text-encoding/lib/encoding-indexes.js b/node_backend/node_modules/bson/vendor/text-encoding/lib/encoding-indexes.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/vendor/text-encoding/lib/encoding-indexes.js rename to node_backend/node_modules/bson/vendor/text-encoding/lib/encoding-indexes.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/vendor/text-encoding/lib/encoding.js b/node_backend/node_modules/bson/vendor/text-encoding/lib/encoding.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/vendor/text-encoding/lib/encoding.js rename to node_backend/node_modules/bson/vendor/text-encoding/lib/encoding.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bson/vendor/text-encoding/package.json b/node_backend/node_modules/bson/vendor/text-encoding/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bson/vendor/text-encoding/package.json rename to node_backend/node_modules/bson/vendor/text-encoding/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/buffer-equal-constant-time/.npmignore b/node_backend/node_modules/buffer-equal-constant-time/.npmignore similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/buffer-equal-constant-time/.npmignore rename to node_backend/node_modules/buffer-equal-constant-time/.npmignore diff --git a/Inscripciones_UAIE/node_backend/node_modules/buffer-equal-constant-time/.travis.yml b/node_backend/node_modules/buffer-equal-constant-time/.travis.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/buffer-equal-constant-time/.travis.yml rename to node_backend/node_modules/buffer-equal-constant-time/.travis.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/buffer-equal-constant-time/LICENSE.txt b/node_backend/node_modules/buffer-equal-constant-time/LICENSE.txt similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/buffer-equal-constant-time/LICENSE.txt rename to node_backend/node_modules/buffer-equal-constant-time/LICENSE.txt diff --git a/Inscripciones_UAIE/node_backend/node_modules/buffer-equal-constant-time/README.md b/node_backend/node_modules/buffer-equal-constant-time/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/buffer-equal-constant-time/README.md rename to node_backend/node_modules/buffer-equal-constant-time/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/buffer-equal-constant-time/index.js b/node_backend/node_modules/buffer-equal-constant-time/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/buffer-equal-constant-time/index.js rename to node_backend/node_modules/buffer-equal-constant-time/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/buffer-equal-constant-time/package.json b/node_backend/node_modules/buffer-equal-constant-time/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/buffer-equal-constant-time/package.json rename to node_backend/node_modules/buffer-equal-constant-time/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/buffer-equal-constant-time/test.js b/node_backend/node_modules/buffer-equal-constant-time/test.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/buffer-equal-constant-time/test.js rename to node_backend/node_modules/buffer-equal-constant-time/test.js diff --git a/node_backend/node_modules/buffer-from/LICENSE b/node_backend/node_modules/buffer-from/LICENSE new file mode 100644 index 00000000..e4bf1d69 --- /dev/null +++ b/node_backend/node_modules/buffer-from/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016, 2018 Linus Unnebäck + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_backend/node_modules/buffer-from/index.js b/node_backend/node_modules/buffer-from/index.js new file mode 100644 index 00000000..e1a58b5e --- /dev/null +++ b/node_backend/node_modules/buffer-from/index.js @@ -0,0 +1,72 @@ +/* eslint-disable node/no-deprecated-api */ + +var toString = Object.prototype.toString + +var isModern = ( + typeof Buffer !== 'undefined' && + typeof Buffer.alloc === 'function' && + typeof Buffer.allocUnsafe === 'function' && + typeof Buffer.from === 'function' +) + +function isArrayBuffer (input) { + return toString.call(input).slice(8, -1) === 'ArrayBuffer' +} + +function fromArrayBuffer (obj, byteOffset, length) { + byteOffset >>>= 0 + + var maxLength = obj.byteLength - byteOffset + + if (maxLength < 0) { + throw new RangeError("'offset' is out of bounds") + } + + if (length === undefined) { + length = maxLength + } else { + length >>>= 0 + + if (length > maxLength) { + throw new RangeError("'length' is out of bounds") + } + } + + return isModern + ? Buffer.from(obj.slice(byteOffset, byteOffset + length)) + : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length))) +} + +function fromString (string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + return isModern + ? Buffer.from(string, encoding) + : new Buffer(string, encoding) +} + +function bufferFrom (value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (isArrayBuffer(value)) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(value, encodingOrOffset) + } + + return isModern + ? Buffer.from(value) + : new Buffer(value) +} + +module.exports = bufferFrom diff --git a/node_backend/node_modules/buffer-from/package.json b/node_backend/node_modules/buffer-from/package.json new file mode 100644 index 00000000..6ac5327b --- /dev/null +++ b/node_backend/node_modules/buffer-from/package.json @@ -0,0 +1,19 @@ +{ + "name": "buffer-from", + "version": "1.1.2", + "license": "MIT", + "repository": "LinusU/buffer-from", + "files": [ + "index.js" + ], + "scripts": { + "test": "standard && node test" + }, + "devDependencies": { + "standard": "^12.0.1" + }, + "keywords": [ + "buffer", + "buffer from" + ] +} diff --git a/node_backend/node_modules/buffer-from/readme.md b/node_backend/node_modules/buffer-from/readme.md new file mode 100644 index 00000000..9880a558 --- /dev/null +++ b/node_backend/node_modules/buffer-from/readme.md @@ -0,0 +1,69 @@ +# Buffer From + +A [ponyfill](https://ponyfill.com) for `Buffer.from`, uses native implementation if available. + +## Installation + +```sh +npm install --save buffer-from +``` + +## Usage + +```js +const bufferFrom = require('buffer-from') + +console.log(bufferFrom([1, 2, 3, 4])) +//=> + +const arr = new Uint8Array([1, 2, 3, 4]) +console.log(bufferFrom(arr.buffer, 1, 2)) +//=> + +console.log(bufferFrom('test', 'utf8')) +//=> + +const buf = bufferFrom('test') +console.log(bufferFrom(buf)) +//=> +``` + +## API + +### bufferFrom(array) + +- `array` <Array> + +Allocates a new `Buffer` using an `array` of octets. + +### bufferFrom(arrayBuffer[, byteOffset[, length]]) + +- `arrayBuffer` <ArrayBuffer> The `.buffer` property of a TypedArray or ArrayBuffer +- `byteOffset` <Integer> Where to start copying from `arrayBuffer`. **Default:** `0` +- `length` <Integer> How many bytes to copy from `arrayBuffer`. **Default:** `arrayBuffer.length - byteOffset` + +When passed a reference to the `.buffer` property of a TypedArray instance, the +newly created `Buffer` will share the same allocated memory as the TypedArray. + +The optional `byteOffset` and `length` arguments specify a memory range within +the `arrayBuffer` that will be shared by the `Buffer`. + +### bufferFrom(buffer) + +- `buffer` <Buffer> An existing `Buffer` to copy data from + +Copies the passed `buffer` data onto a new `Buffer` instance. + +### bufferFrom(string[, encoding]) + +- `string` <String> A string to encode. +- `encoding` <String> The encoding of `string`. **Default:** `'utf8'` + +Creates a new `Buffer` containing the given JavaScript string `string`. If +provided, the `encoding` parameter identifies the character encoding of +`string`. + +## See also + +- [buffer-alloc](https://github.com/LinusU/buffer-alloc) A ponyfill for `Buffer.alloc` +- [buffer-alloc-unsafe](https://github.com/LinusU/buffer-alloc-unsafe) A ponyfill for `Buffer.allocUnsafe` diff --git a/node_backend/node_modules/busboy/.eslintrc.js b/node_backend/node_modules/busboy/.eslintrc.js new file mode 100644 index 00000000..be9311d0 --- /dev/null +++ b/node_backend/node_modules/busboy/.eslintrc.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = { + extends: '@mscdex/eslint-config', +}; diff --git a/node_backend/node_modules/busboy/.github/workflows/ci.yml b/node_backend/node_modules/busboy/.github/workflows/ci.yml new file mode 100644 index 00000000..799bae04 --- /dev/null +++ b/node_backend/node_modules/busboy/.github/workflows/ci.yml @@ -0,0 +1,24 @@ +name: CI + +on: + pull_request: + push: + branches: [ master ] + +jobs: + tests-linux: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + node-version: [10.16.0, 10.x, 12.x, 14.x, 16.x] + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - name: Install module + run: npm install + - name: Run tests + run: npm test diff --git a/node_backend/node_modules/busboy/.github/workflows/lint.yml b/node_backend/node_modules/busboy/.github/workflows/lint.yml new file mode 100644 index 00000000..9f9e1f58 --- /dev/null +++ b/node_backend/node_modules/busboy/.github/workflows/lint.yml @@ -0,0 +1,23 @@ +name: lint + +on: + pull_request: + push: + branches: [ master ] + +env: + NODE_VERSION: 16.x + +jobs: + lint-js: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ env.NODE_VERSION }} + uses: actions/setup-node@v1 + with: + node-version: ${{ env.NODE_VERSION }} + - name: Install ESLint + ESLint configs/plugins + run: npm install --only=dev + - name: Lint files + run: npm run lint diff --git a/node_backend/node_modules/busboy/LICENSE b/node_backend/node_modules/busboy/LICENSE new file mode 100644 index 00000000..290762e9 --- /dev/null +++ b/node_backend/node_modules/busboy/LICENSE @@ -0,0 +1,19 @@ +Copyright Brian White. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. \ No newline at end of file diff --git a/node_backend/node_modules/busboy/README.md b/node_backend/node_modules/busboy/README.md new file mode 100644 index 00000000..654af304 --- /dev/null +++ b/node_backend/node_modules/busboy/README.md @@ -0,0 +1,191 @@ +# Description + +A node.js module for parsing incoming HTML form data. + +Changes (breaking or otherwise) in v1.0.0 can be found [here](https://github.com/mscdex/busboy/issues/266). + +# Requirements + +* [node.js](http://nodejs.org/) -- v10.16.0 or newer + + +# Install + + npm install busboy + + +# Examples + +* Parsing (multipart) with default options: + +```js +const http = require('http'); + +const busboy = require('busboy'); + +http.createServer((req, res) => { + if (req.method === 'POST') { + console.log('POST request'); + const bb = busboy({ headers: req.headers }); + bb.on('file', (name, file, info) => { + const { filename, encoding, mimeType } = info; + console.log( + `File [${name}]: filename: %j, encoding: %j, mimeType: %j`, + filename, + encoding, + mimeType + ); + file.on('data', (data) => { + console.log(`File [${name}] got ${data.length} bytes`); + }).on('close', () => { + console.log(`File [${name}] done`); + }); + }); + bb.on('field', (name, val, info) => { + console.log(`Field [${name}]: value: %j`, val); + }); + bb.on('close', () => { + console.log('Done parsing form!'); + res.writeHead(303, { Connection: 'close', Location: '/' }); + res.end(); + }); + req.pipe(bb); + } else if (req.method === 'GET') { + res.writeHead(200, { Connection: 'close' }); + res.end(` + + + +

+
+
+ + + + + `); + } +}).listen(8000, () => { + console.log('Listening for requests'); +}); + +// Example output: +// +// Listening for requests +// < ... form submitted ... > +// POST request +// File [filefield]: filename: "logo.jpg", encoding: "binary", mime: "image/jpeg" +// File [filefield] got 11912 bytes +// Field [textfield]: value: "testing! :-)" +// File [filefield] done +// Done parsing form! +``` + +* Save all incoming files to disk: + +```js +const { randomFillSync } = require('crypto'); +const fs = require('fs'); +const http = require('http'); +const os = require('os'); +const path = require('path'); + +const busboy = require('busboy'); + +const random = (() => { + const buf = Buffer.alloc(16); + return () => randomFillSync(buf).toString('hex'); +})(); + +http.createServer((req, res) => { + if (req.method === 'POST') { + const bb = busboy({ headers: req.headers }); + bb.on('file', (name, file, info) => { + const saveTo = path.join(os.tmpdir(), `busboy-upload-${random()}`); + file.pipe(fs.createWriteStream(saveTo)); + }); + bb.on('close', () => { + res.writeHead(200, { 'Connection': 'close' }); + res.end(`That's all folks!`); + }); + req.pipe(bb); + return; + } + res.writeHead(404); + res.end(); +}).listen(8000, () => { + console.log('Listening for requests'); +}); +``` + + +# API + +## Exports + +`busboy` exports a single function: + +**( _function_ )**(< _object_ >config) - Creates and returns a new _Writable_ form parser stream. + +* Valid `config` properties: + + * **headers** - _object_ - These are the HTTP headers of the incoming request, which are used by individual parsers. + + * **highWaterMark** - _integer_ - highWaterMark to use for the parser stream. **Default:** node's _stream.Writable_ default. + + * **fileHwm** - _integer_ - highWaterMark to use for individual file streams. **Default:** node's _stream.Readable_ default. + + * **defCharset** - _string_ - Default character set to use when one isn't defined. **Default:** `'utf8'`. + + * **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'`. + + * **preservePath** - _boolean_ - If paths in filenames from file parts in a `'multipart/form-data'` request shall be preserved. **Default:** `false`. + + * **limits** - _object_ - Various limits on incoming data. Valid properties are: + + * **fieldNameSize** - _integer_ - Max field name size (in bytes). **Default:** `100`. + + * **fieldSize** - _integer_ - Max field value size (in bytes). **Default:** `1048576` (1MB). + + * **fields** - _integer_ - Max number of non-file fields. **Default:** `Infinity`. + + * **fileSize** - _integer_ - For multipart forms, the max file size (in bytes). **Default:** `Infinity`. + + * **files** - _integer_ - For multipart forms, the max number of file fields. **Default:** `Infinity`. + + * **parts** - _integer_ - For multipart forms, the max number of parts (fields + files). **Default:** `Infinity`. + + * **headerPairs** - _integer_ - For multipart forms, the max number of header key-value pairs to parse. **Default:** `2000` (same as node's http module). + +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. + +## (Special) Parser stream events + +* **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: + + * `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. + + * `encoding` - _string_ - The file's `'Content-Transfer-Encoding'` value. + + * `mimeType` - _string_ - The file's `'Content-Type'` value. + + **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. + 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). + + **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. + +* **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: + + * `nameTruncated` - _boolean_ - Whether `name` was truncated or not (due to a configured `limits.fieldNameSize` limit) + + * `valueTruncated` - _boolean_ - Whether `value` was truncated or not (due to a configured `limits.fieldSize` limit) + + * `encoding` - _string_ - The field's `'Content-Transfer-Encoding'` value. + + * `mimeType` - _string_ - The field's `'Content-Type'` value. + +* **partsLimit**() - Emitted when the configured `limits.parts` limit has been reached. No more `'file'` or `'field'` events will be emitted. + +* **filesLimit**() - Emitted when the configured `limits.files` limit has been reached. No more `'file'` events will be emitted. + +* **fieldsLimit**() - Emitted when the configured `limits.fields` limit has been reached. No more `'field'` events will be emitted. diff --git a/node_backend/node_modules/busboy/bench/bench-multipart-fields-100mb-big.js b/node_backend/node_modules/busboy/bench/bench-multipart-fields-100mb-big.js new file mode 100644 index 00000000..ef15729e --- /dev/null +++ b/node_backend/node_modules/busboy/bench/bench-multipart-fields-100mb-big.js @@ -0,0 +1,149 @@ +'use strict'; + +function createMultipartBuffers(boundary, sizes) { + const bufs = []; + for (let i = 0; i < sizes.length; ++i) { + const mb = sizes[i] * 1024 * 1024; + bufs.push(Buffer.from([ + `--${boundary}`, + `content-disposition: form-data; name="field${i + 1}"`, + '', + '0'.repeat(mb), + '', + ].join('\r\n'))); + } + bufs.push(Buffer.from([ + `--${boundary}--`, + '', + ].join('\r\n'))); + return bufs; +} + +const boundary = '-----------------------------168072824752491622650073'; +const buffers = createMultipartBuffers(boundary, [ + 10, + 10, + 10, + 20, + 50, +]); +const calls = { + partBegin: 0, + headerField: 0, + headerValue: 0, + headerEnd: 0, + headersEnd: 0, + partData: 0, + partEnd: 0, + end: 0, +}; + +const moduleName = process.argv[2]; +switch (moduleName) { + case 'busboy': { + const busboy = require('busboy'); + + const parser = busboy({ + limits: { + fieldSizeLimit: Infinity, + }, + headers: { + 'content-type': `multipart/form-data; boundary=${boundary}`, + }, + }); + parser.on('field', (name, val, info) => { + ++calls.partBegin; + ++calls.partData; + ++calls.partEnd; + }).on('close', () => { + ++calls.end; + console.timeEnd(moduleName); + }); + + console.time(moduleName); + for (const buf of buffers) + parser.write(buf); + break; + } + + case 'formidable': { + const { MultipartParser } = require('formidable'); + + const parser = new MultipartParser(); + parser.initWithBoundary(boundary); + parser.on('data', ({ name }) => { + ++calls[name]; + if (name === 'end') + console.timeEnd(moduleName); + }); + + console.time(moduleName); + for (const buf of buffers) + parser.write(buf); + + break; + } + + case 'multiparty': { + const { Readable } = require('stream'); + + const { Form } = require('multiparty'); + + const form = new Form({ + maxFieldsSize: Infinity, + maxFields: Infinity, + maxFilesSize: Infinity, + autoFields: false, + autoFiles: false, + }); + + const req = new Readable({ read: () => {} }); + req.headers = { + 'content-type': `multipart/form-data; boundary=${boundary}`, + }; + + function hijack(name, fn) { + const oldFn = form[name]; + form[name] = function() { + fn(); + return oldFn.apply(this, arguments); + }; + } + + hijack('onParseHeaderField', () => { + ++calls.headerField; + }); + hijack('onParseHeaderValue', () => { + ++calls.headerValue; + }); + hijack('onParsePartBegin', () => { + ++calls.partBegin; + }); + hijack('onParsePartData', () => { + ++calls.partData; + }); + hijack('onParsePartEnd', () => { + ++calls.partEnd; + }); + + form.on('close', () => { + ++calls.end; + console.timeEnd(moduleName); + }).on('part', (p) => p.resume()); + + console.time(moduleName); + form.parse(req); + for (const buf of buffers) + req.push(buf); + req.push(null); + + break; + } + + default: + if (moduleName === undefined) + console.error('Missing parser module name'); + else + console.error(`Invalid parser module name: ${moduleName}`); + process.exit(1); +} diff --git a/node_backend/node_modules/busboy/bench/bench-multipart-fields-100mb-small.js b/node_backend/node_modules/busboy/bench/bench-multipart-fields-100mb-small.js new file mode 100644 index 00000000..f32d421c --- /dev/null +++ b/node_backend/node_modules/busboy/bench/bench-multipart-fields-100mb-small.js @@ -0,0 +1,143 @@ +'use strict'; + +function createMultipartBuffers(boundary, sizes) { + const bufs = []; + for (let i = 0; i < sizes.length; ++i) { + const mb = sizes[i] * 1024 * 1024; + bufs.push(Buffer.from([ + `--${boundary}`, + `content-disposition: form-data; name="field${i + 1}"`, + '', + '0'.repeat(mb), + '', + ].join('\r\n'))); + } + bufs.push(Buffer.from([ + `--${boundary}--`, + '', + ].join('\r\n'))); + return bufs; +} + +const boundary = '-----------------------------168072824752491622650073'; +const buffers = createMultipartBuffers(boundary, (new Array(100)).fill(1)); +const calls = { + partBegin: 0, + headerField: 0, + headerValue: 0, + headerEnd: 0, + headersEnd: 0, + partData: 0, + partEnd: 0, + end: 0, +}; + +const moduleName = process.argv[2]; +switch (moduleName) { + case 'busboy': { + const busboy = require('busboy'); + + const parser = busboy({ + limits: { + fieldSizeLimit: Infinity, + }, + headers: { + 'content-type': `multipart/form-data; boundary=${boundary}`, + }, + }); + parser.on('field', (name, val, info) => { + ++calls.partBegin; + ++calls.partData; + ++calls.partEnd; + }).on('close', () => { + ++calls.end; + console.timeEnd(moduleName); + }); + + console.time(moduleName); + for (const buf of buffers) + parser.write(buf); + break; + } + + case 'formidable': { + const { MultipartParser } = require('formidable'); + + const parser = new MultipartParser(); + parser.initWithBoundary(boundary); + parser.on('data', ({ name }) => { + ++calls[name]; + if (name === 'end') + console.timeEnd(moduleName); + }); + + console.time(moduleName); + for (const buf of buffers) + parser.write(buf); + + break; + } + + case 'multiparty': { + const { Readable } = require('stream'); + + const { Form } = require('multiparty'); + + const form = new Form({ + maxFieldsSize: Infinity, + maxFields: Infinity, + maxFilesSize: Infinity, + autoFields: false, + autoFiles: false, + }); + + const req = new Readable({ read: () => {} }); + req.headers = { + 'content-type': `multipart/form-data; boundary=${boundary}`, + }; + + function hijack(name, fn) { + const oldFn = form[name]; + form[name] = function() { + fn(); + return oldFn.apply(this, arguments); + }; + } + + hijack('onParseHeaderField', () => { + ++calls.headerField; + }); + hijack('onParseHeaderValue', () => { + ++calls.headerValue; + }); + hijack('onParsePartBegin', () => { + ++calls.partBegin; + }); + hijack('onParsePartData', () => { + ++calls.partData; + }); + hijack('onParsePartEnd', () => { + ++calls.partEnd; + }); + + form.on('close', () => { + ++calls.end; + console.timeEnd(moduleName); + }).on('part', (p) => p.resume()); + + console.time(moduleName); + form.parse(req); + for (const buf of buffers) + req.push(buf); + req.push(null); + + break; + } + + default: + if (moduleName === undefined) + console.error('Missing parser module name'); + else + console.error(`Invalid parser module name: ${moduleName}`); + process.exit(1); +} diff --git a/node_backend/node_modules/busboy/bench/bench-multipart-files-100mb-big.js b/node_backend/node_modules/busboy/bench/bench-multipart-files-100mb-big.js new file mode 100644 index 00000000..b46bdee0 --- /dev/null +++ b/node_backend/node_modules/busboy/bench/bench-multipart-files-100mb-big.js @@ -0,0 +1,154 @@ +'use strict'; + +function createMultipartBuffers(boundary, sizes) { + const bufs = []; + for (let i = 0; i < sizes.length; ++i) { + const mb = sizes[i] * 1024 * 1024; + bufs.push(Buffer.from([ + `--${boundary}`, + `content-disposition: form-data; name="file${i + 1}"; ` + + `filename="random${i + 1}.bin"`, + 'content-type: application/octet-stream', + '', + '0'.repeat(mb), + '', + ].join('\r\n'))); + } + bufs.push(Buffer.from([ + `--${boundary}--`, + '', + ].join('\r\n'))); + return bufs; +} + +const boundary = '-----------------------------168072824752491622650073'; +const buffers = createMultipartBuffers(boundary, [ + 10, + 10, + 10, + 20, + 50, +]); +const calls = { + partBegin: 0, + headerField: 0, + headerValue: 0, + headerEnd: 0, + headersEnd: 0, + partData: 0, + partEnd: 0, + end: 0, +}; + +const moduleName = process.argv[2]; +switch (moduleName) { + case 'busboy': { + const busboy = require('busboy'); + + const parser = busboy({ + limits: { + fieldSizeLimit: Infinity, + }, + headers: { + 'content-type': `multipart/form-data; boundary=${boundary}`, + }, + }); + parser.on('file', (name, stream, info) => { + ++calls.partBegin; + stream.on('data', (chunk) => { + ++calls.partData; + }).on('end', () => { + ++calls.partEnd; + }); + }).on('close', () => { + ++calls.end; + console.timeEnd(moduleName); + }); + + console.time(moduleName); + for (const buf of buffers) + parser.write(buf); + break; + } + + case 'formidable': { + const { MultipartParser } = require('formidable'); + + const parser = new MultipartParser(); + parser.initWithBoundary(boundary); + parser.on('data', ({ name }) => { + ++calls[name]; + if (name === 'end') + console.timeEnd(moduleName); + }); + + console.time(moduleName); + for (const buf of buffers) + parser.write(buf); + + break; + } + + case 'multiparty': { + const { Readable } = require('stream'); + + const { Form } = require('multiparty'); + + const form = new Form({ + maxFieldsSize: Infinity, + maxFields: Infinity, + maxFilesSize: Infinity, + autoFields: false, + autoFiles: false, + }); + + const req = new Readable({ read: () => {} }); + req.headers = { + 'content-type': `multipart/form-data; boundary=${boundary}`, + }; + + function hijack(name, fn) { + const oldFn = form[name]; + form[name] = function() { + fn(); + return oldFn.apply(this, arguments); + }; + } + + hijack('onParseHeaderField', () => { + ++calls.headerField; + }); + hijack('onParseHeaderValue', () => { + ++calls.headerValue; + }); + hijack('onParsePartBegin', () => { + ++calls.partBegin; + }); + hijack('onParsePartData', () => { + ++calls.partData; + }); + hijack('onParsePartEnd', () => { + ++calls.partEnd; + }); + + form.on('close', () => { + ++calls.end; + console.timeEnd(moduleName); + }).on('part', (p) => p.resume()); + + console.time(moduleName); + form.parse(req); + for (const buf of buffers) + req.push(buf); + req.push(null); + + break; + } + + default: + if (moduleName === undefined) + console.error('Missing parser module name'); + else + console.error(`Invalid parser module name: ${moduleName}`); + process.exit(1); +} diff --git a/node_backend/node_modules/busboy/bench/bench-multipart-files-100mb-small.js b/node_backend/node_modules/busboy/bench/bench-multipart-files-100mb-small.js new file mode 100644 index 00000000..46b5dffb --- /dev/null +++ b/node_backend/node_modules/busboy/bench/bench-multipart-files-100mb-small.js @@ -0,0 +1,148 @@ +'use strict'; + +function createMultipartBuffers(boundary, sizes) { + const bufs = []; + for (let i = 0; i < sizes.length; ++i) { + const mb = sizes[i] * 1024 * 1024; + bufs.push(Buffer.from([ + `--${boundary}`, + `content-disposition: form-data; name="file${i + 1}"; ` + + `filename="random${i + 1}.bin"`, + 'content-type: application/octet-stream', + '', + '0'.repeat(mb), + '', + ].join('\r\n'))); + } + bufs.push(Buffer.from([ + `--${boundary}--`, + '', + ].join('\r\n'))); + return bufs; +} + +const boundary = '-----------------------------168072824752491622650073'; +const buffers = createMultipartBuffers(boundary, (new Array(100)).fill(1)); +const calls = { + partBegin: 0, + headerField: 0, + headerValue: 0, + headerEnd: 0, + headersEnd: 0, + partData: 0, + partEnd: 0, + end: 0, +}; + +const moduleName = process.argv[2]; +switch (moduleName) { + case 'busboy': { + const busboy = require('busboy'); + + const parser = busboy({ + limits: { + fieldSizeLimit: Infinity, + }, + headers: { + 'content-type': `multipart/form-data; boundary=${boundary}`, + }, + }); + parser.on('file', (name, stream, info) => { + ++calls.partBegin; + stream.on('data', (chunk) => { + ++calls.partData; + }).on('end', () => { + ++calls.partEnd; + }); + }).on('close', () => { + ++calls.end; + console.timeEnd(moduleName); + }); + + console.time(moduleName); + for (const buf of buffers) + parser.write(buf); + break; + } + + case 'formidable': { + const { MultipartParser } = require('formidable'); + + const parser = new MultipartParser(); + parser.initWithBoundary(boundary); + parser.on('data', ({ name }) => { + ++calls[name]; + if (name === 'end') + console.timeEnd(moduleName); + }); + + console.time(moduleName); + for (const buf of buffers) + parser.write(buf); + + break; + } + + case 'multiparty': { + const { Readable } = require('stream'); + + const { Form } = require('multiparty'); + + const form = new Form({ + maxFieldsSize: Infinity, + maxFields: Infinity, + maxFilesSize: Infinity, + autoFields: false, + autoFiles: false, + }); + + const req = new Readable({ read: () => {} }); + req.headers = { + 'content-type': `multipart/form-data; boundary=${boundary}`, + }; + + function hijack(name, fn) { + const oldFn = form[name]; + form[name] = function() { + fn(); + return oldFn.apply(this, arguments); + }; + } + + hijack('onParseHeaderField', () => { + ++calls.headerField; + }); + hijack('onParseHeaderValue', () => { + ++calls.headerValue; + }); + hijack('onParsePartBegin', () => { + ++calls.partBegin; + }); + hijack('onParsePartData', () => { + ++calls.partData; + }); + hijack('onParsePartEnd', () => { + ++calls.partEnd; + }); + + form.on('close', () => { + ++calls.end; + console.timeEnd(moduleName); + }).on('part', (p) => p.resume()); + + console.time(moduleName); + form.parse(req); + for (const buf of buffers) + req.push(buf); + req.push(null); + + break; + } + + default: + if (moduleName === undefined) + console.error('Missing parser module name'); + else + console.error(`Invalid parser module name: ${moduleName}`); + process.exit(1); +} diff --git a/node_backend/node_modules/busboy/bench/bench-urlencoded-fields-100pairs-small.js b/node_backend/node_modules/busboy/bench/bench-urlencoded-fields-100pairs-small.js new file mode 100644 index 00000000..5c337df2 --- /dev/null +++ b/node_backend/node_modules/busboy/bench/bench-urlencoded-fields-100pairs-small.js @@ -0,0 +1,101 @@ +'use strict'; + +const buffers = [ + Buffer.from( + (new Array(100)).fill('').map((_, i) => `key${i}=value${i}`).join('&') + ), +]; +const calls = { + field: 0, + end: 0, +}; + +let n = 3e3; + +const moduleName = process.argv[2]; +switch (moduleName) { + case 'busboy': { + const busboy = require('busboy'); + + console.time(moduleName); + (function next() { + const parser = busboy({ + limits: { + fieldSizeLimit: Infinity, + }, + headers: { + 'content-type': 'application/x-www-form-urlencoded; charset=utf-8', + }, + }); + parser.on('field', (name, val, info) => { + ++calls.field; + }).on('close', () => { + ++calls.end; + if (--n === 0) + console.timeEnd(moduleName); + else + process.nextTick(next); + }); + + for (const buf of buffers) + parser.write(buf); + parser.end(); + })(); + break; + } + + case 'formidable': { + const QuerystringParser = + require('formidable/src/parsers/Querystring.js'); + + console.time(moduleName); + (function next() { + const parser = new QuerystringParser(); + parser.on('data', (obj) => { + ++calls.field; + }).on('end', () => { + ++calls.end; + if (--n === 0) + console.timeEnd(moduleName); + else + process.nextTick(next); + }); + + for (const buf of buffers) + parser.write(buf); + parser.end(); + })(); + break; + } + + case 'formidable-streaming': { + const QuerystringParser = + require('formidable/src/parsers/StreamingQuerystring.js'); + + console.time(moduleName); + (function next() { + const parser = new QuerystringParser(); + parser.on('data', (obj) => { + ++calls.field; + }).on('end', () => { + ++calls.end; + if (--n === 0) + console.timeEnd(moduleName); + else + process.nextTick(next); + }); + + for (const buf of buffers) + parser.write(buf); + parser.end(); + })(); + break; + } + + default: + if (moduleName === undefined) + console.error('Missing parser module name'); + else + console.error(`Invalid parser module name: ${moduleName}`); + process.exit(1); +} diff --git a/node_backend/node_modules/busboy/bench/bench-urlencoded-fields-900pairs-small-alt.js b/node_backend/node_modules/busboy/bench/bench-urlencoded-fields-900pairs-small-alt.js new file mode 100644 index 00000000..1f5645cb --- /dev/null +++ b/node_backend/node_modules/busboy/bench/bench-urlencoded-fields-900pairs-small-alt.js @@ -0,0 +1,84 @@ +'use strict'; + +const buffers = [ + Buffer.from( + (new Array(900)).fill('').map((_, i) => `key${i}=value${i}`).join('&') + ), +]; +const calls = { + field: 0, + end: 0, +}; + +const moduleName = process.argv[2]; +switch (moduleName) { + case 'busboy': { + const busboy = require('busboy'); + + console.time(moduleName); + const parser = busboy({ + limits: { + fieldSizeLimit: Infinity, + }, + headers: { + 'content-type': 'application/x-www-form-urlencoded; charset=utf-8', + }, + }); + parser.on('field', (name, val, info) => { + ++calls.field; + }).on('close', () => { + ++calls.end; + console.timeEnd(moduleName); + }); + + for (const buf of buffers) + parser.write(buf); + parser.end(); + break; + } + + case 'formidable': { + const QuerystringParser = + require('formidable/src/parsers/Querystring.js'); + + console.time(moduleName); + const parser = new QuerystringParser(); + parser.on('data', (obj) => { + ++calls.field; + }).on('end', () => { + ++calls.end; + console.timeEnd(moduleName); + }); + + for (const buf of buffers) + parser.write(buf); + parser.end(); + break; + } + + case 'formidable-streaming': { + const QuerystringParser = + require('formidable/src/parsers/StreamingQuerystring.js'); + + console.time(moduleName); + const parser = new QuerystringParser(); + parser.on('data', (obj) => { + ++calls.field; + }).on('end', () => { + ++calls.end; + console.timeEnd(moduleName); + }); + + for (const buf of buffers) + parser.write(buf); + parser.end(); + break; + } + + default: + if (moduleName === undefined) + console.error('Missing parser module name'); + else + console.error(`Invalid parser module name: ${moduleName}`); + process.exit(1); +} diff --git a/node_backend/node_modules/busboy/lib/index.js b/node_backend/node_modules/busboy/lib/index.js new file mode 100644 index 00000000..873272d9 --- /dev/null +++ b/node_backend/node_modules/busboy/lib/index.js @@ -0,0 +1,57 @@ +'use strict'; + +const { parseContentType } = require('./utils.js'); + +function getInstance(cfg) { + const headers = cfg.headers; + const conType = parseContentType(headers['content-type']); + if (!conType) + throw new Error('Malformed content type'); + + for (const type of TYPES) { + const matched = type.detect(conType); + if (!matched) + continue; + + const instanceCfg = { + limits: cfg.limits, + headers, + conType, + highWaterMark: undefined, + fileHwm: undefined, + defCharset: undefined, + defParamCharset: undefined, + preservePath: false, + }; + if (cfg.highWaterMark) + instanceCfg.highWaterMark = cfg.highWaterMark; + if (cfg.fileHwm) + instanceCfg.fileHwm = cfg.fileHwm; + instanceCfg.defCharset = cfg.defCharset; + instanceCfg.defParamCharset = cfg.defParamCharset; + instanceCfg.preservePath = cfg.preservePath; + return new type(instanceCfg); + } + + throw new Error(`Unsupported content type: ${headers['content-type']}`); +} + +// Note: types are explicitly listed here for easier bundling +// See: https://github.com/mscdex/busboy/issues/121 +const TYPES = [ + require('./types/multipart'), + require('./types/urlencoded'), +].filter(function(typemod) { return typeof typemod.detect === 'function'; }); + +module.exports = (cfg) => { + if (typeof cfg !== 'object' || cfg === null) + cfg = {}; + + if (typeof cfg.headers !== 'object' + || cfg.headers === null + || typeof cfg.headers['content-type'] !== 'string') { + throw new Error('Missing Content-Type'); + } + + return getInstance(cfg); +}; diff --git a/node_backend/node_modules/busboy/lib/types/multipart.js b/node_backend/node_modules/busboy/lib/types/multipart.js new file mode 100644 index 00000000..cc0d7bb6 --- /dev/null +++ b/node_backend/node_modules/busboy/lib/types/multipart.js @@ -0,0 +1,653 @@ +'use strict'; + +const { Readable, Writable } = require('stream'); + +const StreamSearch = require('streamsearch'); + +const { + basename, + convertToUTF8, + getDecoder, + parseContentType, + parseDisposition, +} = require('../utils.js'); + +const BUF_CRLF = Buffer.from('\r\n'); +const BUF_CR = Buffer.from('\r'); +const BUF_DASH = Buffer.from('-'); + +function noop() {} + +const MAX_HEADER_PAIRS = 2000; // From node +const MAX_HEADER_SIZE = 16 * 1024; // From node (its default value) + +const HPARSER_NAME = 0; +const HPARSER_PRE_OWS = 1; +const HPARSER_VALUE = 2; +class HeaderParser { + constructor(cb) { + this.header = Object.create(null); + this.pairCount = 0; + this.byteCount = 0; + this.state = HPARSER_NAME; + this.name = ''; + this.value = ''; + this.crlf = 0; + this.cb = cb; + } + + reset() { + this.header = Object.create(null); + this.pairCount = 0; + this.byteCount = 0; + this.state = HPARSER_NAME; + this.name = ''; + this.value = ''; + this.crlf = 0; + } + + push(chunk, pos, end) { + let start = pos; + while (pos < end) { + switch (this.state) { + case HPARSER_NAME: { + let done = false; + for (; pos < end; ++pos) { + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + const code = chunk[pos]; + if (TOKEN[code] !== 1) { + if (code !== 58/* ':' */) + return -1; + this.name += chunk.latin1Slice(start, pos); + if (this.name.length === 0) + return -1; + ++pos; + done = true; + this.state = HPARSER_PRE_OWS; + break; + } + } + if (!done) { + this.name += chunk.latin1Slice(start, pos); + break; + } + // FALLTHROUGH + } + case HPARSER_PRE_OWS: { + // Skip optional whitespace + let done = false; + for (; pos < end; ++pos) { + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + const code = chunk[pos]; + if (code !== 32/* ' ' */ && code !== 9/* '\t' */) { + start = pos; + done = true; + this.state = HPARSER_VALUE; + break; + } + } + if (!done) + break; + // FALLTHROUGH + } + case HPARSER_VALUE: + switch (this.crlf) { + case 0: // Nothing yet + for (; pos < end; ++pos) { + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + const code = chunk[pos]; + if (FIELD_VCHAR[code] !== 1) { + if (code !== 13/* '\r' */) + return -1; + ++this.crlf; + break; + } + } + this.value += chunk.latin1Slice(start, pos++); + break; + case 1: // Received CR + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + if (chunk[pos++] !== 10/* '\n' */) + return -1; + ++this.crlf; + break; + case 2: { // Received CR LF + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + const code = chunk[pos]; + if (code === 32/* ' ' */ || code === 9/* '\t' */) { + // Folded value + start = pos; + this.crlf = 0; + } else { + if (++this.pairCount < MAX_HEADER_PAIRS) { + this.name = this.name.toLowerCase(); + if (this.header[this.name] === undefined) + this.header[this.name] = [this.value]; + else + this.header[this.name].push(this.value); + } + if (code === 13/* '\r' */) { + ++this.crlf; + ++pos; + } else { + // Assume start of next header field name + start = pos; + this.crlf = 0; + this.state = HPARSER_NAME; + this.name = ''; + this.value = ''; + } + } + break; + } + case 3: { // Received CR LF CR + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + if (chunk[pos++] !== 10/* '\n' */) + return -1; + // End of header + const header = this.header; + this.reset(); + this.cb(header); + return pos; + } + } + break; + } + } + + return pos; + } +} + +class FileStream extends Readable { + constructor(opts, owner) { + super(opts); + this.truncated = false; + this._readcb = null; + this.once('end', () => { + // We need to make sure that we call any outstanding _writecb() that is + // associated with this file so that processing of the rest of the form + // can continue. This may not happen if the file stream ends right after + // backpressure kicks in, so we force it here. + this._read(); + if (--owner._fileEndsLeft === 0 && owner._finalcb) { + const cb = owner._finalcb; + owner._finalcb = null; + // Make sure other 'end' event handlers get a chance to be executed + // before busboy's 'finish' event is emitted + process.nextTick(cb); + } + }); + } + _read(n) { + const cb = this._readcb; + if (cb) { + this._readcb = null; + cb(); + } + } +} + +const ignoreData = { + push: (chunk, pos) => {}, + destroy: () => {}, +}; + +function callAndUnsetCb(self, err) { + const cb = self._writecb; + self._writecb = null; + if (err) + self.destroy(err); + else if (cb) + cb(); +} + +function nullDecoder(val, hint) { + return val; +} + +class Multipart extends Writable { + constructor(cfg) { + const streamOpts = { + autoDestroy: true, + emitClose: true, + highWaterMark: (typeof cfg.highWaterMark === 'number' + ? cfg.highWaterMark + : undefined), + }; + super(streamOpts); + + if (!cfg.conType.params || typeof cfg.conType.params.boundary !== 'string') + throw new Error('Multipart: Boundary not found'); + + const boundary = cfg.conType.params.boundary; + const paramDecoder = (typeof cfg.defParamCharset === 'string' + && cfg.defParamCharset + ? getDecoder(cfg.defParamCharset) + : nullDecoder); + const defCharset = (cfg.defCharset || 'utf8'); + const preservePath = cfg.preservePath; + const fileOpts = { + autoDestroy: true, + emitClose: true, + highWaterMark: (typeof cfg.fileHwm === 'number' + ? cfg.fileHwm + : undefined), + }; + + const limits = cfg.limits; + const fieldSizeLimit = (limits && typeof limits.fieldSize === 'number' + ? limits.fieldSize + : 1 * 1024 * 1024); + const fileSizeLimit = (limits && typeof limits.fileSize === 'number' + ? limits.fileSize + : Infinity); + const filesLimit = (limits && typeof limits.files === 'number' + ? limits.files + : Infinity); + const fieldsLimit = (limits && typeof limits.fields === 'number' + ? limits.fields + : Infinity); + const partsLimit = (limits && typeof limits.parts === 'number' + ? limits.parts + : Infinity); + + let parts = -1; // Account for initial boundary + let fields = 0; + let files = 0; + let skipPart = false; + + this._fileEndsLeft = 0; + this._fileStream = undefined; + this._complete = false; + let fileSize = 0; + + let field; + let fieldSize = 0; + let partCharset; + let partEncoding; + let partType; + let partName; + let partTruncated = false; + + let hitFilesLimit = false; + let hitFieldsLimit = false; + + this._hparser = null; + const hparser = new HeaderParser((header) => { + this._hparser = null; + skipPart = false; + + partType = 'text/plain'; + partCharset = defCharset; + partEncoding = '7bit'; + partName = undefined; + partTruncated = false; + + let filename; + if (!header['content-disposition']) { + skipPart = true; + return; + } + + const disp = parseDisposition(header['content-disposition'][0], + paramDecoder); + if (!disp || disp.type !== 'form-data') { + skipPart = true; + return; + } + + if (disp.params) { + if (disp.params.name) + partName = disp.params.name; + + if (disp.params['filename*']) + filename = disp.params['filename*']; + else if (disp.params.filename) + filename = disp.params.filename; + + if (filename !== undefined && !preservePath) + filename = basename(filename); + } + + if (header['content-type']) { + const conType = parseContentType(header['content-type'][0]); + if (conType) { + partType = `${conType.type}/${conType.subtype}`; + if (conType.params && typeof conType.params.charset === 'string') + partCharset = conType.params.charset.toLowerCase(); + } + } + + if (header['content-transfer-encoding']) + partEncoding = header['content-transfer-encoding'][0].toLowerCase(); + + if (partType === 'application/octet-stream' || filename !== undefined) { + // File + + if (files === filesLimit) { + if (!hitFilesLimit) { + hitFilesLimit = true; + this.emit('filesLimit'); + } + skipPart = true; + return; + } + ++files; + + if (this.listenerCount('file') === 0) { + skipPart = true; + return; + } + + fileSize = 0; + this._fileStream = new FileStream(fileOpts, this); + ++this._fileEndsLeft; + this.emit( + 'file', + partName, + this._fileStream, + { filename, + encoding: partEncoding, + mimeType: partType } + ); + } else { + // Non-file + + if (fields === fieldsLimit) { + if (!hitFieldsLimit) { + hitFieldsLimit = true; + this.emit('fieldsLimit'); + } + skipPart = true; + return; + } + ++fields; + + if (this.listenerCount('field') === 0) { + skipPart = true; + return; + } + + field = []; + fieldSize = 0; + } + }); + + let matchPostBoundary = 0; + const ssCb = (isMatch, data, start, end, isDataSafe) => { +retrydata: + while (data) { + if (this._hparser !== null) { + const ret = this._hparser.push(data, start, end); + if (ret === -1) { + this._hparser = null; + hparser.reset(); + this.emit('error', new Error('Malformed part header')); + break; + } + start = ret; + } + + if (start === end) + break; + + if (matchPostBoundary !== 0) { + if (matchPostBoundary === 1) { + switch (data[start]) { + case 45: // '-' + // Try matching '--' after boundary + matchPostBoundary = 2; + ++start; + break; + case 13: // '\r' + // Try matching CR LF before header + matchPostBoundary = 3; + ++start; + break; + default: + matchPostBoundary = 0; + } + if (start === end) + return; + } + + if (matchPostBoundary === 2) { + matchPostBoundary = 0; + if (data[start] === 45/* '-' */) { + // End of multipart data + this._complete = true; + this._bparser = ignoreData; + return; + } + // We saw something other than '-', so put the dash we consumed + // "back" + const writecb = this._writecb; + this._writecb = noop; + ssCb(false, BUF_DASH, 0, 1, false); + this._writecb = writecb; + } else if (matchPostBoundary === 3) { + matchPostBoundary = 0; + if (data[start] === 10/* '\n' */) { + ++start; + if (parts >= partsLimit) + break; + // Prepare the header parser + this._hparser = hparser; + if (start === end) + break; + // Process the remaining data as a header + continue retrydata; + } else { + // We saw something other than LF, so put the CR we consumed + // "back" + const writecb = this._writecb; + this._writecb = noop; + ssCb(false, BUF_CR, 0, 1, false); + this._writecb = writecb; + } + } + } + + if (!skipPart) { + if (this._fileStream) { + let chunk; + const actualLen = Math.min(end - start, fileSizeLimit - fileSize); + if (!isDataSafe) { + chunk = Buffer.allocUnsafe(actualLen); + data.copy(chunk, 0, start, start + actualLen); + } else { + chunk = data.slice(start, start + actualLen); + } + + fileSize += chunk.length; + if (fileSize === fileSizeLimit) { + if (chunk.length > 0) + this._fileStream.push(chunk); + this._fileStream.emit('limit'); + this._fileStream.truncated = true; + skipPart = true; + } else if (!this._fileStream.push(chunk)) { + if (this._writecb) + this._fileStream._readcb = this._writecb; + this._writecb = null; + } + } else if (field !== undefined) { + let chunk; + const actualLen = Math.min( + end - start, + fieldSizeLimit - fieldSize + ); + if (!isDataSafe) { + chunk = Buffer.allocUnsafe(actualLen); + data.copy(chunk, 0, start, start + actualLen); + } else { + chunk = data.slice(start, start + actualLen); + } + + fieldSize += actualLen; + field.push(chunk); + if (fieldSize === fieldSizeLimit) { + skipPart = true; + partTruncated = true; + } + } + } + + break; + } + + if (isMatch) { + matchPostBoundary = 1; + + if (this._fileStream) { + // End the active file stream if the previous part was a file + this._fileStream.push(null); + this._fileStream = null; + } else if (field !== undefined) { + let data; + switch (field.length) { + case 0: + data = ''; + break; + case 1: + data = convertToUTF8(field[0], partCharset, 0); + break; + default: + data = convertToUTF8( + Buffer.concat(field, fieldSize), + partCharset, + 0 + ); + } + field = undefined; + fieldSize = 0; + this.emit( + 'field', + partName, + data, + { nameTruncated: false, + valueTruncated: partTruncated, + encoding: partEncoding, + mimeType: partType } + ); + } + + if (++parts === partsLimit) + this.emit('partsLimit'); + } + }; + this._bparser = new StreamSearch(`\r\n--${boundary}`, ssCb); + + this._writecb = null; + this._finalcb = null; + + // Just in case there is no preamble + this.write(BUF_CRLF); + } + + static detect(conType) { + return (conType.type === 'multipart' && conType.subtype === 'form-data'); + } + + _write(chunk, enc, cb) { + this._writecb = cb; + this._bparser.push(chunk, 0); + if (this._writecb) + callAndUnsetCb(this); + } + + _destroy(err, cb) { + this._hparser = null; + this._bparser = ignoreData; + if (!err) + err = checkEndState(this); + const fileStream = this._fileStream; + if (fileStream) { + this._fileStream = null; + fileStream.destroy(err); + } + cb(err); + } + + _final(cb) { + this._bparser.destroy(); + if (!this._complete) + return cb(new Error('Unexpected end of form')); + if (this._fileEndsLeft) + this._finalcb = finalcb.bind(null, this, cb); + else + finalcb(this, cb); + } +} + +function finalcb(self, cb, err) { + if (err) + return cb(err); + err = checkEndState(self); + cb(err); +} + +function checkEndState(self) { + if (self._hparser) + return new Error('Malformed part header'); + const fileStream = self._fileStream; + if (fileStream) { + self._fileStream = null; + fileStream.destroy(new Error('Unexpected end of file')); + } + if (!self._complete) + return new Error('Unexpected end of form'); +} + +const TOKEN = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +]; + +const FIELD_VCHAR = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +]; + +module.exports = Multipart; diff --git a/node_backend/node_modules/busboy/lib/types/urlencoded.js b/node_backend/node_modules/busboy/lib/types/urlencoded.js new file mode 100644 index 00000000..5c463a25 --- /dev/null +++ b/node_backend/node_modules/busboy/lib/types/urlencoded.js @@ -0,0 +1,350 @@ +'use strict'; + +const { Writable } = require('stream'); + +const { getDecoder } = require('../utils.js'); + +class URLEncoded extends Writable { + constructor(cfg) { + const streamOpts = { + autoDestroy: true, + emitClose: true, + highWaterMark: (typeof cfg.highWaterMark === 'number' + ? cfg.highWaterMark + : undefined), + }; + super(streamOpts); + + let charset = (cfg.defCharset || 'utf8'); + if (cfg.conType.params && typeof cfg.conType.params.charset === 'string') + charset = cfg.conType.params.charset; + + this.charset = charset; + + const limits = cfg.limits; + this.fieldSizeLimit = (limits && typeof limits.fieldSize === 'number' + ? limits.fieldSize + : 1 * 1024 * 1024); + this.fieldsLimit = (limits && typeof limits.fields === 'number' + ? limits.fields + : Infinity); + this.fieldNameSizeLimit = ( + limits && typeof limits.fieldNameSize === 'number' + ? limits.fieldNameSize + : 100 + ); + + this._inKey = true; + this._keyTrunc = false; + this._valTrunc = false; + this._bytesKey = 0; + this._bytesVal = 0; + this._fields = 0; + this._key = ''; + this._val = ''; + this._byte = -2; + this._lastPos = 0; + this._encode = 0; + this._decoder = getDecoder(charset); + } + + static detect(conType) { + return (conType.type === 'application' + && conType.subtype === 'x-www-form-urlencoded'); + } + + _write(chunk, enc, cb) { + if (this._fields >= this.fieldsLimit) + return cb(); + + let i = 0; + const len = chunk.length; + this._lastPos = 0; + + // Check if we last ended mid-percent-encoded byte + if (this._byte !== -2) { + i = readPctEnc(this, chunk, i, len); + if (i === -1) + return cb(new Error('Malformed urlencoded form')); + if (i >= len) + return cb(); + if (this._inKey) + ++this._bytesKey; + else + ++this._bytesVal; + } + +main: + while (i < len) { + if (this._inKey) { + // Parsing key + + i = skipKeyBytes(this, chunk, i, len); + + while (i < len) { + switch (chunk[i]) { + case 61: // '=' + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + this._lastPos = ++i; + this._key = this._decoder(this._key, this._encode); + this._encode = 0; + this._inKey = false; + continue main; + case 38: // '&' + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + this._lastPos = ++i; + this._key = this._decoder(this._key, this._encode); + this._encode = 0; + if (this._bytesKey > 0) { + this.emit( + 'field', + this._key, + '', + { nameTruncated: this._keyTrunc, + valueTruncated: false, + encoding: this.charset, + mimeType: 'text/plain' } + ); + } + this._key = ''; + this._val = ''; + this._keyTrunc = false; + this._valTrunc = false; + this._bytesKey = 0; + this._bytesVal = 0; + if (++this._fields >= this.fieldsLimit) { + this.emit('fieldsLimit'); + return cb(); + } + continue; + case 43: // '+' + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + this._key += ' '; + this._lastPos = i + 1; + break; + case 37: // '%' + if (this._encode === 0) + this._encode = 1; + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + this._lastPos = i + 1; + this._byte = -1; + i = readPctEnc(this, chunk, i + 1, len); + if (i === -1) + return cb(new Error('Malformed urlencoded form')); + if (i >= len) + return cb(); + ++this._bytesKey; + i = skipKeyBytes(this, chunk, i, len); + continue; + } + ++i; + ++this._bytesKey; + i = skipKeyBytes(this, chunk, i, len); + } + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + } else { + // Parsing value + + i = skipValBytes(this, chunk, i, len); + + while (i < len) { + switch (chunk[i]) { + case 38: // '&' + if (this._lastPos < i) + this._val += chunk.latin1Slice(this._lastPos, i); + this._lastPos = ++i; + this._inKey = true; + this._val = this._decoder(this._val, this._encode); + this._encode = 0; + if (this._bytesKey > 0 || this._bytesVal > 0) { + this.emit( + 'field', + this._key, + this._val, + { nameTruncated: this._keyTrunc, + valueTruncated: this._valTrunc, + encoding: this.charset, + mimeType: 'text/plain' } + ); + } + this._key = ''; + this._val = ''; + this._keyTrunc = false; + this._valTrunc = false; + this._bytesKey = 0; + this._bytesVal = 0; + if (++this._fields >= this.fieldsLimit) { + this.emit('fieldsLimit'); + return cb(); + } + continue main; + case 43: // '+' + if (this._lastPos < i) + this._val += chunk.latin1Slice(this._lastPos, i); + this._val += ' '; + this._lastPos = i + 1; + break; + case 37: // '%' + if (this._encode === 0) + this._encode = 1; + if (this._lastPos < i) + this._val += chunk.latin1Slice(this._lastPos, i); + this._lastPos = i + 1; + this._byte = -1; + i = readPctEnc(this, chunk, i + 1, len); + if (i === -1) + return cb(new Error('Malformed urlencoded form')); + if (i >= len) + return cb(); + ++this._bytesVal; + i = skipValBytes(this, chunk, i, len); + continue; + } + ++i; + ++this._bytesVal; + i = skipValBytes(this, chunk, i, len); + } + if (this._lastPos < i) + this._val += chunk.latin1Slice(this._lastPos, i); + } + } + + cb(); + } + + _final(cb) { + if (this._byte !== -2) + return cb(new Error('Malformed urlencoded form')); + if (!this._inKey || this._bytesKey > 0 || this._bytesVal > 0) { + if (this._inKey) + this._key = this._decoder(this._key, this._encode); + else + this._val = this._decoder(this._val, this._encode); + this.emit( + 'field', + this._key, + this._val, + { nameTruncated: this._keyTrunc, + valueTruncated: this._valTrunc, + encoding: this.charset, + mimeType: 'text/plain' } + ); + } + cb(); + } +} + +function readPctEnc(self, chunk, pos, len) { + if (pos >= len) + return len; + + if (self._byte === -1) { + // We saw a '%' but no hex characters yet + const hexUpper = HEX_VALUES[chunk[pos++]]; + if (hexUpper === -1) + return -1; + + if (hexUpper >= 8) + self._encode = 2; // Indicate high bits detected + + if (pos < len) { + // Both hex characters are in this chunk + const hexLower = HEX_VALUES[chunk[pos++]]; + if (hexLower === -1) + return -1; + + if (self._inKey) + self._key += String.fromCharCode((hexUpper << 4) + hexLower); + else + self._val += String.fromCharCode((hexUpper << 4) + hexLower); + + self._byte = -2; + self._lastPos = pos; + } else { + // Only one hex character was available in this chunk + self._byte = hexUpper; + } + } else { + // We saw only one hex character so far + const hexLower = HEX_VALUES[chunk[pos++]]; + if (hexLower === -1) + return -1; + + if (self._inKey) + self._key += String.fromCharCode((self._byte << 4) + hexLower); + else + self._val += String.fromCharCode((self._byte << 4) + hexLower); + + self._byte = -2; + self._lastPos = pos; + } + + return pos; +} + +function skipKeyBytes(self, chunk, pos, len) { + // Skip bytes if we've truncated + if (self._bytesKey > self.fieldNameSizeLimit) { + if (!self._keyTrunc) { + if (self._lastPos < pos) + self._key += chunk.latin1Slice(self._lastPos, pos - 1); + } + self._keyTrunc = true; + for (; pos < len; ++pos) { + const code = chunk[pos]; + if (code === 61/* '=' */ || code === 38/* '&' */) + break; + ++self._bytesKey; + } + self._lastPos = pos; + } + + return pos; +} + +function skipValBytes(self, chunk, pos, len) { + // Skip bytes if we've truncated + if (self._bytesVal > self.fieldSizeLimit) { + if (!self._valTrunc) { + if (self._lastPos < pos) + self._val += chunk.latin1Slice(self._lastPos, pos - 1); + } + self._valTrunc = true; + for (; pos < len; ++pos) { + if (chunk[pos] === 38/* '&' */) + break; + ++self._bytesVal; + } + self._lastPos = pos; + } + + return pos; +} + +/* eslint-disable no-multi-spaces */ +const HEX_VALUES = [ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, + -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, +]; +/* eslint-enable no-multi-spaces */ + +module.exports = URLEncoded; diff --git a/node_backend/node_modules/busboy/lib/utils.js b/node_backend/node_modules/busboy/lib/utils.js new file mode 100644 index 00000000..8274f6c3 --- /dev/null +++ b/node_backend/node_modules/busboy/lib/utils.js @@ -0,0 +1,596 @@ +'use strict'; + +function parseContentType(str) { + if (str.length === 0) + return; + + const params = Object.create(null); + let i = 0; + + // Parse type + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (code !== 47/* '/' */ || i === 0) + return; + break; + } + } + // Check for type without subtype + if (i === str.length) + return; + + const type = str.slice(0, i).toLowerCase(); + + // Parse subtype + const subtypeStart = ++i; + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + // Make sure we have a subtype + if (i === subtypeStart) + return; + + if (parseContentTypeParams(str, i, params) === undefined) + return; + break; + } + } + // Make sure we have a subtype + if (i === subtypeStart) + return; + + const subtype = str.slice(subtypeStart, i).toLowerCase(); + + return { type, subtype, params }; +} + +function parseContentTypeParams(str, i, params) { + while (i < str.length) { + // Consume whitespace + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code !== 32/* ' ' */ && code !== 9/* '\t' */) + break; + } + + // Ended on whitespace + if (i === str.length) + break; + + // Check for malformed parameter + if (str.charCodeAt(i++) !== 59/* ';' */) + return; + + // Consume whitespace + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code !== 32/* ' ' */ && code !== 9/* '\t' */) + break; + } + + // Ended on whitespace (malformed) + if (i === str.length) + return; + + let name; + const nameStart = i; + // Parse parameter name + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (code !== 61/* '=' */) + return; + break; + } + } + + // No value (malformed) + if (i === str.length) + return; + + name = str.slice(nameStart, i); + ++i; // Skip over '=' + + // No value (malformed) + if (i === str.length) + return; + + let value = ''; + let valueStart; + if (str.charCodeAt(i) === 34/* '"' */) { + valueStart = ++i; + let escaping = false; + // Parse quoted value + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code === 92/* '\\' */) { + if (escaping) { + valueStart = i; + escaping = false; + } else { + value += str.slice(valueStart, i); + escaping = true; + } + continue; + } + if (code === 34/* '"' */) { + if (escaping) { + valueStart = i; + escaping = false; + continue; + } + value += str.slice(valueStart, i); + break; + } + if (escaping) { + valueStart = i - 1; + escaping = false; + } + // Invalid unescaped quoted character (malformed) + if (QDTEXT[code] !== 1) + return; + } + + // No end quote (malformed) + if (i === str.length) + return; + + ++i; // Skip over double quote + } else { + valueStart = i; + // Parse unquoted value + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + // No value (malformed) + if (i === valueStart) + return; + break; + } + } + value = str.slice(valueStart, i); + } + + name = name.toLowerCase(); + if (params[name] === undefined) + params[name] = value; + } + + return params; +} + +function parseDisposition(str, defDecoder) { + if (str.length === 0) + return; + + const params = Object.create(null); + let i = 0; + + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (parseDispositionParams(str, i, params, defDecoder) === undefined) + return; + break; + } + } + + const type = str.slice(0, i).toLowerCase(); + + return { type, params }; +} + +function parseDispositionParams(str, i, params, defDecoder) { + while (i < str.length) { + // Consume whitespace + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code !== 32/* ' ' */ && code !== 9/* '\t' */) + break; + } + + // Ended on whitespace + if (i === str.length) + break; + + // Check for malformed parameter + if (str.charCodeAt(i++) !== 59/* ';' */) + return; + + // Consume whitespace + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code !== 32/* ' ' */ && code !== 9/* '\t' */) + break; + } + + // Ended on whitespace (malformed) + if (i === str.length) + return; + + let name; + const nameStart = i; + // Parse parameter name + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (code === 61/* '=' */) + break; + return; + } + } + + // No value (malformed) + if (i === str.length) + return; + + let value = ''; + let valueStart; + let charset; + //~ let lang; + name = str.slice(nameStart, i); + if (name.charCodeAt(name.length - 1) === 42/* '*' */) { + // Extended value + + const charsetStart = ++i; + // Parse charset name + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (CHARSET[code] !== 1) { + if (code !== 39/* '\'' */) + return; + break; + } + } + + // Incomplete charset (malformed) + if (i === str.length) + return; + + charset = str.slice(charsetStart, i); + ++i; // Skip over the '\'' + + //~ const langStart = ++i; + // Parse language name + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code === 39/* '\'' */) + break; + } + + // Incomplete language (malformed) + if (i === str.length) + return; + + //~ lang = str.slice(langStart, i); + ++i; // Skip over the '\'' + + // No value (malformed) + if (i === str.length) + return; + + valueStart = i; + + let encode = 0; + // Parse value + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (EXTENDED_VALUE[code] !== 1) { + if (code === 37/* '%' */) { + let hexUpper; + let hexLower; + if (i + 2 < str.length + && (hexUpper = HEX_VALUES[str.charCodeAt(i + 1)]) !== -1 + && (hexLower = HEX_VALUES[str.charCodeAt(i + 2)]) !== -1) { + const byteVal = (hexUpper << 4) + hexLower; + value += str.slice(valueStart, i); + value += String.fromCharCode(byteVal); + i += 2; + valueStart = i + 1; + if (byteVal >= 128) + encode = 2; + else if (encode === 0) + encode = 1; + continue; + } + // '%' disallowed in non-percent encoded contexts (malformed) + return; + } + break; + } + } + + value += str.slice(valueStart, i); + value = convertToUTF8(value, charset, encode); + if (value === undefined) + return; + } else { + // Non-extended value + + ++i; // Skip over '=' + + // No value (malformed) + if (i === str.length) + return; + + if (str.charCodeAt(i) === 34/* '"' */) { + valueStart = ++i; + let escaping = false; + // Parse quoted value + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code === 92/* '\\' */) { + if (escaping) { + valueStart = i; + escaping = false; + } else { + value += str.slice(valueStart, i); + escaping = true; + } + continue; + } + if (code === 34/* '"' */) { + if (escaping) { + valueStart = i; + escaping = false; + continue; + } + value += str.slice(valueStart, i); + break; + } + if (escaping) { + valueStart = i - 1; + escaping = false; + } + // Invalid unescaped quoted character (malformed) + if (QDTEXT[code] !== 1) + return; + } + + // No end quote (malformed) + if (i === str.length) + return; + + ++i; // Skip over double quote + } else { + valueStart = i; + // Parse unquoted value + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + // No value (malformed) + if (i === valueStart) + return; + break; + } + } + value = str.slice(valueStart, i); + } + + value = defDecoder(value, 2); + if (value === undefined) + return; + } + + name = name.toLowerCase(); + if (params[name] === undefined) + params[name] = value; + } + + return params; +} + +function getDecoder(charset) { + let lc; + while (true) { + switch (charset) { + case 'utf-8': + case 'utf8': + return decoders.utf8; + case 'latin1': + case 'ascii': // TODO: Make these a separate, strict decoder? + case 'us-ascii': + case 'iso-8859-1': + case 'iso8859-1': + case 'iso88591': + case 'iso_8859-1': + case 'windows-1252': + case 'iso_8859-1:1987': + case 'cp1252': + case 'x-cp1252': + return decoders.latin1; + case 'utf16le': + case 'utf-16le': + case 'ucs2': + case 'ucs-2': + return decoders.utf16le; + case 'base64': + return decoders.base64; + default: + if (lc === undefined) { + lc = true; + charset = charset.toLowerCase(); + continue; + } + return decoders.other.bind(charset); + } + } +} + +const decoders = { + utf8: (data, hint) => { + if (data.length === 0) + return ''; + if (typeof data === 'string') { + // If `data` never had any percent-encoded bytes or never had any that + // were outside of the ASCII range, then we can safely just return the + // input since UTF-8 is ASCII compatible + if (hint < 2) + return data; + + data = Buffer.from(data, 'latin1'); + } + return data.utf8Slice(0, data.length); + }, + + latin1: (data, hint) => { + if (data.length === 0) + return ''; + if (typeof data === 'string') + return data; + return data.latin1Slice(0, data.length); + }, + + utf16le: (data, hint) => { + if (data.length === 0) + return ''; + if (typeof data === 'string') + data = Buffer.from(data, 'latin1'); + return data.ucs2Slice(0, data.length); + }, + + base64: (data, hint) => { + if (data.length === 0) + return ''; + if (typeof data === 'string') + data = Buffer.from(data, 'latin1'); + return data.base64Slice(0, data.length); + }, + + other: (data, hint) => { + if (data.length === 0) + return ''; + if (typeof data === 'string') + data = Buffer.from(data, 'latin1'); + try { + const decoder = new TextDecoder(this); + return decoder.decode(data); + } catch {} + }, +}; + +function convertToUTF8(data, charset, hint) { + const decode = getDecoder(charset); + if (decode) + return decode(data, hint); +} + +function basename(path) { + if (typeof path !== 'string') + return ''; + for (let i = path.length - 1; i >= 0; --i) { + switch (path.charCodeAt(i)) { + case 0x2F: // '/' + case 0x5C: // '\' + path = path.slice(i + 1); + return (path === '..' || path === '.' ? '' : path); + } + } + return (path === '..' || path === '.' ? '' : path); +} + +const TOKEN = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +]; + +const QDTEXT = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +]; + +const CHARSET = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +]; + +const EXTENDED_VALUE = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +]; + +/* eslint-disable no-multi-spaces */ +const HEX_VALUES = [ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, + -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, +]; +/* eslint-enable no-multi-spaces */ + +module.exports = { + basename, + convertToUTF8, + getDecoder, + parseContentType, + parseDisposition, +}; diff --git a/node_backend/node_modules/busboy/package.json b/node_backend/node_modules/busboy/package.json new file mode 100644 index 00000000..ac2577fe --- /dev/null +++ b/node_backend/node_modules/busboy/package.json @@ -0,0 +1,22 @@ +{ "name": "busboy", + "version": "1.6.0", + "author": "Brian White ", + "description": "A streaming parser for HTML form data for node.js", + "main": "./lib/index.js", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "devDependencies": { + "@mscdex/eslint-config": "^1.1.0", + "eslint": "^7.32.0" + }, + "scripts": { + "test": "node test/test.js", + "lint": "eslint --cache --report-unused-disable-directives --ext=.js .eslintrc.js lib test bench", + "lint:fix": "npm run lint -- --fix" + }, + "engines": { "node": ">=10.16.0" }, + "keywords": [ "uploads", "forms", "multipart", "form-data" ], + "licenses": [ { "type": "MIT", "url": "http://github.com/mscdex/busboy/raw/master/LICENSE" } ], + "repository": { "type": "git", "url": "http://github.com/mscdex/busboy.git" } +} diff --git a/node_backend/node_modules/busboy/test/common.js b/node_backend/node_modules/busboy/test/common.js new file mode 100644 index 00000000..fb82ad81 --- /dev/null +++ b/node_backend/node_modules/busboy/test/common.js @@ -0,0 +1,109 @@ +'use strict'; + +const assert = require('assert'); +const { inspect } = require('util'); + +const mustCallChecks = []; + +function noop() {} + +function runCallChecks(exitCode) { + if (exitCode !== 0) return; + + const failed = mustCallChecks.filter((context) => { + if ('minimum' in context) { + context.messageSegment = `at least ${context.minimum}`; + return context.actual < context.minimum; + } + context.messageSegment = `exactly ${context.exact}`; + return context.actual !== context.exact; + }); + + failed.forEach((context) => { + console.error('Mismatched %s function calls. Expected %s, actual %d.', + context.name, + context.messageSegment, + context.actual); + console.error(context.stack.split('\n').slice(2).join('\n')); + }); + + if (failed.length) + process.exit(1); +} + +function mustCall(fn, exact) { + return _mustCallInner(fn, exact, 'exact'); +} + +function mustCallAtLeast(fn, minimum) { + return _mustCallInner(fn, minimum, 'minimum'); +} + +function _mustCallInner(fn, criteria = 1, field) { + if (process._exiting) + throw new Error('Cannot use common.mustCall*() in process exit handler'); + + if (typeof fn === 'number') { + criteria = fn; + fn = noop; + } else if (fn === undefined) { + fn = noop; + } + + if (typeof criteria !== 'number') + throw new TypeError(`Invalid ${field} value: ${criteria}`); + + const context = { + [field]: criteria, + actual: 0, + stack: inspect(new Error()), + name: fn.name || '' + }; + + // Add the exit listener only once to avoid listener leak warnings + if (mustCallChecks.length === 0) + process.on('exit', runCallChecks); + + mustCallChecks.push(context); + + function wrapped(...args) { + ++context.actual; + return fn.call(this, ...args); + } + // TODO: remove origFn? + wrapped.origFn = fn; + + return wrapped; +} + +function getCallSite(top) { + const originalStackFormatter = Error.prepareStackTrace; + Error.prepareStackTrace = (err, stack) => + `${stack[0].getFileName()}:${stack[0].getLineNumber()}`; + const err = new Error(); + Error.captureStackTrace(err, top); + // With the V8 Error API, the stack is not formatted until it is accessed + // eslint-disable-next-line no-unused-expressions + err.stack; + Error.prepareStackTrace = originalStackFormatter; + return err.stack; +} + +function mustNotCall(msg) { + const callSite = getCallSite(mustNotCall); + return function mustNotCall(...args) { + args = args.map(inspect).join(', '); + const argsInfo = (args.length > 0 + ? `\ncalled with arguments: ${args}` + : ''); + assert.fail( + `${msg || 'function should not have been called'} at ${callSite}` + + argsInfo); + }; +} + +module.exports = { + mustCall, + mustCallAtLeast, + mustNotCall, +}; diff --git a/node_backend/node_modules/busboy/test/test-types-multipart-charsets.js b/node_backend/node_modules/busboy/test/test-types-multipart-charsets.js new file mode 100644 index 00000000..ed9c38ae --- /dev/null +++ b/node_backend/node_modules/busboy/test/test-types-multipart-charsets.js @@ -0,0 +1,94 @@ +'use strict'; + +const assert = require('assert'); +const { inspect } = require('util'); + +const { mustCall } = require(`${__dirname}/common.js`); + +const busboy = require('..'); + +const input = Buffer.from([ + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="テスト.dat"', + 'Content-Type: application/octet-stream', + '', + 'A'.repeat(1023), + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--' +].join('\r\n')); +const boundary = '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k'; +const expected = [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('A'.repeat(1023)), + info: { + filename: 'テスト.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, +]; +const bb = busboy({ + defParamCharset: 'utf8', + headers: { + 'content-type': `multipart/form-data; boundary=${boundary}`, + } +}); +const results = []; + +bb.on('field', (name, val, info) => { + results.push({ type: 'field', name, val, info }); +}); + +bb.on('file', (name, stream, info) => { + const data = []; + let nb = 0; + const file = { + type: 'file', + name, + data: null, + info, + limited: false, + }; + results.push(file); + stream.on('data', (d) => { + data.push(d); + nb += d.length; + }).on('limit', () => { + file.limited = true; + }).on('close', () => { + file.data = Buffer.concat(data, nb); + assert.strictEqual(stream.truncated, file.limited); + }).once('error', (err) => { + file.err = err.message; + }); +}); + +bb.on('error', (err) => { + results.push({ error: err.message }); +}); + +bb.on('partsLimit', () => { + results.push('partsLimit'); +}); + +bb.on('filesLimit', () => { + results.push('filesLimit'); +}); + +bb.on('fieldsLimit', () => { + results.push('fieldsLimit'); +}); + +bb.on('close', mustCall(() => { + assert.deepStrictEqual( + results, + expected, + 'Results mismatch.\n' + + `Parsed: ${inspect(results)}\n` + + `Expected: ${inspect(expected)}` + ); +})); + +bb.end(input); diff --git a/node_backend/node_modules/busboy/test/test-types-multipart-stream-pause.js b/node_backend/node_modules/busboy/test/test-types-multipart-stream-pause.js new file mode 100644 index 00000000..df7268a4 --- /dev/null +++ b/node_backend/node_modules/busboy/test/test-types-multipart-stream-pause.js @@ -0,0 +1,102 @@ +'use strict'; + +const assert = require('assert'); +const { randomFillSync } = require('crypto'); +const { inspect } = require('util'); + +const busboy = require('..'); + +const { mustCall } = require('./common.js'); + +const BOUNDARY = 'u2KxIV5yF1y+xUspOQCCZopaVgeV6Jxihv35XQJmuTx8X3sh'; + +function formDataSection(key, value) { + return Buffer.from( + `\r\n--${BOUNDARY}` + + `\r\nContent-Disposition: form-data; name="${key}"` + + `\r\n\r\n${value}` + ); +} + +function formDataFile(key, filename, contentType) { + const buf = Buffer.allocUnsafe(100000); + return Buffer.concat([ + Buffer.from(`\r\n--${BOUNDARY}\r\n`), + Buffer.from(`Content-Disposition: form-data; name="${key}"` + + `; filename="${filename}"\r\n`), + Buffer.from(`Content-Type: ${contentType}\r\n\r\n`), + randomFillSync(buf) + ]); +} + +const reqChunks = [ + Buffer.concat([ + formDataFile('file', 'file.bin', 'application/octet-stream'), + formDataSection('foo', 'foo value'), + ]), + formDataSection('bar', 'bar value'), + Buffer.from(`\r\n--${BOUNDARY}--\r\n`) +]; +const bb = busboy({ + headers: { + 'content-type': `multipart/form-data; boundary=${BOUNDARY}` + } +}); +const expected = [ + { type: 'file', + name: 'file', + info: { + filename: 'file.bin', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + }, + { type: 'field', + name: 'foo', + val: 'foo value', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + { type: 'field', + name: 'bar', + val: 'bar value', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, +]; +const results = []; + +bb.on('field', (name, val, info) => { + results.push({ type: 'field', name, val, info }); +}); + +bb.on('file', (name, stream, info) => { + results.push({ type: 'file', name, info }); + // Simulate a pipe where the destination is pausing (perhaps due to waiting + // for file system write to finish) + setTimeout(() => { + stream.resume(); + }, 10); +}); + +bb.on('close', mustCall(() => { + assert.deepStrictEqual( + results, + expected, + 'Results mismatch.\n' + + `Parsed: ${inspect(results)}\n` + + `Expected: ${inspect(expected)}` + ); +})); + +for (const chunk of reqChunks) + bb.write(chunk); +bb.end(); diff --git a/node_backend/node_modules/busboy/test/test-types-multipart.js b/node_backend/node_modules/busboy/test/test-types-multipart.js new file mode 100644 index 00000000..9755642a --- /dev/null +++ b/node_backend/node_modules/busboy/test/test-types-multipart.js @@ -0,0 +1,1053 @@ +'use strict'; + +const assert = require('assert'); +const { inspect } = require('util'); + +const busboy = require('..'); + +const active = new Map(); + +const tests = [ + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_0"', + '', + 'super alpha file', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_1"', + '', + 'super beta file', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="1k_a.dat"', + 'Content-Type: application/octet-stream', + '', + 'A'.repeat(1023), + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_1"; filename="1k_b.dat"', + 'Content-Type: application/octet-stream', + '', + 'B'.repeat(1023), + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--' + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { type: 'field', + name: 'file_name_0', + val: 'super alpha file', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + { type: 'field', + name: 'file_name_1', + val: 'super beta file', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('A'.repeat(1023)), + info: { + filename: '1k_a.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, + { type: 'file', + name: 'upload_file_1', + data: Buffer.from('B'.repeat(1023)), + info: { + filename: '1k_b.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, + ], + what: 'Fields and files' + }, + { source: [ + ['------WebKitFormBoundaryTB2MiQ36fnSJlrhY', + 'Content-Disposition: form-data; name="cont"', + '', + 'some random content', + '------WebKitFormBoundaryTB2MiQ36fnSJlrhY', + 'Content-Disposition: form-data; name="pass"', + '', + 'some random pass', + '------WebKitFormBoundaryTB2MiQ36fnSJlrhY', + 'Content-Disposition: form-data; name=bit', + '', + '2', + '------WebKitFormBoundaryTB2MiQ36fnSJlrhY--' + ].join('\r\n') + ], + boundary: '----WebKitFormBoundaryTB2MiQ36fnSJlrhY', + expected: [ + { type: 'field', + name: 'cont', + val: 'some random content', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + { type: 'field', + name: 'pass', + val: 'some random pass', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + { type: 'field', + name: 'bit', + val: '2', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + ], + what: 'Fields only' + }, + { source: [ + '' + ], + boundary: '----WebKitFormBoundaryTB2MiQ36fnSJlrhY', + expected: [ + { error: 'Unexpected end of form' }, + ], + what: 'No fields and no files' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_0"', + '', + 'super alpha file', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="1k_a.dat"', + 'Content-Type: application/octet-stream', + '', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--' + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + limits: { + fileSize: 13, + fieldSize: 5 + }, + expected: [ + { type: 'field', + name: 'file_name_0', + val: 'super', + info: { + nameTruncated: false, + valueTruncated: true, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('ABCDEFGHIJKLM'), + info: { + filename: '1k_a.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: true, + }, + ], + what: 'Fields and files (limits)' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_0"', + '', + 'super alpha file', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="1k_a.dat"', + 'Content-Type: application/octet-stream', + '', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--' + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + limits: { + files: 0 + }, + expected: [ + { type: 'field', + name: 'file_name_0', + val: 'super alpha file', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + 'filesLimit', + ], + what: 'Fields and files (limits: 0 files)' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_0"', + '', + 'super alpha file', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_1"', + '', + 'super beta file', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="1k_a.dat"', + 'Content-Type: application/octet-stream', + '', + 'A'.repeat(1023), + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_1"; filename="1k_b.dat"', + 'Content-Type: application/octet-stream', + '', + 'B'.repeat(1023), + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--' + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { type: 'field', + name: 'file_name_0', + val: 'super alpha file', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + { type: 'field', + name: 'file_name_1', + val: 'super beta file', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + ], + events: ['field'], + what: 'Fields and (ignored) files' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="/tmp/1k_a.dat"', + 'Content-Type: application/octet-stream', + '', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_1"; filename="C:\\files\\1k_b.dat"', + 'Content-Type: application/octet-stream', + '', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_2"; filename="relative/1k_c.dat"', + 'Content-Type: application/octet-stream', + '', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--' + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), + info: { + filename: '1k_a.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, + { type: 'file', + name: 'upload_file_1', + data: Buffer.from('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), + info: { + filename: '1k_b.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, + { type: 'file', + name: 'upload_file_2', + data: Buffer.from('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), + info: { + filename: '1k_c.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, + ], + what: 'Files with filenames containing paths' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="/absolute/1k_a.dat"', + 'Content-Type: application/octet-stream', + '', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_1"; filename="C:\\absolute\\1k_b.dat"', + 'Content-Type: application/octet-stream', + '', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_2"; filename="relative/1k_c.dat"', + 'Content-Type: application/octet-stream', + '', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--' + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + preservePath: true, + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), + info: { + filename: '/absolute/1k_a.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, + { type: 'file', + name: 'upload_file_1', + data: Buffer.from('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), + info: { + filename: 'C:\\absolute\\1k_b.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, + { type: 'file', + name: 'upload_file_2', + data: Buffer.from('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), + info: { + filename: 'relative/1k_c.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, + ], + what: 'Paths to be preserved through the preservePath option' + }, + { source: [ + ['------WebKitFormBoundaryTB2MiQ36fnSJlrhY', + 'Content-Disposition: form-data; name="cont"', + 'Content-Type: ', + '', + 'some random content', + '------WebKitFormBoundaryTB2MiQ36fnSJlrhY', + 'Content-Disposition: ', + '', + 'some random pass', + '------WebKitFormBoundaryTB2MiQ36fnSJlrhY--' + ].join('\r\n') + ], + boundary: '----WebKitFormBoundaryTB2MiQ36fnSJlrhY', + expected: [ + { type: 'field', + name: 'cont', + val: 'some random content', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + ], + what: 'Empty content-type and empty content-disposition' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="file"; filename*=utf-8\'\'n%C3%A4me.txt', + 'Content-Type: application/octet-stream', + '', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--' + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { type: 'file', + name: 'file', + data: Buffer.from('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), + info: { + filename: 'näme.txt', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, + ], + what: 'Unicode filenames' + }, + { source: [ + ['--asdasdasdasd\r\n', + 'Content-Type: text/plain\r\n', + 'Content-Disposition: form-data; name="foo"\r\n', + '\r\n', + 'asd\r\n', + '--asdasdasdasd--' + ].join(':)') + ], + boundary: 'asdasdasdasd', + expected: [ + { error: 'Malformed part header' }, + { error: 'Unexpected end of form' }, + ], + what: 'Stopped mid-header' + }, + { source: [ + ['------WebKitFormBoundaryTB2MiQ36fnSJlrhY', + 'Content-Disposition: form-data; name="cont"', + 'Content-Type: application/json', + '', + '{}', + '------WebKitFormBoundaryTB2MiQ36fnSJlrhY--', + ].join('\r\n') + ], + boundary: '----WebKitFormBoundaryTB2MiQ36fnSJlrhY', + expected: [ + { type: 'field', + name: 'cont', + val: '{}', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'application/json', + }, + }, + ], + what: 'content-type for fields' + }, + { source: [ + '------WebKitFormBoundaryTB2MiQ36fnSJlrhY--', + ], + boundary: '----WebKitFormBoundaryTB2MiQ36fnSJlrhY', + expected: [], + what: 'empty form' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name=upload_file_0; filename="1k_a.dat"', + 'Content-Type: application/octet-stream', + 'Content-Transfer-Encoding: binary', + '', + '', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.alloc(0), + info: { + filename: '1k_a.dat', + encoding: 'binary', + mimeType: 'application/octet-stream', + }, + limited: false, + err: 'Unexpected end of form', + }, + { error: 'Unexpected end of form' }, + ], + what: 'Stopped mid-file #1' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name=upload_file_0; filename="1k_a.dat"', + 'Content-Type: application/octet-stream', + '', + 'a', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('a'), + info: { + filename: '1k_a.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + err: 'Unexpected end of form', + }, + { error: 'Unexpected end of form' }, + ], + what: 'Stopped mid-file #2' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="notes.txt"', + 'Content-Type: text/plain; charset=utf8', + '', + 'a', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('a'), + info: { + filename: 'notes.txt', + encoding: '7bit', + mimeType: 'text/plain', + }, + limited: false, + }, + ], + what: 'Text file with charset' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="notes.txt"', + 'Content-Type: ', + ' text/plain; charset=utf8', + '', + 'a', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('a'), + info: { + filename: 'notes.txt', + encoding: '7bit', + mimeType: 'text/plain', + }, + limited: false, + }, + ], + what: 'Folded header value' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Type: text/plain; charset=utf8', + '', + 'a', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [], + what: 'No Content-Disposition' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_0"', + '', + 'a'.repeat(64 * 1024), + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="notes.txt"', + 'Content-Type: ', + ' text/plain; charset=utf8', + '', + 'bc', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + limits: { + fieldSize: Infinity, + }, + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('bc'), + info: { + filename: 'notes.txt', + encoding: '7bit', + mimeType: 'text/plain', + }, + limited: false, + }, + ], + events: [ 'file' ], + what: 'Skip field parts if no listener' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_0"', + '', + 'a', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="notes.txt"', + 'Content-Type: ', + ' text/plain; charset=utf8', + '', + 'bc', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + limits: { + parts: 1, + }, + expected: [ + { type: 'field', + name: 'file_name_0', + val: 'a', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + 'partsLimit', + ], + what: 'Parts limit' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_0"', + '', + 'a', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_1"', + '', + 'b', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + limits: { + fields: 1, + }, + expected: [ + { type: 'field', + name: 'file_name_0', + val: 'a', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + 'fieldsLimit', + ], + what: 'Fields limit' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="notes.txt"', + 'Content-Type: text/plain; charset=utf8', + '', + 'ab', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_1"; filename="notes2.txt"', + 'Content-Type: text/plain; charset=utf8', + '', + 'cd', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + limits: { + files: 1, + }, + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('ab'), + info: { + filename: 'notes.txt', + encoding: '7bit', + mimeType: 'text/plain', + }, + limited: false, + }, + 'filesLimit', + ], + what: 'Files limit' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + `name="upload_file_0"; filename="${'a'.repeat(64 * 1024)}.txt"`, + 'Content-Type: text/plain; charset=utf8', + '', + 'ab', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_1"; filename="notes2.txt"', + 'Content-Type: text/plain; charset=utf8', + '', + 'cd', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { error: 'Malformed part header' }, + { type: 'file', + name: 'upload_file_1', + data: Buffer.from('cd'), + info: { + filename: 'notes2.txt', + encoding: '7bit', + mimeType: 'text/plain', + }, + limited: false, + }, + ], + what: 'Oversized part header' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="notes.txt"', + 'Content-Type: text/plain; charset=utf8', + '', + 'a'.repeat(31) + '\r', + ].join('\r\n'), + 'b'.repeat(40), + '\r\n-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + fileHwm: 32, + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('a'.repeat(31) + '\r' + 'b'.repeat(40)), + info: { + filename: 'notes.txt', + encoding: '7bit', + mimeType: 'text/plain', + }, + limited: false, + }, + ], + what: 'Lookbehind data should not stall file streams' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + `name="upload_file_0"; filename="${'a'.repeat(8 * 1024)}.txt"`, + 'Content-Type: text/plain; charset=utf8', + '', + 'ab', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + `name="upload_file_1"; filename="${'b'.repeat(8 * 1024)}.txt"`, + 'Content-Type: text/plain; charset=utf8', + '', + 'cd', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + `name="upload_file_2"; filename="${'c'.repeat(8 * 1024)}.txt"`, + 'Content-Type: text/plain; charset=utf8', + '', + 'ef', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('ab'), + info: { + filename: `${'a'.repeat(8 * 1024)}.txt`, + encoding: '7bit', + mimeType: 'text/plain', + }, + limited: false, + }, + { type: 'file', + name: 'upload_file_1', + data: Buffer.from('cd'), + info: { + filename: `${'b'.repeat(8 * 1024)}.txt`, + encoding: '7bit', + mimeType: 'text/plain', + }, + limited: false, + }, + { type: 'file', + name: 'upload_file_2', + data: Buffer.from('ef'), + info: { + filename: `${'c'.repeat(8 * 1024)}.txt`, + encoding: '7bit', + mimeType: 'text/plain', + }, + limited: false, + }, + ], + what: 'Header size limit should be per part' + }, + { source: [ + '\r\n--d1bf46b3-aa33-4061-b28d-6c5ced8b08ee\r\n', + 'Content-Type: application/gzip\r\n' + + 'Content-Encoding: gzip\r\n' + + 'Content-Disposition: form-data; name=batch-1; filename=batch-1' + + '\r\n\r\n', + '\r\n--d1bf46b3-aa33-4061-b28d-6c5ced8b08ee--', + ], + boundary: 'd1bf46b3-aa33-4061-b28d-6c5ced8b08ee', + expected: [ + { type: 'file', + name: 'batch-1', + data: Buffer.alloc(0), + info: { + filename: 'batch-1', + encoding: '7bit', + mimeType: 'application/gzip', + }, + limited: false, + }, + ], + what: 'Empty part' + }, +]; + +for (const test of tests) { + active.set(test, 1); + + const { what, boundary, events, limits, preservePath, fileHwm } = test; + const bb = busboy({ + fileHwm, + limits, + preservePath, + headers: { + 'content-type': `multipart/form-data; boundary=${boundary}`, + } + }); + const results = []; + + if (events === undefined || events.includes('field')) { + bb.on('field', (name, val, info) => { + results.push({ type: 'field', name, val, info }); + }); + } + + if (events === undefined || events.includes('file')) { + bb.on('file', (name, stream, info) => { + const data = []; + let nb = 0; + const file = { + type: 'file', + name, + data: null, + info, + limited: false, + }; + results.push(file); + stream.on('data', (d) => { + data.push(d); + nb += d.length; + }).on('limit', () => { + file.limited = true; + }).on('close', () => { + file.data = Buffer.concat(data, nb); + assert.strictEqual(stream.truncated, file.limited); + }).once('error', (err) => { + file.err = err.message; + }); + }); + } + + bb.on('error', (err) => { + results.push({ error: err.message }); + }); + + bb.on('partsLimit', () => { + results.push('partsLimit'); + }); + + bb.on('filesLimit', () => { + results.push('filesLimit'); + }); + + bb.on('fieldsLimit', () => { + results.push('fieldsLimit'); + }); + + bb.on('close', () => { + active.delete(test); + + assert.deepStrictEqual( + results, + test.expected, + `[${what}] Results mismatch.\n` + + `Parsed: ${inspect(results)}\n` + + `Expected: ${inspect(test.expected)}` + ); + }); + + for (const src of test.source) { + const buf = (typeof src === 'string' ? Buffer.from(src, 'utf8') : src); + bb.write(buf); + } + bb.end(); +} + +// Byte-by-byte versions +for (let test of tests) { + test = { ...test }; + test.what += ' (byte-by-byte)'; + active.set(test, 1); + + const { what, boundary, events, limits, preservePath, fileHwm } = test; + const bb = busboy({ + fileHwm, + limits, + preservePath, + headers: { + 'content-type': `multipart/form-data; boundary=${boundary}`, + } + }); + const results = []; + + if (events === undefined || events.includes('field')) { + bb.on('field', (name, val, info) => { + results.push({ type: 'field', name, val, info }); + }); + } + + if (events === undefined || events.includes('file')) { + bb.on('file', (name, stream, info) => { + const data = []; + let nb = 0; + const file = { + type: 'file', + name, + data: null, + info, + limited: false, + }; + results.push(file); + stream.on('data', (d) => { + data.push(d); + nb += d.length; + }).on('limit', () => { + file.limited = true; + }).on('close', () => { + file.data = Buffer.concat(data, nb); + assert.strictEqual(stream.truncated, file.limited); + }).once('error', (err) => { + file.err = err.message; + }); + }); + } + + bb.on('error', (err) => { + results.push({ error: err.message }); + }); + + bb.on('partsLimit', () => { + results.push('partsLimit'); + }); + + bb.on('filesLimit', () => { + results.push('filesLimit'); + }); + + bb.on('fieldsLimit', () => { + results.push('fieldsLimit'); + }); + + bb.on('close', () => { + active.delete(test); + + assert.deepStrictEqual( + results, + test.expected, + `[${what}] Results mismatch.\n` + + `Parsed: ${inspect(results)}\n` + + `Expected: ${inspect(test.expected)}` + ); + }); + + for (const src of test.source) { + const buf = (typeof src === 'string' ? Buffer.from(src, 'utf8') : src); + for (let i = 0; i < buf.length; ++i) + bb.write(buf.slice(i, i + 1)); + } + bb.end(); +} + +{ + let exception = false; + process.once('uncaughtException', (ex) => { + exception = true; + throw ex; + }); + process.on('exit', () => { + if (exception || active.size === 0) + return; + process.exitCode = 1; + console.error('=========================='); + console.error(`${active.size} test(s) did not finish:`); + console.error('=========================='); + console.error(Array.from(active.keys()).map((v) => v.what).join('\n')); + }); +} diff --git a/node_backend/node_modules/busboy/test/test-types-urlencoded.js b/node_backend/node_modules/busboy/test/test-types-urlencoded.js new file mode 100644 index 00000000..c35962b9 --- /dev/null +++ b/node_backend/node_modules/busboy/test/test-types-urlencoded.js @@ -0,0 +1,488 @@ +'use strict'; + +const assert = require('assert'); +const { transcode } = require('buffer'); +const { inspect } = require('util'); + +const busboy = require('..'); + +const active = new Map(); + +const tests = [ + { source: ['foo'], + expected: [ + ['foo', + '', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Unassigned value' + }, + { source: ['foo=bar'], + expected: [ + ['foo', + 'bar', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Assigned value' + }, + { source: ['foo&bar=baz'], + expected: [ + ['foo', + '', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['bar', + 'baz', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Unassigned and assigned value' + }, + { source: ['foo=bar&baz'], + expected: [ + ['foo', + 'bar', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['baz', + '', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Assigned and unassigned value' + }, + { source: ['foo=bar&baz=bla'], + expected: [ + ['foo', + 'bar', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['baz', + 'bla', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Two assigned values' + }, + { source: ['foo&bar'], + expected: [ + ['foo', + '', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['bar', + '', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Two unassigned values' + }, + { source: ['foo&bar&'], + expected: [ + ['foo', + '', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['bar', + '', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Two unassigned values and ampersand' + }, + { source: ['foo+1=bar+baz%2Bquux'], + expected: [ + ['foo 1', + 'bar baz+quux', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Assigned key and value with (plus) space' + }, + { source: ['foo=bar%20baz%21'], + expected: [ + ['foo', + 'bar baz!', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Assigned value with encoded bytes' + }, + { source: ['foo%20bar=baz%20bla%21'], + expected: [ + ['foo bar', + 'baz bla!', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Assigned value with encoded bytes #2' + }, + { source: ['foo=bar%20baz%21&num=1000'], + expected: [ + ['foo', + 'bar baz!', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['num', + '1000', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Two assigned values, one with encoded bytes' + }, + { source: [ + Array.from(transcode(Buffer.from('foo'), 'utf8', 'utf16le')).map( + (n) => `%${n.toString(16).padStart(2, '0')}` + ).join(''), + '=', + Array.from(transcode(Buffer.from('😀!'), 'utf8', 'utf16le')).map( + (n) => `%${n.toString(16).padStart(2, '0')}` + ).join(''), + ], + expected: [ + ['foo', + '😀!', + { nameTruncated: false, + valueTruncated: false, + encoding: 'UTF-16LE', + mimeType: 'text/plain' }, + ], + ], + charset: 'UTF-16LE', + what: 'Encoded value with multi-byte charset' + }, + { source: [ + 'foo=<', + Array.from(transcode(Buffer.from('©:^þ'), 'utf8', 'latin1')).map( + (n) => `%${n.toString(16).padStart(2, '0')}` + ).join(''), + ], + expected: [ + ['foo', + '<©:^þ', + { nameTruncated: false, + valueTruncated: false, + encoding: 'ISO-8859-1', + mimeType: 'text/plain' }, + ], + ], + charset: 'ISO-8859-1', + what: 'Encoded value with single-byte, ASCII-compatible, non-UTF8 charset' + }, + { source: ['foo=bar&baz=bla'], + expected: [], + what: 'Limits: zero fields', + limits: { fields: 0 } + }, + { source: ['foo=bar&baz=bla'], + expected: [ + ['foo', + 'bar', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Limits: one field', + limits: { fields: 1 } + }, + { source: ['foo=bar&baz=bla'], + expected: [ + ['foo', + 'bar', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['baz', + 'bla', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Limits: field part lengths match limits', + limits: { fieldNameSize: 3, fieldSize: 3 } + }, + { source: ['foo=bar&baz=bla'], + expected: [ + ['fo', + 'bar', + { nameTruncated: true, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['ba', + 'bla', + { nameTruncated: true, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Limits: truncated field name', + limits: { fieldNameSize: 2 } + }, + { source: ['foo=bar&baz=bla'], + expected: [ + ['foo', + 'ba', + { nameTruncated: false, + valueTruncated: true, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['baz', + 'bl', + { nameTruncated: false, + valueTruncated: true, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Limits: truncated field value', + limits: { fieldSize: 2 } + }, + { source: ['foo=bar&baz=bla'], + expected: [ + ['fo', + 'ba', + { nameTruncated: true, + valueTruncated: true, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['ba', + 'bl', + { nameTruncated: true, + valueTruncated: true, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Limits: truncated field name and value', + limits: { fieldNameSize: 2, fieldSize: 2 } + }, + { source: ['foo=bar&baz=bla'], + expected: [ + ['fo', + '', + { nameTruncated: true, + valueTruncated: true, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['ba', + '', + { nameTruncated: true, + valueTruncated: true, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Limits: truncated field name and zero value limit', + limits: { fieldNameSize: 2, fieldSize: 0 } + }, + { source: ['foo=bar&baz=bla'], + expected: [ + ['', + '', + { nameTruncated: true, + valueTruncated: true, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['', + '', + { nameTruncated: true, + valueTruncated: true, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Limits: truncated zero field name and zero value limit', + limits: { fieldNameSize: 0, fieldSize: 0 } + }, + { source: ['&'], + expected: [], + what: 'Ampersand' + }, + { source: ['&&&&&'], + expected: [], + what: 'Many ampersands' + }, + { source: ['='], + expected: [ + ['', + '', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Assigned value, empty name and value' + }, + { source: [''], + expected: [], + what: 'Nothing' + }, +]; + +for (const test of tests) { + active.set(test, 1); + + const { what } = test; + const charset = test.charset || 'utf-8'; + const bb = busboy({ + limits: test.limits, + headers: { + 'content-type': `application/x-www-form-urlencoded; charset=${charset}`, + }, + }); + const results = []; + + bb.on('field', (key, val, info) => { + results.push([key, val, info]); + }); + + bb.on('file', () => { + throw new Error(`[${what}] Unexpected file`); + }); + + bb.on('close', () => { + active.delete(test); + + assert.deepStrictEqual( + results, + test.expected, + `[${what}] Results mismatch.\n` + + `Parsed: ${inspect(results)}\n` + + `Expected: ${inspect(test.expected)}` + ); + }); + + for (const src of test.source) { + const buf = (typeof src === 'string' ? Buffer.from(src, 'utf8') : src); + bb.write(buf); + } + bb.end(); +} + +// Byte-by-byte versions +for (let test of tests) { + test = { ...test }; + test.what += ' (byte-by-byte)'; + active.set(test, 1); + + const { what } = test; + const charset = test.charset || 'utf-8'; + const bb = busboy({ + limits: test.limits, + headers: { + 'content-type': `application/x-www-form-urlencoded; charset="${charset}"`, + }, + }); + const results = []; + + bb.on('field', (key, val, info) => { + results.push([key, val, info]); + }); + + bb.on('file', () => { + throw new Error(`[${what}] Unexpected file`); + }); + + bb.on('close', () => { + active.delete(test); + + assert.deepStrictEqual( + results, + test.expected, + `[${what}] Results mismatch.\n` + + `Parsed: ${inspect(results)}\n` + + `Expected: ${inspect(test.expected)}` + ); + }); + + for (const src of test.source) { + const buf = (typeof src === 'string' ? Buffer.from(src, 'utf8') : src); + for (let i = 0; i < buf.length; ++i) + bb.write(buf.slice(i, i + 1)); + } + bb.end(); +} + +{ + let exception = false; + process.once('uncaughtException', (ex) => { + exception = true; + throw ex; + }); + process.on('exit', () => { + if (exception || active.size === 0) + return; + process.exitCode = 1; + console.error('=========================='); + console.error(`${active.size} test(s) did not finish:`); + console.error('=========================='); + console.error(Array.from(active.keys()).map((v) => v.what).join('\n')); + }); +} diff --git a/node_backend/node_modules/busboy/test/test.js b/node_backend/node_modules/busboy/test/test.js new file mode 100644 index 00000000..d0380f29 --- /dev/null +++ b/node_backend/node_modules/busboy/test/test.js @@ -0,0 +1,20 @@ +'use strict'; + +const { spawnSync } = require('child_process'); +const { readdirSync } = require('fs'); +const { join } = require('path'); + +const files = readdirSync(__dirname).sort(); +for (const filename of files) { + if (filename.startsWith('test-')) { + const path = join(__dirname, filename); + console.log(`> Running ${filename} ...`); + const result = spawnSync(`${process.argv0} ${path}`, { + shell: true, + stdio: 'inherit', + windowsHide: true + }); + if (result.status !== 0) + process.exitCode = 1; + } +} diff --git a/Inscripciones_UAIE/node_backend/node_modules/bytes/History.md b/node_backend/node_modules/bytes/History.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bytes/History.md rename to node_backend/node_modules/bytes/History.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/bytes/LICENSE b/node_backend/node_modules/bytes/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bytes/LICENSE rename to node_backend/node_modules/bytes/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/bytes/Readme.md b/node_backend/node_modules/bytes/Readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bytes/Readme.md rename to node_backend/node_modules/bytes/Readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/bytes/index.js b/node_backend/node_modules/bytes/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bytes/index.js rename to node_backend/node_modules/bytes/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/bytes/package.json b/node_backend/node_modules/bytes/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/bytes/package.json rename to node_backend/node_modules/bytes/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/call-bind/.eslintignore b/node_backend/node_modules/call-bind/.eslintignore similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/call-bind/.eslintignore rename to node_backend/node_modules/call-bind/.eslintignore diff --git a/Inscripciones_UAIE/node_backend/node_modules/call-bind/.eslintrc b/node_backend/node_modules/call-bind/.eslintrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/call-bind/.eslintrc rename to node_backend/node_modules/call-bind/.eslintrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/call-bind/.github/FUNDING.yml b/node_backend/node_modules/call-bind/.github/FUNDING.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/call-bind/.github/FUNDING.yml rename to node_backend/node_modules/call-bind/.github/FUNDING.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/call-bind/.nycrc b/node_backend/node_modules/call-bind/.nycrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/call-bind/.nycrc rename to node_backend/node_modules/call-bind/.nycrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/call-bind/CHANGELOG.md b/node_backend/node_modules/call-bind/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/call-bind/CHANGELOG.md rename to node_backend/node_modules/call-bind/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/call-bind/LICENSE b/node_backend/node_modules/call-bind/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/call-bind/LICENSE rename to node_backend/node_modules/call-bind/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/call-bind/README.md b/node_backend/node_modules/call-bind/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/call-bind/README.md rename to node_backend/node_modules/call-bind/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/call-bind/callBound.js b/node_backend/node_modules/call-bind/callBound.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/call-bind/callBound.js rename to node_backend/node_modules/call-bind/callBound.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/call-bind/index.js b/node_backend/node_modules/call-bind/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/call-bind/index.js rename to node_backend/node_modules/call-bind/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/call-bind/package.json b/node_backend/node_modules/call-bind/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/call-bind/package.json rename to node_backend/node_modules/call-bind/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/call-bind/test/callBound.js b/node_backend/node_modules/call-bind/test/callBound.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/call-bind/test/callBound.js rename to node_backend/node_modules/call-bind/test/callBound.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/call-bind/test/index.js b/node_backend/node_modules/call-bind/test/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/call-bind/test/index.js rename to node_backend/node_modules/call-bind/test/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/chownr/LICENSE b/node_backend/node_modules/chownr/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/chownr/LICENSE rename to node_backend/node_modules/chownr/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/chownr/README.md b/node_backend/node_modules/chownr/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/chownr/README.md rename to node_backend/node_modules/chownr/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/chownr/chownr.js b/node_backend/node_modules/chownr/chownr.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/chownr/chownr.js rename to node_backend/node_modules/chownr/chownr.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/chownr/package.json b/node_backend/node_modules/chownr/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/chownr/package.json rename to node_backend/node_modules/chownr/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/color-support/LICENSE b/node_backend/node_modules/color-support/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/color-support/LICENSE rename to node_backend/node_modules/color-support/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/color-support/README.md b/node_backend/node_modules/color-support/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/color-support/README.md rename to node_backend/node_modules/color-support/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/color-support/bin.js b/node_backend/node_modules/color-support/bin.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/color-support/bin.js rename to node_backend/node_modules/color-support/bin.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/color-support/browser.js b/node_backend/node_modules/color-support/browser.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/color-support/browser.js rename to node_backend/node_modules/color-support/browser.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/color-support/index.js b/node_backend/node_modules/color-support/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/color-support/index.js rename to node_backend/node_modules/color-support/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/color-support/package.json b/node_backend/node_modules/color-support/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/color-support/package.json rename to node_backend/node_modules/color-support/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/concat-map/.travis.yml b/node_backend/node_modules/concat-map/.travis.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/concat-map/.travis.yml rename to node_backend/node_modules/concat-map/.travis.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/concat-map/LICENSE b/node_backend/node_modules/concat-map/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/concat-map/LICENSE rename to node_backend/node_modules/concat-map/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/concat-map/README.markdown b/node_backend/node_modules/concat-map/README.markdown similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/concat-map/README.markdown rename to node_backend/node_modules/concat-map/README.markdown diff --git a/Inscripciones_UAIE/node_backend/node_modules/concat-map/example/map.js b/node_backend/node_modules/concat-map/example/map.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/concat-map/example/map.js rename to node_backend/node_modules/concat-map/example/map.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/concat-map/index.js b/node_backend/node_modules/concat-map/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/concat-map/index.js rename to node_backend/node_modules/concat-map/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/concat-map/package.json b/node_backend/node_modules/concat-map/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/concat-map/package.json rename to node_backend/node_modules/concat-map/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/concat-map/test/map.js b/node_backend/node_modules/concat-map/test/map.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/concat-map/test/map.js rename to node_backend/node_modules/concat-map/test/map.js diff --git a/node_backend/node_modules/concat-stream/LICENSE b/node_backend/node_modules/concat-stream/LICENSE new file mode 100644 index 00000000..99c130e1 --- /dev/null +++ b/node_backend/node_modules/concat-stream/LICENSE @@ -0,0 +1,24 @@ +The MIT License + +Copyright (c) 2013 Max Ogden + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_backend/node_modules/concat-stream/index.js b/node_backend/node_modules/concat-stream/index.js new file mode 100644 index 00000000..dd672a76 --- /dev/null +++ b/node_backend/node_modules/concat-stream/index.js @@ -0,0 +1,144 @@ +var Writable = require('readable-stream').Writable +var inherits = require('inherits') +var bufferFrom = require('buffer-from') + +if (typeof Uint8Array === 'undefined') { + var U8 = require('typedarray').Uint8Array +} else { + var U8 = Uint8Array +} + +function ConcatStream(opts, cb) { + if (!(this instanceof ConcatStream)) return new ConcatStream(opts, cb) + + if (typeof opts === 'function') { + cb = opts + opts = {} + } + if (!opts) opts = {} + + var encoding = opts.encoding + var shouldInferEncoding = false + + if (!encoding) { + shouldInferEncoding = true + } else { + encoding = String(encoding).toLowerCase() + if (encoding === 'u8' || encoding === 'uint8') { + encoding = 'uint8array' + } + } + + Writable.call(this, { objectMode: true }) + + this.encoding = encoding + this.shouldInferEncoding = shouldInferEncoding + + if (cb) this.on('finish', function () { cb(this.getBody()) }) + this.body = [] +} + +module.exports = ConcatStream +inherits(ConcatStream, Writable) + +ConcatStream.prototype._write = function(chunk, enc, next) { + this.body.push(chunk) + next() +} + +ConcatStream.prototype.inferEncoding = function (buff) { + var firstBuffer = buff === undefined ? this.body[0] : buff; + if (Buffer.isBuffer(firstBuffer)) return 'buffer' + if (typeof Uint8Array !== 'undefined' && firstBuffer instanceof Uint8Array) return 'uint8array' + if (Array.isArray(firstBuffer)) return 'array' + if (typeof firstBuffer === 'string') return 'string' + if (Object.prototype.toString.call(firstBuffer) === "[object Object]") return 'object' + return 'buffer' +} + +ConcatStream.prototype.getBody = function () { + if (!this.encoding && this.body.length === 0) return [] + if (this.shouldInferEncoding) this.encoding = this.inferEncoding() + if (this.encoding === 'array') return arrayConcat(this.body) + if (this.encoding === 'string') return stringConcat(this.body) + if (this.encoding === 'buffer') return bufferConcat(this.body) + if (this.encoding === 'uint8array') return u8Concat(this.body) + return this.body +} + +var isArray = Array.isArray || function (arr) { + return Object.prototype.toString.call(arr) == '[object Array]' +} + +function isArrayish (arr) { + return /Array\]$/.test(Object.prototype.toString.call(arr)) +} + +function isBufferish (p) { + return typeof p === 'string' || isArrayish(p) || (p && typeof p.subarray === 'function') +} + +function stringConcat (parts) { + var strings = [] + var needsToString = false + for (var i = 0; i < parts.length; i++) { + var p = parts[i] + if (typeof p === 'string') { + strings.push(p) + } else if (Buffer.isBuffer(p)) { + strings.push(p) + } else if (isBufferish(p)) { + strings.push(bufferFrom(p)) + } else { + strings.push(bufferFrom(String(p))) + } + } + if (Buffer.isBuffer(parts[0])) { + strings = Buffer.concat(strings) + strings = strings.toString('utf8') + } else { + strings = strings.join('') + } + return strings +} + +function bufferConcat (parts) { + var bufs = [] + for (var i = 0; i < parts.length; i++) { + var p = parts[i] + if (Buffer.isBuffer(p)) { + bufs.push(p) + } else if (isBufferish(p)) { + bufs.push(bufferFrom(p)) + } else { + bufs.push(bufferFrom(String(p))) + } + } + return Buffer.concat(bufs) +} + +function arrayConcat (parts) { + var res = [] + for (var i = 0; i < parts.length; i++) { + res.push.apply(res, parts[i]) + } + return res +} + +function u8Concat (parts) { + var len = 0 + for (var i = 0; i < parts.length; i++) { + if (typeof parts[i] === 'string') { + parts[i] = bufferFrom(parts[i]) + } + len += parts[i].length + } + var u8 = new U8(len) + for (var i = 0, offset = 0; i < parts.length; i++) { + var part = parts[i] + for (var j = 0; j < part.length; j++) { + u8[offset++] = part[j] + } + } + return u8 +} diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/.travis.yml b/node_backend/node_modules/concat-stream/node_modules/readable-stream/.travis.yml new file mode 100644 index 00000000..f62cdac0 --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/.travis.yml @@ -0,0 +1,34 @@ +sudo: false +language: node_js +before_install: + - (test $NPM_LEGACY && npm install -g npm@2 && npm install -g npm@3) || true +notifications: + email: false +matrix: + fast_finish: true + include: + - node_js: '0.8' + env: NPM_LEGACY=true + - node_js: '0.10' + env: NPM_LEGACY=true + - node_js: '0.11' + env: NPM_LEGACY=true + - node_js: '0.12' + env: NPM_LEGACY=true + - node_js: 1 + env: NPM_LEGACY=true + - node_js: 2 + env: NPM_LEGACY=true + - node_js: 3 + env: NPM_LEGACY=true + - node_js: 4 + - node_js: 5 + - node_js: 6 + - node_js: 7 + - node_js: 8 + - node_js: 9 +script: "npm run test" +env: + global: + - secure: rE2Vvo7vnjabYNULNyLFxOyt98BoJexDqsiOnfiD6kLYYsiQGfr/sbZkPMOFm9qfQG7pjqx+zZWZjGSswhTt+626C0t/njXqug7Yps4c3dFblzGfreQHp7wNX5TFsvrxd6dAowVasMp61sJcRnB2w8cUzoe3RAYUDHyiHktwqMc= + - secure: g9YINaKAdMatsJ28G9jCGbSaguXCyxSTy+pBO6Ch0Cf57ZLOTka3HqDj8p3nV28LUIHZ3ut5WO43CeYKwt4AUtLpBS3a0dndHdY6D83uY6b2qh5hXlrcbeQTq2cvw2y95F7hm4D1kwrgZ7ViqaKggRcEupAL69YbJnxeUDKWEdI= diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/CONTRIBUTING.md b/node_backend/node_modules/concat-stream/node_modules/readable-stream/CONTRIBUTING.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/CONTRIBUTING.md rename to node_backend/node_modules/concat-stream/node_modules/readable-stream/CONTRIBUTING.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/GOVERNANCE.md b/node_backend/node_modules/concat-stream/node_modules/readable-stream/GOVERNANCE.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/GOVERNANCE.md rename to node_backend/node_modules/concat-stream/node_modules/readable-stream/GOVERNANCE.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/LICENSE b/node_backend/node_modules/concat-stream/node_modules/readable-stream/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/LICENSE rename to node_backend/node_modules/concat-stream/node_modules/readable-stream/LICENSE diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/README.md b/node_backend/node_modules/concat-stream/node_modules/readable-stream/README.md new file mode 100644 index 00000000..f1c5a931 --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/README.md @@ -0,0 +1,58 @@ +# readable-stream + +***Node-core v8.17.0 streams for userland*** [![Build Status](https://travis-ci.org/nodejs/readable-stream.svg?branch=master)](https://travis-ci.org/nodejs/readable-stream) + + +[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) +[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/) + + +[![Sauce Test Status](https://saucelabs.com/browser-matrix/readable-stream.svg)](https://saucelabs.com/u/readable-stream) + +```bash +npm install --save readable-stream +``` + +***Node-core streams for userland*** + +This package is a mirror of the Streams2 and Streams3 implementations in +Node-core. + +Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v8.17.0/docs/api/stream.html). + +If you want to guarantee a stable streams base, regardless of what version of +Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core, for background see [this blogpost](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html). + +As of version 2.0.0 **readable-stream** uses semantic versioning. + +# Streams Working Group + +`readable-stream` is maintained by the Streams Working Group, which +oversees the development and maintenance of the Streams API within +Node.js. The responsibilities of the Streams Working Group include: + +* Addressing stream issues on the Node.js issue tracker. +* Authoring and editing stream documentation within the Node.js project. +* Reviewing changes to stream subclasses within the Node.js project. +* Redirecting changes to streams from the Node.js project to this + project. +* Assisting in the implementation of stream providers within Node.js. +* Recommending versions of `readable-stream` to be included in Node.js. +* Messaging about the future of streams to give the community advance + notice of changes. + +
+## Team Members + +* **Chris Dickinson** ([@chrisdickinson](https://github.com/chrisdickinson)) <christopher.s.dickinson@gmail.com> + - Release GPG key: 9554F04D7259F04124DE6B476D5A82AC7E37093B +* **Calvin Metcalf** ([@calvinmetcalf](https://github.com/calvinmetcalf)) <calvin.metcalf@gmail.com> + - Release GPG key: F3EF5F62A87FC27A22E643F714CE4FF5015AA242 +* **Rod Vagg** ([@rvagg](https://github.com/rvagg)) <rod@vagg.org> + - Release GPG key: DD8F2338BAE7501E3DD5AC78C273792F7D83545D +* **Sam Newman** ([@sonewman](https://github.com/sonewman)) <newmansam@outlook.com> +* **Mathias Buus** ([@mafintosh](https://github.com/mafintosh)) <mathiasbuus@gmail.com> +* **Domenic Denicola** ([@domenic](https://github.com/domenic)) <d@domenic.me> +* **Matteo Collina** ([@mcollina](https://github.com/mcollina)) <matteo.collina@gmail.com> + - Release GPG key: 3ABC01543F22DD2239285CDD818674489FBC127E +* **Irina Shestak** ([@lrlna](https://github.com/lrlna)) <shestak.irina@gmail.com> diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md b/node_backend/node_modules/concat-stream/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md new file mode 100644 index 00000000..83275f19 --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md @@ -0,0 +1,60 @@ +# streams WG Meeting 2015-01-30 + +## Links + +* **Google Hangouts Video**: http://www.youtube.com/watch?v=I9nDOSGfwZg +* **GitHub Issue**: https://github.com/iojs/readable-stream/issues/106 +* **Original Minutes Google Doc**: https://docs.google.com/document/d/17aTgLnjMXIrfjgNaTUnHQO7m3xgzHR2VXBTmi03Qii4/ + +## Agenda + +Extracted from https://github.com/iojs/readable-stream/labels/wg-agenda prior to meeting. + +* adopt a charter [#105](https://github.com/iojs/readable-stream/issues/105) +* release and versioning strategy [#101](https://github.com/iojs/readable-stream/issues/101) +* simpler stream creation [#102](https://github.com/iojs/readable-stream/issues/102) +* proposal: deprecate implicit flowing of streams [#99](https://github.com/iojs/readable-stream/issues/99) + +## Minutes + +### adopt a charter + +* group: +1's all around + +### What versioning scheme should be adopted? +* group: +1’s 3.0.0 +* domenic+group: pulling in patches from other sources where appropriate +* mikeal: version independently, suggesting versions for io.js +* mikeal+domenic: work with TC to notify in advance of changes +simpler stream creation + +### streamline creation of streams +* sam: streamline creation of streams +* domenic: nice simple solution posted + but, we lose the opportunity to change the model + may not be backwards incompatible (double check keys) + + **action item:** domenic will check + +### remove implicit flowing of streams on(‘data’) +* add isFlowing / isPaused +* mikeal: worrying that we’re documenting polyfill methods – confuses users +* domenic: more reflective API is probably good, with warning labels for users +* new section for mad scientists (reflective stream access) +* calvin: name the “third state” +* mikeal: maybe borrow the name from whatwg? +* domenic: we’re missing the “third state” +* consensus: kind of difficult to name the third state +* mikeal: figure out differences in states / compat +* mathias: always flow on data – eliminates third state + * explore what it breaks + +**action items:** +* ask isaac for ability to list packages by what public io.js APIs they use (esp. Stream) +* ask rod/build for infrastructure +* **chris**: explore the “flow on data” approach +* add isPaused/isFlowing +* add new docs section +* move isPaused to that section + + diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/duplex-browser.js b/node_backend/node_modules/concat-stream/node_modules/readable-stream/duplex-browser.js new file mode 100644 index 00000000..f8b2db83 --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/duplex-browser.js @@ -0,0 +1 @@ +module.exports = require('./lib/_stream_duplex.js'); diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/duplex.js b/node_backend/node_modules/concat-stream/node_modules/readable-stream/duplex.js new file mode 100644 index 00000000..46924cbf --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/duplex.js @@ -0,0 +1 @@ +module.exports = require('./readable').Duplex diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js b/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js new file mode 100644 index 00000000..57003c32 --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js @@ -0,0 +1,131 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. + +'use strict'; + +/**/ + +var pna = require('process-nextick-args'); +/**/ + +/**/ +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + keys.push(key); + }return keys; +}; +/**/ + +module.exports = Duplex; + +/**/ +var util = Object.create(require('core-util-is')); +util.inherits = require('inherits'); +/**/ + +var Readable = require('./_stream_readable'); +var Writable = require('./_stream_writable'); + +util.inherits(Duplex, Readable); + +{ + // avoid scope creep, the keys array can then be collected + var keys = objectKeys(Writable.prototype); + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + + Readable.call(this, options); + Writable.call(this, options); + + if (options && options.readable === false) this.readable = false; + + if (options && options.writable === false) this.writable = false; + + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; + + this.once('end', onend); +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) return; + + // no more data can be written. + // But allow more writes to happen in this tick. + pna.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); + +Duplex.prototype._destroy = function (err, cb) { + this.push(null); + this.end(); + + pna.nextTick(cb, err); +}; \ No newline at end of file diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_passthrough.js b/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_passthrough.js new file mode 100644 index 00000000..612edb4d --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_passthrough.js @@ -0,0 +1,47 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. + +'use strict'; + +module.exports = PassThrough; + +var Transform = require('./_stream_transform'); + +/**/ +var util = Object.create(require('core-util-is')); +util.inherits = require('inherits'); +/**/ + +util.inherits(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + + Transform.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; \ No newline at end of file diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js b/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js new file mode 100644 index 00000000..3af95cb2 --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js @@ -0,0 +1,1019 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +/**/ + +var pna = require('process-nextick-args'); +/**/ + +module.exports = Readable; + +/**/ +var isArray = require('isarray'); +/**/ + +/**/ +var Duplex; +/**/ + +Readable.ReadableState = ReadableState; + +/**/ +var EE = require('events').EventEmitter; + +var EElistenerCount = function (emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +/**/ +var Stream = require('./internal/streams/stream'); +/**/ + +/**/ + +var Buffer = require('safe-buffer').Buffer; +var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/**/ + +/**/ +var util = Object.create(require('core-util-is')); +util.inherits = require('inherits'); +/**/ + +/**/ +var debugUtil = require('util'); +var debug = void 0; +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function () {}; +} +/**/ + +var BufferList = require('./internal/streams/BufferList'); +var destroyImpl = require('./internal/streams/destroy'); +var StringDecoder; + +util.inherits(Readable, Stream); + +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); + + // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} + +function ReadableState(options, stream) { + Duplex = Duplex || require('./_stream_duplex'); + + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; + + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; + + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + var readableHwm = options.readableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; + + // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + this.sync = true; + + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + + // has it been destroyed + this.destroyed = false; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; + + // if true, a maybeReadMore has been scheduled + this.readingMore = false; + + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || require('./_stream_duplex'); + + if (!(this instanceof Readable)) return new Readable(options); + + this._readableState = new ReadableState(options, this); + + // legacy + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined) { + return false; + } + return this._readableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + } +}); + +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; +Readable.prototype._destroy = function (err, cb) { + this.push(null); + cb(err); +}; + +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; + +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + var state = stream._readableState; + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true); + } else if (state.ended) { + stream.emit('error', new Error('stream.push() after EOF')); + } else { + state.reading = false; + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + } + } + + return needMoreData(state); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + stream.emit('data', chunk); + stream.read(0); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + + if (state.needReadable) emitReadable(stream); + } + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; +} + +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; + +// backwards compatibility. +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; + return this; +}; + +// Don't raise the hwm > 8MB +var MAX_HWM = 0x800000; +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; +} + +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } + // If we're asking for more than the current hwm, then raise the hwm. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; + // Don't have enough + if (!state.ended) { + state.needReadable = true; + return 0; + } + return state.length; +} + +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + + if (n !== 0) state.emittedReadable = false; + + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); + + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } + + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); + + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } + + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = true; + n = 0; + } else { + state.length -= n; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; + + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + + return ret; +}; + +function onEofChunk(stream, state) { + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; + + // emit 'readable' now to make sure it gets picked up. + emitReadable(stream); +} + +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream); + } +} + +function emitReadable_(stream) { + debug('emit readable'); + stream.emit('readable'); + flow(stream); +} + +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + pna.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break;else len = state.length; + } + state.readingMore = false; +} + +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function (n) { + this.emit('error', new Error('_read() is not implemented')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn); + + dest.on('unpipe', onunpipe); + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } + + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + + var cleanedUp = false; + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + + cleanedUp = true; + + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + // If the user pushes more data while we're writing to dest then we'll end up + // in ondata again. However, we only want to increase awaitDrain once because + // dest will only emit one 'drain' event for the multiple writes. + // => Introduce a guard on increasing awaitDrain. + var increasedAwaitDrain = false; + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + increasedAwaitDrain = false; + var ret = dest.write(chunk); + if (false === ret && !increasedAwaitDrain) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; + increasedAwaitDrain = true; + } + src.pause(); + } + } + + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); + } + + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); + + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } + + // tell the dest that it's being piped to + dest.emit('pipe', src); + + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function () { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { hasUnpiped: false }; + + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; + + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + + if (!dest) dest = state.pipes; + + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } + + // slow case. multiple pipe destinations. + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, { hasUnpiped: false }); + }return this; + } + + // try to find the right one. + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + + dest.emit('unpipe', this, unpipeInfo); + + return this; +}; + +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + + if (ev === 'data') { + // Start flowing on next tick if stream isn't explicitly paused + if (this._readableState.flowing !== false) this.resume(); + } else if (ev === 'readable') { + var state = this._readableState; + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.emittedReadable = false; + if (!state.reading) { + pna.nextTick(nReadingNextTick, this); + } else if (state.length) { + emitReadable(this); + } + } + } + + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} + +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function () { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + state.flowing = true; + resume(this, state); + } + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + pna.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + if (!state.reading) { + debug('resume read 0'); + stream.read(0); + } + + state.resumeScheduled = false; + state.awaitDrain = 0; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + if (false !== this._readableState.flowing) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + while (state.flowing && stream.read() !== null) {} +} + +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + + stream.on('end', function () { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); + + // don't skip over falsy values in objectMode + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); + + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function (method) { + return function () { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } + + // proxy certain important events. + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } + + // when we try to consume some more bytes, simply unpause the + // underlying stream. + this._read = function (n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._readableState.highWaterMark; + } +}); + +// exposed for testing purposes only. +Readable._fromList = fromList; + +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = fromListPartial(n, state.buffer, state.decoder); + } + + return ret; +} + +// Extracts only enough buffered data to satisfy the amount requested. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromListPartial(n, list, hasStrings) { + var ret; + if (n < list.head.data.length) { + // slice is the same for buffers and strings + ret = list.head.data.slice(0, n); + list.head.data = list.head.data.slice(n); + } else if (n === list.head.data.length) { + // first chunk is a perfect match + ret = list.shift(); + } else { + // result spans more than one buffer + ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); + } + return ret; +} + +// Copies a specified amount of characters from the list of buffered data +// chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBufferString(n, list) { + var p = list.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = str.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +// Copies a specified amount of bytes from the list of buffered data chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBuffer(n, list) { + var ret = Buffer.allocUnsafe(n); + var p = list.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = buf.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); + + if (!state.endEmitted) { + state.ended = true; + pna.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} \ No newline at end of file diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_transform.js b/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_transform.js new file mode 100644 index 00000000..fcfc105a --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_transform.js @@ -0,0 +1,214 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. + +'use strict'; + +module.exports = Transform; + +var Duplex = require('./_stream_duplex'); + +/**/ +var util = Object.create(require('core-util-is')); +util.inherits = require('inherits'); +/**/ + +util.inherits(Transform, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + + var cb = ts.writecb; + + if (!cb) { + return this.emit('error', new Error('write callback called multiple times')); + } + + ts.writechunk = null; + ts.writecb = null; + + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + + cb(er); + + var rs = this._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + + Duplex.call(this, options); + + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; + + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; + + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + + if (typeof options.flush === 'function') this._flush = options.flush; + } + + // When the writable side finishes, then flush out anything remaining. + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function') { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; + +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function (chunk, encoding, cb) { + throw new Error('_transform() is not implemented'); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; + +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + var _this2 = this; + + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + _this2.emit('close'); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); + + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0'); + + if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming'); + + return stream.push(null); +} \ No newline at end of file diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js b/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js new file mode 100644 index 00000000..e1e897ff --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js @@ -0,0 +1,685 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. + +'use strict'; + +/**/ + +var pna = require('process-nextick-args'); +/**/ + +module.exports = Writable; + +/* */ +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} + +// It seems a linked list but it is not +// there will be only 2 of these for each stream +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* */ + +/**/ +var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick; +/**/ + +/**/ +var Duplex; +/**/ + +Writable.WritableState = WritableState; + +/**/ +var util = Object.create(require('core-util-is')); +util.inherits = require('inherits'); +/**/ + +/**/ +var internalUtil = { + deprecate: require('util-deprecate') +}; +/**/ + +/**/ +var Stream = require('./internal/streams/stream'); +/**/ + +/**/ + +var Buffer = require('safe-buffer').Buffer; +var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/**/ + +var destroyImpl = require('./internal/streams/destroy'); + +util.inherits(Writable, Stream); + +function nop() {} + +function WritableState(options, stream) { + Duplex = Duplex || require('./_stream_duplex'); + + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; + + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; + + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + var hwm = options.highWaterMark; + var writableHwm = options.writableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // if _final has been called + this.finalCalled = false; + + // drain event flag. + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; + + // has it been destroyed + this.destroyed = false; + + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; + + // a flag to see when we're in the middle of a write. + this.writing = false; + + // when true all writes will be buffered until .uncork() call + this.corked = 0; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; + + // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { + onwrite(stream, er); + }; + + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; + + // the amount that is being written when _write is called. + this.writelen = 0; + + this.bufferedRequest = null; + this.lastBufferedRequest = null; + + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; + + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; + + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; + + // count buffered requests + this.bufferedRequestCount = 0; + + // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function () { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); + +// Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. +var realHasInstance; +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function (object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function (object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || require('./_stream_duplex'); + + // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { + return new Writable(options); + } + + this._writableState = new WritableState(options, this); + + // legacy. + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + + if (typeof options.writev === 'function') this._writev = options.writev; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} + +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function () { + this.emit('error', new Error('Cannot pipe, not readable')); +}; + +function writeAfterEnd(stream, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + pna.nextTick(cb, er); +} + +// Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. +function validChunk(stream, state, chunk, cb) { + var valid = true; + var er = false; + + if (chunk === null) { + er = new TypeError('May not write null values to stream'); + } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + if (er) { + stream.emit('error', er); + pna.nextTick(cb, er); + valid = false; + } + return valid; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + var isBuf = !state.objectMode && _isUint8Array(chunk); + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + + if (typeof cb !== 'function') cb = nop; + + if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + + return ret; +}; + +Writable.prototype.cork = function () { + var state = this._writableState; + + state.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + return chunk; +} + +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + var len = state.objectMode ? 1 : chunk.length; + + state.length += len; + + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + pna.nextTick(cb, er); + // this can emit finish, and it will always happen + // after error + pna.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + // this can emit finish, but finish must + // always follow error + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + + onwriteStateUpdate(state); + + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state); + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + /**/ + asyncWrite(afterWrite, stream, state, finished, cb); + /**/ + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} + +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} + +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + + var count = 0; + var allBuffers = true; + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + buffer.allBuffers = allBuffers; + + doWrite(stream, state, true, state.length, buffer, '', holder.finish); + + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new Error('_write() is not implemented')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); + } + + // ignore unnecessary end() calls. + if (!state.ending) endWritable(this, state, cb); +}; + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + if (err) { + stream.emit('error', err); + } + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function') { + state.pendingcb++; + state.finalCalled = true; + pna.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + if (need) { + prefinish(stream, state); + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + } + } + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) pna.nextTick(cb);else stream.once('finish', cb); + } + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } + + // reuse the free corkReq. + state.corkedRequestsFree.next = corkReq; +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + get: function () { + if (this._writableState === undefined) { + return false; + } + return this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._writableState.destroyed = value; + } +}); + +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; +Writable.prototype._destroy = function (err, cb) { + this.end(); + cb(err); +}; \ No newline at end of file diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/internal/streams/BufferList.js b/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/internal/streams/BufferList.js new file mode 100644 index 00000000..5e080976 --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/internal/streams/BufferList.js @@ -0,0 +1,78 @@ +'use strict'; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Buffer = require('safe-buffer').Buffer; +var util = require('util'); + +function copyBuffer(src, target, offset) { + src.copy(target, offset); +} + +module.exports = function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + BufferList.prototype.push = function push(v) { + var entry = { data: v, next: null }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + }; + + BufferList.prototype.unshift = function unshift(v) { + var entry = { data: v, next: this.head }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + }; + + BufferList.prototype.shift = function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + }; + + BufferList.prototype.clear = function clear() { + this.head = this.tail = null; + this.length = 0; + }; + + BufferList.prototype.join = function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + while (p = p.next) { + ret += s + p.data; + }return ret; + }; + + BufferList.prototype.concat = function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + return ret; + }; + + return BufferList; +}(); + +if (util && util.inspect && util.inspect.custom) { + module.exports.prototype[util.inspect.custom] = function () { + var obj = util.inspect({ length: this.length }); + return this.constructor.name + ' ' + obj; + }; +} \ No newline at end of file diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/internal/streams/destroy.js b/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/internal/streams/destroy.js new file mode 100644 index 00000000..85a82140 --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/internal/streams/destroy.js @@ -0,0 +1,84 @@ +'use strict'; + +/**/ + +var pna = require('process-nextick-args'); +/**/ + +// undocumented cb() API, needed for core, not for public API +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err) { + if (!this._writableState) { + pna.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + pna.nextTick(emitErrorNT, this, err); + } + } + + return this; + } + + // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + if (this._readableState) { + this._readableState.destroyed = true; + } + + // if this is a duplex stream mark the writable part as destroyed as well + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + if (!_this._writableState) { + pna.nextTick(emitErrorNT, _this, err); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + pna.nextTick(emitErrorNT, _this, err); + } + } else if (cb) { + cb(err); + } + }); + + return this; +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy +}; \ No newline at end of file diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/stream-browser.js b/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/internal/streams/stream-browser.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/stream-browser.js rename to node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/internal/streams/stream-browser.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/stream.js b/node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/internal/streams/stream.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/stream.js rename to node_backend/node_modules/concat-stream/node_modules/readable-stream/lib/internal/streams/stream.js diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/package.json b/node_backend/node_modules/concat-stream/node_modules/readable-stream/package.json new file mode 100644 index 00000000..514c178e --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/package.json @@ -0,0 +1,52 @@ +{ + "name": "readable-stream", + "version": "2.3.8", + "description": "Streams3, a user-land copy of the stream library from Node.js", + "main": "readable.js", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "devDependencies": { + "assert": "^1.4.0", + "babel-polyfill": "^6.9.1", + "buffer": "^4.9.0", + "lolex": "^2.3.2", + "nyc": "^6.4.0", + "tap": "^0.7.0", + "tape": "^4.8.0" + }, + "scripts": { + "test": "tap test/parallel/*.js test/ours/*.js && node test/verify-dependencies.js", + "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js", + "cover": "nyc npm test", + "report": "nyc report --reporter=lcov" + }, + "repository": { + "type": "git", + "url": "git://github.com/nodejs/readable-stream" + }, + "keywords": [ + "readable", + "stream", + "pipe" + ], + "browser": { + "util": false, + "./readable.js": "./readable-browser.js", + "./writable.js": "./writable-browser.js", + "./duplex.js": "./duplex-browser.js", + "./lib/internal/streams/stream.js": "./lib/internal/streams/stream-browser.js" + }, + "nyc": { + "include": [ + "lib/**.js" + ] + }, + "license": "MIT" +} diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/passthrough.js b/node_backend/node_modules/concat-stream/node_modules/readable-stream/passthrough.js new file mode 100644 index 00000000..ffd791d7 --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/passthrough.js @@ -0,0 +1 @@ +module.exports = require('./readable').PassThrough diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/readable-browser.js b/node_backend/node_modules/concat-stream/node_modules/readable-stream/readable-browser.js new file mode 100644 index 00000000..e5037259 --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/readable-browser.js @@ -0,0 +1,7 @@ +exports = module.exports = require('./lib/_stream_readable.js'); +exports.Stream = exports; +exports.Readable = exports; +exports.Writable = require('./lib/_stream_writable.js'); +exports.Duplex = require('./lib/_stream_duplex.js'); +exports.Transform = require('./lib/_stream_transform.js'); +exports.PassThrough = require('./lib/_stream_passthrough.js'); diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/readable.js b/node_backend/node_modules/concat-stream/node_modules/readable-stream/readable.js new file mode 100644 index 00000000..ec89ec53 --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/readable.js @@ -0,0 +1,19 @@ +var Stream = require('stream'); +if (process.env.READABLE_STREAM === 'disable' && Stream) { + module.exports = Stream; + exports = module.exports = Stream.Readable; + exports.Readable = Stream.Readable; + exports.Writable = Stream.Writable; + exports.Duplex = Stream.Duplex; + exports.Transform = Stream.Transform; + exports.PassThrough = Stream.PassThrough; + exports.Stream = Stream; +} else { + exports = module.exports = require('./lib/_stream_readable.js'); + exports.Stream = Stream || exports; + exports.Readable = exports; + exports.Writable = require('./lib/_stream_writable.js'); + exports.Duplex = require('./lib/_stream_duplex.js'); + exports.Transform = require('./lib/_stream_transform.js'); + exports.PassThrough = require('./lib/_stream_passthrough.js'); +} diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/transform.js b/node_backend/node_modules/concat-stream/node_modules/readable-stream/transform.js new file mode 100644 index 00000000..b1baba26 --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/transform.js @@ -0,0 +1 @@ +module.exports = require('./readable').Transform diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/writable-browser.js b/node_backend/node_modules/concat-stream/node_modules/readable-stream/writable-browser.js new file mode 100644 index 00000000..ebdde6a8 --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/writable-browser.js @@ -0,0 +1 @@ +module.exports = require('./lib/_stream_writable.js'); diff --git a/node_backend/node_modules/concat-stream/node_modules/readable-stream/writable.js b/node_backend/node_modules/concat-stream/node_modules/readable-stream/writable.js new file mode 100644 index 00000000..3211a6f8 --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/readable-stream/writable.js @@ -0,0 +1,8 @@ +var Stream = require("stream") +var Writable = require("./lib/_stream_writable.js") + +if (process.env.READABLE_STREAM === 'disable') { + module.exports = Stream && Stream.Writable || Writable +} else { + module.exports = Writable +} diff --git a/Inscripciones_UAIE/node_backend/node_modules/safe-buffer/LICENSE b/node_backend/node_modules/concat-stream/node_modules/safe-buffer/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/safe-buffer/LICENSE rename to node_backend/node_modules/concat-stream/node_modules/safe-buffer/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/safe-buffer/README.md b/node_backend/node_modules/concat-stream/node_modules/safe-buffer/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/safe-buffer/README.md rename to node_backend/node_modules/concat-stream/node_modules/safe-buffer/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/safe-buffer/index.d.ts b/node_backend/node_modules/concat-stream/node_modules/safe-buffer/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/safe-buffer/index.d.ts rename to node_backend/node_modules/concat-stream/node_modules/safe-buffer/index.d.ts diff --git a/node_backend/node_modules/concat-stream/node_modules/safe-buffer/index.js b/node_backend/node_modules/concat-stream/node_modules/safe-buffer/index.js new file mode 100644 index 00000000..22438dab --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/safe-buffer/index.js @@ -0,0 +1,62 @@ +/* eslint-disable node/no-deprecated-api */ +var buffer = require('buffer') +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} diff --git a/node_backend/node_modules/concat-stream/node_modules/safe-buffer/package.json b/node_backend/node_modules/concat-stream/node_modules/safe-buffer/package.json new file mode 100644 index 00000000..623fbc3f --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/safe-buffer/package.json @@ -0,0 +1,37 @@ +{ + "name": "safe-buffer", + "description": "Safer Node.js Buffer API", + "version": "5.1.2", + "author": { + "name": "Feross Aboukhadijeh", + "email": "feross@feross.org", + "url": "http://feross.org" + }, + "bugs": { + "url": "https://github.com/feross/safe-buffer/issues" + }, + "devDependencies": { + "standard": "*", + "tape": "^4.0.0" + }, + "homepage": "https://github.com/feross/safe-buffer", + "keywords": [ + "buffer", + "buffer allocate", + "node security", + "safe", + "safe-buffer", + "security", + "uninitialized" + ], + "license": "MIT", + "main": "index.js", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "git://github.com/feross/safe-buffer.git" + }, + "scripts": { + "test": "standard && tape test/*.js" + } +} diff --git a/node_backend/node_modules/concat-stream/node_modules/string_decoder/.travis.yml b/node_backend/node_modules/concat-stream/node_modules/string_decoder/.travis.yml new file mode 100644 index 00000000..3347a725 --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/string_decoder/.travis.yml @@ -0,0 +1,50 @@ +sudo: false +language: node_js +before_install: + - npm install -g npm@2 + - test $NPM_LEGACY && npm install -g npm@latest-3 || npm install npm -g +notifications: + email: false +matrix: + fast_finish: true + include: + - node_js: '0.8' + env: + - TASK=test + - NPM_LEGACY=true + - node_js: '0.10' + env: + - TASK=test + - NPM_LEGACY=true + - node_js: '0.11' + env: + - TASK=test + - NPM_LEGACY=true + - node_js: '0.12' + env: + - TASK=test + - NPM_LEGACY=true + - node_js: 1 + env: + - TASK=test + - NPM_LEGACY=true + - node_js: 2 + env: + - TASK=test + - NPM_LEGACY=true + - node_js: 3 + env: + - TASK=test + - NPM_LEGACY=true + - node_js: 4 + env: TASK=test + - node_js: 5 + env: TASK=test + - node_js: 6 + env: TASK=test + - node_js: 7 + env: TASK=test + - node_js: 8 + env: TASK=test + - node_js: 9 + env: TASK=test diff --git a/Inscripciones_UAIE/node_backend/node_modules/string_decoder/LICENSE b/node_backend/node_modules/concat-stream/node_modules/string_decoder/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/string_decoder/LICENSE rename to node_backend/node_modules/concat-stream/node_modules/string_decoder/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/string_decoder/README.md b/node_backend/node_modules/concat-stream/node_modules/string_decoder/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/string_decoder/README.md rename to node_backend/node_modules/concat-stream/node_modules/string_decoder/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/string_decoder/lib/string_decoder.js b/node_backend/node_modules/concat-stream/node_modules/string_decoder/lib/string_decoder.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/string_decoder/lib/string_decoder.js rename to node_backend/node_modules/concat-stream/node_modules/string_decoder/lib/string_decoder.js diff --git a/node_backend/node_modules/concat-stream/node_modules/string_decoder/package.json b/node_backend/node_modules/concat-stream/node_modules/string_decoder/package.json new file mode 100644 index 00000000..518c3eb9 --- /dev/null +++ b/node_backend/node_modules/concat-stream/node_modules/string_decoder/package.json @@ -0,0 +1,31 @@ +{ + "name": "string_decoder", + "version": "1.1.1", + "description": "The string_decoder module from Node core", + "main": "lib/string_decoder.js", + "dependencies": { + "safe-buffer": "~5.1.0" + }, + "devDependencies": { + "babel-polyfill": "^6.23.0", + "core-util-is": "^1.0.2", + "inherits": "^2.0.3", + "tap": "~0.4.8" + }, + "scripts": { + "test": "tap test/parallel/*.js && node test/verify-dependencies", + "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/nodejs/string_decoder.git" + }, + "homepage": "https://github.com/nodejs/string_decoder", + "keywords": [ + "string", + "decoder", + "browser", + "browserify" + ], + "license": "MIT" +} diff --git a/node_backend/node_modules/concat-stream/package.json b/node_backend/node_modules/concat-stream/package.json new file mode 100644 index 00000000..f7090223 --- /dev/null +++ b/node_backend/node_modules/concat-stream/package.json @@ -0,0 +1,55 @@ +{ + "name": "concat-stream", + "version": "1.6.2", + "description": "writable stream that concatenates strings or binary data and calls a callback with the result", + "tags": [ + "stream", + "simple", + "util", + "utility" + ], + "author": "Max Ogden ", + "repository": { + "type": "git", + "url": "http://github.com/maxogden/concat-stream.git" + }, + "bugs": { + "url": "http://github.com/maxogden/concat-stream/issues" + }, + "engines": [ + "node >= 0.8" + ], + "main": "index.js", + "files": [ + "index.js" + ], + "scripts": { + "test": "tape test/*.js test/server/*.js" + }, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "devDependencies": { + "tape": "^4.6.3" + }, + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/8..latest", + "firefox/17..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + } +} diff --git a/node_backend/node_modules/concat-stream/readme.md b/node_backend/node_modules/concat-stream/readme.md new file mode 100644 index 00000000..7aa19c4f --- /dev/null +++ b/node_backend/node_modules/concat-stream/readme.md @@ -0,0 +1,102 @@ +# concat-stream + +Writable stream that concatenates all the data from a stream and calls a callback with the result. Use this when you want to collect all the data from a stream into a single buffer. + +[![Build Status](https://travis-ci.org/maxogden/concat-stream.svg?branch=master)](https://travis-ci.org/maxogden/concat-stream) + +[![NPM](https://nodei.co/npm/concat-stream.png)](https://nodei.co/npm/concat-stream/) + +### description + +Streams emit many buffers. If you want to collect all of the buffers, and when the stream ends concatenate all of the buffers together and receive a single buffer then this is the module for you. + +Only use this if you know you can fit all of the output of your stream into a single Buffer (e.g. in RAM). + +There are also `objectMode` streams that emit things other than Buffers, and you can concatenate these too. See below for details. + +## Related + +`concat-stream` is part of the [mississippi stream utility collection](https://github.com/maxogden/mississippi) which includes more useful stream modules similar to this one. + +### examples + +#### Buffers + +```js +var fs = require('fs') +var concat = require('concat-stream') + +var readStream = fs.createReadStream('cat.png') +var concatStream = concat(gotPicture) + +readStream.on('error', handleError) +readStream.pipe(concatStream) + +function gotPicture(imageBuffer) { + // imageBuffer is all of `cat.png` as a node.js Buffer +} + +function handleError(err) { + // handle your error appropriately here, e.g.: + console.error(err) // print the error to STDERR + process.exit(1) // exit program with non-zero exit code +} + +``` + +#### Arrays + +```js +var write = concat(function(data) {}) +write.write([1,2,3]) +write.write([4,5,6]) +write.end() +// data will be [1,2,3,4,5,6] in the above callback +``` + +#### Uint8Arrays + +```js +var write = concat(function(data) {}) +var a = new Uint8Array(3) +a[0] = 97; a[1] = 98; a[2] = 99 +write.write(a) +write.write('!') +write.end(Buffer.from('!!1')) +``` + +See `test/` for more examples + +# methods + +```js +var concat = require('concat-stream') +``` + +## var writable = concat(opts={}, cb) + +Return a `writable` stream that will fire `cb(data)` with all of the data that +was written to the stream. Data can be written to `writable` as strings, +Buffers, arrays of byte integers, and Uint8Arrays. + +By default `concat-stream` will give you back the same data type as the type of the first buffer written to the stream. Use `opts.encoding` to set what format `data` should be returned as, e.g. if you if you don't want to rely on the built-in type checking or for some other reason. + +* `string` - get a string +* `buffer` - get back a Buffer +* `array` - get an array of byte integers +* `uint8array`, `u8`, `uint8` - get back a Uint8Array +* `object`, get back an array of Objects + +If you don't specify an encoding, and the types can't be inferred (e.g. you write things that aren't in the list above), it will try to convert concat them into a `Buffer`. + +If nothing is written to `writable` then `data` will be an empty array `[]`. + +# error handling + +`concat-stream` does not handle errors for you, so you must handle errors on whatever streams you pipe into `concat-stream`. This is a general rule when programming with node.js streams: always handle errors on each and every stream. Since `concat-stream` is not itself a stream it does not emit errors. + +We recommend using [`end-of-stream`](https://npmjs.org/end-of-stream) or [`pump`](https://npmjs.org/pump) for writing error tolerant stream code. + +# license + +MIT LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/console-control-strings/LICENSE b/node_backend/node_modules/console-control-strings/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/console-control-strings/LICENSE rename to node_backend/node_modules/console-control-strings/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/console-control-strings/README.md b/node_backend/node_modules/console-control-strings/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/console-control-strings/README.md rename to node_backend/node_modules/console-control-strings/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/console-control-strings/README.md~ b/node_backend/node_modules/console-control-strings/README.md~ similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/console-control-strings/README.md~ rename to node_backend/node_modules/console-control-strings/README.md~ diff --git a/Inscripciones_UAIE/node_backend/node_modules/console-control-strings/index.js b/node_backend/node_modules/console-control-strings/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/console-control-strings/index.js rename to node_backend/node_modules/console-control-strings/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/console-control-strings/package.json b/node_backend/node_modules/console-control-strings/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/console-control-strings/package.json rename to node_backend/node_modules/console-control-strings/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/content-disposition/HISTORY.md b/node_backend/node_modules/content-disposition/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/content-disposition/HISTORY.md rename to node_backend/node_modules/content-disposition/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/content-disposition/LICENSE b/node_backend/node_modules/content-disposition/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/content-disposition/LICENSE rename to node_backend/node_modules/content-disposition/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/content-disposition/README.md b/node_backend/node_modules/content-disposition/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/content-disposition/README.md rename to node_backend/node_modules/content-disposition/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/content-disposition/index.js b/node_backend/node_modules/content-disposition/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/content-disposition/index.js rename to node_backend/node_modules/content-disposition/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/content-disposition/package.json b/node_backend/node_modules/content-disposition/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/content-disposition/package.json rename to node_backend/node_modules/content-disposition/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/content-type/HISTORY.md b/node_backend/node_modules/content-type/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/content-type/HISTORY.md rename to node_backend/node_modules/content-type/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/content-type/LICENSE b/node_backend/node_modules/content-type/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/content-type/LICENSE rename to node_backend/node_modules/content-type/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/content-type/README.md b/node_backend/node_modules/content-type/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/content-type/README.md rename to node_backend/node_modules/content-type/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/content-type/index.js b/node_backend/node_modules/content-type/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/content-type/index.js rename to node_backend/node_modules/content-type/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/content-type/package.json b/node_backend/node_modules/content-type/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/content-type/package.json rename to node_backend/node_modules/content-type/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/cookie-signature/.npmignore b/node_backend/node_modules/cookie-signature/.npmignore similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/cookie-signature/.npmignore rename to node_backend/node_modules/cookie-signature/.npmignore diff --git a/Inscripciones_UAIE/node_backend/node_modules/cookie-signature/History.md b/node_backend/node_modules/cookie-signature/History.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/cookie-signature/History.md rename to node_backend/node_modules/cookie-signature/History.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/cookie-signature/Readme.md b/node_backend/node_modules/cookie-signature/Readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/cookie-signature/Readme.md rename to node_backend/node_modules/cookie-signature/Readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/cookie-signature/index.js b/node_backend/node_modules/cookie-signature/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/cookie-signature/index.js rename to node_backend/node_modules/cookie-signature/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/cookie-signature/package.json b/node_backend/node_modules/cookie-signature/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/cookie-signature/package.json rename to node_backend/node_modules/cookie-signature/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/cookie/LICENSE b/node_backend/node_modules/cookie/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/cookie/LICENSE rename to node_backend/node_modules/cookie/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/cookie/README.md b/node_backend/node_modules/cookie/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/cookie/README.md rename to node_backend/node_modules/cookie/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/cookie/SECURITY.md b/node_backend/node_modules/cookie/SECURITY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/cookie/SECURITY.md rename to node_backend/node_modules/cookie/SECURITY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/cookie/index.js b/node_backend/node_modules/cookie/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/cookie/index.js rename to node_backend/node_modules/cookie/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/cookie/package.json b/node_backend/node_modules/cookie/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/cookie/package.json rename to node_backend/node_modules/cookie/package.json diff --git a/node_backend/node_modules/core-util-is/LICENSE b/node_backend/node_modules/core-util-is/LICENSE new file mode 100644 index 00000000..d8d7f943 --- /dev/null +++ b/node_backend/node_modules/core-util-is/LICENSE @@ -0,0 +1,19 @@ +Copyright Node.js contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/node_backend/node_modules/core-util-is/README.md b/node_backend/node_modules/core-util-is/README.md new file mode 100644 index 00000000..5a76b414 --- /dev/null +++ b/node_backend/node_modules/core-util-is/README.md @@ -0,0 +1,3 @@ +# core-util-is + +The `util.is*` functions introduced in Node v0.12. diff --git a/node_backend/node_modules/core-util-is/lib/util.js b/node_backend/node_modules/core-util-is/lib/util.js new file mode 100644 index 00000000..6e5a20d7 --- /dev/null +++ b/node_backend/node_modules/core-util-is/lib/util.js @@ -0,0 +1,107 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. + +function isArray(arg) { + if (Array.isArray) { + return Array.isArray(arg); + } + return objectToString(arg) === '[object Array]'; +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = require('buffer').Buffer.isBuffer; + +function objectToString(o) { + return Object.prototype.toString.call(o); +} diff --git a/node_backend/node_modules/core-util-is/package.json b/node_backend/node_modules/core-util-is/package.json new file mode 100644 index 00000000..b0c51f58 --- /dev/null +++ b/node_backend/node_modules/core-util-is/package.json @@ -0,0 +1,38 @@ +{ + "name": "core-util-is", + "version": "1.0.3", + "description": "The `util.is*` functions introduced in Node v0.12.", + "main": "lib/util.js", + "files": [ + "lib" + ], + "repository": { + "type": "git", + "url": "git://github.com/isaacs/core-util-is" + }, + "keywords": [ + "util", + "isBuffer", + "isArray", + "isNumber", + "isString", + "isRegExp", + "isThis", + "isThat", + "polyfill" + ], + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "license": "MIT", + "bugs": { + "url": "https://github.com/isaacs/core-util-is/issues" + }, + "scripts": { + "test": "tap test.js", + "preversion": "npm test", + "postversion": "npm publish", + "prepublishOnly": "git push origin --follow-tags" + }, + "devDependencies": { + "tap": "^15.0.9" + } +} diff --git a/Inscripciones_UAIE/node_backend/node_modules/cors/CONTRIBUTING.md b/node_backend/node_modules/cors/CONTRIBUTING.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/cors/CONTRIBUTING.md rename to node_backend/node_modules/cors/CONTRIBUTING.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/cors/HISTORY.md b/node_backend/node_modules/cors/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/cors/HISTORY.md rename to node_backend/node_modules/cors/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/cors/LICENSE b/node_backend/node_modules/cors/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/cors/LICENSE rename to node_backend/node_modules/cors/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/cors/README.md b/node_backend/node_modules/cors/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/cors/README.md rename to node_backend/node_modules/cors/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/cors/lib/index.js b/node_backend/node_modules/cors/lib/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/cors/lib/index.js rename to node_backend/node_modules/cors/lib/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/cors/package.json b/node_backend/node_modules/cors/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/cors/package.json rename to node_backend/node_modules/cors/package.json diff --git a/node_backend/node_modules/csv-parser/LICENSE b/node_backend/node_modules/csv-parser/LICENSE new file mode 100644 index 00000000..757562ec --- /dev/null +++ b/node_backend/node_modules/csv-parser/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Mathias Buus + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/node_backend/node_modules/csv-parser/README.md b/node_backend/node_modules/csv-parser/README.md new file mode 100644 index 00000000..bfd4b314 --- /dev/null +++ b/node_backend/node_modules/csv-parser/README.md @@ -0,0 +1,358 @@ +[tests]: http://img.shields.io/travis/mafintosh/csv-parser.svg +[tests-url]: http://travis-ci.org/mafintosh/csv-parser + +[cover]: https://codecov.io/gh/mafintosh/csv-parser/branch/master/graph/badge.svg +[cover-url]: https://codecov.io/gh/mafintosh/csv-parser + +[size]: https://packagephobia.now.sh/badge?p=csv-parser +[size-url]: https://packagephobia.now.sh/result?p=csv-parser + +# csv-parser + +[![tests][tests]][tests-url] +[![cover][cover]][cover-url] +[![size][size]][size-url] + +Streaming CSV parser that aims for maximum speed as well as compatibility with +the [csv-spectrum](https://npmjs.org/csv-spectrum) CSV acid test suite. + +`csv-parser` can convert CSV into JSON at at rate of around 90,000 rows per +second. Performance varies with the data used; try `bin/bench.js ` +to benchmark your data. + +`csv-parser` can be used in the browser with [browserify](http://browserify.org/). + +[neat-csv](https://github.com/sindresorhus/neat-csv) can be used if a `Promise` +based interface to `csv-parser` is needed. + +_Note: This module requires Node v8.16.0 or higher._ + +## Benchmarks + +⚡️ `csv-parser` is greased-lightning fast + +```console +→ npm run bench + + Filename Rows Parsed Duration + backtick.csv 2 3.5ms + bad-data.csv 3 0.55ms + basic.csv 1 0.26ms + comma-in-quote.csv 1 0.29ms + comment.csv 2 0.40ms + empty-columns.csv 1 0.40ms + escape-quotes.csv 3 0.38ms + geojson.csv 3 0.46ms + large-dataset.csv 7268 73ms + newlines.csv 3 0.35ms + no-headers.csv 3 0.26ms + option-comment.csv 2 0.24ms + option-escape.csv 3 0.25ms + option-maxRowBytes.csv 4577 39ms + option-newline.csv 0 0.47ms + option-quote-escape.csv 3 0.33ms + option-quote-many.csv 3 0.38ms + option-quote.csv 2 0.22ms + quotes+newlines.csv 3 0.20ms + strict.csv 3 0.22ms + latin.csv 2 0.38ms + mac-newlines.csv 2 0.28ms + utf16-big.csv 2 0.33ms + utf16.csv 2 0.26ms + utf8.csv 2 0.24ms +``` + +## Install + +Using npm: + +```console +$ npm install csv-parser +``` + +Using yarn: + +```console +$ yarn add csv-parser +``` + +## Usage + +To use the module, create a readable stream to a desired CSV file, instantiate +`csv`, and pipe the stream to `csv`. + +Suppose you have a CSV file `data.csv` which contains the data: + +``` +NAME,AGE +Daffy Duck,24 +Bugs Bunny,22 +``` + +It could then be parsed, and results shown like so: + +``` js +const csv = require('csv-parser') +const fs = require('fs') +const results = []; + +fs.createReadStream('data.csv') + .pipe(csv()) + .on('data', (data) => results.push(data)) + .on('end', () => { + console.log(results); + // [ + // { NAME: 'Daffy Duck', AGE: '24' }, + // { NAME: 'Bugs Bunny', AGE: '22' } + // ] + }); +``` + +To specify options for `csv`, pass an object argument to the function. For +example: + +```js +csv({ separator: '\t' }); +``` + +## API + +### csv([options | headers]) + +Returns: `Array[Object]` + +#### options + +Type: `Object` + +As an alternative to passing an `options` object, you may pass an `Array[String]` +which specifies the headers to use. For example: + +```js +csv(['Name', 'Age']); +``` + +If you need to specify options _and_ headers, please use the the object notation +with the `headers` property as shown below. + +#### escape + +Type: `String`
+Default: `"` + +A single-character string used to specify the character used to escape strings +in a CSV row. + +#### headers + +Type: `Array[String] | Boolean` + +Specifies the headers to use. Headers define the property key for each value in +a CSV row. If no `headers` option is provided, `csv-parser` will use the first +line in a CSV file as the header specification. + +If `false`, specifies that the first row in a data file does _not_ contain +headers, and instructs the parser to use the column index as the key for each column. +Using `headers: false` with the same `data.csv` example from above would yield: + +``` js +[ + { '0': 'Daffy Duck', '1': 24 }, + { '0': 'Bugs Bunny', '1': 22 } +] +``` + +_Note: If using the `headers` for an operation on a file which contains headers on the first line, specify `skipLines: 1` to skip over the row, or the headers row will appear as normal row data. Alternatively, use the `mapHeaders` option to manipulate existing headers in that scenario._ + +#### mapHeaders + +Type: `Function` + +A function that can be used to modify the values of each header. Return a `String` to modify the header. Return `null` to remove the header, and it's column, from the results. + +```js +csv({ + mapHeaders: ({ header, index }) => header.toLowerCase() +}) +``` + +##### Parameters + +**header** _String_ The current column header.
+**index** _Number_ The current column index. + +#### mapValues + +Type: `Function` + +A function that can be used to modify the content of each column. The return value will replace the current column content. + +```js +csv({ + mapValues: ({ header, index, value }) => value.toLowerCase() +}) +``` + +##### Parameters + +**header** _String_ The current column header.
+**index** _Number_ The current column index.
+**value** _String_ The current column value (or content). + +##### newline + +Type: `String`
+Default: `\n` + +Specifies a single-character string to denote the end of a line in a CSV file. + +#### quote + +Type: `String`
+Default: `"` + +Specifies a single-character string to denote a quoted string. + +#### raw + +Type: `Boolean`
+ +If `true`, instructs the parser not to decode UTF-8 strings. + +#### separator + +Type: `String`
+Default: `,` + +Specifies a single-character string to use as the column separator for each row. + +#### skipComments + +Type: `Boolean | String`
+Default: `false` + +Instructs the parser to ignore lines which represent comments in a CSV file. Since there is no specification that dictates what a CSV comment looks like, comments should be considered non-standard. The "most common" character used to signify a comment in a CSV file is `"#"`. If this option is set to `true`, lines which begin with `#` will be skipped. If a custom character is needed to denote a commented line, this option may be set to a string which represents the leading character(s) signifying a comment line. + +#### skipLines + +Type: `Number`
+Default: `0` + +Specifies the number of lines at the beginning of a data file that the parser should +skip over, prior to parsing headers. + +#### maxRowBytes + +Type: `Number`
+Default: `Number.MAX_SAFE_INTEGER` + +Maximum number of bytes per row. An error is thrown if a line exeeds this value. The default value is on 8 peta byte. + +#### strict + +Type: `Boolean`
+Default: `false` + +If `true`, instructs the parser that the number of columns in each row must match +the number of `headers` specified or throws an exception. +if `false`: the headers are mapped to the column index + less columns: any missing column in the middle will result in a wrong property mapping! + more columns: the aditional columns will create a "_"+index properties - eg. "_10":"value" + +## Events + +The following events are emitted during parsing: + +### `data` + +Emitted for each row of data parsed with the notable exception of the header +row. Please see [Usage](#Usage) for an example. + +### `headers` + +Emitted after the header row is parsed. The first parameter of the event +callback is an `Array[String]` containing the header names. + +```js +fs.createReadStream('data.csv') + .pipe(csv()) + .on('headers', (headers) => { + console.log(`First header: ${headers[0]}`) + }) +``` + +### Readable Stream Events + +Events available on Node built-in +[Readable Streams](https://nodejs.org/api/stream.html#stream_class_stream_readable) +are also emitted. The `end` event should be used to detect the end of parsing. + +## CLI + +This module also provides a CLI which will convert CSV to +[newline-delimited](http://ndjson.org/) JSON. The following CLI flags can be +used to control how input is parsed: + +``` +Usage: csv-parser [filename?] [options] + + --escape,-e Set the escape character (defaults to quote value) + --headers,-h Explicitly specify csv headers as a comma separated list + --help Show this help + --output,-o Set output file. Defaults to stdout + --quote,-q Set the quote character ('"' by default) + --remove Remove columns from output by header name + --separator,-s Set the separator character ("," by default) + --skipComments,-c Skip CSV comments that begin with '#'. Set a value to change the comment character. + --skipLines,-l Set the number of lines to skip to before parsing headers + --strict Require column length match headers length + --version,-v Print out the installed version +``` + +For example; to parse a TSV file: + +``` +cat data.tsv | csv-parser -s $'\t' +``` + +## Encoding + +Users may encounter issues with the encoding of a CSV file. Transcoding the +source stream can be done neatly with a modules such as: +- [`iconv-lite`](https://www.npmjs.com/package/iconv-lite) +- [`iconv`](https://www.npmjs.com/package/iconv) + +Or native [`iconv`](http://man7.org/linux/man-pages/man1/iconv.1.html) if part +of a pipeline. + +## Byte Order Marks + +Some CSV files may be generated with, or contain a leading [Byte Order Mark](https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8). This may cause issues parsing headers and/or data from your file. From Wikipedia: + +>The Unicode Standard permits the BOM in UTF-8, but does not require nor recommend its use. Byte order has no meaning in UTF-8. + +To use this module with a file containing a BOM, please use a module like [strip-bom-stream](https://github.com/sindresorhus/strip-bom-stream) in your pipeline: + +```js +const fs = require('fs'); + +const csv = require('csv-parser'); +const stripBom = require('strip-bom-stream'); + +fs.createReadStream('data.csv') + .pipe(stripBom()) + .pipe(csv()) + ... +``` + +When using the CLI, the BOM can be removed by first running: + +```console +$ sed $'s/\xEF\xBB\xBF//g' data.csv +``` + +## Meta + +[CONTRIBUTING](./.github/CONTRIBUTING) + +[LICENSE (MIT)](./LICENSE) diff --git a/node_backend/node_modules/csv-parser/bin/csv-parser b/node_backend/node_modules/csv-parser/bin/csv-parser new file mode 100644 index 00000000..f895a8eb --- /dev/null +++ b/node_backend/node_modules/csv-parser/bin/csv-parser @@ -0,0 +1,94 @@ +#!/usr/bin/env node + +const { EOL } = require('os') +const minimist = require('minimist') +const { Transform } = require('stream'); +const fs = require('fs') +const csv = require('../') +const pkg = require('../package.json') + +const argv = minimist(process.argv, { + alias: { + c: 'skipComments', + e: 'escape', + h: 'headers', + o: 'output', + q: 'quote', + l: 'skipLines', + s: 'separator', + v: 'version' + }, + default: { + e: '"', + q: '"', + s: ',' + }, + boolean: ['version', 'help'] +}) + +const [,, filename] = argv._ + +if (argv.version) { + console.log(pkg.version) + process.exit(0) +} + +if (argv.help || (process.stdin.isTTY && !filename)) { + console.error(`Usage: csv-parser [filename?] [options] + --escape,-e Set the escape character (defaults to quote value) + --headers,-h Explicitly specify csv headers as a comma separated list + --help Show this help + --output,-o Set output file. Defaults to stdout + --quote,-q Set the quote character ('"' by default) + --remove Remove headers from output + --separator,-s Set the separator character ("," by default) + --skipComments,-c Skip CSV comments that begin with '#'. Set a value to change the comment character. + --skipLines,-l Set the number of lines to skip to before parsing headers + --strict Require column length match headers length + --version,-v Print out the installed version +`) + process.exit(1) +} + +let input +const output = (argv.output && argv.output !== '-') ? fs.createWriteStream(argv.output) : process.stdout +const options = { + separator: argv.separator, + strict: argv.strict, + skipComments: argv.skipComments, + skipLines: argv.skipLines +} + +if (argv.headers) { + options.headers = argv.headers.toString().split(argv.separator) +} + +if (argv.remove) { + const removeHeaders = argv.remove.split(',') + options.mapHeaders = (name, i) => { + return removeHeaders.indexOf(name) === -1 ? name : null + } +} + +if (filename === '-' || !filename) { + input = process.stdin +} else if (fs.existsSync(filename)) { + input = fs.createReadStream(filename) +} else { + console.error(`File: ${filename} does not exist`) + process.exit(2) +} + +const serialize = () => { + return new Transform({ + objectMode: true, + transform(obj, enc, cb) { + cb(null, JSON.stringify(obj) + EOL) + } + }); +} + +input + .pipe(csv(options)) + .pipe(serialize()) + .pipe(output) diff --git a/node_backend/node_modules/csv-parser/index.d.ts b/node_backend/node_modules/csv-parser/index.d.ts new file mode 100644 index 00000000..a6a400df --- /dev/null +++ b/node_backend/node_modules/csv-parser/index.d.ts @@ -0,0 +1,146 @@ +/// +import { Transform } from 'stream'; + +declare namespace csvParser { + type CsvParser = Transform; + + interface Options { + /** + * A single-character string used to specify the character used to escape strings in a CSV row. + * + * @default '"' + */ + readonly escape?: string; + + /** + * Specifies the headers to use. Headers define the property key for each value in a CSV row. If no `headers` option is provided, `csv-parser` will use the first line in a CSV file as the header specification. + * + * If `false`, specifies that the first row in a data file does _not_ contain headers, and instructs the parser to use the row index as the key for each row. + * + * Suppose you have a CSV file `data.csv` which contains the data: + * + * ``` +NAME,AGE +Daffy Duck,24 +Bugs Bunny,22 +``` + * Using `headers: false` with the data from `data.csv` would yield: + * ``` +[ + { '0': 'Daffy Duck', '1': 24 }, + { '0': 'Bugs Bunny', '1': 22 } +] +``` + */ + readonly headers?: ReadonlyArray | boolean; + + /** + * A function that can be used to modify the values of each header. Return `null` to remove the header, and it's column, from the results. + * + * @example + * + * csv({ + * mapHeaders: ({ header, index }) => header.toLowerCase() + * }); + */ + readonly mapHeaders?: (args: { header: string; index: number }) => string | null; + + /** + * A function that can be used to modify the value of each column value. + * + * @example + * + * csv({ + * mapValues: ({ header, index, value }) => value.toLowerCase() + * }); + */ + readonly mapValues?: (args: { header: string; index: number; value: any }) => any; + + /** + * Specifies a single-character string to denote the end of a line in a CSV file. + * + * @default '\n' + */ + readonly newline?: string; + + /** + * Specifies a single-character string to denote a quoted string. + * + * @default '"' + */ + readonly quote?: string; + + /** + * If `true`, instructs the parser not to decode UTF-8 strings. + */ + readonly raw?: boolean; + + /** + * Specifies a single-character string to use as the column separator for each row. + * + * @default ',' + */ + readonly separator?: string; + + /** + * Instructs the parser to ignore lines which represent comments in a CSV file. Since there is no specification that dictates what a CSV comment looks like, comments should be considered non-standard. The "most common" character used to signify a comment in a CSV file is `"#"`. If this option is set to `true`, lines which begin with `#` will be skipped. If a custom character is needed to denote a commented line, this option may be set to a string which represents the leading character(s) signifying a comment line. + * + * @default false + */ + readonly skipComments?: boolean | string; + + /** + * Specifies the number of lines at the beginning of a data file that the parser should skip over, prior to parsing headers. + * + * @default 0 + */ + readonly skipLines?: number; + + /** + * Maximum number of bytes per row. An error is thrown if a line exeeds this value. The default value is on 8 peta byte. + * + * @default Number.MAX_SAFE_INTEGER + */ + readonly maxRowBytes?: number; + + /** + * If `true`, instructs the parser that the number of columns in each row must match the number of `headers` specified. + */ + readonly strict?: boolean; + } +} + +/** + * Streaming CSV parser that aims for maximum speed as well as compatibility with the [csv-spectrum](https://npmjs.org/csv-spectrum) CSV acid test suite. + * + * @param optionsOrHeaders - As an alternative to passing an `options` object, you may pass an `Array[String]` which specifies the headers to use. If you need to specify options _and_ headers, please use the the object notation with the `headers` property. + * + * @example + * + * // data.csv: + * // + * // NAME,AGE + * // Daffy Duck,24 + * // Bugs Bunny,22 + * + * import csv = require('csv-parser'); + * import * as fs from 'fs'; + * + * const results = []; + * + * fs.createReadStream('data.csv') + * .pipe(csv()) + * .on('data', (data) => results.push(data)) + * .on('end', () => { + * console.log(results); + * // [ + * // { NAME: 'Daffy Duck', AGE: '24' }, + * // { NAME: 'Bugs Bunny', AGE: '22' } + * // ] + * }); + */ +declare const csvParser: ( + optionsOrHeaders?: csvParser.Options | ReadonlyArray +) => csvParser.CsvParser; + +export = csvParser; diff --git a/node_backend/node_modules/csv-parser/index.js b/node_backend/node_modules/csv-parser/index.js new file mode 100644 index 00000000..2a6a2daa --- /dev/null +++ b/node_backend/node_modules/csv-parser/index.js @@ -0,0 +1,275 @@ +const { Transform } = require('stream') + +const [cr] = Buffer.from('\r') +const [nl] = Buffer.from('\n') +const defaults = { + escape: '"', + headers: null, + mapHeaders: ({ header }) => header, + mapValues: ({ value }) => value, + newline: '\n', + quote: '"', + raw: false, + separator: ',', + skipComments: false, + skipLines: null, + maxRowBytes: Number.MAX_SAFE_INTEGER, + strict: false +} + +class CsvParser extends Transform { + constructor (opts = {}) { + super({ objectMode: true, highWaterMark: 16 }) + + if (Array.isArray(opts)) opts = { headers: opts } + + const options = Object.assign({}, defaults, opts) + + options.customNewline = options.newline !== defaults.newline + + for (const key of ['newline', 'quote', 'separator']) { + if (typeof options[key] !== 'undefined') { + ([options[key]] = Buffer.from(options[key])) + } + } + + // if escape is not defined on the passed options, use the end value of quote + options.escape = (opts || {}).escape ? Buffer.from(options.escape)[0] : options.quote + + this.state = { + empty: options.raw ? Buffer.alloc(0) : '', + escaped: false, + first: true, + lineNumber: 0, + previousEnd: 0, + rowLength: 0, + quoted: false + } + + this._prev = null + + if (options.headers === false) { + // enforce, as the column length check will fail if headers:false + options.strict = false + } + + if (options.headers || options.headers === false) { + this.state.first = false + } + + this.options = options + this.headers = options.headers + } + + parseCell (buffer, start, end) { + const { escape, quote } = this.options + // remove quotes from quoted cells + if (buffer[start] === quote && buffer[end - 1] === quote) { + start++ + end-- + } + + let y = start + + for (let i = start; i < end; i++) { + // check for escape characters and skip them + if (buffer[i] === escape && i + 1 < end && buffer[i + 1] === quote) { + i++ + } + + if (y !== i) { + buffer[y] = buffer[i] + } + y++ + } + + return this.parseValue(buffer, start, y) + } + + parseLine (buffer, start, end) { + const { customNewline, escape, mapHeaders, mapValues, quote, separator, skipComments, skipLines } = this.options + + end-- // trim newline + if (!customNewline && buffer.length && buffer[end - 1] === cr) { + end-- + } + + const comma = separator + const cells = [] + let isQuoted = false + let offset = start + + if (skipComments) { + const char = typeof skipComments === 'string' ? skipComments : '#' + if (buffer[start] === Buffer.from(char)[0]) { + return + } + } + + const mapValue = (value) => { + if (this.state.first) { + return value + } + + const index = cells.length + const header = this.headers[index] + + return mapValues({ header, index, value }) + } + + for (let i = start; i < end; i++) { + const isStartingQuote = !isQuoted && buffer[i] === quote + const isEndingQuote = isQuoted && buffer[i] === quote && i + 1 <= end && buffer[i + 1] === comma + const isEscape = isQuoted && buffer[i] === escape && i + 1 < end && buffer[i + 1] === quote + + if (isStartingQuote || isEndingQuote) { + isQuoted = !isQuoted + continue + } else if (isEscape) { + i++ + continue + } + + if (buffer[i] === comma && !isQuoted) { + let value = this.parseCell(buffer, offset, i) + value = mapValue(value) + cells.push(value) + offset = i + 1 + } + } + + if (offset < end) { + let value = this.parseCell(buffer, offset, end) + value = mapValue(value) + cells.push(value) + } + + if (buffer[end - 1] === comma) { + cells.push(mapValue(this.state.empty)) + } + + const skip = skipLines && skipLines > this.state.lineNumber + this.state.lineNumber++ + + if (this.state.first && !skip) { + this.state.first = false + this.headers = cells.map((header, index) => mapHeaders({ header, index })) + + this.emit('headers', this.headers) + return + } + + if (!skip && this.options.strict && cells.length !== this.headers.length) { + const e = new RangeError('Row length does not match headers') + this.emit('error', e) + } else { + if (!skip) this.writeRow(cells) + } + } + + parseValue (buffer, start, end) { + if (this.options.raw) { + return buffer.slice(start, end) + } + + return buffer.toString('utf-8', start, end) + } + + writeRow (cells) { + const headers = (this.headers === false) ? cells.map((value, index) => index) : this.headers + + const row = cells.reduce((o, cell, index) => { + const header = headers[index] + if (header === null) return o // skip columns + if (header !== undefined) { + o[header] = cell + } else { + o[`_${index}`] = cell + } + return o + }, {}) + + this.push(row) + } + + _flush (cb) { + if (this.state.escaped || !this._prev) return cb() + this.parseLine(this._prev, this.state.previousEnd, this._prev.length + 1) // plus since online -1s + cb() + } + + _transform (data, enc, cb) { + if (typeof data === 'string') { + data = Buffer.from(data) + } + + const { escape, quote } = this.options + let start = 0 + let buffer = data + + if (this._prev) { + start = this._prev.length + buffer = Buffer.concat([this._prev, data]) + this._prev = null + } + + const bufferLength = buffer.length + + for (let i = start; i < bufferLength; i++) { + const chr = buffer[i] + const nextChr = i + 1 < bufferLength ? buffer[i + 1] : null + + this.state.rowLength++ + if (this.state.rowLength > this.options.maxRowBytes) { + return cb(new Error('Row exceeds the maximum size')) + } + + if (!this.state.escaped && chr === escape && nextChr === quote && i !== start) { + this.state.escaped = true + continue + } else if (chr === quote) { + if (this.state.escaped) { + this.state.escaped = false + // non-escaped quote (quoting the cell) + } else { + this.state.quoted = !this.state.quoted + } + continue + } + + if (!this.state.quoted) { + if (this.state.first && !this.options.customNewline) { + if (chr === nl) { + this.options.newline = nl + } else if (chr === cr) { + if (nextChr !== nl) { + this.options.newline = cr + } + } + } + + if (chr === this.options.newline) { + this.parseLine(buffer, this.state.previousEnd, i + 1) + this.state.previousEnd = i + 1 + this.state.rowLength = 0 + } + } + } + + if (this.state.previousEnd === bufferLength) { + this.state.previousEnd = 0 + return cb() + } + + if (bufferLength - this.state.previousEnd < data.length) { + this._prev = data + this.state.previousEnd -= (bufferLength - data.length) + return cb() + } + + this._prev = buffer + cb() + } +} + +module.exports = (opts) => new CsvParser(opts) diff --git a/node_backend/node_modules/csv-parser/package.json b/node_backend/node_modules/csv-parser/package.json new file mode 100644 index 00000000..7e22065a --- /dev/null +++ b/node_backend/node_modules/csv-parser/package.json @@ -0,0 +1,92 @@ +{ + "name": "csv-parser", + "version": "3.0.0", + "description": "Streaming CSV parser that aims for maximum speed as well as compatibility with the csv-spectrum test suite", + "license": "MIT", + "repository": "mafintosh/csv-parser", + "author": "mafintosh", + "maintainers": [ + "Andrew Powell " + ], + "homepage": "https://github.com/mafintosh/csv-parser", + "bugs": "https://github.com/mafintosh/csv-parser/issues", + "bin": { + "csv-parser": "./bin/csv-parser" + }, + "main": "index.js", + "files": [ + "bin/csv-parser", + "index.js", + "index.d.ts" + ], + "engines": { + "node": ">= 10" + }, + "scripts": { + "bench": "bin/bench", + "commitlint": "commitlint", + "coverage": "nyc npm run test && nyc report --reporter=text-lcov > coverage.lcov", + "lint": "eslint .", + "lint-staged": "lint-staged", + "security": "npm audit", + "test": "ava && tsd" + }, + "dependencies": { + "minimist": "^1.2.0" + }, + "devDependencies": { + "@commitlint/cli": "^8.2.0", + "@commitlint/config-conventional": "^8.0.0", + "@types/node": "^12.0.0", + "ava": "^2.4.0", + "bops": "^1.0.0", + "chalk": "^2.4.2", + "concat-stream": "^2.0.0", + "csv-spectrum": "^1.0.0", + "eslint": "^6.4.0", + "eslint-config-standard": "^14.1.0", + "eslint-plugin-import": "^2.18.2", + "eslint-plugin-node": "^10.0.0", + "eslint-plugin-promise": "^4.1.1", + "eslint-plugin-standard": "^4.0.0", + "execa": "^2.1.0", + "globby": "^10.0.1", + "husky": "^3.0.0", + "lint-staged": "^9.0.2", + "loud-rejection": "^2.1.0", + "nyc": "^14.1.1", + "pre-commit": "^1.2.2", + "strip-ansi": "^5.2.0", + "text-table": "^0.2.0", + "time-span": "^3.1.0", + "tsd": "^0.8.0" + }, + "directories": { + "example": "examples", + "test": "test" + }, + "keywords": [ + "csv", + "parser", + "fast", + "json" + ], + "ava": { + "files": [ + "!**/fixtures/**", + "!**/helpers/**" + ] + }, + "husky": { + "hooks": { + "commit-msg": "commitlint -e $HUSKY_GIT_PARAMS" + } + }, + "lint-staged": { + "*.js": [ + "eslint --fix", + "git add" + ] + }, + "pre-commit": "lint-staged" +} diff --git a/Inscripciones_UAIE/node_backend/node_modules/debug/.coveralls.yml b/node_backend/node_modules/debug/.coveralls.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/debug/.coveralls.yml rename to node_backend/node_modules/debug/.coveralls.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/debug/.eslintrc b/node_backend/node_modules/debug/.eslintrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/debug/.eslintrc rename to node_backend/node_modules/debug/.eslintrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/debug/.npmignore b/node_backend/node_modules/debug/.npmignore similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/debug/.npmignore rename to node_backend/node_modules/debug/.npmignore diff --git a/Inscripciones_UAIE/node_backend/node_modules/debug/.travis.yml b/node_backend/node_modules/debug/.travis.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/debug/.travis.yml rename to node_backend/node_modules/debug/.travis.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/debug/CHANGELOG.md b/node_backend/node_modules/debug/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/debug/CHANGELOG.md rename to node_backend/node_modules/debug/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/debug/LICENSE b/node_backend/node_modules/debug/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/debug/LICENSE rename to node_backend/node_modules/debug/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/debug/Makefile b/node_backend/node_modules/debug/Makefile similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/debug/Makefile rename to node_backend/node_modules/debug/Makefile diff --git a/Inscripciones_UAIE/node_backend/node_modules/debug/README.md b/node_backend/node_modules/debug/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/debug/README.md rename to node_backend/node_modules/debug/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/debug/component.json b/node_backend/node_modules/debug/component.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/debug/component.json rename to node_backend/node_modules/debug/component.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/debug/karma.conf.js b/node_backend/node_modules/debug/karma.conf.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/debug/karma.conf.js rename to node_backend/node_modules/debug/karma.conf.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/debug/node.js b/node_backend/node_modules/debug/node.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/debug/node.js rename to node_backend/node_modules/debug/node.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/debug/package.json b/node_backend/node_modules/debug/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/debug/package.json rename to node_backend/node_modules/debug/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/debug/src/browser.js b/node_backend/node_modules/debug/src/browser.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/debug/src/browser.js rename to node_backend/node_modules/debug/src/browser.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/debug/src/debug.js b/node_backend/node_modules/debug/src/debug.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/debug/src/debug.js rename to node_backend/node_modules/debug/src/debug.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/debug/src/index.js b/node_backend/node_modules/debug/src/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/debug/src/index.js rename to node_backend/node_modules/debug/src/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/debug/src/inspector-log.js b/node_backend/node_modules/debug/src/inspector-log.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/debug/src/inspector-log.js rename to node_backend/node_modules/debug/src/inspector-log.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/debug/src/node.js b/node_backend/node_modules/debug/src/node.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/debug/src/node.js rename to node_backend/node_modules/debug/src/node.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/define-data-property/.eslintrc b/node_backend/node_modules/define-data-property/.eslintrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/define-data-property/.eslintrc rename to node_backend/node_modules/define-data-property/.eslintrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/define-data-property/.github/FUNDING.yml b/node_backend/node_modules/define-data-property/.github/FUNDING.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/define-data-property/.github/FUNDING.yml rename to node_backend/node_modules/define-data-property/.github/FUNDING.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/define-data-property/.nycrc b/node_backend/node_modules/define-data-property/.nycrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/define-data-property/.nycrc rename to node_backend/node_modules/define-data-property/.nycrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/define-data-property/CHANGELOG.md b/node_backend/node_modules/define-data-property/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/define-data-property/CHANGELOG.md rename to node_backend/node_modules/define-data-property/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/define-data-property/LICENSE b/node_backend/node_modules/define-data-property/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/define-data-property/LICENSE rename to node_backend/node_modules/define-data-property/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/define-data-property/README.md b/node_backend/node_modules/define-data-property/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/define-data-property/README.md rename to node_backend/node_modules/define-data-property/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/define-data-property/index.d.ts b/node_backend/node_modules/define-data-property/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/define-data-property/index.d.ts rename to node_backend/node_modules/define-data-property/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/define-data-property/index.js b/node_backend/node_modules/define-data-property/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/define-data-property/index.js rename to node_backend/node_modules/define-data-property/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/define-data-property/package.json b/node_backend/node_modules/define-data-property/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/define-data-property/package.json rename to node_backend/node_modules/define-data-property/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/define-data-property/test/index.js b/node_backend/node_modules/define-data-property/test/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/define-data-property/test/index.js rename to node_backend/node_modules/define-data-property/test/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/define-data-property/tsconfig.json b/node_backend/node_modules/define-data-property/tsconfig.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/define-data-property/tsconfig.json rename to node_backend/node_modules/define-data-property/tsconfig.json diff --git a/node_backend/node_modules/delegates/.npmignore b/node_backend/node_modules/delegates/.npmignore new file mode 100644 index 00000000..c2658d7d --- /dev/null +++ b/node_backend/node_modules/delegates/.npmignore @@ -0,0 +1 @@ +node_modules/ diff --git a/Inscripciones_UAIE/node_backend/node_modules/delegates/History.md b/node_backend/node_modules/delegates/History.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/delegates/History.md rename to node_backend/node_modules/delegates/History.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/delegates/License b/node_backend/node_modules/delegates/License similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/delegates/License rename to node_backend/node_modules/delegates/License diff --git a/Inscripciones_UAIE/node_backend/node_modules/delegates/Makefile b/node_backend/node_modules/delegates/Makefile similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/delegates/Makefile rename to node_backend/node_modules/delegates/Makefile diff --git a/Inscripciones_UAIE/node_backend/node_modules/delegates/Readme.md b/node_backend/node_modules/delegates/Readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/delegates/Readme.md rename to node_backend/node_modules/delegates/Readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/delegates/index.js b/node_backend/node_modules/delegates/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/delegates/index.js rename to node_backend/node_modules/delegates/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/delegates/package.json b/node_backend/node_modules/delegates/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/delegates/package.json rename to node_backend/node_modules/delegates/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/delegates/test/index.js b/node_backend/node_modules/delegates/test/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/delegates/test/index.js rename to node_backend/node_modules/delegates/test/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/depd/History.md b/node_backend/node_modules/depd/History.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/depd/History.md rename to node_backend/node_modules/depd/History.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/depd/LICENSE b/node_backend/node_modules/depd/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/depd/LICENSE rename to node_backend/node_modules/depd/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/depd/Readme.md b/node_backend/node_modules/depd/Readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/depd/Readme.md rename to node_backend/node_modules/depd/Readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/depd/index.js b/node_backend/node_modules/depd/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/depd/index.js rename to node_backend/node_modules/depd/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/depd/lib/browser/index.js b/node_backend/node_modules/depd/lib/browser/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/depd/lib/browser/index.js rename to node_backend/node_modules/depd/lib/browser/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/depd/package.json b/node_backend/node_modules/depd/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/depd/package.json rename to node_backend/node_modules/depd/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/destroy/LICENSE b/node_backend/node_modules/destroy/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/destroy/LICENSE rename to node_backend/node_modules/destroy/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/destroy/README.md b/node_backend/node_modules/destroy/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/destroy/README.md rename to node_backend/node_modules/destroy/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/destroy/index.js b/node_backend/node_modules/destroy/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/destroy/index.js rename to node_backend/node_modules/destroy/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/destroy/package.json b/node_backend/node_modules/destroy/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/destroy/package.json rename to node_backend/node_modules/destroy/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/detect-libc/LICENSE b/node_backend/node_modules/detect-libc/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/detect-libc/LICENSE rename to node_backend/node_modules/detect-libc/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/detect-libc/README.md b/node_backend/node_modules/detect-libc/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/detect-libc/README.md rename to node_backend/node_modules/detect-libc/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/detect-libc/index.d.ts b/node_backend/node_modules/detect-libc/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/detect-libc/index.d.ts rename to node_backend/node_modules/detect-libc/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/detect-libc/lib/detect-libc.js b/node_backend/node_modules/detect-libc/lib/detect-libc.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/detect-libc/lib/detect-libc.js rename to node_backend/node_modules/detect-libc/lib/detect-libc.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/detect-libc/lib/filesystem.js b/node_backend/node_modules/detect-libc/lib/filesystem.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/detect-libc/lib/filesystem.js rename to node_backend/node_modules/detect-libc/lib/filesystem.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/detect-libc/lib/process.js b/node_backend/node_modules/detect-libc/lib/process.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/detect-libc/lib/process.js rename to node_backend/node_modules/detect-libc/lib/process.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/detect-libc/package.json b/node_backend/node_modules/detect-libc/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/detect-libc/package.json rename to node_backend/node_modules/detect-libc/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/dotenv/CHANGELOG.md b/node_backend/node_modules/dotenv/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/dotenv/CHANGELOG.md rename to node_backend/node_modules/dotenv/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/dotenv/LICENSE b/node_backend/node_modules/dotenv/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/dotenv/LICENSE rename to node_backend/node_modules/dotenv/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/dotenv/README-es.md b/node_backend/node_modules/dotenv/README-es.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/dotenv/README-es.md rename to node_backend/node_modules/dotenv/README-es.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/dotenv/README.md b/node_backend/node_modules/dotenv/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/dotenv/README.md rename to node_backend/node_modules/dotenv/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/dotenv/config.d.ts b/node_backend/node_modules/dotenv/config.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/dotenv/config.d.ts rename to node_backend/node_modules/dotenv/config.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/dotenv/config.js b/node_backend/node_modules/dotenv/config.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/dotenv/config.js rename to node_backend/node_modules/dotenv/config.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/dotenv/lib/cli-options.js b/node_backend/node_modules/dotenv/lib/cli-options.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/dotenv/lib/cli-options.js rename to node_backend/node_modules/dotenv/lib/cli-options.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/dotenv/lib/env-options.js b/node_backend/node_modules/dotenv/lib/env-options.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/dotenv/lib/env-options.js rename to node_backend/node_modules/dotenv/lib/env-options.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/dotenv/lib/main.d.ts b/node_backend/node_modules/dotenv/lib/main.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/dotenv/lib/main.d.ts rename to node_backend/node_modules/dotenv/lib/main.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/dotenv/lib/main.js b/node_backend/node_modules/dotenv/lib/main.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/dotenv/lib/main.js rename to node_backend/node_modules/dotenv/lib/main.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/dotenv/package.json b/node_backend/node_modules/dotenv/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/dotenv/package.json rename to node_backend/node_modules/dotenv/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/ecdsa-sig-formatter/CODEOWNERS b/node_backend/node_modules/ecdsa-sig-formatter/CODEOWNERS similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ecdsa-sig-formatter/CODEOWNERS rename to node_backend/node_modules/ecdsa-sig-formatter/CODEOWNERS diff --git a/Inscripciones_UAIE/node_backend/node_modules/ecdsa-sig-formatter/LICENSE b/node_backend/node_modules/ecdsa-sig-formatter/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ecdsa-sig-formatter/LICENSE rename to node_backend/node_modules/ecdsa-sig-formatter/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/ecdsa-sig-formatter/README.md b/node_backend/node_modules/ecdsa-sig-formatter/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ecdsa-sig-formatter/README.md rename to node_backend/node_modules/ecdsa-sig-formatter/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/ecdsa-sig-formatter/package.json b/node_backend/node_modules/ecdsa-sig-formatter/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ecdsa-sig-formatter/package.json rename to node_backend/node_modules/ecdsa-sig-formatter/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.d.ts b/node_backend/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.d.ts rename to node_backend/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js b/node_backend/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js rename to node_backend/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js b/node_backend/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js rename to node_backend/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/ee-first/LICENSE b/node_backend/node_modules/ee-first/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ee-first/LICENSE rename to node_backend/node_modules/ee-first/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/ee-first/README.md b/node_backend/node_modules/ee-first/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ee-first/README.md rename to node_backend/node_modules/ee-first/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/ee-first/index.js b/node_backend/node_modules/ee-first/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ee-first/index.js rename to node_backend/node_modules/ee-first/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/ee-first/package.json b/node_backend/node_modules/ee-first/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ee-first/package.json rename to node_backend/node_modules/ee-first/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/emoji-regex/LICENSE-MIT.txt b/node_backend/node_modules/emoji-regex/LICENSE-MIT.txt similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/emoji-regex/LICENSE-MIT.txt rename to node_backend/node_modules/emoji-regex/LICENSE-MIT.txt diff --git a/Inscripciones_UAIE/node_backend/node_modules/emoji-regex/README.md b/node_backend/node_modules/emoji-regex/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/emoji-regex/README.md rename to node_backend/node_modules/emoji-regex/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/emoji-regex/es2015/index.js b/node_backend/node_modules/emoji-regex/es2015/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/emoji-regex/es2015/index.js rename to node_backend/node_modules/emoji-regex/es2015/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/emoji-regex/es2015/text.js b/node_backend/node_modules/emoji-regex/es2015/text.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/emoji-regex/es2015/text.js rename to node_backend/node_modules/emoji-regex/es2015/text.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/emoji-regex/index.d.ts b/node_backend/node_modules/emoji-regex/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/emoji-regex/index.d.ts rename to node_backend/node_modules/emoji-regex/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/emoji-regex/index.js b/node_backend/node_modules/emoji-regex/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/emoji-regex/index.js rename to node_backend/node_modules/emoji-regex/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/emoji-regex/package.json b/node_backend/node_modules/emoji-regex/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/emoji-regex/package.json rename to node_backend/node_modules/emoji-regex/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/emoji-regex/text.js b/node_backend/node_modules/emoji-regex/text.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/emoji-regex/text.js rename to node_backend/node_modules/emoji-regex/text.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/encodeurl/LICENSE b/node_backend/node_modules/encodeurl/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/encodeurl/LICENSE rename to node_backend/node_modules/encodeurl/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/encodeurl/README.md b/node_backend/node_modules/encodeurl/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/encodeurl/README.md rename to node_backend/node_modules/encodeurl/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/encodeurl/index.js b/node_backend/node_modules/encodeurl/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/encodeurl/index.js rename to node_backend/node_modules/encodeurl/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/encodeurl/package.json b/node_backend/node_modules/encodeurl/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/encodeurl/package.json rename to node_backend/node_modules/encodeurl/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-define-property/.eslintrc b/node_backend/node_modules/es-define-property/.eslintrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-define-property/.eslintrc rename to node_backend/node_modules/es-define-property/.eslintrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-define-property/.github/FUNDING.yml b/node_backend/node_modules/es-define-property/.github/FUNDING.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-define-property/.github/FUNDING.yml rename to node_backend/node_modules/es-define-property/.github/FUNDING.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-define-property/.nycrc b/node_backend/node_modules/es-define-property/.nycrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-define-property/.nycrc rename to node_backend/node_modules/es-define-property/.nycrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-define-property/CHANGELOG.md b/node_backend/node_modules/es-define-property/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-define-property/CHANGELOG.md rename to node_backend/node_modules/es-define-property/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-define-property/LICENSE b/node_backend/node_modules/es-define-property/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-define-property/LICENSE rename to node_backend/node_modules/es-define-property/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-define-property/README.md b/node_backend/node_modules/es-define-property/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-define-property/README.md rename to node_backend/node_modules/es-define-property/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-define-property/index.d.ts b/node_backend/node_modules/es-define-property/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-define-property/index.d.ts rename to node_backend/node_modules/es-define-property/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-define-property/index.js b/node_backend/node_modules/es-define-property/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-define-property/index.js rename to node_backend/node_modules/es-define-property/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-define-property/package.json b/node_backend/node_modules/es-define-property/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-define-property/package.json rename to node_backend/node_modules/es-define-property/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-define-property/test/index.js b/node_backend/node_modules/es-define-property/test/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-define-property/test/index.js rename to node_backend/node_modules/es-define-property/test/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-define-property/tsconfig.json b/node_backend/node_modules/es-define-property/tsconfig.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-define-property/tsconfig.json rename to node_backend/node_modules/es-define-property/tsconfig.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/.eslintrc b/node_backend/node_modules/es-errors/.eslintrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/.eslintrc rename to node_backend/node_modules/es-errors/.eslintrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/.github/FUNDING.yml b/node_backend/node_modules/es-errors/.github/FUNDING.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/.github/FUNDING.yml rename to node_backend/node_modules/es-errors/.github/FUNDING.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/CHANGELOG.md b/node_backend/node_modules/es-errors/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/CHANGELOG.md rename to node_backend/node_modules/es-errors/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/LICENSE b/node_backend/node_modules/es-errors/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/LICENSE rename to node_backend/node_modules/es-errors/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/README.md b/node_backend/node_modules/es-errors/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/README.md rename to node_backend/node_modules/es-errors/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/eval.d.ts b/node_backend/node_modules/es-errors/eval.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/eval.d.ts rename to node_backend/node_modules/es-errors/eval.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/eval.js b/node_backend/node_modules/es-errors/eval.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/eval.js rename to node_backend/node_modules/es-errors/eval.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/index.d.ts b/node_backend/node_modules/es-errors/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/index.d.ts rename to node_backend/node_modules/es-errors/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/index.js b/node_backend/node_modules/es-errors/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/index.js rename to node_backend/node_modules/es-errors/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/package.json b/node_backend/node_modules/es-errors/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/package.json rename to node_backend/node_modules/es-errors/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/range.d.ts b/node_backend/node_modules/es-errors/range.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/range.d.ts rename to node_backend/node_modules/es-errors/range.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/range.js b/node_backend/node_modules/es-errors/range.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/range.js rename to node_backend/node_modules/es-errors/range.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/ref.d.ts b/node_backend/node_modules/es-errors/ref.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/ref.d.ts rename to node_backend/node_modules/es-errors/ref.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/ref.js b/node_backend/node_modules/es-errors/ref.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/ref.js rename to node_backend/node_modules/es-errors/ref.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/syntax.d.ts b/node_backend/node_modules/es-errors/syntax.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/syntax.d.ts rename to node_backend/node_modules/es-errors/syntax.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/syntax.js b/node_backend/node_modules/es-errors/syntax.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/syntax.js rename to node_backend/node_modules/es-errors/syntax.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/test/index.js b/node_backend/node_modules/es-errors/test/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/test/index.js rename to node_backend/node_modules/es-errors/test/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/tsconfig.json b/node_backend/node_modules/es-errors/tsconfig.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/tsconfig.json rename to node_backend/node_modules/es-errors/tsconfig.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/type.d.ts b/node_backend/node_modules/es-errors/type.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/type.d.ts rename to node_backend/node_modules/es-errors/type.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/type.js b/node_backend/node_modules/es-errors/type.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/type.js rename to node_backend/node_modules/es-errors/type.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/uri.d.ts b/node_backend/node_modules/es-errors/uri.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/uri.d.ts rename to node_backend/node_modules/es-errors/uri.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/es-errors/uri.js b/node_backend/node_modules/es-errors/uri.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/es-errors/uri.js rename to node_backend/node_modules/es-errors/uri.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/escape-html/LICENSE b/node_backend/node_modules/escape-html/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/escape-html/LICENSE rename to node_backend/node_modules/escape-html/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/escape-html/Readme.md b/node_backend/node_modules/escape-html/Readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/escape-html/Readme.md rename to node_backend/node_modules/escape-html/Readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/escape-html/index.js b/node_backend/node_modules/escape-html/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/escape-html/index.js rename to node_backend/node_modules/escape-html/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/escape-html/package.json b/node_backend/node_modules/escape-html/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/escape-html/package.json rename to node_backend/node_modules/escape-html/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/etag/HISTORY.md b/node_backend/node_modules/etag/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/etag/HISTORY.md rename to node_backend/node_modules/etag/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/etag/LICENSE b/node_backend/node_modules/etag/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/etag/LICENSE rename to node_backend/node_modules/etag/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/etag/README.md b/node_backend/node_modules/etag/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/etag/README.md rename to node_backend/node_modules/etag/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/etag/index.js b/node_backend/node_modules/etag/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/etag/index.js rename to node_backend/node_modules/etag/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/etag/package.json b/node_backend/node_modules/etag/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/etag/package.json rename to node_backend/node_modules/etag/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/express/History.md b/node_backend/node_modules/express/History.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/express/History.md rename to node_backend/node_modules/express/History.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/express/LICENSE b/node_backend/node_modules/express/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/express/LICENSE rename to node_backend/node_modules/express/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/express/Readme.md b/node_backend/node_modules/express/Readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/express/Readme.md rename to node_backend/node_modules/express/Readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/express/index.js b/node_backend/node_modules/express/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/express/index.js rename to node_backend/node_modules/express/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/express/lib/application.js b/node_backend/node_modules/express/lib/application.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/express/lib/application.js rename to node_backend/node_modules/express/lib/application.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/express/lib/express.js b/node_backend/node_modules/express/lib/express.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/express/lib/express.js rename to node_backend/node_modules/express/lib/express.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/express/lib/middleware/init.js b/node_backend/node_modules/express/lib/middleware/init.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/express/lib/middleware/init.js rename to node_backend/node_modules/express/lib/middleware/init.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/express/lib/middleware/query.js b/node_backend/node_modules/express/lib/middleware/query.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/express/lib/middleware/query.js rename to node_backend/node_modules/express/lib/middleware/query.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/express/lib/request.js b/node_backend/node_modules/express/lib/request.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/express/lib/request.js rename to node_backend/node_modules/express/lib/request.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/express/lib/response.js b/node_backend/node_modules/express/lib/response.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/express/lib/response.js rename to node_backend/node_modules/express/lib/response.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/express/lib/router/index.js b/node_backend/node_modules/express/lib/router/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/express/lib/router/index.js rename to node_backend/node_modules/express/lib/router/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/express/lib/router/layer.js b/node_backend/node_modules/express/lib/router/layer.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/express/lib/router/layer.js rename to node_backend/node_modules/express/lib/router/layer.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/express/lib/router/route.js b/node_backend/node_modules/express/lib/router/route.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/express/lib/router/route.js rename to node_backend/node_modules/express/lib/router/route.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/express/lib/utils.js b/node_backend/node_modules/express/lib/utils.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/express/lib/utils.js rename to node_backend/node_modules/express/lib/utils.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/express/lib/view.js b/node_backend/node_modules/express/lib/view.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/express/lib/view.js rename to node_backend/node_modules/express/lib/view.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/express/package.json b/node_backend/node_modules/express/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/express/package.json rename to node_backend/node_modules/express/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/finalhandler/HISTORY.md b/node_backend/node_modules/finalhandler/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/finalhandler/HISTORY.md rename to node_backend/node_modules/finalhandler/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/finalhandler/LICENSE b/node_backend/node_modules/finalhandler/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/finalhandler/LICENSE rename to node_backend/node_modules/finalhandler/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/finalhandler/README.md b/node_backend/node_modules/finalhandler/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/finalhandler/README.md rename to node_backend/node_modules/finalhandler/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/finalhandler/SECURITY.md b/node_backend/node_modules/finalhandler/SECURITY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/finalhandler/SECURITY.md rename to node_backend/node_modules/finalhandler/SECURITY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/finalhandler/index.js b/node_backend/node_modules/finalhandler/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/finalhandler/index.js rename to node_backend/node_modules/finalhandler/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/finalhandler/package.json b/node_backend/node_modules/finalhandler/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/finalhandler/package.json rename to node_backend/node_modules/finalhandler/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/forwarded/HISTORY.md b/node_backend/node_modules/forwarded/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/forwarded/HISTORY.md rename to node_backend/node_modules/forwarded/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/forwarded/LICENSE b/node_backend/node_modules/forwarded/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/forwarded/LICENSE rename to node_backend/node_modules/forwarded/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/forwarded/README.md b/node_backend/node_modules/forwarded/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/forwarded/README.md rename to node_backend/node_modules/forwarded/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/forwarded/index.js b/node_backend/node_modules/forwarded/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/forwarded/index.js rename to node_backend/node_modules/forwarded/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/forwarded/package.json b/node_backend/node_modules/forwarded/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/forwarded/package.json rename to node_backend/node_modules/forwarded/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/fresh/HISTORY.md b/node_backend/node_modules/fresh/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fresh/HISTORY.md rename to node_backend/node_modules/fresh/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/fresh/LICENSE b/node_backend/node_modules/fresh/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fresh/LICENSE rename to node_backend/node_modules/fresh/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/fresh/README.md b/node_backend/node_modules/fresh/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fresh/README.md rename to node_backend/node_modules/fresh/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/fresh/index.js b/node_backend/node_modules/fresh/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fresh/index.js rename to node_backend/node_modules/fresh/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/fresh/package.json b/node_backend/node_modules/fresh/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fresh/package.json rename to node_backend/node_modules/fresh/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/fs-minipass/LICENSE b/node_backend/node_modules/fs-minipass/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fs-minipass/LICENSE rename to node_backend/node_modules/fs-minipass/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/fs-minipass/README.md b/node_backend/node_modules/fs-minipass/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fs-minipass/README.md rename to node_backend/node_modules/fs-minipass/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/fs-minipass/index.js b/node_backend/node_modules/fs-minipass/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fs-minipass/index.js rename to node_backend/node_modules/fs-minipass/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/fs-minipass/node_modules/minipass/LICENSE b/node_backend/node_modules/fs-minipass/node_modules/minipass/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fs-minipass/node_modules/minipass/LICENSE rename to node_backend/node_modules/fs-minipass/node_modules/minipass/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/fs-minipass/node_modules/minipass/README.md b/node_backend/node_modules/fs-minipass/node_modules/minipass/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fs-minipass/node_modules/minipass/README.md rename to node_backend/node_modules/fs-minipass/node_modules/minipass/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/fs-minipass/node_modules/minipass/index.d.ts b/node_backend/node_modules/fs-minipass/node_modules/minipass/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fs-minipass/node_modules/minipass/index.d.ts rename to node_backend/node_modules/fs-minipass/node_modules/minipass/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/fs-minipass/node_modules/minipass/index.js b/node_backend/node_modules/fs-minipass/node_modules/minipass/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fs-minipass/node_modules/minipass/index.js rename to node_backend/node_modules/fs-minipass/node_modules/minipass/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/fs-minipass/node_modules/minipass/package.json b/node_backend/node_modules/fs-minipass/node_modules/minipass/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fs-minipass/node_modules/minipass/package.json rename to node_backend/node_modules/fs-minipass/node_modules/minipass/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/fs-minipass/package.json b/node_backend/node_modules/fs-minipass/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fs-minipass/package.json rename to node_backend/node_modules/fs-minipass/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/fs.realpath/LICENSE b/node_backend/node_modules/fs.realpath/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fs.realpath/LICENSE rename to node_backend/node_modules/fs.realpath/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/fs.realpath/README.md b/node_backend/node_modules/fs.realpath/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fs.realpath/README.md rename to node_backend/node_modules/fs.realpath/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/fs.realpath/index.js b/node_backend/node_modules/fs.realpath/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fs.realpath/index.js rename to node_backend/node_modules/fs.realpath/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/fs.realpath/old.js b/node_backend/node_modules/fs.realpath/old.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fs.realpath/old.js rename to node_backend/node_modules/fs.realpath/old.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/fs.realpath/package.json b/node_backend/node_modules/fs.realpath/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/fs.realpath/package.json rename to node_backend/node_modules/fs.realpath/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/function-bind/.eslintrc b/node_backend/node_modules/function-bind/.eslintrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/function-bind/.eslintrc rename to node_backend/node_modules/function-bind/.eslintrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/function-bind/.github/FUNDING.yml b/node_backend/node_modules/function-bind/.github/FUNDING.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/function-bind/.github/FUNDING.yml rename to node_backend/node_modules/function-bind/.github/FUNDING.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/function-bind/.github/SECURITY.md b/node_backend/node_modules/function-bind/.github/SECURITY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/function-bind/.github/SECURITY.md rename to node_backend/node_modules/function-bind/.github/SECURITY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/function-bind/.nycrc b/node_backend/node_modules/function-bind/.nycrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/function-bind/.nycrc rename to node_backend/node_modules/function-bind/.nycrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/function-bind/CHANGELOG.md b/node_backend/node_modules/function-bind/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/function-bind/CHANGELOG.md rename to node_backend/node_modules/function-bind/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/function-bind/LICENSE b/node_backend/node_modules/function-bind/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/function-bind/LICENSE rename to node_backend/node_modules/function-bind/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/function-bind/README.md b/node_backend/node_modules/function-bind/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/function-bind/README.md rename to node_backend/node_modules/function-bind/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/function-bind/implementation.js b/node_backend/node_modules/function-bind/implementation.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/function-bind/implementation.js rename to node_backend/node_modules/function-bind/implementation.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/function-bind/index.js b/node_backend/node_modules/function-bind/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/function-bind/index.js rename to node_backend/node_modules/function-bind/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/function-bind/package.json b/node_backend/node_modules/function-bind/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/function-bind/package.json rename to node_backend/node_modules/function-bind/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/function-bind/test/.eslintrc b/node_backend/node_modules/function-bind/test/.eslintrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/function-bind/test/.eslintrc rename to node_backend/node_modules/function-bind/test/.eslintrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/function-bind/test/index.js b/node_backend/node_modules/function-bind/test/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/function-bind/test/index.js rename to node_backend/node_modules/function-bind/test/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/CHANGELOG.md b/node_backend/node_modules/gauge/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/CHANGELOG.md rename to node_backend/node_modules/gauge/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/LICENSE b/node_backend/node_modules/gauge/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/LICENSE rename to node_backend/node_modules/gauge/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/README.md b/node_backend/node_modules/gauge/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/README.md rename to node_backend/node_modules/gauge/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/base-theme.js b/node_backend/node_modules/gauge/base-theme.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/base-theme.js rename to node_backend/node_modules/gauge/base-theme.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/error.js b/node_backend/node_modules/gauge/error.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/error.js rename to node_backend/node_modules/gauge/error.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/has-color.js b/node_backend/node_modules/gauge/has-color.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/has-color.js rename to node_backend/node_modules/gauge/has-color.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/index.js b/node_backend/node_modules/gauge/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/index.js rename to node_backend/node_modules/gauge/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/package.json b/node_backend/node_modules/gauge/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/package.json rename to node_backend/node_modules/gauge/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/plumbing.js b/node_backend/node_modules/gauge/plumbing.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/plumbing.js rename to node_backend/node_modules/gauge/plumbing.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/process.js b/node_backend/node_modules/gauge/process.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/process.js rename to node_backend/node_modules/gauge/process.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/progress-bar.js b/node_backend/node_modules/gauge/progress-bar.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/progress-bar.js rename to node_backend/node_modules/gauge/progress-bar.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/render-template.js b/node_backend/node_modules/gauge/render-template.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/render-template.js rename to node_backend/node_modules/gauge/render-template.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/set-immediate.js b/node_backend/node_modules/gauge/set-immediate.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/set-immediate.js rename to node_backend/node_modules/gauge/set-immediate.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/set-interval.js b/node_backend/node_modules/gauge/set-interval.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/set-interval.js rename to node_backend/node_modules/gauge/set-interval.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/spin.js b/node_backend/node_modules/gauge/spin.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/spin.js rename to node_backend/node_modules/gauge/spin.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/template-item.js b/node_backend/node_modules/gauge/template-item.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/template-item.js rename to node_backend/node_modules/gauge/template-item.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/theme-set.js b/node_backend/node_modules/gauge/theme-set.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/theme-set.js rename to node_backend/node_modules/gauge/theme-set.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/themes.js b/node_backend/node_modules/gauge/themes.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/themes.js rename to node_backend/node_modules/gauge/themes.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/gauge/wide-truncate.js b/node_backend/node_modules/gauge/wide-truncate.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gauge/wide-truncate.js rename to node_backend/node_modules/gauge/wide-truncate.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/get-intrinsic/.eslintrc b/node_backend/node_modules/get-intrinsic/.eslintrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/get-intrinsic/.eslintrc rename to node_backend/node_modules/get-intrinsic/.eslintrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/get-intrinsic/.github/FUNDING.yml b/node_backend/node_modules/get-intrinsic/.github/FUNDING.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/get-intrinsic/.github/FUNDING.yml rename to node_backend/node_modules/get-intrinsic/.github/FUNDING.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/get-intrinsic/.nycrc b/node_backend/node_modules/get-intrinsic/.nycrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/get-intrinsic/.nycrc rename to node_backend/node_modules/get-intrinsic/.nycrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/get-intrinsic/CHANGELOG.md b/node_backend/node_modules/get-intrinsic/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/get-intrinsic/CHANGELOG.md rename to node_backend/node_modules/get-intrinsic/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/get-intrinsic/LICENSE b/node_backend/node_modules/get-intrinsic/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/get-intrinsic/LICENSE rename to node_backend/node_modules/get-intrinsic/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/get-intrinsic/README.md b/node_backend/node_modules/get-intrinsic/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/get-intrinsic/README.md rename to node_backend/node_modules/get-intrinsic/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/get-intrinsic/index.js b/node_backend/node_modules/get-intrinsic/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/get-intrinsic/index.js rename to node_backend/node_modules/get-intrinsic/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/get-intrinsic/package.json b/node_backend/node_modules/get-intrinsic/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/get-intrinsic/package.json rename to node_backend/node_modules/get-intrinsic/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/get-intrinsic/test/GetIntrinsic.js b/node_backend/node_modules/get-intrinsic/test/GetIntrinsic.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/get-intrinsic/test/GetIntrinsic.js rename to node_backend/node_modules/get-intrinsic/test/GetIntrinsic.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/glob/LICENSE b/node_backend/node_modules/glob/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/glob/LICENSE rename to node_backend/node_modules/glob/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/glob/README.md b/node_backend/node_modules/glob/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/glob/README.md rename to node_backend/node_modules/glob/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/glob/common.js b/node_backend/node_modules/glob/common.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/glob/common.js rename to node_backend/node_modules/glob/common.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/glob/glob.js b/node_backend/node_modules/glob/glob.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/glob/glob.js rename to node_backend/node_modules/glob/glob.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/glob/package.json b/node_backend/node_modules/glob/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/glob/package.json rename to node_backend/node_modules/glob/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/glob/sync.js b/node_backend/node_modules/glob/sync.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/glob/sync.js rename to node_backend/node_modules/glob/sync.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/gopd/.eslintrc b/node_backend/node_modules/gopd/.eslintrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gopd/.eslintrc rename to node_backend/node_modules/gopd/.eslintrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/gopd/.github/FUNDING.yml b/node_backend/node_modules/gopd/.github/FUNDING.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gopd/.github/FUNDING.yml rename to node_backend/node_modules/gopd/.github/FUNDING.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/gopd/CHANGELOG.md b/node_backend/node_modules/gopd/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gopd/CHANGELOG.md rename to node_backend/node_modules/gopd/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/gopd/LICENSE b/node_backend/node_modules/gopd/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gopd/LICENSE rename to node_backend/node_modules/gopd/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/gopd/README.md b/node_backend/node_modules/gopd/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gopd/README.md rename to node_backend/node_modules/gopd/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/gopd/index.js b/node_backend/node_modules/gopd/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gopd/index.js rename to node_backend/node_modules/gopd/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/gopd/package.json b/node_backend/node_modules/gopd/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gopd/package.json rename to node_backend/node_modules/gopd/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/gopd/test/index.js b/node_backend/node_modules/gopd/test/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/gopd/test/index.js rename to node_backend/node_modules/gopd/test/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-property-descriptors/.eslintrc b/node_backend/node_modules/has-property-descriptors/.eslintrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-property-descriptors/.eslintrc rename to node_backend/node_modules/has-property-descriptors/.eslintrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-property-descriptors/.github/FUNDING.yml b/node_backend/node_modules/has-property-descriptors/.github/FUNDING.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-property-descriptors/.github/FUNDING.yml rename to node_backend/node_modules/has-property-descriptors/.github/FUNDING.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-property-descriptors/.nycrc b/node_backend/node_modules/has-property-descriptors/.nycrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-property-descriptors/.nycrc rename to node_backend/node_modules/has-property-descriptors/.nycrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-property-descriptors/CHANGELOG.md b/node_backend/node_modules/has-property-descriptors/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-property-descriptors/CHANGELOG.md rename to node_backend/node_modules/has-property-descriptors/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-property-descriptors/LICENSE b/node_backend/node_modules/has-property-descriptors/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-property-descriptors/LICENSE rename to node_backend/node_modules/has-property-descriptors/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-property-descriptors/README.md b/node_backend/node_modules/has-property-descriptors/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-property-descriptors/README.md rename to node_backend/node_modules/has-property-descriptors/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-property-descriptors/index.js b/node_backend/node_modules/has-property-descriptors/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-property-descriptors/index.js rename to node_backend/node_modules/has-property-descriptors/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-property-descriptors/package.json b/node_backend/node_modules/has-property-descriptors/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-property-descriptors/package.json rename to node_backend/node_modules/has-property-descriptors/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-property-descriptors/test/index.js b/node_backend/node_modules/has-property-descriptors/test/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-property-descriptors/test/index.js rename to node_backend/node_modules/has-property-descriptors/test/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-proto/.eslintrc b/node_backend/node_modules/has-proto/.eslintrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-proto/.eslintrc rename to node_backend/node_modules/has-proto/.eslintrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-proto/.github/FUNDING.yml b/node_backend/node_modules/has-proto/.github/FUNDING.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-proto/.github/FUNDING.yml rename to node_backend/node_modules/has-proto/.github/FUNDING.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-proto/CHANGELOG.md b/node_backend/node_modules/has-proto/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-proto/CHANGELOG.md rename to node_backend/node_modules/has-proto/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-proto/LICENSE b/node_backend/node_modules/has-proto/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-proto/LICENSE rename to node_backend/node_modules/has-proto/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-proto/README.md b/node_backend/node_modules/has-proto/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-proto/README.md rename to node_backend/node_modules/has-proto/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-proto/index.d.ts b/node_backend/node_modules/has-proto/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-proto/index.d.ts rename to node_backend/node_modules/has-proto/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-proto/index.js b/node_backend/node_modules/has-proto/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-proto/index.js rename to node_backend/node_modules/has-proto/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-proto/package.json b/node_backend/node_modules/has-proto/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-proto/package.json rename to node_backend/node_modules/has-proto/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-proto/test/index.js b/node_backend/node_modules/has-proto/test/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-proto/test/index.js rename to node_backend/node_modules/has-proto/test/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-proto/tsconfig.json b/node_backend/node_modules/has-proto/tsconfig.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-proto/tsconfig.json rename to node_backend/node_modules/has-proto/tsconfig.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-symbols/.eslintrc b/node_backend/node_modules/has-symbols/.eslintrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-symbols/.eslintrc rename to node_backend/node_modules/has-symbols/.eslintrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-symbols/.github/FUNDING.yml b/node_backend/node_modules/has-symbols/.github/FUNDING.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-symbols/.github/FUNDING.yml rename to node_backend/node_modules/has-symbols/.github/FUNDING.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-symbols/.nycrc b/node_backend/node_modules/has-symbols/.nycrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-symbols/.nycrc rename to node_backend/node_modules/has-symbols/.nycrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-symbols/CHANGELOG.md b/node_backend/node_modules/has-symbols/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-symbols/CHANGELOG.md rename to node_backend/node_modules/has-symbols/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-symbols/LICENSE b/node_backend/node_modules/has-symbols/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-symbols/LICENSE rename to node_backend/node_modules/has-symbols/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-symbols/README.md b/node_backend/node_modules/has-symbols/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-symbols/README.md rename to node_backend/node_modules/has-symbols/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-symbols/index.js b/node_backend/node_modules/has-symbols/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-symbols/index.js rename to node_backend/node_modules/has-symbols/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-symbols/package.json b/node_backend/node_modules/has-symbols/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-symbols/package.json rename to node_backend/node_modules/has-symbols/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-symbols/shams.js b/node_backend/node_modules/has-symbols/shams.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-symbols/shams.js rename to node_backend/node_modules/has-symbols/shams.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-symbols/test/index.js b/node_backend/node_modules/has-symbols/test/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-symbols/test/index.js rename to node_backend/node_modules/has-symbols/test/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-symbols/test/shams/core-js.js b/node_backend/node_modules/has-symbols/test/shams/core-js.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-symbols/test/shams/core-js.js rename to node_backend/node_modules/has-symbols/test/shams/core-js.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-symbols/test/shams/get-own-property-symbols.js b/node_backend/node_modules/has-symbols/test/shams/get-own-property-symbols.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-symbols/test/shams/get-own-property-symbols.js rename to node_backend/node_modules/has-symbols/test/shams/get-own-property-symbols.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-symbols/test/tests.js b/node_backend/node_modules/has-symbols/test/tests.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-symbols/test/tests.js rename to node_backend/node_modules/has-symbols/test/tests.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-unicode/LICENSE b/node_backend/node_modules/has-unicode/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-unicode/LICENSE rename to node_backend/node_modules/has-unicode/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-unicode/README.md b/node_backend/node_modules/has-unicode/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-unicode/README.md rename to node_backend/node_modules/has-unicode/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-unicode/index.js b/node_backend/node_modules/has-unicode/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-unicode/index.js rename to node_backend/node_modules/has-unicode/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/has-unicode/package.json b/node_backend/node_modules/has-unicode/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/has-unicode/package.json rename to node_backend/node_modules/has-unicode/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/hasown/.eslintrc b/node_backend/node_modules/hasown/.eslintrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/hasown/.eslintrc rename to node_backend/node_modules/hasown/.eslintrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/hasown/.github/FUNDING.yml b/node_backend/node_modules/hasown/.github/FUNDING.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/hasown/.github/FUNDING.yml rename to node_backend/node_modules/hasown/.github/FUNDING.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/hasown/.nycrc b/node_backend/node_modules/hasown/.nycrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/hasown/.nycrc rename to node_backend/node_modules/hasown/.nycrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/hasown/CHANGELOG.md b/node_backend/node_modules/hasown/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/hasown/CHANGELOG.md rename to node_backend/node_modules/hasown/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/hasown/LICENSE b/node_backend/node_modules/hasown/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/hasown/LICENSE rename to node_backend/node_modules/hasown/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/hasown/README.md b/node_backend/node_modules/hasown/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/hasown/README.md rename to node_backend/node_modules/hasown/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/hasown/index.d.ts b/node_backend/node_modules/hasown/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/hasown/index.d.ts rename to node_backend/node_modules/hasown/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/hasown/index.js b/node_backend/node_modules/hasown/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/hasown/index.js rename to node_backend/node_modules/hasown/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/hasown/package.json b/node_backend/node_modules/hasown/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/hasown/package.json rename to node_backend/node_modules/hasown/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/hasown/tsconfig.json b/node_backend/node_modules/hasown/tsconfig.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/hasown/tsconfig.json rename to node_backend/node_modules/hasown/tsconfig.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/http-errors/HISTORY.md b/node_backend/node_modules/http-errors/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/http-errors/HISTORY.md rename to node_backend/node_modules/http-errors/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/http-errors/LICENSE b/node_backend/node_modules/http-errors/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/http-errors/LICENSE rename to node_backend/node_modules/http-errors/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/http-errors/README.md b/node_backend/node_modules/http-errors/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/http-errors/README.md rename to node_backend/node_modules/http-errors/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/http-errors/index.js b/node_backend/node_modules/http-errors/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/http-errors/index.js rename to node_backend/node_modules/http-errors/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/http-errors/package.json b/node_backend/node_modules/http-errors/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/http-errors/package.json rename to node_backend/node_modules/http-errors/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/README.md b/node_backend/node_modules/https-proxy-agent/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/README.md rename to node_backend/node_modules/https-proxy-agent/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/dist/agent.d.ts b/node_backend/node_modules/https-proxy-agent/dist/agent.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/dist/agent.d.ts rename to node_backend/node_modules/https-proxy-agent/dist/agent.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/dist/agent.js b/node_backend/node_modules/https-proxy-agent/dist/agent.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/dist/agent.js rename to node_backend/node_modules/https-proxy-agent/dist/agent.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/dist/agent.js.map b/node_backend/node_modules/https-proxy-agent/dist/agent.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/dist/agent.js.map rename to node_backend/node_modules/https-proxy-agent/dist/agent.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/dist/index.d.ts b/node_backend/node_modules/https-proxy-agent/dist/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/dist/index.d.ts rename to node_backend/node_modules/https-proxy-agent/dist/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/dist/index.js b/node_backend/node_modules/https-proxy-agent/dist/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/dist/index.js rename to node_backend/node_modules/https-proxy-agent/dist/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/dist/index.js.map b/node_backend/node_modules/https-proxy-agent/dist/index.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/dist/index.js.map rename to node_backend/node_modules/https-proxy-agent/dist/index.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts b/node_backend/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts rename to node_backend/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/dist/parse-proxy-response.js b/node_backend/node_modules/https-proxy-agent/dist/parse-proxy-response.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/dist/parse-proxy-response.js rename to node_backend/node_modules/https-proxy-agent/dist/parse-proxy-response.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map b/node_backend/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map rename to node_backend/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/debug/LICENSE b/node_backend/node_modules/https-proxy-agent/node_modules/debug/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/debug/LICENSE rename to node_backend/node_modules/https-proxy-agent/node_modules/debug/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/debug/README.md b/node_backend/node_modules/https-proxy-agent/node_modules/debug/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/debug/README.md rename to node_backend/node_modules/https-proxy-agent/node_modules/debug/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/debug/package.json b/node_backend/node_modules/https-proxy-agent/node_modules/debug/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/debug/package.json rename to node_backend/node_modules/https-proxy-agent/node_modules/debug/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/debug/src/browser.js b/node_backend/node_modules/https-proxy-agent/node_modules/debug/src/browser.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/debug/src/browser.js rename to node_backend/node_modules/https-proxy-agent/node_modules/debug/src/browser.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/debug/src/common.js b/node_backend/node_modules/https-proxy-agent/node_modules/debug/src/common.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/debug/src/common.js rename to node_backend/node_modules/https-proxy-agent/node_modules/debug/src/common.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/debug/src/index.js b/node_backend/node_modules/https-proxy-agent/node_modules/debug/src/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/debug/src/index.js rename to node_backend/node_modules/https-proxy-agent/node_modules/debug/src/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/debug/src/node.js b/node_backend/node_modules/https-proxy-agent/node_modules/debug/src/node.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/debug/src/node.js rename to node_backend/node_modules/https-proxy-agent/node_modules/debug/src/node.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/ms/index.js b/node_backend/node_modules/https-proxy-agent/node_modules/ms/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/ms/index.js rename to node_backend/node_modules/https-proxy-agent/node_modules/ms/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/ms/license.md b/node_backend/node_modules/https-proxy-agent/node_modules/ms/license.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/ms/license.md rename to node_backend/node_modules/https-proxy-agent/node_modules/ms/license.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/ms/package.json b/node_backend/node_modules/https-proxy-agent/node_modules/ms/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/ms/package.json rename to node_backend/node_modules/https-proxy-agent/node_modules/ms/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/ms/readme.md b/node_backend/node_modules/https-proxy-agent/node_modules/ms/readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/node_modules/ms/readme.md rename to node_backend/node_modules/https-proxy-agent/node_modules/ms/readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/package.json b/node_backend/node_modules/https-proxy-agent/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/https-proxy-agent/package.json rename to node_backend/node_modules/https-proxy-agent/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/Changelog.md b/node_backend/node_modules/iconv-lite/Changelog.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/Changelog.md rename to node_backend/node_modules/iconv-lite/Changelog.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/LICENSE b/node_backend/node_modules/iconv-lite/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/LICENSE rename to node_backend/node_modules/iconv-lite/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/README.md b/node_backend/node_modules/iconv-lite/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/README.md rename to node_backend/node_modules/iconv-lite/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/dbcs-codec.js b/node_backend/node_modules/iconv-lite/encodings/dbcs-codec.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/dbcs-codec.js rename to node_backend/node_modules/iconv-lite/encodings/dbcs-codec.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/dbcs-data.js b/node_backend/node_modules/iconv-lite/encodings/dbcs-data.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/dbcs-data.js rename to node_backend/node_modules/iconv-lite/encodings/dbcs-data.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/index.js b/node_backend/node_modules/iconv-lite/encodings/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/index.js rename to node_backend/node_modules/iconv-lite/encodings/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/internal.js b/node_backend/node_modules/iconv-lite/encodings/internal.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/internal.js rename to node_backend/node_modules/iconv-lite/encodings/internal.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/sbcs-codec.js b/node_backend/node_modules/iconv-lite/encodings/sbcs-codec.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/sbcs-codec.js rename to node_backend/node_modules/iconv-lite/encodings/sbcs-codec.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/sbcs-data-generated.js b/node_backend/node_modules/iconv-lite/encodings/sbcs-data-generated.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/sbcs-data-generated.js rename to node_backend/node_modules/iconv-lite/encodings/sbcs-data-generated.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/sbcs-data.js b/node_backend/node_modules/iconv-lite/encodings/sbcs-data.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/sbcs-data.js rename to node_backend/node_modules/iconv-lite/encodings/sbcs-data.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/tables/big5-added.json b/node_backend/node_modules/iconv-lite/encodings/tables/big5-added.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/tables/big5-added.json rename to node_backend/node_modules/iconv-lite/encodings/tables/big5-added.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/tables/cp936.json b/node_backend/node_modules/iconv-lite/encodings/tables/cp936.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/tables/cp936.json rename to node_backend/node_modules/iconv-lite/encodings/tables/cp936.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/tables/cp949.json b/node_backend/node_modules/iconv-lite/encodings/tables/cp949.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/tables/cp949.json rename to node_backend/node_modules/iconv-lite/encodings/tables/cp949.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/tables/cp950.json b/node_backend/node_modules/iconv-lite/encodings/tables/cp950.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/tables/cp950.json rename to node_backend/node_modules/iconv-lite/encodings/tables/cp950.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/tables/eucjp.json b/node_backend/node_modules/iconv-lite/encodings/tables/eucjp.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/tables/eucjp.json rename to node_backend/node_modules/iconv-lite/encodings/tables/eucjp.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json b/node_backend/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json rename to node_backend/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/tables/gbk-added.json b/node_backend/node_modules/iconv-lite/encodings/tables/gbk-added.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/tables/gbk-added.json rename to node_backend/node_modules/iconv-lite/encodings/tables/gbk-added.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/tables/shiftjis.json b/node_backend/node_modules/iconv-lite/encodings/tables/shiftjis.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/tables/shiftjis.json rename to node_backend/node_modules/iconv-lite/encodings/tables/shiftjis.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/utf16.js b/node_backend/node_modules/iconv-lite/encodings/utf16.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/utf16.js rename to node_backend/node_modules/iconv-lite/encodings/utf16.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/utf7.js b/node_backend/node_modules/iconv-lite/encodings/utf7.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/encodings/utf7.js rename to node_backend/node_modules/iconv-lite/encodings/utf7.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/lib/bom-handling.js b/node_backend/node_modules/iconv-lite/lib/bom-handling.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/lib/bom-handling.js rename to node_backend/node_modules/iconv-lite/lib/bom-handling.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/lib/extend-node.js b/node_backend/node_modules/iconv-lite/lib/extend-node.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/lib/extend-node.js rename to node_backend/node_modules/iconv-lite/lib/extend-node.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/lib/index.d.ts b/node_backend/node_modules/iconv-lite/lib/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/lib/index.d.ts rename to node_backend/node_modules/iconv-lite/lib/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/lib/index.js b/node_backend/node_modules/iconv-lite/lib/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/lib/index.js rename to node_backend/node_modules/iconv-lite/lib/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/lib/streams.js b/node_backend/node_modules/iconv-lite/lib/streams.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/lib/streams.js rename to node_backend/node_modules/iconv-lite/lib/streams.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/iconv-lite/package.json b/node_backend/node_modules/iconv-lite/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/iconv-lite/package.json rename to node_backend/node_modules/iconv-lite/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/inflight/LICENSE b/node_backend/node_modules/inflight/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/inflight/LICENSE rename to node_backend/node_modules/inflight/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/inflight/README.md b/node_backend/node_modules/inflight/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/inflight/README.md rename to node_backend/node_modules/inflight/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/inflight/inflight.js b/node_backend/node_modules/inflight/inflight.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/inflight/inflight.js rename to node_backend/node_modules/inflight/inflight.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/inflight/package.json b/node_backend/node_modules/inflight/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/inflight/package.json rename to node_backend/node_modules/inflight/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/inherits/LICENSE b/node_backend/node_modules/inherits/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/inherits/LICENSE rename to node_backend/node_modules/inherits/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/inherits/README.md b/node_backend/node_modules/inherits/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/inherits/README.md rename to node_backend/node_modules/inherits/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/inherits/inherits.js b/node_backend/node_modules/inherits/inherits.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/inherits/inherits.js rename to node_backend/node_modules/inherits/inherits.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/inherits/inherits_browser.js b/node_backend/node_modules/inherits/inherits_browser.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/inherits/inherits_browser.js rename to node_backend/node_modules/inherits/inherits_browser.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/inherits/package.json b/node_backend/node_modules/inherits/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/inherits/package.json rename to node_backend/node_modules/inherits/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/ipaddr.js/LICENSE b/node_backend/node_modules/ipaddr.js/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ipaddr.js/LICENSE rename to node_backend/node_modules/ipaddr.js/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/ipaddr.js/README.md b/node_backend/node_modules/ipaddr.js/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ipaddr.js/README.md rename to node_backend/node_modules/ipaddr.js/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/ipaddr.js/ipaddr.min.js b/node_backend/node_modules/ipaddr.js/ipaddr.min.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ipaddr.js/ipaddr.min.js rename to node_backend/node_modules/ipaddr.js/ipaddr.min.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/ipaddr.js/lib/ipaddr.js b/node_backend/node_modules/ipaddr.js/lib/ipaddr.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ipaddr.js/lib/ipaddr.js rename to node_backend/node_modules/ipaddr.js/lib/ipaddr.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/ipaddr.js/lib/ipaddr.js.d.ts b/node_backend/node_modules/ipaddr.js/lib/ipaddr.js.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ipaddr.js/lib/ipaddr.js.d.ts rename to node_backend/node_modules/ipaddr.js/lib/ipaddr.js.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/ipaddr.js/package.json b/node_backend/node_modules/ipaddr.js/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ipaddr.js/package.json rename to node_backend/node_modules/ipaddr.js/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/is-fullwidth-code-point/index.d.ts b/node_backend/node_modules/is-fullwidth-code-point/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/is-fullwidth-code-point/index.d.ts rename to node_backend/node_modules/is-fullwidth-code-point/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/is-fullwidth-code-point/index.js b/node_backend/node_modules/is-fullwidth-code-point/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/is-fullwidth-code-point/index.js rename to node_backend/node_modules/is-fullwidth-code-point/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/is-fullwidth-code-point/license b/node_backend/node_modules/is-fullwidth-code-point/license similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/is-fullwidth-code-point/license rename to node_backend/node_modules/is-fullwidth-code-point/license diff --git a/Inscripciones_UAIE/node_backend/node_modules/is-fullwidth-code-point/package.json b/node_backend/node_modules/is-fullwidth-code-point/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/is-fullwidth-code-point/package.json rename to node_backend/node_modules/is-fullwidth-code-point/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/is-fullwidth-code-point/readme.md b/node_backend/node_modules/is-fullwidth-code-point/readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/is-fullwidth-code-point/readme.md rename to node_backend/node_modules/is-fullwidth-code-point/readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/sparse-bitfield/.npmignore b/node_backend/node_modules/isarray/.npmignore similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sparse-bitfield/.npmignore rename to node_backend/node_modules/isarray/.npmignore diff --git a/node_backend/node_modules/isarray/.travis.yml b/node_backend/node_modules/isarray/.travis.yml new file mode 100644 index 00000000..cc4dba29 --- /dev/null +++ b/node_backend/node_modules/isarray/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - "0.8" + - "0.10" diff --git a/node_backend/node_modules/isarray/Makefile b/node_backend/node_modules/isarray/Makefile new file mode 100644 index 00000000..787d56e1 --- /dev/null +++ b/node_backend/node_modules/isarray/Makefile @@ -0,0 +1,6 @@ + +test: + @node_modules/.bin/tape test.js + +.PHONY: test + diff --git a/node_backend/node_modules/isarray/README.md b/node_backend/node_modules/isarray/README.md new file mode 100644 index 00000000..16d2c59c --- /dev/null +++ b/node_backend/node_modules/isarray/README.md @@ -0,0 +1,60 @@ + +# isarray + +`Array#isArray` for older browsers. + +[![build status](https://secure.travis-ci.org/juliangruber/isarray.svg)](http://travis-ci.org/juliangruber/isarray) +[![downloads](https://img.shields.io/npm/dm/isarray.svg)](https://www.npmjs.org/package/isarray) + +[![browser support](https://ci.testling.com/juliangruber/isarray.png) +](https://ci.testling.com/juliangruber/isarray) + +## Usage + +```js +var isArray = require('isarray'); + +console.log(isArray([])); // => true +console.log(isArray({})); // => false +``` + +## Installation + +With [npm](http://npmjs.org) do + +```bash +$ npm install isarray +``` + +Then bundle for the browser with +[browserify](https://github.com/substack/browserify). + +With [component](http://component.io) do + +```bash +$ component install juliangruber/isarray +``` + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_backend/node_modules/isarray/component.json b/node_backend/node_modules/isarray/component.json new file mode 100644 index 00000000..9e31b683 --- /dev/null +++ b/node_backend/node_modules/isarray/component.json @@ -0,0 +1,19 @@ +{ + "name" : "isarray", + "description" : "Array#isArray for older browsers", + "version" : "0.0.1", + "repository" : "juliangruber/isarray", + "homepage": "https://github.com/juliangruber/isarray", + "main" : "index.js", + "scripts" : [ + "index.js" + ], + "dependencies" : {}, + "keywords": ["browser","isarray","array"], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT" +} diff --git a/node_backend/node_modules/isarray/index.js b/node_backend/node_modules/isarray/index.js new file mode 100644 index 00000000..a57f6349 --- /dev/null +++ b/node_backend/node_modules/isarray/index.js @@ -0,0 +1,5 @@ +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; diff --git a/node_backend/node_modules/isarray/package.json b/node_backend/node_modules/isarray/package.json new file mode 100644 index 00000000..1a4317a9 --- /dev/null +++ b/node_backend/node_modules/isarray/package.json @@ -0,0 +1,45 @@ +{ + "name": "isarray", + "description": "Array#isArray for older browsers", + "version": "1.0.0", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/isarray.git" + }, + "homepage": "https://github.com/juliangruber/isarray", + "main": "index.js", + "dependencies": {}, + "devDependencies": { + "tape": "~2.13.4" + }, + "keywords": [ + "browser", + "isarray", + "array" + ], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT", + "testling": { + "files": "test.js", + "browsers": [ + "ie/8..latest", + "firefox/17..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + }, + "scripts": { + "test": "tape test.js" + } +} diff --git a/node_backend/node_modules/isarray/test.js b/node_backend/node_modules/isarray/test.js new file mode 100644 index 00000000..e0c3444d --- /dev/null +++ b/node_backend/node_modules/isarray/test.js @@ -0,0 +1,20 @@ +var isArray = require('./'); +var test = require('tape'); + +test('is array', function(t){ + t.ok(isArray([])); + t.notOk(isArray({})); + t.notOk(isArray(null)); + t.notOk(isArray(false)); + + var obj = {}; + obj[0] = true; + t.notOk(isArray(obj)); + + var arr = []; + arr.foo = 'bar'; + t.ok(isArray(arr)); + + t.end(); +}); + diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/LICENSE b/node_backend/node_modules/jsonwebtoken/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/LICENSE rename to node_backend/node_modules/jsonwebtoken/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/README.md b/node_backend/node_modules/jsonwebtoken/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/README.md rename to node_backend/node_modules/jsonwebtoken/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/decode.js b/node_backend/node_modules/jsonwebtoken/decode.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/decode.js rename to node_backend/node_modules/jsonwebtoken/decode.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/index.js b/node_backend/node_modules/jsonwebtoken/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/index.js rename to node_backend/node_modules/jsonwebtoken/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/lib/JsonWebTokenError.js b/node_backend/node_modules/jsonwebtoken/lib/JsonWebTokenError.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/lib/JsonWebTokenError.js rename to node_backend/node_modules/jsonwebtoken/lib/JsonWebTokenError.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/lib/NotBeforeError.js b/node_backend/node_modules/jsonwebtoken/lib/NotBeforeError.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/lib/NotBeforeError.js rename to node_backend/node_modules/jsonwebtoken/lib/NotBeforeError.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/lib/TokenExpiredError.js b/node_backend/node_modules/jsonwebtoken/lib/TokenExpiredError.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/lib/TokenExpiredError.js rename to node_backend/node_modules/jsonwebtoken/lib/TokenExpiredError.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js b/node_backend/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js rename to node_backend/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/lib/psSupported.js b/node_backend/node_modules/jsonwebtoken/lib/psSupported.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/lib/psSupported.js rename to node_backend/node_modules/jsonwebtoken/lib/psSupported.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js b/node_backend/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js rename to node_backend/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/lib/timespan.js b/node_backend/node_modules/jsonwebtoken/lib/timespan.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/lib/timespan.js rename to node_backend/node_modules/jsonwebtoken/lib/timespan.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js b/node_backend/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js rename to node_backend/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/node_modules/ms/index.js b/node_backend/node_modules/jsonwebtoken/node_modules/ms/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/node_modules/ms/index.js rename to node_backend/node_modules/jsonwebtoken/node_modules/ms/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/node_modules/ms/license.md b/node_backend/node_modules/jsonwebtoken/node_modules/ms/license.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/node_modules/ms/license.md rename to node_backend/node_modules/jsonwebtoken/node_modules/ms/license.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/node_modules/ms/package.json b/node_backend/node_modules/jsonwebtoken/node_modules/ms/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/node_modules/ms/package.json rename to node_backend/node_modules/jsonwebtoken/node_modules/ms/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/node_modules/ms/readme.md b/node_backend/node_modules/jsonwebtoken/node_modules/ms/readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/node_modules/ms/readme.md rename to node_backend/node_modules/jsonwebtoken/node_modules/ms/readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/package.json b/node_backend/node_modules/jsonwebtoken/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/package.json rename to node_backend/node_modules/jsonwebtoken/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/sign.js b/node_backend/node_modules/jsonwebtoken/sign.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/sign.js rename to node_backend/node_modules/jsonwebtoken/sign.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/verify.js b/node_backend/node_modules/jsonwebtoken/verify.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jsonwebtoken/verify.js rename to node_backend/node_modules/jsonwebtoken/verify.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jwa/LICENSE b/node_backend/node_modules/jwa/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jwa/LICENSE rename to node_backend/node_modules/jwa/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/jwa/README.md b/node_backend/node_modules/jwa/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jwa/README.md rename to node_backend/node_modules/jwa/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/jwa/index.js b/node_backend/node_modules/jwa/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jwa/index.js rename to node_backend/node_modules/jwa/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jwa/package.json b/node_backend/node_modules/jwa/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jwa/package.json rename to node_backend/node_modules/jwa/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/jws/CHANGELOG.md b/node_backend/node_modules/jws/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jws/CHANGELOG.md rename to node_backend/node_modules/jws/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/jws/LICENSE b/node_backend/node_modules/jws/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jws/LICENSE rename to node_backend/node_modules/jws/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/jws/index.js b/node_backend/node_modules/jws/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jws/index.js rename to node_backend/node_modules/jws/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jws/lib/data-stream.js b/node_backend/node_modules/jws/lib/data-stream.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jws/lib/data-stream.js rename to node_backend/node_modules/jws/lib/data-stream.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jws/lib/sign-stream.js b/node_backend/node_modules/jws/lib/sign-stream.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jws/lib/sign-stream.js rename to node_backend/node_modules/jws/lib/sign-stream.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jws/lib/tostring.js b/node_backend/node_modules/jws/lib/tostring.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jws/lib/tostring.js rename to node_backend/node_modules/jws/lib/tostring.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jws/lib/verify-stream.js b/node_backend/node_modules/jws/lib/verify-stream.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jws/lib/verify-stream.js rename to node_backend/node_modules/jws/lib/verify-stream.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/jws/package.json b/node_backend/node_modules/jws/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jws/package.json rename to node_backend/node_modules/jws/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/jws/readme.md b/node_backend/node_modules/jws/readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/jws/readme.md rename to node_backend/node_modules/jws/readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/kareem/CHANGELOG.md b/node_backend/node_modules/kareem/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/kareem/CHANGELOG.md rename to node_backend/node_modules/kareem/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/kareem/LICENSE b/node_backend/node_modules/kareem/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/kareem/LICENSE rename to node_backend/node_modules/kareem/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/kareem/README.md b/node_backend/node_modules/kareem/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/kareem/README.md rename to node_backend/node_modules/kareem/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/kareem/SECURITY.md b/node_backend/node_modules/kareem/SECURITY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/kareem/SECURITY.md rename to node_backend/node_modules/kareem/SECURITY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/kareem/index.d.ts b/node_backend/node_modules/kareem/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/kareem/index.d.ts rename to node_backend/node_modules/kareem/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/kareem/index.js b/node_backend/node_modules/kareem/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/kareem/index.js rename to node_backend/node_modules/kareem/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/kareem/package.json b/node_backend/node_modules/kareem/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/kareem/package.json rename to node_backend/node_modules/kareem/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.includes/LICENSE b/node_backend/node_modules/lodash.includes/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.includes/LICENSE rename to node_backend/node_modules/lodash.includes/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.includes/README.md b/node_backend/node_modules/lodash.includes/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.includes/README.md rename to node_backend/node_modules/lodash.includes/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.includes/index.js b/node_backend/node_modules/lodash.includes/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.includes/index.js rename to node_backend/node_modules/lodash.includes/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.includes/package.json b/node_backend/node_modules/lodash.includes/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.includes/package.json rename to node_backend/node_modules/lodash.includes/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isboolean/LICENSE b/node_backend/node_modules/lodash.isboolean/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isboolean/LICENSE rename to node_backend/node_modules/lodash.isboolean/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isboolean/README.md b/node_backend/node_modules/lodash.isboolean/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isboolean/README.md rename to node_backend/node_modules/lodash.isboolean/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isboolean/index.js b/node_backend/node_modules/lodash.isboolean/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isboolean/index.js rename to node_backend/node_modules/lodash.isboolean/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isboolean/package.json b/node_backend/node_modules/lodash.isboolean/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isboolean/package.json rename to node_backend/node_modules/lodash.isboolean/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isinteger/LICENSE b/node_backend/node_modules/lodash.isinteger/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isinteger/LICENSE rename to node_backend/node_modules/lodash.isinteger/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isinteger/README.md b/node_backend/node_modules/lodash.isinteger/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isinteger/README.md rename to node_backend/node_modules/lodash.isinteger/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isinteger/index.js b/node_backend/node_modules/lodash.isinteger/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isinteger/index.js rename to node_backend/node_modules/lodash.isinteger/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isinteger/package.json b/node_backend/node_modules/lodash.isinteger/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isinteger/package.json rename to node_backend/node_modules/lodash.isinteger/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isnumber/LICENSE b/node_backend/node_modules/lodash.isnumber/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isnumber/LICENSE rename to node_backend/node_modules/lodash.isnumber/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isnumber/README.md b/node_backend/node_modules/lodash.isnumber/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isnumber/README.md rename to node_backend/node_modules/lodash.isnumber/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isnumber/index.js b/node_backend/node_modules/lodash.isnumber/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isnumber/index.js rename to node_backend/node_modules/lodash.isnumber/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isnumber/package.json b/node_backend/node_modules/lodash.isnumber/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isnumber/package.json rename to node_backend/node_modules/lodash.isnumber/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isplainobject/LICENSE b/node_backend/node_modules/lodash.isplainobject/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isplainobject/LICENSE rename to node_backend/node_modules/lodash.isplainobject/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isplainobject/README.md b/node_backend/node_modules/lodash.isplainobject/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isplainobject/README.md rename to node_backend/node_modules/lodash.isplainobject/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isplainobject/index.js b/node_backend/node_modules/lodash.isplainobject/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isplainobject/index.js rename to node_backend/node_modules/lodash.isplainobject/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isplainobject/package.json b/node_backend/node_modules/lodash.isplainobject/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isplainobject/package.json rename to node_backend/node_modules/lodash.isplainobject/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isstring/LICENSE b/node_backend/node_modules/lodash.isstring/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isstring/LICENSE rename to node_backend/node_modules/lodash.isstring/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isstring/README.md b/node_backend/node_modules/lodash.isstring/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isstring/README.md rename to node_backend/node_modules/lodash.isstring/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isstring/index.js b/node_backend/node_modules/lodash.isstring/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isstring/index.js rename to node_backend/node_modules/lodash.isstring/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.isstring/package.json b/node_backend/node_modules/lodash.isstring/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.isstring/package.json rename to node_backend/node_modules/lodash.isstring/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.once/LICENSE b/node_backend/node_modules/lodash.once/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.once/LICENSE rename to node_backend/node_modules/lodash.once/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.once/README.md b/node_backend/node_modules/lodash.once/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.once/README.md rename to node_backend/node_modules/lodash.once/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.once/index.js b/node_backend/node_modules/lodash.once/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.once/index.js rename to node_backend/node_modules/lodash.once/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/lodash.once/package.json b/node_backend/node_modules/lodash.once/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/lodash.once/package.json rename to node_backend/node_modules/lodash.once/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/make-dir/index.d.ts b/node_backend/node_modules/make-dir/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/make-dir/index.d.ts rename to node_backend/node_modules/make-dir/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/make-dir/index.js b/node_backend/node_modules/make-dir/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/make-dir/index.js rename to node_backend/node_modules/make-dir/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/make-dir/license b/node_backend/node_modules/make-dir/license similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/make-dir/license rename to node_backend/node_modules/make-dir/license diff --git a/Inscripciones_UAIE/node_backend/node_modules/make-dir/node_modules/.bin/semver b/node_backend/node_modules/make-dir/node_modules/.bin/semver similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/make-dir/node_modules/.bin/semver rename to node_backend/node_modules/make-dir/node_modules/.bin/semver diff --git a/Inscripciones_UAIE/node_backend/node_modules/make-dir/node_modules/.bin/semver.cmd b/node_backend/node_modules/make-dir/node_modules/.bin/semver.cmd similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/make-dir/node_modules/.bin/semver.cmd rename to node_backend/node_modules/make-dir/node_modules/.bin/semver.cmd diff --git a/Inscripciones_UAIE/node_backend/node_modules/make-dir/node_modules/.bin/semver.ps1 b/node_backend/node_modules/make-dir/node_modules/.bin/semver.ps1 similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/make-dir/node_modules/.bin/semver.ps1 rename to node_backend/node_modules/make-dir/node_modules/.bin/semver.ps1 diff --git a/Inscripciones_UAIE/node_backend/node_modules/make-dir/node_modules/semver/LICENSE b/node_backend/node_modules/make-dir/node_modules/semver/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/make-dir/node_modules/semver/LICENSE rename to node_backend/node_modules/make-dir/node_modules/semver/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/make-dir/node_modules/semver/README.md b/node_backend/node_modules/make-dir/node_modules/semver/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/make-dir/node_modules/semver/README.md rename to node_backend/node_modules/make-dir/node_modules/semver/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/make-dir/node_modules/semver/bin/semver.js b/node_backend/node_modules/make-dir/node_modules/semver/bin/semver.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/make-dir/node_modules/semver/bin/semver.js rename to node_backend/node_modules/make-dir/node_modules/semver/bin/semver.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/make-dir/node_modules/semver/package.json b/node_backend/node_modules/make-dir/node_modules/semver/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/make-dir/node_modules/semver/package.json rename to node_backend/node_modules/make-dir/node_modules/semver/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/make-dir/node_modules/semver/range.bnf b/node_backend/node_modules/make-dir/node_modules/semver/range.bnf similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/make-dir/node_modules/semver/range.bnf rename to node_backend/node_modules/make-dir/node_modules/semver/range.bnf diff --git a/Inscripciones_UAIE/node_backend/node_modules/make-dir/node_modules/semver/semver.js b/node_backend/node_modules/make-dir/node_modules/semver/semver.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/make-dir/node_modules/semver/semver.js rename to node_backend/node_modules/make-dir/node_modules/semver/semver.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/make-dir/package.json b/node_backend/node_modules/make-dir/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/make-dir/package.json rename to node_backend/node_modules/make-dir/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/make-dir/readme.md b/node_backend/node_modules/make-dir/readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/make-dir/readme.md rename to node_backend/node_modules/make-dir/readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/media-typer/HISTORY.md b/node_backend/node_modules/media-typer/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/media-typer/HISTORY.md rename to node_backend/node_modules/media-typer/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/media-typer/LICENSE b/node_backend/node_modules/media-typer/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/media-typer/LICENSE rename to node_backend/node_modules/media-typer/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/media-typer/README.md b/node_backend/node_modules/media-typer/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/media-typer/README.md rename to node_backend/node_modules/media-typer/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/media-typer/index.js b/node_backend/node_modules/media-typer/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/media-typer/index.js rename to node_backend/node_modules/media-typer/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/media-typer/package.json b/node_backend/node_modules/media-typer/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/media-typer/package.json rename to node_backend/node_modules/media-typer/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/memory-pager/.travis.yml b/node_backend/node_modules/memory-pager/.travis.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/memory-pager/.travis.yml rename to node_backend/node_modules/memory-pager/.travis.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/memory-pager/LICENSE b/node_backend/node_modules/memory-pager/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/memory-pager/LICENSE rename to node_backend/node_modules/memory-pager/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/memory-pager/README.md b/node_backend/node_modules/memory-pager/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/memory-pager/README.md rename to node_backend/node_modules/memory-pager/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/memory-pager/index.js b/node_backend/node_modules/memory-pager/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/memory-pager/index.js rename to node_backend/node_modules/memory-pager/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/memory-pager/package.json b/node_backend/node_modules/memory-pager/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/memory-pager/package.json rename to node_backend/node_modules/memory-pager/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/memory-pager/test.js b/node_backend/node_modules/memory-pager/test.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/memory-pager/test.js rename to node_backend/node_modules/memory-pager/test.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/merge-descriptors/HISTORY.md b/node_backend/node_modules/merge-descriptors/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/merge-descriptors/HISTORY.md rename to node_backend/node_modules/merge-descriptors/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/merge-descriptors/LICENSE b/node_backend/node_modules/merge-descriptors/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/merge-descriptors/LICENSE rename to node_backend/node_modules/merge-descriptors/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/merge-descriptors/README.md b/node_backend/node_modules/merge-descriptors/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/merge-descriptors/README.md rename to node_backend/node_modules/merge-descriptors/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/merge-descriptors/index.js b/node_backend/node_modules/merge-descriptors/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/merge-descriptors/index.js rename to node_backend/node_modules/merge-descriptors/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/merge-descriptors/package.json b/node_backend/node_modules/merge-descriptors/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/merge-descriptors/package.json rename to node_backend/node_modules/merge-descriptors/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/methods/HISTORY.md b/node_backend/node_modules/methods/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/methods/HISTORY.md rename to node_backend/node_modules/methods/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/methods/LICENSE b/node_backend/node_modules/methods/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/methods/LICENSE rename to node_backend/node_modules/methods/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/methods/README.md b/node_backend/node_modules/methods/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/methods/README.md rename to node_backend/node_modules/methods/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/methods/index.js b/node_backend/node_modules/methods/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/methods/index.js rename to node_backend/node_modules/methods/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/methods/package.json b/node_backend/node_modules/methods/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/methods/package.json rename to node_backend/node_modules/methods/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime-db/HISTORY.md b/node_backend/node_modules/mime-db/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime-db/HISTORY.md rename to node_backend/node_modules/mime-db/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime-db/LICENSE b/node_backend/node_modules/mime-db/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime-db/LICENSE rename to node_backend/node_modules/mime-db/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime-db/README.md b/node_backend/node_modules/mime-db/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime-db/README.md rename to node_backend/node_modules/mime-db/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime-db/db.json b/node_backend/node_modules/mime-db/db.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime-db/db.json rename to node_backend/node_modules/mime-db/db.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime-db/index.js b/node_backend/node_modules/mime-db/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime-db/index.js rename to node_backend/node_modules/mime-db/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime-db/package.json b/node_backend/node_modules/mime-db/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime-db/package.json rename to node_backend/node_modules/mime-db/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime-types/HISTORY.md b/node_backend/node_modules/mime-types/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime-types/HISTORY.md rename to node_backend/node_modules/mime-types/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime-types/LICENSE b/node_backend/node_modules/mime-types/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime-types/LICENSE rename to node_backend/node_modules/mime-types/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime-types/README.md b/node_backend/node_modules/mime-types/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime-types/README.md rename to node_backend/node_modules/mime-types/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime-types/index.js b/node_backend/node_modules/mime-types/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime-types/index.js rename to node_backend/node_modules/mime-types/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime-types/package.json b/node_backend/node_modules/mime-types/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime-types/package.json rename to node_backend/node_modules/mime-types/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime/.npmignore b/node_backend/node_modules/mime/.npmignore similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime/.npmignore rename to node_backend/node_modules/mime/.npmignore diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime/CHANGELOG.md b/node_backend/node_modules/mime/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime/CHANGELOG.md rename to node_backend/node_modules/mime/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime/LICENSE b/node_backend/node_modules/mime/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime/LICENSE rename to node_backend/node_modules/mime/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime/README.md b/node_backend/node_modules/mime/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime/README.md rename to node_backend/node_modules/mime/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime/cli.js b/node_backend/node_modules/mime/cli.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime/cli.js rename to node_backend/node_modules/mime/cli.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime/mime.js b/node_backend/node_modules/mime/mime.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime/mime.js rename to node_backend/node_modules/mime/mime.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime/package.json b/node_backend/node_modules/mime/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime/package.json rename to node_backend/node_modules/mime/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime/src/build.js b/node_backend/node_modules/mime/src/build.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime/src/build.js rename to node_backend/node_modules/mime/src/build.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime/src/test.js b/node_backend/node_modules/mime/src/test.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime/src/test.js rename to node_backend/node_modules/mime/src/test.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mime/types.json b/node_backend/node_modules/mime/types.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mime/types.json rename to node_backend/node_modules/mime/types.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/minimatch/LICENSE b/node_backend/node_modules/minimatch/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minimatch/LICENSE rename to node_backend/node_modules/minimatch/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/minimatch/README.md b/node_backend/node_modules/minimatch/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minimatch/README.md rename to node_backend/node_modules/minimatch/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/minimatch/minimatch.js b/node_backend/node_modules/minimatch/minimatch.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minimatch/minimatch.js rename to node_backend/node_modules/minimatch/minimatch.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/minimatch/package.json b/node_backend/node_modules/minimatch/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minimatch/package.json rename to node_backend/node_modules/minimatch/package.json diff --git a/node_backend/node_modules/minimist/.eslintrc b/node_backend/node_modules/minimist/.eslintrc new file mode 100644 index 00000000..bd1a5e04 --- /dev/null +++ b/node_backend/node_modules/minimist/.eslintrc @@ -0,0 +1,29 @@ +{ + "root": true, + + "extends": "@ljharb/eslint-config/node/0.4", + + "rules": { + "array-element-newline": 0, + "complexity": 0, + "func-style": [2, "declaration"], + "max-lines-per-function": 0, + "max-nested-callbacks": 1, + "max-statements-per-line": 1, + "max-statements": 0, + "multiline-comment-style": 0, + "no-continue": 1, + "no-param-reassign": 1, + "no-restricted-syntax": 1, + "object-curly-newline": 0, + }, + + "overrides": [ + { + "files": "test/**", + "rules": { + "camelcase": 0, + }, + }, + ] +} diff --git a/node_backend/node_modules/minimist/.github/FUNDING.yml b/node_backend/node_modules/minimist/.github/FUNDING.yml new file mode 100644 index 00000000..a9366222 --- /dev/null +++ b/node_backend/node_modules/minimist/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/minimist +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_backend/node_modules/minimist/.nycrc b/node_backend/node_modules/minimist/.nycrc new file mode 100644 index 00000000..55c3d293 --- /dev/null +++ b/node_backend/node_modules/minimist/.nycrc @@ -0,0 +1,14 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "example", + "test" + ] +} diff --git a/node_backend/node_modules/minimist/CHANGELOG.md b/node_backend/node_modules/minimist/CHANGELOG.md new file mode 100644 index 00000000..c9a1e15e --- /dev/null +++ b/node_backend/node_modules/minimist/CHANGELOG.md @@ -0,0 +1,298 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.2.8](https://github.com/minimistjs/minimist/compare/v1.2.7...v1.2.8) - 2023-02-09 + +### Merged + +- [Fix] Fix long option followed by single dash [`#17`](https://github.com/minimistjs/minimist/pull/17) +- [Tests] Remove duplicate test [`#12`](https://github.com/minimistjs/minimist/pull/12) +- [Fix] opt.string works with multiple aliases [`#10`](https://github.com/minimistjs/minimist/pull/10) + +### Fixed + +- [Fix] Fix long option followed by single dash (#17) [`#15`](https://github.com/minimistjs/minimist/issues/15) +- [Tests] Remove duplicate test (#12) [`#8`](https://github.com/minimistjs/minimist/issues/8) +- [Fix] Fix long option followed by single dash [`#15`](https://github.com/minimistjs/minimist/issues/15) +- [Fix] opt.string works with multiple aliases (#10) [`#9`](https://github.com/minimistjs/minimist/issues/9) +- [Fix] Fix handling of short option with non-trivial equals [`#5`](https://github.com/minimistjs/minimist/issues/5) +- [Tests] Remove duplicate test [`#8`](https://github.com/minimistjs/minimist/issues/8) +- [Fix] opt.string works with multiple aliases [`#9`](https://github.com/minimistjs/minimist/issues/9) + +### Commits + +- Merge tag 'v0.2.3' [`a026794`](https://github.com/minimistjs/minimist/commit/a0267947c7870fc5847cf2d437fbe33f392767da) +- [eslint] fix indentation and whitespace [`5368ca4`](https://github.com/minimistjs/minimist/commit/5368ca4147e974138a54cc0dc4cea8f756546b70) +- [eslint] fix indentation and whitespace [`e5f5067`](https://github.com/minimistjs/minimist/commit/e5f5067259ceeaf0b098d14bec910f87e58708c7) +- [eslint] more cleanup [`62fde7d`](https://github.com/minimistjs/minimist/commit/62fde7d935f83417fb046741531a9e2346a36976) +- [eslint] more cleanup [`36ac5d0`](https://github.com/minimistjs/minimist/commit/36ac5d0d95e4947d074e5737d94814034ca335d1) +- [meta] add `auto-changelog` [`73923d2`](https://github.com/minimistjs/minimist/commit/73923d223553fca08b1ba77e3fbc2a492862ae4c) +- [actions] add reusable workflows [`d80727d`](https://github.com/minimistjs/minimist/commit/d80727df77bfa9e631044d7f16368d8f09242c91) +- [eslint] add eslint; rules to enable later are warnings [`48bc06a`](https://github.com/minimistjs/minimist/commit/48bc06a1b41f00e9cdf183db34f7a51ba70e98d4) +- [eslint] fix indentation [`34b0f1c`](https://github.com/minimistjs/minimist/commit/34b0f1ccaa45183c3c4f06a91f9b405180a6f982) +- [readme] rename and add badges [`5df0fe4`](https://github.com/minimistjs/minimist/commit/5df0fe49211bd09a3636f8686a7cb3012c3e98f0) +- [Dev Deps] switch from `covert` to `nyc` [`a48b128`](https://github.com/minimistjs/minimist/commit/a48b128fdb8d427dfb20a15273f83e38d97bef07) +- [Dev Deps] update `covert`, `tape`; remove unnecessary `tap` [`f0fb958`](https://github.com/minimistjs/minimist/commit/f0fb958e9a1fe980cdffc436a211b0bda58f621b) +- [meta] create FUNDING.yml; add `funding` in package.json [`3639e0c`](https://github.com/minimistjs/minimist/commit/3639e0c819359a366387e425ab6eabf4c78d3caa) +- [meta] use `npmignore` to autogenerate an npmignore file [`be2e038`](https://github.com/minimistjs/minimist/commit/be2e038c342d8333b32f0fde67a0026b79c8150e) +- Only apps should have lockfiles [`282b570`](https://github.com/minimistjs/minimist/commit/282b570e7489d01b03f2d6d3dabf79cd3e5f84cf) +- isConstructorOrProto adapted from PR [`ef9153f`](https://github.com/minimistjs/minimist/commit/ef9153fc52b6cea0744b2239921c5dcae4697f11) +- [Dev Deps] update `@ljharb/eslint-config`, `aud` [`098873c`](https://github.com/minimistjs/minimist/commit/098873c213cdb7c92e55ae1ef5aa1af3a8192a79) +- [Dev Deps] update `@ljharb/eslint-config`, `aud` [`3124ed3`](https://github.com/minimistjs/minimist/commit/3124ed3e46306301ebb3c834874ce0241555c2c4) +- [meta] add `safe-publish-latest` [`4b927de`](https://github.com/minimistjs/minimist/commit/4b927de696d561c636b4f43bf49d4597cb36d6d6) +- [Tests] add `aud` in `posttest` [`b32d9bd`](https://github.com/minimistjs/minimist/commit/b32d9bd0ab340f4e9f8c3a97ff2a4424f25fab8c) +- [meta] update repo URLs [`f9fdfc0`](https://github.com/minimistjs/minimist/commit/f9fdfc032c54884d9a9996a390c63cd0719bbe1a) +- [actions] Avoid 0.6 tests due to build failures [`ba92fe6`](https://github.com/minimistjs/minimist/commit/ba92fe6ebbdc0431cca9a2ea8f27beb492f5e4ec) +- [Dev Deps] update `tape` [`950eaa7`](https://github.com/minimistjs/minimist/commit/950eaa74f112e04d23e9c606c67472c46739b473) +- [Dev Deps] add missing `npmignore` dev dep [`3226afa`](https://github.com/minimistjs/minimist/commit/3226afaf09e9d127ca369742437fe6e88f752d6b) +- Merge tag 'v0.2.2' [`980d7ac`](https://github.com/minimistjs/minimist/commit/980d7ac61a0b4bd552711251ac107d506b23e41f) + +## [v1.2.7](https://github.com/minimistjs/minimist/compare/v1.2.6...v1.2.7) - 2022-10-10 + +### Commits + +- [meta] add `auto-changelog` [`0ebf4eb`](https://github.com/minimistjs/minimist/commit/0ebf4ebcd5f7787a5524d31a849ef41316b83c3c) +- [actions] add reusable workflows [`e115b63`](https://github.com/minimistjs/minimist/commit/e115b63fa9d3909f33b00a2db647ff79068388de) +- [eslint] add eslint; rules to enable later are warnings [`f58745b`](https://github.com/minimistjs/minimist/commit/f58745b9bb84348e1be72af7dbba5840c7c13013) +- [Dev Deps] switch from `covert` to `nyc` [`ab03356`](https://github.com/minimistjs/minimist/commit/ab033567b9c8b31117cb026dc7f1e592ce455c65) +- [readme] rename and add badges [`236f4a0`](https://github.com/minimistjs/minimist/commit/236f4a07e4ebe5ee44f1496ec6974991ab293ffd) +- [meta] create FUNDING.yml; add `funding` in package.json [`783a49b`](https://github.com/minimistjs/minimist/commit/783a49bfd47e8335d3098a8cac75662cf71eb32a) +- [meta] use `npmignore` to autogenerate an npmignore file [`f81ece6`](https://github.com/minimistjs/minimist/commit/f81ece6aaec2fa14e69ff4f1e0407a8c4e2635a2) +- Only apps should have lockfiles [`56cad44`](https://github.com/minimistjs/minimist/commit/56cad44c7f879b9bb5ec18fcc349308024a89bfc) +- [Dev Deps] update `covert`, `tape`; remove unnecessary `tap` [`49c5f9f`](https://github.com/minimistjs/minimist/commit/49c5f9fb7e6a92db9eb340cc679de92fb3aacded) +- [Tests] add `aud` in `posttest` [`228ae93`](https://github.com/minimistjs/minimist/commit/228ae938f3cd9db9dfd8bd7458b076a7b2aef280) +- [meta] add `safe-publish-latest` [`01fc23f`](https://github.com/minimistjs/minimist/commit/01fc23f5104f85c75059972e01dd33796ab529ff) +- [meta] update repo URLs [`6b164c7`](https://github.com/minimistjs/minimist/commit/6b164c7d68e0b6bf32f894699effdfb7c63041dd) + +## [v1.2.6](https://github.com/minimistjs/minimist/compare/v1.2.5...v1.2.6) - 2022-03-21 + +### Commits + +- test from prototype pollution PR [`bc8ecee`](https://github.com/minimistjs/minimist/commit/bc8ecee43875261f4f17eb20b1243d3ed15e70eb) +- isConstructorOrProto adapted from PR [`c2b9819`](https://github.com/minimistjs/minimist/commit/c2b981977fa834b223b408cfb860f933c9811e4d) +- security notice for additional prototype pollution issue [`ef88b93`](https://github.com/minimistjs/minimist/commit/ef88b9325f77b5ee643ccfc97e2ebda577e4c4e2) + +## [v1.2.5](https://github.com/minimistjs/minimist/compare/v1.2.4...v1.2.5) - 2020-03-12 + +## [v1.2.4](https://github.com/minimistjs/minimist/compare/v1.2.3...v1.2.4) - 2020-03-11 + +### Commits + +- security notice [`4cf1354`](https://github.com/minimistjs/minimist/commit/4cf1354839cb972e38496d35e12f806eea92c11f) +- additional test for constructor prototype pollution [`1043d21`](https://github.com/minimistjs/minimist/commit/1043d212c3caaf871966e710f52cfdf02f9eea4b) + +## [v1.2.3](https://github.com/minimistjs/minimist/compare/v1.2.2...v1.2.3) - 2020-03-10 + +### Commits + +- more failing proto pollution tests [`13c01a5`](https://github.com/minimistjs/minimist/commit/13c01a5327736903704984b7f65616b8476850cc) +- even more aggressive checks for protocol pollution [`38a4d1c`](https://github.com/minimistjs/minimist/commit/38a4d1caead72ef99e824bb420a2528eec03d9ab) + +## [v1.2.2](https://github.com/minimistjs/minimist/compare/v1.2.1...v1.2.2) - 2020-03-10 + +### Commits + +- failing test for protocol pollution [`0efed03`](https://github.com/minimistjs/minimist/commit/0efed0340ec8433638758f7ca0c77cb20a0bfbab) +- cleanup [`67d3722`](https://github.com/minimistjs/minimist/commit/67d3722413448d00a62963d2d30c34656a92d7e2) +- console.dir -> console.log [`47acf72`](https://github.com/minimistjs/minimist/commit/47acf72c715a630bf9ea013867f47f1dd69dfc54) +- don't assign onto __proto__ [`63e7ed0`](https://github.com/minimistjs/minimist/commit/63e7ed05aa4b1889ec2f3b196426db4500cbda94) + +## [v1.2.1](https://github.com/minimistjs/minimist/compare/v1.2.0...v1.2.1) - 2020-03-10 + +### Merged + +- move the `opts['--']` example back where it belongs [`#63`](https://github.com/minimistjs/minimist/pull/63) + +### Commits + +- add test [`6be5dae`](https://github.com/minimistjs/minimist/commit/6be5dae35a32a987bcf4137fcd6c19c5200ee909) +- fix bad boolean regexp [`ac3fc79`](https://github.com/minimistjs/minimist/commit/ac3fc796e63b95128fdbdf67ea7fad71bd59aa76) + +## [v1.2.0](https://github.com/minimistjs/minimist/compare/v1.1.3...v1.2.0) - 2015-08-24 + +### Commits + +- failing -k=v short test [`63416b8`](https://github.com/minimistjs/minimist/commit/63416b8cd1d0d70e4714564cce465a36e4dd26d7) +- kv short fix [`6bbe145`](https://github.com/minimistjs/minimist/commit/6bbe14529166245e86424f220a2321442fe88dc3) +- failing kv short test [`f72ab7f`](https://github.com/minimistjs/minimist/commit/f72ab7f4572adc52902c9b6873cc969192f01b10) +- fixed kv test [`f5a48c3`](https://github.com/minimistjs/minimist/commit/f5a48c3e50e40ca54f00c8e84de4b4d6e9897fa8) +- enforce space between arg key and value [`86b321a`](https://github.com/minimistjs/minimist/commit/86b321affe648a8e016c095a4f0efa9d9074f502) + +## [v1.1.3](https://github.com/minimistjs/minimist/compare/v1.1.2...v1.1.3) - 2015-08-06 + +### Commits + +- add failing test - boolean alias array [`0fa3c5b`](https://github.com/minimistjs/minimist/commit/0fa3c5b3dd98551ddecf5392831b4c21211743fc) +- fix boolean values with multiple aliases [`9c0a6e7`](https://github.com/minimistjs/minimist/commit/9c0a6e7de25a273b11bbf9a7464f0bd833779795) + +## [v1.1.2](https://github.com/minimistjs/minimist/compare/v1.1.1...v1.1.2) - 2015-07-22 + +### Commits + +- Convert boolean arguments to boolean values [`8f3dc27`](https://github.com/minimistjs/minimist/commit/8f3dc27cf833f1d54671b6d0bcb55c2fe19672a9) +- use non-ancient npm, node 0.12 and iojs [`61ed1d0`](https://github.com/minimistjs/minimist/commit/61ed1d034b9ec7282764ce76f3992b1a0b4906ae) +- an older npm for 0.8 [`25cf778`](https://github.com/minimistjs/minimist/commit/25cf778b1220e7838a526832ad6972f75244054f) + +## [v1.1.1](https://github.com/minimistjs/minimist/compare/v1.1.0...v1.1.1) - 2015-03-10 + +### Commits + +- check that they type of a value is a boolean, not just that it is currently set to a boolean [`6863198`](https://github.com/minimistjs/minimist/commit/6863198e36139830ff1f20ffdceaddd93f2c1db9) +- upgrade tape, fix type issues from old tape version [`806712d`](https://github.com/minimistjs/minimist/commit/806712df91604ed02b8e39aa372b84aea659ee34) +- test for setting a boolean to a null default [`8c444fe`](https://github.com/minimistjs/minimist/commit/8c444fe89384ded7d441c120915ea60620b01dd3) +- if the previous value was a boolean, without an default (or with an alias) don't make an array either [`e5f419a`](https://github.com/minimistjs/minimist/commit/e5f419a3b5b3bc3f9e5ac71b7040621af70ed2dd) + +## [v1.1.0](https://github.com/minimistjs/minimist/compare/v1.0.0...v1.1.0) - 2014-08-10 + +### Commits + +- add support for handling "unknown" options not registered with the parser. [`6f3cc5d`](https://github.com/minimistjs/minimist/commit/6f3cc5d4e84524932a6ef2ce3592acc67cdd4383) +- reformat package.json [`02ed371`](https://github.com/minimistjs/minimist/commit/02ed37115194d3697ff358e8e25e5e66bab1d9f8) +- coverage script [`e5531ba`](https://github.com/minimistjs/minimist/commit/e5531ba0479da3b8138d3d8cac545d84ccb1c8df) +- extra fn to get 100% coverage again [`a6972da`](https://github.com/minimistjs/minimist/commit/a6972da89e56bf77642f8ec05a13b6558db93498) + +## [v1.0.0](https://github.com/minimistjs/minimist/compare/v0.2.3...v1.0.0) - 2014-08-10 + +### Commits + +- added stopEarly option [`471c7e4`](https://github.com/minimistjs/minimist/commit/471c7e4a7e910fc7ad8f9df850a186daf32c64e9) +- fix list [`fef6ae7`](https://github.com/minimistjs/minimist/commit/fef6ae79c38b9dc1c49569abb7cd04eb965eac5e) + +## [v0.2.3](https://github.com/minimistjs/minimist/compare/v0.2.2...v0.2.3) - 2023-02-09 + +### Merged + +- [Fix] Fix long option followed by single dash [`#17`](https://github.com/minimistjs/minimist/pull/17) +- [Tests] Remove duplicate test [`#12`](https://github.com/minimistjs/minimist/pull/12) +- [Fix] opt.string works with multiple aliases [`#10`](https://github.com/minimistjs/minimist/pull/10) + +### Fixed + +- [Fix] Fix long option followed by single dash (#17) [`#15`](https://github.com/minimistjs/minimist/issues/15) +- [Tests] Remove duplicate test (#12) [`#8`](https://github.com/minimistjs/minimist/issues/8) +- [Fix] opt.string works with multiple aliases (#10) [`#9`](https://github.com/minimistjs/minimist/issues/9) + +### Commits + +- [eslint] fix indentation and whitespace [`e5f5067`](https://github.com/minimistjs/minimist/commit/e5f5067259ceeaf0b098d14bec910f87e58708c7) +- [eslint] more cleanup [`36ac5d0`](https://github.com/minimistjs/minimist/commit/36ac5d0d95e4947d074e5737d94814034ca335d1) +- [eslint] fix indentation [`34b0f1c`](https://github.com/minimistjs/minimist/commit/34b0f1ccaa45183c3c4f06a91f9b405180a6f982) +- isConstructorOrProto adapted from PR [`ef9153f`](https://github.com/minimistjs/minimist/commit/ef9153fc52b6cea0744b2239921c5dcae4697f11) +- [Dev Deps] update `@ljharb/eslint-config`, `aud` [`098873c`](https://github.com/minimistjs/minimist/commit/098873c213cdb7c92e55ae1ef5aa1af3a8192a79) +- [Dev Deps] add missing `npmignore` dev dep [`3226afa`](https://github.com/minimistjs/minimist/commit/3226afaf09e9d127ca369742437fe6e88f752d6b) + +## [v0.2.2](https://github.com/minimistjs/minimist/compare/v0.2.1...v0.2.2) - 2022-10-10 + +### Commits + +- [meta] add `auto-changelog` [`73923d2`](https://github.com/minimistjs/minimist/commit/73923d223553fca08b1ba77e3fbc2a492862ae4c) +- [actions] add reusable workflows [`d80727d`](https://github.com/minimistjs/minimist/commit/d80727df77bfa9e631044d7f16368d8f09242c91) +- [eslint] add eslint; rules to enable later are warnings [`48bc06a`](https://github.com/minimistjs/minimist/commit/48bc06a1b41f00e9cdf183db34f7a51ba70e98d4) +- [readme] rename and add badges [`5df0fe4`](https://github.com/minimistjs/minimist/commit/5df0fe49211bd09a3636f8686a7cb3012c3e98f0) +- [Dev Deps] switch from `covert` to `nyc` [`a48b128`](https://github.com/minimistjs/minimist/commit/a48b128fdb8d427dfb20a15273f83e38d97bef07) +- [Dev Deps] update `covert`, `tape`; remove unnecessary `tap` [`f0fb958`](https://github.com/minimistjs/minimist/commit/f0fb958e9a1fe980cdffc436a211b0bda58f621b) +- [meta] create FUNDING.yml; add `funding` in package.json [`3639e0c`](https://github.com/minimistjs/minimist/commit/3639e0c819359a366387e425ab6eabf4c78d3caa) +- [meta] use `npmignore` to autogenerate an npmignore file [`be2e038`](https://github.com/minimistjs/minimist/commit/be2e038c342d8333b32f0fde67a0026b79c8150e) +- Only apps should have lockfiles [`282b570`](https://github.com/minimistjs/minimist/commit/282b570e7489d01b03f2d6d3dabf79cd3e5f84cf) +- [meta] add `safe-publish-latest` [`4b927de`](https://github.com/minimistjs/minimist/commit/4b927de696d561c636b4f43bf49d4597cb36d6d6) +- [Tests] add `aud` in `posttest` [`b32d9bd`](https://github.com/minimistjs/minimist/commit/b32d9bd0ab340f4e9f8c3a97ff2a4424f25fab8c) +- [meta] update repo URLs [`f9fdfc0`](https://github.com/minimistjs/minimist/commit/f9fdfc032c54884d9a9996a390c63cd0719bbe1a) + +## [v0.2.1](https://github.com/minimistjs/minimist/compare/v0.2.0...v0.2.1) - 2020-03-12 + +## [v0.2.0](https://github.com/minimistjs/minimist/compare/v0.1.0...v0.2.0) - 2014-06-19 + +### Commits + +- support all-boolean mode [`450a97f`](https://github.com/minimistjs/minimist/commit/450a97f6e2bc85c7a4a13185c19a818d9a5ebe69) + +## [v0.1.0](https://github.com/minimistjs/minimist/compare/v0.0.10...v0.1.0) - 2014-05-12 + +### Commits + +- Provide a mechanism to segregate -- arguments [`ce4a1e6`](https://github.com/minimistjs/minimist/commit/ce4a1e63a7e8d5ab88d2a3768adefa6af98a445a) +- documented argv['--'] [`14db0e6`](https://github.com/minimistjs/minimist/commit/14db0e6dbc6d2b9e472adaa54dad7004b364634f) +- Adding a test-case for notFlags segregation [`715c1e3`](https://github.com/minimistjs/minimist/commit/715c1e3714be223f998f6c537af6b505f0236c16) + +## [v0.0.10](https://github.com/minimistjs/minimist/compare/v0.0.9...v0.0.10) - 2014-05-11 + +### Commits + +- dedicated boolean test [`46e448f`](https://github.com/minimistjs/minimist/commit/46e448f9f513cfeb2bcc8b688b9b47ba1e515c2b) +- dedicated num test [`9bf2d36`](https://github.com/minimistjs/minimist/commit/9bf2d36f1d3b8795be90b8f7de0a937f098aa394) +- aliased values treated as strings [`1ab743b`](https://github.com/minimistjs/minimist/commit/1ab743bad4484d69f1259bed42f9531de01119de) +- cover the case of already numbers, at 100% coverage [`b2bb044`](https://github.com/minimistjs/minimist/commit/b2bb04436599d77a2ce029e8e555e25b3aa55d13) +- another test for higher coverage [`3662624`](https://github.com/minimistjs/minimist/commit/3662624be976d5489d486a856849c048d13be903) + +## [v0.0.9](https://github.com/minimistjs/minimist/compare/v0.0.8...v0.0.9) - 2014-05-08 + +### Commits + +- Eliminate `longest` fn. [`824f642`](https://github.com/minimistjs/minimist/commit/824f642038d1b02ede68b6261d1d65163390929a) + +## [v0.0.8](https://github.com/minimistjs/minimist/compare/v0.0.7...v0.0.8) - 2014-02-20 + +### Commits + +- return '' if flag is string and empty [`fa63ed4`](https://github.com/minimistjs/minimist/commit/fa63ed4651a4ef4eefddce34188e0d98d745a263) +- handle joined single letters [`66c248f`](https://github.com/minimistjs/minimist/commit/66c248f0241d4d421d193b022e9e365f11178534) + +## [v0.0.7](https://github.com/minimistjs/minimist/compare/v0.0.6...v0.0.7) - 2014-02-08 + +### Commits + +- another swap of .test for .match [`d1da408`](https://github.com/minimistjs/minimist/commit/d1da40819acbe846d89a5c02721211e3c1260dde) + +## [v0.0.6](https://github.com/minimistjs/minimist/compare/v0.0.5...v0.0.6) - 2014-02-08 + +### Commits + +- use .test() instead of .match() to not crash on non-string values in the arguments array [`7e0d1ad`](https://github.com/minimistjs/minimist/commit/7e0d1add8c9e5b9b20a4d3d0f9a94d824c578da1) + +## [v0.0.5](https://github.com/minimistjs/minimist/compare/v0.0.4...v0.0.5) - 2013-09-18 + +### Commits + +- Improve '--' handling. [`b11822c`](https://github.com/minimistjs/minimist/commit/b11822c09cc9d2460f30384d12afc0b953c037a4) + +## [v0.0.4](https://github.com/minimistjs/minimist/compare/v0.0.3...v0.0.4) - 2013-09-17 + +## [v0.0.3](https://github.com/minimistjs/minimist/compare/v0.0.2...v0.0.3) - 2013-09-12 + +### Commits + +- failing test for single dash preceeding a double dash [`b465514`](https://github.com/minimistjs/minimist/commit/b465514b82c9ae28972d714facd951deb2ad762b) +- fix for the dot test [`6a095f1`](https://github.com/minimistjs/minimist/commit/6a095f1d364c8fab2d6753d2291a0649315d297a) + +## [v0.0.2](https://github.com/minimistjs/minimist/compare/v0.0.1...v0.0.2) - 2013-08-28 + +### Commits + +- allow dotted aliases & defaults [`321c33e`](https://github.com/minimistjs/minimist/commit/321c33e755485faaeb44eeb1c05d33b2e0a5a7c4) +- use a better version of ff [`e40f611`](https://github.com/minimistjs/minimist/commit/e40f61114cf7be6f7947f7b3eed345853a67dbbb) + +## [v0.0.1](https://github.com/minimistjs/minimist/compare/v0.0.0...v0.0.1) - 2013-06-25 + +### Commits + +- remove trailing commas [`6ff0fa0`](https://github.com/minimistjs/minimist/commit/6ff0fa055064f15dbe06d50b89d5173a6796e1db) + +## v0.0.0 - 2013-06-25 + +### Commits + +- half of the parse test ported [`3079326`](https://github.com/minimistjs/minimist/commit/307932601325087de6cf94188eb798ffc4f3088a) +- stripped down code and a passing test from optimist [`7cced88`](https://github.com/minimistjs/minimist/commit/7cced88d82e399d1a03ed23eb667f04d3f320d10) +- ported parse tests completely over [`9448754`](https://github.com/minimistjs/minimist/commit/944875452e0820df6830b1408c26a0f7d3e1db04) +- docs, package.json [`a5bf46a`](https://github.com/minimistjs/minimist/commit/a5bf46ac9bb3bd114a9c340276c62c1091e538d5) +- move more short tests into short.js [`503edb5`](https://github.com/minimistjs/minimist/commit/503edb5c41d89c0d40831ee517154fc13b0f18b9) +- default bool test was wrong, not the code [`1b9f5db`](https://github.com/minimistjs/minimist/commit/1b9f5db4741b49962846081b68518de824992097) +- passing long tests ripped out of parse.js [`7972c4a`](https://github.com/minimistjs/minimist/commit/7972c4aff1f4803079e1668006658e2a761a0428) +- badges [`84c0370`](https://github.com/minimistjs/minimist/commit/84c037063664d42878aace715fe6572ce01b6f3b) +- all the tests now ported, some failures [`64239ed`](https://github.com/minimistjs/minimist/commit/64239edfe92c711c4eb0da254fcdfad2a5fdb605) +- failing short test [`f8a5341`](https://github.com/minimistjs/minimist/commit/f8a534112dd1138d2fad722def56a848480c446f) +- fixed the numeric test [`6b034f3`](https://github.com/minimistjs/minimist/commit/6b034f37c79342c60083ed97fd222e16928aac51) diff --git a/node_backend/node_modules/minimist/LICENSE b/node_backend/node_modules/minimist/LICENSE new file mode 100644 index 00000000..ee27ba4b --- /dev/null +++ b/node_backend/node_modules/minimist/LICENSE @@ -0,0 +1,18 @@ +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_backend/node_modules/minimist/README.md b/node_backend/node_modules/minimist/README.md new file mode 100644 index 00000000..74da3234 --- /dev/null +++ b/node_backend/node_modules/minimist/README.md @@ -0,0 +1,121 @@ +# minimist [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +parse argument options + +This module is the guts of optimist's argument parser without all the +fanciful decoration. + +# example + +``` js +var argv = require('minimist')(process.argv.slice(2)); +console.log(argv); +``` + +``` +$ node example/parse.js -a beep -b boop +{ _: [], a: 'beep', b: 'boop' } +``` + +``` +$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz +{ + _: ['foo', 'bar', 'baz'], + x: 3, + y: 4, + n: 5, + a: true, + b: true, + c: true, + beep: 'boop' +} +``` + +# security + +Previous versions had a prototype pollution bug that could cause privilege +escalation in some circumstances when handling untrusted user input. + +Please use version 1.2.6 or later: + +* https://security.snyk.io/vuln/SNYK-JS-MINIMIST-2429795 (version <=1.2.5) +* https://snyk.io/vuln/SNYK-JS-MINIMIST-559764 (version <=1.2.3) + +# methods + +``` js +var parseArgs = require('minimist') +``` + +## var argv = parseArgs(args, opts={}) + +Return an argument object `argv` populated with the array arguments from `args`. + +`argv._` contains all the arguments that didn't have an option associated with +them. + +Numeric-looking arguments will be returned as numbers unless `opts.string` or +`opts.boolean` is set for that argument name. + +Any arguments after `'--'` will not be parsed and will end up in `argv._`. + +options can be: + +* `opts.string` - a string or array of strings argument names to always treat as +strings +* `opts.boolean` - a boolean, string or array of strings to always treat as +booleans. if `true` will treat all double hyphenated arguments without equal signs +as boolean (e.g. affects `--foo`, not `-f` or `--foo=bar`) +* `opts.alias` - an object mapping string names to strings or arrays of string +argument names to use as aliases +* `opts.default` - an object mapping string argument names to default values +* `opts.stopEarly` - when true, populate `argv._` with everything after the +first non-option +* `opts['--']` - when true, populate `argv._` with everything before the `--` +and `argv['--']` with everything after the `--`. Here's an example: + + ``` + > require('./')('one two three -- four five --six'.split(' '), { '--': true }) + { + _: ['one', 'two', 'three'], + '--': ['four', 'five', '--six'] + } + ``` + + Note that with `opts['--']` set, parsing for arguments still stops after the + `--`. + +* `opts.unknown` - a function which is invoked with a command line parameter not +defined in the `opts` configuration object. If the function returns `false`, the +unknown option is not added to `argv`. + +# install + +With [npm](https://npmjs.org) do: + +``` +npm install minimist +``` + +# license + +MIT + +[package-url]: https://npmjs.org/package/minimist +[npm-version-svg]: https://versionbadg.es/minimistjs/minimist.svg +[npm-badge-png]: https://nodei.co/npm/minimist.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/minimist.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/minimist.svg +[downloads-url]: https://npm-stat.com/charts.html?package=minimist +[codecov-image]: https://codecov.io/gh/minimistjs/minimist/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/minimistjs/minimist/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/minimistjs/minimist +[actions-url]: https://github.com/minimistjs/minimist/actions diff --git a/node_backend/node_modules/minimist/example/parse.js b/node_backend/node_modules/minimist/example/parse.js new file mode 100644 index 00000000..9d90ffb2 --- /dev/null +++ b/node_backend/node_modules/minimist/example/parse.js @@ -0,0 +1,4 @@ +'use strict'; + +var argv = require('../')(process.argv.slice(2)); +console.log(argv); diff --git a/node_backend/node_modules/minimist/index.js b/node_backend/node_modules/minimist/index.js new file mode 100644 index 00000000..f020f394 --- /dev/null +++ b/node_backend/node_modules/minimist/index.js @@ -0,0 +1,263 @@ +'use strict'; + +function hasKey(obj, keys) { + var o = obj; + keys.slice(0, -1).forEach(function (key) { + o = o[key] || {}; + }); + + var key = keys[keys.length - 1]; + return key in o; +} + +function isNumber(x) { + if (typeof x === 'number') { return true; } + if ((/^0x[0-9a-f]+$/i).test(x)) { return true; } + return (/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/).test(x); +} + +function isConstructorOrProto(obj, key) { + return (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__'; +} + +module.exports = function (args, opts) { + if (!opts) { opts = {}; } + + var flags = { + bools: {}, + strings: {}, + unknownFn: null, + }; + + if (typeof opts.unknown === 'function') { + flags.unknownFn = opts.unknown; + } + + if (typeof opts.boolean === 'boolean' && opts.boolean) { + flags.allBools = true; + } else { + [].concat(opts.boolean).filter(Boolean).forEach(function (key) { + flags.bools[key] = true; + }); + } + + var aliases = {}; + + function aliasIsBoolean(key) { + return aliases[key].some(function (x) { + return flags.bools[x]; + }); + } + + Object.keys(opts.alias || {}).forEach(function (key) { + aliases[key] = [].concat(opts.alias[key]); + aliases[key].forEach(function (x) { + aliases[x] = [key].concat(aliases[key].filter(function (y) { + return x !== y; + })); + }); + }); + + [].concat(opts.string).filter(Boolean).forEach(function (key) { + flags.strings[key] = true; + if (aliases[key]) { + [].concat(aliases[key]).forEach(function (k) { + flags.strings[k] = true; + }); + } + }); + + var defaults = opts.default || {}; + + var argv = { _: [] }; + + function argDefined(key, arg) { + return (flags.allBools && (/^--[^=]+$/).test(arg)) + || flags.strings[key] + || flags.bools[key] + || aliases[key]; + } + + function setKey(obj, keys, value) { + var o = obj; + for (var i = 0; i < keys.length - 1; i++) { + var key = keys[i]; + if (isConstructorOrProto(o, key)) { return; } + if (o[key] === undefined) { o[key] = {}; } + if ( + o[key] === Object.prototype + || o[key] === Number.prototype + || o[key] === String.prototype + ) { + o[key] = {}; + } + if (o[key] === Array.prototype) { o[key] = []; } + o = o[key]; + } + + var lastKey = keys[keys.length - 1]; + if (isConstructorOrProto(o, lastKey)) { return; } + if ( + o === Object.prototype + || o === Number.prototype + || o === String.prototype + ) { + o = {}; + } + if (o === Array.prototype) { o = []; } + if (o[lastKey] === undefined || flags.bools[lastKey] || typeof o[lastKey] === 'boolean') { + o[lastKey] = value; + } else if (Array.isArray(o[lastKey])) { + o[lastKey].push(value); + } else { + o[lastKey] = [o[lastKey], value]; + } + } + + function setArg(key, val, arg) { + if (arg && flags.unknownFn && !argDefined(key, arg)) { + if (flags.unknownFn(arg) === false) { return; } + } + + var value = !flags.strings[key] && isNumber(val) + ? Number(val) + : val; + setKey(argv, key.split('.'), value); + + (aliases[key] || []).forEach(function (x) { + setKey(argv, x.split('.'), value); + }); + } + + Object.keys(flags.bools).forEach(function (key) { + setArg(key, defaults[key] === undefined ? false : defaults[key]); + }); + + var notFlags = []; + + if (args.indexOf('--') !== -1) { + notFlags = args.slice(args.indexOf('--') + 1); + args = args.slice(0, args.indexOf('--')); + } + + for (var i = 0; i < args.length; i++) { + var arg = args[i]; + var key; + var next; + + if ((/^--.+=/).test(arg)) { + // Using [\s\S] instead of . because js doesn't support the + // 'dotall' regex modifier. See: + // http://stackoverflow.com/a/1068308/13216 + var m = arg.match(/^--([^=]+)=([\s\S]*)$/); + key = m[1]; + var value = m[2]; + if (flags.bools[key]) { + value = value !== 'false'; + } + setArg(key, value, arg); + } else if ((/^--no-.+/).test(arg)) { + key = arg.match(/^--no-(.+)/)[1]; + setArg(key, false, arg); + } else if ((/^--.+/).test(arg)) { + key = arg.match(/^--(.+)/)[1]; + next = args[i + 1]; + if ( + next !== undefined + && !(/^(-|--)[^-]/).test(next) + && !flags.bools[key] + && !flags.allBools + && (aliases[key] ? !aliasIsBoolean(key) : true) + ) { + setArg(key, next, arg); + i += 1; + } else if ((/^(true|false)$/).test(next)) { + setArg(key, next === 'true', arg); + i += 1; + } else { + setArg(key, flags.strings[key] ? '' : true, arg); + } + } else if ((/^-[^-]+/).test(arg)) { + var letters = arg.slice(1, -1).split(''); + + var broken = false; + for (var j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + + if (next === '-') { + setArg(letters[j], next, arg); + continue; + } + + if ((/[A-Za-z]/).test(letters[j]) && next[0] === '=') { + setArg(letters[j], next.slice(1), arg); + broken = true; + break; + } + + if ( + (/[A-Za-z]/).test(letters[j]) + && (/-?\d+(\.\d*)?(e-?\d+)?$/).test(next) + ) { + setArg(letters[j], next, arg); + broken = true; + break; + } + + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], arg.slice(j + 2), arg); + broken = true; + break; + } else { + setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg); + } + } + + key = arg.slice(-1)[0]; + if (!broken && key !== '-') { + if ( + args[i + 1] + && !(/^(-|--)[^-]/).test(args[i + 1]) + && !flags.bools[key] + && (aliases[key] ? !aliasIsBoolean(key) : true) + ) { + setArg(key, args[i + 1], arg); + i += 1; + } else if (args[i + 1] && (/^(true|false)$/).test(args[i + 1])) { + setArg(key, args[i + 1] === 'true', arg); + i += 1; + } else { + setArg(key, flags.strings[key] ? '' : true, arg); + } + } + } else { + if (!flags.unknownFn || flags.unknownFn(arg) !== false) { + argv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg)); + } + if (opts.stopEarly) { + argv._.push.apply(argv._, args.slice(i + 1)); + break; + } + } + } + + Object.keys(defaults).forEach(function (k) { + if (!hasKey(argv, k.split('.'))) { + setKey(argv, k.split('.'), defaults[k]); + + (aliases[k] || []).forEach(function (x) { + setKey(argv, x.split('.'), defaults[k]); + }); + } + }); + + if (opts['--']) { + argv['--'] = notFlags.slice(); + } else { + notFlags.forEach(function (k) { + argv._.push(k); + }); + } + + return argv; +}; diff --git a/node_backend/node_modules/minimist/package.json b/node_backend/node_modules/minimist/package.json new file mode 100644 index 00000000..c10a3344 --- /dev/null +++ b/node_backend/node_modules/minimist/package.json @@ -0,0 +1,75 @@ +{ + "name": "minimist", + "version": "1.2.8", + "description": "parse argument options", + "main": "index.js", + "devDependencies": { + "@ljharb/eslint-config": "^21.0.1", + "aud": "^2.0.2", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.6.3" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=auto", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "lint": "eslint --ext=js,mjs .", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/6..latest", + "ff/5", + "firefox/latest", + "chrome/10", + "chrome/latest", + "safari/5.1", + "safari/latest", + "opera/12" + ] + }, + "repository": { + "type": "git", + "url": "git://github.com/minimistjs/minimist.git" + }, + "homepage": "https://github.com/minimistjs/minimist", + "keywords": [ + "argv", + "getopt", + "parser", + "optimist" + ], + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} diff --git a/node_backend/node_modules/minimist/test/all_bool.js b/node_backend/node_modules/minimist/test/all_bool.js new file mode 100644 index 00000000..befa0c99 --- /dev/null +++ b/node_backend/node_modules/minimist/test/all_bool.js @@ -0,0 +1,34 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('flag boolean true (default all --args to boolean)', function (t) { + var argv = parse(['moo', '--honk', 'cow'], { + boolean: true, + }); + + t.deepEqual(argv, { + honk: true, + _: ['moo', 'cow'], + }); + + t.deepEqual(typeof argv.honk, 'boolean'); + t.end(); +}); + +test('flag boolean true only affects double hyphen arguments without equals signs', function (t) { + var argv = parse(['moo', '--honk', 'cow', '-p', '55', '--tacos=good'], { + boolean: true, + }); + + t.deepEqual(argv, { + honk: true, + tacos: 'good', + p: 55, + _: ['moo', 'cow'], + }); + + t.deepEqual(typeof argv.honk, 'boolean'); + t.end(); +}); diff --git a/node_backend/node_modules/minimist/test/bool.js b/node_backend/node_modules/minimist/test/bool.js new file mode 100644 index 00000000..e58d47e4 --- /dev/null +++ b/node_backend/node_modules/minimist/test/bool.js @@ -0,0 +1,177 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('flag boolean default false', function (t) { + var argv = parse(['moo'], { + boolean: ['t', 'verbose'], + default: { verbose: false, t: false }, + }); + + t.deepEqual(argv, { + verbose: false, + t: false, + _: ['moo'], + }); + + t.deepEqual(typeof argv.verbose, 'boolean'); + t.deepEqual(typeof argv.t, 'boolean'); + t.end(); + +}); + +test('boolean groups', function (t) { + var argv = parse(['-x', '-z', 'one', 'two', 'three'], { + boolean: ['x', 'y', 'z'], + }); + + t.deepEqual(argv, { + x: true, + y: false, + z: true, + _: ['one', 'two', 'three'], + }); + + t.deepEqual(typeof argv.x, 'boolean'); + t.deepEqual(typeof argv.y, 'boolean'); + t.deepEqual(typeof argv.z, 'boolean'); + t.end(); +}); +test('boolean and alias with chainable api', function (t) { + var aliased = ['-h', 'derp']; + var regular = ['--herp', 'derp']; + var aliasedArgv = parse(aliased, { + boolean: 'herp', + alias: { h: 'herp' }, + }); + var propertyArgv = parse(regular, { + boolean: 'herp', + alias: { h: 'herp' }, + }); + var expected = { + herp: true, + h: true, + _: ['derp'], + }; + + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +test('boolean and alias with options hash', function (t) { + var aliased = ['-h', 'derp']; + var regular = ['--herp', 'derp']; + var opts = { + alias: { h: 'herp' }, + boolean: 'herp', + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + var expected = { + herp: true, + h: true, + _: ['derp'], + }; + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +test('boolean and alias array with options hash', function (t) { + var aliased = ['-h', 'derp']; + var regular = ['--herp', 'derp']; + var alt = ['--harp', 'derp']; + var opts = { + alias: { h: ['herp', 'harp'] }, + boolean: 'h', + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + var altPropertyArgv = parse(alt, opts); + var expected = { + harp: true, + herp: true, + h: true, + _: ['derp'], + }; + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.same(altPropertyArgv, expected); + t.end(); +}); + +test('boolean and alias using explicit true', function (t) { + var aliased = ['-h', 'true']; + var regular = ['--herp', 'true']; + var opts = { + alias: { h: 'herp' }, + boolean: 'h', + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + var expected = { + herp: true, + h: true, + _: [], + }; + + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +// regression, see https://github.com/substack/node-optimist/issues/71 +test('boolean and --x=true', function (t) { + var parsed = parse(['--boool', '--other=true'], { + boolean: 'boool', + }); + + t.same(parsed.boool, true); + t.same(parsed.other, 'true'); + + parsed = parse(['--boool', '--other=false'], { + boolean: 'boool', + }); + + t.same(parsed.boool, true); + t.same(parsed.other, 'false'); + t.end(); +}); + +test('boolean --boool=true', function (t) { + var parsed = parse(['--boool=true'], { + default: { + boool: false, + }, + boolean: ['boool'], + }); + + t.same(parsed.boool, true); + t.end(); +}); + +test('boolean --boool=false', function (t) { + var parsed = parse(['--boool=false'], { + default: { + boool: true, + }, + boolean: ['boool'], + }); + + t.same(parsed.boool, false); + t.end(); +}); + +test('boolean using something similar to true', function (t) { + var opts = { boolean: 'h' }; + var result = parse(['-h', 'true.txt'], opts); + var expected = { + h: true, + _: ['true.txt'], + }; + + t.same(result, expected); + t.end(); +}); diff --git a/node_backend/node_modules/minimist/test/dash.js b/node_backend/node_modules/minimist/test/dash.js new file mode 100644 index 00000000..70788177 --- /dev/null +++ b/node_backend/node_modules/minimist/test/dash.js @@ -0,0 +1,43 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('-', function (t) { + t.plan(6); + t.deepEqual(parse(['-n', '-']), { n: '-', _: [] }); + t.deepEqual(parse(['--nnn', '-']), { nnn: '-', _: [] }); + t.deepEqual(parse(['-']), { _: ['-'] }); + t.deepEqual(parse(['-f-']), { f: '-', _: [] }); + t.deepEqual( + parse(['-b', '-'], { boolean: 'b' }), + { b: true, _: ['-'] } + ); + t.deepEqual( + parse(['-s', '-'], { string: 's' }), + { s: '-', _: [] } + ); +}); + +test('-a -- b', function (t) { + t.plan(2); + t.deepEqual(parse(['-a', '--', 'b']), { a: true, _: ['b'] }); + t.deepEqual(parse(['--a', '--', 'b']), { a: true, _: ['b'] }); +}); + +test('move arguments after the -- into their own `--` array', function (t) { + t.plan(1); + t.deepEqual( + parse(['--name', 'John', 'before', '--', 'after'], { '--': true }), + { name: 'John', _: ['before'], '--': ['after'] } + ); +}); + +test('--- option value', function (t) { + // A multi-dash value is largely an edge case, but check the behaviour is as expected, + // and in particular the same for short option and long option (as made consistent in Jan 2023). + t.plan(2); + t.deepEqual(parse(['-n', '---']), { n: '---', _: [] }); + t.deepEqual(parse(['--nnn', '---']), { nnn: '---', _: [] }); +}); + diff --git a/node_backend/node_modules/minimist/test/default_bool.js b/node_backend/node_modules/minimist/test/default_bool.js new file mode 100644 index 00000000..4e9f6250 --- /dev/null +++ b/node_backend/node_modules/minimist/test/default_bool.js @@ -0,0 +1,37 @@ +'use strict'; + +var test = require('tape'); +var parse = require('../'); + +test('boolean default true', function (t) { + var argv = parse([], { + boolean: 'sometrue', + default: { sometrue: true }, + }); + t.equal(argv.sometrue, true); + t.end(); +}); + +test('boolean default false', function (t) { + var argv = parse([], { + boolean: 'somefalse', + default: { somefalse: false }, + }); + t.equal(argv.somefalse, false); + t.end(); +}); + +test('boolean default to null', function (t) { + var argv = parse([], { + boolean: 'maybe', + default: { maybe: null }, + }); + t.equal(argv.maybe, null); + + var argvLong = parse(['--maybe'], { + boolean: 'maybe', + default: { maybe: null }, + }); + t.equal(argvLong.maybe, true); + t.end(); +}); diff --git a/node_backend/node_modules/minimist/test/dotted.js b/node_backend/node_modules/minimist/test/dotted.js new file mode 100644 index 00000000..126ff033 --- /dev/null +++ b/node_backend/node_modules/minimist/test/dotted.js @@ -0,0 +1,24 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('dotted alias', function (t) { + var argv = parse(['--a.b', '22'], { default: { 'a.b': 11 }, alias: { 'a.b': 'aa.bb' } }); + t.equal(argv.a.b, 22); + t.equal(argv.aa.bb, 22); + t.end(); +}); + +test('dotted default', function (t) { + var argv = parse('', { default: { 'a.b': 11 }, alias: { 'a.b': 'aa.bb' } }); + t.equal(argv.a.b, 11); + t.equal(argv.aa.bb, 11); + t.end(); +}); + +test('dotted default with no alias', function (t) { + var argv = parse('', { default: { 'a.b': 11 } }); + t.equal(argv.a.b, 11); + t.end(); +}); diff --git a/node_backend/node_modules/minimist/test/kv_short.js b/node_backend/node_modules/minimist/test/kv_short.js new file mode 100644 index 00000000..6d1b53a7 --- /dev/null +++ b/node_backend/node_modules/minimist/test/kv_short.js @@ -0,0 +1,32 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('short -k=v', function (t) { + t.plan(1); + + var argv = parse(['-b=123']); + t.deepEqual(argv, { b: 123, _: [] }); +}); + +test('multi short -k=v', function (t) { + t.plan(1); + + var argv = parse(['-a=whatever', '-b=robots']); + t.deepEqual(argv, { a: 'whatever', b: 'robots', _: [] }); +}); + +test('short with embedded equals -k=a=b', function (t) { + t.plan(1); + + var argv = parse(['-k=a=b']); + t.deepEqual(argv, { k: 'a=b', _: [] }); +}); + +test('short with later equals like -ab=c', function (t) { + t.plan(1); + + var argv = parse(['-ab=c']); + t.deepEqual(argv, { a: true, b: 'c', _: [] }); +}); diff --git a/node_backend/node_modules/minimist/test/long.js b/node_backend/node_modules/minimist/test/long.js new file mode 100644 index 00000000..9fef51f1 --- /dev/null +++ b/node_backend/node_modules/minimist/test/long.js @@ -0,0 +1,33 @@ +'use strict'; + +var test = require('tape'); +var parse = require('../'); + +test('long opts', function (t) { + t.deepEqual( + parse(['--bool']), + { bool: true, _: [] }, + 'long boolean' + ); + t.deepEqual( + parse(['--pow', 'xixxle']), + { pow: 'xixxle', _: [] }, + 'long capture sp' + ); + t.deepEqual( + parse(['--pow=xixxle']), + { pow: 'xixxle', _: [] }, + 'long capture eq' + ); + t.deepEqual( + parse(['--host', 'localhost', '--port', '555']), + { host: 'localhost', port: 555, _: [] }, + 'long captures sp' + ); + t.deepEqual( + parse(['--host=localhost', '--port=555']), + { host: 'localhost', port: 555, _: [] }, + 'long captures eq' + ); + t.end(); +}); diff --git a/node_backend/node_modules/minimist/test/num.js b/node_backend/node_modules/minimist/test/num.js new file mode 100644 index 00000000..074393ec --- /dev/null +++ b/node_backend/node_modules/minimist/test/num.js @@ -0,0 +1,38 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('nums', function (t) { + var argv = parse([ + '-x', '1234', + '-y', '5.67', + '-z', '1e7', + '-w', '10f', + '--hex', '0xdeadbeef', + '789', + ]); + t.deepEqual(argv, { + x: 1234, + y: 5.67, + z: 1e7, + w: '10f', + hex: 0xdeadbeef, + _: [789], + }); + t.deepEqual(typeof argv.x, 'number'); + t.deepEqual(typeof argv.y, 'number'); + t.deepEqual(typeof argv.z, 'number'); + t.deepEqual(typeof argv.w, 'string'); + t.deepEqual(typeof argv.hex, 'number'); + t.deepEqual(typeof argv._[0], 'number'); + t.end(); +}); + +test('already a number', function (t) { + var argv = parse(['-x', 1234, 789]); + t.deepEqual(argv, { x: 1234, _: [789] }); + t.deepEqual(typeof argv.x, 'number'); + t.deepEqual(typeof argv._[0], 'number'); + t.end(); +}); diff --git a/node_backend/node_modules/minimist/test/parse.js b/node_backend/node_modules/minimist/test/parse.js new file mode 100644 index 00000000..65d9d909 --- /dev/null +++ b/node_backend/node_modules/minimist/test/parse.js @@ -0,0 +1,209 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('parse args', function (t) { + t.deepEqual( + parse(['--no-moo']), + { moo: false, _: [] }, + 'no' + ); + t.deepEqual( + parse(['-v', 'a', '-v', 'b', '-v', 'c']), + { v: ['a', 'b', 'c'], _: [] }, + 'multi' + ); + t.end(); +}); + +test('comprehensive', function (t) { + t.deepEqual( + parse([ + '--name=meowmers', 'bare', '-cats', 'woo', + '-h', 'awesome', '--multi=quux', + '--key', 'value', + '-b', '--bool', '--no-meep', '--multi=baz', + '--', '--not-a-flag', 'eek', + ]), + { + c: true, + a: true, + t: true, + s: 'woo', + h: 'awesome', + b: true, + bool: true, + key: 'value', + multi: ['quux', 'baz'], + meep: false, + name: 'meowmers', + _: ['bare', '--not-a-flag', 'eek'], + } + ); + t.end(); +}); + +test('flag boolean', function (t) { + var argv = parse(['-t', 'moo'], { boolean: 't' }); + t.deepEqual(argv, { t: true, _: ['moo'] }); + t.deepEqual(typeof argv.t, 'boolean'); + t.end(); +}); + +test('flag boolean value', function (t) { + var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], { + boolean: ['t', 'verbose'], + default: { verbose: true }, + }); + + t.deepEqual(argv, { + verbose: false, + t: true, + _: ['moo'], + }); + + t.deepEqual(typeof argv.verbose, 'boolean'); + t.deepEqual(typeof argv.t, 'boolean'); + t.end(); +}); + +test('newlines in params', function (t) { + var args = parse(['-s', 'X\nX']); + t.deepEqual(args, { _: [], s: 'X\nX' }); + + // reproduce in bash: + // VALUE="new + // line" + // node program.js --s="$VALUE" + args = parse(['--s=X\nX']); + t.deepEqual(args, { _: [], s: 'X\nX' }); + t.end(); +}); + +test('strings', function (t) { + var s = parse(['-s', '0001234'], { string: 's' }).s; + t.equal(s, '0001234'); + t.equal(typeof s, 'string'); + + var x = parse(['-x', '56'], { string: 'x' }).x; + t.equal(x, '56'); + t.equal(typeof x, 'string'); + t.end(); +}); + +test('stringArgs', function (t) { + var s = parse([' ', ' '], { string: '_' })._; + t.same(s.length, 2); + t.same(typeof s[0], 'string'); + t.same(s[0], ' '); + t.same(typeof s[1], 'string'); + t.same(s[1], ' '); + t.end(); +}); + +test('empty strings', function (t) { + var s = parse(['-s'], { string: 's' }).s; + t.equal(s, ''); + t.equal(typeof s, 'string'); + + var str = parse(['--str'], { string: 'str' }).str; + t.equal(str, ''); + t.equal(typeof str, 'string'); + + var letters = parse(['-art'], { + string: ['a', 't'], + }); + + t.equal(letters.a, ''); + t.equal(letters.r, true); + t.equal(letters.t, ''); + + t.end(); +}); + +test('string and alias', function (t) { + var x = parse(['--str', '000123'], { + string: 's', + alias: { s: 'str' }, + }); + + t.equal(x.str, '000123'); + t.equal(typeof x.str, 'string'); + t.equal(x.s, '000123'); + t.equal(typeof x.s, 'string'); + + var y = parse(['-s', '000123'], { + string: 'str', + alias: { str: 's' }, + }); + + t.equal(y.str, '000123'); + t.equal(typeof y.str, 'string'); + t.equal(y.s, '000123'); + t.equal(typeof y.s, 'string'); + + var z = parse(['-s123'], { + alias: { str: ['s', 'S'] }, + string: ['str'], + }); + + t.deepEqual( + z, + { _: [], s: '123', S: '123', str: '123' }, + 'opt.string works with multiple aliases' + ); + t.end(); +}); + +test('slashBreak', function (t) { + t.same( + parse(['-I/foo/bar/baz']), + { I: '/foo/bar/baz', _: [] } + ); + t.same( + parse(['-xyz/foo/bar/baz']), + { x: true, y: true, z: '/foo/bar/baz', _: [] } + ); + t.end(); +}); + +test('alias', function (t) { + var argv = parse(['-f', '11', '--zoom', '55'], { + alias: { z: 'zoom' }, + }); + t.equal(argv.zoom, 55); + t.equal(argv.z, argv.zoom); + t.equal(argv.f, 11); + t.end(); +}); + +test('multiAlias', function (t) { + var argv = parse(['-f', '11', '--zoom', '55'], { + alias: { z: ['zm', 'zoom'] }, + }); + t.equal(argv.zoom, 55); + t.equal(argv.z, argv.zoom); + t.equal(argv.z, argv.zm); + t.equal(argv.f, 11); + t.end(); +}); + +test('nested dotted objects', function (t) { + var argv = parse([ + '--foo.bar', '3', '--foo.baz', '4', + '--foo.quux.quibble', '5', '--foo.quux.o_O', + '--beep.boop', + ]); + + t.same(argv.foo, { + bar: 3, + baz: 4, + quux: { + quibble: 5, + o_O: true, + }, + }); + t.same(argv.beep, { boop: true }); + t.end(); +}); diff --git a/node_backend/node_modules/minimist/test/parse_modified.js b/node_backend/node_modules/minimist/test/parse_modified.js new file mode 100644 index 00000000..32965d13 --- /dev/null +++ b/node_backend/node_modules/minimist/test/parse_modified.js @@ -0,0 +1,11 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('parse with modifier functions', function (t) { + t.plan(1); + + var argv = parse(['-b', '123'], { boolean: 'b' }); + t.deepEqual(argv, { b: true, _: [123] }); +}); diff --git a/node_backend/node_modules/minimist/test/proto.js b/node_backend/node_modules/minimist/test/proto.js new file mode 100644 index 00000000..6e629dd3 --- /dev/null +++ b/node_backend/node_modules/minimist/test/proto.js @@ -0,0 +1,64 @@ +'use strict'; + +/* eslint no-proto: 0 */ + +var parse = require('../'); +var test = require('tape'); + +test('proto pollution', function (t) { + var argv = parse(['--__proto__.x', '123']); + t.equal({}.x, undefined); + t.equal(argv.__proto__.x, undefined); + t.equal(argv.x, undefined); + t.end(); +}); + +test('proto pollution (array)', function (t) { + var argv = parse(['--x', '4', '--x', '5', '--x.__proto__.z', '789']); + t.equal({}.z, undefined); + t.deepEqual(argv.x, [4, 5]); + t.equal(argv.x.z, undefined); + t.equal(argv.x.__proto__.z, undefined); + t.end(); +}); + +test('proto pollution (number)', function (t) { + var argv = parse(['--x', '5', '--x.__proto__.z', '100']); + t.equal({}.z, undefined); + t.equal((4).z, undefined); + t.equal(argv.x, 5); + t.equal(argv.x.z, undefined); + t.end(); +}); + +test('proto pollution (string)', function (t) { + var argv = parse(['--x', 'abc', '--x.__proto__.z', 'def']); + t.equal({}.z, undefined); + t.equal('...'.z, undefined); + t.equal(argv.x, 'abc'); + t.equal(argv.x.z, undefined); + t.end(); +}); + +test('proto pollution (constructor)', function (t) { + var argv = parse(['--constructor.prototype.y', '123']); + t.equal({}.y, undefined); + t.equal(argv.y, undefined); + t.end(); +}); + +test('proto pollution (constructor function)', function (t) { + var argv = parse(['--_.concat.constructor.prototype.y', '123']); + function fnToBeTested() {} + t.equal(fnToBeTested.y, undefined); + t.equal(argv.y, undefined); + t.end(); +}); + +// powered by snyk - https://github.com/backstage/backstage/issues/10343 +test('proto pollution (constructor function) snyk', function (t) { + var argv = parse('--_.constructor.constructor.prototype.foo bar'.split(' ')); + t.equal(function () {}.foo, undefined); + t.equal(argv.y, undefined); + t.end(); +}); diff --git a/node_backend/node_modules/minimist/test/short.js b/node_backend/node_modules/minimist/test/short.js new file mode 100644 index 00000000..4a7b8438 --- /dev/null +++ b/node_backend/node_modules/minimist/test/short.js @@ -0,0 +1,69 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('numeric short args', function (t) { + t.plan(2); + t.deepEqual(parse(['-n123']), { n: 123, _: [] }); + t.deepEqual( + parse(['-123', '456']), + { 1: true, 2: true, 3: 456, _: [] } + ); +}); + +test('short', function (t) { + t.deepEqual( + parse(['-b']), + { b: true, _: [] }, + 'short boolean' + ); + t.deepEqual( + parse(['foo', 'bar', 'baz']), + { _: ['foo', 'bar', 'baz'] }, + 'bare' + ); + t.deepEqual( + parse(['-cats']), + { c: true, a: true, t: true, s: true, _: [] }, + 'group' + ); + t.deepEqual( + parse(['-cats', 'meow']), + { c: true, a: true, t: true, s: 'meow', _: [] }, + 'short group next' + ); + t.deepEqual( + parse(['-h', 'localhost']), + { h: 'localhost', _: [] }, + 'short capture' + ); + t.deepEqual( + parse(['-h', 'localhost', '-p', '555']), + { h: 'localhost', p: 555, _: [] }, + 'short captures' + ); + t.end(); +}); + +test('mixed short bool and capture', function (t) { + t.same( + parse(['-h', 'localhost', '-fp', '555', 'script.js']), + { + f: true, p: 555, h: 'localhost', + _: ['script.js'], + } + ); + t.end(); +}); + +test('short and long', function (t) { + t.deepEqual( + parse(['-h', 'localhost', '-fp', '555', 'script.js']), + { + f: true, p: 555, h: 'localhost', + _: ['script.js'], + } + ); + t.end(); +}); diff --git a/node_backend/node_modules/minimist/test/stop_early.js b/node_backend/node_modules/minimist/test/stop_early.js new file mode 100644 index 00000000..52a6a919 --- /dev/null +++ b/node_backend/node_modules/minimist/test/stop_early.js @@ -0,0 +1,17 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('stops parsing on the first non-option when stopEarly is set', function (t) { + var argv = parse(['--aaa', 'bbb', 'ccc', '--ddd'], { + stopEarly: true, + }); + + t.deepEqual(argv, { + aaa: 'bbb', + _: ['ccc', '--ddd'], + }); + + t.end(); +}); diff --git a/node_backend/node_modules/minimist/test/unknown.js b/node_backend/node_modules/minimist/test/unknown.js new file mode 100644 index 00000000..4f2e0ca4 --- /dev/null +++ b/node_backend/node_modules/minimist/test/unknown.js @@ -0,0 +1,104 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('boolean and alias is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var aliased = ['-h', 'true', '--derp', 'true']; + var regular = ['--herp', 'true', '-d', 'true']; + var opts = { + alias: { h: 'herp' }, + boolean: 'h', + unknown: unknownFn, + }; + parse(aliased, opts); + parse(regular, opts); + + t.same(unknown, ['--derp', '-d']); + t.end(); +}); + +test('flag boolean true any double hyphen argument is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var argv = parse(['--honk', '--tacos=good', 'cow', '-p', '55'], { + boolean: true, + unknown: unknownFn, + }); + t.same(unknown, ['--tacos=good', 'cow', '-p']); + t.same(argv, { + honk: true, + _: [], + }); + t.end(); +}); + +test('string and alias is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var aliased = ['-h', 'hello', '--derp', 'goodbye']; + var regular = ['--herp', 'hello', '-d', 'moon']; + var opts = { + alias: { h: 'herp' }, + string: 'h', + unknown: unknownFn, + }; + parse(aliased, opts); + parse(regular, opts); + + t.same(unknown, ['--derp', '-d']); + t.end(); +}); + +test('default and alias is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var aliased = ['-h', 'hello']; + var regular = ['--herp', 'hello']; + var opts = { + default: { h: 'bar' }, + alias: { h: 'herp' }, + unknown: unknownFn, + }; + parse(aliased, opts); + parse(regular, opts); + + t.same(unknown, []); + t.end(); + unknownFn(); // exercise fn for 100% coverage +}); + +test('value following -- is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var aliased = ['--bad', '--', 'good', 'arg']; + var opts = { + '--': true, + unknown: unknownFn, + }; + var argv = parse(aliased, opts); + + t.same(unknown, ['--bad']); + t.same(argv, { + '--': ['good', 'arg'], + _: [], + }); + t.end(); +}); diff --git a/node_backend/node_modules/minimist/test/whitespace.js b/node_backend/node_modules/minimist/test/whitespace.js new file mode 100644 index 00000000..4fdaf1d3 --- /dev/null +++ b/node_backend/node_modules/minimist/test/whitespace.js @@ -0,0 +1,10 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('whitespace should be whitespace', function (t) { + t.plan(1); + var x = parse(['-x', '\t']).x; + t.equal(x, '\t'); +}); diff --git a/Inscripciones_UAIE/node_backend/node_modules/minipass/LICENSE b/node_backend/node_modules/minipass/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minipass/LICENSE rename to node_backend/node_modules/minipass/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/minipass/README.md b/node_backend/node_modules/minipass/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minipass/README.md rename to node_backend/node_modules/minipass/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/minipass/index.d.ts b/node_backend/node_modules/minipass/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minipass/index.d.ts rename to node_backend/node_modules/minipass/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/minipass/index.js b/node_backend/node_modules/minipass/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minipass/index.js rename to node_backend/node_modules/minipass/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/minipass/index.mjs b/node_backend/node_modules/minipass/index.mjs similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minipass/index.mjs rename to node_backend/node_modules/minipass/index.mjs diff --git a/Inscripciones_UAIE/node_backend/node_modules/minipass/package.json b/node_backend/node_modules/minipass/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minipass/package.json rename to node_backend/node_modules/minipass/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/minizlib/LICENSE b/node_backend/node_modules/minizlib/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minizlib/LICENSE rename to node_backend/node_modules/minizlib/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/minizlib/README.md b/node_backend/node_modules/minizlib/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minizlib/README.md rename to node_backend/node_modules/minizlib/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/minizlib/constants.js b/node_backend/node_modules/minizlib/constants.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minizlib/constants.js rename to node_backend/node_modules/minizlib/constants.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/minizlib/index.js b/node_backend/node_modules/minizlib/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minizlib/index.js rename to node_backend/node_modules/minizlib/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/minizlib/node_modules/minipass/LICENSE b/node_backend/node_modules/minizlib/node_modules/minipass/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minizlib/node_modules/minipass/LICENSE rename to node_backend/node_modules/minizlib/node_modules/minipass/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/minizlib/node_modules/minipass/README.md b/node_backend/node_modules/minizlib/node_modules/minipass/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minizlib/node_modules/minipass/README.md rename to node_backend/node_modules/minizlib/node_modules/minipass/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/minizlib/node_modules/minipass/index.d.ts b/node_backend/node_modules/minizlib/node_modules/minipass/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minizlib/node_modules/minipass/index.d.ts rename to node_backend/node_modules/minizlib/node_modules/minipass/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/minizlib/node_modules/minipass/index.js b/node_backend/node_modules/minizlib/node_modules/minipass/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minizlib/node_modules/minipass/index.js rename to node_backend/node_modules/minizlib/node_modules/minipass/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/minizlib/node_modules/minipass/package.json b/node_backend/node_modules/minizlib/node_modules/minipass/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minizlib/node_modules/minipass/package.json rename to node_backend/node_modules/minizlib/node_modules/minipass/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/minizlib/package.json b/node_backend/node_modules/minizlib/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/minizlib/package.json rename to node_backend/node_modules/minizlib/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/mkdirp/CHANGELOG.md b/node_backend/node_modules/mkdirp/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mkdirp/CHANGELOG.md rename to node_backend/node_modules/mkdirp/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mkdirp/LICENSE b/node_backend/node_modules/mkdirp/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mkdirp/LICENSE rename to node_backend/node_modules/mkdirp/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/mkdirp/bin/cmd.js b/node_backend/node_modules/mkdirp/bin/cmd.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mkdirp/bin/cmd.js rename to node_backend/node_modules/mkdirp/bin/cmd.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mkdirp/index.js b/node_backend/node_modules/mkdirp/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mkdirp/index.js rename to node_backend/node_modules/mkdirp/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mkdirp/lib/find-made.js b/node_backend/node_modules/mkdirp/lib/find-made.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mkdirp/lib/find-made.js rename to node_backend/node_modules/mkdirp/lib/find-made.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mkdirp/lib/mkdirp-manual.js b/node_backend/node_modules/mkdirp/lib/mkdirp-manual.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mkdirp/lib/mkdirp-manual.js rename to node_backend/node_modules/mkdirp/lib/mkdirp-manual.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mkdirp/lib/mkdirp-native.js b/node_backend/node_modules/mkdirp/lib/mkdirp-native.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mkdirp/lib/mkdirp-native.js rename to node_backend/node_modules/mkdirp/lib/mkdirp-native.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mkdirp/lib/opts-arg.js b/node_backend/node_modules/mkdirp/lib/opts-arg.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mkdirp/lib/opts-arg.js rename to node_backend/node_modules/mkdirp/lib/opts-arg.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mkdirp/lib/path-arg.js b/node_backend/node_modules/mkdirp/lib/path-arg.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mkdirp/lib/path-arg.js rename to node_backend/node_modules/mkdirp/lib/path-arg.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mkdirp/lib/use-native.js b/node_backend/node_modules/mkdirp/lib/use-native.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mkdirp/lib/use-native.js rename to node_backend/node_modules/mkdirp/lib/use-native.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mkdirp/package.json b/node_backend/node_modules/mkdirp/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mkdirp/package.json rename to node_backend/node_modules/mkdirp/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/mkdirp/readme.markdown b/node_backend/node_modules/mkdirp/readme.markdown similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mkdirp/readme.markdown rename to node_backend/node_modules/mkdirp/readme.markdown diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/.esm-wrapper.mjs b/node_backend/node_modules/mongodb-connection-string-url/.esm-wrapper.mjs similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/.esm-wrapper.mjs rename to node_backend/node_modules/mongodb-connection-string-url/.esm-wrapper.mjs diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/LICENSE b/node_backend/node_modules/mongodb-connection-string-url/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/LICENSE rename to node_backend/node_modules/mongodb-connection-string-url/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/README.md b/node_backend/node_modules/mongodb-connection-string-url/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/README.md rename to node_backend/node_modules/mongodb-connection-string-url/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/lib/index.d.ts b/node_backend/node_modules/mongodb-connection-string-url/lib/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/lib/index.d.ts rename to node_backend/node_modules/mongodb-connection-string-url/lib/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/lib/index.js b/node_backend/node_modules/mongodb-connection-string-url/lib/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/lib/index.js rename to node_backend/node_modules/mongodb-connection-string-url/lib/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/lib/index.js.map b/node_backend/node_modules/mongodb-connection-string-url/lib/index.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/lib/index.js.map rename to node_backend/node_modules/mongodb-connection-string-url/lib/index.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/lib/redact.d.ts b/node_backend/node_modules/mongodb-connection-string-url/lib/redact.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/lib/redact.d.ts rename to node_backend/node_modules/mongodb-connection-string-url/lib/redact.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/lib/redact.js b/node_backend/node_modules/mongodb-connection-string-url/lib/redact.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/lib/redact.js rename to node_backend/node_modules/mongodb-connection-string-url/lib/redact.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/lib/redact.js.map b/node_backend/node_modules/mongodb-connection-string-url/lib/redact.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/lib/redact.js.map rename to node_backend/node_modules/mongodb-connection-string-url/lib/redact.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/package.json b/node_backend/node_modules/mongodb-connection-string-url/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb-connection-string-url/package.json rename to node_backend/node_modules/mongodb-connection-string-url/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/LICENSE.md b/node_backend/node_modules/mongodb/LICENSE.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/LICENSE.md rename to node_backend/node_modules/mongodb/LICENSE.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/README.md b/node_backend/node_modules/mongodb/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/README.md rename to node_backend/node_modules/mongodb/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/etc/prepare.js b/node_backend/node_modules/mongodb/etc/prepare.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/etc/prepare.js rename to node_backend/node_modules/mongodb/etc/prepare.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/admin.js b/node_backend/node_modules/mongodb/lib/admin.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/admin.js rename to node_backend/node_modules/mongodb/lib/admin.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/admin.js.map b/node_backend/node_modules/mongodb/lib/admin.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/admin.js.map rename to node_backend/node_modules/mongodb/lib/admin.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/beta.d.ts b/node_backend/node_modules/mongodb/lib/beta.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/beta.d.ts rename to node_backend/node_modules/mongodb/lib/beta.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/beta.js b/node_backend/node_modules/mongodb/lib/beta.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/beta.js rename to node_backend/node_modules/mongodb/lib/beta.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/beta.js.map b/node_backend/node_modules/mongodb/lib/beta.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/beta.js.map rename to node_backend/node_modules/mongodb/lib/beta.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/bson.js b/node_backend/node_modules/mongodb/lib/bson.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/bson.js rename to node_backend/node_modules/mongodb/lib/bson.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/bson.js.map b/node_backend/node_modules/mongodb/lib/bson.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/bson.js.map rename to node_backend/node_modules/mongodb/lib/bson.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/bulk/common.js b/node_backend/node_modules/mongodb/lib/bulk/common.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/bulk/common.js rename to node_backend/node_modules/mongodb/lib/bulk/common.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/bulk/common.js.map b/node_backend/node_modules/mongodb/lib/bulk/common.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/bulk/common.js.map rename to node_backend/node_modules/mongodb/lib/bulk/common.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/bulk/ordered.js b/node_backend/node_modules/mongodb/lib/bulk/ordered.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/bulk/ordered.js rename to node_backend/node_modules/mongodb/lib/bulk/ordered.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/bulk/ordered.js.map b/node_backend/node_modules/mongodb/lib/bulk/ordered.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/bulk/ordered.js.map rename to node_backend/node_modules/mongodb/lib/bulk/ordered.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/bulk/unordered.js b/node_backend/node_modules/mongodb/lib/bulk/unordered.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/bulk/unordered.js rename to node_backend/node_modules/mongodb/lib/bulk/unordered.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/bulk/unordered.js.map b/node_backend/node_modules/mongodb/lib/bulk/unordered.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/bulk/unordered.js.map rename to node_backend/node_modules/mongodb/lib/bulk/unordered.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/change_stream.js b/node_backend/node_modules/mongodb/lib/change_stream.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/change_stream.js rename to node_backend/node_modules/mongodb/lib/change_stream.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/change_stream.js.map b/node_backend/node_modules/mongodb/lib/change_stream.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/change_stream.js.map rename to node_backend/node_modules/mongodb/lib/change_stream.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/auto_encrypter.js b/node_backend/node_modules/mongodb/lib/client-side-encryption/auto_encrypter.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/auto_encrypter.js rename to node_backend/node_modules/mongodb/lib/client-side-encryption/auto_encrypter.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/auto_encrypter.js.map b/node_backend/node_modules/mongodb/lib/client-side-encryption/auto_encrypter.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/auto_encrypter.js.map rename to node_backend/node_modules/mongodb/lib/client-side-encryption/auto_encrypter.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/client_encryption.js b/node_backend/node_modules/mongodb/lib/client-side-encryption/client_encryption.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/client_encryption.js rename to node_backend/node_modules/mongodb/lib/client-side-encryption/client_encryption.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/client_encryption.js.map b/node_backend/node_modules/mongodb/lib/client-side-encryption/client_encryption.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/client_encryption.js.map rename to node_backend/node_modules/mongodb/lib/client-side-encryption/client_encryption.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/crypto_callbacks.js b/node_backend/node_modules/mongodb/lib/client-side-encryption/crypto_callbacks.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/crypto_callbacks.js rename to node_backend/node_modules/mongodb/lib/client-side-encryption/crypto_callbacks.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/crypto_callbacks.js.map b/node_backend/node_modules/mongodb/lib/client-side-encryption/crypto_callbacks.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/crypto_callbacks.js.map rename to node_backend/node_modules/mongodb/lib/client-side-encryption/crypto_callbacks.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/errors.js b/node_backend/node_modules/mongodb/lib/client-side-encryption/errors.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/errors.js rename to node_backend/node_modules/mongodb/lib/client-side-encryption/errors.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/errors.js.map b/node_backend/node_modules/mongodb/lib/client-side-encryption/errors.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/errors.js.map rename to node_backend/node_modules/mongodb/lib/client-side-encryption/errors.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/mongocryptd_manager.js b/node_backend/node_modules/mongodb/lib/client-side-encryption/mongocryptd_manager.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/mongocryptd_manager.js rename to node_backend/node_modules/mongodb/lib/client-side-encryption/mongocryptd_manager.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/mongocryptd_manager.js.map b/node_backend/node_modules/mongodb/lib/client-side-encryption/mongocryptd_manager.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/mongocryptd_manager.js.map rename to node_backend/node_modules/mongodb/lib/client-side-encryption/mongocryptd_manager.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/aws.js b/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/aws.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/aws.js rename to node_backend/node_modules/mongodb/lib/client-side-encryption/providers/aws.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/aws.js.map b/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/aws.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/aws.js.map rename to node_backend/node_modules/mongodb/lib/client-side-encryption/providers/aws.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/azure.js b/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/azure.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/azure.js rename to node_backend/node_modules/mongodb/lib/client-side-encryption/providers/azure.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/azure.js.map b/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/azure.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/azure.js.map rename to node_backend/node_modules/mongodb/lib/client-side-encryption/providers/azure.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/gcp.js b/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/gcp.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/gcp.js rename to node_backend/node_modules/mongodb/lib/client-side-encryption/providers/gcp.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/gcp.js.map b/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/gcp.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/gcp.js.map rename to node_backend/node_modules/mongodb/lib/client-side-encryption/providers/gcp.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/index.js b/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/index.js rename to node_backend/node_modules/mongodb/lib/client-side-encryption/providers/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/index.js.map b/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/index.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/providers/index.js.map rename to node_backend/node_modules/mongodb/lib/client-side-encryption/providers/index.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/state_machine.js b/node_backend/node_modules/mongodb/lib/client-side-encryption/state_machine.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/state_machine.js rename to node_backend/node_modules/mongodb/lib/client-side-encryption/state_machine.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/state_machine.js.map b/node_backend/node_modules/mongodb/lib/client-side-encryption/state_machine.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/client-side-encryption/state_machine.js.map rename to node_backend/node_modules/mongodb/lib/client-side-encryption/state_machine.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/auth_provider.js b/node_backend/node_modules/mongodb/lib/cmap/auth/auth_provider.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/auth_provider.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/auth_provider.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/auth_provider.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/auth_provider.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/auth_provider.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/auth_provider.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/aws_temporary_credentials.js b/node_backend/node_modules/mongodb/lib/cmap/auth/aws_temporary_credentials.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/aws_temporary_credentials.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/aws_temporary_credentials.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/aws_temporary_credentials.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/aws_temporary_credentials.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/aws_temporary_credentials.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/aws_temporary_credentials.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/gssapi.js b/node_backend/node_modules/mongodb/lib/cmap/auth/gssapi.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/gssapi.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/gssapi.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/gssapi.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/gssapi.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/gssapi.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/gssapi.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongo_credentials.js b/node_backend/node_modules/mongodb/lib/cmap/auth/mongo_credentials.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongo_credentials.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongo_credentials.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongo_credentials.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/mongo_credentials.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongo_credentials.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongo_credentials.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc.js b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/machine_workflow.js b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/machine_workflow.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/machine_workflow.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/machine_workflow.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/machine_workflow.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/machine_workflow.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/machine_workflow.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/machine_workflow.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/plain.js b/node_backend/node_modules/mongodb/lib/cmap/auth/plain.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/plain.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/plain.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/plain.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/plain.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/plain.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/plain.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/providers.js b/node_backend/node_modules/mongodb/lib/cmap/auth/providers.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/providers.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/providers.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/providers.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/providers.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/providers.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/providers.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/scram.js b/node_backend/node_modules/mongodb/lib/cmap/auth/scram.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/scram.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/scram.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/scram.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/scram.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/scram.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/scram.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/x509.js b/node_backend/node_modules/mongodb/lib/cmap/auth/x509.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/x509.js rename to node_backend/node_modules/mongodb/lib/cmap/auth/x509.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/x509.js.map b/node_backend/node_modules/mongodb/lib/cmap/auth/x509.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/auth/x509.js.map rename to node_backend/node_modules/mongodb/lib/cmap/auth/x509.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/command_monitoring_events.js b/node_backend/node_modules/mongodb/lib/cmap/command_monitoring_events.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/command_monitoring_events.js rename to node_backend/node_modules/mongodb/lib/cmap/command_monitoring_events.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/command_monitoring_events.js.map b/node_backend/node_modules/mongodb/lib/cmap/command_monitoring_events.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/command_monitoring_events.js.map rename to node_backend/node_modules/mongodb/lib/cmap/command_monitoring_events.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/commands.js b/node_backend/node_modules/mongodb/lib/cmap/commands.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/commands.js rename to node_backend/node_modules/mongodb/lib/cmap/commands.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/commands.js.map b/node_backend/node_modules/mongodb/lib/cmap/commands.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/commands.js.map rename to node_backend/node_modules/mongodb/lib/cmap/commands.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/connect.js b/node_backend/node_modules/mongodb/lib/cmap/connect.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/connect.js rename to node_backend/node_modules/mongodb/lib/cmap/connect.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/connect.js.map b/node_backend/node_modules/mongodb/lib/cmap/connect.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/connect.js.map rename to node_backend/node_modules/mongodb/lib/cmap/connect.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/connection.js b/node_backend/node_modules/mongodb/lib/cmap/connection.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/connection.js rename to node_backend/node_modules/mongodb/lib/cmap/connection.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/connection.js.map b/node_backend/node_modules/mongodb/lib/cmap/connection.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/connection.js.map rename to node_backend/node_modules/mongodb/lib/cmap/connection.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/connection_pool.js b/node_backend/node_modules/mongodb/lib/cmap/connection_pool.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/connection_pool.js rename to node_backend/node_modules/mongodb/lib/cmap/connection_pool.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/connection_pool.js.map b/node_backend/node_modules/mongodb/lib/cmap/connection_pool.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/connection_pool.js.map rename to node_backend/node_modules/mongodb/lib/cmap/connection_pool.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/connection_pool_events.js b/node_backend/node_modules/mongodb/lib/cmap/connection_pool_events.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/connection_pool_events.js rename to node_backend/node_modules/mongodb/lib/cmap/connection_pool_events.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/connection_pool_events.js.map b/node_backend/node_modules/mongodb/lib/cmap/connection_pool_events.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/connection_pool_events.js.map rename to node_backend/node_modules/mongodb/lib/cmap/connection_pool_events.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/errors.js b/node_backend/node_modules/mongodb/lib/cmap/errors.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/errors.js rename to node_backend/node_modules/mongodb/lib/cmap/errors.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/errors.js.map b/node_backend/node_modules/mongodb/lib/cmap/errors.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/errors.js.map rename to node_backend/node_modules/mongodb/lib/cmap/errors.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/handshake/client_metadata.js b/node_backend/node_modules/mongodb/lib/cmap/handshake/client_metadata.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/handshake/client_metadata.js rename to node_backend/node_modules/mongodb/lib/cmap/handshake/client_metadata.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/handshake/client_metadata.js.map b/node_backend/node_modules/mongodb/lib/cmap/handshake/client_metadata.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/handshake/client_metadata.js.map rename to node_backend/node_modules/mongodb/lib/cmap/handshake/client_metadata.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/metrics.js b/node_backend/node_modules/mongodb/lib/cmap/metrics.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/metrics.js rename to node_backend/node_modules/mongodb/lib/cmap/metrics.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/metrics.js.map b/node_backend/node_modules/mongodb/lib/cmap/metrics.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/metrics.js.map rename to node_backend/node_modules/mongodb/lib/cmap/metrics.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/stream_description.js b/node_backend/node_modules/mongodb/lib/cmap/stream_description.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/stream_description.js rename to node_backend/node_modules/mongodb/lib/cmap/stream_description.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/stream_description.js.map b/node_backend/node_modules/mongodb/lib/cmap/stream_description.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/stream_description.js.map rename to node_backend/node_modules/mongodb/lib/cmap/stream_description.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/compression.js b/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/compression.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/compression.js rename to node_backend/node_modules/mongodb/lib/cmap/wire_protocol/compression.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/compression.js.map b/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/compression.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/compression.js.map rename to node_backend/node_modules/mongodb/lib/cmap/wire_protocol/compression.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/constants.js b/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/constants.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/constants.js rename to node_backend/node_modules/mongodb/lib/cmap/wire_protocol/constants.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/constants.js.map b/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/constants.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/constants.js.map rename to node_backend/node_modules/mongodb/lib/cmap/wire_protocol/constants.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/on_data.js b/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/on_data.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/on_data.js rename to node_backend/node_modules/mongodb/lib/cmap/wire_protocol/on_data.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/on_data.js.map b/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/on_data.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/on_data.js.map rename to node_backend/node_modules/mongodb/lib/cmap/wire_protocol/on_data.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/on_demand/document.js b/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/on_demand/document.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/on_demand/document.js rename to node_backend/node_modules/mongodb/lib/cmap/wire_protocol/on_demand/document.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/on_demand/document.js.map b/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/on_demand/document.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/on_demand/document.js.map rename to node_backend/node_modules/mongodb/lib/cmap/wire_protocol/on_demand/document.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/responses.js b/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/responses.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/responses.js rename to node_backend/node_modules/mongodb/lib/cmap/wire_protocol/responses.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/responses.js.map b/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/responses.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/responses.js.map rename to node_backend/node_modules/mongodb/lib/cmap/wire_protocol/responses.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/shared.js b/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/shared.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/shared.js rename to node_backend/node_modules/mongodb/lib/cmap/wire_protocol/shared.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/shared.js.map b/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/shared.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cmap/wire_protocol/shared.js.map rename to node_backend/node_modules/mongodb/lib/cmap/wire_protocol/shared.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/collection.js b/node_backend/node_modules/mongodb/lib/collection.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/collection.js rename to node_backend/node_modules/mongodb/lib/collection.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/collection.js.map b/node_backend/node_modules/mongodb/lib/collection.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/collection.js.map rename to node_backend/node_modules/mongodb/lib/collection.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/connection_string.js b/node_backend/node_modules/mongodb/lib/connection_string.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/connection_string.js rename to node_backend/node_modules/mongodb/lib/connection_string.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/connection_string.js.map b/node_backend/node_modules/mongodb/lib/connection_string.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/connection_string.js.map rename to node_backend/node_modules/mongodb/lib/connection_string.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/constants.js b/node_backend/node_modules/mongodb/lib/constants.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/constants.js rename to node_backend/node_modules/mongodb/lib/constants.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/constants.js.map b/node_backend/node_modules/mongodb/lib/constants.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/constants.js.map rename to node_backend/node_modules/mongodb/lib/constants.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/abstract_cursor.js b/node_backend/node_modules/mongodb/lib/cursor/abstract_cursor.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/abstract_cursor.js rename to node_backend/node_modules/mongodb/lib/cursor/abstract_cursor.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/abstract_cursor.js.map b/node_backend/node_modules/mongodb/lib/cursor/abstract_cursor.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/abstract_cursor.js.map rename to node_backend/node_modules/mongodb/lib/cursor/abstract_cursor.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/aggregation_cursor.js b/node_backend/node_modules/mongodb/lib/cursor/aggregation_cursor.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/aggregation_cursor.js rename to node_backend/node_modules/mongodb/lib/cursor/aggregation_cursor.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/aggregation_cursor.js.map b/node_backend/node_modules/mongodb/lib/cursor/aggregation_cursor.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/aggregation_cursor.js.map rename to node_backend/node_modules/mongodb/lib/cursor/aggregation_cursor.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/change_stream_cursor.js b/node_backend/node_modules/mongodb/lib/cursor/change_stream_cursor.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/change_stream_cursor.js rename to node_backend/node_modules/mongodb/lib/cursor/change_stream_cursor.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/change_stream_cursor.js.map b/node_backend/node_modules/mongodb/lib/cursor/change_stream_cursor.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/change_stream_cursor.js.map rename to node_backend/node_modules/mongodb/lib/cursor/change_stream_cursor.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/client_bulk_write_cursor.js b/node_backend/node_modules/mongodb/lib/cursor/client_bulk_write_cursor.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/client_bulk_write_cursor.js rename to node_backend/node_modules/mongodb/lib/cursor/client_bulk_write_cursor.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/client_bulk_write_cursor.js.map b/node_backend/node_modules/mongodb/lib/cursor/client_bulk_write_cursor.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/client_bulk_write_cursor.js.map rename to node_backend/node_modules/mongodb/lib/cursor/client_bulk_write_cursor.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/find_cursor.js b/node_backend/node_modules/mongodb/lib/cursor/find_cursor.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/find_cursor.js rename to node_backend/node_modules/mongodb/lib/cursor/find_cursor.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/find_cursor.js.map b/node_backend/node_modules/mongodb/lib/cursor/find_cursor.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/find_cursor.js.map rename to node_backend/node_modules/mongodb/lib/cursor/find_cursor.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/list_collections_cursor.js b/node_backend/node_modules/mongodb/lib/cursor/list_collections_cursor.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/list_collections_cursor.js rename to node_backend/node_modules/mongodb/lib/cursor/list_collections_cursor.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/list_collections_cursor.js.map b/node_backend/node_modules/mongodb/lib/cursor/list_collections_cursor.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/list_collections_cursor.js.map rename to node_backend/node_modules/mongodb/lib/cursor/list_collections_cursor.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/list_indexes_cursor.js b/node_backend/node_modules/mongodb/lib/cursor/list_indexes_cursor.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/list_indexes_cursor.js rename to node_backend/node_modules/mongodb/lib/cursor/list_indexes_cursor.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/list_indexes_cursor.js.map b/node_backend/node_modules/mongodb/lib/cursor/list_indexes_cursor.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/list_indexes_cursor.js.map rename to node_backend/node_modules/mongodb/lib/cursor/list_indexes_cursor.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/list_search_indexes_cursor.js b/node_backend/node_modules/mongodb/lib/cursor/list_search_indexes_cursor.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/list_search_indexes_cursor.js rename to node_backend/node_modules/mongodb/lib/cursor/list_search_indexes_cursor.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/list_search_indexes_cursor.js.map b/node_backend/node_modules/mongodb/lib/cursor/list_search_indexes_cursor.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/list_search_indexes_cursor.js.map rename to node_backend/node_modules/mongodb/lib/cursor/list_search_indexes_cursor.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/run_command_cursor.js b/node_backend/node_modules/mongodb/lib/cursor/run_command_cursor.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/run_command_cursor.js rename to node_backend/node_modules/mongodb/lib/cursor/run_command_cursor.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/run_command_cursor.js.map b/node_backend/node_modules/mongodb/lib/cursor/run_command_cursor.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/cursor/run_command_cursor.js.map rename to node_backend/node_modules/mongodb/lib/cursor/run_command_cursor.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/db.js b/node_backend/node_modules/mongodb/lib/db.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/db.js rename to node_backend/node_modules/mongodb/lib/db.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/db.js.map b/node_backend/node_modules/mongodb/lib/db.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/db.js.map rename to node_backend/node_modules/mongodb/lib/db.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/deps.js b/node_backend/node_modules/mongodb/lib/deps.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/deps.js rename to node_backend/node_modules/mongodb/lib/deps.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/deps.js.map b/node_backend/node_modules/mongodb/lib/deps.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/deps.js.map rename to node_backend/node_modules/mongodb/lib/deps.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/encrypter.js b/node_backend/node_modules/mongodb/lib/encrypter.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/encrypter.js rename to node_backend/node_modules/mongodb/lib/encrypter.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/encrypter.js.map b/node_backend/node_modules/mongodb/lib/encrypter.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/encrypter.js.map rename to node_backend/node_modules/mongodb/lib/encrypter.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/error.js b/node_backend/node_modules/mongodb/lib/error.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/error.js rename to node_backend/node_modules/mongodb/lib/error.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/error.js.map b/node_backend/node_modules/mongodb/lib/error.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/error.js.map rename to node_backend/node_modules/mongodb/lib/error.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/explain.js b/node_backend/node_modules/mongodb/lib/explain.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/explain.js rename to node_backend/node_modules/mongodb/lib/explain.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/explain.js.map b/node_backend/node_modules/mongodb/lib/explain.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/explain.js.map rename to node_backend/node_modules/mongodb/lib/explain.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/gridfs/download.js b/node_backend/node_modules/mongodb/lib/gridfs/download.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/gridfs/download.js rename to node_backend/node_modules/mongodb/lib/gridfs/download.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/gridfs/download.js.map b/node_backend/node_modules/mongodb/lib/gridfs/download.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/gridfs/download.js.map rename to node_backend/node_modules/mongodb/lib/gridfs/download.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/gridfs/index.js b/node_backend/node_modules/mongodb/lib/gridfs/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/gridfs/index.js rename to node_backend/node_modules/mongodb/lib/gridfs/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/gridfs/index.js.map b/node_backend/node_modules/mongodb/lib/gridfs/index.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/gridfs/index.js.map rename to node_backend/node_modules/mongodb/lib/gridfs/index.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/gridfs/upload.js b/node_backend/node_modules/mongodb/lib/gridfs/upload.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/gridfs/upload.js rename to node_backend/node_modules/mongodb/lib/gridfs/upload.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/gridfs/upload.js.map b/node_backend/node_modules/mongodb/lib/gridfs/upload.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/gridfs/upload.js.map rename to node_backend/node_modules/mongodb/lib/gridfs/upload.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/index.js b/node_backend/node_modules/mongodb/lib/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/index.js rename to node_backend/node_modules/mongodb/lib/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/index.js.map b/node_backend/node_modules/mongodb/lib/index.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/index.js.map rename to node_backend/node_modules/mongodb/lib/index.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/mongo_client.js b/node_backend/node_modules/mongodb/lib/mongo_client.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/mongo_client.js rename to node_backend/node_modules/mongodb/lib/mongo_client.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/mongo_client.js.map b/node_backend/node_modules/mongodb/lib/mongo_client.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/mongo_client.js.map rename to node_backend/node_modules/mongodb/lib/mongo_client.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/mongo_client_auth_providers.js b/node_backend/node_modules/mongodb/lib/mongo_client_auth_providers.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/mongo_client_auth_providers.js rename to node_backend/node_modules/mongodb/lib/mongo_client_auth_providers.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/mongo_client_auth_providers.js.map b/node_backend/node_modules/mongodb/lib/mongo_client_auth_providers.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/mongo_client_auth_providers.js.map rename to node_backend/node_modules/mongodb/lib/mongo_client_auth_providers.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/mongo_logger.js b/node_backend/node_modules/mongodb/lib/mongo_logger.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/mongo_logger.js rename to node_backend/node_modules/mongodb/lib/mongo_logger.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/mongo_logger.js.map b/node_backend/node_modules/mongodb/lib/mongo_logger.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/mongo_logger.js.map rename to node_backend/node_modules/mongodb/lib/mongo_logger.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/mongo_types.js b/node_backend/node_modules/mongodb/lib/mongo_types.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/mongo_types.js rename to node_backend/node_modules/mongodb/lib/mongo_types.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/mongo_types.js.map b/node_backend/node_modules/mongodb/lib/mongo_types.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/mongo_types.js.map rename to node_backend/node_modules/mongodb/lib/mongo_types.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/aggregate.js b/node_backend/node_modules/mongodb/lib/operations/aggregate.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/aggregate.js rename to node_backend/node_modules/mongodb/lib/operations/aggregate.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/aggregate.js.map b/node_backend/node_modules/mongodb/lib/operations/aggregate.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/aggregate.js.map rename to node_backend/node_modules/mongodb/lib/operations/aggregate.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/bulk_write.js b/node_backend/node_modules/mongodb/lib/operations/bulk_write.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/bulk_write.js rename to node_backend/node_modules/mongodb/lib/operations/bulk_write.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/bulk_write.js.map b/node_backend/node_modules/mongodb/lib/operations/bulk_write.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/bulk_write.js.map rename to node_backend/node_modules/mongodb/lib/operations/bulk_write.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/client_bulk_write.js b/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/client_bulk_write.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/client_bulk_write.js rename to node_backend/node_modules/mongodb/lib/operations/client_bulk_write/client_bulk_write.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/client_bulk_write.js.map b/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/client_bulk_write.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/client_bulk_write.js.map rename to node_backend/node_modules/mongodb/lib/operations/client_bulk_write/client_bulk_write.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/command_builder.js b/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/command_builder.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/command_builder.js rename to node_backend/node_modules/mongodb/lib/operations/client_bulk_write/command_builder.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/command_builder.js.map b/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/command_builder.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/command_builder.js.map rename to node_backend/node_modules/mongodb/lib/operations/client_bulk_write/command_builder.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/common.js b/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/common.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/common.js rename to node_backend/node_modules/mongodb/lib/operations/client_bulk_write/common.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/common.js.map b/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/common.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/common.js.map rename to node_backend/node_modules/mongodb/lib/operations/client_bulk_write/common.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/executor.js b/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/executor.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/executor.js rename to node_backend/node_modules/mongodb/lib/operations/client_bulk_write/executor.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/executor.js.map b/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/executor.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/executor.js.map rename to node_backend/node_modules/mongodb/lib/operations/client_bulk_write/executor.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/results_merger.js b/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/results_merger.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/results_merger.js rename to node_backend/node_modules/mongodb/lib/operations/client_bulk_write/results_merger.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/results_merger.js.map b/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/results_merger.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/client_bulk_write/results_merger.js.map rename to node_backend/node_modules/mongodb/lib/operations/client_bulk_write/results_merger.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/collections.js b/node_backend/node_modules/mongodb/lib/operations/collections.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/collections.js rename to node_backend/node_modules/mongodb/lib/operations/collections.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/collections.js.map b/node_backend/node_modules/mongodb/lib/operations/collections.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/collections.js.map rename to node_backend/node_modules/mongodb/lib/operations/collections.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/command.js b/node_backend/node_modules/mongodb/lib/operations/command.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/command.js rename to node_backend/node_modules/mongodb/lib/operations/command.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/command.js.map b/node_backend/node_modules/mongodb/lib/operations/command.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/command.js.map rename to node_backend/node_modules/mongodb/lib/operations/command.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/count.js b/node_backend/node_modules/mongodb/lib/operations/count.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/count.js rename to node_backend/node_modules/mongodb/lib/operations/count.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/count.js.map b/node_backend/node_modules/mongodb/lib/operations/count.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/count.js.map rename to node_backend/node_modules/mongodb/lib/operations/count.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/create_collection.js b/node_backend/node_modules/mongodb/lib/operations/create_collection.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/create_collection.js rename to node_backend/node_modules/mongodb/lib/operations/create_collection.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/create_collection.js.map b/node_backend/node_modules/mongodb/lib/operations/create_collection.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/create_collection.js.map rename to node_backend/node_modules/mongodb/lib/operations/create_collection.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/delete.js b/node_backend/node_modules/mongodb/lib/operations/delete.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/delete.js rename to node_backend/node_modules/mongodb/lib/operations/delete.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/delete.js.map b/node_backend/node_modules/mongodb/lib/operations/delete.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/delete.js.map rename to node_backend/node_modules/mongodb/lib/operations/delete.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/distinct.js b/node_backend/node_modules/mongodb/lib/operations/distinct.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/distinct.js rename to node_backend/node_modules/mongodb/lib/operations/distinct.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/distinct.js.map b/node_backend/node_modules/mongodb/lib/operations/distinct.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/distinct.js.map rename to node_backend/node_modules/mongodb/lib/operations/distinct.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/drop.js b/node_backend/node_modules/mongodb/lib/operations/drop.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/drop.js rename to node_backend/node_modules/mongodb/lib/operations/drop.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/drop.js.map b/node_backend/node_modules/mongodb/lib/operations/drop.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/drop.js.map rename to node_backend/node_modules/mongodb/lib/operations/drop.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/estimated_document_count.js b/node_backend/node_modules/mongodb/lib/operations/estimated_document_count.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/estimated_document_count.js rename to node_backend/node_modules/mongodb/lib/operations/estimated_document_count.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/estimated_document_count.js.map b/node_backend/node_modules/mongodb/lib/operations/estimated_document_count.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/estimated_document_count.js.map rename to node_backend/node_modules/mongodb/lib/operations/estimated_document_count.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/execute_operation.js b/node_backend/node_modules/mongodb/lib/operations/execute_operation.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/execute_operation.js rename to node_backend/node_modules/mongodb/lib/operations/execute_operation.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/execute_operation.js.map b/node_backend/node_modules/mongodb/lib/operations/execute_operation.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/execute_operation.js.map rename to node_backend/node_modules/mongodb/lib/operations/execute_operation.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/find.js b/node_backend/node_modules/mongodb/lib/operations/find.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/find.js rename to node_backend/node_modules/mongodb/lib/operations/find.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/find.js.map b/node_backend/node_modules/mongodb/lib/operations/find.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/find.js.map rename to node_backend/node_modules/mongodb/lib/operations/find.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/find_and_modify.js b/node_backend/node_modules/mongodb/lib/operations/find_and_modify.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/find_and_modify.js rename to node_backend/node_modules/mongodb/lib/operations/find_and_modify.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/find_and_modify.js.map b/node_backend/node_modules/mongodb/lib/operations/find_and_modify.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/find_and_modify.js.map rename to node_backend/node_modules/mongodb/lib/operations/find_and_modify.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/get_more.js b/node_backend/node_modules/mongodb/lib/operations/get_more.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/get_more.js rename to node_backend/node_modules/mongodb/lib/operations/get_more.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/get_more.js.map b/node_backend/node_modules/mongodb/lib/operations/get_more.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/get_more.js.map rename to node_backend/node_modules/mongodb/lib/operations/get_more.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/indexes.js b/node_backend/node_modules/mongodb/lib/operations/indexes.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/indexes.js rename to node_backend/node_modules/mongodb/lib/operations/indexes.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/indexes.js.map b/node_backend/node_modules/mongodb/lib/operations/indexes.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/indexes.js.map rename to node_backend/node_modules/mongodb/lib/operations/indexes.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/insert.js b/node_backend/node_modules/mongodb/lib/operations/insert.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/insert.js rename to node_backend/node_modules/mongodb/lib/operations/insert.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/insert.js.map b/node_backend/node_modules/mongodb/lib/operations/insert.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/insert.js.map rename to node_backend/node_modules/mongodb/lib/operations/insert.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/is_capped.js b/node_backend/node_modules/mongodb/lib/operations/is_capped.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/is_capped.js rename to node_backend/node_modules/mongodb/lib/operations/is_capped.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/is_capped.js.map b/node_backend/node_modules/mongodb/lib/operations/is_capped.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/is_capped.js.map rename to node_backend/node_modules/mongodb/lib/operations/is_capped.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/kill_cursors.js b/node_backend/node_modules/mongodb/lib/operations/kill_cursors.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/kill_cursors.js rename to node_backend/node_modules/mongodb/lib/operations/kill_cursors.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/kill_cursors.js.map b/node_backend/node_modules/mongodb/lib/operations/kill_cursors.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/kill_cursors.js.map rename to node_backend/node_modules/mongodb/lib/operations/kill_cursors.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/list_collections.js b/node_backend/node_modules/mongodb/lib/operations/list_collections.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/list_collections.js rename to node_backend/node_modules/mongodb/lib/operations/list_collections.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/list_collections.js.map b/node_backend/node_modules/mongodb/lib/operations/list_collections.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/list_collections.js.map rename to node_backend/node_modules/mongodb/lib/operations/list_collections.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/list_databases.js b/node_backend/node_modules/mongodb/lib/operations/list_databases.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/list_databases.js rename to node_backend/node_modules/mongodb/lib/operations/list_databases.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/list_databases.js.map b/node_backend/node_modules/mongodb/lib/operations/list_databases.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/list_databases.js.map rename to node_backend/node_modules/mongodb/lib/operations/list_databases.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/operation.js b/node_backend/node_modules/mongodb/lib/operations/operation.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/operation.js rename to node_backend/node_modules/mongodb/lib/operations/operation.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/operation.js.map b/node_backend/node_modules/mongodb/lib/operations/operation.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/operation.js.map rename to node_backend/node_modules/mongodb/lib/operations/operation.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/options_operation.js b/node_backend/node_modules/mongodb/lib/operations/options_operation.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/options_operation.js rename to node_backend/node_modules/mongodb/lib/operations/options_operation.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/options_operation.js.map b/node_backend/node_modules/mongodb/lib/operations/options_operation.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/options_operation.js.map rename to node_backend/node_modules/mongodb/lib/operations/options_operation.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/profiling_level.js b/node_backend/node_modules/mongodb/lib/operations/profiling_level.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/profiling_level.js rename to node_backend/node_modules/mongodb/lib/operations/profiling_level.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/profiling_level.js.map b/node_backend/node_modules/mongodb/lib/operations/profiling_level.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/profiling_level.js.map rename to node_backend/node_modules/mongodb/lib/operations/profiling_level.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/remove_user.js b/node_backend/node_modules/mongodb/lib/operations/remove_user.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/remove_user.js rename to node_backend/node_modules/mongodb/lib/operations/remove_user.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/remove_user.js.map b/node_backend/node_modules/mongodb/lib/operations/remove_user.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/remove_user.js.map rename to node_backend/node_modules/mongodb/lib/operations/remove_user.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/rename.js b/node_backend/node_modules/mongodb/lib/operations/rename.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/rename.js rename to node_backend/node_modules/mongodb/lib/operations/rename.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/rename.js.map b/node_backend/node_modules/mongodb/lib/operations/rename.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/rename.js.map rename to node_backend/node_modules/mongodb/lib/operations/rename.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/run_command.js b/node_backend/node_modules/mongodb/lib/operations/run_command.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/run_command.js rename to node_backend/node_modules/mongodb/lib/operations/run_command.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/run_command.js.map b/node_backend/node_modules/mongodb/lib/operations/run_command.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/run_command.js.map rename to node_backend/node_modules/mongodb/lib/operations/run_command.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/search_indexes/create.js b/node_backend/node_modules/mongodb/lib/operations/search_indexes/create.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/search_indexes/create.js rename to node_backend/node_modules/mongodb/lib/operations/search_indexes/create.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/search_indexes/create.js.map b/node_backend/node_modules/mongodb/lib/operations/search_indexes/create.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/search_indexes/create.js.map rename to node_backend/node_modules/mongodb/lib/operations/search_indexes/create.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/search_indexes/drop.js b/node_backend/node_modules/mongodb/lib/operations/search_indexes/drop.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/search_indexes/drop.js rename to node_backend/node_modules/mongodb/lib/operations/search_indexes/drop.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/search_indexes/drop.js.map b/node_backend/node_modules/mongodb/lib/operations/search_indexes/drop.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/search_indexes/drop.js.map rename to node_backend/node_modules/mongodb/lib/operations/search_indexes/drop.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/search_indexes/update.js b/node_backend/node_modules/mongodb/lib/operations/search_indexes/update.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/search_indexes/update.js rename to node_backend/node_modules/mongodb/lib/operations/search_indexes/update.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/search_indexes/update.js.map b/node_backend/node_modules/mongodb/lib/operations/search_indexes/update.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/search_indexes/update.js.map rename to node_backend/node_modules/mongodb/lib/operations/search_indexes/update.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/set_profiling_level.js b/node_backend/node_modules/mongodb/lib/operations/set_profiling_level.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/set_profiling_level.js rename to node_backend/node_modules/mongodb/lib/operations/set_profiling_level.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/set_profiling_level.js.map b/node_backend/node_modules/mongodb/lib/operations/set_profiling_level.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/set_profiling_level.js.map rename to node_backend/node_modules/mongodb/lib/operations/set_profiling_level.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/stats.js b/node_backend/node_modules/mongodb/lib/operations/stats.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/stats.js rename to node_backend/node_modules/mongodb/lib/operations/stats.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/stats.js.map b/node_backend/node_modules/mongodb/lib/operations/stats.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/stats.js.map rename to node_backend/node_modules/mongodb/lib/operations/stats.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/update.js b/node_backend/node_modules/mongodb/lib/operations/update.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/update.js rename to node_backend/node_modules/mongodb/lib/operations/update.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/update.js.map b/node_backend/node_modules/mongodb/lib/operations/update.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/update.js.map rename to node_backend/node_modules/mongodb/lib/operations/update.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/validate_collection.js b/node_backend/node_modules/mongodb/lib/operations/validate_collection.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/validate_collection.js rename to node_backend/node_modules/mongodb/lib/operations/validate_collection.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/validate_collection.js.map b/node_backend/node_modules/mongodb/lib/operations/validate_collection.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/operations/validate_collection.js.map rename to node_backend/node_modules/mongodb/lib/operations/validate_collection.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/read_concern.js b/node_backend/node_modules/mongodb/lib/read_concern.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/read_concern.js rename to node_backend/node_modules/mongodb/lib/read_concern.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/read_concern.js.map b/node_backend/node_modules/mongodb/lib/read_concern.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/read_concern.js.map rename to node_backend/node_modules/mongodb/lib/read_concern.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/read_preference.js b/node_backend/node_modules/mongodb/lib/read_preference.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/read_preference.js rename to node_backend/node_modules/mongodb/lib/read_preference.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/read_preference.js.map b/node_backend/node_modules/mongodb/lib/read_preference.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/read_preference.js.map rename to node_backend/node_modules/mongodb/lib/read_preference.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/resource_management.js b/node_backend/node_modules/mongodb/lib/resource_management.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/resource_management.js rename to node_backend/node_modules/mongodb/lib/resource_management.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/resource_management.js.map b/node_backend/node_modules/mongodb/lib/resource_management.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/resource_management.js.map rename to node_backend/node_modules/mongodb/lib/resource_management.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/common.js b/node_backend/node_modules/mongodb/lib/sdam/common.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/common.js rename to node_backend/node_modules/mongodb/lib/sdam/common.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/common.js.map b/node_backend/node_modules/mongodb/lib/sdam/common.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/common.js.map rename to node_backend/node_modules/mongodb/lib/sdam/common.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/events.js b/node_backend/node_modules/mongodb/lib/sdam/events.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/events.js rename to node_backend/node_modules/mongodb/lib/sdam/events.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/events.js.map b/node_backend/node_modules/mongodb/lib/sdam/events.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/events.js.map rename to node_backend/node_modules/mongodb/lib/sdam/events.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/monitor.js b/node_backend/node_modules/mongodb/lib/sdam/monitor.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/monitor.js rename to node_backend/node_modules/mongodb/lib/sdam/monitor.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/monitor.js.map b/node_backend/node_modules/mongodb/lib/sdam/monitor.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/monitor.js.map rename to node_backend/node_modules/mongodb/lib/sdam/monitor.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/server.js b/node_backend/node_modules/mongodb/lib/sdam/server.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/server.js rename to node_backend/node_modules/mongodb/lib/sdam/server.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/server.js.map b/node_backend/node_modules/mongodb/lib/sdam/server.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/server.js.map rename to node_backend/node_modules/mongodb/lib/sdam/server.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/server_description.js b/node_backend/node_modules/mongodb/lib/sdam/server_description.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/server_description.js rename to node_backend/node_modules/mongodb/lib/sdam/server_description.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/server_description.js.map b/node_backend/node_modules/mongodb/lib/sdam/server_description.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/server_description.js.map rename to node_backend/node_modules/mongodb/lib/sdam/server_description.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/server_selection.js b/node_backend/node_modules/mongodb/lib/sdam/server_selection.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/server_selection.js rename to node_backend/node_modules/mongodb/lib/sdam/server_selection.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/server_selection.js.map b/node_backend/node_modules/mongodb/lib/sdam/server_selection.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/server_selection.js.map rename to node_backend/node_modules/mongodb/lib/sdam/server_selection.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/server_selection_events.js b/node_backend/node_modules/mongodb/lib/sdam/server_selection_events.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/server_selection_events.js rename to node_backend/node_modules/mongodb/lib/sdam/server_selection_events.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/server_selection_events.js.map b/node_backend/node_modules/mongodb/lib/sdam/server_selection_events.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/server_selection_events.js.map rename to node_backend/node_modules/mongodb/lib/sdam/server_selection_events.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/srv_polling.js b/node_backend/node_modules/mongodb/lib/sdam/srv_polling.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/srv_polling.js rename to node_backend/node_modules/mongodb/lib/sdam/srv_polling.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/srv_polling.js.map b/node_backend/node_modules/mongodb/lib/sdam/srv_polling.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/srv_polling.js.map rename to node_backend/node_modules/mongodb/lib/sdam/srv_polling.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/topology.js b/node_backend/node_modules/mongodb/lib/sdam/topology.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/topology.js rename to node_backend/node_modules/mongodb/lib/sdam/topology.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/topology.js.map b/node_backend/node_modules/mongodb/lib/sdam/topology.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/topology.js.map rename to node_backend/node_modules/mongodb/lib/sdam/topology.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/topology_description.js b/node_backend/node_modules/mongodb/lib/sdam/topology_description.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/topology_description.js rename to node_backend/node_modules/mongodb/lib/sdam/topology_description.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/topology_description.js.map b/node_backend/node_modules/mongodb/lib/sdam/topology_description.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sdam/topology_description.js.map rename to node_backend/node_modules/mongodb/lib/sdam/topology_description.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sessions.js b/node_backend/node_modules/mongodb/lib/sessions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sessions.js rename to node_backend/node_modules/mongodb/lib/sessions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sessions.js.map b/node_backend/node_modules/mongodb/lib/sessions.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sessions.js.map rename to node_backend/node_modules/mongodb/lib/sessions.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sort.js b/node_backend/node_modules/mongodb/lib/sort.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sort.js rename to node_backend/node_modules/mongodb/lib/sort.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sort.js.map b/node_backend/node_modules/mongodb/lib/sort.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/sort.js.map rename to node_backend/node_modules/mongodb/lib/sort.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/timeout.js b/node_backend/node_modules/mongodb/lib/timeout.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/timeout.js rename to node_backend/node_modules/mongodb/lib/timeout.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/timeout.js.map b/node_backend/node_modules/mongodb/lib/timeout.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/timeout.js.map rename to node_backend/node_modules/mongodb/lib/timeout.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/transactions.js b/node_backend/node_modules/mongodb/lib/transactions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/transactions.js rename to node_backend/node_modules/mongodb/lib/transactions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/transactions.js.map b/node_backend/node_modules/mongodb/lib/transactions.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/transactions.js.map rename to node_backend/node_modules/mongodb/lib/transactions.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/utils.js b/node_backend/node_modules/mongodb/lib/utils.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/utils.js rename to node_backend/node_modules/mongodb/lib/utils.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/utils.js.map b/node_backend/node_modules/mongodb/lib/utils.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/utils.js.map rename to node_backend/node_modules/mongodb/lib/utils.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/write_concern.js b/node_backend/node_modules/mongodb/lib/write_concern.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/write_concern.js rename to node_backend/node_modules/mongodb/lib/write_concern.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/write_concern.js.map b/node_backend/node_modules/mongodb/lib/write_concern.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/lib/write_concern.js.map rename to node_backend/node_modules/mongodb/lib/write_concern.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/mongodb.d.ts b/node_backend/node_modules/mongodb/mongodb.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/mongodb.d.ts rename to node_backend/node_modules/mongodb/mongodb.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/package.json b/node_backend/node_modules/mongodb/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/package.json rename to node_backend/node_modules/mongodb/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/admin.ts b/node_backend/node_modules/mongodb/src/admin.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/admin.ts rename to node_backend/node_modules/mongodb/src/admin.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/beta.ts b/node_backend/node_modules/mongodb/src/beta.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/beta.ts rename to node_backend/node_modules/mongodb/src/beta.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/bson.ts b/node_backend/node_modules/mongodb/src/bson.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/bson.ts rename to node_backend/node_modules/mongodb/src/bson.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/bulk/common.ts b/node_backend/node_modules/mongodb/src/bulk/common.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/bulk/common.ts rename to node_backend/node_modules/mongodb/src/bulk/common.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/bulk/ordered.ts b/node_backend/node_modules/mongodb/src/bulk/ordered.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/bulk/ordered.ts rename to node_backend/node_modules/mongodb/src/bulk/ordered.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/bulk/unordered.ts b/node_backend/node_modules/mongodb/src/bulk/unordered.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/bulk/unordered.ts rename to node_backend/node_modules/mongodb/src/bulk/unordered.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/change_stream.ts b/node_backend/node_modules/mongodb/src/change_stream.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/change_stream.ts rename to node_backend/node_modules/mongodb/src/change_stream.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/auto_encrypter.ts b/node_backend/node_modules/mongodb/src/client-side-encryption/auto_encrypter.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/auto_encrypter.ts rename to node_backend/node_modules/mongodb/src/client-side-encryption/auto_encrypter.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/client_encryption.ts b/node_backend/node_modules/mongodb/src/client-side-encryption/client_encryption.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/client_encryption.ts rename to node_backend/node_modules/mongodb/src/client-side-encryption/client_encryption.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/crypto_callbacks.ts b/node_backend/node_modules/mongodb/src/client-side-encryption/crypto_callbacks.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/crypto_callbacks.ts rename to node_backend/node_modules/mongodb/src/client-side-encryption/crypto_callbacks.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/errors.ts b/node_backend/node_modules/mongodb/src/client-side-encryption/errors.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/errors.ts rename to node_backend/node_modules/mongodb/src/client-side-encryption/errors.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/mongocryptd_manager.ts b/node_backend/node_modules/mongodb/src/client-side-encryption/mongocryptd_manager.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/mongocryptd_manager.ts rename to node_backend/node_modules/mongodb/src/client-side-encryption/mongocryptd_manager.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/providers/aws.ts b/node_backend/node_modules/mongodb/src/client-side-encryption/providers/aws.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/providers/aws.ts rename to node_backend/node_modules/mongodb/src/client-side-encryption/providers/aws.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/providers/azure.ts b/node_backend/node_modules/mongodb/src/client-side-encryption/providers/azure.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/providers/azure.ts rename to node_backend/node_modules/mongodb/src/client-side-encryption/providers/azure.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/providers/gcp.ts b/node_backend/node_modules/mongodb/src/client-side-encryption/providers/gcp.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/providers/gcp.ts rename to node_backend/node_modules/mongodb/src/client-side-encryption/providers/gcp.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/providers/index.ts b/node_backend/node_modules/mongodb/src/client-side-encryption/providers/index.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/providers/index.ts rename to node_backend/node_modules/mongodb/src/client-side-encryption/providers/index.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/state_machine.ts b/node_backend/node_modules/mongodb/src/client-side-encryption/state_machine.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/client-side-encryption/state_machine.ts rename to node_backend/node_modules/mongodb/src/client-side-encryption/state_machine.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/auth_provider.ts b/node_backend/node_modules/mongodb/src/cmap/auth/auth_provider.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/auth_provider.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/auth_provider.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/aws_temporary_credentials.ts b/node_backend/node_modules/mongodb/src/cmap/auth/aws_temporary_credentials.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/aws_temporary_credentials.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/aws_temporary_credentials.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/gssapi.ts b/node_backend/node_modules/mongodb/src/cmap/auth/gssapi.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/gssapi.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/gssapi.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongo_credentials.ts b/node_backend/node_modules/mongodb/src/cmap/auth/mongo_credentials.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongo_credentials.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/mongo_credentials.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_aws.ts b/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_aws.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_aws.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/mongodb_aws.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc.ts b/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/automated_callback_workflow.ts b/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/automated_callback_workflow.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/automated_callback_workflow.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/automated_callback_workflow.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/azure_machine_workflow.ts b/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/azure_machine_workflow.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/azure_machine_workflow.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/azure_machine_workflow.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/callback_workflow.ts b/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/callback_workflow.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/callback_workflow.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/callback_workflow.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/command_builders.ts b/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/command_builders.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/command_builders.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/command_builders.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/gcp_machine_workflow.ts b/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/gcp_machine_workflow.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/gcp_machine_workflow.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/gcp_machine_workflow.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/human_callback_workflow.ts b/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/human_callback_workflow.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/human_callback_workflow.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/human_callback_workflow.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/machine_workflow.ts b/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/machine_workflow.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/machine_workflow.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/machine_workflow.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/token_cache.ts b/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/token_cache.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/token_cache.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/token_cache.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/token_machine_workflow.ts b/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/token_machine_workflow.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/token_machine_workflow.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/mongodb_oidc/token_machine_workflow.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/plain.ts b/node_backend/node_modules/mongodb/src/cmap/auth/plain.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/plain.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/plain.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/providers.ts b/node_backend/node_modules/mongodb/src/cmap/auth/providers.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/providers.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/providers.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/scram.ts b/node_backend/node_modules/mongodb/src/cmap/auth/scram.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/scram.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/scram.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/x509.ts b/node_backend/node_modules/mongodb/src/cmap/auth/x509.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/auth/x509.ts rename to node_backend/node_modules/mongodb/src/cmap/auth/x509.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/command_monitoring_events.ts b/node_backend/node_modules/mongodb/src/cmap/command_monitoring_events.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/command_monitoring_events.ts rename to node_backend/node_modules/mongodb/src/cmap/command_monitoring_events.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/commands.ts b/node_backend/node_modules/mongodb/src/cmap/commands.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/commands.ts rename to node_backend/node_modules/mongodb/src/cmap/commands.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/connect.ts b/node_backend/node_modules/mongodb/src/cmap/connect.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/connect.ts rename to node_backend/node_modules/mongodb/src/cmap/connect.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/connection.ts b/node_backend/node_modules/mongodb/src/cmap/connection.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/connection.ts rename to node_backend/node_modules/mongodb/src/cmap/connection.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/connection_pool.ts b/node_backend/node_modules/mongodb/src/cmap/connection_pool.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/connection_pool.ts rename to node_backend/node_modules/mongodb/src/cmap/connection_pool.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/connection_pool_events.ts b/node_backend/node_modules/mongodb/src/cmap/connection_pool_events.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/connection_pool_events.ts rename to node_backend/node_modules/mongodb/src/cmap/connection_pool_events.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/errors.ts b/node_backend/node_modules/mongodb/src/cmap/errors.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/errors.ts rename to node_backend/node_modules/mongodb/src/cmap/errors.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/handshake/client_metadata.ts b/node_backend/node_modules/mongodb/src/cmap/handshake/client_metadata.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/handshake/client_metadata.ts rename to node_backend/node_modules/mongodb/src/cmap/handshake/client_metadata.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/metrics.ts b/node_backend/node_modules/mongodb/src/cmap/metrics.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/metrics.ts rename to node_backend/node_modules/mongodb/src/cmap/metrics.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/stream_description.ts b/node_backend/node_modules/mongodb/src/cmap/stream_description.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/stream_description.ts rename to node_backend/node_modules/mongodb/src/cmap/stream_description.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/wire_protocol/compression.ts b/node_backend/node_modules/mongodb/src/cmap/wire_protocol/compression.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/wire_protocol/compression.ts rename to node_backend/node_modules/mongodb/src/cmap/wire_protocol/compression.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/wire_protocol/constants.ts b/node_backend/node_modules/mongodb/src/cmap/wire_protocol/constants.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/wire_protocol/constants.ts rename to node_backend/node_modules/mongodb/src/cmap/wire_protocol/constants.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/wire_protocol/on_data.ts b/node_backend/node_modules/mongodb/src/cmap/wire_protocol/on_data.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/wire_protocol/on_data.ts rename to node_backend/node_modules/mongodb/src/cmap/wire_protocol/on_data.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/wire_protocol/on_demand/document.ts b/node_backend/node_modules/mongodb/src/cmap/wire_protocol/on_demand/document.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/wire_protocol/on_demand/document.ts rename to node_backend/node_modules/mongodb/src/cmap/wire_protocol/on_demand/document.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/wire_protocol/responses.ts b/node_backend/node_modules/mongodb/src/cmap/wire_protocol/responses.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/wire_protocol/responses.ts rename to node_backend/node_modules/mongodb/src/cmap/wire_protocol/responses.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/wire_protocol/shared.ts b/node_backend/node_modules/mongodb/src/cmap/wire_protocol/shared.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cmap/wire_protocol/shared.ts rename to node_backend/node_modules/mongodb/src/cmap/wire_protocol/shared.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/collection.ts b/node_backend/node_modules/mongodb/src/collection.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/collection.ts rename to node_backend/node_modules/mongodb/src/collection.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/connection_string.ts b/node_backend/node_modules/mongodb/src/connection_string.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/connection_string.ts rename to node_backend/node_modules/mongodb/src/connection_string.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/constants.ts b/node_backend/node_modules/mongodb/src/constants.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/constants.ts rename to node_backend/node_modules/mongodb/src/constants.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cursor/abstract_cursor.ts b/node_backend/node_modules/mongodb/src/cursor/abstract_cursor.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cursor/abstract_cursor.ts rename to node_backend/node_modules/mongodb/src/cursor/abstract_cursor.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cursor/aggregation_cursor.ts b/node_backend/node_modules/mongodb/src/cursor/aggregation_cursor.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cursor/aggregation_cursor.ts rename to node_backend/node_modules/mongodb/src/cursor/aggregation_cursor.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cursor/change_stream_cursor.ts b/node_backend/node_modules/mongodb/src/cursor/change_stream_cursor.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cursor/change_stream_cursor.ts rename to node_backend/node_modules/mongodb/src/cursor/change_stream_cursor.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cursor/client_bulk_write_cursor.ts b/node_backend/node_modules/mongodb/src/cursor/client_bulk_write_cursor.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cursor/client_bulk_write_cursor.ts rename to node_backend/node_modules/mongodb/src/cursor/client_bulk_write_cursor.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cursor/find_cursor.ts b/node_backend/node_modules/mongodb/src/cursor/find_cursor.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cursor/find_cursor.ts rename to node_backend/node_modules/mongodb/src/cursor/find_cursor.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cursor/list_collections_cursor.ts b/node_backend/node_modules/mongodb/src/cursor/list_collections_cursor.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cursor/list_collections_cursor.ts rename to node_backend/node_modules/mongodb/src/cursor/list_collections_cursor.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cursor/list_indexes_cursor.ts b/node_backend/node_modules/mongodb/src/cursor/list_indexes_cursor.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cursor/list_indexes_cursor.ts rename to node_backend/node_modules/mongodb/src/cursor/list_indexes_cursor.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cursor/list_search_indexes_cursor.ts b/node_backend/node_modules/mongodb/src/cursor/list_search_indexes_cursor.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cursor/list_search_indexes_cursor.ts rename to node_backend/node_modules/mongodb/src/cursor/list_search_indexes_cursor.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cursor/run_command_cursor.ts b/node_backend/node_modules/mongodb/src/cursor/run_command_cursor.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/cursor/run_command_cursor.ts rename to node_backend/node_modules/mongodb/src/cursor/run_command_cursor.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/db.ts b/node_backend/node_modules/mongodb/src/db.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/db.ts rename to node_backend/node_modules/mongodb/src/db.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/deps.ts b/node_backend/node_modules/mongodb/src/deps.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/deps.ts rename to node_backend/node_modules/mongodb/src/deps.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/encrypter.ts b/node_backend/node_modules/mongodb/src/encrypter.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/encrypter.ts rename to node_backend/node_modules/mongodb/src/encrypter.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/error.ts b/node_backend/node_modules/mongodb/src/error.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/error.ts rename to node_backend/node_modules/mongodb/src/error.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/explain.ts b/node_backend/node_modules/mongodb/src/explain.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/explain.ts rename to node_backend/node_modules/mongodb/src/explain.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/gridfs/download.ts b/node_backend/node_modules/mongodb/src/gridfs/download.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/gridfs/download.ts rename to node_backend/node_modules/mongodb/src/gridfs/download.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/gridfs/index.ts b/node_backend/node_modules/mongodb/src/gridfs/index.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/gridfs/index.ts rename to node_backend/node_modules/mongodb/src/gridfs/index.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/gridfs/upload.ts b/node_backend/node_modules/mongodb/src/gridfs/upload.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/gridfs/upload.ts rename to node_backend/node_modules/mongodb/src/gridfs/upload.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/index.ts b/node_backend/node_modules/mongodb/src/index.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/index.ts rename to node_backend/node_modules/mongodb/src/index.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/mongo_client.ts b/node_backend/node_modules/mongodb/src/mongo_client.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/mongo_client.ts rename to node_backend/node_modules/mongodb/src/mongo_client.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/mongo_client_auth_providers.ts b/node_backend/node_modules/mongodb/src/mongo_client_auth_providers.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/mongo_client_auth_providers.ts rename to node_backend/node_modules/mongodb/src/mongo_client_auth_providers.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/mongo_logger.ts b/node_backend/node_modules/mongodb/src/mongo_logger.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/mongo_logger.ts rename to node_backend/node_modules/mongodb/src/mongo_logger.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/mongo_types.ts b/node_backend/node_modules/mongodb/src/mongo_types.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/mongo_types.ts rename to node_backend/node_modules/mongodb/src/mongo_types.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/aggregate.ts b/node_backend/node_modules/mongodb/src/operations/aggregate.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/aggregate.ts rename to node_backend/node_modules/mongodb/src/operations/aggregate.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/bulk_write.ts b/node_backend/node_modules/mongodb/src/operations/bulk_write.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/bulk_write.ts rename to node_backend/node_modules/mongodb/src/operations/bulk_write.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/client_bulk_write/client_bulk_write.ts b/node_backend/node_modules/mongodb/src/operations/client_bulk_write/client_bulk_write.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/client_bulk_write/client_bulk_write.ts rename to node_backend/node_modules/mongodb/src/operations/client_bulk_write/client_bulk_write.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/client_bulk_write/command_builder.ts b/node_backend/node_modules/mongodb/src/operations/client_bulk_write/command_builder.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/client_bulk_write/command_builder.ts rename to node_backend/node_modules/mongodb/src/operations/client_bulk_write/command_builder.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/client_bulk_write/common.ts b/node_backend/node_modules/mongodb/src/operations/client_bulk_write/common.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/client_bulk_write/common.ts rename to node_backend/node_modules/mongodb/src/operations/client_bulk_write/common.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/client_bulk_write/executor.ts b/node_backend/node_modules/mongodb/src/operations/client_bulk_write/executor.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/client_bulk_write/executor.ts rename to node_backend/node_modules/mongodb/src/operations/client_bulk_write/executor.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/client_bulk_write/results_merger.ts b/node_backend/node_modules/mongodb/src/operations/client_bulk_write/results_merger.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/client_bulk_write/results_merger.ts rename to node_backend/node_modules/mongodb/src/operations/client_bulk_write/results_merger.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/collections.ts b/node_backend/node_modules/mongodb/src/operations/collections.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/collections.ts rename to node_backend/node_modules/mongodb/src/operations/collections.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/command.ts b/node_backend/node_modules/mongodb/src/operations/command.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/command.ts rename to node_backend/node_modules/mongodb/src/operations/command.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/count.ts b/node_backend/node_modules/mongodb/src/operations/count.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/count.ts rename to node_backend/node_modules/mongodb/src/operations/count.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/create_collection.ts b/node_backend/node_modules/mongodb/src/operations/create_collection.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/create_collection.ts rename to node_backend/node_modules/mongodb/src/operations/create_collection.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/delete.ts b/node_backend/node_modules/mongodb/src/operations/delete.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/delete.ts rename to node_backend/node_modules/mongodb/src/operations/delete.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/distinct.ts b/node_backend/node_modules/mongodb/src/operations/distinct.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/distinct.ts rename to node_backend/node_modules/mongodb/src/operations/distinct.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/drop.ts b/node_backend/node_modules/mongodb/src/operations/drop.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/drop.ts rename to node_backend/node_modules/mongodb/src/operations/drop.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/estimated_document_count.ts b/node_backend/node_modules/mongodb/src/operations/estimated_document_count.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/estimated_document_count.ts rename to node_backend/node_modules/mongodb/src/operations/estimated_document_count.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/execute_operation.ts b/node_backend/node_modules/mongodb/src/operations/execute_operation.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/execute_operation.ts rename to node_backend/node_modules/mongodb/src/operations/execute_operation.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/find.ts b/node_backend/node_modules/mongodb/src/operations/find.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/find.ts rename to node_backend/node_modules/mongodb/src/operations/find.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/find_and_modify.ts b/node_backend/node_modules/mongodb/src/operations/find_and_modify.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/find_and_modify.ts rename to node_backend/node_modules/mongodb/src/operations/find_and_modify.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/get_more.ts b/node_backend/node_modules/mongodb/src/operations/get_more.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/get_more.ts rename to node_backend/node_modules/mongodb/src/operations/get_more.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/indexes.ts b/node_backend/node_modules/mongodb/src/operations/indexes.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/indexes.ts rename to node_backend/node_modules/mongodb/src/operations/indexes.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/insert.ts b/node_backend/node_modules/mongodb/src/operations/insert.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/insert.ts rename to node_backend/node_modules/mongodb/src/operations/insert.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/is_capped.ts b/node_backend/node_modules/mongodb/src/operations/is_capped.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/is_capped.ts rename to node_backend/node_modules/mongodb/src/operations/is_capped.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/kill_cursors.ts b/node_backend/node_modules/mongodb/src/operations/kill_cursors.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/kill_cursors.ts rename to node_backend/node_modules/mongodb/src/operations/kill_cursors.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/list_collections.ts b/node_backend/node_modules/mongodb/src/operations/list_collections.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/list_collections.ts rename to node_backend/node_modules/mongodb/src/operations/list_collections.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/list_databases.ts b/node_backend/node_modules/mongodb/src/operations/list_databases.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/list_databases.ts rename to node_backend/node_modules/mongodb/src/operations/list_databases.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/operation.ts b/node_backend/node_modules/mongodb/src/operations/operation.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/operation.ts rename to node_backend/node_modules/mongodb/src/operations/operation.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/options_operation.ts b/node_backend/node_modules/mongodb/src/operations/options_operation.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/options_operation.ts rename to node_backend/node_modules/mongodb/src/operations/options_operation.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/profiling_level.ts b/node_backend/node_modules/mongodb/src/operations/profiling_level.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/profiling_level.ts rename to node_backend/node_modules/mongodb/src/operations/profiling_level.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/remove_user.ts b/node_backend/node_modules/mongodb/src/operations/remove_user.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/remove_user.ts rename to node_backend/node_modules/mongodb/src/operations/remove_user.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/rename.ts b/node_backend/node_modules/mongodb/src/operations/rename.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/rename.ts rename to node_backend/node_modules/mongodb/src/operations/rename.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/run_command.ts b/node_backend/node_modules/mongodb/src/operations/run_command.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/run_command.ts rename to node_backend/node_modules/mongodb/src/operations/run_command.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/search_indexes/create.ts b/node_backend/node_modules/mongodb/src/operations/search_indexes/create.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/search_indexes/create.ts rename to node_backend/node_modules/mongodb/src/operations/search_indexes/create.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/search_indexes/drop.ts b/node_backend/node_modules/mongodb/src/operations/search_indexes/drop.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/search_indexes/drop.ts rename to node_backend/node_modules/mongodb/src/operations/search_indexes/drop.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/search_indexes/update.ts b/node_backend/node_modules/mongodb/src/operations/search_indexes/update.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/search_indexes/update.ts rename to node_backend/node_modules/mongodb/src/operations/search_indexes/update.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/set_profiling_level.ts b/node_backend/node_modules/mongodb/src/operations/set_profiling_level.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/set_profiling_level.ts rename to node_backend/node_modules/mongodb/src/operations/set_profiling_level.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/stats.ts b/node_backend/node_modules/mongodb/src/operations/stats.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/stats.ts rename to node_backend/node_modules/mongodb/src/operations/stats.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/update.ts b/node_backend/node_modules/mongodb/src/operations/update.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/update.ts rename to node_backend/node_modules/mongodb/src/operations/update.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/validate_collection.ts b/node_backend/node_modules/mongodb/src/operations/validate_collection.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/operations/validate_collection.ts rename to node_backend/node_modules/mongodb/src/operations/validate_collection.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/read_concern.ts b/node_backend/node_modules/mongodb/src/read_concern.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/read_concern.ts rename to node_backend/node_modules/mongodb/src/read_concern.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/read_preference.ts b/node_backend/node_modules/mongodb/src/read_preference.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/read_preference.ts rename to node_backend/node_modules/mongodb/src/read_preference.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/resource_management.ts b/node_backend/node_modules/mongodb/src/resource_management.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/resource_management.ts rename to node_backend/node_modules/mongodb/src/resource_management.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/common.ts b/node_backend/node_modules/mongodb/src/sdam/common.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/common.ts rename to node_backend/node_modules/mongodb/src/sdam/common.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/events.ts b/node_backend/node_modules/mongodb/src/sdam/events.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/events.ts rename to node_backend/node_modules/mongodb/src/sdam/events.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/monitor.ts b/node_backend/node_modules/mongodb/src/sdam/monitor.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/monitor.ts rename to node_backend/node_modules/mongodb/src/sdam/monitor.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/server.ts b/node_backend/node_modules/mongodb/src/sdam/server.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/server.ts rename to node_backend/node_modules/mongodb/src/sdam/server.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/server_description.ts b/node_backend/node_modules/mongodb/src/sdam/server_description.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/server_description.ts rename to node_backend/node_modules/mongodb/src/sdam/server_description.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/server_selection.ts b/node_backend/node_modules/mongodb/src/sdam/server_selection.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/server_selection.ts rename to node_backend/node_modules/mongodb/src/sdam/server_selection.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/server_selection_events.ts b/node_backend/node_modules/mongodb/src/sdam/server_selection_events.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/server_selection_events.ts rename to node_backend/node_modules/mongodb/src/sdam/server_selection_events.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/srv_polling.ts b/node_backend/node_modules/mongodb/src/sdam/srv_polling.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/srv_polling.ts rename to node_backend/node_modules/mongodb/src/sdam/srv_polling.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/topology.ts b/node_backend/node_modules/mongodb/src/sdam/topology.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/topology.ts rename to node_backend/node_modules/mongodb/src/sdam/topology.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/topology_description.ts b/node_backend/node_modules/mongodb/src/sdam/topology_description.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sdam/topology_description.ts rename to node_backend/node_modules/mongodb/src/sdam/topology_description.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sessions.ts b/node_backend/node_modules/mongodb/src/sessions.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sessions.ts rename to node_backend/node_modules/mongodb/src/sessions.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sort.ts b/node_backend/node_modules/mongodb/src/sort.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/sort.ts rename to node_backend/node_modules/mongodb/src/sort.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/timeout.ts b/node_backend/node_modules/mongodb/src/timeout.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/timeout.ts rename to node_backend/node_modules/mongodb/src/timeout.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/transactions.ts b/node_backend/node_modules/mongodb/src/transactions.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/transactions.ts rename to node_backend/node_modules/mongodb/src/transactions.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/utils.ts b/node_backend/node_modules/mongodb/src/utils.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/utils.ts rename to node_backend/node_modules/mongodb/src/utils.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/src/write_concern.ts b/node_backend/node_modules/mongodb/src/write_concern.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/src/write_concern.ts rename to node_backend/node_modules/mongodb/src/write_concern.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongodb/tsconfig.json b/node_backend/node_modules/mongodb/tsconfig.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongodb/tsconfig.json rename to node_backend/node_modules/mongodb/tsconfig.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/LICENSE.md b/node_backend/node_modules/mongoose/LICENSE.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/LICENSE.md rename to node_backend/node_modules/mongoose/LICENSE.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/README.md b/node_backend/node_modules/mongoose/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/README.md rename to node_backend/node_modules/mongoose/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/SECURITY.md b/node_backend/node_modules/mongoose/SECURITY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/SECURITY.md rename to node_backend/node_modules/mongoose/SECURITY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/browser.js b/node_backend/node_modules/mongoose/browser.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/browser.js rename to node_backend/node_modules/mongoose/browser.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/dist/browser.umd.js b/node_backend/node_modules/mongoose/dist/browser.umd.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/dist/browser.umd.js rename to node_backend/node_modules/mongoose/dist/browser.umd.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/index.js b/node_backend/node_modules/mongoose/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/index.js rename to node_backend/node_modules/mongoose/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/aggregate.js b/node_backend/node_modules/mongoose/lib/aggregate.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/aggregate.js rename to node_backend/node_modules/mongoose/lib/aggregate.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/browser.js b/node_backend/node_modules/mongoose/lib/browser.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/browser.js rename to node_backend/node_modules/mongoose/lib/browser.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/browserDocument.js b/node_backend/node_modules/mongoose/lib/browserDocument.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/browserDocument.js rename to node_backend/node_modules/mongoose/lib/browserDocument.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cast.js b/node_backend/node_modules/mongoose/lib/cast.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cast.js rename to node_backend/node_modules/mongoose/lib/cast.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cast/bigint.js b/node_backend/node_modules/mongoose/lib/cast/bigint.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cast/bigint.js rename to node_backend/node_modules/mongoose/lib/cast/bigint.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cast/boolean.js b/node_backend/node_modules/mongoose/lib/cast/boolean.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cast/boolean.js rename to node_backend/node_modules/mongoose/lib/cast/boolean.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cast/date.js b/node_backend/node_modules/mongoose/lib/cast/date.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cast/date.js rename to node_backend/node_modules/mongoose/lib/cast/date.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cast/decimal128.js b/node_backend/node_modules/mongoose/lib/cast/decimal128.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cast/decimal128.js rename to node_backend/node_modules/mongoose/lib/cast/decimal128.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cast/number.js b/node_backend/node_modules/mongoose/lib/cast/number.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cast/number.js rename to node_backend/node_modules/mongoose/lib/cast/number.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cast/objectid.js b/node_backend/node_modules/mongoose/lib/cast/objectid.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cast/objectid.js rename to node_backend/node_modules/mongoose/lib/cast/objectid.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cast/string.js b/node_backend/node_modules/mongoose/lib/cast/string.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cast/string.js rename to node_backend/node_modules/mongoose/lib/cast/string.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/collection.js b/node_backend/node_modules/mongoose/lib/collection.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/collection.js rename to node_backend/node_modules/mongoose/lib/collection.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/connection.js b/node_backend/node_modules/mongoose/lib/connection.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/connection.js rename to node_backend/node_modules/mongoose/lib/connection.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/connectionState.js b/node_backend/node_modules/mongoose/lib/connectionState.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/connectionState.js rename to node_backend/node_modules/mongoose/lib/connectionState.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/constants.js b/node_backend/node_modules/mongoose/lib/constants.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/constants.js rename to node_backend/node_modules/mongoose/lib/constants.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cursor/aggregationCursor.js b/node_backend/node_modules/mongoose/lib/cursor/aggregationCursor.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cursor/aggregationCursor.js rename to node_backend/node_modules/mongoose/lib/cursor/aggregationCursor.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cursor/changeStream.js b/node_backend/node_modules/mongoose/lib/cursor/changeStream.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cursor/changeStream.js rename to node_backend/node_modules/mongoose/lib/cursor/changeStream.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cursor/queryCursor.js b/node_backend/node_modules/mongoose/lib/cursor/queryCursor.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/cursor/queryCursor.js rename to node_backend/node_modules/mongoose/lib/cursor/queryCursor.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/document.js b/node_backend/node_modules/mongoose/lib/document.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/document.js rename to node_backend/node_modules/mongoose/lib/document.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/documentProvider.js b/node_backend/node_modules/mongoose/lib/documentProvider.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/documentProvider.js rename to node_backend/node_modules/mongoose/lib/documentProvider.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/driver.js b/node_backend/node_modules/mongoose/lib/driver.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/driver.js rename to node_backend/node_modules/mongoose/lib/driver.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/drivers/SPEC.md b/node_backend/node_modules/mongoose/lib/drivers/SPEC.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/drivers/SPEC.md rename to node_backend/node_modules/mongoose/lib/drivers/SPEC.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/drivers/browser/binary.js b/node_backend/node_modules/mongoose/lib/drivers/browser/binary.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/drivers/browser/binary.js rename to node_backend/node_modules/mongoose/lib/drivers/browser/binary.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/drivers/browser/decimal128.js b/node_backend/node_modules/mongoose/lib/drivers/browser/decimal128.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/drivers/browser/decimal128.js rename to node_backend/node_modules/mongoose/lib/drivers/browser/decimal128.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/drivers/browser/index.js b/node_backend/node_modules/mongoose/lib/drivers/browser/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/drivers/browser/index.js rename to node_backend/node_modules/mongoose/lib/drivers/browser/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/drivers/browser/objectid.js b/node_backend/node_modules/mongoose/lib/drivers/browser/objectid.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/drivers/browser/objectid.js rename to node_backend/node_modules/mongoose/lib/drivers/browser/objectid.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js b/node_backend/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js rename to node_backend/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js b/node_backend/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js rename to node_backend/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/drivers/node-mongodb-native/index.js b/node_backend/node_modules/mongoose/lib/drivers/node-mongodb-native/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/drivers/node-mongodb-native/index.js rename to node_backend/node_modules/mongoose/lib/drivers/node-mongodb-native/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/browserMissingSchema.js b/node_backend/node_modules/mongoose/lib/error/browserMissingSchema.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/browserMissingSchema.js rename to node_backend/node_modules/mongoose/lib/error/browserMissingSchema.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/bulkSaveIncompleteError.js b/node_backend/node_modules/mongoose/lib/error/bulkSaveIncompleteError.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/bulkSaveIncompleteError.js rename to node_backend/node_modules/mongoose/lib/error/bulkSaveIncompleteError.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/bulkWriteError.js b/node_backend/node_modules/mongoose/lib/error/bulkWriteError.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/bulkWriteError.js rename to node_backend/node_modules/mongoose/lib/error/bulkWriteError.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/cast.js b/node_backend/node_modules/mongoose/lib/error/cast.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/cast.js rename to node_backend/node_modules/mongoose/lib/error/cast.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/createCollectionsError.js b/node_backend/node_modules/mongoose/lib/error/createCollectionsError.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/createCollectionsError.js rename to node_backend/node_modules/mongoose/lib/error/createCollectionsError.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/divergentArray.js b/node_backend/node_modules/mongoose/lib/error/divergentArray.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/divergentArray.js rename to node_backend/node_modules/mongoose/lib/error/divergentArray.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/eachAsyncMultiError.js b/node_backend/node_modules/mongoose/lib/error/eachAsyncMultiError.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/eachAsyncMultiError.js rename to node_backend/node_modules/mongoose/lib/error/eachAsyncMultiError.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/index.js b/node_backend/node_modules/mongoose/lib/error/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/index.js rename to node_backend/node_modules/mongoose/lib/error/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/invalidSchemaOption.js b/node_backend/node_modules/mongoose/lib/error/invalidSchemaOption.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/invalidSchemaOption.js rename to node_backend/node_modules/mongoose/lib/error/invalidSchemaOption.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/messages.js b/node_backend/node_modules/mongoose/lib/error/messages.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/messages.js rename to node_backend/node_modules/mongoose/lib/error/messages.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/missingSchema.js b/node_backend/node_modules/mongoose/lib/error/missingSchema.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/missingSchema.js rename to node_backend/node_modules/mongoose/lib/error/missingSchema.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/mongooseError.js b/node_backend/node_modules/mongoose/lib/error/mongooseError.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/mongooseError.js rename to node_backend/node_modules/mongoose/lib/error/mongooseError.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/notFound.js b/node_backend/node_modules/mongoose/lib/error/notFound.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/notFound.js rename to node_backend/node_modules/mongoose/lib/error/notFound.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/objectExpected.js b/node_backend/node_modules/mongoose/lib/error/objectExpected.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/objectExpected.js rename to node_backend/node_modules/mongoose/lib/error/objectExpected.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/objectParameter.js b/node_backend/node_modules/mongoose/lib/error/objectParameter.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/objectParameter.js rename to node_backend/node_modules/mongoose/lib/error/objectParameter.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/overwriteModel.js b/node_backend/node_modules/mongoose/lib/error/overwriteModel.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/overwriteModel.js rename to node_backend/node_modules/mongoose/lib/error/overwriteModel.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/parallelSave.js b/node_backend/node_modules/mongoose/lib/error/parallelSave.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/parallelSave.js rename to node_backend/node_modules/mongoose/lib/error/parallelSave.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/parallelValidate.js b/node_backend/node_modules/mongoose/lib/error/parallelValidate.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/parallelValidate.js rename to node_backend/node_modules/mongoose/lib/error/parallelValidate.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/serverSelection.js b/node_backend/node_modules/mongoose/lib/error/serverSelection.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/serverSelection.js rename to node_backend/node_modules/mongoose/lib/error/serverSelection.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/setOptionError.js b/node_backend/node_modules/mongoose/lib/error/setOptionError.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/setOptionError.js rename to node_backend/node_modules/mongoose/lib/error/setOptionError.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/strict.js b/node_backend/node_modules/mongoose/lib/error/strict.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/strict.js rename to node_backend/node_modules/mongoose/lib/error/strict.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/strictPopulate.js b/node_backend/node_modules/mongoose/lib/error/strictPopulate.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/strictPopulate.js rename to node_backend/node_modules/mongoose/lib/error/strictPopulate.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/syncIndexes.js b/node_backend/node_modules/mongoose/lib/error/syncIndexes.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/syncIndexes.js rename to node_backend/node_modules/mongoose/lib/error/syncIndexes.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/validation.js b/node_backend/node_modules/mongoose/lib/error/validation.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/validation.js rename to node_backend/node_modules/mongoose/lib/error/validation.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/validator.js b/node_backend/node_modules/mongoose/lib/error/validator.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/validator.js rename to node_backend/node_modules/mongoose/lib/error/validator.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/version.js b/node_backend/node_modules/mongoose/lib/error/version.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/error/version.js rename to node_backend/node_modules/mongoose/lib/error/version.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/aggregate/prepareDiscriminatorPipeline.js b/node_backend/node_modules/mongoose/lib/helpers/aggregate/prepareDiscriminatorPipeline.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/aggregate/prepareDiscriminatorPipeline.js rename to node_backend/node_modules/mongoose/lib/helpers/aggregate/prepareDiscriminatorPipeline.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/aggregate/stringifyFunctionOperators.js b/node_backend/node_modules/mongoose/lib/helpers/aggregate/stringifyFunctionOperators.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/aggregate/stringifyFunctionOperators.js rename to node_backend/node_modules/mongoose/lib/helpers/aggregate/stringifyFunctionOperators.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/arrayDepth.js b/node_backend/node_modules/mongoose/lib/helpers/arrayDepth.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/arrayDepth.js rename to node_backend/node_modules/mongoose/lib/helpers/arrayDepth.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/clone.js b/node_backend/node_modules/mongoose/lib/helpers/clone.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/clone.js rename to node_backend/node_modules/mongoose/lib/helpers/clone.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/common.js b/node_backend/node_modules/mongoose/lib/helpers/common.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/common.js rename to node_backend/node_modules/mongoose/lib/helpers/common.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/cursor/eachAsync.js b/node_backend/node_modules/mongoose/lib/helpers/cursor/eachAsync.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/cursor/eachAsync.js rename to node_backend/node_modules/mongoose/lib/helpers/cursor/eachAsync.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/discriminator/applyEmbeddedDiscriminators.js b/node_backend/node_modules/mongoose/lib/helpers/discriminator/applyEmbeddedDiscriminators.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/discriminator/applyEmbeddedDiscriminators.js rename to node_backend/node_modules/mongoose/lib/helpers/discriminator/applyEmbeddedDiscriminators.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/discriminator/areDiscriminatorValuesEqual.js b/node_backend/node_modules/mongoose/lib/helpers/discriminator/areDiscriminatorValuesEqual.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/discriminator/areDiscriminatorValuesEqual.js rename to node_backend/node_modules/mongoose/lib/helpers/discriminator/areDiscriminatorValuesEqual.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/discriminator/checkEmbeddedDiscriminatorKeyProjection.js b/node_backend/node_modules/mongoose/lib/helpers/discriminator/checkEmbeddedDiscriminatorKeyProjection.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/discriminator/checkEmbeddedDiscriminatorKeyProjection.js rename to node_backend/node_modules/mongoose/lib/helpers/discriminator/checkEmbeddedDiscriminatorKeyProjection.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/discriminator/getConstructor.js b/node_backend/node_modules/mongoose/lib/helpers/discriminator/getConstructor.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/discriminator/getConstructor.js rename to node_backend/node_modules/mongoose/lib/helpers/discriminator/getConstructor.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/discriminator/getDiscriminatorByValue.js b/node_backend/node_modules/mongoose/lib/helpers/discriminator/getDiscriminatorByValue.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/discriminator/getDiscriminatorByValue.js rename to node_backend/node_modules/mongoose/lib/helpers/discriminator/getDiscriminatorByValue.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/discriminator/getSchemaDiscriminatorByValue.js b/node_backend/node_modules/mongoose/lib/helpers/discriminator/getSchemaDiscriminatorByValue.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/discriminator/getSchemaDiscriminatorByValue.js rename to node_backend/node_modules/mongoose/lib/helpers/discriminator/getSchemaDiscriminatorByValue.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/discriminator/mergeDiscriminatorSchema.js b/node_backend/node_modules/mongoose/lib/helpers/discriminator/mergeDiscriminatorSchema.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/discriminator/mergeDiscriminatorSchema.js rename to node_backend/node_modules/mongoose/lib/helpers/discriminator/mergeDiscriminatorSchema.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/document/applyDefaults.js b/node_backend/node_modules/mongoose/lib/helpers/document/applyDefaults.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/document/applyDefaults.js rename to node_backend/node_modules/mongoose/lib/helpers/document/applyDefaults.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/document/applyTimestamps.js b/node_backend/node_modules/mongoose/lib/helpers/document/applyTimestamps.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/document/applyTimestamps.js rename to node_backend/node_modules/mongoose/lib/helpers/document/applyTimestamps.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/document/applyVirtuals.js b/node_backend/node_modules/mongoose/lib/helpers/document/applyVirtuals.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/document/applyVirtuals.js rename to node_backend/node_modules/mongoose/lib/helpers/document/applyVirtuals.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/document/cleanModifiedSubpaths.js b/node_backend/node_modules/mongoose/lib/helpers/document/cleanModifiedSubpaths.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/document/cleanModifiedSubpaths.js rename to node_backend/node_modules/mongoose/lib/helpers/document/cleanModifiedSubpaths.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/document/compile.js b/node_backend/node_modules/mongoose/lib/helpers/document/compile.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/document/compile.js rename to node_backend/node_modules/mongoose/lib/helpers/document/compile.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/document/getDeepestSubdocumentForPath.js b/node_backend/node_modules/mongoose/lib/helpers/document/getDeepestSubdocumentForPath.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/document/getDeepestSubdocumentForPath.js rename to node_backend/node_modules/mongoose/lib/helpers/document/getDeepestSubdocumentForPath.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/document/getEmbeddedDiscriminatorPath.js b/node_backend/node_modules/mongoose/lib/helpers/document/getEmbeddedDiscriminatorPath.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/document/getEmbeddedDiscriminatorPath.js rename to node_backend/node_modules/mongoose/lib/helpers/document/getEmbeddedDiscriminatorPath.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/document/handleSpreadDoc.js b/node_backend/node_modules/mongoose/lib/helpers/document/handleSpreadDoc.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/document/handleSpreadDoc.js rename to node_backend/node_modules/mongoose/lib/helpers/document/handleSpreadDoc.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/each.js b/node_backend/node_modules/mongoose/lib/helpers/each.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/each.js rename to node_backend/node_modules/mongoose/lib/helpers/each.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/error/combinePathErrors.js b/node_backend/node_modules/mongoose/lib/helpers/error/combinePathErrors.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/error/combinePathErrors.js rename to node_backend/node_modules/mongoose/lib/helpers/error/combinePathErrors.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/firstKey.js b/node_backend/node_modules/mongoose/lib/helpers/firstKey.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/firstKey.js rename to node_backend/node_modules/mongoose/lib/helpers/firstKey.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/get.js b/node_backend/node_modules/mongoose/lib/helpers/get.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/get.js rename to node_backend/node_modules/mongoose/lib/helpers/get.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/getConstructorName.js b/node_backend/node_modules/mongoose/lib/helpers/getConstructorName.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/getConstructorName.js rename to node_backend/node_modules/mongoose/lib/helpers/getConstructorName.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/getDefaultBulkwriteResult.js b/node_backend/node_modules/mongoose/lib/helpers/getDefaultBulkwriteResult.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/getDefaultBulkwriteResult.js rename to node_backend/node_modules/mongoose/lib/helpers/getDefaultBulkwriteResult.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/getFunctionName.js b/node_backend/node_modules/mongoose/lib/helpers/getFunctionName.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/getFunctionName.js rename to node_backend/node_modules/mongoose/lib/helpers/getFunctionName.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/immediate.js b/node_backend/node_modules/mongoose/lib/helpers/immediate.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/immediate.js rename to node_backend/node_modules/mongoose/lib/helpers/immediate.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/indexes/applySchemaCollation.js b/node_backend/node_modules/mongoose/lib/helpers/indexes/applySchemaCollation.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/indexes/applySchemaCollation.js rename to node_backend/node_modules/mongoose/lib/helpers/indexes/applySchemaCollation.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/indexes/decorateDiscriminatorIndexOptions.js b/node_backend/node_modules/mongoose/lib/helpers/indexes/decorateDiscriminatorIndexOptions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/indexes/decorateDiscriminatorIndexOptions.js rename to node_backend/node_modules/mongoose/lib/helpers/indexes/decorateDiscriminatorIndexOptions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/indexes/getRelatedIndexes.js b/node_backend/node_modules/mongoose/lib/helpers/indexes/getRelatedIndexes.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/indexes/getRelatedIndexes.js rename to node_backend/node_modules/mongoose/lib/helpers/indexes/getRelatedIndexes.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/indexes/isDefaultIdIndex.js b/node_backend/node_modules/mongoose/lib/helpers/indexes/isDefaultIdIndex.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/indexes/isDefaultIdIndex.js rename to node_backend/node_modules/mongoose/lib/helpers/indexes/isDefaultIdIndex.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/indexes/isIndexEqual.js b/node_backend/node_modules/mongoose/lib/helpers/indexes/isIndexEqual.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/indexes/isIndexEqual.js rename to node_backend/node_modules/mongoose/lib/helpers/indexes/isIndexEqual.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/indexes/isTextIndex.js b/node_backend/node_modules/mongoose/lib/helpers/indexes/isTextIndex.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/indexes/isTextIndex.js rename to node_backend/node_modules/mongoose/lib/helpers/indexes/isTextIndex.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/indexes/isTimeseriesIndex.js b/node_backend/node_modules/mongoose/lib/helpers/indexes/isTimeseriesIndex.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/indexes/isTimeseriesIndex.js rename to node_backend/node_modules/mongoose/lib/helpers/indexes/isTimeseriesIndex.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/isAsyncFunction.js b/node_backend/node_modules/mongoose/lib/helpers/isAsyncFunction.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/isAsyncFunction.js rename to node_backend/node_modules/mongoose/lib/helpers/isAsyncFunction.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/isBsonType.js b/node_backend/node_modules/mongoose/lib/helpers/isBsonType.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/isBsonType.js rename to node_backend/node_modules/mongoose/lib/helpers/isBsonType.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/isMongooseObject.js b/node_backend/node_modules/mongoose/lib/helpers/isMongooseObject.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/isMongooseObject.js rename to node_backend/node_modules/mongoose/lib/helpers/isMongooseObject.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/isObject.js b/node_backend/node_modules/mongoose/lib/helpers/isObject.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/isObject.js rename to node_backend/node_modules/mongoose/lib/helpers/isObject.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/isPOJO.js b/node_backend/node_modules/mongoose/lib/helpers/isPOJO.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/isPOJO.js rename to node_backend/node_modules/mongoose/lib/helpers/isPOJO.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/isPromise.js b/node_backend/node_modules/mongoose/lib/helpers/isPromise.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/isPromise.js rename to node_backend/node_modules/mongoose/lib/helpers/isPromise.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/isSimpleValidator.js b/node_backend/node_modules/mongoose/lib/helpers/isSimpleValidator.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/isSimpleValidator.js rename to node_backend/node_modules/mongoose/lib/helpers/isSimpleValidator.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/minimize.js b/node_backend/node_modules/mongoose/lib/helpers/minimize.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/minimize.js rename to node_backend/node_modules/mongoose/lib/helpers/minimize.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/model/applyDefaultsToPOJO.js b/node_backend/node_modules/mongoose/lib/helpers/model/applyDefaultsToPOJO.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/model/applyDefaultsToPOJO.js rename to node_backend/node_modules/mongoose/lib/helpers/model/applyDefaultsToPOJO.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/model/applyHooks.js b/node_backend/node_modules/mongoose/lib/helpers/model/applyHooks.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/model/applyHooks.js rename to node_backend/node_modules/mongoose/lib/helpers/model/applyHooks.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/model/applyMethods.js b/node_backend/node_modules/mongoose/lib/helpers/model/applyMethods.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/model/applyMethods.js rename to node_backend/node_modules/mongoose/lib/helpers/model/applyMethods.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/model/applyStaticHooks.js b/node_backend/node_modules/mongoose/lib/helpers/model/applyStaticHooks.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/model/applyStaticHooks.js rename to node_backend/node_modules/mongoose/lib/helpers/model/applyStaticHooks.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/model/applyStatics.js b/node_backend/node_modules/mongoose/lib/helpers/model/applyStatics.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/model/applyStatics.js rename to node_backend/node_modules/mongoose/lib/helpers/model/applyStatics.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/model/castBulkWrite.js b/node_backend/node_modules/mongoose/lib/helpers/model/castBulkWrite.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/model/castBulkWrite.js rename to node_backend/node_modules/mongoose/lib/helpers/model/castBulkWrite.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/model/discriminator.js b/node_backend/node_modules/mongoose/lib/helpers/model/discriminator.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/model/discriminator.js rename to node_backend/node_modules/mongoose/lib/helpers/model/discriminator.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/model/pushNestedArrayPaths.js b/node_backend/node_modules/mongoose/lib/helpers/model/pushNestedArrayPaths.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/model/pushNestedArrayPaths.js rename to node_backend/node_modules/mongoose/lib/helpers/model/pushNestedArrayPaths.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/omitUndefined.js b/node_backend/node_modules/mongoose/lib/helpers/omitUndefined.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/omitUndefined.js rename to node_backend/node_modules/mongoose/lib/helpers/omitUndefined.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/once.js b/node_backend/node_modules/mongoose/lib/helpers/once.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/once.js rename to node_backend/node_modules/mongoose/lib/helpers/once.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/parallelLimit.js b/node_backend/node_modules/mongoose/lib/helpers/parallelLimit.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/parallelLimit.js rename to node_backend/node_modules/mongoose/lib/helpers/parallelLimit.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/path/parentPaths.js b/node_backend/node_modules/mongoose/lib/helpers/path/parentPaths.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/path/parentPaths.js rename to node_backend/node_modules/mongoose/lib/helpers/path/parentPaths.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/path/setDottedPath.js b/node_backend/node_modules/mongoose/lib/helpers/path/setDottedPath.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/path/setDottedPath.js rename to node_backend/node_modules/mongoose/lib/helpers/path/setDottedPath.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/pluralize.js b/node_backend/node_modules/mongoose/lib/helpers/pluralize.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/pluralize.js rename to node_backend/node_modules/mongoose/lib/helpers/pluralize.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/assignRawDocsToIdStructure.js b/node_backend/node_modules/mongoose/lib/helpers/populate/assignRawDocsToIdStructure.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/assignRawDocsToIdStructure.js rename to node_backend/node_modules/mongoose/lib/helpers/populate/assignRawDocsToIdStructure.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/assignVals.js b/node_backend/node_modules/mongoose/lib/helpers/populate/assignVals.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/assignVals.js rename to node_backend/node_modules/mongoose/lib/helpers/populate/assignVals.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/createPopulateQueryFilter.js b/node_backend/node_modules/mongoose/lib/helpers/populate/createPopulateQueryFilter.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/createPopulateQueryFilter.js rename to node_backend/node_modules/mongoose/lib/helpers/populate/createPopulateQueryFilter.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/getModelsMapForPopulate.js b/node_backend/node_modules/mongoose/lib/helpers/populate/getModelsMapForPopulate.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/getModelsMapForPopulate.js rename to node_backend/node_modules/mongoose/lib/helpers/populate/getModelsMapForPopulate.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/getSchemaTypes.js b/node_backend/node_modules/mongoose/lib/helpers/populate/getSchemaTypes.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/getSchemaTypes.js rename to node_backend/node_modules/mongoose/lib/helpers/populate/getSchemaTypes.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/getVirtual.js b/node_backend/node_modules/mongoose/lib/helpers/populate/getVirtual.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/getVirtual.js rename to node_backend/node_modules/mongoose/lib/helpers/populate/getVirtual.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/leanPopulateMap.js b/node_backend/node_modules/mongoose/lib/helpers/populate/leanPopulateMap.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/leanPopulateMap.js rename to node_backend/node_modules/mongoose/lib/helpers/populate/leanPopulateMap.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/lookupLocalFields.js b/node_backend/node_modules/mongoose/lib/helpers/populate/lookupLocalFields.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/lookupLocalFields.js rename to node_backend/node_modules/mongoose/lib/helpers/populate/lookupLocalFields.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/markArraySubdocsPopulated.js b/node_backend/node_modules/mongoose/lib/helpers/populate/markArraySubdocsPopulated.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/markArraySubdocsPopulated.js rename to node_backend/node_modules/mongoose/lib/helpers/populate/markArraySubdocsPopulated.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/modelNamesFromRefPath.js b/node_backend/node_modules/mongoose/lib/helpers/populate/modelNamesFromRefPath.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/modelNamesFromRefPath.js rename to node_backend/node_modules/mongoose/lib/helpers/populate/modelNamesFromRefPath.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/removeDeselectedForeignField.js b/node_backend/node_modules/mongoose/lib/helpers/populate/removeDeselectedForeignField.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/removeDeselectedForeignField.js rename to node_backend/node_modules/mongoose/lib/helpers/populate/removeDeselectedForeignField.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/setPopulatedVirtualValue.js b/node_backend/node_modules/mongoose/lib/helpers/populate/setPopulatedVirtualValue.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/setPopulatedVirtualValue.js rename to node_backend/node_modules/mongoose/lib/helpers/populate/setPopulatedVirtualValue.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/skipPopulateValue.js b/node_backend/node_modules/mongoose/lib/helpers/populate/skipPopulateValue.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/skipPopulateValue.js rename to node_backend/node_modules/mongoose/lib/helpers/populate/skipPopulateValue.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/validateRef.js b/node_backend/node_modules/mongoose/lib/helpers/populate/validateRef.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/populate/validateRef.js rename to node_backend/node_modules/mongoose/lib/helpers/populate/validateRef.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/printJestWarning.js b/node_backend/node_modules/mongoose/lib/helpers/printJestWarning.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/printJestWarning.js rename to node_backend/node_modules/mongoose/lib/helpers/printJestWarning.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/processConnectionOptions.js b/node_backend/node_modules/mongoose/lib/helpers/processConnectionOptions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/processConnectionOptions.js rename to node_backend/node_modules/mongoose/lib/helpers/processConnectionOptions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/applyProjection.js b/node_backend/node_modules/mongoose/lib/helpers/projection/applyProjection.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/applyProjection.js rename to node_backend/node_modules/mongoose/lib/helpers/projection/applyProjection.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/hasIncludedChildren.js b/node_backend/node_modules/mongoose/lib/helpers/projection/hasIncludedChildren.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/hasIncludedChildren.js rename to node_backend/node_modules/mongoose/lib/helpers/projection/hasIncludedChildren.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/isDefiningProjection.js b/node_backend/node_modules/mongoose/lib/helpers/projection/isDefiningProjection.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/isDefiningProjection.js rename to node_backend/node_modules/mongoose/lib/helpers/projection/isDefiningProjection.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/isExclusive.js b/node_backend/node_modules/mongoose/lib/helpers/projection/isExclusive.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/isExclusive.js rename to node_backend/node_modules/mongoose/lib/helpers/projection/isExclusive.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/isInclusive.js b/node_backend/node_modules/mongoose/lib/helpers/projection/isInclusive.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/isInclusive.js rename to node_backend/node_modules/mongoose/lib/helpers/projection/isInclusive.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/isNestedProjection.js b/node_backend/node_modules/mongoose/lib/helpers/projection/isNestedProjection.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/isNestedProjection.js rename to node_backend/node_modules/mongoose/lib/helpers/projection/isNestedProjection.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/isPathExcluded.js b/node_backend/node_modules/mongoose/lib/helpers/projection/isPathExcluded.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/isPathExcluded.js rename to node_backend/node_modules/mongoose/lib/helpers/projection/isPathExcluded.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/isPathSelectedInclusive.js b/node_backend/node_modules/mongoose/lib/helpers/projection/isPathSelectedInclusive.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/isPathSelectedInclusive.js rename to node_backend/node_modules/mongoose/lib/helpers/projection/isPathSelectedInclusive.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/isSubpath.js b/node_backend/node_modules/mongoose/lib/helpers/projection/isSubpath.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/isSubpath.js rename to node_backend/node_modules/mongoose/lib/helpers/projection/isSubpath.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/parseProjection.js b/node_backend/node_modules/mongoose/lib/helpers/projection/parseProjection.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/projection/parseProjection.js rename to node_backend/node_modules/mongoose/lib/helpers/projection/parseProjection.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/promiseOrCallback.js b/node_backend/node_modules/mongoose/lib/helpers/promiseOrCallback.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/promiseOrCallback.js rename to node_backend/node_modules/mongoose/lib/helpers/promiseOrCallback.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/applyGlobalOption.js b/node_backend/node_modules/mongoose/lib/helpers/query/applyGlobalOption.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/applyGlobalOption.js rename to node_backend/node_modules/mongoose/lib/helpers/query/applyGlobalOption.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/cast$expr.js b/node_backend/node_modules/mongoose/lib/helpers/query/cast$expr.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/cast$expr.js rename to node_backend/node_modules/mongoose/lib/helpers/query/cast$expr.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/castFilterPath.js b/node_backend/node_modules/mongoose/lib/helpers/query/castFilterPath.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/castFilterPath.js rename to node_backend/node_modules/mongoose/lib/helpers/query/castFilterPath.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/castUpdate.js b/node_backend/node_modules/mongoose/lib/helpers/query/castUpdate.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/castUpdate.js rename to node_backend/node_modules/mongoose/lib/helpers/query/castUpdate.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/getEmbeddedDiscriminatorPath.js b/node_backend/node_modules/mongoose/lib/helpers/query/getEmbeddedDiscriminatorPath.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/getEmbeddedDiscriminatorPath.js rename to node_backend/node_modules/mongoose/lib/helpers/query/getEmbeddedDiscriminatorPath.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/handleImmutable.js b/node_backend/node_modules/mongoose/lib/helpers/query/handleImmutable.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/handleImmutable.js rename to node_backend/node_modules/mongoose/lib/helpers/query/handleImmutable.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/handleReadPreferenceAliases.js b/node_backend/node_modules/mongoose/lib/helpers/query/handleReadPreferenceAliases.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/handleReadPreferenceAliases.js rename to node_backend/node_modules/mongoose/lib/helpers/query/handleReadPreferenceAliases.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/hasDollarKeys.js b/node_backend/node_modules/mongoose/lib/helpers/query/hasDollarKeys.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/hasDollarKeys.js rename to node_backend/node_modules/mongoose/lib/helpers/query/hasDollarKeys.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/isOperator.js b/node_backend/node_modules/mongoose/lib/helpers/query/isOperator.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/isOperator.js rename to node_backend/node_modules/mongoose/lib/helpers/query/isOperator.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/sanitizeFilter.js b/node_backend/node_modules/mongoose/lib/helpers/query/sanitizeFilter.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/sanitizeFilter.js rename to node_backend/node_modules/mongoose/lib/helpers/query/sanitizeFilter.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/sanitizeProjection.js b/node_backend/node_modules/mongoose/lib/helpers/query/sanitizeProjection.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/sanitizeProjection.js rename to node_backend/node_modules/mongoose/lib/helpers/query/sanitizeProjection.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/selectPopulatedFields.js b/node_backend/node_modules/mongoose/lib/helpers/query/selectPopulatedFields.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/selectPopulatedFields.js rename to node_backend/node_modules/mongoose/lib/helpers/query/selectPopulatedFields.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/trusted.js b/node_backend/node_modules/mongoose/lib/helpers/query/trusted.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/trusted.js rename to node_backend/node_modules/mongoose/lib/helpers/query/trusted.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/validOps.js b/node_backend/node_modules/mongoose/lib/helpers/query/validOps.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/query/validOps.js rename to node_backend/node_modules/mongoose/lib/helpers/query/validOps.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/addAutoId.js b/node_backend/node_modules/mongoose/lib/helpers/schema/addAutoId.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/addAutoId.js rename to node_backend/node_modules/mongoose/lib/helpers/schema/addAutoId.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/applyBuiltinPlugins.js b/node_backend/node_modules/mongoose/lib/helpers/schema/applyBuiltinPlugins.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/applyBuiltinPlugins.js rename to node_backend/node_modules/mongoose/lib/helpers/schema/applyBuiltinPlugins.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/applyPlugins.js b/node_backend/node_modules/mongoose/lib/helpers/schema/applyPlugins.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/applyPlugins.js rename to node_backend/node_modules/mongoose/lib/helpers/schema/applyPlugins.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/applyReadConcern.js b/node_backend/node_modules/mongoose/lib/helpers/schema/applyReadConcern.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/applyReadConcern.js rename to node_backend/node_modules/mongoose/lib/helpers/schema/applyReadConcern.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/applyWriteConcern.js b/node_backend/node_modules/mongoose/lib/helpers/schema/applyWriteConcern.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/applyWriteConcern.js rename to node_backend/node_modules/mongoose/lib/helpers/schema/applyWriteConcern.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/cleanPositionalOperators.js b/node_backend/node_modules/mongoose/lib/helpers/schema/cleanPositionalOperators.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/cleanPositionalOperators.js rename to node_backend/node_modules/mongoose/lib/helpers/schema/cleanPositionalOperators.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/getIndexes.js b/node_backend/node_modules/mongoose/lib/helpers/schema/getIndexes.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/getIndexes.js rename to node_backend/node_modules/mongoose/lib/helpers/schema/getIndexes.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/getKeysInSchemaOrder.js b/node_backend/node_modules/mongoose/lib/helpers/schema/getKeysInSchemaOrder.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/getKeysInSchemaOrder.js rename to node_backend/node_modules/mongoose/lib/helpers/schema/getKeysInSchemaOrder.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/getPath.js b/node_backend/node_modules/mongoose/lib/helpers/schema/getPath.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/getPath.js rename to node_backend/node_modules/mongoose/lib/helpers/schema/getPath.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/getSubdocumentStrictValue.js b/node_backend/node_modules/mongoose/lib/helpers/schema/getSubdocumentStrictValue.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/getSubdocumentStrictValue.js rename to node_backend/node_modules/mongoose/lib/helpers/schema/getSubdocumentStrictValue.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/handleIdOption.js b/node_backend/node_modules/mongoose/lib/helpers/schema/handleIdOption.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/handleIdOption.js rename to node_backend/node_modules/mongoose/lib/helpers/schema/handleIdOption.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/handleTimestampOption.js b/node_backend/node_modules/mongoose/lib/helpers/schema/handleTimestampOption.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/handleTimestampOption.js rename to node_backend/node_modules/mongoose/lib/helpers/schema/handleTimestampOption.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/idGetter.js b/node_backend/node_modules/mongoose/lib/helpers/schema/idGetter.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/idGetter.js rename to node_backend/node_modules/mongoose/lib/helpers/schema/idGetter.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/merge.js b/node_backend/node_modules/mongoose/lib/helpers/schema/merge.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schema/merge.js rename to node_backend/node_modules/mongoose/lib/helpers/schema/merge.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schematype/handleImmutable.js b/node_backend/node_modules/mongoose/lib/helpers/schematype/handleImmutable.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/schematype/handleImmutable.js rename to node_backend/node_modules/mongoose/lib/helpers/schematype/handleImmutable.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/setDefaultsOnInsert.js b/node_backend/node_modules/mongoose/lib/helpers/setDefaultsOnInsert.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/setDefaultsOnInsert.js rename to node_backend/node_modules/mongoose/lib/helpers/setDefaultsOnInsert.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/specialProperties.js b/node_backend/node_modules/mongoose/lib/helpers/specialProperties.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/specialProperties.js rename to node_backend/node_modules/mongoose/lib/helpers/specialProperties.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/symbols.js b/node_backend/node_modules/mongoose/lib/helpers/symbols.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/symbols.js rename to node_backend/node_modules/mongoose/lib/helpers/symbols.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/timers.js b/node_backend/node_modules/mongoose/lib/helpers/timers.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/timers.js rename to node_backend/node_modules/mongoose/lib/helpers/timers.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/timestamps/setDocumentTimestamps.js b/node_backend/node_modules/mongoose/lib/helpers/timestamps/setDocumentTimestamps.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/timestamps/setDocumentTimestamps.js rename to node_backend/node_modules/mongoose/lib/helpers/timestamps/setDocumentTimestamps.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/timestamps/setupTimestamps.js b/node_backend/node_modules/mongoose/lib/helpers/timestamps/setupTimestamps.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/timestamps/setupTimestamps.js rename to node_backend/node_modules/mongoose/lib/helpers/timestamps/setupTimestamps.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/topology/allServersUnknown.js b/node_backend/node_modules/mongoose/lib/helpers/topology/allServersUnknown.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/topology/allServersUnknown.js rename to node_backend/node_modules/mongoose/lib/helpers/topology/allServersUnknown.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/topology/isAtlas.js b/node_backend/node_modules/mongoose/lib/helpers/topology/isAtlas.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/topology/isAtlas.js rename to node_backend/node_modules/mongoose/lib/helpers/topology/isAtlas.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/topology/isSSLError.js b/node_backend/node_modules/mongoose/lib/helpers/topology/isSSLError.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/topology/isSSLError.js rename to node_backend/node_modules/mongoose/lib/helpers/topology/isSSLError.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/update/applyTimestampsToChildren.js b/node_backend/node_modules/mongoose/lib/helpers/update/applyTimestampsToChildren.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/update/applyTimestampsToChildren.js rename to node_backend/node_modules/mongoose/lib/helpers/update/applyTimestampsToChildren.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/update/applyTimestampsToUpdate.js b/node_backend/node_modules/mongoose/lib/helpers/update/applyTimestampsToUpdate.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/update/applyTimestampsToUpdate.js rename to node_backend/node_modules/mongoose/lib/helpers/update/applyTimestampsToUpdate.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/update/castArrayFilters.js b/node_backend/node_modules/mongoose/lib/helpers/update/castArrayFilters.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/update/castArrayFilters.js rename to node_backend/node_modules/mongoose/lib/helpers/update/castArrayFilters.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/update/decorateUpdateWithVersionKey.js b/node_backend/node_modules/mongoose/lib/helpers/update/decorateUpdateWithVersionKey.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/update/decorateUpdateWithVersionKey.js rename to node_backend/node_modules/mongoose/lib/helpers/update/decorateUpdateWithVersionKey.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/update/modifiedPaths.js b/node_backend/node_modules/mongoose/lib/helpers/update/modifiedPaths.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/update/modifiedPaths.js rename to node_backend/node_modules/mongoose/lib/helpers/update/modifiedPaths.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/update/moveImmutableProperties.js b/node_backend/node_modules/mongoose/lib/helpers/update/moveImmutableProperties.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/update/moveImmutableProperties.js rename to node_backend/node_modules/mongoose/lib/helpers/update/moveImmutableProperties.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/update/removeUnusedArrayFilters.js b/node_backend/node_modules/mongoose/lib/helpers/update/removeUnusedArrayFilters.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/update/removeUnusedArrayFilters.js rename to node_backend/node_modules/mongoose/lib/helpers/update/removeUnusedArrayFilters.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/update/updatedPathsByArrayFilter.js b/node_backend/node_modules/mongoose/lib/helpers/update/updatedPathsByArrayFilter.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/update/updatedPathsByArrayFilter.js rename to node_backend/node_modules/mongoose/lib/helpers/update/updatedPathsByArrayFilter.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/updateValidators.js b/node_backend/node_modules/mongoose/lib/helpers/updateValidators.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/helpers/updateValidators.js rename to node_backend/node_modules/mongoose/lib/helpers/updateValidators.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/index.js b/node_backend/node_modules/mongoose/lib/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/index.js rename to node_backend/node_modules/mongoose/lib/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/internal.js b/node_backend/node_modules/mongoose/lib/internal.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/internal.js rename to node_backend/node_modules/mongoose/lib/internal.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/model.js b/node_backend/node_modules/mongoose/lib/model.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/model.js rename to node_backend/node_modules/mongoose/lib/model.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/modifiedPathsSnapshot.js b/node_backend/node_modules/mongoose/lib/modifiedPathsSnapshot.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/modifiedPathsSnapshot.js rename to node_backend/node_modules/mongoose/lib/modifiedPathsSnapshot.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/mongoose.js b/node_backend/node_modules/mongoose/lib/mongoose.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/mongoose.js rename to node_backend/node_modules/mongoose/lib/mongoose.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options.js b/node_backend/node_modules/mongoose/lib/options.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options.js rename to node_backend/node_modules/mongoose/lib/options.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/populateOptions.js b/node_backend/node_modules/mongoose/lib/options/populateOptions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/populateOptions.js rename to node_backend/node_modules/mongoose/lib/options/populateOptions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/propertyOptions.js b/node_backend/node_modules/mongoose/lib/options/propertyOptions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/propertyOptions.js rename to node_backend/node_modules/mongoose/lib/options/propertyOptions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/saveOptions.js b/node_backend/node_modules/mongoose/lib/options/saveOptions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/saveOptions.js rename to node_backend/node_modules/mongoose/lib/options/saveOptions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaArrayOptions.js b/node_backend/node_modules/mongoose/lib/options/schemaArrayOptions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaArrayOptions.js rename to node_backend/node_modules/mongoose/lib/options/schemaArrayOptions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaBufferOptions.js b/node_backend/node_modules/mongoose/lib/options/schemaBufferOptions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaBufferOptions.js rename to node_backend/node_modules/mongoose/lib/options/schemaBufferOptions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaDateOptions.js b/node_backend/node_modules/mongoose/lib/options/schemaDateOptions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaDateOptions.js rename to node_backend/node_modules/mongoose/lib/options/schemaDateOptions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaDocumentArrayOptions.js b/node_backend/node_modules/mongoose/lib/options/schemaDocumentArrayOptions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaDocumentArrayOptions.js rename to node_backend/node_modules/mongoose/lib/options/schemaDocumentArrayOptions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaMapOptions.js b/node_backend/node_modules/mongoose/lib/options/schemaMapOptions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaMapOptions.js rename to node_backend/node_modules/mongoose/lib/options/schemaMapOptions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaNumberOptions.js b/node_backend/node_modules/mongoose/lib/options/schemaNumberOptions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaNumberOptions.js rename to node_backend/node_modules/mongoose/lib/options/schemaNumberOptions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaObjectIdOptions.js b/node_backend/node_modules/mongoose/lib/options/schemaObjectIdOptions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaObjectIdOptions.js rename to node_backend/node_modules/mongoose/lib/options/schemaObjectIdOptions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaStringOptions.js b/node_backend/node_modules/mongoose/lib/options/schemaStringOptions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaStringOptions.js rename to node_backend/node_modules/mongoose/lib/options/schemaStringOptions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaSubdocumentOptions.js b/node_backend/node_modules/mongoose/lib/options/schemaSubdocumentOptions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaSubdocumentOptions.js rename to node_backend/node_modules/mongoose/lib/options/schemaSubdocumentOptions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaTypeOptions.js b/node_backend/node_modules/mongoose/lib/options/schemaTypeOptions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/schemaTypeOptions.js rename to node_backend/node_modules/mongoose/lib/options/schemaTypeOptions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/virtualOptions.js b/node_backend/node_modules/mongoose/lib/options/virtualOptions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/options/virtualOptions.js rename to node_backend/node_modules/mongoose/lib/options/virtualOptions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/plugins/index.js b/node_backend/node_modules/mongoose/lib/plugins/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/plugins/index.js rename to node_backend/node_modules/mongoose/lib/plugins/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/plugins/saveSubdocs.js b/node_backend/node_modules/mongoose/lib/plugins/saveSubdocs.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/plugins/saveSubdocs.js rename to node_backend/node_modules/mongoose/lib/plugins/saveSubdocs.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/plugins/sharding.js b/node_backend/node_modules/mongoose/lib/plugins/sharding.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/plugins/sharding.js rename to node_backend/node_modules/mongoose/lib/plugins/sharding.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/plugins/trackTransaction.js b/node_backend/node_modules/mongoose/lib/plugins/trackTransaction.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/plugins/trackTransaction.js rename to node_backend/node_modules/mongoose/lib/plugins/trackTransaction.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/plugins/validateBeforeSave.js b/node_backend/node_modules/mongoose/lib/plugins/validateBeforeSave.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/plugins/validateBeforeSave.js rename to node_backend/node_modules/mongoose/lib/plugins/validateBeforeSave.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/query.js b/node_backend/node_modules/mongoose/lib/query.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/query.js rename to node_backend/node_modules/mongoose/lib/query.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/queryHelpers.js b/node_backend/node_modules/mongoose/lib/queryHelpers.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/queryHelpers.js rename to node_backend/node_modules/mongoose/lib/queryHelpers.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema.js b/node_backend/node_modules/mongoose/lib/schema.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema.js rename to node_backend/node_modules/mongoose/lib/schema.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/array.js b/node_backend/node_modules/mongoose/lib/schema/array.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/array.js rename to node_backend/node_modules/mongoose/lib/schema/array.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/bigint.js b/node_backend/node_modules/mongoose/lib/schema/bigint.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/bigint.js rename to node_backend/node_modules/mongoose/lib/schema/bigint.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/boolean.js b/node_backend/node_modules/mongoose/lib/schema/boolean.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/boolean.js rename to node_backend/node_modules/mongoose/lib/schema/boolean.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/buffer.js b/node_backend/node_modules/mongoose/lib/schema/buffer.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/buffer.js rename to node_backend/node_modules/mongoose/lib/schema/buffer.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/date.js b/node_backend/node_modules/mongoose/lib/schema/date.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/date.js rename to node_backend/node_modules/mongoose/lib/schema/date.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/decimal128.js b/node_backend/node_modules/mongoose/lib/schema/decimal128.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/decimal128.js rename to node_backend/node_modules/mongoose/lib/schema/decimal128.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/documentArray.js b/node_backend/node_modules/mongoose/lib/schema/documentArray.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/documentArray.js rename to node_backend/node_modules/mongoose/lib/schema/documentArray.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/documentArrayElement.js b/node_backend/node_modules/mongoose/lib/schema/documentArrayElement.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/documentArrayElement.js rename to node_backend/node_modules/mongoose/lib/schema/documentArrayElement.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/index.js b/node_backend/node_modules/mongoose/lib/schema/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/index.js rename to node_backend/node_modules/mongoose/lib/schema/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/map.js b/node_backend/node_modules/mongoose/lib/schema/map.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/map.js rename to node_backend/node_modules/mongoose/lib/schema/map.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/mixed.js b/node_backend/node_modules/mongoose/lib/schema/mixed.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/mixed.js rename to node_backend/node_modules/mongoose/lib/schema/mixed.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/number.js b/node_backend/node_modules/mongoose/lib/schema/number.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/number.js rename to node_backend/node_modules/mongoose/lib/schema/number.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/objectId.js b/node_backend/node_modules/mongoose/lib/schema/objectId.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/objectId.js rename to node_backend/node_modules/mongoose/lib/schema/objectId.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/operators/bitwise.js b/node_backend/node_modules/mongoose/lib/schema/operators/bitwise.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/operators/bitwise.js rename to node_backend/node_modules/mongoose/lib/schema/operators/bitwise.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/operators/exists.js b/node_backend/node_modules/mongoose/lib/schema/operators/exists.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/operators/exists.js rename to node_backend/node_modules/mongoose/lib/schema/operators/exists.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/operators/geospatial.js b/node_backend/node_modules/mongoose/lib/schema/operators/geospatial.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/operators/geospatial.js rename to node_backend/node_modules/mongoose/lib/schema/operators/geospatial.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/operators/helpers.js b/node_backend/node_modules/mongoose/lib/schema/operators/helpers.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/operators/helpers.js rename to node_backend/node_modules/mongoose/lib/schema/operators/helpers.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/operators/text.js b/node_backend/node_modules/mongoose/lib/schema/operators/text.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/operators/text.js rename to node_backend/node_modules/mongoose/lib/schema/operators/text.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/operators/type.js b/node_backend/node_modules/mongoose/lib/schema/operators/type.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/operators/type.js rename to node_backend/node_modules/mongoose/lib/schema/operators/type.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/string.js b/node_backend/node_modules/mongoose/lib/schema/string.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/string.js rename to node_backend/node_modules/mongoose/lib/schema/string.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/subdocument.js b/node_backend/node_modules/mongoose/lib/schema/subdocument.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/subdocument.js rename to node_backend/node_modules/mongoose/lib/schema/subdocument.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/symbols.js b/node_backend/node_modules/mongoose/lib/schema/symbols.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/symbols.js rename to node_backend/node_modules/mongoose/lib/schema/symbols.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/uuid.js b/node_backend/node_modules/mongoose/lib/schema/uuid.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schema/uuid.js rename to node_backend/node_modules/mongoose/lib/schema/uuid.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schemaType.js b/node_backend/node_modules/mongoose/lib/schemaType.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/schemaType.js rename to node_backend/node_modules/mongoose/lib/schemaType.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/stateMachine.js b/node_backend/node_modules/mongoose/lib/stateMachine.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/stateMachine.js rename to node_backend/node_modules/mongoose/lib/stateMachine.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/array/index.js b/node_backend/node_modules/mongoose/lib/types/array/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/array/index.js rename to node_backend/node_modules/mongoose/lib/types/array/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/array/isMongooseArray.js b/node_backend/node_modules/mongoose/lib/types/array/isMongooseArray.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/array/isMongooseArray.js rename to node_backend/node_modules/mongoose/lib/types/array/isMongooseArray.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/array/methods/index.js b/node_backend/node_modules/mongoose/lib/types/array/methods/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/array/methods/index.js rename to node_backend/node_modules/mongoose/lib/types/array/methods/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/arraySubdocument.js b/node_backend/node_modules/mongoose/lib/types/arraySubdocument.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/arraySubdocument.js rename to node_backend/node_modules/mongoose/lib/types/arraySubdocument.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/buffer.js b/node_backend/node_modules/mongoose/lib/types/buffer.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/buffer.js rename to node_backend/node_modules/mongoose/lib/types/buffer.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/decimal128.js b/node_backend/node_modules/mongoose/lib/types/decimal128.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/decimal128.js rename to node_backend/node_modules/mongoose/lib/types/decimal128.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/documentArray/index.js b/node_backend/node_modules/mongoose/lib/types/documentArray/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/documentArray/index.js rename to node_backend/node_modules/mongoose/lib/types/documentArray/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/documentArray/isMongooseDocumentArray.js b/node_backend/node_modules/mongoose/lib/types/documentArray/isMongooseDocumentArray.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/documentArray/isMongooseDocumentArray.js rename to node_backend/node_modules/mongoose/lib/types/documentArray/isMongooseDocumentArray.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/documentArray/methods/index.js b/node_backend/node_modules/mongoose/lib/types/documentArray/methods/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/documentArray/methods/index.js rename to node_backend/node_modules/mongoose/lib/types/documentArray/methods/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/index.js b/node_backend/node_modules/mongoose/lib/types/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/index.js rename to node_backend/node_modules/mongoose/lib/types/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/map.js b/node_backend/node_modules/mongoose/lib/types/map.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/map.js rename to node_backend/node_modules/mongoose/lib/types/map.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/objectid.js b/node_backend/node_modules/mongoose/lib/types/objectid.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/objectid.js rename to node_backend/node_modules/mongoose/lib/types/objectid.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/subdocument.js b/node_backend/node_modules/mongoose/lib/types/subdocument.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/subdocument.js rename to node_backend/node_modules/mongoose/lib/types/subdocument.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/uuid.js b/node_backend/node_modules/mongoose/lib/types/uuid.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/types/uuid.js rename to node_backend/node_modules/mongoose/lib/types/uuid.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/utils.js b/node_backend/node_modules/mongoose/lib/utils.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/utils.js rename to node_backend/node_modules/mongoose/lib/utils.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/validOptions.js b/node_backend/node_modules/mongoose/lib/validOptions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/validOptions.js rename to node_backend/node_modules/mongoose/lib/validOptions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/virtualType.js b/node_backend/node_modules/mongoose/lib/virtualType.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/lib/virtualType.js rename to node_backend/node_modules/mongoose/lib/virtualType.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/node_modules/ms/index.js b/node_backend/node_modules/mongoose/node_modules/ms/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/node_modules/ms/index.js rename to node_backend/node_modules/mongoose/node_modules/ms/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/node_modules/ms/license.md b/node_backend/node_modules/mongoose/node_modules/ms/license.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/node_modules/ms/license.md rename to node_backend/node_modules/mongoose/node_modules/ms/license.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/node_modules/ms/package.json b/node_backend/node_modules/mongoose/node_modules/ms/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/node_modules/ms/package.json rename to node_backend/node_modules/mongoose/node_modules/ms/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/node_modules/ms/readme.md b/node_backend/node_modules/mongoose/node_modules/ms/readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/node_modules/ms/readme.md rename to node_backend/node_modules/mongoose/node_modules/ms/readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/package.json b/node_backend/node_modules/mongoose/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/package.json rename to node_backend/node_modules/mongoose/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/aggregate.d.ts b/node_backend/node_modules/mongoose/types/aggregate.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/aggregate.d.ts rename to node_backend/node_modules/mongoose/types/aggregate.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/augmentations.d.ts b/node_backend/node_modules/mongoose/types/augmentations.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/augmentations.d.ts rename to node_backend/node_modules/mongoose/types/augmentations.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/callback.d.ts b/node_backend/node_modules/mongoose/types/callback.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/callback.d.ts rename to node_backend/node_modules/mongoose/types/callback.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/collection.d.ts b/node_backend/node_modules/mongoose/types/collection.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/collection.d.ts rename to node_backend/node_modules/mongoose/types/collection.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/connection.d.ts b/node_backend/node_modules/mongoose/types/connection.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/connection.d.ts rename to node_backend/node_modules/mongoose/types/connection.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/cursor.d.ts b/node_backend/node_modules/mongoose/types/cursor.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/cursor.d.ts rename to node_backend/node_modules/mongoose/types/cursor.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/document.d.ts b/node_backend/node_modules/mongoose/types/document.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/document.d.ts rename to node_backend/node_modules/mongoose/types/document.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/error.d.ts b/node_backend/node_modules/mongoose/types/error.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/error.d.ts rename to node_backend/node_modules/mongoose/types/error.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/expressions.d.ts b/node_backend/node_modules/mongoose/types/expressions.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/expressions.d.ts rename to node_backend/node_modules/mongoose/types/expressions.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/helpers.d.ts b/node_backend/node_modules/mongoose/types/helpers.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/helpers.d.ts rename to node_backend/node_modules/mongoose/types/helpers.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/index.d.ts b/node_backend/node_modules/mongoose/types/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/index.d.ts rename to node_backend/node_modules/mongoose/types/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/indexes.d.ts b/node_backend/node_modules/mongoose/types/indexes.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/indexes.d.ts rename to node_backend/node_modules/mongoose/types/indexes.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/inferrawdoctype.d.ts b/node_backend/node_modules/mongoose/types/inferrawdoctype.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/inferrawdoctype.d.ts rename to node_backend/node_modules/mongoose/types/inferrawdoctype.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/inferschematype.d.ts b/node_backend/node_modules/mongoose/types/inferschematype.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/inferschematype.d.ts rename to node_backend/node_modules/mongoose/types/inferschematype.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/middlewares.d.ts b/node_backend/node_modules/mongoose/types/middlewares.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/middlewares.d.ts rename to node_backend/node_modules/mongoose/types/middlewares.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/models.d.ts b/node_backend/node_modules/mongoose/types/models.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/models.d.ts rename to node_backend/node_modules/mongoose/types/models.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/mongooseoptions.d.ts b/node_backend/node_modules/mongoose/types/mongooseoptions.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/mongooseoptions.d.ts rename to node_backend/node_modules/mongoose/types/mongooseoptions.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/pipelinestage.d.ts b/node_backend/node_modules/mongoose/types/pipelinestage.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/pipelinestage.d.ts rename to node_backend/node_modules/mongoose/types/pipelinestage.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/populate.d.ts b/node_backend/node_modules/mongoose/types/populate.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/populate.d.ts rename to node_backend/node_modules/mongoose/types/populate.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/query.d.ts b/node_backend/node_modules/mongoose/types/query.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/query.d.ts rename to node_backend/node_modules/mongoose/types/query.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/schemaoptions.d.ts b/node_backend/node_modules/mongoose/types/schemaoptions.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/schemaoptions.d.ts rename to node_backend/node_modules/mongoose/types/schemaoptions.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/schematypes.d.ts b/node_backend/node_modules/mongoose/types/schematypes.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/schematypes.d.ts rename to node_backend/node_modules/mongoose/types/schematypes.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/session.d.ts b/node_backend/node_modules/mongoose/types/session.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/session.d.ts rename to node_backend/node_modules/mongoose/types/session.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/types.d.ts b/node_backend/node_modules/mongoose/types/types.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/types.d.ts rename to node_backend/node_modules/mongoose/types/types.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/utility.d.ts b/node_backend/node_modules/mongoose/types/utility.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/utility.d.ts rename to node_backend/node_modules/mongoose/types/utility.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/validation.d.ts b/node_backend/node_modules/mongoose/types/validation.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/validation.d.ts rename to node_backend/node_modules/mongoose/types/validation.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mongoose/types/virtuals.d.ts b/node_backend/node_modules/mongoose/types/virtuals.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mongoose/types/virtuals.d.ts rename to node_backend/node_modules/mongoose/types/virtuals.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/mpath/.travis.yml b/node_backend/node_modules/mpath/.travis.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mpath/.travis.yml rename to node_backend/node_modules/mpath/.travis.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/mpath/History.md b/node_backend/node_modules/mpath/History.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mpath/History.md rename to node_backend/node_modules/mpath/History.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mpath/LICENSE b/node_backend/node_modules/mpath/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mpath/LICENSE rename to node_backend/node_modules/mpath/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/mpath/README.md b/node_backend/node_modules/mpath/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mpath/README.md rename to node_backend/node_modules/mpath/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mpath/SECURITY.md b/node_backend/node_modules/mpath/SECURITY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mpath/SECURITY.md rename to node_backend/node_modules/mpath/SECURITY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mpath/index.js b/node_backend/node_modules/mpath/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mpath/index.js rename to node_backend/node_modules/mpath/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mpath/lib/index.js b/node_backend/node_modules/mpath/lib/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mpath/lib/index.js rename to node_backend/node_modules/mpath/lib/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mpath/lib/stringToParts.js b/node_backend/node_modules/mpath/lib/stringToParts.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mpath/lib/stringToParts.js rename to node_backend/node_modules/mpath/lib/stringToParts.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mpath/package.json b/node_backend/node_modules/mpath/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mpath/package.json rename to node_backend/node_modules/mpath/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/mpath/test/.eslintrc.yml b/node_backend/node_modules/mpath/test/.eslintrc.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mpath/test/.eslintrc.yml rename to node_backend/node_modules/mpath/test/.eslintrc.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/mpath/test/index.js b/node_backend/node_modules/mpath/test/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mpath/test/index.js rename to node_backend/node_modules/mpath/test/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mpath/test/stringToParts.js b/node_backend/node_modules/mpath/test/stringToParts.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mpath/test/stringToParts.js rename to node_backend/node_modules/mpath/test/stringToParts.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/.github/ISSUE_TEMPLATE.md b/node_backend/node_modules/mquery/.github/ISSUE_TEMPLATE.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/.github/ISSUE_TEMPLATE.md rename to node_backend/node_modules/mquery/.github/ISSUE_TEMPLATE.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/.github/PULL_REQUEST_TEMPLATE.md b/node_backend/node_modules/mquery/.github/PULL_REQUEST_TEMPLATE.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/.github/PULL_REQUEST_TEMPLATE.md rename to node_backend/node_modules/mquery/.github/PULL_REQUEST_TEMPLATE.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/History.md b/node_backend/node_modules/mquery/History.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/History.md rename to node_backend/node_modules/mquery/History.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/LICENSE b/node_backend/node_modules/mquery/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/LICENSE rename to node_backend/node_modules/mquery/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/README.md b/node_backend/node_modules/mquery/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/README.md rename to node_backend/node_modules/mquery/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/SECURITY.md b/node_backend/node_modules/mquery/SECURITY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/SECURITY.md rename to node_backend/node_modules/mquery/SECURITY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/lib/collection/collection.js b/node_backend/node_modules/mquery/lib/collection/collection.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/lib/collection/collection.js rename to node_backend/node_modules/mquery/lib/collection/collection.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/lib/collection/index.js b/node_backend/node_modules/mquery/lib/collection/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/lib/collection/index.js rename to node_backend/node_modules/mquery/lib/collection/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/lib/collection/node.js b/node_backend/node_modules/mquery/lib/collection/node.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/lib/collection/node.js rename to node_backend/node_modules/mquery/lib/collection/node.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/lib/env.js b/node_backend/node_modules/mquery/lib/env.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/lib/env.js rename to node_backend/node_modules/mquery/lib/env.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/lib/mquery.js b/node_backend/node_modules/mquery/lib/mquery.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/lib/mquery.js rename to node_backend/node_modules/mquery/lib/mquery.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/lib/permissions.js b/node_backend/node_modules/mquery/lib/permissions.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/lib/permissions.js rename to node_backend/node_modules/mquery/lib/permissions.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/lib/utils.js b/node_backend/node_modules/mquery/lib/utils.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/lib/utils.js rename to node_backend/node_modules/mquery/lib/utils.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/debug/LICENSE b/node_backend/node_modules/mquery/node_modules/debug/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/debug/LICENSE rename to node_backend/node_modules/mquery/node_modules/debug/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/debug/README.md b/node_backend/node_modules/mquery/node_modules/debug/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/debug/README.md rename to node_backend/node_modules/mquery/node_modules/debug/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/debug/package.json b/node_backend/node_modules/mquery/node_modules/debug/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/debug/package.json rename to node_backend/node_modules/mquery/node_modules/debug/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/debug/src/browser.js b/node_backend/node_modules/mquery/node_modules/debug/src/browser.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/debug/src/browser.js rename to node_backend/node_modules/mquery/node_modules/debug/src/browser.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/debug/src/common.js b/node_backend/node_modules/mquery/node_modules/debug/src/common.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/debug/src/common.js rename to node_backend/node_modules/mquery/node_modules/debug/src/common.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/debug/src/index.js b/node_backend/node_modules/mquery/node_modules/debug/src/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/debug/src/index.js rename to node_backend/node_modules/mquery/node_modules/debug/src/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/debug/src/node.js b/node_backend/node_modules/mquery/node_modules/debug/src/node.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/debug/src/node.js rename to node_backend/node_modules/mquery/node_modules/debug/src/node.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/ms/index.js b/node_backend/node_modules/mquery/node_modules/ms/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/ms/index.js rename to node_backend/node_modules/mquery/node_modules/ms/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/ms/license.md b/node_backend/node_modules/mquery/node_modules/ms/license.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/ms/license.md rename to node_backend/node_modules/mquery/node_modules/ms/license.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/ms/package.json b/node_backend/node_modules/mquery/node_modules/ms/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/ms/package.json rename to node_backend/node_modules/mquery/node_modules/ms/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/ms/readme.md b/node_backend/node_modules/mquery/node_modules/ms/readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/node_modules/ms/readme.md rename to node_backend/node_modules/mquery/node_modules/ms/readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/mquery/package.json b/node_backend/node_modules/mquery/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/mquery/package.json rename to node_backend/node_modules/mquery/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/ms/index.js b/node_backend/node_modules/ms/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ms/index.js rename to node_backend/node_modules/ms/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/ms/license.md b/node_backend/node_modules/ms/license.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ms/license.md rename to node_backend/node_modules/ms/license.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/ms/package.json b/node_backend/node_modules/ms/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ms/package.json rename to node_backend/node_modules/ms/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/ms/readme.md b/node_backend/node_modules/ms/readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/ms/readme.md rename to node_backend/node_modules/ms/readme.md diff --git a/node_backend/node_modules/multer/LICENSE b/node_backend/node_modules/multer/LICENSE new file mode 100644 index 00000000..6c011b18 --- /dev/null +++ b/node_backend/node_modules/multer/LICENSE @@ -0,0 +1,17 @@ +Copyright (c) 2014 Hage Yaapa <[http://www.hacksparrow.com](http://www.hacksparrow.com)> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_backend/node_modules/multer/README.md b/node_backend/node_modules/multer/README.md new file mode 100644 index 00000000..7f5d0807 --- /dev/null +++ b/node_backend/node_modules/multer/README.md @@ -0,0 +1,333 @@ +# Multer [![Build Status](https://travis-ci.org/expressjs/multer.svg?branch=master)](https://travis-ci.org/expressjs/multer) [![NPM version](https://badge.fury.io/js/multer.svg)](https://badge.fury.io/js/multer) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](https://github.com/feross/standard) + +Multer is a node.js middleware for handling `multipart/form-data`, which is primarily used for uploading files. It is written +on top of [busboy](https://github.com/mscdex/busboy) for maximum efficiency. + +**NOTE**: Multer will not process any form which is not multipart (`multipart/form-data`). + +## Translations + +This README is also available in other languages: + +- [Español](https://github.com/expressjs/multer/blob/master/doc/README-es.md) (Spanish) +- [简体中文](https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md) (Chinese) +- [한국어](https://github.com/expressjs/multer/blob/master/doc/README-ko.md) (Korean) +- [Русский язык](https://github.com/expressjs/multer/blob/master/doc/README-ru.md) (Russian) +- [Việt Nam](https://github.com/expressjs/multer/blob/master/doc/README-vi.md) (Vietnam) +- [Português](https://github.com/expressjs/multer/blob/master/doc/README-pt-br.md) (Portuguese Brazil) + +## Installation + +```sh +$ npm install --save multer +``` + +## Usage + +Multer adds a `body` object and a `file` or `files` object to the `request` object. The `body` object contains the values of the text fields of the form, the `file` or `files` object contains the files uploaded via the form. + +Basic usage example: + +Don't forget the `enctype="multipart/form-data"` in your form. + +```html +
+ +
+``` + +```javascript +const express = require('express') +const multer = require('multer') +const upload = multer({ dest: 'uploads/' }) + +const app = express() + +app.post('/profile', upload.single('avatar'), function (req, res, next) { + // req.file is the `avatar` file + // req.body will hold the text fields, if there were any +}) + +app.post('/photos/upload', upload.array('photos', 12), function (req, res, next) { + // req.files is array of `photos` files + // req.body will contain the text fields, if there were any +}) + +const cpUpload = upload.fields([{ name: 'avatar', maxCount: 1 }, { name: 'gallery', maxCount: 8 }]) +app.post('/cool-profile', cpUpload, function (req, res, next) { + // req.files is an object (String -> Array) where fieldname is the key, and the value is array of files + // + // e.g. + // req.files['avatar'][0] -> File + // req.files['gallery'] -> Array + // + // req.body will contain the text fields, if there were any +}) +``` + +In case you need to handle a text-only multipart form, you should use the `.none()` method: + +```javascript +const express = require('express') +const app = express() +const multer = require('multer') +const upload = multer() + +app.post('/profile', upload.none(), function (req, res, next) { + // req.body contains the text fields +}) +``` + +Here's an example on how multer is used an HTML form. Take special note of the `enctype="multipart/form-data"` and `name="uploaded_file"` fields: + +```html +
+
+ + + +
+
+``` + +Then in your javascript file you would add these lines to access both the file and the body. It is important that you use the `name` field value from the form in your upload function. This tells multer which field on the request it should look for the files in. If these fields aren't the same in the HTML form and on your server, your upload will fail: + +```javascript +const multer = require('multer') +const upload = multer({ dest: './public/data/uploads/' }) +app.post('/stats', upload.single('uploaded_file'), function (req, res) { + // req.file is the name of your file in the form above, here 'uploaded_file' + // req.body will hold the text fields, if there were any + console.log(req.file, req.body) +}); +``` + + + +## API + +### File information + +Each file contains the following information: + +Key | Description | Note +--- | --- | --- +`fieldname` | Field name specified in the form | +`originalname` | Name of the file on the user's computer | +`encoding` | Encoding type of the file | +`mimetype` | Mime type of the file | +`size` | Size of the file in bytes | +`destination` | The folder to which the file has been saved | `DiskStorage` +`filename` | The name of the file within the `destination` | `DiskStorage` +`path` | The full path to the uploaded file | `DiskStorage` +`buffer` | A `Buffer` of the entire file | `MemoryStorage` + +### `multer(opts)` + +Multer accepts an options object, the most basic of which is the `dest` +property, which tells Multer where to upload the files. In case you omit the +options object, the files will be kept in memory and never written to disk. + +By default, Multer will rename the files so as to avoid naming conflicts. The +renaming function can be customized according to your needs. + +The following are the options that can be passed to Multer. + +Key | Description +--- | --- +`dest` or `storage` | Where to store the files +`fileFilter` | Function to control which files are accepted +`limits` | Limits of the uploaded data +`preservePath` | Keep the full path of files instead of just the base name + +In an average web app, only `dest` might be required, and configured as shown in +the following example. + +```javascript +const upload = multer({ dest: 'uploads/' }) +``` + +If you want more control over your uploads, you'll want to use the `storage` +option instead of `dest`. Multer ships with storage engines `DiskStorage` +and `MemoryStorage`; More engines are available from third parties. + +#### `.single(fieldname)` + +Accept a single file with the name `fieldname`. The single file will be stored +in `req.file`. + +#### `.array(fieldname[, maxCount])` + +Accept an array of files, all with the name `fieldname`. Optionally error out if +more than `maxCount` files are uploaded. The array of files will be stored in +`req.files`. + +#### `.fields(fields)` + +Accept a mix of files, specified by `fields`. An object with arrays of files +will be stored in `req.files`. + +`fields` should be an array of objects with `name` and optionally a `maxCount`. +Example: + +```javascript +[ + { name: 'avatar', maxCount: 1 }, + { name: 'gallery', maxCount: 8 } +] +``` + +#### `.none()` + +Accept only text fields. If any file upload is made, error with code +"LIMIT\_UNEXPECTED\_FILE" will be issued. + +#### `.any()` + +Accepts all files that comes over the wire. An array of files will be stored in +`req.files`. + +**WARNING:** Make sure that you always handle the files that a user uploads. +Never add multer as a global middleware since a malicious user could upload +files to a route that you didn't anticipate. Only use this function on routes +where you are handling the uploaded files. + +### `storage` + +#### `DiskStorage` + +The disk storage engine gives you full control on storing files to disk. + +```javascript +const storage = multer.diskStorage({ + destination: function (req, file, cb) { + cb(null, '/tmp/my-uploads') + }, + filename: function (req, file, cb) { + const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9) + cb(null, file.fieldname + '-' + uniqueSuffix) + } +}) + +const upload = multer({ storage: storage }) +``` + +There are two options available, `destination` and `filename`. They are both +functions that determine where the file should be stored. + +`destination` is used to determine within which folder the uploaded files should +be stored. This can also be given as a `string` (e.g. `'/tmp/uploads'`). If no +`destination` is given, the operating system's default directory for temporary +files is used. + +**Note:** You are responsible for creating the directory when providing +`destination` as a function. When passing a string, multer will make sure that +the directory is created for you. + +`filename` is used to determine what the file should be named inside the folder. +If no `filename` is given, each file will be given a random name that doesn't +include any file extension. + +**Note:** Multer will not append any file extension for you, your function +should return a filename complete with an file extension. + +Each function gets passed both the request (`req`) and some information about +the file (`file`) to aid with the decision. + +Note that `req.body` might not have been fully populated yet. It depends on the +order that the client transmits fields and files to the server. + +For understanding the calling convention used in the callback (needing to pass +null as the first param), refer to +[Node.js error handling](https://www.joyent.com/node-js/production/design/errors) + +#### `MemoryStorage` + +The memory storage engine stores the files in memory as `Buffer` objects. It +doesn't have any options. + +```javascript +const storage = multer.memoryStorage() +const upload = multer({ storage: storage }) +``` + +When using memory storage, the file info will contain a field called +`buffer` that contains the entire file. + +**WARNING**: Uploading very large files, or relatively small files in large +numbers very quickly, can cause your application to run out of memory when +memory storage is used. + +### `limits` + +An object specifying the size limits of the following optional properties. Multer passes this object into busboy directly, and the details of the properties can be found on [busboy's page](https://github.com/mscdex/busboy#busboy-methods). + +The following integer values are available: + +Key | Description | Default +--- | --- | --- +`fieldNameSize` | Max field name size | 100 bytes +`fieldSize` | Max field value size (in bytes) | 1MB +`fields` | Max number of non-file fields | Infinity +`fileSize` | For multipart forms, the max file size (in bytes) | Infinity +`files` | For multipart forms, the max number of file fields | Infinity +`parts` | For multipart forms, the max number of parts (fields + files) | Infinity +`headerPairs` | For multipart forms, the max number of header key=>value pairs to parse | 2000 + +Specifying the limits can help protect your site against denial of service (DoS) attacks. + +### `fileFilter` + +Set this to a function to control which files should be uploaded and which +should be skipped. The function should look like this: + +```javascript +function fileFilter (req, file, cb) { + + // The function should call `cb` with a boolean + // to indicate if the file should be accepted + + // To reject this file pass `false`, like so: + cb(null, false) + + // To accept the file pass `true`, like so: + cb(null, true) + + // You can always pass an error if something goes wrong: + cb(new Error('I don\'t have a clue!')) + +} +``` + +## Error handling + +When encountering an error, Multer will delegate the error to Express. You can +display a nice error page using [the standard express way](http://expressjs.com/guide/error-handling.html). + +If you want to catch errors specifically from Multer, you can call the +middleware function by yourself. Also, if you want to catch only [the Multer errors](https://github.com/expressjs/multer/blob/master/lib/multer-error.js), you can use the `MulterError` class that is attached to the `multer` object itself (e.g. `err instanceof multer.MulterError`). + +```javascript +const multer = require('multer') +const upload = multer().single('avatar') + +app.post('/profile', function (req, res) { + upload(req, res, function (err) { + if (err instanceof multer.MulterError) { + // A Multer error occurred when uploading. + } else if (err) { + // An unknown error occurred when uploading. + } + + // Everything went fine. + }) +}) +``` + +## Custom storage engine + +For information on how to build your own storage engine, see [Multer Storage Engine](https://github.com/expressjs/multer/blob/master/StorageEngine.md). + +## License + +[MIT](LICENSE) diff --git a/node_backend/node_modules/multer/index.js b/node_backend/node_modules/multer/index.js new file mode 100644 index 00000000..d5b67eba --- /dev/null +++ b/node_backend/node_modules/multer/index.js @@ -0,0 +1,104 @@ +var makeMiddleware = require('./lib/make-middleware') + +var diskStorage = require('./storage/disk') +var memoryStorage = require('./storage/memory') +var MulterError = require('./lib/multer-error') + +function allowAll (req, file, cb) { + cb(null, true) +} + +function Multer (options) { + if (options.storage) { + this.storage = options.storage + } else if (options.dest) { + this.storage = diskStorage({ destination: options.dest }) + } else { + this.storage = memoryStorage() + } + + this.limits = options.limits + this.preservePath = options.preservePath + this.fileFilter = options.fileFilter || allowAll +} + +Multer.prototype._makeMiddleware = function (fields, fileStrategy) { + function setup () { + var fileFilter = this.fileFilter + var filesLeft = Object.create(null) + + fields.forEach(function (field) { + if (typeof field.maxCount === 'number') { + filesLeft[field.name] = field.maxCount + } else { + filesLeft[field.name] = Infinity + } + }) + + function wrappedFileFilter (req, file, cb) { + if ((filesLeft[file.fieldname] || 0) <= 0) { + return cb(new MulterError('LIMIT_UNEXPECTED_FILE', file.fieldname)) + } + + filesLeft[file.fieldname] -= 1 + fileFilter(req, file, cb) + } + + return { + limits: this.limits, + preservePath: this.preservePath, + storage: this.storage, + fileFilter: wrappedFileFilter, + fileStrategy: fileStrategy + } + } + + return makeMiddleware(setup.bind(this)) +} + +Multer.prototype.single = function (name) { + return this._makeMiddleware([{ name: name, maxCount: 1 }], 'VALUE') +} + +Multer.prototype.array = function (name, maxCount) { + return this._makeMiddleware([{ name: name, maxCount: maxCount }], 'ARRAY') +} + +Multer.prototype.fields = function (fields) { + return this._makeMiddleware(fields, 'OBJECT') +} + +Multer.prototype.none = function () { + return this._makeMiddleware([], 'NONE') +} + +Multer.prototype.any = function () { + function setup () { + return { + limits: this.limits, + preservePath: this.preservePath, + storage: this.storage, + fileFilter: this.fileFilter, + fileStrategy: 'ARRAY' + } + } + + return makeMiddleware(setup.bind(this)) +} + +function multer (options) { + if (options === undefined) { + return new Multer({}) + } + + if (typeof options === 'object' && options !== null) { + return new Multer(options) + } + + throw new TypeError('Expected object for argument options') +} + +module.exports = multer +module.exports.diskStorage = diskStorage +module.exports.memoryStorage = memoryStorage +module.exports.MulterError = MulterError diff --git a/node_backend/node_modules/multer/lib/counter.js b/node_backend/node_modules/multer/lib/counter.js new file mode 100644 index 00000000..29c410c7 --- /dev/null +++ b/node_backend/node_modules/multer/lib/counter.js @@ -0,0 +1,28 @@ +var EventEmitter = require('events').EventEmitter + +function Counter () { + EventEmitter.call(this) + this.value = 0 +} + +Counter.prototype = Object.create(EventEmitter.prototype) + +Counter.prototype.increment = function increment () { + this.value++ +} + +Counter.prototype.decrement = function decrement () { + if (--this.value === 0) this.emit('zero') +} + +Counter.prototype.isZero = function isZero () { + return (this.value === 0) +} + +Counter.prototype.onceZero = function onceZero (fn) { + if (this.isZero()) return fn() + + this.once('zero', fn) +} + +module.exports = Counter diff --git a/node_backend/node_modules/multer/lib/file-appender.js b/node_backend/node_modules/multer/lib/file-appender.js new file mode 100644 index 00000000..1a2c5e76 --- /dev/null +++ b/node_backend/node_modules/multer/lib/file-appender.js @@ -0,0 +1,67 @@ +var objectAssign = require('object-assign') + +function arrayRemove (arr, item) { + var idx = arr.indexOf(item) + if (~idx) arr.splice(idx, 1) +} + +function FileAppender (strategy, req) { + this.strategy = strategy + this.req = req + + switch (strategy) { + case 'NONE': break + case 'VALUE': break + case 'ARRAY': req.files = []; break + case 'OBJECT': req.files = Object.create(null); break + default: throw new Error('Unknown file strategy: ' + strategy) + } +} + +FileAppender.prototype.insertPlaceholder = function (file) { + var placeholder = { + fieldname: file.fieldname + } + + switch (this.strategy) { + case 'NONE': break + case 'VALUE': break + case 'ARRAY': this.req.files.push(placeholder); break + case 'OBJECT': + if (this.req.files[file.fieldname]) { + this.req.files[file.fieldname].push(placeholder) + } else { + this.req.files[file.fieldname] = [placeholder] + } + break + } + + return placeholder +} + +FileAppender.prototype.removePlaceholder = function (placeholder) { + switch (this.strategy) { + case 'NONE': break + case 'VALUE': break + case 'ARRAY': arrayRemove(this.req.files, placeholder); break + case 'OBJECT': + if (this.req.files[placeholder.fieldname].length === 1) { + delete this.req.files[placeholder.fieldname] + } else { + arrayRemove(this.req.files[placeholder.fieldname], placeholder) + } + break + } +} + +FileAppender.prototype.replacePlaceholder = function (placeholder, file) { + if (this.strategy === 'VALUE') { + this.req.file = file + return + } + + delete placeholder.fieldname + objectAssign(placeholder, file) +} + +module.exports = FileAppender diff --git a/node_backend/node_modules/multer/lib/make-middleware.js b/node_backend/node_modules/multer/lib/make-middleware.js new file mode 100644 index 00000000..6627cf4c --- /dev/null +++ b/node_backend/node_modules/multer/lib/make-middleware.js @@ -0,0 +1,173 @@ +var is = require('type-is') +var Busboy = require('busboy') +var extend = require('xtend') +var appendField = require('append-field') + +var Counter = require('./counter') +var MulterError = require('./multer-error') +var FileAppender = require('./file-appender') +var removeUploadedFiles = require('./remove-uploaded-files') + +function makeMiddleware (setup) { + return function multerMiddleware (req, res, next) { + if (!is(req, ['multipart'])) return next() + + var options = setup() + + var limits = options.limits + var storage = options.storage + var fileFilter = options.fileFilter + var fileStrategy = options.fileStrategy + var preservePath = options.preservePath + + req.body = Object.create(null) + + var busboy + + try { + busboy = Busboy({ headers: req.headers, limits: limits, preservePath: preservePath }) + } catch (err) { + return next(err) + } + + var appender = new FileAppender(fileStrategy, req) + var isDone = false + var readFinished = false + var errorOccured = false + var pendingWrites = new Counter() + var uploadedFiles = [] + + function done (err) { + if (isDone) return + isDone = true + req.unpipe(busboy) + busboy.removeAllListeners() + next(err) + } + + function indicateDone () { + if (readFinished && pendingWrites.isZero() && !errorOccured) done() + } + + function abortWithError (uploadError) { + if (errorOccured) return + errorOccured = true + + pendingWrites.onceZero(function () { + function remove (file, cb) { + storage._removeFile(req, file, cb) + } + + removeUploadedFiles(uploadedFiles, remove, function (err, storageErrors) { + if (err) return done(err) + + uploadError.storageErrors = storageErrors + done(uploadError) + }) + }) + } + + function abortWithCode (code, optionalField) { + abortWithError(new MulterError(code, optionalField)) + } + + // handle text field data + busboy.on('field', function (fieldname, value, { nameTruncated, valueTruncated }) { + if (fieldname == null) return abortWithCode('MISSING_FIELD_NAME') + if (nameTruncated) return abortWithCode('LIMIT_FIELD_KEY') + if (valueTruncated) return abortWithCode('LIMIT_FIELD_VALUE', fieldname) + + // Work around bug in Busboy (https://github.com/mscdex/busboy/issues/6) + if (limits && Object.prototype.hasOwnProperty.call(limits, 'fieldNameSize')) { + if (fieldname.length > limits.fieldNameSize) return abortWithCode('LIMIT_FIELD_KEY') + } + + appendField(req.body, fieldname, value) + }) + + // handle files + busboy.on('file', function (fieldname, fileStream, { filename, encoding, mimeType }) { + // don't attach to the files object, if there is no file + if (!filename) return fileStream.resume() + + // Work around bug in Busboy (https://github.com/mscdex/busboy/issues/6) + if (limits && Object.prototype.hasOwnProperty.call(limits, 'fieldNameSize')) { + if (fieldname.length > limits.fieldNameSize) return abortWithCode('LIMIT_FIELD_KEY') + } + + var file = { + fieldname: fieldname, + originalname: filename, + encoding: encoding, + mimetype: mimeType + } + + var placeholder = appender.insertPlaceholder(file) + + fileFilter(req, file, function (err, includeFile) { + if (err) { + appender.removePlaceholder(placeholder) + return abortWithError(err) + } + + if (!includeFile) { + appender.removePlaceholder(placeholder) + return fileStream.resume() + } + + var aborting = false + pendingWrites.increment() + + Object.defineProperty(file, 'stream', { + configurable: true, + enumerable: false, + value: fileStream + }) + + fileStream.on('error', function (err) { + pendingWrites.decrement() + abortWithError(err) + }) + + fileStream.on('limit', function () { + aborting = true + abortWithCode('LIMIT_FILE_SIZE', fieldname) + }) + + storage._handleFile(req, file, function (err, info) { + if (aborting) { + appender.removePlaceholder(placeholder) + uploadedFiles.push(extend(file, info)) + return pendingWrites.decrement() + } + + if (err) { + appender.removePlaceholder(placeholder) + pendingWrites.decrement() + return abortWithError(err) + } + + var fileInfo = extend(file, info) + + appender.replacePlaceholder(placeholder, fileInfo) + uploadedFiles.push(fileInfo) + pendingWrites.decrement() + indicateDone() + }) + }) + }) + + busboy.on('error', function (err) { abortWithError(err) }) + busboy.on('partsLimit', function () { abortWithCode('LIMIT_PART_COUNT') }) + busboy.on('filesLimit', function () { abortWithCode('LIMIT_FILE_COUNT') }) + busboy.on('fieldsLimit', function () { abortWithCode('LIMIT_FIELD_COUNT') }) + busboy.on('close', function () { + readFinished = true + indicateDone() + }) + + req.pipe(busboy) + } +} + +module.exports = makeMiddleware diff --git a/node_backend/node_modules/multer/lib/multer-error.js b/node_backend/node_modules/multer/lib/multer-error.js new file mode 100644 index 00000000..d56b00e8 --- /dev/null +++ b/node_backend/node_modules/multer/lib/multer-error.js @@ -0,0 +1,24 @@ +var util = require('util') + +var errorMessages = { + LIMIT_PART_COUNT: 'Too many parts', + LIMIT_FILE_SIZE: 'File too large', + LIMIT_FILE_COUNT: 'Too many files', + LIMIT_FIELD_KEY: 'Field name too long', + LIMIT_FIELD_VALUE: 'Field value too long', + LIMIT_FIELD_COUNT: 'Too many fields', + LIMIT_UNEXPECTED_FILE: 'Unexpected field', + MISSING_FIELD_NAME: 'Field name missing' +} + +function MulterError (code, field) { + Error.captureStackTrace(this, this.constructor) + this.name = this.constructor.name + this.message = errorMessages[code] + this.code = code + if (field) this.field = field +} + +util.inherits(MulterError, Error) + +module.exports = MulterError diff --git a/node_backend/node_modules/multer/lib/remove-uploaded-files.js b/node_backend/node_modules/multer/lib/remove-uploaded-files.js new file mode 100644 index 00000000..f0b16ea5 --- /dev/null +++ b/node_backend/node_modules/multer/lib/remove-uploaded-files.js @@ -0,0 +1,28 @@ +function removeUploadedFiles (uploadedFiles, remove, cb) { + var length = uploadedFiles.length + var errors = [] + + if (length === 0) return cb(null, errors) + + function handleFile (idx) { + var file = uploadedFiles[idx] + + remove(file, function (err) { + if (err) { + err.file = file + err.field = file.fieldname + errors.push(err) + } + + if (idx < length - 1) { + handleFile(idx + 1) + } else { + cb(null, errors) + } + }) + } + + handleFile(0) +} + +module.exports = removeUploadedFiles diff --git a/node_backend/node_modules/multer/node_modules/.bin/mkdirp b/node_backend/node_modules/multer/node_modules/.bin/mkdirp new file mode 100644 index 00000000..6ba5765a --- /dev/null +++ b/node_backend/node_modules/multer/node_modules/.bin/mkdirp @@ -0,0 +1,12 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../mkdirp/bin/cmd.js" "$@" +else + exec node "$basedir/../mkdirp/bin/cmd.js" "$@" +fi diff --git a/node_backend/node_modules/multer/node_modules/.bin/mkdirp.cmd b/node_backend/node_modules/multer/node_modules/.bin/mkdirp.cmd new file mode 100644 index 00000000..a865dd9f --- /dev/null +++ b/node_backend/node_modules/multer/node_modules/.bin/mkdirp.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mkdirp\bin\cmd.js" %* diff --git a/node_backend/node_modules/multer/node_modules/.bin/mkdirp.ps1 b/node_backend/node_modules/multer/node_modules/.bin/mkdirp.ps1 new file mode 100644 index 00000000..911e8546 --- /dev/null +++ b/node_backend/node_modules/multer/node_modules/.bin/mkdirp.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../mkdirp/bin/cmd.js" $args + } else { + & "$basedir/node$exe" "$basedir/../mkdirp/bin/cmd.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../mkdirp/bin/cmd.js" $args + } else { + & "node$exe" "$basedir/../mkdirp/bin/cmd.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_backend/node_modules/multer/node_modules/mkdirp/LICENSE b/node_backend/node_modules/multer/node_modules/mkdirp/LICENSE new file mode 100644 index 00000000..432d1aeb --- /dev/null +++ b/node_backend/node_modules/multer/node_modules/mkdirp/LICENSE @@ -0,0 +1,21 @@ +Copyright 2010 James Halliday (mail@substack.net) + +This project is free software released under the MIT/X11 license: + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_backend/node_modules/multer/node_modules/mkdirp/bin/cmd.js b/node_backend/node_modules/multer/node_modules/mkdirp/bin/cmd.js new file mode 100644 index 00000000..d95de15a --- /dev/null +++ b/node_backend/node_modules/multer/node_modules/mkdirp/bin/cmd.js @@ -0,0 +1,33 @@ +#!/usr/bin/env node + +var mkdirp = require('../'); +var minimist = require('minimist'); +var fs = require('fs'); + +var argv = minimist(process.argv.slice(2), { + alias: { m: 'mode', h: 'help' }, + string: [ 'mode' ] +}); +if (argv.help) { + fs.createReadStream(__dirname + '/usage.txt').pipe(process.stdout); + return; +} + +var paths = argv._.slice(); +var mode = argv.mode ? parseInt(argv.mode, 8) : undefined; + +(function next () { + if (paths.length === 0) return; + var p = paths.shift(); + + if (mode === undefined) mkdirp(p, cb) + else mkdirp(p, mode, cb) + + function cb (err) { + if (err) { + console.error(err.message); + process.exit(1); + } + else next(); + } +})(); diff --git a/node_backend/node_modules/multer/node_modules/mkdirp/bin/usage.txt b/node_backend/node_modules/multer/node_modules/mkdirp/bin/usage.txt new file mode 100644 index 00000000..f952aa2c --- /dev/null +++ b/node_backend/node_modules/multer/node_modules/mkdirp/bin/usage.txt @@ -0,0 +1,12 @@ +usage: mkdirp [DIR1,DIR2..] {OPTIONS} + + Create each supplied directory including any necessary parent directories that + don't yet exist. + + If the directory already exists, do nothing. + +OPTIONS are: + + -m, --mode If a directory needs to be created, set the mode as an octal + permission string. + diff --git a/node_backend/node_modules/multer/node_modules/mkdirp/index.js b/node_backend/node_modules/multer/node_modules/mkdirp/index.js new file mode 100644 index 00000000..0890ac3b --- /dev/null +++ b/node_backend/node_modules/multer/node_modules/mkdirp/index.js @@ -0,0 +1,102 @@ +var path = require('path'); +var fs = require('fs'); +var _0777 = parseInt('0777', 8); + +module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; + +function mkdirP (p, opts, f, made) { + if (typeof opts === 'function') { + f = opts; + opts = {}; + } + else if (!opts || typeof opts !== 'object') { + opts = { mode: opts }; + } + + var mode = opts.mode; + var xfs = opts.fs || fs; + + if (mode === undefined) { + mode = _0777 + } + if (!made) made = null; + + var cb = f || /* istanbul ignore next */ function () {}; + p = path.resolve(p); + + xfs.mkdir(p, mode, function (er) { + if (!er) { + made = made || p; + return cb(null, made); + } + switch (er.code) { + case 'ENOENT': + /* istanbul ignore if */ + if (path.dirname(p) === p) return cb(er); + mkdirP(path.dirname(p), opts, function (er, made) { + /* istanbul ignore if */ + if (er) cb(er, made); + else mkdirP(p, opts, cb, made); + }); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + xfs.stat(p, function (er2, stat) { + // if the stat fails, then that's super weird. + // let the original error be the failure reason. + if (er2 || !stat.isDirectory()) cb(er, made) + else cb(null, made); + }); + break; + } + }); +} + +mkdirP.sync = function sync (p, opts, made) { + if (!opts || typeof opts !== 'object') { + opts = { mode: opts }; + } + + var mode = opts.mode; + var xfs = opts.fs || fs; + + if (mode === undefined) { + mode = _0777 + } + if (!made) made = null; + + p = path.resolve(p); + + try { + xfs.mkdirSync(p, mode); + made = made || p; + } + catch (err0) { + switch (err0.code) { + case 'ENOENT' : + made = sync(path.dirname(p), opts, made); + sync(p, opts, made); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + var stat; + try { + stat = xfs.statSync(p); + } + catch (err1) /* istanbul ignore next */ { + throw err0; + } + /* istanbul ignore if */ + if (!stat.isDirectory()) throw err0; + break; + } + } + + return made; +}; diff --git a/node_backend/node_modules/multer/node_modules/mkdirp/package.json b/node_backend/node_modules/multer/node_modules/mkdirp/package.json new file mode 100644 index 00000000..951e58da --- /dev/null +++ b/node_backend/node_modules/multer/node_modules/mkdirp/package.json @@ -0,0 +1,33 @@ +{ + "name": "mkdirp", + "description": "Recursively mkdir, like `mkdir -p`", + "version": "0.5.6", + "publishConfig": { + "tag": "legacy" + }, + "author": "James Halliday (http://substack.net)", + "main": "index.js", + "keywords": [ + "mkdir", + "directory" + ], + "repository": { + "type": "git", + "url": "https://github.com/substack/node-mkdirp.git" + }, + "scripts": { + "test": "tap test/*.js" + }, + "dependencies": { + "minimist": "^1.2.6" + }, + "devDependencies": { + "tap": "^16.0.1" + }, + "bin": "bin/cmd.js", + "license": "MIT", + "files": [ + "bin", + "index.js" + ] +} diff --git a/node_backend/node_modules/multer/node_modules/mkdirp/readme.markdown b/node_backend/node_modules/multer/node_modules/mkdirp/readme.markdown new file mode 100644 index 00000000..fc314bfb --- /dev/null +++ b/node_backend/node_modules/multer/node_modules/mkdirp/readme.markdown @@ -0,0 +1,100 @@ +# mkdirp + +Like `mkdir -p`, but in node.js! + +[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp) + +# example + +## pow.js + +```js +var mkdirp = require('mkdirp'); + +mkdirp('/tmp/foo/bar/baz', function (err) { + if (err) console.error(err) + else console.log('pow!') +}); +``` + +Output + +``` +pow! +``` + +And now /tmp/foo/bar/baz exists, huzzah! + +# methods + +```js +var mkdirp = require('mkdirp'); +``` + +## mkdirp(dir, opts, cb) + +Create a new directory and any necessary subdirectories at `dir` with octal +permission string `opts.mode`. If `opts` is a non-object, it will be treated as +the `opts.mode`. + +If `opts.mode` isn't specified, it defaults to `0777`. + +`cb(err, made)` fires with the error or the first directory `made` +that had to be created, if any. + +You can optionally pass in an alternate `fs` implementation by passing in +`opts.fs`. Your implementation should have `opts.fs.mkdir(path, mode, cb)` and +`opts.fs.stat(path, cb)`. + +## mkdirp.sync(dir, opts) + +Synchronously create a new directory and any necessary subdirectories at `dir` +with octal permission string `opts.mode`. If `opts` is a non-object, it will be +treated as the `opts.mode`. + +If `opts.mode` isn't specified, it defaults to `0777`. + +Returns the first directory that had to be created, if any. + +You can optionally pass in an alternate `fs` implementation by passing in +`opts.fs`. Your implementation should have `opts.fs.mkdirSync(path, mode)` and +`opts.fs.statSync(path)`. + +# usage + +This package also ships with a `mkdirp` command. + +``` +usage: mkdirp [DIR1,DIR2..] {OPTIONS} + + Create each supplied directory including any necessary parent directories that + don't yet exist. + + If the directory already exists, do nothing. + +OPTIONS are: + + -m, --mode If a directory needs to be created, set the mode as an octal + permission string. + +``` + +# install + +With [npm](http://npmjs.org) do: + +``` +npm install mkdirp +``` + +to get the library, or + +``` +npm install -g mkdirp +``` + +to get the command. + +# license + +MIT diff --git a/node_backend/node_modules/multer/package.json b/node_backend/node_modules/multer/package.json new file mode 100644 index 00000000..8545a73d --- /dev/null +++ b/node_backend/node_modules/multer/package.json @@ -0,0 +1,52 @@ +{ + "name": "multer", + "description": "Middleware for handling `multipart/form-data`.", + "version": "1.4.5-lts.1", + "contributors": [ + "Hage Yaapa (http://www.hacksparrow.com)", + "Jaret Pfluger ", + "Linus Unnebäck " + ], + "license": "MIT", + "repository": "expressjs/multer", + "keywords": [ + "form", + "post", + "multipart", + "form-data", + "formdata", + "express", + "middleware" + ], + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "devDependencies": { + "deep-equal": "^2.0.3", + "express": "^4.13.1", + "form-data": "^1.0.0-rc1", + "fs-temp": "^1.1.2", + "mocha": "^3.5.3", + "rimraf": "^2.4.1", + "standard": "^14.3.3", + "testdata-w3c-json-form": "^1.0.0" + }, + "engines": { + "node": ">= 6.0.0" + }, + "files": [ + "LICENSE", + "index.js", + "storage/", + "lib/" + ], + "scripts": { + "test": "standard && mocha" + } +} diff --git a/node_backend/node_modules/multer/storage/disk.js b/node_backend/node_modules/multer/storage/disk.js new file mode 100644 index 00000000..2f77c9f1 --- /dev/null +++ b/node_backend/node_modules/multer/storage/disk.js @@ -0,0 +1,66 @@ +var fs = require('fs') +var os = require('os') +var path = require('path') +var crypto = require('crypto') +var mkdirp = require('mkdirp') + +function getFilename (req, file, cb) { + crypto.randomBytes(16, function (err, raw) { + cb(err, err ? undefined : raw.toString('hex')) + }) +} + +function getDestination (req, file, cb) { + cb(null, os.tmpdir()) +} + +function DiskStorage (opts) { + this.getFilename = (opts.filename || getFilename) + + if (typeof opts.destination === 'string') { + mkdirp.sync(opts.destination) + this.getDestination = function ($0, $1, cb) { cb(null, opts.destination) } + } else { + this.getDestination = (opts.destination || getDestination) + } +} + +DiskStorage.prototype._handleFile = function _handleFile (req, file, cb) { + var that = this + + that.getDestination(req, file, function (err, destination) { + if (err) return cb(err) + + that.getFilename(req, file, function (err, filename) { + if (err) return cb(err) + + var finalPath = path.join(destination, filename) + var outStream = fs.createWriteStream(finalPath) + + file.stream.pipe(outStream) + outStream.on('error', cb) + outStream.on('finish', function () { + cb(null, { + destination: destination, + filename: filename, + path: finalPath, + size: outStream.bytesWritten + }) + }) + }) + }) +} + +DiskStorage.prototype._removeFile = function _removeFile (req, file, cb) { + var path = file.path + + delete file.destination + delete file.filename + delete file.path + + fs.unlink(path, cb) +} + +module.exports = function (opts) { + return new DiskStorage(opts) +} diff --git a/node_backend/node_modules/multer/storage/memory.js b/node_backend/node_modules/multer/storage/memory.js new file mode 100644 index 00000000..f953ded1 --- /dev/null +++ b/node_backend/node_modules/multer/storage/memory.js @@ -0,0 +1,21 @@ +var concat = require('concat-stream') + +function MemoryStorage (opts) {} + +MemoryStorage.prototype._handleFile = function _handleFile (req, file, cb) { + file.stream.pipe(concat({ encoding: 'buffer' }, function (data) { + cb(null, { + buffer: data, + size: data.length + }) + })) +} + +MemoryStorage.prototype._removeFile = function _removeFile (req, file, cb) { + delete file.buffer + cb(null) +} + +module.exports = function (opts) { + return new MemoryStorage(opts) +} diff --git a/Inscripciones_UAIE/node_backend/node_modules/negotiator/HISTORY.md b/node_backend/node_modules/negotiator/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/negotiator/HISTORY.md rename to node_backend/node_modules/negotiator/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/negotiator/LICENSE b/node_backend/node_modules/negotiator/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/negotiator/LICENSE rename to node_backend/node_modules/negotiator/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/negotiator/README.md b/node_backend/node_modules/negotiator/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/negotiator/README.md rename to node_backend/node_modules/negotiator/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/negotiator/index.js b/node_backend/node_modules/negotiator/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/negotiator/index.js rename to node_backend/node_modules/negotiator/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/negotiator/lib/charset.js b/node_backend/node_modules/negotiator/lib/charset.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/negotiator/lib/charset.js rename to node_backend/node_modules/negotiator/lib/charset.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/negotiator/lib/encoding.js b/node_backend/node_modules/negotiator/lib/encoding.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/negotiator/lib/encoding.js rename to node_backend/node_modules/negotiator/lib/encoding.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/negotiator/lib/language.js b/node_backend/node_modules/negotiator/lib/language.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/negotiator/lib/language.js rename to node_backend/node_modules/negotiator/lib/language.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/negotiator/lib/mediaType.js b/node_backend/node_modules/negotiator/lib/mediaType.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/negotiator/lib/mediaType.js rename to node_backend/node_modules/negotiator/lib/mediaType.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/negotiator/package.json b/node_backend/node_modules/negotiator/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/negotiator/package.json rename to node_backend/node_modules/negotiator/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-addon-api/LICENSE.md b/node_backend/node_modules/node-addon-api/LICENSE.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-addon-api/LICENSE.md rename to node_backend/node_modules/node-addon-api/LICENSE.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-addon-api/README.md b/node_backend/node_modules/node-addon-api/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-addon-api/README.md rename to node_backend/node_modules/node-addon-api/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-addon-api/common.gypi b/node_backend/node_modules/node-addon-api/common.gypi similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-addon-api/common.gypi rename to node_backend/node_modules/node-addon-api/common.gypi diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-addon-api/except.gypi b/node_backend/node_modules/node-addon-api/except.gypi similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-addon-api/except.gypi rename to node_backend/node_modules/node-addon-api/except.gypi diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-addon-api/index.js b/node_backend/node_modules/node-addon-api/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-addon-api/index.js rename to node_backend/node_modules/node-addon-api/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-addon-api/napi-inl.deprecated.h b/node_backend/node_modules/node-addon-api/napi-inl.deprecated.h similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-addon-api/napi-inl.deprecated.h rename to node_backend/node_modules/node-addon-api/napi-inl.deprecated.h diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-addon-api/napi-inl.h b/node_backend/node_modules/node-addon-api/napi-inl.h similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-addon-api/napi-inl.h rename to node_backend/node_modules/node-addon-api/napi-inl.h diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-addon-api/napi.h b/node_backend/node_modules/node-addon-api/napi.h similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-addon-api/napi.h rename to node_backend/node_modules/node-addon-api/napi.h diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-addon-api/node_api.gyp b/node_backend/node_modules/node-addon-api/node_api.gyp similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-addon-api/node_api.gyp rename to node_backend/node_modules/node-addon-api/node_api.gyp diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-addon-api/noexcept.gypi b/node_backend/node_modules/node-addon-api/noexcept.gypi similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-addon-api/noexcept.gypi rename to node_backend/node_modules/node-addon-api/noexcept.gypi diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-addon-api/nothing.c b/node_backend/node_modules/node-addon-api/nothing.c similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-addon-api/nothing.c rename to node_backend/node_modules/node-addon-api/nothing.c diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-addon-api/package-support.json b/node_backend/node_modules/node-addon-api/package-support.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-addon-api/package-support.json rename to node_backend/node_modules/node-addon-api/package-support.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-addon-api/package.json b/node_backend/node_modules/node-addon-api/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-addon-api/package.json rename to node_backend/node_modules/node-addon-api/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-addon-api/tools/README.md b/node_backend/node_modules/node-addon-api/tools/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-addon-api/tools/README.md rename to node_backend/node_modules/node-addon-api/tools/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-addon-api/tools/check-napi.js b/node_backend/node_modules/node-addon-api/tools/check-napi.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-addon-api/tools/check-napi.js rename to node_backend/node_modules/node-addon-api/tools/check-napi.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-addon-api/tools/clang-format.js b/node_backend/node_modules/node-addon-api/tools/clang-format.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-addon-api/tools/clang-format.js rename to node_backend/node_modules/node-addon-api/tools/clang-format.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-addon-api/tools/conversion.js b/node_backend/node_modules/node-addon-api/tools/conversion.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-addon-api/tools/conversion.js rename to node_backend/node_modules/node-addon-api/tools/conversion.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-addon-api/tools/eslint-format.js b/node_backend/node_modules/node-addon-api/tools/eslint-format.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-addon-api/tools/eslint-format.js rename to node_backend/node_modules/node-addon-api/tools/eslint-format.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/LICENSE.md b/node_backend/node_modules/node-fetch/LICENSE.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/LICENSE.md rename to node_backend/node_modules/node-fetch/LICENSE.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/README.md b/node_backend/node_modules/node-fetch/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/README.md rename to node_backend/node_modules/node-fetch/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/browser.js b/node_backend/node_modules/node-fetch/browser.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/browser.js rename to node_backend/node_modules/node-fetch/browser.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/lib/index.es.js b/node_backend/node_modules/node-fetch/lib/index.es.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/lib/index.es.js rename to node_backend/node_modules/node-fetch/lib/index.es.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/lib/index.js b/node_backend/node_modules/node-fetch/lib/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/lib/index.js rename to node_backend/node_modules/node-fetch/lib/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/lib/index.mjs b/node_backend/node_modules/node-fetch/lib/index.mjs similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/lib/index.mjs rename to node_backend/node_modules/node-fetch/lib/index.mjs diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/tr46/.npmignore b/node_backend/node_modules/node-fetch/node_modules/tr46/.npmignore similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/tr46/.npmignore rename to node_backend/node_modules/node-fetch/node_modules/tr46/.npmignore diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/tr46/index.js b/node_backend/node_modules/node-fetch/node_modules/tr46/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/tr46/index.js rename to node_backend/node_modules/node-fetch/node_modules/tr46/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/tr46/lib/.gitkeep b/node_backend/node_modules/node-fetch/node_modules/tr46/lib/.gitkeep similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/tr46/lib/.gitkeep rename to node_backend/node_modules/node-fetch/node_modules/tr46/lib/.gitkeep diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/tr46/lib/mappingTable.json b/node_backend/node_modules/node-fetch/node_modules/tr46/lib/mappingTable.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/tr46/lib/mappingTable.json rename to node_backend/node_modules/node-fetch/node_modules/tr46/lib/mappingTable.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/tr46/package.json b/node_backend/node_modules/node-fetch/node_modules/tr46/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/tr46/package.json rename to node_backend/node_modules/node-fetch/node_modules/tr46/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/webidl-conversions/LICENSE.md b/node_backend/node_modules/node-fetch/node_modules/webidl-conversions/LICENSE.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/webidl-conversions/LICENSE.md rename to node_backend/node_modules/node-fetch/node_modules/webidl-conversions/LICENSE.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/webidl-conversions/README.md b/node_backend/node_modules/node-fetch/node_modules/webidl-conversions/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/webidl-conversions/README.md rename to node_backend/node_modules/node-fetch/node_modules/webidl-conversions/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/webidl-conversions/lib/index.js b/node_backend/node_modules/node-fetch/node_modules/webidl-conversions/lib/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/webidl-conversions/lib/index.js rename to node_backend/node_modules/node-fetch/node_modules/webidl-conversions/lib/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/webidl-conversions/package.json b/node_backend/node_modules/node-fetch/node_modules/webidl-conversions/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/webidl-conversions/package.json rename to node_backend/node_modules/node-fetch/node_modules/webidl-conversions/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/whatwg-url/LICENSE.txt b/node_backend/node_modules/node-fetch/node_modules/whatwg-url/LICENSE.txt similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/whatwg-url/LICENSE.txt rename to node_backend/node_modules/node-fetch/node_modules/whatwg-url/LICENSE.txt diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/whatwg-url/README.md b/node_backend/node_modules/node-fetch/node_modules/whatwg-url/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/whatwg-url/README.md rename to node_backend/node_modules/node-fetch/node_modules/whatwg-url/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/URL-impl.js b/node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/URL-impl.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/URL-impl.js rename to node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/URL-impl.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/URL.js b/node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/URL.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/URL.js rename to node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/URL.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/public-api.js b/node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/public-api.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/public-api.js rename to node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/public-api.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/url-state-machine.js b/node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/url-state-machine.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/url-state-machine.js rename to node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/url-state-machine.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/utils.js b/node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/utils.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/utils.js rename to node_backend/node_modules/node-fetch/node_modules/whatwg-url/lib/utils.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/whatwg-url/package.json b/node_backend/node_modules/node-fetch/node_modules/whatwg-url/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/node_modules/whatwg-url/package.json rename to node_backend/node_modules/node-fetch/node_modules/whatwg-url/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/node-fetch/package.json b/node_backend/node_modules/node-fetch/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/node-fetch/package.json rename to node_backend/node_modules/node-fetch/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/nopt/CHANGELOG.md b/node_backend/node_modules/nopt/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/nopt/CHANGELOG.md rename to node_backend/node_modules/nopt/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/nopt/LICENSE b/node_backend/node_modules/nopt/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/nopt/LICENSE rename to node_backend/node_modules/nopt/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/nopt/README.md b/node_backend/node_modules/nopt/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/nopt/README.md rename to node_backend/node_modules/nopt/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/nopt/bin/nopt.js b/node_backend/node_modules/nopt/bin/nopt.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/nopt/bin/nopt.js rename to node_backend/node_modules/nopt/bin/nopt.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/nopt/lib/nopt.js b/node_backend/node_modules/nopt/lib/nopt.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/nopt/lib/nopt.js rename to node_backend/node_modules/nopt/lib/nopt.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/nopt/package.json b/node_backend/node_modules/nopt/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/nopt/package.json rename to node_backend/node_modules/nopt/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/npmlog/LICENSE b/node_backend/node_modules/npmlog/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/npmlog/LICENSE rename to node_backend/node_modules/npmlog/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/npmlog/README.md b/node_backend/node_modules/npmlog/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/npmlog/README.md rename to node_backend/node_modules/npmlog/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/npmlog/log.js b/node_backend/node_modules/npmlog/log.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/npmlog/log.js rename to node_backend/node_modules/npmlog/log.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/npmlog/package.json b/node_backend/node_modules/npmlog/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/npmlog/package.json rename to node_backend/node_modules/npmlog/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-assign/index.js b/node_backend/node_modules/object-assign/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-assign/index.js rename to node_backend/node_modules/object-assign/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-assign/license b/node_backend/node_modules/object-assign/license similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-assign/license rename to node_backend/node_modules/object-assign/license diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-assign/package.json b/node_backend/node_modules/object-assign/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-assign/package.json rename to node_backend/node_modules/object-assign/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-assign/readme.md b/node_backend/node_modules/object-assign/readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-assign/readme.md rename to node_backend/node_modules/object-assign/readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/.eslintrc b/node_backend/node_modules/object-inspect/.eslintrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/.eslintrc rename to node_backend/node_modules/object-inspect/.eslintrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/.github/FUNDING.yml b/node_backend/node_modules/object-inspect/.github/FUNDING.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/.github/FUNDING.yml rename to node_backend/node_modules/object-inspect/.github/FUNDING.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/.nycrc b/node_backend/node_modules/object-inspect/.nycrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/.nycrc rename to node_backend/node_modules/object-inspect/.nycrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/CHANGELOG.md b/node_backend/node_modules/object-inspect/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/CHANGELOG.md rename to node_backend/node_modules/object-inspect/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/LICENSE b/node_backend/node_modules/object-inspect/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/LICENSE rename to node_backend/node_modules/object-inspect/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/example/all.js b/node_backend/node_modules/object-inspect/example/all.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/example/all.js rename to node_backend/node_modules/object-inspect/example/all.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/example/circular.js b/node_backend/node_modules/object-inspect/example/circular.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/example/circular.js rename to node_backend/node_modules/object-inspect/example/circular.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/example/fn.js b/node_backend/node_modules/object-inspect/example/fn.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/example/fn.js rename to node_backend/node_modules/object-inspect/example/fn.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/example/inspect.js b/node_backend/node_modules/object-inspect/example/inspect.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/example/inspect.js rename to node_backend/node_modules/object-inspect/example/inspect.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/index.js b/node_backend/node_modules/object-inspect/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/index.js rename to node_backend/node_modules/object-inspect/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/package-support.json b/node_backend/node_modules/object-inspect/package-support.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/package-support.json rename to node_backend/node_modules/object-inspect/package-support.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/package.json b/node_backend/node_modules/object-inspect/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/package.json rename to node_backend/node_modules/object-inspect/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/readme.markdown b/node_backend/node_modules/object-inspect/readme.markdown similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/readme.markdown rename to node_backend/node_modules/object-inspect/readme.markdown diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test-core-js.js b/node_backend/node_modules/object-inspect/test-core-js.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test-core-js.js rename to node_backend/node_modules/object-inspect/test-core-js.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/bigint.js b/node_backend/node_modules/object-inspect/test/bigint.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/bigint.js rename to node_backend/node_modules/object-inspect/test/bigint.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/browser/dom.js b/node_backend/node_modules/object-inspect/test/browser/dom.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/browser/dom.js rename to node_backend/node_modules/object-inspect/test/browser/dom.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/circular.js b/node_backend/node_modules/object-inspect/test/circular.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/circular.js rename to node_backend/node_modules/object-inspect/test/circular.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/deep.js b/node_backend/node_modules/object-inspect/test/deep.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/deep.js rename to node_backend/node_modules/object-inspect/test/deep.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/element.js b/node_backend/node_modules/object-inspect/test/element.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/element.js rename to node_backend/node_modules/object-inspect/test/element.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/err.js b/node_backend/node_modules/object-inspect/test/err.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/err.js rename to node_backend/node_modules/object-inspect/test/err.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/fakes.js b/node_backend/node_modules/object-inspect/test/fakes.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/fakes.js rename to node_backend/node_modules/object-inspect/test/fakes.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/fn.js b/node_backend/node_modules/object-inspect/test/fn.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/fn.js rename to node_backend/node_modules/object-inspect/test/fn.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/global.js b/node_backend/node_modules/object-inspect/test/global.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/global.js rename to node_backend/node_modules/object-inspect/test/global.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/has.js b/node_backend/node_modules/object-inspect/test/has.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/has.js rename to node_backend/node_modules/object-inspect/test/has.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/holes.js b/node_backend/node_modules/object-inspect/test/holes.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/holes.js rename to node_backend/node_modules/object-inspect/test/holes.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/indent-option.js b/node_backend/node_modules/object-inspect/test/indent-option.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/indent-option.js rename to node_backend/node_modules/object-inspect/test/indent-option.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/inspect.js b/node_backend/node_modules/object-inspect/test/inspect.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/inspect.js rename to node_backend/node_modules/object-inspect/test/inspect.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/lowbyte.js b/node_backend/node_modules/object-inspect/test/lowbyte.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/lowbyte.js rename to node_backend/node_modules/object-inspect/test/lowbyte.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/number.js b/node_backend/node_modules/object-inspect/test/number.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/number.js rename to node_backend/node_modules/object-inspect/test/number.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/quoteStyle.js b/node_backend/node_modules/object-inspect/test/quoteStyle.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/quoteStyle.js rename to node_backend/node_modules/object-inspect/test/quoteStyle.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/toStringTag.js b/node_backend/node_modules/object-inspect/test/toStringTag.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/toStringTag.js rename to node_backend/node_modules/object-inspect/test/toStringTag.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/undef.js b/node_backend/node_modules/object-inspect/test/undef.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/undef.js rename to node_backend/node_modules/object-inspect/test/undef.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/values.js b/node_backend/node_modules/object-inspect/test/values.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/test/values.js rename to node_backend/node_modules/object-inspect/test/values.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/object-inspect/util.inspect.js b/node_backend/node_modules/object-inspect/util.inspect.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/object-inspect/util.inspect.js rename to node_backend/node_modules/object-inspect/util.inspect.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/on-finished/HISTORY.md b/node_backend/node_modules/on-finished/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/on-finished/HISTORY.md rename to node_backend/node_modules/on-finished/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/on-finished/LICENSE b/node_backend/node_modules/on-finished/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/on-finished/LICENSE rename to node_backend/node_modules/on-finished/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/on-finished/README.md b/node_backend/node_modules/on-finished/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/on-finished/README.md rename to node_backend/node_modules/on-finished/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/on-finished/index.js b/node_backend/node_modules/on-finished/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/on-finished/index.js rename to node_backend/node_modules/on-finished/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/on-finished/package.json b/node_backend/node_modules/on-finished/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/on-finished/package.json rename to node_backend/node_modules/on-finished/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/once/LICENSE b/node_backend/node_modules/once/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/once/LICENSE rename to node_backend/node_modules/once/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/once/README.md b/node_backend/node_modules/once/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/once/README.md rename to node_backend/node_modules/once/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/once/once.js b/node_backend/node_modules/once/once.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/once/once.js rename to node_backend/node_modules/once/once.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/once/package.json b/node_backend/node_modules/once/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/once/package.json rename to node_backend/node_modules/once/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/parseurl/HISTORY.md b/node_backend/node_modules/parseurl/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/parseurl/HISTORY.md rename to node_backend/node_modules/parseurl/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/parseurl/LICENSE b/node_backend/node_modules/parseurl/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/parseurl/LICENSE rename to node_backend/node_modules/parseurl/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/parseurl/README.md b/node_backend/node_modules/parseurl/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/parseurl/README.md rename to node_backend/node_modules/parseurl/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/parseurl/index.js b/node_backend/node_modules/parseurl/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/parseurl/index.js rename to node_backend/node_modules/parseurl/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/parseurl/package.json b/node_backend/node_modules/parseurl/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/parseurl/package.json rename to node_backend/node_modules/parseurl/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/path-is-absolute/index.js b/node_backend/node_modules/path-is-absolute/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/path-is-absolute/index.js rename to node_backend/node_modules/path-is-absolute/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/path-is-absolute/license b/node_backend/node_modules/path-is-absolute/license similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/path-is-absolute/license rename to node_backend/node_modules/path-is-absolute/license diff --git a/Inscripciones_UAIE/node_backend/node_modules/path-is-absolute/package.json b/node_backend/node_modules/path-is-absolute/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/path-is-absolute/package.json rename to node_backend/node_modules/path-is-absolute/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/path-is-absolute/readme.md b/node_backend/node_modules/path-is-absolute/readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/path-is-absolute/readme.md rename to node_backend/node_modules/path-is-absolute/readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/path-to-regexp/LICENSE b/node_backend/node_modules/path-to-regexp/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/path-to-regexp/LICENSE rename to node_backend/node_modules/path-to-regexp/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/path-to-regexp/Readme.md b/node_backend/node_modules/path-to-regexp/Readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/path-to-regexp/Readme.md rename to node_backend/node_modules/path-to-regexp/Readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/path-to-regexp/index.js b/node_backend/node_modules/path-to-regexp/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/path-to-regexp/index.js rename to node_backend/node_modules/path-to-regexp/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/path-to-regexp/package.json b/node_backend/node_modules/path-to-regexp/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/path-to-regexp/package.json rename to node_backend/node_modules/path-to-regexp/package.json diff --git a/node_backend/node_modules/process-nextick-args/index.js b/node_backend/node_modules/process-nextick-args/index.js new file mode 100644 index 00000000..3eecf114 --- /dev/null +++ b/node_backend/node_modules/process-nextick-args/index.js @@ -0,0 +1,45 @@ +'use strict'; + +if (typeof process === 'undefined' || + !process.version || + process.version.indexOf('v0.') === 0 || + process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { + module.exports = { nextTick: nextTick }; +} else { + module.exports = process +} + +function nextTick(fn, arg1, arg2, arg3) { + if (typeof fn !== 'function') { + throw new TypeError('"callback" argument must be a function'); + } + var len = arguments.length; + var args, i; + switch (len) { + case 0: + case 1: + return process.nextTick(fn); + case 2: + return process.nextTick(function afterTickOne() { + fn.call(null, arg1); + }); + case 3: + return process.nextTick(function afterTickTwo() { + fn.call(null, arg1, arg2); + }); + case 4: + return process.nextTick(function afterTickThree() { + fn.call(null, arg1, arg2, arg3); + }); + default: + args = new Array(len - 1); + i = 0; + while (i < args.length) { + args[i++] = arguments[i]; + } + return process.nextTick(function afterTick() { + fn.apply(null, args); + }); + } +} + diff --git a/node_backend/node_modules/process-nextick-args/license.md b/node_backend/node_modules/process-nextick-args/license.md new file mode 100644 index 00000000..c67e3532 --- /dev/null +++ b/node_backend/node_modules/process-nextick-args/license.md @@ -0,0 +1,19 @@ +# Copyright (c) 2015 Calvin Metcalf + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.** diff --git a/node_backend/node_modules/process-nextick-args/package.json b/node_backend/node_modules/process-nextick-args/package.json new file mode 100644 index 00000000..6070b723 --- /dev/null +++ b/node_backend/node_modules/process-nextick-args/package.json @@ -0,0 +1,25 @@ +{ + "name": "process-nextick-args", + "version": "2.0.1", + "description": "process.nextTick but always with args", + "main": "index.js", + "files": [ + "index.js" + ], + "scripts": { + "test": "node test.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/calvinmetcalf/process-nextick-args.git" + }, + "author": "", + "license": "MIT", + "bugs": { + "url": "https://github.com/calvinmetcalf/process-nextick-args/issues" + }, + "homepage": "https://github.com/calvinmetcalf/process-nextick-args", + "devDependencies": { + "tap": "~0.2.6" + } +} diff --git a/node_backend/node_modules/process-nextick-args/readme.md b/node_backend/node_modules/process-nextick-args/readme.md new file mode 100644 index 00000000..ecb432c9 --- /dev/null +++ b/node_backend/node_modules/process-nextick-args/readme.md @@ -0,0 +1,18 @@ +process-nextick-args +===== + +[![Build Status](https://travis-ci.org/calvinmetcalf/process-nextick-args.svg?branch=master)](https://travis-ci.org/calvinmetcalf/process-nextick-args) + +```bash +npm install --save process-nextick-args +``` + +Always be able to pass arguments to process.nextTick, no matter the platform + +```js +var pna = require('process-nextick-args'); + +pna.nextTick(function (a, b, c) { + console.log(a, b, c); +}, 'step', 3, 'profit'); +``` diff --git a/Inscripciones_UAIE/node_backend/node_modules/proxy-addr/HISTORY.md b/node_backend/node_modules/proxy-addr/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/proxy-addr/HISTORY.md rename to node_backend/node_modules/proxy-addr/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/proxy-addr/LICENSE b/node_backend/node_modules/proxy-addr/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/proxy-addr/LICENSE rename to node_backend/node_modules/proxy-addr/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/proxy-addr/README.md b/node_backend/node_modules/proxy-addr/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/proxy-addr/README.md rename to node_backend/node_modules/proxy-addr/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/proxy-addr/index.js b/node_backend/node_modules/proxy-addr/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/proxy-addr/index.js rename to node_backend/node_modules/proxy-addr/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/proxy-addr/package.json b/node_backend/node_modules/proxy-addr/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/proxy-addr/package.json rename to node_backend/node_modules/proxy-addr/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/punycode/LICENSE-MIT.txt b/node_backend/node_modules/punycode/LICENSE-MIT.txt similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/punycode/LICENSE-MIT.txt rename to node_backend/node_modules/punycode/LICENSE-MIT.txt diff --git a/Inscripciones_UAIE/node_backend/node_modules/punycode/README.md b/node_backend/node_modules/punycode/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/punycode/README.md rename to node_backend/node_modules/punycode/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/punycode/package.json b/node_backend/node_modules/punycode/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/punycode/package.json rename to node_backend/node_modules/punycode/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/punycode/punycode.es6.js b/node_backend/node_modules/punycode/punycode.es6.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/punycode/punycode.es6.js rename to node_backend/node_modules/punycode/punycode.es6.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/punycode/punycode.js b/node_backend/node_modules/punycode/punycode.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/punycode/punycode.js rename to node_backend/node_modules/punycode/punycode.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/qs/.editorconfig b/node_backend/node_modules/qs/.editorconfig similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/qs/.editorconfig rename to node_backend/node_modules/qs/.editorconfig diff --git a/Inscripciones_UAIE/node_backend/node_modules/qs/.eslintrc b/node_backend/node_modules/qs/.eslintrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/qs/.eslintrc rename to node_backend/node_modules/qs/.eslintrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/qs/.github/FUNDING.yml b/node_backend/node_modules/qs/.github/FUNDING.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/qs/.github/FUNDING.yml rename to node_backend/node_modules/qs/.github/FUNDING.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/qs/.nycrc b/node_backend/node_modules/qs/.nycrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/qs/.nycrc rename to node_backend/node_modules/qs/.nycrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/qs/CHANGELOG.md b/node_backend/node_modules/qs/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/qs/CHANGELOG.md rename to node_backend/node_modules/qs/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/qs/LICENSE.md b/node_backend/node_modules/qs/LICENSE.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/qs/LICENSE.md rename to node_backend/node_modules/qs/LICENSE.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/qs/README.md b/node_backend/node_modules/qs/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/qs/README.md rename to node_backend/node_modules/qs/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/qs/dist/qs.js b/node_backend/node_modules/qs/dist/qs.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/qs/dist/qs.js rename to node_backend/node_modules/qs/dist/qs.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/qs/lib/formats.js b/node_backend/node_modules/qs/lib/formats.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/qs/lib/formats.js rename to node_backend/node_modules/qs/lib/formats.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/qs/lib/index.js b/node_backend/node_modules/qs/lib/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/qs/lib/index.js rename to node_backend/node_modules/qs/lib/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/qs/lib/parse.js b/node_backend/node_modules/qs/lib/parse.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/qs/lib/parse.js rename to node_backend/node_modules/qs/lib/parse.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/qs/lib/stringify.js b/node_backend/node_modules/qs/lib/stringify.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/qs/lib/stringify.js rename to node_backend/node_modules/qs/lib/stringify.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/qs/lib/utils.js b/node_backend/node_modules/qs/lib/utils.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/qs/lib/utils.js rename to node_backend/node_modules/qs/lib/utils.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/qs/package.json b/node_backend/node_modules/qs/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/qs/package.json rename to node_backend/node_modules/qs/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/qs/test/empty-keys-cases.js b/node_backend/node_modules/qs/test/empty-keys-cases.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/qs/test/empty-keys-cases.js rename to node_backend/node_modules/qs/test/empty-keys-cases.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/qs/test/parse.js b/node_backend/node_modules/qs/test/parse.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/qs/test/parse.js rename to node_backend/node_modules/qs/test/parse.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/qs/test/stringify.js b/node_backend/node_modules/qs/test/stringify.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/qs/test/stringify.js rename to node_backend/node_modules/qs/test/stringify.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/qs/test/utils.js b/node_backend/node_modules/qs/test/utils.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/qs/test/utils.js rename to node_backend/node_modules/qs/test/utils.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/range-parser/HISTORY.md b/node_backend/node_modules/range-parser/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/range-parser/HISTORY.md rename to node_backend/node_modules/range-parser/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/range-parser/LICENSE b/node_backend/node_modules/range-parser/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/range-parser/LICENSE rename to node_backend/node_modules/range-parser/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/range-parser/README.md b/node_backend/node_modules/range-parser/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/range-parser/README.md rename to node_backend/node_modules/range-parser/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/range-parser/index.js b/node_backend/node_modules/range-parser/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/range-parser/index.js rename to node_backend/node_modules/range-parser/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/range-parser/package.json b/node_backend/node_modules/range-parser/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/range-parser/package.json rename to node_backend/node_modules/range-parser/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/raw-body/HISTORY.md b/node_backend/node_modules/raw-body/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/raw-body/HISTORY.md rename to node_backend/node_modules/raw-body/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/raw-body/LICENSE b/node_backend/node_modules/raw-body/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/raw-body/LICENSE rename to node_backend/node_modules/raw-body/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/raw-body/README.md b/node_backend/node_modules/raw-body/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/raw-body/README.md rename to node_backend/node_modules/raw-body/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/raw-body/SECURITY.md b/node_backend/node_modules/raw-body/SECURITY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/raw-body/SECURITY.md rename to node_backend/node_modules/raw-body/SECURITY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/raw-body/index.d.ts b/node_backend/node_modules/raw-body/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/raw-body/index.d.ts rename to node_backend/node_modules/raw-body/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/raw-body/index.js b/node_backend/node_modules/raw-body/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/raw-body/index.js rename to node_backend/node_modules/raw-body/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/raw-body/package.json b/node_backend/node_modules/raw-body/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/raw-body/package.json rename to node_backend/node_modules/raw-body/package.json diff --git a/node_backend/node_modules/readable-stream/CONTRIBUTING.md b/node_backend/node_modules/readable-stream/CONTRIBUTING.md new file mode 100644 index 00000000..f478d58d --- /dev/null +++ b/node_backend/node_modules/readable-stream/CONTRIBUTING.md @@ -0,0 +1,38 @@ +# Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +* (a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +* (b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +* (c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +* (d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. + +## Moderation Policy + +The [Node.js Moderation Policy] applies to this WG. + +## Code of Conduct + +The [Node.js Code of Conduct][] applies to this WG. + +[Node.js Code of Conduct]: +https://github.com/nodejs/node/blob/master/CODE_OF_CONDUCT.md +[Node.js Moderation Policy]: +https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md diff --git a/node_backend/node_modules/readable-stream/GOVERNANCE.md b/node_backend/node_modules/readable-stream/GOVERNANCE.md new file mode 100644 index 00000000..16ffb93f --- /dev/null +++ b/node_backend/node_modules/readable-stream/GOVERNANCE.md @@ -0,0 +1,136 @@ +### Streams Working Group + +The Node.js Streams is jointly governed by a Working Group +(WG) +that is responsible for high-level guidance of the project. + +The WG has final authority over this project including: + +* Technical direction +* Project governance and process (including this policy) +* Contribution policy +* GitHub repository hosting +* Conduct guidelines +* Maintaining the list of additional Collaborators + +For the current list of WG members, see the project +[README.md](./README.md#current-project-team-members). + +### Collaborators + +The readable-stream GitHub repository is +maintained by the WG and additional Collaborators who are added by the +WG on an ongoing basis. + +Individuals making significant and valuable contributions are made +Collaborators and given commit-access to the project. These +individuals are identified by the WG and their addition as +Collaborators is discussed during the WG meeting. + +_Note:_ If you make a significant contribution and are not considered +for commit-access log an issue or contact a WG member directly and it +will be brought up in the next WG meeting. + +Modifications of the contents of the readable-stream repository are +made on +a collaborative basis. Anybody with a GitHub account may propose a +modification via pull request and it will be considered by the project +Collaborators. All pull requests must be reviewed and accepted by a +Collaborator with sufficient expertise who is able to take full +responsibility for the change. In the case of pull requests proposed +by an existing Collaborator, an additional Collaborator is required +for sign-off. Consensus should be sought if additional Collaborators +participate and there is disagreement around a particular +modification. See _Consensus Seeking Process_ below for further detail +on the consensus model used for governance. + +Collaborators may opt to elevate significant or controversial +modifications, or modifications that have not found consensus to the +WG for discussion by assigning the ***WG-agenda*** tag to a pull +request or issue. The WG should serve as the final arbiter where +required. + +For the current list of Collaborators, see the project +[README.md](./README.md#members). + +### WG Membership + +WG seats are not time-limited. There is no fixed size of the WG. +However, the expected target is between 6 and 12, to ensure adequate +coverage of important areas of expertise, balanced with the ability to +make decisions efficiently. + +There is no specific set of requirements or qualifications for WG +membership beyond these rules. + +The WG may add additional members to the WG by unanimous consensus. + +A WG member may be removed from the WG by voluntary resignation, or by +unanimous consensus of all other WG members. + +Changes to WG membership should be posted in the agenda, and may be +suggested as any other agenda item (see "WG Meetings" below). + +If an addition or removal is proposed during a meeting, and the full +WG is not in attendance to participate, then the addition or removal +is added to the agenda for the subsequent meeting. This is to ensure +that all members are given the opportunity to participate in all +membership decisions. If a WG member is unable to attend a meeting +where a planned membership decision is being made, then their consent +is assumed. + +No more than 1/3 of the WG members may be affiliated with the same +employer. If removal or resignation of a WG member, or a change of +employment by a WG member, creates a situation where more than 1/3 of +the WG membership shares an employer, then the situation must be +immediately remedied by the resignation or removal of one or more WG +members affiliated with the over-represented employer(s). + +### WG Meetings + +The WG meets occasionally on a Google Hangout On Air. A designated moderator +approved by the WG runs the meeting. Each meeting should be +published to YouTube. + +Items are added to the WG agenda that are considered contentious or +are modifications of governance, contribution policy, WG membership, +or release process. + +The intention of the agenda is not to approve or review all patches; +that should happen continuously on GitHub and be handled by the larger +group of Collaborators. + +Any community member or contributor can ask that something be added to +the next meeting's agenda by logging a GitHub Issue. Any Collaborator, +WG member or the moderator can add the item to the agenda by adding +the ***WG-agenda*** tag to the issue. + +Prior to each WG meeting the moderator will share the Agenda with +members of the WG. WG members can add any items they like to the +agenda at the beginning of each meeting. The moderator and the WG +cannot veto or remove items. + +The WG may invite persons or representatives from certain projects to +participate in a non-voting capacity. + +The moderator is responsible for summarizing the discussion of each +agenda item and sends it as a pull request after the meeting. + +### Consensus Seeking Process + +The WG follows a +[Consensus +Seeking](http://en.wikipedia.org/wiki/Consensus-seeking_decision-making) +decision-making model. + +When an agenda item has appeared to reach a consensus the moderator +will ask "Does anyone object?" as a final call for dissent from the +consensus. + +If an agenda item cannot reach a consensus a WG member can call for +either a closing vote or a vote to table the issue to the next +meeting. The call for a vote must be seconded by a majority of the WG +or else the discussion will continue. Simple majority wins. + +Note that changes to WG membership require a majority consensus. See +"WG Membership" above. diff --git a/node_backend/node_modules/readable-stream/LICENSE b/node_backend/node_modules/readable-stream/LICENSE new file mode 100644 index 00000000..2873b3b2 --- /dev/null +++ b/node_backend/node_modules/readable-stream/LICENSE @@ -0,0 +1,47 @@ +Node.js is licensed for use as follows: + +""" +Copyright Node.js contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" + +This license applies to parts of Node.js originating from the +https://github.com/joyent/node repository: + +""" +Copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/README.md b/node_backend/node_modules/readable-stream/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/README.md rename to node_backend/node_modules/readable-stream/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/errors-browser.js b/node_backend/node_modules/readable-stream/errors-browser.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/errors-browser.js rename to node_backend/node_modules/readable-stream/errors-browser.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/errors.js b/node_backend/node_modules/readable-stream/errors.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/errors.js rename to node_backend/node_modules/readable-stream/errors.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/experimentalWarning.js b/node_backend/node_modules/readable-stream/experimentalWarning.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/experimentalWarning.js rename to node_backend/node_modules/readable-stream/experimentalWarning.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/_stream_duplex.js b/node_backend/node_modules/readable-stream/lib/_stream_duplex.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/_stream_duplex.js rename to node_backend/node_modules/readable-stream/lib/_stream_duplex.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/_stream_passthrough.js b/node_backend/node_modules/readable-stream/lib/_stream_passthrough.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/_stream_passthrough.js rename to node_backend/node_modules/readable-stream/lib/_stream_passthrough.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/_stream_readable.js b/node_backend/node_modules/readable-stream/lib/_stream_readable.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/_stream_readable.js rename to node_backend/node_modules/readable-stream/lib/_stream_readable.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/_stream_transform.js b/node_backend/node_modules/readable-stream/lib/_stream_transform.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/_stream_transform.js rename to node_backend/node_modules/readable-stream/lib/_stream_transform.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/_stream_writable.js b/node_backend/node_modules/readable-stream/lib/_stream_writable.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/_stream_writable.js rename to node_backend/node_modules/readable-stream/lib/_stream_writable.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/async_iterator.js b/node_backend/node_modules/readable-stream/lib/internal/streams/async_iterator.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/async_iterator.js rename to node_backend/node_modules/readable-stream/lib/internal/streams/async_iterator.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/buffer_list.js b/node_backend/node_modules/readable-stream/lib/internal/streams/buffer_list.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/buffer_list.js rename to node_backend/node_modules/readable-stream/lib/internal/streams/buffer_list.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/destroy.js b/node_backend/node_modules/readable-stream/lib/internal/streams/destroy.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/destroy.js rename to node_backend/node_modules/readable-stream/lib/internal/streams/destroy.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/end-of-stream.js b/node_backend/node_modules/readable-stream/lib/internal/streams/end-of-stream.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/end-of-stream.js rename to node_backend/node_modules/readable-stream/lib/internal/streams/end-of-stream.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/from-browser.js b/node_backend/node_modules/readable-stream/lib/internal/streams/from-browser.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/from-browser.js rename to node_backend/node_modules/readable-stream/lib/internal/streams/from-browser.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/from.js b/node_backend/node_modules/readable-stream/lib/internal/streams/from.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/from.js rename to node_backend/node_modules/readable-stream/lib/internal/streams/from.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/pipeline.js b/node_backend/node_modules/readable-stream/lib/internal/streams/pipeline.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/pipeline.js rename to node_backend/node_modules/readable-stream/lib/internal/streams/pipeline.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/state.js b/node_backend/node_modules/readable-stream/lib/internal/streams/state.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/lib/internal/streams/state.js rename to node_backend/node_modules/readable-stream/lib/internal/streams/state.js diff --git a/node_backend/node_modules/readable-stream/lib/internal/streams/stream-browser.js b/node_backend/node_modules/readable-stream/lib/internal/streams/stream-browser.js new file mode 100644 index 00000000..9332a3fd --- /dev/null +++ b/node_backend/node_modules/readable-stream/lib/internal/streams/stream-browser.js @@ -0,0 +1 @@ +module.exports = require('events').EventEmitter; diff --git a/node_backend/node_modules/readable-stream/lib/internal/streams/stream.js b/node_backend/node_modules/readable-stream/lib/internal/streams/stream.js new file mode 100644 index 00000000..ce2ad5b6 --- /dev/null +++ b/node_backend/node_modules/readable-stream/lib/internal/streams/stream.js @@ -0,0 +1 @@ +module.exports = require('stream'); diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/package.json b/node_backend/node_modules/readable-stream/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/package.json rename to node_backend/node_modules/readable-stream/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/readable-browser.js b/node_backend/node_modules/readable-stream/readable-browser.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/readable-browser.js rename to node_backend/node_modules/readable-stream/readable-browser.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/readable-stream/readable.js b/node_backend/node_modules/readable-stream/readable.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/readable-stream/readable.js rename to node_backend/node_modules/readable-stream/readable.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/rimraf/CHANGELOG.md b/node_backend/node_modules/rimraf/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/rimraf/CHANGELOG.md rename to node_backend/node_modules/rimraf/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/rimraf/LICENSE b/node_backend/node_modules/rimraf/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/rimraf/LICENSE rename to node_backend/node_modules/rimraf/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/rimraf/README.md b/node_backend/node_modules/rimraf/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/rimraf/README.md rename to node_backend/node_modules/rimraf/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/rimraf/bin.js b/node_backend/node_modules/rimraf/bin.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/rimraf/bin.js rename to node_backend/node_modules/rimraf/bin.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/rimraf/package.json b/node_backend/node_modules/rimraf/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/rimraf/package.json rename to node_backend/node_modules/rimraf/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/rimraf/rimraf.js b/node_backend/node_modules/rimraf/rimraf.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/rimraf/rimraf.js rename to node_backend/node_modules/rimraf/rimraf.js diff --git a/node_backend/node_modules/safe-buffer/LICENSE b/node_backend/node_modules/safe-buffer/LICENSE new file mode 100644 index 00000000..0c068cee --- /dev/null +++ b/node_backend/node_modules/safe-buffer/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Feross Aboukhadijeh + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_backend/node_modules/safe-buffer/README.md b/node_backend/node_modules/safe-buffer/README.md new file mode 100644 index 00000000..e9a81afd --- /dev/null +++ b/node_backend/node_modules/safe-buffer/README.md @@ -0,0 +1,584 @@ +# safe-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url] + +[travis-image]: https://img.shields.io/travis/feross/safe-buffer/master.svg +[travis-url]: https://travis-ci.org/feross/safe-buffer +[npm-image]: https://img.shields.io/npm/v/safe-buffer.svg +[npm-url]: https://npmjs.org/package/safe-buffer +[downloads-image]: https://img.shields.io/npm/dm/safe-buffer.svg +[downloads-url]: https://npmjs.org/package/safe-buffer +[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg +[standard-url]: https://standardjs.com + +#### Safer Node.js Buffer API + +**Use the new Node.js Buffer APIs (`Buffer.from`, `Buffer.alloc`, +`Buffer.allocUnsafe`, `Buffer.allocUnsafeSlow`) in all versions of Node.js.** + +**Uses the built-in implementation when available.** + +## install + +``` +npm install safe-buffer +``` + +## usage + +The goal of this package is to provide a safe replacement for the node.js `Buffer`. + +It's a drop-in replacement for `Buffer`. You can use it by adding one `require` line to +the top of your node.js modules: + +```js +var Buffer = require('safe-buffer').Buffer + +// Existing buffer code will continue to work without issues: + +new Buffer('hey', 'utf8') +new Buffer([1, 2, 3], 'utf8') +new Buffer(obj) +new Buffer(16) // create an uninitialized buffer (potentially unsafe) + +// But you can use these new explicit APIs to make clear what you want: + +Buffer.from('hey', 'utf8') // convert from many types to a Buffer +Buffer.alloc(16) // create a zero-filled buffer (safe) +Buffer.allocUnsafe(16) // create an uninitialized buffer (potentially unsafe) +``` + +## api + +### Class Method: Buffer.from(array) + + +* `array` {Array} + +Allocates a new `Buffer` using an `array` of octets. + +```js +const buf = Buffer.from([0x62,0x75,0x66,0x66,0x65,0x72]); + // creates a new Buffer containing ASCII bytes + // ['b','u','f','f','e','r'] +``` + +A `TypeError` will be thrown if `array` is not an `Array`. + +### Class Method: Buffer.from(arrayBuffer[, byteOffset[, length]]) + + +* `arrayBuffer` {ArrayBuffer} The `.buffer` property of a `TypedArray` or + a `new ArrayBuffer()` +* `byteOffset` {Number} Default: `0` +* `length` {Number} Default: `arrayBuffer.length - byteOffset` + +When passed a reference to the `.buffer` property of a `TypedArray` instance, +the newly created `Buffer` will share the same allocated memory as the +TypedArray. + +```js +const arr = new Uint16Array(2); +arr[0] = 5000; +arr[1] = 4000; + +const buf = Buffer.from(arr.buffer); // shares the memory with arr; + +console.log(buf); + // Prints: + +// changing the TypedArray changes the Buffer also +arr[1] = 6000; + +console.log(buf); + // Prints: +``` + +The optional `byteOffset` and `length` arguments specify a memory range within +the `arrayBuffer` that will be shared by the `Buffer`. + +```js +const ab = new ArrayBuffer(10); +const buf = Buffer.from(ab, 0, 2); +console.log(buf.length); + // Prints: 2 +``` + +A `TypeError` will be thrown if `arrayBuffer` is not an `ArrayBuffer`. + +### Class Method: Buffer.from(buffer) + + +* `buffer` {Buffer} + +Copies the passed `buffer` data onto a new `Buffer` instance. + +```js +const buf1 = Buffer.from('buffer'); +const buf2 = Buffer.from(buf1); + +buf1[0] = 0x61; +console.log(buf1.toString()); + // 'auffer' +console.log(buf2.toString()); + // 'buffer' (copy is not changed) +``` + +A `TypeError` will be thrown if `buffer` is not a `Buffer`. + +### Class Method: Buffer.from(str[, encoding]) + + +* `str` {String} String to encode. +* `encoding` {String} Encoding to use, Default: `'utf8'` + +Creates a new `Buffer` containing the given JavaScript string `str`. If +provided, the `encoding` parameter identifies the character encoding. +If not provided, `encoding` defaults to `'utf8'`. + +```js +const buf1 = Buffer.from('this is a tést'); +console.log(buf1.toString()); + // prints: this is a tést +console.log(buf1.toString('ascii')); + // prints: this is a tC)st + +const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex'); +console.log(buf2.toString()); + // prints: this is a tést +``` + +A `TypeError` will be thrown if `str` is not a string. + +### Class Method: Buffer.alloc(size[, fill[, encoding]]) + + +* `size` {Number} +* `fill` {Value} Default: `undefined` +* `encoding` {String} Default: `utf8` + +Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the +`Buffer` will be *zero-filled*. + +```js +const buf = Buffer.alloc(5); +console.log(buf); + // +``` + +The `size` must be less than or equal to the value of +`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is +`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will +be created if a `size` less than or equal to 0 is specified. + +If `fill` is specified, the allocated `Buffer` will be initialized by calling +`buf.fill(fill)`. See [`buf.fill()`][] for more information. + +```js +const buf = Buffer.alloc(5, 'a'); +console.log(buf); + // +``` + +If both `fill` and `encoding` are specified, the allocated `Buffer` will be +initialized by calling `buf.fill(fill, encoding)`. For example: + +```js +const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64'); +console.log(buf); + // +``` + +Calling `Buffer.alloc(size)` can be significantly slower than the alternative +`Buffer.allocUnsafe(size)` but ensures that the newly created `Buffer` instance +contents will *never contain sensitive data*. + +A `TypeError` will be thrown if `size` is not a number. + +### Class Method: Buffer.allocUnsafe(size) + + +* `size` {Number} + +Allocates a new *non-zero-filled* `Buffer` of `size` bytes. The `size` must +be less than or equal to the value of `require('buffer').kMaxLength` (on 64-bit +architectures, `kMaxLength` is `(2^31)-1`). Otherwise, a [`RangeError`][] is +thrown. A zero-length Buffer will be created if a `size` less than or equal to +0 is specified. + +The underlying memory for `Buffer` instances created in this way is *not +initialized*. The contents of the newly created `Buffer` are unknown and +*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such +`Buffer` instances to zeroes. + +```js +const buf = Buffer.allocUnsafe(5); +console.log(buf); + // + // (octets will be different, every time) +buf.fill(0); +console.log(buf); + // +``` + +A `TypeError` will be thrown if `size` is not a number. + +Note that the `Buffer` module pre-allocates an internal `Buffer` instance of +size `Buffer.poolSize` that is used as a pool for the fast allocation of new +`Buffer` instances created using `Buffer.allocUnsafe(size)` (and the deprecated +`new Buffer(size)` constructor) only when `size` is less than or equal to +`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two). The default +value of `Buffer.poolSize` is `8192` but can be modified. + +Use of this pre-allocated internal memory pool is a key difference between +calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`. +Specifically, `Buffer.alloc(size, fill)` will *never* use the internal Buffer +pool, while `Buffer.allocUnsafe(size).fill(fill)` *will* use the internal +Buffer pool if `size` is less than or equal to half `Buffer.poolSize`. The +difference is subtle but can be important when an application requires the +additional performance that `Buffer.allocUnsafe(size)` provides. + +### Class Method: Buffer.allocUnsafeSlow(size) + + +* `size` {Number} + +Allocates a new *non-zero-filled* and non-pooled `Buffer` of `size` bytes. The +`size` must be less than or equal to the value of +`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is +`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will +be created if a `size` less than or equal to 0 is specified. + +The underlying memory for `Buffer` instances created in this way is *not +initialized*. The contents of the newly created `Buffer` are unknown and +*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such +`Buffer` instances to zeroes. + +When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances, +allocations under 4KB are, by default, sliced from a single pre-allocated +`Buffer`. This allows applications to avoid the garbage collection overhead of +creating many individually allocated Buffers. This approach improves both +performance and memory usage by eliminating the need to track and cleanup as +many `Persistent` objects. + +However, in the case where a developer may need to retain a small chunk of +memory from a pool for an indeterminate amount of time, it may be appropriate +to create an un-pooled Buffer instance using `Buffer.allocUnsafeSlow()` then +copy out the relevant bits. + +```js +// need to keep around a few small chunks of memory +const store = []; + +socket.on('readable', () => { + const data = socket.read(); + // allocate for retained data + const sb = Buffer.allocUnsafeSlow(10); + // copy the data into the new allocation + data.copy(sb, 0, 0, 10); + store.push(sb); +}); +``` + +Use of `Buffer.allocUnsafeSlow()` should be used only as a last resort *after* +a developer has observed undue memory retention in their applications. + +A `TypeError` will be thrown if `size` is not a number. + +### All the Rest + +The rest of the `Buffer` API is exactly the same as in node.js. +[See the docs](https://nodejs.org/api/buffer.html). + + +## Related links + +- [Node.js issue: Buffer(number) is unsafe](https://github.com/nodejs/node/issues/4660) +- [Node.js Enhancement Proposal: Buffer.from/Buffer.alloc/Buffer.zalloc/Buffer() soft-deprecate](https://github.com/nodejs/node-eps/pull/4) + +## Why is `Buffer` unsafe? + +Today, the node.js `Buffer` constructor is overloaded to handle many different argument +types like `String`, `Array`, `Object`, `TypedArrayView` (`Uint8Array`, etc.), +`ArrayBuffer`, and also `Number`. + +The API is optimized for convenience: you can throw any type at it, and it will try to do +what you want. + +Because the Buffer constructor is so powerful, you often see code like this: + +```js +// Convert UTF-8 strings to hex +function toHex (str) { + return new Buffer(str).toString('hex') +} +``` + +***But what happens if `toHex` is called with a `Number` argument?*** + +### Remote Memory Disclosure + +If an attacker can make your program call the `Buffer` constructor with a `Number` +argument, then they can make it allocate uninitialized memory from the node.js process. +This could potentially disclose TLS private keys, user data, or database passwords. + +When the `Buffer` constructor is passed a `Number` argument, it returns an +**UNINITIALIZED** block of memory of the specified `size`. When you create a `Buffer` like +this, you **MUST** overwrite the contents before returning it to the user. + +From the [node.js docs](https://nodejs.org/api/buffer.html#buffer_new_buffer_size): + +> `new Buffer(size)` +> +> - `size` Number +> +> The underlying memory for `Buffer` instances created in this way is not initialized. +> **The contents of a newly created `Buffer` are unknown and could contain sensitive +> data.** Use `buf.fill(0)` to initialize a Buffer to zeroes. + +(Emphasis our own.) + +Whenever the programmer intended to create an uninitialized `Buffer` you often see code +like this: + +```js +var buf = new Buffer(16) + +// Immediately overwrite the uninitialized buffer with data from another buffer +for (var i = 0; i < buf.length; i++) { + buf[i] = otherBuf[i] +} +``` + + +### Would this ever be a problem in real code? + +Yes. It's surprisingly common to forget to check the type of your variables in a +dynamically-typed language like JavaScript. + +Usually the consequences of assuming the wrong type is that your program crashes with an +uncaught exception. But the failure mode for forgetting to check the type of arguments to +the `Buffer` constructor is more catastrophic. + +Here's an example of a vulnerable service that takes a JSON payload and converts it to +hex: + +```js +// Take a JSON payload {str: "some string"} and convert it to hex +var server = http.createServer(function (req, res) { + var data = '' + req.setEncoding('utf8') + req.on('data', function (chunk) { + data += chunk + }) + req.on('end', function () { + var body = JSON.parse(data) + res.end(new Buffer(body.str).toString('hex')) + }) +}) + +server.listen(8080) +``` + +In this example, an http client just has to send: + +```json +{ + "str": 1000 +} +``` + +and it will get back 1,000 bytes of uninitialized memory from the server. + +This is a very serious bug. It's similar in severity to the +[the Heartbleed bug](http://heartbleed.com/) that allowed disclosure of OpenSSL process +memory by remote attackers. + + +### Which real-world packages were vulnerable? + +#### [`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht) + +[Mathias Buus](https://github.com/mafintosh) and I +([Feross Aboukhadijeh](http://feross.org/)) found this issue in one of our own packages, +[`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht). The bug would allow +anyone on the internet to send a series of messages to a user of `bittorrent-dht` and get +them to reveal 20 bytes at a time of uninitialized memory from the node.js process. + +Here's +[the commit](https://github.com/feross/bittorrent-dht/commit/6c7da04025d5633699800a99ec3fbadf70ad35b8) +that fixed it. We released a new fixed version, created a +[Node Security Project disclosure](https://nodesecurity.io/advisories/68), and deprecated all +vulnerable versions on npm so users will get a warning to upgrade to a newer version. + +#### [`ws`](https://www.npmjs.com/package/ws) + +That got us wondering if there were other vulnerable packages. Sure enough, within a short +period of time, we found the same issue in [`ws`](https://www.npmjs.com/package/ws), the +most popular WebSocket implementation in node.js. + +If certain APIs were called with `Number` parameters instead of `String` or `Buffer` as +expected, then uninitialized server memory would be disclosed to the remote peer. + +These were the vulnerable methods: + +```js +socket.send(number) +socket.ping(number) +socket.pong(number) +``` + +Here's a vulnerable socket server with some echo functionality: + +```js +server.on('connection', function (socket) { + socket.on('message', function (message) { + message = JSON.parse(message) + if (message.type === 'echo') { + socket.send(message.data) // send back the user's message + } + }) +}) +``` + +`socket.send(number)` called on the server, will disclose server memory. + +Here's [the release](https://github.com/websockets/ws/releases/tag/1.0.1) where the issue +was fixed, with a more detailed explanation. Props to +[Arnout Kazemier](https://github.com/3rd-Eden) for the quick fix. Here's the +[Node Security Project disclosure](https://nodesecurity.io/advisories/67). + + +### What's the solution? + +It's important that node.js offers a fast way to get memory otherwise performance-critical +applications would needlessly get a lot slower. + +But we need a better way to *signal our intent* as programmers. **When we want +uninitialized memory, we should request it explicitly.** + +Sensitive functionality should not be packed into a developer-friendly API that loosely +accepts many different types. This type of API encourages the lazy practice of passing +variables in without checking the type very carefully. + +#### A new API: `Buffer.allocUnsafe(number)` + +The functionality of creating buffers with uninitialized memory should be part of another +API. We propose `Buffer.allocUnsafe(number)`. This way, it's not part of an API that +frequently gets user input of all sorts of different types passed into it. + +```js +var buf = Buffer.allocUnsafe(16) // careful, uninitialized memory! + +// Immediately overwrite the uninitialized buffer with data from another buffer +for (var i = 0; i < buf.length; i++) { + buf[i] = otherBuf[i] +} +``` + + +### How do we fix node.js core? + +We sent [a PR to node.js core](https://github.com/nodejs/node/pull/4514) (merged as +`semver-major`) which defends against one case: + +```js +var str = 16 +new Buffer(str, 'utf8') +``` + +In this situation, it's implied that the programmer intended the first argument to be a +string, since they passed an encoding as a second argument. Today, node.js will allocate +uninitialized memory in the case of `new Buffer(number, encoding)`, which is probably not +what the programmer intended. + +But this is only a partial solution, since if the programmer does `new Buffer(variable)` +(without an `encoding` parameter) there's no way to know what they intended. If `variable` +is sometimes a number, then uninitialized memory will sometimes be returned. + +### What's the real long-term fix? + +We could deprecate and remove `new Buffer(number)` and use `Buffer.allocUnsafe(number)` when +we need uninitialized memory. But that would break 1000s of packages. + +~~We believe the best solution is to:~~ + +~~1. Change `new Buffer(number)` to return safe, zeroed-out memory~~ + +~~2. Create a new API for creating uninitialized Buffers. We propose: `Buffer.allocUnsafe(number)`~~ + +#### Update + +We now support adding three new APIs: + +- `Buffer.from(value)` - convert from any type to a buffer +- `Buffer.alloc(size)` - create a zero-filled buffer +- `Buffer.allocUnsafe(size)` - create an uninitialized buffer with given size + +This solves the core problem that affected `ws` and `bittorrent-dht` which is +`Buffer(variable)` getting tricked into taking a number argument. + +This way, existing code continues working and the impact on the npm ecosystem will be +minimal. Over time, npm maintainers can migrate performance-critical code to use +`Buffer.allocUnsafe(number)` instead of `new Buffer(number)`. + + +### Conclusion + +We think there's a serious design issue with the `Buffer` API as it exists today. It +promotes insecure software by putting high-risk functionality into a convenient API +with friendly "developer ergonomics". + +This wasn't merely a theoretical exercise because we found the issue in some of the +most popular npm packages. + +Fortunately, there's an easy fix that can be applied today. Use `safe-buffer` in place of +`buffer`. + +```js +var Buffer = require('safe-buffer').Buffer +``` + +Eventually, we hope that node.js core can switch to this new, safer behavior. We believe +the impact on the ecosystem would be minimal since it's not a breaking change. +Well-maintained, popular packages would be updated to use `Buffer.alloc` quickly, while +older, insecure packages would magically become safe from this attack vector. + + +## links + +- [Node.js PR: buffer: throw if both length and enc are passed](https://github.com/nodejs/node/pull/4514) +- [Node Security Project disclosure for `ws`](https://nodesecurity.io/advisories/67) +- [Node Security Project disclosure for`bittorrent-dht`](https://nodesecurity.io/advisories/68) + + +## credit + +The original issues in `bittorrent-dht` +([disclosure](https://nodesecurity.io/advisories/68)) and +`ws` ([disclosure](https://nodesecurity.io/advisories/67)) were discovered by +[Mathias Buus](https://github.com/mafintosh) and +[Feross Aboukhadijeh](http://feross.org/). + +Thanks to [Adam Baldwin](https://github.com/evilpacket) for helping disclose these issues +and for his work running the [Node Security Project](https://nodesecurity.io/). + +Thanks to [John Hiesey](https://github.com/jhiesey) for proofreading this README and +auditing the code. + + +## license + +MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org) diff --git a/node_backend/node_modules/safe-buffer/index.d.ts b/node_backend/node_modules/safe-buffer/index.d.ts new file mode 100644 index 00000000..e9fed809 --- /dev/null +++ b/node_backend/node_modules/safe-buffer/index.d.ts @@ -0,0 +1,187 @@ +declare module "safe-buffer" { + export class Buffer { + length: number + write(string: string, offset?: number, length?: number, encoding?: string): number; + toString(encoding?: string, start?: number, end?: number): string; + toJSON(): { type: 'Buffer', data: any[] }; + equals(otherBuffer: Buffer): boolean; + compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number; + copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; + slice(start?: number, end?: number): Buffer; + writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readUInt8(offset: number, noAssert?: boolean): number; + readUInt16LE(offset: number, noAssert?: boolean): number; + readUInt16BE(offset: number, noAssert?: boolean): number; + readUInt32LE(offset: number, noAssert?: boolean): number; + readUInt32BE(offset: number, noAssert?: boolean): number; + readInt8(offset: number, noAssert?: boolean): number; + readInt16LE(offset: number, noAssert?: boolean): number; + readInt16BE(offset: number, noAssert?: boolean): number; + readInt32LE(offset: number, noAssert?: boolean): number; + readInt32BE(offset: number, noAssert?: boolean): number; + readFloatLE(offset: number, noAssert?: boolean): number; + readFloatBE(offset: number, noAssert?: boolean): number; + readDoubleLE(offset: number, noAssert?: boolean): number; + readDoubleBE(offset: number, noAssert?: boolean): number; + swap16(): Buffer; + swap32(): Buffer; + swap64(): Buffer; + writeUInt8(value: number, offset: number, noAssert?: boolean): number; + writeUInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeInt8(value: number, offset: number, noAssert?: boolean): number; + writeInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeFloatLE(value: number, offset: number, noAssert?: boolean): number; + writeFloatBE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleLE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleBE(value: number, offset: number, noAssert?: boolean): number; + fill(value: any, offset?: number, end?: number): this; + indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; + lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; + includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean; + + /** + * Allocates a new buffer containing the given {str}. + * + * @param str String to store in buffer. + * @param encoding encoding to use, optional. Default is 'utf8' + */ + constructor (str: string, encoding?: string); + /** + * Allocates a new buffer of {size} octets. + * + * @param size count of octets to allocate. + */ + constructor (size: number); + /** + * Allocates a new buffer containing the given {array} of octets. + * + * @param array The octets to store. + */ + constructor (array: Uint8Array); + /** + * Produces a Buffer backed by the same allocated memory as + * the given {ArrayBuffer}. + * + * + * @param arrayBuffer The ArrayBuffer with which to share memory. + */ + constructor (arrayBuffer: ArrayBuffer); + /** + * Allocates a new buffer containing the given {array} of octets. + * + * @param array The octets to store. + */ + constructor (array: any[]); + /** + * Copies the passed {buffer} data onto a new {Buffer} instance. + * + * @param buffer The buffer to copy. + */ + constructor (buffer: Buffer); + prototype: Buffer; + /** + * Allocates a new Buffer using an {array} of octets. + * + * @param array + */ + static from(array: any[]): Buffer; + /** + * When passed a reference to the .buffer property of a TypedArray instance, + * the newly created Buffer will share the same allocated memory as the TypedArray. + * The optional {byteOffset} and {length} arguments specify a memory range + * within the {arrayBuffer} that will be shared by the Buffer. + * + * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer() + * @param byteOffset + * @param length + */ + static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer; + /** + * Copies the passed {buffer} data onto a new Buffer instance. + * + * @param buffer + */ + static from(buffer: Buffer): Buffer; + /** + * Creates a new Buffer containing the given JavaScript string {str}. + * If provided, the {encoding} parameter identifies the character encoding. + * If not provided, {encoding} defaults to 'utf8'. + * + * @param str + */ + static from(str: string, encoding?: string): Buffer; + /** + * Returns true if {obj} is a Buffer + * + * @param obj object to test. + */ + static isBuffer(obj: any): obj is Buffer; + /** + * Returns true if {encoding} is a valid encoding argument. + * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' + * + * @param encoding string to test. + */ + static isEncoding(encoding: string): boolean; + /** + * Gives the actual byte length of a string. encoding defaults to 'utf8'. + * This is not the same as String.prototype.length since that returns the number of characters in a string. + * + * @param string string to test. + * @param encoding encoding used to evaluate (defaults to 'utf8') + */ + static byteLength(string: string, encoding?: string): number; + /** + * Returns a buffer which is the result of concatenating all the buffers in the list together. + * + * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer. + * If the list has exactly one item, then the first item of the list is returned. + * If the list has more than one item, then a new Buffer is created. + * + * @param list An array of Buffer objects to concatenate + * @param totalLength Total length of the buffers when concatenated. + * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly. + */ + static concat(list: Buffer[], totalLength?: number): Buffer; + /** + * The same as buf1.compare(buf2). + */ + static compare(buf1: Buffer, buf2: Buffer): number; + /** + * Allocates a new buffer of {size} octets. + * + * @param size count of octets to allocate. + * @param fill if specified, buffer will be initialized by calling buf.fill(fill). + * If parameter is omitted, buffer will be filled with zeros. + * @param encoding encoding used for call to buf.fill while initalizing + */ + static alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer; + /** + * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents + * of the newly created Buffer are unknown and may contain sensitive data. + * + * @param size count of octets to allocate + */ + static allocUnsafe(size: number): Buffer; + /** + * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents + * of the newly created Buffer are unknown and may contain sensitive data. + * + * @param size count of octets to allocate + */ + static allocUnsafeSlow(size: number): Buffer; + } +} \ No newline at end of file diff --git a/Inscripciones_UAIE/node_backend/node_modules/safe-buffer/index.js b/node_backend/node_modules/safe-buffer/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/safe-buffer/index.js rename to node_backend/node_modules/safe-buffer/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/safe-buffer/package.json b/node_backend/node_modules/safe-buffer/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/safe-buffer/package.json rename to node_backend/node_modules/safe-buffer/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/safer-buffer/LICENSE b/node_backend/node_modules/safer-buffer/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/safer-buffer/LICENSE rename to node_backend/node_modules/safer-buffer/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/safer-buffer/Porting-Buffer.md b/node_backend/node_modules/safer-buffer/Porting-Buffer.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/safer-buffer/Porting-Buffer.md rename to node_backend/node_modules/safer-buffer/Porting-Buffer.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/safer-buffer/Readme.md b/node_backend/node_modules/safer-buffer/Readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/safer-buffer/Readme.md rename to node_backend/node_modules/safer-buffer/Readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/safer-buffer/dangerous.js b/node_backend/node_modules/safer-buffer/dangerous.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/safer-buffer/dangerous.js rename to node_backend/node_modules/safer-buffer/dangerous.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/safer-buffer/package.json b/node_backend/node_modules/safer-buffer/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/safer-buffer/package.json rename to node_backend/node_modules/safer-buffer/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/safer-buffer/safer.js b/node_backend/node_modules/safer-buffer/safer.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/safer-buffer/safer.js rename to node_backend/node_modules/safer-buffer/safer.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/safer-buffer/tests.js b/node_backend/node_modules/safer-buffer/tests.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/safer-buffer/tests.js rename to node_backend/node_modules/safer-buffer/tests.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/LICENSE b/node_backend/node_modules/semver/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/LICENSE rename to node_backend/node_modules/semver/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/README.md b/node_backend/node_modules/semver/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/README.md rename to node_backend/node_modules/semver/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/bin/semver.js b/node_backend/node_modules/semver/bin/semver.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/bin/semver.js rename to node_backend/node_modules/semver/bin/semver.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/classes/comparator.js b/node_backend/node_modules/semver/classes/comparator.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/classes/comparator.js rename to node_backend/node_modules/semver/classes/comparator.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/classes/index.js b/node_backend/node_modules/semver/classes/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/classes/index.js rename to node_backend/node_modules/semver/classes/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/classes/range.js b/node_backend/node_modules/semver/classes/range.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/classes/range.js rename to node_backend/node_modules/semver/classes/range.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/classes/semver.js b/node_backend/node_modules/semver/classes/semver.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/classes/semver.js rename to node_backend/node_modules/semver/classes/semver.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/clean.js b/node_backend/node_modules/semver/functions/clean.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/clean.js rename to node_backend/node_modules/semver/functions/clean.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/cmp.js b/node_backend/node_modules/semver/functions/cmp.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/cmp.js rename to node_backend/node_modules/semver/functions/cmp.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/coerce.js b/node_backend/node_modules/semver/functions/coerce.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/coerce.js rename to node_backend/node_modules/semver/functions/coerce.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/compare-build.js b/node_backend/node_modules/semver/functions/compare-build.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/compare-build.js rename to node_backend/node_modules/semver/functions/compare-build.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/compare-loose.js b/node_backend/node_modules/semver/functions/compare-loose.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/compare-loose.js rename to node_backend/node_modules/semver/functions/compare-loose.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/compare.js b/node_backend/node_modules/semver/functions/compare.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/compare.js rename to node_backend/node_modules/semver/functions/compare.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/diff.js b/node_backend/node_modules/semver/functions/diff.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/diff.js rename to node_backend/node_modules/semver/functions/diff.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/eq.js b/node_backend/node_modules/semver/functions/eq.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/eq.js rename to node_backend/node_modules/semver/functions/eq.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/gt.js b/node_backend/node_modules/semver/functions/gt.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/gt.js rename to node_backend/node_modules/semver/functions/gt.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/gte.js b/node_backend/node_modules/semver/functions/gte.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/gte.js rename to node_backend/node_modules/semver/functions/gte.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/inc.js b/node_backend/node_modules/semver/functions/inc.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/inc.js rename to node_backend/node_modules/semver/functions/inc.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/lt.js b/node_backend/node_modules/semver/functions/lt.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/lt.js rename to node_backend/node_modules/semver/functions/lt.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/lte.js b/node_backend/node_modules/semver/functions/lte.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/lte.js rename to node_backend/node_modules/semver/functions/lte.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/major.js b/node_backend/node_modules/semver/functions/major.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/major.js rename to node_backend/node_modules/semver/functions/major.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/minor.js b/node_backend/node_modules/semver/functions/minor.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/minor.js rename to node_backend/node_modules/semver/functions/minor.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/neq.js b/node_backend/node_modules/semver/functions/neq.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/neq.js rename to node_backend/node_modules/semver/functions/neq.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/parse.js b/node_backend/node_modules/semver/functions/parse.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/parse.js rename to node_backend/node_modules/semver/functions/parse.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/patch.js b/node_backend/node_modules/semver/functions/patch.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/patch.js rename to node_backend/node_modules/semver/functions/patch.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/prerelease.js b/node_backend/node_modules/semver/functions/prerelease.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/prerelease.js rename to node_backend/node_modules/semver/functions/prerelease.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/rcompare.js b/node_backend/node_modules/semver/functions/rcompare.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/rcompare.js rename to node_backend/node_modules/semver/functions/rcompare.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/rsort.js b/node_backend/node_modules/semver/functions/rsort.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/rsort.js rename to node_backend/node_modules/semver/functions/rsort.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/satisfies.js b/node_backend/node_modules/semver/functions/satisfies.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/satisfies.js rename to node_backend/node_modules/semver/functions/satisfies.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/sort.js b/node_backend/node_modules/semver/functions/sort.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/sort.js rename to node_backend/node_modules/semver/functions/sort.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/functions/valid.js b/node_backend/node_modules/semver/functions/valid.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/functions/valid.js rename to node_backend/node_modules/semver/functions/valid.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/index.js b/node_backend/node_modules/semver/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/index.js rename to node_backend/node_modules/semver/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/internal/constants.js b/node_backend/node_modules/semver/internal/constants.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/internal/constants.js rename to node_backend/node_modules/semver/internal/constants.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/internal/debug.js b/node_backend/node_modules/semver/internal/debug.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/internal/debug.js rename to node_backend/node_modules/semver/internal/debug.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/internal/identifiers.js b/node_backend/node_modules/semver/internal/identifiers.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/internal/identifiers.js rename to node_backend/node_modules/semver/internal/identifiers.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/internal/lrucache.js b/node_backend/node_modules/semver/internal/lrucache.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/internal/lrucache.js rename to node_backend/node_modules/semver/internal/lrucache.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/internal/parse-options.js b/node_backend/node_modules/semver/internal/parse-options.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/internal/parse-options.js rename to node_backend/node_modules/semver/internal/parse-options.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/internal/re.js b/node_backend/node_modules/semver/internal/re.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/internal/re.js rename to node_backend/node_modules/semver/internal/re.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/package.json b/node_backend/node_modules/semver/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/package.json rename to node_backend/node_modules/semver/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/preload.js b/node_backend/node_modules/semver/preload.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/preload.js rename to node_backend/node_modules/semver/preload.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/range.bnf b/node_backend/node_modules/semver/range.bnf similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/range.bnf rename to node_backend/node_modules/semver/range.bnf diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/ranges/gtr.js b/node_backend/node_modules/semver/ranges/gtr.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/ranges/gtr.js rename to node_backend/node_modules/semver/ranges/gtr.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/ranges/intersects.js b/node_backend/node_modules/semver/ranges/intersects.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/ranges/intersects.js rename to node_backend/node_modules/semver/ranges/intersects.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/ranges/ltr.js b/node_backend/node_modules/semver/ranges/ltr.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/ranges/ltr.js rename to node_backend/node_modules/semver/ranges/ltr.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/ranges/max-satisfying.js b/node_backend/node_modules/semver/ranges/max-satisfying.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/ranges/max-satisfying.js rename to node_backend/node_modules/semver/ranges/max-satisfying.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/ranges/min-satisfying.js b/node_backend/node_modules/semver/ranges/min-satisfying.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/ranges/min-satisfying.js rename to node_backend/node_modules/semver/ranges/min-satisfying.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/ranges/min-version.js b/node_backend/node_modules/semver/ranges/min-version.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/ranges/min-version.js rename to node_backend/node_modules/semver/ranges/min-version.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/ranges/outside.js b/node_backend/node_modules/semver/ranges/outside.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/ranges/outside.js rename to node_backend/node_modules/semver/ranges/outside.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/ranges/simplify.js b/node_backend/node_modules/semver/ranges/simplify.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/ranges/simplify.js rename to node_backend/node_modules/semver/ranges/simplify.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/ranges/subset.js b/node_backend/node_modules/semver/ranges/subset.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/ranges/subset.js rename to node_backend/node_modules/semver/ranges/subset.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/ranges/to-comparators.js b/node_backend/node_modules/semver/ranges/to-comparators.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/ranges/to-comparators.js rename to node_backend/node_modules/semver/ranges/to-comparators.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/semver/ranges/valid.js b/node_backend/node_modules/semver/ranges/valid.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/semver/ranges/valid.js rename to node_backend/node_modules/semver/ranges/valid.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/send/HISTORY.md b/node_backend/node_modules/send/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/send/HISTORY.md rename to node_backend/node_modules/send/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/send/LICENSE b/node_backend/node_modules/send/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/send/LICENSE rename to node_backend/node_modules/send/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/send/README.md b/node_backend/node_modules/send/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/send/README.md rename to node_backend/node_modules/send/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/send/SECURITY.md b/node_backend/node_modules/send/SECURITY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/send/SECURITY.md rename to node_backend/node_modules/send/SECURITY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/send/index.js b/node_backend/node_modules/send/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/send/index.js rename to node_backend/node_modules/send/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/send/node_modules/encodeurl/HISTORY.md b/node_backend/node_modules/send/node_modules/encodeurl/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/send/node_modules/encodeurl/HISTORY.md rename to node_backend/node_modules/send/node_modules/encodeurl/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/send/node_modules/encodeurl/LICENSE b/node_backend/node_modules/send/node_modules/encodeurl/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/send/node_modules/encodeurl/LICENSE rename to node_backend/node_modules/send/node_modules/encodeurl/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/send/node_modules/encodeurl/README.md b/node_backend/node_modules/send/node_modules/encodeurl/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/send/node_modules/encodeurl/README.md rename to node_backend/node_modules/send/node_modules/encodeurl/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/send/node_modules/encodeurl/index.js b/node_backend/node_modules/send/node_modules/encodeurl/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/send/node_modules/encodeurl/index.js rename to node_backend/node_modules/send/node_modules/encodeurl/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/send/node_modules/encodeurl/package.json b/node_backend/node_modules/send/node_modules/encodeurl/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/send/node_modules/encodeurl/package.json rename to node_backend/node_modules/send/node_modules/encodeurl/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/send/node_modules/ms/index.js b/node_backend/node_modules/send/node_modules/ms/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/send/node_modules/ms/index.js rename to node_backend/node_modules/send/node_modules/ms/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/send/node_modules/ms/license.md b/node_backend/node_modules/send/node_modules/ms/license.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/send/node_modules/ms/license.md rename to node_backend/node_modules/send/node_modules/ms/license.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/send/node_modules/ms/package.json b/node_backend/node_modules/send/node_modules/ms/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/send/node_modules/ms/package.json rename to node_backend/node_modules/send/node_modules/ms/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/send/node_modules/ms/readme.md b/node_backend/node_modules/send/node_modules/ms/readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/send/node_modules/ms/readme.md rename to node_backend/node_modules/send/node_modules/ms/readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/send/package.json b/node_backend/node_modules/send/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/send/package.json rename to node_backend/node_modules/send/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/serve-static/HISTORY.md b/node_backend/node_modules/serve-static/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/serve-static/HISTORY.md rename to node_backend/node_modules/serve-static/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/serve-static/LICENSE b/node_backend/node_modules/serve-static/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/serve-static/LICENSE rename to node_backend/node_modules/serve-static/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/serve-static/README.md b/node_backend/node_modules/serve-static/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/serve-static/README.md rename to node_backend/node_modules/serve-static/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/serve-static/index.js b/node_backend/node_modules/serve-static/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/serve-static/index.js rename to node_backend/node_modules/serve-static/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/serve-static/package.json b/node_backend/node_modules/serve-static/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/serve-static/package.json rename to node_backend/node_modules/serve-static/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/set-blocking/CHANGELOG.md b/node_backend/node_modules/set-blocking/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/set-blocking/CHANGELOG.md rename to node_backend/node_modules/set-blocking/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/set-blocking/LICENSE.txt b/node_backend/node_modules/set-blocking/LICENSE.txt similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/set-blocking/LICENSE.txt rename to node_backend/node_modules/set-blocking/LICENSE.txt diff --git a/Inscripciones_UAIE/node_backend/node_modules/set-blocking/README.md b/node_backend/node_modules/set-blocking/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/set-blocking/README.md rename to node_backend/node_modules/set-blocking/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/set-blocking/index.js b/node_backend/node_modules/set-blocking/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/set-blocking/index.js rename to node_backend/node_modules/set-blocking/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/set-blocking/package.json b/node_backend/node_modules/set-blocking/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/set-blocking/package.json rename to node_backend/node_modules/set-blocking/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/set-function-length/.eslintrc b/node_backend/node_modules/set-function-length/.eslintrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/set-function-length/.eslintrc rename to node_backend/node_modules/set-function-length/.eslintrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/set-function-length/.github/FUNDING.yml b/node_backend/node_modules/set-function-length/.github/FUNDING.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/set-function-length/.github/FUNDING.yml rename to node_backend/node_modules/set-function-length/.github/FUNDING.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/set-function-length/.nycrc b/node_backend/node_modules/set-function-length/.nycrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/set-function-length/.nycrc rename to node_backend/node_modules/set-function-length/.nycrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/set-function-length/CHANGELOG.md b/node_backend/node_modules/set-function-length/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/set-function-length/CHANGELOG.md rename to node_backend/node_modules/set-function-length/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/set-function-length/LICENSE b/node_backend/node_modules/set-function-length/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/set-function-length/LICENSE rename to node_backend/node_modules/set-function-length/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/set-function-length/README.md b/node_backend/node_modules/set-function-length/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/set-function-length/README.md rename to node_backend/node_modules/set-function-length/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/set-function-length/env.d.ts b/node_backend/node_modules/set-function-length/env.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/set-function-length/env.d.ts rename to node_backend/node_modules/set-function-length/env.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/set-function-length/env.js b/node_backend/node_modules/set-function-length/env.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/set-function-length/env.js rename to node_backend/node_modules/set-function-length/env.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/set-function-length/index.d.ts b/node_backend/node_modules/set-function-length/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/set-function-length/index.d.ts rename to node_backend/node_modules/set-function-length/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/set-function-length/index.js b/node_backend/node_modules/set-function-length/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/set-function-length/index.js rename to node_backend/node_modules/set-function-length/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/set-function-length/package.json b/node_backend/node_modules/set-function-length/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/set-function-length/package.json rename to node_backend/node_modules/set-function-length/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/set-function-length/tsconfig.json b/node_backend/node_modules/set-function-length/tsconfig.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/set-function-length/tsconfig.json rename to node_backend/node_modules/set-function-length/tsconfig.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/setprototypeof/LICENSE b/node_backend/node_modules/setprototypeof/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/setprototypeof/LICENSE rename to node_backend/node_modules/setprototypeof/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/setprototypeof/README.md b/node_backend/node_modules/setprototypeof/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/setprototypeof/README.md rename to node_backend/node_modules/setprototypeof/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/setprototypeof/index.d.ts b/node_backend/node_modules/setprototypeof/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/setprototypeof/index.d.ts rename to node_backend/node_modules/setprototypeof/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/setprototypeof/index.js b/node_backend/node_modules/setprototypeof/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/setprototypeof/index.js rename to node_backend/node_modules/setprototypeof/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/setprototypeof/package.json b/node_backend/node_modules/setprototypeof/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/setprototypeof/package.json rename to node_backend/node_modules/setprototypeof/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/setprototypeof/test/index.js b/node_backend/node_modules/setprototypeof/test/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/setprototypeof/test/index.js rename to node_backend/node_modules/setprototypeof/test/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/side-channel/.editorconfig b/node_backend/node_modules/side-channel/.editorconfig similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/side-channel/.editorconfig rename to node_backend/node_modules/side-channel/.editorconfig diff --git a/Inscripciones_UAIE/node_backend/node_modules/side-channel/.eslintrc b/node_backend/node_modules/side-channel/.eslintrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/side-channel/.eslintrc rename to node_backend/node_modules/side-channel/.eslintrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/side-channel/.github/FUNDING.yml b/node_backend/node_modules/side-channel/.github/FUNDING.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/side-channel/.github/FUNDING.yml rename to node_backend/node_modules/side-channel/.github/FUNDING.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/side-channel/.nycrc b/node_backend/node_modules/side-channel/.nycrc similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/side-channel/.nycrc rename to node_backend/node_modules/side-channel/.nycrc diff --git a/Inscripciones_UAIE/node_backend/node_modules/side-channel/CHANGELOG.md b/node_backend/node_modules/side-channel/CHANGELOG.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/side-channel/CHANGELOG.md rename to node_backend/node_modules/side-channel/CHANGELOG.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/side-channel/LICENSE b/node_backend/node_modules/side-channel/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/side-channel/LICENSE rename to node_backend/node_modules/side-channel/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/side-channel/README.md b/node_backend/node_modules/side-channel/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/side-channel/README.md rename to node_backend/node_modules/side-channel/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/side-channel/index.d.ts b/node_backend/node_modules/side-channel/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/side-channel/index.d.ts rename to node_backend/node_modules/side-channel/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/side-channel/index.js b/node_backend/node_modules/side-channel/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/side-channel/index.js rename to node_backend/node_modules/side-channel/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/side-channel/package.json b/node_backend/node_modules/side-channel/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/side-channel/package.json rename to node_backend/node_modules/side-channel/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/side-channel/test/index.js b/node_backend/node_modules/side-channel/test/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/side-channel/test/index.js rename to node_backend/node_modules/side-channel/test/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/side-channel/tsconfig.json b/node_backend/node_modules/side-channel/tsconfig.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/side-channel/tsconfig.json rename to node_backend/node_modules/side-channel/tsconfig.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/MIT-LICENSE.txt b/node_backend/node_modules/sift/MIT-LICENSE.txt similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/MIT-LICENSE.txt rename to node_backend/node_modules/sift/MIT-LICENSE.txt diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/README.md b/node_backend/node_modules/sift/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/README.md rename to node_backend/node_modules/sift/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/es/index.js b/node_backend/node_modules/sift/es/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/es/index.js rename to node_backend/node_modules/sift/es/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/es/index.js.map b/node_backend/node_modules/sift/es/index.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/es/index.js.map rename to node_backend/node_modules/sift/es/index.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/es5m/index.js b/node_backend/node_modules/sift/es5m/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/es5m/index.js rename to node_backend/node_modules/sift/es5m/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/es5m/index.js.map b/node_backend/node_modules/sift/es5m/index.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/es5m/index.js.map rename to node_backend/node_modules/sift/es5m/index.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/index.d.ts b/node_backend/node_modules/sift/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/index.d.ts rename to node_backend/node_modules/sift/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/index.js b/node_backend/node_modules/sift/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/index.js rename to node_backend/node_modules/sift/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/lib/core.d.ts b/node_backend/node_modules/sift/lib/core.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/lib/core.d.ts rename to node_backend/node_modules/sift/lib/core.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/lib/index.d.ts b/node_backend/node_modules/sift/lib/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/lib/index.d.ts rename to node_backend/node_modules/sift/lib/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/lib/index.js b/node_backend/node_modules/sift/lib/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/lib/index.js rename to node_backend/node_modules/sift/lib/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/lib/index.js.map b/node_backend/node_modules/sift/lib/index.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/lib/index.js.map rename to node_backend/node_modules/sift/lib/index.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/lib/operations.d.ts b/node_backend/node_modules/sift/lib/operations.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/lib/operations.d.ts rename to node_backend/node_modules/sift/lib/operations.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/lib/utils.d.ts b/node_backend/node_modules/sift/lib/utils.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/lib/utils.d.ts rename to node_backend/node_modules/sift/lib/utils.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/package.json b/node_backend/node_modules/sift/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/package.json rename to node_backend/node_modules/sift/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/sift.csp.min.js b/node_backend/node_modules/sift/sift.csp.min.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/sift.csp.min.js rename to node_backend/node_modules/sift/sift.csp.min.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/sift.csp.min.js.map b/node_backend/node_modules/sift/sift.csp.min.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/sift.csp.min.js.map rename to node_backend/node_modules/sift/sift.csp.min.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/sift.min.js b/node_backend/node_modules/sift/sift.min.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/sift.min.js rename to node_backend/node_modules/sift/sift.min.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/sift.min.js.map b/node_backend/node_modules/sift/sift.min.js.map similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/sift.min.js.map rename to node_backend/node_modules/sift/sift.min.js.map diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/src/core.ts b/node_backend/node_modules/sift/src/core.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/src/core.ts rename to node_backend/node_modules/sift/src/core.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/src/index.ts b/node_backend/node_modules/sift/src/index.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/src/index.ts rename to node_backend/node_modules/sift/src/index.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/src/operations.ts b/node_backend/node_modules/sift/src/operations.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/src/operations.ts rename to node_backend/node_modules/sift/src/operations.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/sift/src/utils.ts b/node_backend/node_modules/sift/src/utils.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sift/src/utils.ts rename to node_backend/node_modules/sift/src/utils.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/signal-exit/LICENSE.txt b/node_backend/node_modules/signal-exit/LICENSE.txt similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/signal-exit/LICENSE.txt rename to node_backend/node_modules/signal-exit/LICENSE.txt diff --git a/Inscripciones_UAIE/node_backend/node_modules/signal-exit/README.md b/node_backend/node_modules/signal-exit/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/signal-exit/README.md rename to node_backend/node_modules/signal-exit/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/signal-exit/index.js b/node_backend/node_modules/signal-exit/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/signal-exit/index.js rename to node_backend/node_modules/signal-exit/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/signal-exit/package.json b/node_backend/node_modules/signal-exit/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/signal-exit/package.json rename to node_backend/node_modules/signal-exit/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/signal-exit/signals.js b/node_backend/node_modules/signal-exit/signals.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/signal-exit/signals.js rename to node_backend/node_modules/signal-exit/signals.js diff --git a/node_backend/node_modules/sparse-bitfield/.npmignore b/node_backend/node_modules/sparse-bitfield/.npmignore new file mode 100644 index 00000000..3c3629e6 --- /dev/null +++ b/node_backend/node_modules/sparse-bitfield/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/Inscripciones_UAIE/node_backend/node_modules/sparse-bitfield/.travis.yml b/node_backend/node_modules/sparse-bitfield/.travis.yml similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sparse-bitfield/.travis.yml rename to node_backend/node_modules/sparse-bitfield/.travis.yml diff --git a/Inscripciones_UAIE/node_backend/node_modules/sparse-bitfield/LICENSE b/node_backend/node_modules/sparse-bitfield/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sparse-bitfield/LICENSE rename to node_backend/node_modules/sparse-bitfield/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/sparse-bitfield/README.md b/node_backend/node_modules/sparse-bitfield/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sparse-bitfield/README.md rename to node_backend/node_modules/sparse-bitfield/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/sparse-bitfield/index.js b/node_backend/node_modules/sparse-bitfield/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sparse-bitfield/index.js rename to node_backend/node_modules/sparse-bitfield/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/sparse-bitfield/package.json b/node_backend/node_modules/sparse-bitfield/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sparse-bitfield/package.json rename to node_backend/node_modules/sparse-bitfield/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/sparse-bitfield/test.js b/node_backend/node_modules/sparse-bitfield/test.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/sparse-bitfield/test.js rename to node_backend/node_modules/sparse-bitfield/test.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/statuses/HISTORY.md b/node_backend/node_modules/statuses/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/statuses/HISTORY.md rename to node_backend/node_modules/statuses/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/statuses/LICENSE b/node_backend/node_modules/statuses/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/statuses/LICENSE rename to node_backend/node_modules/statuses/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/statuses/README.md b/node_backend/node_modules/statuses/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/statuses/README.md rename to node_backend/node_modules/statuses/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/statuses/codes.json b/node_backend/node_modules/statuses/codes.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/statuses/codes.json rename to node_backend/node_modules/statuses/codes.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/statuses/index.js b/node_backend/node_modules/statuses/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/statuses/index.js rename to node_backend/node_modules/statuses/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/statuses/package.json b/node_backend/node_modules/statuses/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/statuses/package.json rename to node_backend/node_modules/statuses/package.json diff --git a/node_backend/node_modules/streamsearch/.eslintrc.js b/node_backend/node_modules/streamsearch/.eslintrc.js new file mode 100644 index 00000000..be9311d0 --- /dev/null +++ b/node_backend/node_modules/streamsearch/.eslintrc.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = { + extends: '@mscdex/eslint-config', +}; diff --git a/node_backend/node_modules/streamsearch/.github/workflows/ci.yml b/node_backend/node_modules/streamsearch/.github/workflows/ci.yml new file mode 100644 index 00000000..29d51782 --- /dev/null +++ b/node_backend/node_modules/streamsearch/.github/workflows/ci.yml @@ -0,0 +1,24 @@ +name: CI + +on: + pull_request: + push: + branches: [ master ] + +jobs: + tests-linux: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + node-version: [10.x, 12.x, 14.x, 16.x] + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - name: Install module + run: npm install + - name: Run tests + run: npm test diff --git a/node_backend/node_modules/streamsearch/.github/workflows/lint.yml b/node_backend/node_modules/streamsearch/.github/workflows/lint.yml new file mode 100644 index 00000000..9f9e1f58 --- /dev/null +++ b/node_backend/node_modules/streamsearch/.github/workflows/lint.yml @@ -0,0 +1,23 @@ +name: lint + +on: + pull_request: + push: + branches: [ master ] + +env: + NODE_VERSION: 16.x + +jobs: + lint-js: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ env.NODE_VERSION }} + uses: actions/setup-node@v1 + with: + node-version: ${{ env.NODE_VERSION }} + - name: Install ESLint + ESLint configs/plugins + run: npm install --only=dev + - name: Lint files + run: npm run lint diff --git a/node_backend/node_modules/streamsearch/LICENSE b/node_backend/node_modules/streamsearch/LICENSE new file mode 100644 index 00000000..290762e9 --- /dev/null +++ b/node_backend/node_modules/streamsearch/LICENSE @@ -0,0 +1,19 @@ +Copyright Brian White. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. \ No newline at end of file diff --git a/node_backend/node_modules/streamsearch/README.md b/node_backend/node_modules/streamsearch/README.md new file mode 100644 index 00000000..c3934d1c --- /dev/null +++ b/node_backend/node_modules/streamsearch/README.md @@ -0,0 +1,95 @@ +Description +=========== + +streamsearch is a module for [node.js](http://nodejs.org/) that allows searching a stream using the Boyer-Moore-Horspool algorithm. + +This module is based heavily on the Streaming Boyer-Moore-Horspool C++ implementation by Hongli Lai [here](https://github.com/FooBarWidget/boyer-moore-horspool). + + +Requirements +============ + +* [node.js](http://nodejs.org/) -- v10.0.0 or newer + + +Installation +============ + + npm install streamsearch + +Example +======= + +```js + const { inspect } = require('util'); + + const StreamSearch = require('streamsearch'); + + const needle = Buffer.from('\r\n'); + const ss = new StreamSearch(needle, (isMatch, data, start, end) => { + if (data) + console.log('data: ' + inspect(data.toString('latin1', start, end))); + if (isMatch) + console.log('match!'); + }); + + const chunks = [ + 'foo', + ' bar', + '\r', + '\n', + 'baz, hello\r', + '\n world.', + '\r\n Node.JS rules!!\r\n\r\n', + ]; + for (const chunk of chunks) + ss.push(Buffer.from(chunk)); + + // output: + // + // data: 'foo' + // data: ' bar' + // match! + // data: 'baz, hello' + // match! + // data: ' world.' + // match! + // data: ' Node.JS rules!!' + // match! + // data: '' + // match! +``` + + +API +=== + +Properties +---------- + +* **maxMatches** - < _integer_ > - The maximum number of matches. Defaults to `Infinity`. + +* **matches** - < _integer_ > - The current match count. + + +Functions +--------- + +* **(constructor)**(< _mixed_ >needle, < _function_ >callback) - Creates and returns a new instance for searching for a _Buffer_ or _string_ `needle`. `callback` is called any time there is non-matching data and/or there is a needle match. `callback` will be called with the following arguments: + + 1. `isMatch` - _boolean_ - Indicates whether a match has been found + + 2. `data` - _mixed_ - If set, this contains data that did not match the needle. + + 3. `start` - _integer_ - The index in `data` where the non-matching data begins (inclusive). + + 4. `end` - _integer_ - The index in `data` where the non-matching data ends (exclusive). + + 5. `isSafeData` - _boolean_ - Indicates if it is safe to store a reference to `data` (e.g. as-is or via `data.slice()`) or not, as in some cases `data` may point to a Buffer whose contents change over time. + +* **destroy**() - _(void)_ - Emits any last remaining unmatched data that may still be buffered and then resets internal state. + +* **push**(< _Buffer_ >chunk) - _integer_ - Processes `chunk`, searching for a match. The return value is the last processed index in `chunk` + 1. + +* **reset**() - _(void)_ - Resets internal state. Useful for when you wish to start searching a new/different stream for example. + diff --git a/node_backend/node_modules/streamsearch/lib/sbmh.js b/node_backend/node_modules/streamsearch/lib/sbmh.js new file mode 100644 index 00000000..510cae26 --- /dev/null +++ b/node_backend/node_modules/streamsearch/lib/sbmh.js @@ -0,0 +1,267 @@ +'use strict'; +/* + Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation + by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool +*/ +function memcmp(buf1, pos1, buf2, pos2, num) { + for (let i = 0; i < num; ++i) { + if (buf1[pos1 + i] !== buf2[pos2 + i]) + return false; + } + return true; +} + +class SBMH { + constructor(needle, cb) { + if (typeof cb !== 'function') + throw new Error('Missing match callback'); + + if (typeof needle === 'string') + needle = Buffer.from(needle); + else if (!Buffer.isBuffer(needle)) + throw new Error(`Expected Buffer for needle, got ${typeof needle}`); + + const needleLen = needle.length; + + this.maxMatches = Infinity; + this.matches = 0; + + this._cb = cb; + this._lookbehindSize = 0; + this._needle = needle; + this._bufPos = 0; + + this._lookbehind = Buffer.allocUnsafe(needleLen); + + // Initialize occurrence table. + this._occ = [ + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen + ]; + + // Populate occurrence table with analysis of the needle, ignoring the last + // letter. + if (needleLen > 1) { + for (let i = 0; i < needleLen - 1; ++i) + this._occ[needle[i]] = needleLen - 1 - i; + } + } + + reset() { + this.matches = 0; + this._lookbehindSize = 0; + this._bufPos = 0; + } + + push(chunk, pos) { + let result; + if (!Buffer.isBuffer(chunk)) + chunk = Buffer.from(chunk, 'latin1'); + const chunkLen = chunk.length; + this._bufPos = pos || 0; + while (result !== chunkLen && this.matches < this.maxMatches) + result = feed(this, chunk); + return result; + } + + destroy() { + const lbSize = this._lookbehindSize; + if (lbSize) + this._cb(false, this._lookbehind, 0, lbSize, false); + this.reset(); + } +} + +function feed(self, data) { + const len = data.length; + const needle = self._needle; + const needleLen = needle.length; + + // Positive: points to a position in `data` + // pos == 3 points to data[3] + // Negative: points to a position in the lookbehind buffer + // pos == -2 points to lookbehind[lookbehindSize - 2] + let pos = -self._lookbehindSize; + const lastNeedleCharPos = needleLen - 1; + const lastNeedleChar = needle[lastNeedleCharPos]; + const end = len - needleLen; + const occ = self._occ; + const lookbehind = self._lookbehind; + + if (pos < 0) { + // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool + // search with character lookup code that considers both the + // lookbehind buffer and the current round's haystack data. + // + // Loop until + // there is a match. + // or until + // we've moved past the position that requires the + // lookbehind buffer. In this case we switch to the + // optimized loop. + // or until + // the character to look at lies outside the haystack. + while (pos < 0 && pos <= end) { + const nextPos = pos + lastNeedleCharPos; + const ch = (nextPos < 0 + ? lookbehind[self._lookbehindSize + nextPos] + : data[nextPos]); + + if (ch === lastNeedleChar + && matchNeedle(self, data, pos, lastNeedleCharPos)) { + self._lookbehindSize = 0; + ++self.matches; + if (pos > -self._lookbehindSize) + self._cb(true, lookbehind, 0, self._lookbehindSize + pos, false); + else + self._cb(true, undefined, 0, 0, true); + + return (self._bufPos = pos + needleLen); + } + + pos += occ[ch]; + } + + // No match. + + // There's too few data for Boyer-Moore-Horspool to run, + // so let's use a different algorithm to skip as much as + // we can. + // Forward pos until + // the trailing part of lookbehind + data + // looks like the beginning of the needle + // or until + // pos == 0 + while (pos < 0 && !matchNeedle(self, data, pos, len - pos)) + ++pos; + + if (pos < 0) { + // Cut off part of the lookbehind buffer that has + // been processed and append the entire haystack + // into it. + const bytesToCutOff = self._lookbehindSize + pos; + + if (bytesToCutOff > 0) { + // The cut off data is guaranteed not to contain the needle. + self._cb(false, lookbehind, 0, bytesToCutOff, false); + } + + self._lookbehindSize -= bytesToCutOff; + lookbehind.copy(lookbehind, 0, bytesToCutOff, self._lookbehindSize); + lookbehind.set(data, self._lookbehindSize); + self._lookbehindSize += len; + + self._bufPos = len; + return len; + } + + // Discard lookbehind buffer. + self._cb(false, lookbehind, 0, self._lookbehindSize, false); + self._lookbehindSize = 0; + } + + pos += self._bufPos; + + const firstNeedleChar = needle[0]; + + // Lookbehind buffer is now empty. Perform Boyer-Moore-Horspool + // search with optimized character lookup code that only considers + // the current round's haystack data. + while (pos <= end) { + const ch = data[pos + lastNeedleCharPos]; + + if (ch === lastNeedleChar + && data[pos] === firstNeedleChar + && memcmp(needle, 0, data, pos, lastNeedleCharPos)) { + ++self.matches; + if (pos > 0) + self._cb(true, data, self._bufPos, pos, true); + else + self._cb(true, undefined, 0, 0, true); + + return (self._bufPos = pos + needleLen); + } + + pos += occ[ch]; + } + + // There was no match. If there's trailing haystack data that we cannot + // match yet using the Boyer-Moore-Horspool algorithm (because the trailing + // data is less than the needle size) then match using a modified + // algorithm that starts matching from the beginning instead of the end. + // Whatever trailing data is left after running this algorithm is added to + // the lookbehind buffer. + while (pos < len) { + if (data[pos] !== firstNeedleChar + || !memcmp(data, pos, needle, 0, len - pos)) { + ++pos; + continue; + } + data.copy(lookbehind, 0, pos, len); + self._lookbehindSize = len - pos; + break; + } + + // Everything until `pos` is guaranteed not to contain needle data. + if (pos > 0) + self._cb(false, data, self._bufPos, pos < len ? pos : len, true); + + self._bufPos = len; + return len; +} + +function matchNeedle(self, data, pos, len) { + const lb = self._lookbehind; + const lbSize = self._lookbehindSize; + const needle = self._needle; + + for (let i = 0; i < len; ++i, ++pos) { + const ch = (pos < 0 ? lb[lbSize + pos] : data[pos]); + if (ch !== needle[i]) + return false; + } + return true; +} + +module.exports = SBMH; diff --git a/node_backend/node_modules/streamsearch/package.json b/node_backend/node_modules/streamsearch/package.json new file mode 100644 index 00000000..51df8f97 --- /dev/null +++ b/node_backend/node_modules/streamsearch/package.json @@ -0,0 +1,34 @@ +{ + "name": "streamsearch", + "version": "1.1.0", + "author": "Brian White ", + "description": "Streaming Boyer-Moore-Horspool searching for node.js", + "main": "./lib/sbmh.js", + "engines": { + "node": ">=10.0.0" + }, + "devDependencies": { + "@mscdex/eslint-config": "^1.1.0", + "eslint": "^7.32.0" + }, + "scripts": { + "test": "node test/test.js", + "lint": "eslint --cache --report-unused-disable-directives --ext=.js .eslintrc.js lib test", + "lint:fix": "npm run lint -- --fix" + }, + "keywords": [ + "stream", + "horspool", + "boyer-moore-horspool", + "boyer-moore", + "search" + ], + "licenses": [{ + "type": "MIT", + "url": "http://github.com/mscdex/streamsearch/raw/master/LICENSE" + }], + "repository": { + "type": "git", + "url": "http://github.com/mscdex/streamsearch.git" + } +} diff --git a/node_backend/node_modules/streamsearch/test/test.js b/node_backend/node_modules/streamsearch/test/test.js new file mode 100644 index 00000000..39a04d7f --- /dev/null +++ b/node_backend/node_modules/streamsearch/test/test.js @@ -0,0 +1,70 @@ +'use strict'; + +const assert = require('assert'); + +const StreamSearch = require('../lib/sbmh.js'); + +[ + { + needle: '\r\n', + chunks: [ + 'foo', + ' bar', + '\r', + '\n', + 'baz, hello\r', + '\n world.', + '\r\n Node.JS rules!!\r\n\r\n', + ], + expect: [ + [false, 'foo'], + [false, ' bar'], + [ true, null], + [false, 'baz, hello'], + [ true, null], + [false, ' world.'], + [ true, null], + [ true, ' Node.JS rules!!'], + [ true, ''], + ], + }, + { + needle: '---foobarbaz', + chunks: [ + '---foobarbaz', + 'asdf', + '\r\n', + '---foobarba', + '---foobar', + 'ba', + '\r\n---foobarbaz--\r\n', + ], + expect: [ + [ true, null], + [false, 'asdf'], + [false, '\r\n'], + [false, '---foobarba'], + [false, '---foobarba'], + [ true, '\r\n'], + [false, '--\r\n'], + ], + }, +].forEach((test, i) => { + console.log(`Running test #${i + 1}`); + const { needle, chunks, expect } = test; + + const results = []; + const ss = new StreamSearch(Buffer.from(needle), + (isMatch, data, start, end) => { + if (data) + data = data.toString('latin1', start, end); + else + data = null; + results.push([isMatch, data]); + }); + + for (const chunk of chunks) + ss.push(Buffer.from(chunk)); + + assert.deepStrictEqual(results, expect); +}); diff --git a/Inscripciones_UAIE/node_backend/node_modules/string-width/index.d.ts b/node_backend/node_modules/string-width/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/string-width/index.d.ts rename to node_backend/node_modules/string-width/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/string-width/index.js b/node_backend/node_modules/string-width/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/string-width/index.js rename to node_backend/node_modules/string-width/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/string-width/license b/node_backend/node_modules/string-width/license similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/string-width/license rename to node_backend/node_modules/string-width/license diff --git a/Inscripciones_UAIE/node_backend/node_modules/string-width/package.json b/node_backend/node_modules/string-width/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/string-width/package.json rename to node_backend/node_modules/string-width/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/string-width/readme.md b/node_backend/node_modules/string-width/readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/string-width/readme.md rename to node_backend/node_modules/string-width/readme.md diff --git a/node_backend/node_modules/string_decoder/LICENSE b/node_backend/node_modules/string_decoder/LICENSE new file mode 100644 index 00000000..778edb20 --- /dev/null +++ b/node_backend/node_modules/string_decoder/LICENSE @@ -0,0 +1,48 @@ +Node.js is licensed for use as follows: + +""" +Copyright Node.js contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" + +This license applies to parts of Node.js originating from the +https://github.com/joyent/node repository: + +""" +Copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" + diff --git a/node_backend/node_modules/string_decoder/README.md b/node_backend/node_modules/string_decoder/README.md new file mode 100644 index 00000000..5fd58315 --- /dev/null +++ b/node_backend/node_modules/string_decoder/README.md @@ -0,0 +1,47 @@ +# string_decoder + +***Node-core v8.9.4 string_decoder for userland*** + + +[![NPM](https://nodei.co/npm/string_decoder.png?downloads=true&downloadRank=true)](https://nodei.co/npm/string_decoder/) +[![NPM](https://nodei.co/npm-dl/string_decoder.png?&months=6&height=3)](https://nodei.co/npm/string_decoder/) + + +```bash +npm install --save string_decoder +``` + +***Node-core string_decoder for userland*** + +This package is a mirror of the string_decoder implementation in Node-core. + +Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v8.9.4/docs/api/). + +As of version 1.0.0 **string_decoder** uses semantic versioning. + +## Previous versions + +Previous version numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. + +## Update + +The *build/* directory contains a build script that will scrape the source from the [nodejs/node](https://github.com/nodejs/node) repo given a specific Node version. + +## Streams Working Group + +`string_decoder` is maintained by the Streams Working Group, which +oversees the development and maintenance of the Streams API within +Node.js. The responsibilities of the Streams Working Group include: + +* Addressing stream issues on the Node.js issue tracker. +* Authoring and editing stream documentation within the Node.js project. +* Reviewing changes to stream subclasses within the Node.js project. +* Redirecting changes to streams from the Node.js project to this + project. +* Assisting in the implementation of stream providers within Node.js. +* Recommending versions of `readable-stream` to be included in Node.js. +* Messaging about the future of streams to give the community advance + notice of changes. + +See [readable-stream](https://github.com/nodejs/readable-stream) for +more details. diff --git a/node_backend/node_modules/string_decoder/lib/string_decoder.js b/node_backend/node_modules/string_decoder/lib/string_decoder.js new file mode 100644 index 00000000..2e89e63f --- /dev/null +++ b/node_backend/node_modules/string_decoder/lib/string_decoder.js @@ -0,0 +1,296 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +/**/ + +var Buffer = require('safe-buffer').Buffer; +/**/ + +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; + +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } +}; + +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +exports.StringDecoder = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer.allocUnsafe(nb); +} + +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder.prototype.end = utf8End; + +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; + +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. If an invalid byte is detected, -2 is returned. +function utf8CheckByte(byte) { + if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; + return byte >> 6 === 0x02 ? -1 : -2; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; +} + +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'; + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'; + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'; + } + } + } +} + +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} + +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} + +// For UTF-8, a replacement character is added when ending on a partial +// character. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'; + return r; +} + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); +} + +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; +} + +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); +} + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} \ No newline at end of file diff --git a/Inscripciones_UAIE/node_backend/node_modules/string_decoder/package.json b/node_backend/node_modules/string_decoder/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/string_decoder/package.json rename to node_backend/node_modules/string_decoder/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/strip-ansi/index.d.ts b/node_backend/node_modules/strip-ansi/index.d.ts similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/strip-ansi/index.d.ts rename to node_backend/node_modules/strip-ansi/index.d.ts diff --git a/Inscripciones_UAIE/node_backend/node_modules/strip-ansi/index.js b/node_backend/node_modules/strip-ansi/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/strip-ansi/index.js rename to node_backend/node_modules/strip-ansi/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/strip-ansi/license b/node_backend/node_modules/strip-ansi/license similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/strip-ansi/license rename to node_backend/node_modules/strip-ansi/license diff --git a/Inscripciones_UAIE/node_backend/node_modules/strip-ansi/package.json b/node_backend/node_modules/strip-ansi/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/strip-ansi/package.json rename to node_backend/node_modules/strip-ansi/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/strip-ansi/readme.md b/node_backend/node_modules/strip-ansi/readme.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/strip-ansi/readme.md rename to node_backend/node_modules/strip-ansi/readme.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/LICENSE b/node_backend/node_modules/tar/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/LICENSE rename to node_backend/node_modules/tar/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/README.md b/node_backend/node_modules/tar/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/README.md rename to node_backend/node_modules/tar/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/index.js b/node_backend/node_modules/tar/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/index.js rename to node_backend/node_modules/tar/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/create.js b/node_backend/node_modules/tar/lib/create.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/create.js rename to node_backend/node_modules/tar/lib/create.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/extract.js b/node_backend/node_modules/tar/lib/extract.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/extract.js rename to node_backend/node_modules/tar/lib/extract.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/get-write-flag.js b/node_backend/node_modules/tar/lib/get-write-flag.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/get-write-flag.js rename to node_backend/node_modules/tar/lib/get-write-flag.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/header.js b/node_backend/node_modules/tar/lib/header.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/header.js rename to node_backend/node_modules/tar/lib/header.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/high-level-opt.js b/node_backend/node_modules/tar/lib/high-level-opt.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/high-level-opt.js rename to node_backend/node_modules/tar/lib/high-level-opt.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/large-numbers.js b/node_backend/node_modules/tar/lib/large-numbers.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/large-numbers.js rename to node_backend/node_modules/tar/lib/large-numbers.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/list.js b/node_backend/node_modules/tar/lib/list.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/list.js rename to node_backend/node_modules/tar/lib/list.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/mkdir.js b/node_backend/node_modules/tar/lib/mkdir.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/mkdir.js rename to node_backend/node_modules/tar/lib/mkdir.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/mode-fix.js b/node_backend/node_modules/tar/lib/mode-fix.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/mode-fix.js rename to node_backend/node_modules/tar/lib/mode-fix.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/normalize-unicode.js b/node_backend/node_modules/tar/lib/normalize-unicode.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/normalize-unicode.js rename to node_backend/node_modules/tar/lib/normalize-unicode.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/normalize-windows-path.js b/node_backend/node_modules/tar/lib/normalize-windows-path.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/normalize-windows-path.js rename to node_backend/node_modules/tar/lib/normalize-windows-path.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/pack.js b/node_backend/node_modules/tar/lib/pack.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/pack.js rename to node_backend/node_modules/tar/lib/pack.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/parse.js b/node_backend/node_modules/tar/lib/parse.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/parse.js rename to node_backend/node_modules/tar/lib/parse.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/path-reservations.js b/node_backend/node_modules/tar/lib/path-reservations.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/path-reservations.js rename to node_backend/node_modules/tar/lib/path-reservations.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/pax.js b/node_backend/node_modules/tar/lib/pax.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/pax.js rename to node_backend/node_modules/tar/lib/pax.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/read-entry.js b/node_backend/node_modules/tar/lib/read-entry.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/read-entry.js rename to node_backend/node_modules/tar/lib/read-entry.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/replace.js b/node_backend/node_modules/tar/lib/replace.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/replace.js rename to node_backend/node_modules/tar/lib/replace.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/strip-absolute-path.js b/node_backend/node_modules/tar/lib/strip-absolute-path.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/strip-absolute-path.js rename to node_backend/node_modules/tar/lib/strip-absolute-path.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/strip-trailing-slashes.js b/node_backend/node_modules/tar/lib/strip-trailing-slashes.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/strip-trailing-slashes.js rename to node_backend/node_modules/tar/lib/strip-trailing-slashes.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/types.js b/node_backend/node_modules/tar/lib/types.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/types.js rename to node_backend/node_modules/tar/lib/types.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/unpack.js b/node_backend/node_modules/tar/lib/unpack.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/unpack.js rename to node_backend/node_modules/tar/lib/unpack.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/update.js b/node_backend/node_modules/tar/lib/update.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/update.js rename to node_backend/node_modules/tar/lib/update.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/warn-mixin.js b/node_backend/node_modules/tar/lib/warn-mixin.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/warn-mixin.js rename to node_backend/node_modules/tar/lib/warn-mixin.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/winchars.js b/node_backend/node_modules/tar/lib/winchars.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/winchars.js rename to node_backend/node_modules/tar/lib/winchars.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/lib/write-entry.js b/node_backend/node_modules/tar/lib/write-entry.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/lib/write-entry.js rename to node_backend/node_modules/tar/lib/write-entry.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tar/package.json b/node_backend/node_modules/tar/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tar/package.json rename to node_backend/node_modules/tar/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/toidentifier/HISTORY.md b/node_backend/node_modules/toidentifier/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/toidentifier/HISTORY.md rename to node_backend/node_modules/toidentifier/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/toidentifier/LICENSE b/node_backend/node_modules/toidentifier/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/toidentifier/LICENSE rename to node_backend/node_modules/toidentifier/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/toidentifier/README.md b/node_backend/node_modules/toidentifier/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/toidentifier/README.md rename to node_backend/node_modules/toidentifier/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/toidentifier/index.js b/node_backend/node_modules/toidentifier/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/toidentifier/index.js rename to node_backend/node_modules/toidentifier/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/toidentifier/package.json b/node_backend/node_modules/toidentifier/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/toidentifier/package.json rename to node_backend/node_modules/toidentifier/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/tr46/LICENSE.md b/node_backend/node_modules/tr46/LICENSE.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tr46/LICENSE.md rename to node_backend/node_modules/tr46/LICENSE.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/tr46/README.md b/node_backend/node_modules/tr46/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tr46/README.md rename to node_backend/node_modules/tr46/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/tr46/index.js b/node_backend/node_modules/tr46/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tr46/index.js rename to node_backend/node_modules/tr46/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tr46/lib/mappingTable.json b/node_backend/node_modules/tr46/lib/mappingTable.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tr46/lib/mappingTable.json rename to node_backend/node_modules/tr46/lib/mappingTable.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/tr46/lib/regexes.js b/node_backend/node_modules/tr46/lib/regexes.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tr46/lib/regexes.js rename to node_backend/node_modules/tr46/lib/regexes.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tr46/lib/statusMapping.js b/node_backend/node_modules/tr46/lib/statusMapping.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tr46/lib/statusMapping.js rename to node_backend/node_modules/tr46/lib/statusMapping.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/tr46/package.json b/node_backend/node_modules/tr46/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/tr46/package.json rename to node_backend/node_modules/tr46/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/type-is/HISTORY.md b/node_backend/node_modules/type-is/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/type-is/HISTORY.md rename to node_backend/node_modules/type-is/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/type-is/LICENSE b/node_backend/node_modules/type-is/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/type-is/LICENSE rename to node_backend/node_modules/type-is/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/type-is/README.md b/node_backend/node_modules/type-is/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/type-is/README.md rename to node_backend/node_modules/type-is/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/type-is/index.js b/node_backend/node_modules/type-is/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/type-is/index.js rename to node_backend/node_modules/type-is/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/type-is/package.json b/node_backend/node_modules/type-is/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/type-is/package.json rename to node_backend/node_modules/type-is/package.json diff --git a/node_backend/node_modules/typedarray/.travis.yml b/node_backend/node_modules/typedarray/.travis.yml new file mode 100644 index 00000000..cc4dba29 --- /dev/null +++ b/node_backend/node_modules/typedarray/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - "0.8" + - "0.10" diff --git a/node_backend/node_modules/typedarray/LICENSE b/node_backend/node_modules/typedarray/LICENSE new file mode 100644 index 00000000..11adfaec --- /dev/null +++ b/node_backend/node_modules/typedarray/LICENSE @@ -0,0 +1,35 @@ +/* + Copyright (c) 2010, Linden Research, Inc. + Copyright (c) 2012, Joshua Bell + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + $/LicenseInfo$ + */ + +// Original can be found at: +// https://bitbucket.org/lindenlab/llsd +// Modifications by Joshua Bell inexorabletash@gmail.com +// https://github.com/inexorabletash/polyfill + +// ES3/ES5 implementation of the Krhonos Typed Array Specification +// Ref: http://www.khronos.org/registry/typedarray/specs/latest/ +// Date: 2011-02-01 +// +// Variations: +// * Allows typed_array.get/set() as alias for subscripts (typed_array[]) diff --git a/node_backend/node_modules/typedarray/example/tarray.js b/node_backend/node_modules/typedarray/example/tarray.js new file mode 100644 index 00000000..8423d7c9 --- /dev/null +++ b/node_backend/node_modules/typedarray/example/tarray.js @@ -0,0 +1,4 @@ +var Uint8Array = require('../').Uint8Array; +var ua = new Uint8Array(5); +ua[1] = 256 + 55; +console.log(ua[1]); diff --git a/node_backend/node_modules/typedarray/index.js b/node_backend/node_modules/typedarray/index.js new file mode 100644 index 00000000..5e540841 --- /dev/null +++ b/node_backend/node_modules/typedarray/index.js @@ -0,0 +1,630 @@ +var undefined = (void 0); // Paranoia + +// Beyond this value, index getters/setters (i.e. array[0], array[1]) are so slow to +// create, and consume so much memory, that the browser appears frozen. +var MAX_ARRAY_LENGTH = 1e5; + +// Approximations of internal ECMAScript conversion functions +var ECMAScript = (function() { + // Stash a copy in case other scripts modify these + var opts = Object.prototype.toString, + ophop = Object.prototype.hasOwnProperty; + + return { + // Class returns internal [[Class]] property, used to avoid cross-frame instanceof issues: + Class: function(v) { return opts.call(v).replace(/^\[object *|\]$/g, ''); }, + HasProperty: function(o, p) { return p in o; }, + HasOwnProperty: function(o, p) { return ophop.call(o, p); }, + IsCallable: function(o) { return typeof o === 'function'; }, + ToInt32: function(v) { return v >> 0; }, + ToUint32: function(v) { return v >>> 0; } + }; +}()); + +// Snapshot intrinsics +var LN2 = Math.LN2, + abs = Math.abs, + floor = Math.floor, + log = Math.log, + min = Math.min, + pow = Math.pow, + round = Math.round; + +// ES5: lock down object properties +function configureProperties(obj) { + if (getOwnPropNames && defineProp) { + var props = getOwnPropNames(obj), i; + for (i = 0; i < props.length; i += 1) { + defineProp(obj, props[i], { + value: obj[props[i]], + writable: false, + enumerable: false, + configurable: false + }); + } + } +} + +// emulate ES5 getter/setter API using legacy APIs +// http://blogs.msdn.com/b/ie/archive/2010/09/07/transitioning-existing-code-to-the-es5-getter-setter-apis.aspx +// (second clause tests for Object.defineProperty() in IE<9 that only supports extending DOM prototypes, but +// note that IE<9 does not support __defineGetter__ or __defineSetter__ so it just renders the method harmless) +var defineProp +if (Object.defineProperty && (function() { + try { + Object.defineProperty({}, 'x', {}); + return true; + } catch (e) { + return false; + } + })()) { + defineProp = Object.defineProperty; +} else { + defineProp = function(o, p, desc) { + if (!o === Object(o)) throw new TypeError("Object.defineProperty called on non-object"); + if (ECMAScript.HasProperty(desc, 'get') && Object.prototype.__defineGetter__) { Object.prototype.__defineGetter__.call(o, p, desc.get); } + if (ECMAScript.HasProperty(desc, 'set') && Object.prototype.__defineSetter__) { Object.prototype.__defineSetter__.call(o, p, desc.set); } + if (ECMAScript.HasProperty(desc, 'value')) { o[p] = desc.value; } + return o; + }; +} + +var getOwnPropNames = Object.getOwnPropertyNames || function (o) { + if (o !== Object(o)) throw new TypeError("Object.getOwnPropertyNames called on non-object"); + var props = [], p; + for (p in o) { + if (ECMAScript.HasOwnProperty(o, p)) { + props.push(p); + } + } + return props; +}; + +// ES5: Make obj[index] an alias for obj._getter(index)/obj._setter(index, value) +// for index in 0 ... obj.length +function makeArrayAccessors(obj) { + if (!defineProp) { return; } + + if (obj.length > MAX_ARRAY_LENGTH) throw new RangeError("Array too large for polyfill"); + + function makeArrayAccessor(index) { + defineProp(obj, index, { + 'get': function() { return obj._getter(index); }, + 'set': function(v) { obj._setter(index, v); }, + enumerable: true, + configurable: false + }); + } + + var i; + for (i = 0; i < obj.length; i += 1) { + makeArrayAccessor(i); + } +} + +// Internal conversion functions: +// pack() - take a number (interpreted as Type), output a byte array +// unpack() - take a byte array, output a Type-like number + +function as_signed(value, bits) { var s = 32 - bits; return (value << s) >> s; } +function as_unsigned(value, bits) { var s = 32 - bits; return (value << s) >>> s; } + +function packI8(n) { return [n & 0xff]; } +function unpackI8(bytes) { return as_signed(bytes[0], 8); } + +function packU8(n) { return [n & 0xff]; } +function unpackU8(bytes) { return as_unsigned(bytes[0], 8); } + +function packU8Clamped(n) { n = round(Number(n)); return [n < 0 ? 0 : n > 0xff ? 0xff : n & 0xff]; } + +function packI16(n) { return [(n >> 8) & 0xff, n & 0xff]; } +function unpackI16(bytes) { return as_signed(bytes[0] << 8 | bytes[1], 16); } + +function packU16(n) { return [(n >> 8) & 0xff, n & 0xff]; } +function unpackU16(bytes) { return as_unsigned(bytes[0] << 8 | bytes[1], 16); } + +function packI32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; } +function unpackI32(bytes) { return as_signed(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); } + +function packU32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; } +function unpackU32(bytes) { return as_unsigned(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); } + +function packIEEE754(v, ebits, fbits) { + + var bias = (1 << (ebits - 1)) - 1, + s, e, f, ln, + i, bits, str, bytes; + + function roundToEven(n) { + var w = floor(n), f = n - w; + if (f < 0.5) + return w; + if (f > 0.5) + return w + 1; + return w % 2 ? w + 1 : w; + } + + // Compute sign, exponent, fraction + if (v !== v) { + // NaN + // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping + e = (1 << ebits) - 1; f = pow(2, fbits - 1); s = 0; + } else if (v === Infinity || v === -Infinity) { + e = (1 << ebits) - 1; f = 0; s = (v < 0) ? 1 : 0; + } else if (v === 0) { + e = 0; f = 0; s = (1 / v === -Infinity) ? 1 : 0; + } else { + s = v < 0; + v = abs(v); + + if (v >= pow(2, 1 - bias)) { + e = min(floor(log(v) / LN2), 1023); + f = roundToEven(v / pow(2, e) * pow(2, fbits)); + if (f / pow(2, fbits) >= 2) { + e = e + 1; + f = 1; + } + if (e > bias) { + // Overflow + e = (1 << ebits) - 1; + f = 0; + } else { + // Normalized + e = e + bias; + f = f - pow(2, fbits); + } + } else { + // Denormalized + e = 0; + f = roundToEven(v / pow(2, 1 - bias - fbits)); + } + } + + // Pack sign, exponent, fraction + bits = []; + for (i = fbits; i; i -= 1) { bits.push(f % 2 ? 1 : 0); f = floor(f / 2); } + for (i = ebits; i; i -= 1) { bits.push(e % 2 ? 1 : 0); e = floor(e / 2); } + bits.push(s ? 1 : 0); + bits.reverse(); + str = bits.join(''); + + // Bits to bytes + bytes = []; + while (str.length) { + bytes.push(parseInt(str.substring(0, 8), 2)); + str = str.substring(8); + } + return bytes; +} + +function unpackIEEE754(bytes, ebits, fbits) { + + // Bytes to bits + var bits = [], i, j, b, str, + bias, s, e, f; + + for (i = bytes.length; i; i -= 1) { + b = bytes[i - 1]; + for (j = 8; j; j -= 1) { + bits.push(b % 2 ? 1 : 0); b = b >> 1; + } + } + bits.reverse(); + str = bits.join(''); + + // Unpack sign, exponent, fraction + bias = (1 << (ebits - 1)) - 1; + s = parseInt(str.substring(0, 1), 2) ? -1 : 1; + e = parseInt(str.substring(1, 1 + ebits), 2); + f = parseInt(str.substring(1 + ebits), 2); + + // Produce number + if (e === (1 << ebits) - 1) { + return f !== 0 ? NaN : s * Infinity; + } else if (e > 0) { + // Normalized + return s * pow(2, e - bias) * (1 + f / pow(2, fbits)); + } else if (f !== 0) { + // Denormalized + return s * pow(2, -(bias - 1)) * (f / pow(2, fbits)); + } else { + return s < 0 ? -0 : 0; + } +} + +function unpackF64(b) { return unpackIEEE754(b, 11, 52); } +function packF64(v) { return packIEEE754(v, 11, 52); } +function unpackF32(b) { return unpackIEEE754(b, 8, 23); } +function packF32(v) { return packIEEE754(v, 8, 23); } + + +// +// 3 The ArrayBuffer Type +// + +(function() { + + /** @constructor */ + var ArrayBuffer = function ArrayBuffer(length) { + length = ECMAScript.ToInt32(length); + if (length < 0) throw new RangeError('ArrayBuffer size is not a small enough positive integer'); + + this.byteLength = length; + this._bytes = []; + this._bytes.length = length; + + var i; + for (i = 0; i < this.byteLength; i += 1) { + this._bytes[i] = 0; + } + + configureProperties(this); + }; + + exports.ArrayBuffer = exports.ArrayBuffer || ArrayBuffer; + + // + // 4 The ArrayBufferView Type + // + + // NOTE: this constructor is not exported + /** @constructor */ + var ArrayBufferView = function ArrayBufferView() { + //this.buffer = null; + //this.byteOffset = 0; + //this.byteLength = 0; + }; + + // + // 5 The Typed Array View Types + // + + function makeConstructor(bytesPerElement, pack, unpack) { + // Each TypedArray type requires a distinct constructor instance with + // identical logic, which this produces. + + var ctor; + ctor = function(buffer, byteOffset, length) { + var array, sequence, i, s; + + if (!arguments.length || typeof arguments[0] === 'number') { + // Constructor(unsigned long length) + this.length = ECMAScript.ToInt32(arguments[0]); + if (length < 0) throw new RangeError('ArrayBufferView size is not a small enough positive integer'); + + this.byteLength = this.length * this.BYTES_PER_ELEMENT; + this.buffer = new ArrayBuffer(this.byteLength); + this.byteOffset = 0; + } else if (typeof arguments[0] === 'object' && arguments[0].constructor === ctor) { + // Constructor(TypedArray array) + array = arguments[0]; + + this.length = array.length; + this.byteLength = this.length * this.BYTES_PER_ELEMENT; + this.buffer = new ArrayBuffer(this.byteLength); + this.byteOffset = 0; + + for (i = 0; i < this.length; i += 1) { + this._setter(i, array._getter(i)); + } + } else if (typeof arguments[0] === 'object' && + !(arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) { + // Constructor(sequence array) + sequence = arguments[0]; + + this.length = ECMAScript.ToUint32(sequence.length); + this.byteLength = this.length * this.BYTES_PER_ELEMENT; + this.buffer = new ArrayBuffer(this.byteLength); + this.byteOffset = 0; + + for (i = 0; i < this.length; i += 1) { + s = sequence[i]; + this._setter(i, Number(s)); + } + } else if (typeof arguments[0] === 'object' && + (arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) { + // Constructor(ArrayBuffer buffer, + // optional unsigned long byteOffset, optional unsigned long length) + this.buffer = buffer; + + this.byteOffset = ECMAScript.ToUint32(byteOffset); + if (this.byteOffset > this.buffer.byteLength) { + throw new RangeError("byteOffset out of range"); + } + + if (this.byteOffset % this.BYTES_PER_ELEMENT) { + // The given byteOffset must be a multiple of the element + // size of the specific type, otherwise an exception is raised. + throw new RangeError("ArrayBuffer length minus the byteOffset is not a multiple of the element size."); + } + + if (arguments.length < 3) { + this.byteLength = this.buffer.byteLength - this.byteOffset; + + if (this.byteLength % this.BYTES_PER_ELEMENT) { + throw new RangeError("length of buffer minus byteOffset not a multiple of the element size"); + } + this.length = this.byteLength / this.BYTES_PER_ELEMENT; + } else { + this.length = ECMAScript.ToUint32(length); + this.byteLength = this.length * this.BYTES_PER_ELEMENT; + } + + if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) { + throw new RangeError("byteOffset and length reference an area beyond the end of the buffer"); + } + } else { + throw new TypeError("Unexpected argument type(s)"); + } + + this.constructor = ctor; + + configureProperties(this); + makeArrayAccessors(this); + }; + + ctor.prototype = new ArrayBufferView(); + ctor.prototype.BYTES_PER_ELEMENT = bytesPerElement; + ctor.prototype._pack = pack; + ctor.prototype._unpack = unpack; + ctor.BYTES_PER_ELEMENT = bytesPerElement; + + // getter type (unsigned long index); + ctor.prototype._getter = function(index) { + if (arguments.length < 1) throw new SyntaxError("Not enough arguments"); + + index = ECMAScript.ToUint32(index); + if (index >= this.length) { + return undefined; + } + + var bytes = [], i, o; + for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; + i < this.BYTES_PER_ELEMENT; + i += 1, o += 1) { + bytes.push(this.buffer._bytes[o]); + } + return this._unpack(bytes); + }; + + // NONSTANDARD: convenience alias for getter: type get(unsigned long index); + ctor.prototype.get = ctor.prototype._getter; + + // setter void (unsigned long index, type value); + ctor.prototype._setter = function(index, value) { + if (arguments.length < 2) throw new SyntaxError("Not enough arguments"); + + index = ECMAScript.ToUint32(index); + if (index >= this.length) { + return undefined; + } + + var bytes = this._pack(value), i, o; + for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; + i < this.BYTES_PER_ELEMENT; + i += 1, o += 1) { + this.buffer._bytes[o] = bytes[i]; + } + }; + + // void set(TypedArray array, optional unsigned long offset); + // void set(sequence array, optional unsigned long offset); + ctor.prototype.set = function(index, value) { + if (arguments.length < 1) throw new SyntaxError("Not enough arguments"); + var array, sequence, offset, len, + i, s, d, + byteOffset, byteLength, tmp; + + if (typeof arguments[0] === 'object' && arguments[0].constructor === this.constructor) { + // void set(TypedArray array, optional unsigned long offset); + array = arguments[0]; + offset = ECMAScript.ToUint32(arguments[1]); + + if (offset + array.length > this.length) { + throw new RangeError("Offset plus length of array is out of range"); + } + + byteOffset = this.byteOffset + offset * this.BYTES_PER_ELEMENT; + byteLength = array.length * this.BYTES_PER_ELEMENT; + + if (array.buffer === this.buffer) { + tmp = []; + for (i = 0, s = array.byteOffset; i < byteLength; i += 1, s += 1) { + tmp[i] = array.buffer._bytes[s]; + } + for (i = 0, d = byteOffset; i < byteLength; i += 1, d += 1) { + this.buffer._bytes[d] = tmp[i]; + } + } else { + for (i = 0, s = array.byteOffset, d = byteOffset; + i < byteLength; i += 1, s += 1, d += 1) { + this.buffer._bytes[d] = array.buffer._bytes[s]; + } + } + } else if (typeof arguments[0] === 'object' && typeof arguments[0].length !== 'undefined') { + // void set(sequence array, optional unsigned long offset); + sequence = arguments[0]; + len = ECMAScript.ToUint32(sequence.length); + offset = ECMAScript.ToUint32(arguments[1]); + + if (offset + len > this.length) { + throw new RangeError("Offset plus length of array is out of range"); + } + + for (i = 0; i < len; i += 1) { + s = sequence[i]; + this._setter(offset + i, Number(s)); + } + } else { + throw new TypeError("Unexpected argument type(s)"); + } + }; + + // TypedArray subarray(long begin, optional long end); + ctor.prototype.subarray = function(start, end) { + function clamp(v, min, max) { return v < min ? min : v > max ? max : v; } + + start = ECMAScript.ToInt32(start); + end = ECMAScript.ToInt32(end); + + if (arguments.length < 1) { start = 0; } + if (arguments.length < 2) { end = this.length; } + + if (start < 0) { start = this.length + start; } + if (end < 0) { end = this.length + end; } + + start = clamp(start, 0, this.length); + end = clamp(end, 0, this.length); + + var len = end - start; + if (len < 0) { + len = 0; + } + + return new this.constructor( + this.buffer, this.byteOffset + start * this.BYTES_PER_ELEMENT, len); + }; + + return ctor; + } + + var Int8Array = makeConstructor(1, packI8, unpackI8); + var Uint8Array = makeConstructor(1, packU8, unpackU8); + var Uint8ClampedArray = makeConstructor(1, packU8Clamped, unpackU8); + var Int16Array = makeConstructor(2, packI16, unpackI16); + var Uint16Array = makeConstructor(2, packU16, unpackU16); + var Int32Array = makeConstructor(4, packI32, unpackI32); + var Uint32Array = makeConstructor(4, packU32, unpackU32); + var Float32Array = makeConstructor(4, packF32, unpackF32); + var Float64Array = makeConstructor(8, packF64, unpackF64); + + exports.Int8Array = exports.Int8Array || Int8Array; + exports.Uint8Array = exports.Uint8Array || Uint8Array; + exports.Uint8ClampedArray = exports.Uint8ClampedArray || Uint8ClampedArray; + exports.Int16Array = exports.Int16Array || Int16Array; + exports.Uint16Array = exports.Uint16Array || Uint16Array; + exports.Int32Array = exports.Int32Array || Int32Array; + exports.Uint32Array = exports.Uint32Array || Uint32Array; + exports.Float32Array = exports.Float32Array || Float32Array; + exports.Float64Array = exports.Float64Array || Float64Array; +}()); + +// +// 6 The DataView View Type +// + +(function() { + function r(array, index) { + return ECMAScript.IsCallable(array.get) ? array.get(index) : array[index]; + } + + var IS_BIG_ENDIAN = (function() { + var u16array = new(exports.Uint16Array)([0x1234]), + u8array = new(exports.Uint8Array)(u16array.buffer); + return r(u8array, 0) === 0x12; + }()); + + // Constructor(ArrayBuffer buffer, + // optional unsigned long byteOffset, + // optional unsigned long byteLength) + /** @constructor */ + var DataView = function DataView(buffer, byteOffset, byteLength) { + if (arguments.length === 0) { + buffer = new exports.ArrayBuffer(0); + } else if (!(buffer instanceof exports.ArrayBuffer || ECMAScript.Class(buffer) === 'ArrayBuffer')) { + throw new TypeError("TypeError"); + } + + this.buffer = buffer || new exports.ArrayBuffer(0); + + this.byteOffset = ECMAScript.ToUint32(byteOffset); + if (this.byteOffset > this.buffer.byteLength) { + throw new RangeError("byteOffset out of range"); + } + + if (arguments.length < 3) { + this.byteLength = this.buffer.byteLength - this.byteOffset; + } else { + this.byteLength = ECMAScript.ToUint32(byteLength); + } + + if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) { + throw new RangeError("byteOffset and length reference an area beyond the end of the buffer"); + } + + configureProperties(this); + }; + + function makeGetter(arrayType) { + return function(byteOffset, littleEndian) { + + byteOffset = ECMAScript.ToUint32(byteOffset); + + if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) { + throw new RangeError("Array index out of range"); + } + byteOffset += this.byteOffset; + + var uint8Array = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT), + bytes = [], i; + for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) { + bytes.push(r(uint8Array, i)); + } + + if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) { + bytes.reverse(); + } + + return r(new arrayType(new exports.Uint8Array(bytes).buffer), 0); + }; + } + + DataView.prototype.getUint8 = makeGetter(exports.Uint8Array); + DataView.prototype.getInt8 = makeGetter(exports.Int8Array); + DataView.prototype.getUint16 = makeGetter(exports.Uint16Array); + DataView.prototype.getInt16 = makeGetter(exports.Int16Array); + DataView.prototype.getUint32 = makeGetter(exports.Uint32Array); + DataView.prototype.getInt32 = makeGetter(exports.Int32Array); + DataView.prototype.getFloat32 = makeGetter(exports.Float32Array); + DataView.prototype.getFloat64 = makeGetter(exports.Float64Array); + + function makeSetter(arrayType) { + return function(byteOffset, value, littleEndian) { + + byteOffset = ECMAScript.ToUint32(byteOffset); + if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) { + throw new RangeError("Array index out of range"); + } + + // Get bytes + var typeArray = new arrayType([value]), + byteArray = new exports.Uint8Array(typeArray.buffer), + bytes = [], i, byteView; + + for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) { + bytes.push(r(byteArray, i)); + } + + // Flip if necessary + if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) { + bytes.reverse(); + } + + // Write them + byteView = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT); + byteView.set(bytes); + }; + } + + DataView.prototype.setUint8 = makeSetter(exports.Uint8Array); + DataView.prototype.setInt8 = makeSetter(exports.Int8Array); + DataView.prototype.setUint16 = makeSetter(exports.Uint16Array); + DataView.prototype.setInt16 = makeSetter(exports.Int16Array); + DataView.prototype.setUint32 = makeSetter(exports.Uint32Array); + DataView.prototype.setInt32 = makeSetter(exports.Int32Array); + DataView.prototype.setFloat32 = makeSetter(exports.Float32Array); + DataView.prototype.setFloat64 = makeSetter(exports.Float64Array); + + exports.DataView = exports.DataView || DataView; + +}()); diff --git a/node_backend/node_modules/typedarray/package.json b/node_backend/node_modules/typedarray/package.json new file mode 100644 index 00000000..a7854a0f --- /dev/null +++ b/node_backend/node_modules/typedarray/package.json @@ -0,0 +1,55 @@ +{ + "name": "typedarray", + "version": "0.0.6", + "description": "TypedArray polyfill for old browsers", + "main": "index.js", + "devDependencies": { + "tape": "~2.3.2" + }, + "scripts": { + "test": "tape test/*.js test/server/*.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/substack/typedarray.git" + }, + "homepage": "https://github.com/substack/typedarray", + "keywords": [ + "ArrayBuffer", + "DataView", + "Float32Array", + "Float64Array", + "Int8Array", + "Int16Array", + "Int32Array", + "Uint8Array", + "Uint8ClampedArray", + "Uint16Array", + "Uint32Array", + "typed", + "array", + "polyfill" + ], + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "license": "MIT", + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/6..latest", + "firefox/16..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + } +} diff --git a/node_backend/node_modules/typedarray/readme.markdown b/node_backend/node_modules/typedarray/readme.markdown new file mode 100644 index 00000000..d18f6f71 --- /dev/null +++ b/node_backend/node_modules/typedarray/readme.markdown @@ -0,0 +1,61 @@ +# typedarray + +TypedArray polyfill ripped from [this +module](https://raw.github.com/inexorabletash/polyfill). + +[![build status](https://secure.travis-ci.org/substack/typedarray.png)](http://travis-ci.org/substack/typedarray) + +[![testling badge](https://ci.testling.com/substack/typedarray.png)](https://ci.testling.com/substack/typedarray) + +# example + +``` js +var Uint8Array = require('typedarray').Uint8Array; +var ua = new Uint8Array(5); +ua[1] = 256 + 55; +console.log(ua[1]); +``` + +output: + +``` +55 +``` + +# methods + +``` js +var TA = require('typedarray') +``` + +The `TA` object has the following constructors: + +* TA.ArrayBuffer +* TA.DataView +* TA.Float32Array +* TA.Float64Array +* TA.Int8Array +* TA.Int16Array +* TA.Int32Array +* TA.Uint8Array +* TA.Uint8ClampedArray +* TA.Uint16Array +* TA.Uint32Array + +# install + +With [npm](https://npmjs.org) do: + +``` +npm install typedarray +``` + +To use this module in the browser, compile with +[browserify](http://browserify.org) +or download a UMD build from browserify CDN: + +http://wzrd.in/standalone/typedarray@latest + +# license + +MIT diff --git a/node_backend/node_modules/typedarray/test/server/undef_globals.js b/node_backend/node_modules/typedarray/test/server/undef_globals.js new file mode 100644 index 00000000..425950f9 --- /dev/null +++ b/node_backend/node_modules/typedarray/test/server/undef_globals.js @@ -0,0 +1,19 @@ +var test = require('tape'); +var vm = require('vm'); +var fs = require('fs'); +var src = fs.readFileSync(__dirname + '/../../index.js', 'utf8'); + +test('u8a without globals', function (t) { + var c = { + module: { exports: {} }, + }; + c.exports = c.module.exports; + vm.runInNewContext(src, c); + var TA = c.module.exports; + var ua = new(TA.Uint8Array)(5); + + t.equal(ua.length, 5); + ua[1] = 256 + 55; + t.equal(ua[1], 55); + t.end(); +}); diff --git a/node_backend/node_modules/typedarray/test/tarray.js b/node_backend/node_modules/typedarray/test/tarray.js new file mode 100644 index 00000000..df596a34 --- /dev/null +++ b/node_backend/node_modules/typedarray/test/tarray.js @@ -0,0 +1,10 @@ +var TA = require('../'); +var test = require('tape'); + +test('tiny u8a test', function (t) { + var ua = new(TA.Uint8Array)(5); + t.equal(ua.length, 5); + ua[1] = 256 + 55; + t.equal(ua[1], 55); + t.end(); +}); diff --git a/Inscripciones_UAIE/node_backend/node_modules/unpipe/HISTORY.md b/node_backend/node_modules/unpipe/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/unpipe/HISTORY.md rename to node_backend/node_modules/unpipe/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/unpipe/LICENSE b/node_backend/node_modules/unpipe/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/unpipe/LICENSE rename to node_backend/node_modules/unpipe/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/unpipe/README.md b/node_backend/node_modules/unpipe/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/unpipe/README.md rename to node_backend/node_modules/unpipe/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/unpipe/index.js b/node_backend/node_modules/unpipe/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/unpipe/index.js rename to node_backend/node_modules/unpipe/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/unpipe/package.json b/node_backend/node_modules/unpipe/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/unpipe/package.json rename to node_backend/node_modules/unpipe/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/util-deprecate/History.md b/node_backend/node_modules/util-deprecate/History.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/util-deprecate/History.md rename to node_backend/node_modules/util-deprecate/History.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/util-deprecate/LICENSE b/node_backend/node_modules/util-deprecate/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/util-deprecate/LICENSE rename to node_backend/node_modules/util-deprecate/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/util-deprecate/README.md b/node_backend/node_modules/util-deprecate/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/util-deprecate/README.md rename to node_backend/node_modules/util-deprecate/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/util-deprecate/browser.js b/node_backend/node_modules/util-deprecate/browser.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/util-deprecate/browser.js rename to node_backend/node_modules/util-deprecate/browser.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/util-deprecate/node.js b/node_backend/node_modules/util-deprecate/node.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/util-deprecate/node.js rename to node_backend/node_modules/util-deprecate/node.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/util-deprecate/package.json b/node_backend/node_modules/util-deprecate/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/util-deprecate/package.json rename to node_backend/node_modules/util-deprecate/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/utils-merge/.npmignore b/node_backend/node_modules/utils-merge/.npmignore similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/utils-merge/.npmignore rename to node_backend/node_modules/utils-merge/.npmignore diff --git a/Inscripciones_UAIE/node_backend/node_modules/utils-merge/LICENSE b/node_backend/node_modules/utils-merge/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/utils-merge/LICENSE rename to node_backend/node_modules/utils-merge/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/utils-merge/README.md b/node_backend/node_modules/utils-merge/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/utils-merge/README.md rename to node_backend/node_modules/utils-merge/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/utils-merge/index.js b/node_backend/node_modules/utils-merge/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/utils-merge/index.js rename to node_backend/node_modules/utils-merge/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/utils-merge/package.json b/node_backend/node_modules/utils-merge/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/utils-merge/package.json rename to node_backend/node_modules/utils-merge/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/vary/HISTORY.md b/node_backend/node_modules/vary/HISTORY.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/vary/HISTORY.md rename to node_backend/node_modules/vary/HISTORY.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/vary/LICENSE b/node_backend/node_modules/vary/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/vary/LICENSE rename to node_backend/node_modules/vary/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/vary/README.md b/node_backend/node_modules/vary/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/vary/README.md rename to node_backend/node_modules/vary/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/vary/index.js b/node_backend/node_modules/vary/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/vary/index.js rename to node_backend/node_modules/vary/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/vary/package.json b/node_backend/node_modules/vary/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/vary/package.json rename to node_backend/node_modules/vary/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/webidl-conversions/LICENSE.md b/node_backend/node_modules/webidl-conversions/LICENSE.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/webidl-conversions/LICENSE.md rename to node_backend/node_modules/webidl-conversions/LICENSE.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/webidl-conversions/README.md b/node_backend/node_modules/webidl-conversions/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/webidl-conversions/README.md rename to node_backend/node_modules/webidl-conversions/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/webidl-conversions/lib/index.js b/node_backend/node_modules/webidl-conversions/lib/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/webidl-conversions/lib/index.js rename to node_backend/node_modules/webidl-conversions/lib/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/webidl-conversions/package.json b/node_backend/node_modules/webidl-conversions/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/webidl-conversions/package.json rename to node_backend/node_modules/webidl-conversions/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/whatwg-url/LICENSE.txt b/node_backend/node_modules/whatwg-url/LICENSE.txt similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/whatwg-url/LICENSE.txt rename to node_backend/node_modules/whatwg-url/LICENSE.txt diff --git a/Inscripciones_UAIE/node_backend/node_modules/whatwg-url/README.md b/node_backend/node_modules/whatwg-url/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/whatwg-url/README.md rename to node_backend/node_modules/whatwg-url/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/whatwg-url/index.js b/node_backend/node_modules/whatwg-url/index.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/whatwg-url/index.js rename to node_backend/node_modules/whatwg-url/index.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/Function.js b/node_backend/node_modules/whatwg-url/lib/Function.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/Function.js rename to node_backend/node_modules/whatwg-url/lib/Function.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/URL-impl.js b/node_backend/node_modules/whatwg-url/lib/URL-impl.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/URL-impl.js rename to node_backend/node_modules/whatwg-url/lib/URL-impl.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/URL.js b/node_backend/node_modules/whatwg-url/lib/URL.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/URL.js rename to node_backend/node_modules/whatwg-url/lib/URL.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/URLSearchParams-impl.js b/node_backend/node_modules/whatwg-url/lib/URLSearchParams-impl.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/URLSearchParams-impl.js rename to node_backend/node_modules/whatwg-url/lib/URLSearchParams-impl.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/URLSearchParams.js b/node_backend/node_modules/whatwg-url/lib/URLSearchParams.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/URLSearchParams.js rename to node_backend/node_modules/whatwg-url/lib/URLSearchParams.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/VoidFunction.js b/node_backend/node_modules/whatwg-url/lib/VoidFunction.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/VoidFunction.js rename to node_backend/node_modules/whatwg-url/lib/VoidFunction.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/encoding.js b/node_backend/node_modules/whatwg-url/lib/encoding.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/encoding.js rename to node_backend/node_modules/whatwg-url/lib/encoding.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/infra.js b/node_backend/node_modules/whatwg-url/lib/infra.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/infra.js rename to node_backend/node_modules/whatwg-url/lib/infra.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/percent-encoding.js b/node_backend/node_modules/whatwg-url/lib/percent-encoding.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/percent-encoding.js rename to node_backend/node_modules/whatwg-url/lib/percent-encoding.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/url-state-machine.js b/node_backend/node_modules/whatwg-url/lib/url-state-machine.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/url-state-machine.js rename to node_backend/node_modules/whatwg-url/lib/url-state-machine.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/urlencoded.js b/node_backend/node_modules/whatwg-url/lib/urlencoded.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/urlencoded.js rename to node_backend/node_modules/whatwg-url/lib/urlencoded.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/utils.js b/node_backend/node_modules/whatwg-url/lib/utils.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/whatwg-url/lib/utils.js rename to node_backend/node_modules/whatwg-url/lib/utils.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/whatwg-url/package.json b/node_backend/node_modules/whatwg-url/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/whatwg-url/package.json rename to node_backend/node_modules/whatwg-url/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/whatwg-url/webidl2js-wrapper.js b/node_backend/node_modules/whatwg-url/webidl2js-wrapper.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/whatwg-url/webidl2js-wrapper.js rename to node_backend/node_modules/whatwg-url/webidl2js-wrapper.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/wide-align/LICENSE b/node_backend/node_modules/wide-align/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/wide-align/LICENSE rename to node_backend/node_modules/wide-align/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/wide-align/README.md b/node_backend/node_modules/wide-align/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/wide-align/README.md rename to node_backend/node_modules/wide-align/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/wide-align/align.js b/node_backend/node_modules/wide-align/align.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/wide-align/align.js rename to node_backend/node_modules/wide-align/align.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/wide-align/package.json b/node_backend/node_modules/wide-align/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/wide-align/package.json rename to node_backend/node_modules/wide-align/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/wrappy/LICENSE b/node_backend/node_modules/wrappy/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/wrappy/LICENSE rename to node_backend/node_modules/wrappy/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/wrappy/README.md b/node_backend/node_modules/wrappy/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/wrappy/README.md rename to node_backend/node_modules/wrappy/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/wrappy/package.json b/node_backend/node_modules/wrappy/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/wrappy/package.json rename to node_backend/node_modules/wrappy/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/wrappy/wrappy.js b/node_backend/node_modules/wrappy/wrappy.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/wrappy/wrappy.js rename to node_backend/node_modules/wrappy/wrappy.js diff --git a/node_backend/node_modules/xtend/.jshintrc b/node_backend/node_modules/xtend/.jshintrc new file mode 100644 index 00000000..77887b5f --- /dev/null +++ b/node_backend/node_modules/xtend/.jshintrc @@ -0,0 +1,30 @@ +{ + "maxdepth": 4, + "maxstatements": 200, + "maxcomplexity": 12, + "maxlen": 80, + "maxparams": 5, + + "curly": true, + "eqeqeq": true, + "immed": true, + "latedef": false, + "noarg": true, + "noempty": true, + "nonew": true, + "undef": true, + "unused": "vars", + "trailing": true, + + "quotmark": true, + "expr": true, + "asi": true, + + "browser": false, + "esnext": true, + "devel": false, + "node": false, + "nonstandard": false, + + "predef": ["require", "module", "__dirname", "__filename"] +} diff --git a/node_backend/node_modules/xtend/LICENSE b/node_backend/node_modules/xtend/LICENSE new file mode 100644 index 00000000..0099f4f6 --- /dev/null +++ b/node_backend/node_modules/xtend/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) +Copyright (c) 2012-2014 Raynos. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_backend/node_modules/xtend/README.md b/node_backend/node_modules/xtend/README.md new file mode 100644 index 00000000..4a2703cf --- /dev/null +++ b/node_backend/node_modules/xtend/README.md @@ -0,0 +1,32 @@ +# xtend + +[![browser support][3]][4] + +[![locked](http://badges.github.io/stability-badges/dist/locked.svg)](http://github.com/badges/stability-badges) + +Extend like a boss + +xtend is a basic utility library which allows you to extend an object by appending all of the properties from each object in a list. When there are identical properties, the right-most property takes precedence. + +## Examples + +```js +var extend = require("xtend") + +// extend returns a new object. Does not mutate arguments +var combination = extend({ + a: "a", + b: "c" +}, { + b: "b" +}) +// { a: "a", b: "b" } +``` + +## Stability status: Locked + +## MIT Licensed + + + [3]: http://ci.testling.com/Raynos/xtend.png + [4]: http://ci.testling.com/Raynos/xtend diff --git a/node_backend/node_modules/xtend/immutable.js b/node_backend/node_modules/xtend/immutable.js new file mode 100644 index 00000000..94889c9d --- /dev/null +++ b/node_backend/node_modules/xtend/immutable.js @@ -0,0 +1,19 @@ +module.exports = extend + +var hasOwnProperty = Object.prototype.hasOwnProperty; + +function extend() { + var target = {} + + for (var i = 0; i < arguments.length; i++) { + var source = arguments[i] + + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + target[key] = source[key] + } + } + } + + return target +} diff --git a/node_backend/node_modules/xtend/mutable.js b/node_backend/node_modules/xtend/mutable.js new file mode 100644 index 00000000..72debede --- /dev/null +++ b/node_backend/node_modules/xtend/mutable.js @@ -0,0 +1,17 @@ +module.exports = extend + +var hasOwnProperty = Object.prototype.hasOwnProperty; + +function extend(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] + + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + target[key] = source[key] + } + } + } + + return target +} diff --git a/node_backend/node_modules/xtend/package.json b/node_backend/node_modules/xtend/package.json new file mode 100644 index 00000000..f7a39d10 --- /dev/null +++ b/node_backend/node_modules/xtend/package.json @@ -0,0 +1,55 @@ +{ + "name": "xtend", + "version": "4.0.2", + "description": "extend like a boss", + "keywords": [ + "extend", + "merge", + "options", + "opts", + "object", + "array" + ], + "author": "Raynos ", + "repository": "git://github.com/Raynos/xtend.git", + "main": "immutable", + "scripts": { + "test": "node test" + }, + "dependencies": {}, + "devDependencies": { + "tape": "~1.1.0" + }, + "homepage": "https://github.com/Raynos/xtend", + "contributors": [ + { + "name": "Jake Verbaten" + }, + { + "name": "Matt Esch" + } + ], + "bugs": { + "url": "https://github.com/Raynos/xtend/issues", + "email": "raynos2@gmail.com" + }, + "license": "MIT", + "testling": { + "files": "test.js", + "browsers": [ + "ie/7..latest", + "firefox/16..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest" + ] + }, + "engines": { + "node": ">=0.4" + } +} diff --git a/node_backend/node_modules/xtend/test.js b/node_backend/node_modules/xtend/test.js new file mode 100644 index 00000000..b895b42b --- /dev/null +++ b/node_backend/node_modules/xtend/test.js @@ -0,0 +1,103 @@ +var test = require("tape") +var extend = require("./") +var mutableExtend = require("./mutable") + +test("merge", function(assert) { + var a = { a: "foo" } + var b = { b: "bar" } + + assert.deepEqual(extend(a, b), { a: "foo", b: "bar" }) + assert.end() +}) + +test("replace", function(assert) { + var a = { a: "foo" } + var b = { a: "bar" } + + assert.deepEqual(extend(a, b), { a: "bar" }) + assert.end() +}) + +test("undefined", function(assert) { + var a = { a: undefined } + var b = { b: "foo" } + + assert.deepEqual(extend(a, b), { a: undefined, b: "foo" }) + assert.deepEqual(extend(b, a), { a: undefined, b: "foo" }) + assert.end() +}) + +test("handle 0", function(assert) { + var a = { a: "default" } + var b = { a: 0 } + + assert.deepEqual(extend(a, b), { a: 0 }) + assert.deepEqual(extend(b, a), { a: "default" }) + assert.end() +}) + +test("is immutable", function (assert) { + var record = {} + + extend(record, { foo: "bar" }) + assert.equal(record.foo, undefined) + assert.end() +}) + +test("null as argument", function (assert) { + var a = { foo: "bar" } + var b = null + var c = void 0 + + assert.deepEqual(extend(b, a, c), { foo: "bar" }) + assert.end() +}) + +test("mutable", function (assert) { + var a = { foo: "bar" } + + mutableExtend(a, { bar: "baz" }) + + assert.equal(a.bar, "baz") + assert.end() +}) + +test("null prototype", function(assert) { + var a = { a: "foo" } + var b = Object.create(null) + b.b = "bar"; + + assert.deepEqual(extend(a, b), { a: "foo", b: "bar" }) + assert.end() +}) + +test("null prototype mutable", function (assert) { + var a = { foo: "bar" } + var b = Object.create(null) + b.bar = "baz"; + + mutableExtend(a, b) + + assert.equal(a.bar, "baz") + assert.end() +}) + +test("prototype pollution", function (assert) { + var a = {} + var maliciousPayload = '{"__proto__":{"oops":"It works!"}}' + + assert.strictEqual(a.oops, undefined) + extend({}, maliciousPayload) + assert.strictEqual(a.oops, undefined) + assert.end() +}) + +test("prototype pollution mutable", function (assert) { + var a = {} + var maliciousPayload = '{"__proto__":{"oops":"It works!"}}' + + assert.strictEqual(a.oops, undefined) + mutableExtend({}, maliciousPayload) + assert.strictEqual(a.oops, undefined) + assert.end() +}) diff --git a/Inscripciones_UAIE/node_backend/node_modules/yallist/LICENSE b/node_backend/node_modules/yallist/LICENSE similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/yallist/LICENSE rename to node_backend/node_modules/yallist/LICENSE diff --git a/Inscripciones_UAIE/node_backend/node_modules/yallist/README.md b/node_backend/node_modules/yallist/README.md similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/yallist/README.md rename to node_backend/node_modules/yallist/README.md diff --git a/Inscripciones_UAIE/node_backend/node_modules/yallist/iterator.js b/node_backend/node_modules/yallist/iterator.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/yallist/iterator.js rename to node_backend/node_modules/yallist/iterator.js diff --git a/Inscripciones_UAIE/node_backend/node_modules/yallist/package.json b/node_backend/node_modules/yallist/package.json similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/yallist/package.json rename to node_backend/node_modules/yallist/package.json diff --git a/Inscripciones_UAIE/node_backend/node_modules/yallist/yallist.js b/node_backend/node_modules/yallist/yallist.js similarity index 100% rename from Inscripciones_UAIE/node_backend/node_modules/yallist/yallist.js rename to node_backend/node_modules/yallist/yallist.js diff --git a/Inscripciones_UAIE/node_backend/package-lock.json b/node_backend/package-lock.json similarity index 90% rename from Inscripciones_UAIE/node_backend/package-lock.json rename to node_backend/package-lock.json index 61d75c08..44ced88a 100644 --- a/Inscripciones_UAIE/node_backend/package-lock.json +++ b/node_backend/package-lock.json @@ -12,10 +12,12 @@ "bcrypt": "^5.1.1", "bcryptjs": "^2.4.3", "cors": "^2.8.5", + "csv-parser": "^3.0.0", "dotenv": "^16.4.5", "express": "^4.21.1", "jsonwebtoken": "^9.0.2", - "mongoose": "^8.8.2" + "mongoose": "^8.8.2", + "multer": "^1.4.5-lts.1" } }, "node_modules/@mapbox/node-pre-gyp": { @@ -115,6 +117,11 @@ "node": ">=8" } }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, "node_modules/aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", @@ -206,6 +213,22 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -253,6 +276,47 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -290,6 +354,11 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", @@ -302,6 +371,20 @@ "node": ">= 0.10" } }, + "node_modules/csv-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-3.0.0.tgz", + "integrity": "sha512-s6OYSXAK3IdKqYO33y09jhypG/bSDHPuyCme/IdEHfWpLf/jKcpitVFyOC6UemgGk8v7Q5u2XE0vvwmanxhGlQ==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "csv-parser": "bin/csv-parser" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -742,6 +825,11 @@ "node": ">=8" } }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "node_modules/jsonwebtoken": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", @@ -922,6 +1010,14 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -1089,6 +1185,34 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/multer/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -1225,6 +1349,11 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -1463,6 +1592,14 @@ "node": ">= 0.8" } }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -1542,6 +1679,11 @@ "node": ">= 0.6" } }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -1604,6 +1746,14 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", diff --git a/Inscripciones_UAIE/node_backend/package.json b/node_backend/package.json similarity index 82% rename from Inscripciones_UAIE/node_backend/package.json rename to node_backend/package.json index 4ffc00a7..d56fa5ca 100644 --- a/Inscripciones_UAIE/node_backend/package.json +++ b/node_backend/package.json @@ -13,9 +13,11 @@ "bcrypt": "^5.1.1", "bcryptjs": "^2.4.3", "cors": "^2.8.5", + "csv-parser": "^3.0.0", "dotenv": "^16.4.5", "express": "^4.21.1", "jsonwebtoken": "^9.0.2", - "mongoose": "^8.8.2" + "mongoose": "^8.8.2", + "multer": "^1.4.5-lts.1" } } diff --git a/node_backend/routes/administradorRoutes b/node_backend/routes/administradorRoutes new file mode 100644 index 00000000..998cf411 --- /dev/null +++ b/node_backend/routes/administradorRoutes @@ -0,0 +1,280 @@ +const express = require('express'); +const router = express.Router(); +const Materia = require('../models/Materia'); // Ajusta la ruta al modelo Materia +const Docente = require('../models/Docente'); // Ajusta la ruta al modelo Docente +const Tutor = require('../models/Tutor'); // Ajusta la ruta al modelo Tutor +const Coordinador = require('../models/Coordinador'); // Ajusta la ruta al modelo Coordinador +const Administrador = require('../models/Administrador'); // Ajusta la ruta al modelo Administrador + +// Crear una nueva materia +router.post('/materias', async (req, res) => { + try { + const materia = new Materia(req.body); + await materia.save(); + res.status(201).json(materia); + } catch (error) { + res.status(400).json({ message: error.message }); + } +}); + +// Obtener todas las materias +router.get('/materias', async (req, res) => { + try { + const materias = await Materia.find().populate('docente'); + res.status(200).json(materias); + } catch (error) { + res.status(500).json({ message: error.message }); + } +}); + +// Obtener una materia por su ID +router.get('/materias/:id', async (req, res) => { + try { + const materia = await Materia.findById(req.params.id).populate('docente'); + if (!materia) { + return res.status(404).json({ message: 'Materia no encontrada' }); + } + res.status(200).json(materia); + } catch (error) { + res.status(500).json({ message: error.message }); + } +}); + +// Actualizar una materia +router.put('/materias/:id', async (req, res) => { + try { + const materia = await Materia.findByIdAndUpdate(req.params.id, req.body, { new: true }); + if (!materia) { + return res.status(404).json({ message: 'Materia no encontrada' }); + } + res.status(200).json(materia); + } catch (error) { + res.status(400).json({ message: error.message }); + } +}); + +// Eliminar una materia +router.delete('/materias/:id', async (req, res) => { + try { + const materia = await Materia.findByIdAndDelete(req.params.id); + if (!materia) { + return res.status(404).json({ message: 'Materia no encontrada' }); + } + res.status(200).json({ message: 'Materia eliminada correctamente' }); + } catch (error) { + res.status(500).json({ message: error.message }); + } +}); + +//Personal--------------------------------------------------------------------------- + +const Docente = require('../models/Docente'); // Ajusta la ruta al modelo Docente +const Tutor = require('../models/Tutor'); // Ajusta la ruta al modelo Tutor +const Coordinador = require('../models/Coordinador'); // Ajusta la ruta al modelo Coordinador +const Administrador = require('../models/Administrador'); // Ajusta la ruta al modelo Administrador + +// Crear un docente +router.post('/docentes', async (req, res) => { + try { + const docente = new Docente(req.body); + await docente.save(); + res.status(201).json(docente); + } catch (error) { + res.status(400).json({ message: error.message }); + } +}); + +// Crear un tutor +router.post('/tutores', async (req, res) => { + try { + const tutor = new Tutor(req.body); + await tutor.save(); + res.status(201).json(tutor); + } catch (error) { + res.status(400).json({ message: error.message }); + } +}); + +// Crear un coordinador +router.post('/coordinadores', async (req, res) => { + try { + const coordinador = new Coordinador(req.body); + await coordinador.save(); + res.status(201).json(coordinador); + } catch (error) { + res.status(400).json({ message: error.message }); + } +}); + +// Crear un administrador +router.post('/administradores', async (req, res) => { + try { + const administrador = new Administrador(req.body); + await administrador.save(); + res.status(201).json(administrador); + } catch (error) { + res.status(400).json({ message: error.message }); + } +}); + +// Obtener todos los docentes +router.get('/docentes', async (req, res) => { + try { + const docentes = await Docente.find().populate('materias'); + res.status(200).json(docentes); + } catch (error) { + res.status(500).json({ message: error.message }); + } +}); + +// Obtener todos los tutores +router.get('/tutores', async (req, res) => { + try { + const tutores = await Tutor.find(); + res.status(200).json(tutores); + } catch (error) { + res.status(500).json({ message: error.message }); + } +}); + +// Obtener todos los coordinadores +router.get('/coordinadores', async (req, res) => { + try { + const coordinadores = await Coordinador.find(); + res.status(200).json(coordinadores); + } catch (error) { + res.status(500).json({ message: error.message }); + } +}); + +// Obtener todos los administradores +router.get('/administradores', async (req, res) => { + try { + const administradores = await Administrador.find(); + res.status(200).json(administradores); + } catch (error) { + res.status(500).json({ message: error.message }); + } +}); + +// Ruta para obtener todo el personal +router.get('/personal', async (req, res) => { + try { + console.log('Ruta /personal fue alcanzada'); // Log para verificar que la ruta se alcanzó + + // Obtener todos los docentes, tutores, coordinadores y administradores + const docentes = await Docente.find().populate('materias').populate('alumnos'); + console.log('Docentes obtenidos:', docentes); // Log para verificar los datos de los docentes + + const tutores = await Tutor.find().populate('alumnos'); + console.log('Tutores obtenidos:', tutores); // Log para verificar los datos de los tutores + + const coordinadores = await Coordinador.find().populate('alumnos'); + console.log('Coordinadores obtenidos:', coordinadores); // Log para verificar los datos de los coordinadores + + const administradores = await Administrador.find(); + console.log('Administradores obtenidos:', administradores); // Log para verificar los datos de los administradores + + // Crear un arreglo que combine todos los tipos de personal + const personal = [ + ...docentes.map(docente => ({ + ...docente.toObject(), + roles: ['Docente'], + programa: 'PR', + })), + ...tutores.map(tutor => ({ + ...tutor.toObject(), + roles: ['Tutor'], + programa: 'PR', + })), + ...coordinadores.map(coordinador => ({ + ...coordinador.toObject(), + roles: ['Coordinador'], + programa: 'PR', + })), + ...administradores.map(administrador => ({ + ...administrador.toObject(), + roles: ['Administrador'], + programa: 'PR', + })), + ]; + + // Log para verificar los datos combinados + console.log('Personal combinado:', personal); + + // Responder con los datos de todo el personal + res.status(200).json(personal); + } catch (error) { + console.error('Error fetching personal data:', error); // Log en caso de error + res.status(500).json({ message: 'Error fetching personal data' }); + } +}); + + + + +//Alumnos-------------------------------------------------------- +const Alumno = require('../models/Alumno'); // Ajusta la ruta al modelo Alumno + +// Crear un nuevo alumno +router.post('/alumnos', async (req, res) => { + try { + const alumno = new Alumno(req.body); + await alumno.save(); + res.status(201).json(alumno); + } catch (error) { + res.status(400).json({ message: error.message }); + } +}); + +// Obtener todos los alumnos +router.get('/alumnos', async (req, res) => { + try { + const alumnos = await Alumno.find().populate('horario tutor'); + res.status(200).json(alumnos); + } catch (error) { + res.status(500).json({ message: error.message }); + } +}); + +// Obtener un alumno por su ID +router.get('/alumnos/:id', async (req, res) => { + try { + const alumno = await Alumno.findById(req.params.id).populate('horario tutor'); + if (!alumno) { + return res.status(404).json({ message: 'Alumno no encontrado' }); + } + res.status(200).json(alumno); + } catch (error) { + res.status(500).json({ message: error.message }); + } +}); + +// Actualizar un alumno +router.put('/alumnos/:id', async (req, res) => { + try { + const alumno = await Alumno.findByIdAndUpdate(req.params.id, req.body, { new: true }); + if (!alumno) { + return res.status(404).json({ message: 'Alumno no encontrado' }); + } + res.status(200).json(alumno); + } catch (error) { + res.status(400).json({ message: error.message }); + } +}); + +// Eliminar un alumno +router.delete('/alumnos/:id', async (req, res) => { + try { + const alumno = await Alumno.findByIdAndDelete(req.params.id); + if (!alumno) { + return res.status(404).json({ message: 'Alumno no encontrado' }); + } + res.status(200).json({ message: 'Alumno eliminado correctamente' }); + } catch (error) { + res.status(500).json({ message: error.message }); + } +}); + + +module.exports = router; \ No newline at end of file diff --git a/Inscripciones_UAIE/node_backend/routes/alumnoRoutes.js b/node_backend/routes/alumnoRoutes.js similarity index 100% rename from Inscripciones_UAIE/node_backend/routes/alumnoRoutes.js rename to node_backend/routes/alumnoRoutes.js diff --git a/node_backend/routes/authRoutes.js b/node_backend/routes/authRoutes.js new file mode 100644 index 00000000..af56aa02 --- /dev/null +++ b/node_backend/routes/authRoutes.js @@ -0,0 +1,134 @@ +// routes/authRoutes.js +const express = require('express'); +const router = express.Router(); +const jwt = require('jsonwebtoken'); +const bcrypt = require('bcrypt'); +const Alumno = require('../models/Alumno'); +const User = require('../models/User'); + +// Ruta de inicio de sesión para alumnos +router.post('/alumno/login', async (req, res) => { + const { matricula } = req.body; + try { + const alumno = await Alumno.findOne({ matricula }); + if (!alumno) { + return res.status(400).json({ mensaje: 'Alumno no encontrado' }); + } + + const token = jwt.sign({ id: alumno._id }, 'tu_secreto', { expiresIn: '10m' }); + + return res.json({ mensaje: 'Inicio de sesión exitoso', token }); + } catch (error) { + return res.status(500).json({ mensaje: 'Error al iniciar sesión', error }); + } +}); + + +router.post('/personal/login', async (req, res) => { + const { matricula, password } = req.body; // Obtener matrícula y contraseña del cuerpo de la solicitud + + console.log("Solicitud recibida en /personal/login"); // Log inicial + console.log("Cuerpo de la solicitud recibido:", req.body); // Mostrar los datos enviados + + // Verificar que se hayan enviado la matrícula y la contraseña + if (!matricula || !password) { + console.error("Faltan datos: matrícula o contraseña no proporcionados."); + return res.status(400).json({ mensaje: 'Matrícula y contraseña son obligatorios' }); + } + + try { + console.log('Matrícula y contraseña recibidos:', matricula, password); // Log de credenciales recibidas + + // Lista de modelos a verificar para determinar el tipo de usuario + const models = [ + { name: "Docente", model: Docente }, + { name: "Tutor", model: Tutor }, + { name: "Coordinador", model: Coordinador }, + { name: "Administrador", model: Administrador }, + ]; + + let personal = null; // Variable para almacenar al usuario encontrado + let tipo = null; // Variable para almacenar el tipo de usuario + + // Iterar sobre los modelos para buscar al usuario + for (const { name, model } of models) { + console.log(`Buscando en el modelo: ${name} con matrícula: ${matricula}`); + personal = await model.findOne({ matricula }); // Buscar el usuario por matrícula + if (personal) { + console.log(`Usuario encontrado en el modelo ${name}:`, personal); + tipo = name; // Asignar el tipo de usuario si se encuentra + break; // Salir del bucle si el usuario fue encontrado + } + } + + // Si no se encontró al usuario en ninguno de los modelos + if (!personal) { + console.warn("Usuario no encontrado en ninguno de los modelos."); + return res.status(404).json({ mensaje: 'Usuario no encontrado' }); + } + + console.log("Usuario encontrado, verificando contraseña..."); + console.log("Contraseña ingresada:", password); + console.log("Contraseña almacenada:", personal.password); + + // Verificar si la contraseña ingresada coincide con la almacenada (encriptada) + const isMatch = await bcrypt.compare(password, personal.password); + console.log("Resultado de la comparación de contraseñas:", isMatch); + + if (!isMatch) { + console.warn("Contraseña inválida para la matrícula proporcionada."); + return res.status(400).json({ mensaje: 'Credenciales inválidas' }); + } + + // Generar un token JWT para la sesión + console.log("Generando token JWT..."); + const token = jwt.sign( + { id: personal._id }, // Información del usuario para incluir en el token + process.env.JWT_SECRET || 'clave_por_defecto', // Clave secreta para firmar el token + { expiresIn: '1h' } // Tiempo de expiración del token + ); + console.log("Token generado exitosamente:", token); + + // Log para verificar que se detectó el tipo de usuario correctamente + console.log("Tipo detectado:", tipo); + + // Enviar una respuesta exitosa con el tipo de usuario y el token + console.log("Enviando respuesta de éxito..."); + return res.status(200).json({ + mensaje: "Inicio de sesión exitoso", + tipo, // Enviar el tipo de usuario como respuesta + token, // Token para la autenticación + }); + + } catch (error) { + // Capturar y manejar errores + console.error("Error al iniciar sesión:", error.message); // Log del error + return res.status(500).json({ + mensaje: "Error al iniciar sesión", + error: error.message, // Enviar el mensaje de error para depuración + }); + } +}); + +// Ruta de inicio de sesión para personal +router.post('/usuario/login', async (req, res) => { + const { matricula, password } = req.body; + try { + const usuario = await User.findOne({ matricula }); + if (!usuario) { + return res.status(400).json({ mensaje: 'Usuario no encontrado' }); + } + + const isMatch = await bcrypt.compare(password, usuario.password); + if (!isMatch) { + return res.status(400).json({ mensaje: 'Contraseña incorrecta' }); + } + + const token = jwt.sign({ id: usuario._id }, 'tu_secreto', { expiresIn: '1h' }); + return res.json({ mensaje: 'Inicio de sesión exitoso', token }); + } catch (error) { + return res.status(500).json({ mensaje: 'Error al iniciar sesión', error }); + } +}); + +module.exports = router; diff --git a/node_backend/routes/docenteRoutes.js b/node_backend/routes/docenteRoutes.js new file mode 100644 index 00000000..e69de29b diff --git a/Inscripciones_UAIE/node_backend/routes/materiasRoutes.js b/node_backend/routes/materiasRoutes.js similarity index 69% rename from Inscripciones_UAIE/node_backend/routes/materiasRoutes.js rename to node_backend/routes/materiasRoutes.js index 67796c13..6e0fe161 100644 --- a/Inscripciones_UAIE/node_backend/routes/materiasRoutes.js +++ b/node_backend/routes/materiasRoutes.js @@ -1,6 +1,9 @@ const express = require('express'); const router = express.Router(); +const multer = require('multer'); +const path = require('path'); const materiaController = require('../controllers/materiaController'); +const upload = multer({ dest: 'uploads/' }); // Configura dónde se guardarán los archivos temporales // Ruta para crear una nueva materia router.post('/', materiaController.createMateria); @@ -17,4 +20,7 @@ router.put('/:id', materiaController.updateMateria); // Ruta para eliminar una materia router.delete('/:id', materiaController.deleteMateria); +// Ruta para subir archivo csv +router.post('/upload', upload.single('file'), materiaController.uploadCSV); + module.exports = router; diff --git a/Inscripciones_UAIE/node_backend/routes/userRoutes.js b/node_backend/routes/userRoutes.js similarity index 100% rename from Inscripciones_UAIE/node_backend/routes/userRoutes.js rename to node_backend/routes/userRoutes.js diff --git a/Inscripciones_UAIE/node_backend/server.js b/node_backend/server.js similarity index 100% rename from Inscripciones_UAIE/node_backend/server.js rename to node_backend/server.js diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..fd7bf676 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,218 @@ +{ + "name": "nuevoProyecto", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "csv-parser": "^3.0.0", + "multer": "^1.4.5-lts.1" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/csv-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-3.0.0.tgz", + "integrity": "sha512-s6OYSXAK3IdKqYO33y09jhypG/bSDHPuyCme/IdEHfWpLf/jKcpitVFyOC6UemgGk8v7Q5u2XE0vvwmanxhGlQ==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "csv-parser": "bin/csv-parser" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..e1bf3344 --- /dev/null +++ b/package.json @@ -0,0 +1,6 @@ +{ + "dependencies": { + "csv-parser": "^3.0.0", + "multer": "^1.4.5-lts.1" + } +} diff --git a/Inscripciones_UAIE/react_frontend/.gitignore b/react_frontend/.gitignore similarity index 100% rename from Inscripciones_UAIE/react_frontend/.gitignore rename to react_frontend/.gitignore diff --git a/Inscripciones_UAIE/react_frontend/README.md b/react_frontend/README.md similarity index 100% rename from Inscripciones_UAIE/react_frontend/README.md rename to react_frontend/README.md diff --git a/Inscripciones_UAIE/react_frontend/package-lock.json b/react_frontend/package-lock.json similarity index 100% rename from Inscripciones_UAIE/react_frontend/package-lock.json rename to react_frontend/package-lock.json diff --git a/Inscripciones_UAIE/react_frontend/package.json b/react_frontend/package.json similarity index 100% rename from Inscripciones_UAIE/react_frontend/package.json rename to react_frontend/package.json diff --git a/Inscripciones_UAIE/react_frontend/public/favicon.ico b/react_frontend/public/favicon.ico similarity index 100% rename from Inscripciones_UAIE/react_frontend/public/favicon.ico rename to react_frontend/public/favicon.ico diff --git a/Inscripciones_UAIE/react_frontend/public/index.html b/react_frontend/public/index.html similarity index 100% rename from Inscripciones_UAIE/react_frontend/public/index.html rename to react_frontend/public/index.html diff --git a/Inscripciones_UAIE/react_frontend/public/logo192.png b/react_frontend/public/logo192.png similarity index 100% rename from Inscripciones_UAIE/react_frontend/public/logo192.png rename to react_frontend/public/logo192.png diff --git a/Inscripciones_UAIE/react_frontend/public/logo512.png b/react_frontend/public/logo512.png similarity index 100% rename from Inscripciones_UAIE/react_frontend/public/logo512.png rename to react_frontend/public/logo512.png diff --git a/Inscripciones_UAIE/react_frontend/public/manifest.json b/react_frontend/public/manifest.json similarity index 100% rename from Inscripciones_UAIE/react_frontend/public/manifest.json rename to react_frontend/public/manifest.json diff --git a/Inscripciones_UAIE/react_frontend/public/robots.txt b/react_frontend/public/robots.txt similarity index 100% rename from Inscripciones_UAIE/react_frontend/public/robots.txt rename to react_frontend/public/robots.txt diff --git a/Inscripciones_UAIE/react_frontend/src/App.css b/react_frontend/src/App.css similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/App.css rename to react_frontend/src/App.css diff --git a/Inscripciones_UAIE/react_frontend/src/App.js b/react_frontend/src/App.js similarity index 77% rename from Inscripciones_UAIE/react_frontend/src/App.js rename to react_frontend/src/App.js index d4671757..58877c98 100644 --- a/Inscripciones_UAIE/react_frontend/src/App.js +++ b/react_frontend/src/App.js @@ -19,6 +19,13 @@ import RevisionHorarioTutor from './components/RevisionHorarioTutor'; import "./components/RevisionHorarioTutor.css"; import PrivateRoute from './components/PrivateRoute'; import RedirectRoute from './components/RedirectRoute'; +import InicioDocente from './components/InicioDocente'; +import './components/InicioDocente.css'; +import InicioDocente2 from './components/InicioDocente2'; +import './components/InicioDocente2.css'; +import DocenteAlumnos from './components/DocenteAlumnos'; +import './components/DocenteAlumnos.css'; + function App() { @@ -33,11 +40,16 @@ function App() {
} /> + } /> } /> } /> } /> } /> + + } /> + } /> } /> + }> } /> diff --git a/Inscripciones_UAIE/react_frontend/src/App.test.js b/react_frontend/src/App.test.js similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/App.test.js rename to react_frontend/src/App.test.js diff --git a/Inscripciones_UAIE/react_frontend/src/assets/logo_uaei.png b/react_frontend/src/assets/logo_uaei.png similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/assets/logo_uaei.png rename to react_frontend/src/assets/logo_uaei.png diff --git a/Inscripciones_UAIE/react_frontend/src/assets/logo_uaz.png b/react_frontend/src/assets/logo_uaz.png similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/assets/logo_uaz.png rename to react_frontend/src/assets/logo_uaz.png diff --git a/Inscripciones_UAIE/react_frontend/src/components/AlumnoList.js b/react_frontend/src/components/AlumnoList.js similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/components/AlumnoList.js rename to react_frontend/src/components/AlumnoList.js diff --git a/Inscripciones_UAIE/react_frontend/src/components/CreateAlumno.js b/react_frontend/src/components/CreateAlumno.js similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/components/CreateAlumno.js rename to react_frontend/src/components/CreateAlumno.js diff --git a/Inscripciones_UAIE/react_frontend/src/components/CreateMateria.js b/react_frontend/src/components/CreateMateria.js similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/components/CreateMateria.js rename to react_frontend/src/components/CreateMateria.js diff --git a/Inscripciones_UAIE/react_frontend/src/components/CreateUser.js b/react_frontend/src/components/CreateUser.js similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/components/CreateUser.js rename to react_frontend/src/components/CreateUser.js diff --git a/react_frontend/src/components/DocenteAlumnos.css b/react_frontend/src/components/DocenteAlumnos.css new file mode 100644 index 00000000..d6ec0d70 --- /dev/null +++ b/react_frontend/src/components/DocenteAlumnos.css @@ -0,0 +1,189 @@ +.docente-layout { + display: flex; + width: 100%; + } + + .sidebar { + width: 200px; /* Ajusta el ancho de las barras laterales */ + background-color: #e0e0e0; /* Color de fondo de las barras laterales */ + } + .top-right { + position: absolute; + top: 10px; + right: 10px; + z-index: 1; /* Asegura que se mantenga en la parte superior */ + } + .docente-container { + flex: 1; /* Hace que el contenido principal ocupe el espacio restante */ + padding: 20px; + text-align: center; + background-color: white; + position: relative; /* Permite el posicionamiento relativo del botón */ + } + + .docente-header { + display: flex; + justify-content: space-between; + width: 100%; + max-width: 1200px; /* Limita el ancho del header */ + margin-bottom: 20px; /* Añade espacio inferior */ + } + + .docente-container h2 { + font-size: 1.8rem; + font-weight: bold; + color: #002a5c; + } + + .docente-container p { + color: #555; + } + + .docente-content { + margin: 0 auto; + } + + .docente-table { + width: 100%; + table-layout: fixed; /* Hace que las columnas tengan un ancho fijo */ + } + + .docente-table th, + .docente-table td { + width: 33.33%; /* Asegura que cada columna tenga el mismo ancho */ + text-align: center; /* Centra el contenido */ + } + + .docente-table { + width: 100%; + border-collapse: collapse; + margin: 20px 0; + overflow-x: auto; + } + + .docente-table th, + .docente-table td { + border: 1px solid #ddd; + padding: 10px; + text-align: center; + } + + .docente-table th { + background-color: #f2f2f2; + font-weight: bold; + } + + .actions { + text-align: center; /* Centra el contenido en las celdas de acciones */ + } + + .docente-table img { + width: 24px; /* Ajusta el tamaño según sea necesario */ + height: 24px; /* Ajusta el tamaño según sea necesario */ + vertical-align: middle; /* Alinea los íconos verticalmente al centro */ + } + + .docente-buttons { + display: flex; + justify-content: center; + gap: 20px; + margin-top: 20px; + } + + .button { + padding: 10px 20px; + font-size: 1rem; + background-color: #002a5c; + color: white; + border: none; + cursor: pointer; + } + + .button:hover { + background-color: #003a8c; + } + + .field-group { + display: flex; + flex-wrap: wrap; /* Permite que el contenido se ajuste en columnas */ + align-items: center; + margin-bottom: 5px; + } + + .field-group label { + width: 100px; + margin-right: 10px; + text-align: left; /* Alinea el texto a la derecha */ + } + + .field-group input, + .field-group select { + flex: 1; + min-width: 0; /* Evita que el input se expanda fuera del contenedor */ + padding: 8px; + margin-top: 5px; + } + + .icon-button { + background-color: transparent; + border: none; + cursor: pointer; + } + + .icon-button svg { + width: 24px; /* Ajusta el tamaño según sea necesario */ + height: 24px; /* Ajusta el tamaño según sea necesario */ + vertical-align: middle; + } + + .status-circle { + display: inline-block; + width: 24px; + height: 24px; + border-radius: 50%; + position: relative; + } + + .status-circle svg { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + + .validated { + background-color: green; + } + + .rejected { + background-color: red; + } + + .pending { + background-color: rgb(255, 230, 0); + } + + .not-uploaded { + background-color: gray; + } + + + + .logout-button { + background-color: #f44336; /* Color de fondo del botón */ + color: white; /* Color del texto */ + border: none; /* Sin borde */ + padding: 10px 20px; /* Espaciado interno */ + text-align: center; /* Alineación del texto */ + text-decoration: none; /* Sin subrayado */ + display: inline-block; /* Mostrar en línea */ + font-size: 16px; /* Tamaño de la fuente */ + margin: 4px 2px; /* Margen */ + cursor: pointer; /* Cambiar el cursor al pasar sobre el botón */ + border-radius: 12px; /* Bordes redondeados */ + } + + .logout-button:hover { + background-color: #d32f2f; /* Color de fondo al pasar el cursor */ + } + \ No newline at end of file diff --git a/react_frontend/src/components/DocenteAlumnos.js b/react_frontend/src/components/DocenteAlumnos.js new file mode 100644 index 00000000..1c233503 --- /dev/null +++ b/react_frontend/src/components/DocenteAlumnos.js @@ -0,0 +1,81 @@ +import React from "react"; +import { useNavigate } from "react-router-dom"; +import "./InicioDocente.css"; + +function InicioDocente() { + + const navigate = useNavigate(); + + const handleLogout = () => { + localStorage.removeItem("isAuthenticated"); + localStorage.removeItem("userType"); + navigate("/"); + } + + return ( +
+
+ +
+ +
+ +

Docente

+
+

M en C Juan Carlos Sanchez

+

Grupo: 1A

+

Materia: Álgebra Lineal

+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MatriculaNombreCorreoTelefono
Juan Rodriguez Lopez33566juan@rodriguez.com492 444 5656
Marisol Gutierrez15222alguien@example.com492 444 5656
----
----
+
+
+ + +
+
+
+ ); +} + +export default InicioDocente; diff --git a/Inscripciones_UAIE/react_frontend/src/components/Encabezado.css b/react_frontend/src/components/Encabezado.css similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/components/Encabezado.css rename to react_frontend/src/components/Encabezado.css diff --git a/Inscripciones_UAIE/react_frontend/src/components/Encabezado.js b/react_frontend/src/components/Encabezado.js similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/components/Encabezado.js rename to react_frontend/src/components/Encabezado.js diff --git a/Inscripciones_UAIE/react_frontend/src/components/HorarioSeleccion.css b/react_frontend/src/components/HorarioSeleccion.css similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/components/HorarioSeleccion.css rename to react_frontend/src/components/HorarioSeleccion.css diff --git a/Inscripciones_UAIE/react_frontend/src/components/HorarioSeleccion.js b/react_frontend/src/components/HorarioSeleccion.js similarity index 83% rename from Inscripciones_UAIE/react_frontend/src/components/HorarioSeleccion.js rename to react_frontend/src/components/HorarioSeleccion.js index 16261a64..8d2cf779 100644 --- a/Inscripciones_UAIE/react_frontend/src/components/HorarioSeleccion.js +++ b/react_frontend/src/components/HorarioSeleccion.js @@ -1,18 +1,22 @@ import React, { useEffect, useState } from "react"; -import { useNavigate } from "react-router-dom"; +import { useNavigate, useLocation } from "react-router-dom"; import "./HorarioSeleccion.css"; function HorarioSeleccion() { const navigate = useNavigate(); + const location = useLocation(); const [materias, setMaterias] = useState([]); // Estado para almacenar las materias const [grupos, setGrupos] = useState([]); // Estado para almacenar los grupos const [grupoSeleccionado, setGrupoSeleccionado] = useState(""); // Estado para almacenar el grupo seleccionado const [materiasSeleccionadas, setMateriasSeleccionadas] = useState([]); // Materias seleccionadas const [conflictos, setConflictos] = useState([]); const [mostrarModal, setMostrarModal] = useState(false); - + const [nombreAlumno, setNombreAlumno] = useState(location.state?.nombre || ""); + const [matricula, setMatricula] = useState(localStorage.getItem("matricula")); // Obtener matrícula del localStorage + // Función para obtener las materias desde el backend useEffect(() => { + const fetchMaterias = async () => { try { const response = await fetch("http://localhost:5000/api/materias"); @@ -31,6 +35,11 @@ function HorarioSeleccion() { fetchMaterias(); }, []); + useEffect(() => { + const nombre = location.state?.nombre || localStorage.getItem("nombreAlumno"); + setNombreAlumno(nombre || "Alumno desconocido"); + }, [location.state]); + const handleDesactivarTodas = () => { setMateriasSeleccionadas([]); // Vaciar las seleccionadas }; @@ -73,20 +82,23 @@ function HorarioSeleccion() { const conflictos = []; materiasSeleccionadas.forEach((materiaA, index) => { - const horariosA = Object.values(materiaA.horarios); // Obtener horarios por días + const horariosA = Object.entries(materiaA.horarios); // Obtener horarios por días como pares [día, horario] materiasSeleccionadas.slice(index + 1).forEach((materiaB) => { - const horariosB = Object.values(materiaB.horarios); + const horariosB = Object.entries(materiaB.horarios); + + horariosA.forEach(([diaA, horarioA]) => { + if (horarioA) { + const horarioB = horariosB.find(([diaB, _]) => diaB === diaA)?.[1]; // Encontrar el horario del mismo día - horariosA.forEach((horarioA, diaIndex) => { - if ( - horarioA && - horariosB[diaIndex] && - hayTraslape(horarioA.split("-"), horariosB[diaIndex].split("-")) - ) { - conflictos.push({ - materiaA: materiaA.nombre, - materiaB: materiaB.nombre, - }); + if ( + horarioB && + hayTraslape(horarioA.split("-"), horarioB.split("-")) + ) { + conflictos.push({ + materiaA: materiaA.nombre, + materiaB: materiaB.nombre, + }); + } } }); }); @@ -95,6 +107,7 @@ function HorarioSeleccion() { return conflictos; }; + const handleContinuarValidacion = () => { const conflictosDetectados = validarTraslapes(); @@ -125,6 +138,7 @@ function HorarioSeleccion() {

Sistema de selección de horario

+

Bienvenido(a): {nombreAlumno || "Cargando..."}

A continuación, seleccione las materias que va a cargar en el semestre

@@ -151,6 +165,7 @@ function HorarioSeleccion() { Miércoles Jueves Viernes + Sabado @@ -171,6 +186,7 @@ function HorarioSeleccion() { {materia.horarios.miercoles || "—"} {materia.horarios.jueves || "—"} {materia.horarios.viernes || "—"} + {materia.horarios.sabado || "—"} ))} @@ -208,6 +224,7 @@ function HorarioSeleccion() { > Continuar a validación +
diff --git a/Inscripciones_UAIE/react_frontend/src/components/InicioTutor.css b/react_frontend/src/components/InicioDocente.css similarity index 69% rename from Inscripciones_UAIE/react_frontend/src/components/InicioTutor.css rename to react_frontend/src/components/InicioDocente.css index d9aefd95..e27791e4 100644 --- a/Inscripciones_UAIE/react_frontend/src/components/InicioTutor.css +++ b/react_frontend/src/components/InicioDocente.css @@ -1,4 +1,4 @@ -.tutor-layout { +.docente-layout { display: flex; width: 100%; } @@ -7,55 +7,60 @@ width: 200px; /* Ajusta el ancho de las barras laterales */ background-color: #e0e0e0; /* Color de fondo de las barras laterales */ } - - .tutor-container { + .top-right { + position: absolute; + top: 10px; + right: 10px; + z-index: 1; /* Asegura que se mantenga en la parte superior */ + } + .docente-container { flex: 1; /* Hace que el contenido principal ocupe el espacio restante */ padding: 20px; text-align: center; background-color: white; + position: relative; /* Permite el posicionamiento relativo del botón */ } - .tutor-container h2 { + .docente-container h2 { font-size: 1.8rem; font-weight: bold; color: #002a5c; } - .tutor-container p { + .docente-container p { color: #555; } - .tutor-content { + .docente-content { margin: 0 auto; } - - .tutor-table { + + .docente-table { width: 100%; table-layout: fixed; /* Hace que las columnas tengan un ancho fijo */ } - .tutor-table th, - .tutor-table td { + .docente-table th, + .docente-table td { width: 33.33%; /* Asegura que cada columna tenga el mismo ancho */ text-align: center; /* Centra el contenido */ } - - .tutor-table { + .docente-table { width: 100%; border-collapse: collapse; margin: 20px 0; overflow-x: auto; } - .tutor-table th, - .tutor-table td { + .docente-table th, + .docente-table td { border: 1px solid #ddd; padding: 10px; text-align: center; } - .tutor-table th { + .docente-table th { background-color: #f2f2f2; font-weight: bold; } @@ -64,13 +69,13 @@ text-align: center; /* Centra el contenido en las celdas de acciones */ } - .tutor-table img { + .docente-table img { width: 24px; /* Ajusta el tamaño según sea necesario */ height: 24px; /* Ajusta el tamaño según sea necesario */ vertical-align: middle; /* Alinea los íconos verticalmente al centro */ } - .tutor-buttons { + .docente-buttons { display: flex; justify-content: center; gap: 20px; @@ -153,4 +158,24 @@ .not-uploaded { background-color: gray; } + + + + .logout-button { + background-color: #f44336; /* Color de fondo del botón */ + color: white; /* Color del texto */ + border: none; /* Sin borde */ + padding: 10px 20px; /* Espaciado interno */ + text-align: center; /* Alineación del texto */ + text-decoration: none; /* Sin subrayado */ + display: inline-block; /* Mostrar en línea */ + font-size: 16px; /* Tamaño de la fuente */ + margin: 4px 2px; /* Margen */ + cursor: pointer; /* Cambiar el cursor al pasar sobre el botón */ + border-radius: 12px; /* Bordes redondeados */ + } + + .logout-button:hover { + background-color: #d32f2f; /* Color de fondo al pasar el cursor */ + } \ No newline at end of file diff --git a/react_frontend/src/components/InicioDocente.js b/react_frontend/src/components/InicioDocente.js new file mode 100644 index 00000000..6c347faf --- /dev/null +++ b/react_frontend/src/components/InicioDocente.js @@ -0,0 +1,141 @@ +import React from "react"; +import { useNavigate } from "react-router-dom"; +import "./InicioDocente.css"; + +function InicioDocente() { + + const navigate = useNavigate(); + + const handleRevisarHorario = () => { + navigate(`/revisar-horario`); + }; + + const handleLogout = () => { + localStorage.removeItem("isAuthenticated"); + localStorage.removeItem("userType"); + navigate("/"); + }; + + const handleChangeView = () => { + navigate('/inicio-docente-2') + } + + return ( +
+
+ +
+ +
+ +

Docente

+

M en C Juan Carlos Sanchez

+

A continuacion, seleccione la lista que desee visualizar

+ +
+ + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Nombre del alumnoRevisar horarioEstatus
Juan Pérez + + + + + + + +
Alejandro Sánchez + + + + + + + + +
Jesus Sánchez + + + + + + + + + +
María González + + + + + + + + + +
+
+
+ + +
+
+
+ ); +} + +export default InicioDocente; diff --git a/react_frontend/src/components/InicioDocente2.css b/react_frontend/src/components/InicioDocente2.css new file mode 100644 index 00000000..e27791e4 --- /dev/null +++ b/react_frontend/src/components/InicioDocente2.css @@ -0,0 +1,181 @@ +.docente-layout { + display: flex; + width: 100%; + } + + .sidebar { + width: 200px; /* Ajusta el ancho de las barras laterales */ + background-color: #e0e0e0; /* Color de fondo de las barras laterales */ + } + .top-right { + position: absolute; + top: 10px; + right: 10px; + z-index: 1; /* Asegura que se mantenga en la parte superior */ + } + .docente-container { + flex: 1; /* Hace que el contenido principal ocupe el espacio restante */ + padding: 20px; + text-align: center; + background-color: white; + position: relative; /* Permite el posicionamiento relativo del botón */ + } + + .docente-container h2 { + font-size: 1.8rem; + font-weight: bold; + color: #002a5c; + } + + .docente-container p { + color: #555; + } + + .docente-content { + margin: 0 auto; + } + + .docente-table { + width: 100%; + table-layout: fixed; /* Hace que las columnas tengan un ancho fijo */ + } + + .docente-table th, + .docente-table td { + width: 33.33%; /* Asegura que cada columna tenga el mismo ancho */ + text-align: center; /* Centra el contenido */ + } + + .docente-table { + width: 100%; + border-collapse: collapse; + margin: 20px 0; + overflow-x: auto; + } + + .docente-table th, + .docente-table td { + border: 1px solid #ddd; + padding: 10px; + text-align: center; + } + + .docente-table th { + background-color: #f2f2f2; + font-weight: bold; + } + + .actions { + text-align: center; /* Centra el contenido en las celdas de acciones */ + } + + .docente-table img { + width: 24px; /* Ajusta el tamaño según sea necesario */ + height: 24px; /* Ajusta el tamaño según sea necesario */ + vertical-align: middle; /* Alinea los íconos verticalmente al centro */ + } + + .docente-buttons { + display: flex; + justify-content: center; + gap: 20px; + margin-top: 20px; + } + + .button { + padding: 10px 20px; + font-size: 1rem; + background-color: #002a5c; + color: white; + border: none; + cursor: pointer; + } + + .button:hover { + background-color: #003a8c; + } + + .field-group { + display: flex; + flex-wrap: wrap; /* Permite que el contenido se ajuste en columnas */ + align-items: center; + margin-bottom: 5px; + } + + .field-group label { + width: 100px; + margin-right: 10px; + text-align: left; /* Alinea el texto a la derecha */ + } + + .field-group input, + .field-group select { + flex: 1; + min-width: 0; /* Evita que el input se expanda fuera del contenedor */ + padding: 8px; + margin-top: 5px; + } + + .icon-button { + background-color: transparent; + border: none; + cursor: pointer; + } + + .icon-button svg { + width: 24px; /* Ajusta el tamaño según sea necesario */ + height: 24px; /* Ajusta el tamaño según sea necesario */ + vertical-align: middle; + } + + .status-circle { + display: inline-block; + width: 24px; + height: 24px; + border-radius: 50%; + position: relative; + } + + .status-circle svg { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + + .validated { + background-color: green; + } + + .rejected { + background-color: red; + } + + .pending { + background-color: rgb(255, 230, 0); + } + + .not-uploaded { + background-color: gray; + } + + + + .logout-button { + background-color: #f44336; /* Color de fondo del botón */ + color: white; /* Color del texto */ + border: none; /* Sin borde */ + padding: 10px 20px; /* Espaciado interno */ + text-align: center; /* Alineación del texto */ + text-decoration: none; /* Sin subrayado */ + display: inline-block; /* Mostrar en línea */ + font-size: 16px; /* Tamaño de la fuente */ + margin: 4px 2px; /* Margen */ + cursor: pointer; /* Cambiar el cursor al pasar sobre el botón */ + border-radius: 12px; /* Bordes redondeados */ + } + + .logout-button:hover { + background-color: #d32f2f; /* Color de fondo al pasar el cursor */ + } + \ No newline at end of file diff --git a/react_frontend/src/components/InicioDocente2.js b/react_frontend/src/components/InicioDocente2.js new file mode 100644 index 00000000..4049cca9 --- /dev/null +++ b/react_frontend/src/components/InicioDocente2.js @@ -0,0 +1,149 @@ +import React from "react"; +import { useNavigate } from "react-router-dom"; +import "./InicioDocente.css"; + +function InicioDocente() { + + const navigate = useNavigate(); + + const handleListaAlumnos = () => { + navigate(`/docente-alumnos`); + }; + + const handleLogout = () => { + localStorage.removeItem("isAuthenticated"); + localStorage.removeItem("userType"); + navigate("/"); + } + + const handleChangeView = () => { + navigate('/inicio-docente') + } + + return ( +
+
+ +
+ +
+ +

Docente

+

M en C Juan Carlos Sanchez

+

A continuacion, seleccione la lista que desee visualizar

+ +
+ + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GrupoSalónAlumnosMateriaLunesMartesMiércolesJuevesViernesSábado
1AB1 + + Algebra Lineal------
1AB1 + + Algebra Superior------
1AB1 + + Estadística------
2AB2 + + Estadística aplicada------
+
+
+ + +
+
+
+ ); +} + +export default InicioDocente; diff --git a/react_frontend/src/components/InicioTutor.css b/react_frontend/src/components/InicioTutor.css new file mode 100644 index 00000000..2f0e0b2d --- /dev/null +++ b/react_frontend/src/components/InicioTutor.css @@ -0,0 +1,180 @@ +.tutor-layout { + display: flex; + width: 100%; +} + +.sidebar { + width: 200px; /* Ajusta el ancho de las barras laterales */ + background-color: #e0e0e0; /* Color de fondo de las barras laterales */ +} +.top-right { + position: absolute; + top: 10px; + right: 10px; + z-index: 1; /* Asegura que se mantenga en la parte superior */ +} +.tutor-container { + flex: 1; /* Hace que el contenido principal ocupe el espacio restante */ + padding: 20px; + text-align: center; + background-color: white; + position: relative; /* Permite el posicionamiento relativo del botón */ +} + +.tutor-container h2 { + font-size: 1.8rem; + font-weight: bold; + color: #002a5c; +} + +.tutor-container p { + color: #555; +} + +.tutor-content { + margin: 0 auto; +} + +.tutor-table { + width: 100%; + table-layout: fixed; /* Hace que las columnas tengan un ancho fijo */ +} + +.tutor-table th, +.tutor-table td { + width: 33.33%; /* Asegura que cada columna tenga el mismo ancho */ + text-align: center; /* Centra el contenido */ +} + +.tutor-table { + width: 100%; + border-collapse: collapse; + margin: 20px 0; + overflow-x: auto; +} + +.tutor-table th, +.tutor-table td { + border: 1px solid #ddd; + padding: 10px; + text-align: center; +} + +.tutor-table th { + background-color: #f2f2f2; + font-weight: bold; +} + +.actions { + text-align: center; /* Centra el contenido en las celdas de acciones */ +} + +.tutor-table img { + width: 24px; /* Ajusta el tamaño según sea necesario */ + height: 24px; /* Ajusta el tamaño según sea necesario */ + vertical-align: middle; /* Alinea los íconos verticalmente al centro */ +} + +.tutor-buttons { + display: flex; + justify-content: center; + gap: 20px; + margin-top: 20px; +} + +.button { + padding: 10px 20px; + font-size: 1rem; + background-color: #002a5c; + color: white; + border: none; + cursor: pointer; +} + +.button:hover { + background-color: #003a8c; +} + +.field-group { + display: flex; + flex-wrap: wrap; /* Permite que el contenido se ajuste en columnas */ + align-items: center; + margin-bottom: 5px; +} + +.field-group label { + width: 100px; + margin-right: 10px; + text-align: left; /* Alinea el texto a la derecha */ +} + +.field-group input, +.field-group select { + flex: 1; + min-width: 0; /* Evita que el input se expanda fuera del contenedor */ + padding: 8px; + margin-top: 5px; +} + +.icon-button { + background-color: transparent; + border: none; + cursor: pointer; +} + +.icon-button svg { + width: 24px; /* Ajusta el tamaño según sea necesario */ + height: 24px; /* Ajusta el tamaño según sea necesario */ + vertical-align: middle; +} + +.status-circle { + display: inline-block; + width: 24px; + height: 24px; + border-radius: 50%; + position: relative; +} + +.status-circle svg { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.validated { + background-color: green; +} + +.rejected { + background-color: red; +} + +.pending { + background-color: rgb(255, 230, 0); +} + +.not-uploaded { + background-color: gray; +} + + + +.logout-button { + background-color: #f44336; /* Color de fondo del botón */ + color: white; /* Color del texto */ + border: none; /* Sin borde */ + padding: 10px 20px; /* Espaciado interno */ + text-align: center; /* Alineación del texto */ + text-decoration: none; /* Sin subrayado */ + display: inline-block; /* Mostrar en línea */ + font-size: 16px; /* Tamaño de la fuente */ + margin: 4px 2px; /* Margen */ + cursor: pointer; /* Cambiar el cursor al pasar sobre el botón */ + border-radius: 12px; /* Bordes redondeados */ +} + +.logout-button:hover { + background-color: #d32f2f; /* Color de fondo al pasar el cursor */ +} diff --git a/Inscripciones_UAIE/react_frontend/src/components/InicioTutor.js b/react_frontend/src/components/InicioTutor.js similarity index 94% rename from Inscripciones_UAIE/react_frontend/src/components/InicioTutor.js rename to react_frontend/src/components/InicioTutor.js index a34aae3e..71b58d8c 100644 --- a/Inscripciones_UAIE/react_frontend/src/components/InicioTutor.js +++ b/react_frontend/src/components/InicioTutor.js @@ -10,9 +10,20 @@ function InicioTutor() { navigate(`/revisar-horario`); }; + const handleLogout = () => { + localStorage.removeItem("isAuthenticated"); + localStorage.removeItem("userType"); + navigate("/"); + } + return (
+ +
+ +
+

Tutor

A continuación, se muestra una lista de alumnos

que tiene asignados como tutor.

diff --git a/Inscripciones_UAIE/react_frontend/src/components/Pie_pagina.css b/react_frontend/src/components/Pie_pagina.css similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/components/Pie_pagina.css rename to react_frontend/src/components/Pie_pagina.css diff --git a/Inscripciones_UAIE/react_frontend/src/components/Pie_pagina.js b/react_frontend/src/components/Pie_pagina.js similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/components/Pie_pagina.js rename to react_frontend/src/components/Pie_pagina.js diff --git a/Inscripciones_UAIE/react_frontend/src/components/PrivateRoute.js b/react_frontend/src/components/PrivateRoute.js similarity index 80% rename from Inscripciones_UAIE/react_frontend/src/components/PrivateRoute.js rename to react_frontend/src/components/PrivateRoute.js index aaedb878..4b8cdb8f 100644 --- a/Inscripciones_UAIE/react_frontend/src/components/PrivateRoute.js +++ b/react_frontend/src/components/PrivateRoute.js @@ -5,7 +5,7 @@ const PrivateRoute = ({ children }) => { // Verifica si el usuario está autenticado const isAuthenticated = localStorage.getItem("isAuthenticated") === "true"; - return isAuthenticated ? children : ; + return isAuthenticated ? children : ; }; export default PrivateRoute; diff --git a/Inscripciones_UAIE/react_frontend/src/components/RedirectRoute.js b/react_frontend/src/components/RedirectRoute.js similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/components/RedirectRoute.js rename to react_frontend/src/components/RedirectRoute.js diff --git a/Inscripciones_UAIE/react_frontend/src/components/Registro.css b/react_frontend/src/components/Registro.css similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/components/Registro.css rename to react_frontend/src/components/Registro.css diff --git a/Inscripciones_UAIE/react_frontend/src/components/Registro.js b/react_frontend/src/components/Registro.js similarity index 93% rename from Inscripciones_UAIE/react_frontend/src/components/Registro.js rename to react_frontend/src/components/Registro.js index 784695a1..39238a4f 100644 --- a/Inscripciones_UAIE/react_frontend/src/components/Registro.js +++ b/react_frontend/src/components/Registro.js @@ -6,6 +6,7 @@ import "./Registro.css"; function Registro() { const [tipoUsuario, setTipoUsuario] = useState("alumno"); const [matricula, setMatricula] = useState(""); + const [nombre, setNombre] = useState(""); const [password, setPassword] = useState(""); const [mensaje, setMensaje] = useState(""); const navigate = useNavigate(); // Hook para la navegación @@ -24,8 +25,10 @@ function Registro() { setMensaje(response.data.mensaje); if (response.status === 200) { localStorage.setItem("isAuthenticated", "true"); + localStorage.setItem("matricula", matricula); + localStorage.setItem("nombreAlumno", nombre); setMensaje(response.data.mensaje); - navigate('/horario-seleccion'); // Redirecciona a la página de selección de horario + navigate('/horario-seleccion', {state: {nombre}}); // Redirecciona a la página de selección de horario } } catch (error) { console.error("Error al iniciar sesión:", error); diff --git a/Inscripciones_UAIE/react_frontend/src/components/RevisionHorarioTutor.css b/react_frontend/src/components/RevisionHorarioTutor.css similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/components/RevisionHorarioTutor.css rename to react_frontend/src/components/RevisionHorarioTutor.css diff --git a/Inscripciones_UAIE/react_frontend/src/components/RevisionHorarioTutor.js b/react_frontend/src/components/RevisionHorarioTutor.js similarity index 68% rename from Inscripciones_UAIE/react_frontend/src/components/RevisionHorarioTutor.js rename to react_frontend/src/components/RevisionHorarioTutor.js index 0d61a968..efdbe744 100644 --- a/Inscripciones_UAIE/react_frontend/src/components/RevisionHorarioTutor.js +++ b/react_frontend/src/components/RevisionHorarioTutor.js @@ -1,19 +1,29 @@ -import React from "react"; +import React, { useState } from "react"; import "./RevisionHorarioTutor.css"; function RevisionHorarioTutor() { + + const [mostrarModal, setMostrarModal] = useState(false); + + const setModal = () => { + setMostrarModal(true); + } + return (
+

Revisión de horario

-

Nombre del alumno: Juan Perez

Semestre: 2do

-

Carrera: Ingeniería en desarrollo

+ +

Nombre del alumno: Juan Perez

Semestre: 2do

+

Carrera: Ingeniería en desarrollo

+ @@ -42,6 +52,19 @@ function RevisionHorarioTutor() {
+ {mostrarModal && ( +
+
+

AVISO

+

Una vez que finalice el proceso, no podrá hacer cambios.

+

+ ¿Desea continuar con la validación? +

+ + +
+
+ )}

Comentarios

@@ -57,7 +80,7 @@ function RevisionHorarioTutor() {
- +
diff --git a/Inscripciones_UAIE/react_frontend/src/components/UserList.js b/react_frontend/src/components/UserList.js similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/components/UserList.js rename to react_frontend/src/components/UserList.js diff --git a/Inscripciones_UAIE/react_frontend/src/components/Validacion1.css b/react_frontend/src/components/Validacion1.css similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/components/Validacion1.css rename to react_frontend/src/components/Validacion1.css diff --git a/Inscripciones_UAIE/react_frontend/src/components/Validacion1.js b/react_frontend/src/components/Validacion1.js similarity index 98% rename from Inscripciones_UAIE/react_frontend/src/components/Validacion1.js rename to react_frontend/src/components/Validacion1.js index 9b919749..105608d6 100644 --- a/Inscripciones_UAIE/react_frontend/src/components/Validacion1.js +++ b/react_frontend/src/components/Validacion1.js @@ -1,4 +1,3 @@ -import React, { useEffect, useState } from "react"; import { useLocation, useNavigate } from "react-router-dom"; import "./Validacion1.css"; diff --git a/Inscripciones_UAIE/react_frontend/src/components/Validacion2.css b/react_frontend/src/components/Validacion2.css similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/components/Validacion2.css rename to react_frontend/src/components/Validacion2.css diff --git a/Inscripciones_UAIE/react_frontend/src/components/Validacion2.js b/react_frontend/src/components/Validacion2.js similarity index 95% rename from Inscripciones_UAIE/react_frontend/src/components/Validacion2.js rename to react_frontend/src/components/Validacion2.js index 01d1ec5b..a8ce18b0 100644 --- a/Inscripciones_UAIE/react_frontend/src/components/Validacion2.js +++ b/react_frontend/src/components/Validacion2.js @@ -35,11 +35,14 @@ function Validacion2() { return (
-
- -
+ +

Validación de horario

+
+ +
+

Tu horario está en proceso de validación por parte del tutor. Una vez validado y subiendo tu comprobante de pago, podrás descargar tu diff --git a/Inscripciones_UAIE/react_frontend/src/index.css b/react_frontend/src/index.css similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/index.css rename to react_frontend/src/index.css diff --git a/Inscripciones_UAIE/react_frontend/src/index.js b/react_frontend/src/index.js similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/index.js rename to react_frontend/src/index.js diff --git a/Inscripciones_UAIE/react_frontend/src/logo.svg b/react_frontend/src/logo.svg similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/logo.svg rename to react_frontend/src/logo.svg diff --git a/Inscripciones_UAIE/react_frontend/src/reportWebVitals.js b/react_frontend/src/reportWebVitals.js similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/reportWebVitals.js rename to react_frontend/src/reportWebVitals.js diff --git a/Inscripciones_UAIE/react_frontend/src/setupTests.js b/react_frontend/src/setupTests.js similarity index 100% rename from Inscripciones_UAIE/react_frontend/src/setupTests.js rename to react_frontend/src/setupTests.js -- GitLab