create-mern-omar 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -18
- package/index.js +37 -10
- package/package.json +9 -2
- package/templates/.env.example +1 -1
- package/templates/db/index.js +1 -0
- package/templates/server.js +2 -2
- package/templates/node_modules/.package-lock.json +0 -1105
- package/templates/node_modules/@mongodb-js/saslprep/LICENSE +0 -22
- package/templates/node_modules/@mongodb-js/saslprep/dist/.esm-wrapper.mjs +0 -4
- package/templates/node_modules/@mongodb-js/saslprep/dist/browser.d.ts +0 -5
- package/templates/node_modules/@mongodb-js/saslprep/dist/browser.d.ts.map +0 -1
- package/templates/node_modules/@mongodb-js/saslprep/dist/browser.js +0 -12
- package/templates/node_modules/@mongodb-js/saslprep/dist/browser.js.map +0 -1
- package/templates/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts +0 -3
- package/templates/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.d.ts.map +0 -1
- package/templates/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js +0 -5
- package/templates/node_modules/@mongodb-js/saslprep/dist/code-points-data-browser.js.map +0 -1
- package/templates/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts +0 -3
- package/templates/node_modules/@mongodb-js/saslprep/dist/code-points-data.d.ts.map +0 -1
- package/templates/node_modules/@mongodb-js/saslprep/dist/code-points-data.js +0 -5
- package/templates/node_modules/@mongodb-js/saslprep/dist/code-points-data.js.map +0 -1
- package/templates/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts +0 -7
- package/templates/node_modules/@mongodb-js/saslprep/dist/code-points-src.d.ts.map +0 -1
- package/templates/node_modules/@mongodb-js/saslprep/dist/code-points-src.js +0 -881
- package/templates/node_modules/@mongodb-js/saslprep/dist/code-points-src.js.map +0 -1
- package/templates/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts +0 -2
- package/templates/node_modules/@mongodb-js/saslprep/dist/generate-code-points.d.ts.map +0 -1
- package/templates/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js +0 -83
- package/templates/node_modules/@mongodb-js/saslprep/dist/generate-code-points.js.map +0 -1
- package/templates/node_modules/@mongodb-js/saslprep/dist/index.d.ts +0 -11
- package/templates/node_modules/@mongodb-js/saslprep/dist/index.d.ts.map +0 -1
- package/templates/node_modules/@mongodb-js/saslprep/dist/index.js +0 -65
- package/templates/node_modules/@mongodb-js/saslprep/dist/index.js.map +0 -1
- package/templates/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts +0 -10
- package/templates/node_modules/@mongodb-js/saslprep/dist/memory-code-points.d.ts.map +0 -1
- package/templates/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js +0 -32
- package/templates/node_modules/@mongodb-js/saslprep/dist/memory-code-points.js.map +0 -1
- package/templates/node_modules/@mongodb-js/saslprep/dist/node.d.ts +0 -10
- package/templates/node_modules/@mongodb-js/saslprep/dist/node.d.ts.map +0 -1
- package/templates/node_modules/@mongodb-js/saslprep/dist/node.js +0 -15
- package/templates/node_modules/@mongodb-js/saslprep/dist/node.js.map +0 -1
- package/templates/node_modules/@mongodb-js/saslprep/dist/util.d.ts +0 -2
- package/templates/node_modules/@mongodb-js/saslprep/dist/util.d.ts.map +0 -1
- package/templates/node_modules/@mongodb-js/saslprep/dist/util.js +0 -11
- package/templates/node_modules/@mongodb-js/saslprep/dist/util.js.map +0 -1
- package/templates/node_modules/@mongodb-js/saslprep/package.json +0 -87
- package/templates/node_modules/@mongodb-js/saslprep/readme.md +0 -29
- package/templates/node_modules/@types/webidl-conversions/LICENSE +0 -21
- package/templates/node_modules/@types/webidl-conversions/README.md +0 -15
- package/templates/node_modules/@types/webidl-conversions/index.d.ts +0 -91
- package/templates/node_modules/@types/webidl-conversions/package.json +0 -30
- package/templates/node_modules/@types/whatwg-url/LICENSE +0 -21
- package/templates/node_modules/@types/whatwg-url/README.md +0 -15
- package/templates/node_modules/@types/whatwg-url/index.d.ts +0 -172
- package/templates/node_modules/@types/whatwg-url/lib/URL-impl.d.ts +0 -22
- package/templates/node_modules/@types/whatwg-url/lib/URL.d.ts +0 -66
- package/templates/node_modules/@types/whatwg-url/lib/URLSearchParams-impl.d.ts +0 -20
- package/templates/node_modules/@types/whatwg-url/lib/URLSearchParams.d.ts +0 -92
- package/templates/node_modules/@types/whatwg-url/package.json +0 -38
- package/templates/node_modules/@types/whatwg-url/webidl2js-wrapper.d.ts +0 -4
- package/templates/node_modules/accepts/HISTORY.md +0 -250
- package/templates/node_modules/accepts/LICENSE +0 -23
- package/templates/node_modules/accepts/README.md +0 -140
- package/templates/node_modules/accepts/index.js +0 -238
- package/templates/node_modules/accepts/package.json +0 -47
- package/templates/node_modules/basic-auth/HISTORY.md +0 -52
- package/templates/node_modules/basic-auth/LICENSE +0 -24
- package/templates/node_modules/basic-auth/README.md +0 -113
- package/templates/node_modules/basic-auth/index.js +0 -133
- package/templates/node_modules/basic-auth/package.json +0 -41
- package/templates/node_modules/body-parser/LICENSE +0 -23
- package/templates/node_modules/body-parser/README.md +0 -494
- package/templates/node_modules/body-parser/index.js +0 -80
- package/templates/node_modules/body-parser/lib/read.js +0 -250
- package/templates/node_modules/body-parser/lib/types/json.js +0 -166
- package/templates/node_modules/body-parser/lib/types/raw.js +0 -43
- package/templates/node_modules/body-parser/lib/types/text.js +0 -37
- package/templates/node_modules/body-parser/lib/types/urlencoded.js +0 -142
- package/templates/node_modules/body-parser/lib/utils.js +0 -96
- package/templates/node_modules/body-parser/package.json +0 -52
- package/templates/node_modules/bson/LICENSE.md +0 -201
- package/templates/node_modules/bson/README.md +0 -291
- package/templates/node_modules/bson/bson.d.ts +0 -1729
- package/templates/node_modules/bson/etc/prepare.js +0 -19
- package/templates/node_modules/bson/lib/bson.bundle.js +0 -4675
- package/templates/node_modules/bson/lib/bson.bundle.js.map +0 -1
- package/templates/node_modules/bson/lib/bson.cjs +0 -4670
- package/templates/node_modules/bson/lib/bson.cjs.map +0 -1
- package/templates/node_modules/bson/lib/bson.mjs +0 -4639
- package/templates/node_modules/bson/lib/bson.mjs.map +0 -1
- package/templates/node_modules/bson/lib/bson.node.mjs +0 -4639
- package/templates/node_modules/bson/lib/bson.node.mjs.map +0 -1
- package/templates/node_modules/bson/lib/bson.rn.cjs +0 -4680
- package/templates/node_modules/bson/lib/bson.rn.cjs.map +0 -1
- package/templates/node_modules/bson/package.json +0 -118
- package/templates/node_modules/bson/src/binary.ts +0 -751
- package/templates/node_modules/bson/src/bson.ts +0 -248
- package/templates/node_modules/bson/src/bson_value.ts +0 -55
- package/templates/node_modules/bson/src/code.ts +0 -69
- package/templates/node_modules/bson/src/constants.ts +0 -147
- package/templates/node_modules/bson/src/db_ref.ts +0 -128
- package/templates/node_modules/bson/src/decimal128.ts +0 -855
- package/templates/node_modules/bson/src/double.ts +0 -115
- package/templates/node_modules/bson/src/error.ts +0 -105
- package/templates/node_modules/bson/src/extended_json.ts +0 -513
- package/templates/node_modules/bson/src/index.ts +0 -19
- package/templates/node_modules/bson/src/int_32.ts +0 -101
- package/templates/node_modules/bson/src/long.ts +0 -1240
- package/templates/node_modules/bson/src/max_key.ts +0 -31
- package/templates/node_modules/bson/src/min_key.ts +0 -31
- package/templates/node_modules/bson/src/objectid.ts +0 -382
- package/templates/node_modules/bson/src/parse_utf8.ts +0 -35
- package/templates/node_modules/bson/src/parser/calculate_size.ts +0 -218
- package/templates/node_modules/bson/src/parser/deserializer.ts +0 -627
- package/templates/node_modules/bson/src/parser/on_demand/index.ts +0 -32
- package/templates/node_modules/bson/src/parser/on_demand/parse_to_elements.ts +0 -190
- package/templates/node_modules/bson/src/parser/serializer.ts +0 -954
- package/templates/node_modules/bson/src/parser/utils.ts +0 -69
- package/templates/node_modules/bson/src/regexp.ts +0 -114
- package/templates/node_modules/bson/src/symbol.ts +0 -55
- package/templates/node_modules/bson/src/timestamp.ts +0 -176
- package/templates/node_modules/bson/src/utils/byte_utils.ts +0 -63
- package/templates/node_modules/bson/src/utils/latin.ts +0 -104
- package/templates/node_modules/bson/src/utils/node_byte_utils.ts +0 -161
- package/templates/node_modules/bson/src/utils/number_utils.ts +0 -204
- package/templates/node_modules/bson/src/utils/string_utils.ts +0 -44
- package/templates/node_modules/bson/src/utils/web_byte_utils.ts +0 -216
- package/templates/node_modules/bytes/History.md +0 -97
- package/templates/node_modules/bytes/LICENSE +0 -23
- package/templates/node_modules/bytes/Readme.md +0 -152
- package/templates/node_modules/bytes/index.js +0 -170
- package/templates/node_modules/bytes/package.json +0 -42
- package/templates/node_modules/call-bind-apply-helpers/.eslintrc +0 -17
- package/templates/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +0 -12
- package/templates/node_modules/call-bind-apply-helpers/.nycrc +0 -9
- package/templates/node_modules/call-bind-apply-helpers/CHANGELOG.md +0 -30
- package/templates/node_modules/call-bind-apply-helpers/LICENSE +0 -21
- package/templates/node_modules/call-bind-apply-helpers/README.md +0 -62
- package/templates/node_modules/call-bind-apply-helpers/actualApply.d.ts +0 -1
- package/templates/node_modules/call-bind-apply-helpers/actualApply.js +0 -10
- package/templates/node_modules/call-bind-apply-helpers/applyBind.d.ts +0 -19
- package/templates/node_modules/call-bind-apply-helpers/applyBind.js +0 -10
- package/templates/node_modules/call-bind-apply-helpers/functionApply.d.ts +0 -1
- package/templates/node_modules/call-bind-apply-helpers/functionApply.js +0 -4
- package/templates/node_modules/call-bind-apply-helpers/functionCall.d.ts +0 -1
- package/templates/node_modules/call-bind-apply-helpers/functionCall.js +0 -4
- package/templates/node_modules/call-bind-apply-helpers/index.d.ts +0 -64
- package/templates/node_modules/call-bind-apply-helpers/index.js +0 -15
- package/templates/node_modules/call-bind-apply-helpers/package.json +0 -85
- package/templates/node_modules/call-bind-apply-helpers/reflectApply.d.ts +0 -3
- package/templates/node_modules/call-bind-apply-helpers/reflectApply.js +0 -4
- package/templates/node_modules/call-bind-apply-helpers/test/index.js +0 -63
- package/templates/node_modules/call-bind-apply-helpers/tsconfig.json +0 -9
- package/templates/node_modules/call-bound/.eslintrc +0 -13
- package/templates/node_modules/call-bound/.github/FUNDING.yml +0 -12
- package/templates/node_modules/call-bound/.nycrc +0 -9
- package/templates/node_modules/call-bound/CHANGELOG.md +0 -42
- package/templates/node_modules/call-bound/LICENSE +0 -21
- package/templates/node_modules/call-bound/README.md +0 -53
- package/templates/node_modules/call-bound/index.d.ts +0 -94
- package/templates/node_modules/call-bound/index.js +0 -19
- package/templates/node_modules/call-bound/package.json +0 -99
- package/templates/node_modules/call-bound/test/index.js +0 -61
- package/templates/node_modules/call-bound/tsconfig.json +0 -10
- package/templates/node_modules/content-disposition/HISTORY.md +0 -72
- package/templates/node_modules/content-disposition/LICENSE +0 -22
- package/templates/node_modules/content-disposition/README.md +0 -142
- package/templates/node_modules/content-disposition/index.js +0 -458
- package/templates/node_modules/content-disposition/package.json +0 -43
- package/templates/node_modules/content-type/HISTORY.md +0 -29
- package/templates/node_modules/content-type/LICENSE +0 -22
- package/templates/node_modules/content-type/README.md +0 -94
- package/templates/node_modules/content-type/index.js +0 -225
- package/templates/node_modules/content-type/package.json +0 -42
- package/templates/node_modules/cookie/LICENSE +0 -24
- package/templates/node_modules/cookie/README.md +0 -317
- package/templates/node_modules/cookie/SECURITY.md +0 -25
- package/templates/node_modules/cookie/index.js +0 -335
- package/templates/node_modules/cookie/package.json +0 -44
- package/templates/node_modules/cookie-signature/History.md +0 -70
- package/templates/node_modules/cookie-signature/LICENSE +0 -22
- package/templates/node_modules/cookie-signature/Readme.md +0 -23
- package/templates/node_modules/cookie-signature/index.js +0 -47
- package/templates/node_modules/cookie-signature/package.json +0 -24
- package/templates/node_modules/debug/LICENSE +0 -20
- package/templates/node_modules/debug/README.md +0 -481
- package/templates/node_modules/debug/package.json +0 -64
- package/templates/node_modules/debug/src/browser.js +0 -272
- package/templates/node_modules/debug/src/common.js +0 -292
- package/templates/node_modules/debug/src/index.js +0 -10
- package/templates/node_modules/debug/src/node.js +0 -263
- package/templates/node_modules/depd/History.md +0 -103
- package/templates/node_modules/depd/LICENSE +0 -22
- package/templates/node_modules/depd/Readme.md +0 -280
- package/templates/node_modules/depd/index.js +0 -538
- package/templates/node_modules/depd/lib/browser/index.js +0 -77
- package/templates/node_modules/depd/package.json +0 -45
- package/templates/node_modules/dotenv/CHANGELOG.md +0 -598
- package/templates/node_modules/dotenv/LICENSE +0 -23
- package/templates/node_modules/dotenv/README-es.md +0 -405
- package/templates/node_modules/dotenv/README.md +0 -692
- package/templates/node_modules/dotenv/SECURITY.md +0 -1
- package/templates/node_modules/dotenv/config.d.ts +0 -1
- package/templates/node_modules/dotenv/config.js +0 -9
- package/templates/node_modules/dotenv/lib/cli-options.js +0 -17
- package/templates/node_modules/dotenv/lib/env-options.js +0 -28
- package/templates/node_modules/dotenv/lib/main.d.ts +0 -179
- package/templates/node_modules/dotenv/lib/main.js +0 -434
- package/templates/node_modules/dotenv/package.json +0 -62
- package/templates/node_modules/dunder-proto/.eslintrc +0 -5
- package/templates/node_modules/dunder-proto/.github/FUNDING.yml +0 -12
- package/templates/node_modules/dunder-proto/.nycrc +0 -13
- package/templates/node_modules/dunder-proto/CHANGELOG.md +0 -24
- package/templates/node_modules/dunder-proto/LICENSE +0 -21
- package/templates/node_modules/dunder-proto/README.md +0 -54
- package/templates/node_modules/dunder-proto/get.d.ts +0 -5
- package/templates/node_modules/dunder-proto/get.js +0 -30
- package/templates/node_modules/dunder-proto/package.json +0 -76
- package/templates/node_modules/dunder-proto/set.d.ts +0 -5
- package/templates/node_modules/dunder-proto/set.js +0 -35
- package/templates/node_modules/dunder-proto/test/get.js +0 -34
- package/templates/node_modules/dunder-proto/test/index.js +0 -4
- package/templates/node_modules/dunder-proto/test/set.js +0 -50
- package/templates/node_modules/dunder-proto/tsconfig.json +0 -9
- package/templates/node_modules/ee-first/LICENSE +0 -22
- package/templates/node_modules/ee-first/README.md +0 -80
- package/templates/node_modules/ee-first/index.js +0 -95
- package/templates/node_modules/ee-first/package.json +0 -29
- package/templates/node_modules/encodeurl/LICENSE +0 -22
- package/templates/node_modules/encodeurl/README.md +0 -109
- package/templates/node_modules/encodeurl/index.js +0 -60
- package/templates/node_modules/encodeurl/package.json +0 -40
- package/templates/node_modules/es-define-property/.eslintrc +0 -13
- package/templates/node_modules/es-define-property/.github/FUNDING.yml +0 -12
- package/templates/node_modules/es-define-property/.nycrc +0 -9
- package/templates/node_modules/es-define-property/CHANGELOG.md +0 -29
- package/templates/node_modules/es-define-property/LICENSE +0 -21
- package/templates/node_modules/es-define-property/README.md +0 -49
- package/templates/node_modules/es-define-property/index.d.ts +0 -3
- package/templates/node_modules/es-define-property/index.js +0 -14
- package/templates/node_modules/es-define-property/package.json +0 -81
- package/templates/node_modules/es-define-property/test/index.js +0 -56
- package/templates/node_modules/es-define-property/tsconfig.json +0 -10
- package/templates/node_modules/es-errors/.eslintrc +0 -5
- package/templates/node_modules/es-errors/.github/FUNDING.yml +0 -12
- package/templates/node_modules/es-errors/CHANGELOG.md +0 -40
- package/templates/node_modules/es-errors/LICENSE +0 -21
- package/templates/node_modules/es-errors/README.md +0 -55
- package/templates/node_modules/es-errors/eval.d.ts +0 -3
- package/templates/node_modules/es-errors/eval.js +0 -4
- package/templates/node_modules/es-errors/index.d.ts +0 -3
- package/templates/node_modules/es-errors/index.js +0 -4
- package/templates/node_modules/es-errors/package.json +0 -80
- package/templates/node_modules/es-errors/range.d.ts +0 -3
- package/templates/node_modules/es-errors/range.js +0 -4
- package/templates/node_modules/es-errors/ref.d.ts +0 -3
- package/templates/node_modules/es-errors/ref.js +0 -4
- package/templates/node_modules/es-errors/syntax.d.ts +0 -3
- package/templates/node_modules/es-errors/syntax.js +0 -4
- package/templates/node_modules/es-errors/test/index.js +0 -19
- package/templates/node_modules/es-errors/tsconfig.json +0 -49
- package/templates/node_modules/es-errors/type.d.ts +0 -3
- package/templates/node_modules/es-errors/type.js +0 -4
- package/templates/node_modules/es-errors/uri.d.ts +0 -3
- package/templates/node_modules/es-errors/uri.js +0 -4
- package/templates/node_modules/es-object-atoms/.eslintrc +0 -16
- package/templates/node_modules/es-object-atoms/.github/FUNDING.yml +0 -12
- package/templates/node_modules/es-object-atoms/CHANGELOG.md +0 -37
- package/templates/node_modules/es-object-atoms/LICENSE +0 -21
- package/templates/node_modules/es-object-atoms/README.md +0 -63
- package/templates/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +0 -3
- package/templates/node_modules/es-object-atoms/RequireObjectCoercible.js +0 -11
- package/templates/node_modules/es-object-atoms/ToObject.d.ts +0 -7
- package/templates/node_modules/es-object-atoms/ToObject.js +0 -10
- package/templates/node_modules/es-object-atoms/index.d.ts +0 -3
- package/templates/node_modules/es-object-atoms/index.js +0 -4
- package/templates/node_modules/es-object-atoms/isObject.d.ts +0 -3
- package/templates/node_modules/es-object-atoms/isObject.js +0 -6
- package/templates/node_modules/es-object-atoms/package.json +0 -80
- package/templates/node_modules/es-object-atoms/test/index.js +0 -38
- package/templates/node_modules/es-object-atoms/tsconfig.json +0 -6
- package/templates/node_modules/escape-html/LICENSE +0 -24
- package/templates/node_modules/escape-html/Readme.md +0 -43
- package/templates/node_modules/escape-html/index.js +0 -78
- package/templates/node_modules/escape-html/package.json +0 -24
- package/templates/node_modules/etag/HISTORY.md +0 -83
- package/templates/node_modules/etag/LICENSE +0 -22
- package/templates/node_modules/etag/README.md +0 -159
- package/templates/node_modules/etag/index.js +0 -131
- package/templates/node_modules/etag/package.json +0 -47
- package/templates/node_modules/express/LICENSE +0 -24
- package/templates/node_modules/express/Readme.md +0 -276
- package/templates/node_modules/express/index.js +0 -11
- package/templates/node_modules/express/lib/application.js +0 -631
- package/templates/node_modules/express/lib/express.js +0 -81
- package/templates/node_modules/express/lib/request.js +0 -514
- package/templates/node_modules/express/lib/response.js +0 -1053
- package/templates/node_modules/express/lib/utils.js +0 -271
- package/templates/node_modules/express/lib/view.js +0 -205
- package/templates/node_modules/express/package.json +0 -99
- package/templates/node_modules/finalhandler/HISTORY.md +0 -239
- package/templates/node_modules/finalhandler/LICENSE +0 -22
- package/templates/node_modules/finalhandler/README.md +0 -150
- package/templates/node_modules/finalhandler/index.js +0 -293
- package/templates/node_modules/finalhandler/package.json +0 -47
- package/templates/node_modules/forwarded/HISTORY.md +0 -21
- package/templates/node_modules/forwarded/LICENSE +0 -22
- package/templates/node_modules/forwarded/README.md +0 -57
- package/templates/node_modules/forwarded/index.js +0 -90
- package/templates/node_modules/forwarded/package.json +0 -45
- package/templates/node_modules/fresh/HISTORY.md +0 -80
- package/templates/node_modules/fresh/LICENSE +0 -23
- package/templates/node_modules/fresh/README.md +0 -117
- package/templates/node_modules/fresh/index.js +0 -136
- package/templates/node_modules/fresh/package.json +0 -46
- package/templates/node_modules/function-bind/.eslintrc +0 -21
- package/templates/node_modules/function-bind/.github/FUNDING.yml +0 -12
- package/templates/node_modules/function-bind/.github/SECURITY.md +0 -3
- package/templates/node_modules/function-bind/.nycrc +0 -13
- package/templates/node_modules/function-bind/CHANGELOG.md +0 -136
- package/templates/node_modules/function-bind/LICENSE +0 -20
- package/templates/node_modules/function-bind/README.md +0 -46
- package/templates/node_modules/function-bind/implementation.js +0 -84
- package/templates/node_modules/function-bind/index.js +0 -5
- package/templates/node_modules/function-bind/package.json +0 -87
- package/templates/node_modules/function-bind/test/.eslintrc +0 -9
- package/templates/node_modules/function-bind/test/index.js +0 -252
- package/templates/node_modules/get-intrinsic/.eslintrc +0 -42
- package/templates/node_modules/get-intrinsic/.github/FUNDING.yml +0 -12
- package/templates/node_modules/get-intrinsic/.nycrc +0 -9
- package/templates/node_modules/get-intrinsic/CHANGELOG.md +0 -186
- package/templates/node_modules/get-intrinsic/LICENSE +0 -21
- package/templates/node_modules/get-intrinsic/README.md +0 -71
- package/templates/node_modules/get-intrinsic/index.js +0 -378
- package/templates/node_modules/get-intrinsic/package.json +0 -97
- package/templates/node_modules/get-intrinsic/test/GetIntrinsic.js +0 -274
- package/templates/node_modules/get-proto/.eslintrc +0 -10
- package/templates/node_modules/get-proto/.github/FUNDING.yml +0 -12
- package/templates/node_modules/get-proto/.nycrc +0 -9
- package/templates/node_modules/get-proto/CHANGELOG.md +0 -21
- package/templates/node_modules/get-proto/LICENSE +0 -21
- package/templates/node_modules/get-proto/Object.getPrototypeOf.d.ts +0 -5
- package/templates/node_modules/get-proto/Object.getPrototypeOf.js +0 -6
- package/templates/node_modules/get-proto/README.md +0 -50
- package/templates/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +0 -3
- package/templates/node_modules/get-proto/Reflect.getPrototypeOf.js +0 -4
- package/templates/node_modules/get-proto/index.d.ts +0 -5
- package/templates/node_modules/get-proto/index.js +0 -27
- package/templates/node_modules/get-proto/package.json +0 -81
- package/templates/node_modules/get-proto/test/index.js +0 -68
- package/templates/node_modules/get-proto/tsconfig.json +0 -9
- package/templates/node_modules/gopd/.eslintrc +0 -16
- package/templates/node_modules/gopd/.github/FUNDING.yml +0 -12
- package/templates/node_modules/gopd/CHANGELOG.md +0 -45
- package/templates/node_modules/gopd/LICENSE +0 -21
- package/templates/node_modules/gopd/README.md +0 -40
- package/templates/node_modules/gopd/gOPD.d.ts +0 -1
- package/templates/node_modules/gopd/gOPD.js +0 -4
- package/templates/node_modules/gopd/index.d.ts +0 -5
- package/templates/node_modules/gopd/index.js +0 -15
- package/templates/node_modules/gopd/package.json +0 -77
- package/templates/node_modules/gopd/test/index.js +0 -36
- package/templates/node_modules/gopd/tsconfig.json +0 -9
- package/templates/node_modules/has-symbols/.eslintrc +0 -11
- package/templates/node_modules/has-symbols/.github/FUNDING.yml +0 -12
- package/templates/node_modules/has-symbols/.nycrc +0 -9
- package/templates/node_modules/has-symbols/CHANGELOG.md +0 -91
- package/templates/node_modules/has-symbols/LICENSE +0 -21
- package/templates/node_modules/has-symbols/README.md +0 -46
- package/templates/node_modules/has-symbols/index.d.ts +0 -3
- package/templates/node_modules/has-symbols/index.js +0 -14
- package/templates/node_modules/has-symbols/package.json +0 -111
- package/templates/node_modules/has-symbols/shams.d.ts +0 -3
- package/templates/node_modules/has-symbols/shams.js +0 -45
- package/templates/node_modules/has-symbols/test/index.js +0 -22
- package/templates/node_modules/has-symbols/test/shams/core-js.js +0 -29
- package/templates/node_modules/has-symbols/test/shams/get-own-property-symbols.js +0 -29
- package/templates/node_modules/has-symbols/test/tests.js +0 -58
- package/templates/node_modules/has-symbols/tsconfig.json +0 -10
- package/templates/node_modules/hasown/.eslintrc +0 -5
- package/templates/node_modules/hasown/.github/FUNDING.yml +0 -12
- package/templates/node_modules/hasown/.nycrc +0 -13
- package/templates/node_modules/hasown/CHANGELOG.md +0 -40
- package/templates/node_modules/hasown/LICENSE +0 -21
- package/templates/node_modules/hasown/README.md +0 -40
- package/templates/node_modules/hasown/index.d.ts +0 -3
- package/templates/node_modules/hasown/index.js +0 -8
- package/templates/node_modules/hasown/package.json +0 -92
- package/templates/node_modules/hasown/tsconfig.json +0 -6
- package/templates/node_modules/http-errors/HISTORY.md +0 -186
- package/templates/node_modules/http-errors/LICENSE +0 -23
- package/templates/node_modules/http-errors/README.md +0 -169
- package/templates/node_modules/http-errors/index.js +0 -290
- package/templates/node_modules/http-errors/package.json +0 -54
- package/templates/node_modules/iconv-lite/Changelog.md +0 -241
- package/templates/node_modules/iconv-lite/LICENSE +0 -21
- package/templates/node_modules/iconv-lite/README.md +0 -138
- package/templates/node_modules/iconv-lite/encodings/dbcs-codec.js +0 -532
- package/templates/node_modules/iconv-lite/encodings/dbcs-data.js +0 -185
- package/templates/node_modules/iconv-lite/encodings/index.js +0 -23
- package/templates/node_modules/iconv-lite/encodings/internal.js +0 -218
- package/templates/node_modules/iconv-lite/encodings/sbcs-codec.js +0 -75
- package/templates/node_modules/iconv-lite/encodings/sbcs-data-generated.js +0 -451
- package/templates/node_modules/iconv-lite/encodings/sbcs-data.js +0 -178
- package/templates/node_modules/iconv-lite/encodings/tables/big5-added.json +0 -122
- package/templates/node_modules/iconv-lite/encodings/tables/cp936.json +0 -264
- package/templates/node_modules/iconv-lite/encodings/tables/cp949.json +0 -273
- package/templates/node_modules/iconv-lite/encodings/tables/cp950.json +0 -177
- package/templates/node_modules/iconv-lite/encodings/tables/eucjp.json +0 -182
- package/templates/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +0 -1
- package/templates/node_modules/iconv-lite/encodings/tables/gbk-added.json +0 -56
- package/templates/node_modules/iconv-lite/encodings/tables/shiftjis.json +0 -125
- package/templates/node_modules/iconv-lite/encodings/utf16.js +0 -187
- package/templates/node_modules/iconv-lite/encodings/utf32.js +0 -307
- package/templates/node_modules/iconv-lite/encodings/utf7.js +0 -283
- package/templates/node_modules/iconv-lite/lib/bom-handling.js +0 -48
- package/templates/node_modules/iconv-lite/lib/helpers/merge-exports.js +0 -13
- package/templates/node_modules/iconv-lite/lib/index.d.ts +0 -131
- package/templates/node_modules/iconv-lite/lib/index.js +0 -183
- package/templates/node_modules/iconv-lite/lib/streams.js +0 -105
- package/templates/node_modules/iconv-lite/package.json +0 -65
- package/templates/node_modules/iconv-lite/types/encodings.d.ts +0 -423
- package/templates/node_modules/inherits/LICENSE +0 -16
- package/templates/node_modules/inherits/README.md +0 -42
- package/templates/node_modules/inherits/inherits.js +0 -9
- package/templates/node_modules/inherits/inherits_browser.js +0 -27
- package/templates/node_modules/inherits/package.json +0 -29
- package/templates/node_modules/ipaddr.js/LICENSE +0 -19
- package/templates/node_modules/ipaddr.js/README.md +0 -233
- package/templates/node_modules/ipaddr.js/ipaddr.min.js +0 -1
- package/templates/node_modules/ipaddr.js/lib/ipaddr.js +0 -673
- package/templates/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +0 -68
- package/templates/node_modules/ipaddr.js/package.json +0 -35
- package/templates/node_modules/is-promise/LICENSE +0 -19
- package/templates/node_modules/is-promise/index.d.ts +0 -2
- package/templates/node_modules/is-promise/index.js +0 -6
- package/templates/node_modules/is-promise/index.mjs +0 -3
- package/templates/node_modules/is-promise/package.json +0 -30
- package/templates/node_modules/is-promise/readme.md +0 -33
- package/templates/node_modules/kareem/.nyc_output/fa57d6c4-9e78-4624-9229-f77b87a07481.json +0 -1
- package/templates/node_modules/kareem/.nyc_output/processinfo/fa57d6c4-9e78-4624-9229-f77b87a07481.json +0 -1
- package/templates/node_modules/kareem/.nyc_output/processinfo/index.json +0 -1
- package/templates/node_modules/kareem/CHANGELOG.md +0 -830
- package/templates/node_modules/kareem/LICENSE +0 -202
- package/templates/node_modules/kareem/README.md +0 -408
- package/templates/node_modules/kareem/SECURITY.md +0 -5
- package/templates/node_modules/kareem/coverage/lcov-report/base.css +0 -224
- package/templates/node_modules/kareem/coverage/lcov-report/block-navigation.js +0 -87
- package/templates/node_modules/kareem/coverage/lcov-report/favicon.png +0 -0
- package/templates/node_modules/kareem/coverage/lcov-report/index.html +0 -116
- package/templates/node_modules/kareem/coverage/lcov-report/index.js.html +0 -1603
- package/templates/node_modules/kareem/coverage/lcov-report/prettify.css +0 -1
- package/templates/node_modules/kareem/coverage/lcov-report/prettify.js +0 -2
- package/templates/node_modules/kareem/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/templates/node_modules/kareem/coverage/lcov-report/sorter.js +0 -196
- package/templates/node_modules/kareem/coverage/lcov.info +0 -423
- package/templates/node_modules/kareem/index.d.ts +0 -31
- package/templates/node_modules/kareem/index.js +0 -509
- package/templates/node_modules/kareem/package.json +0 -28
- package/templates/node_modules/math-intrinsics/.eslintrc +0 -16
- package/templates/node_modules/math-intrinsics/.github/FUNDING.yml +0 -12
- package/templates/node_modules/math-intrinsics/CHANGELOG.md +0 -24
- package/templates/node_modules/math-intrinsics/LICENSE +0 -21
- package/templates/node_modules/math-intrinsics/README.md +0 -50
- package/templates/node_modules/math-intrinsics/abs.d.ts +0 -1
- package/templates/node_modules/math-intrinsics/abs.js +0 -4
- package/templates/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +0 -3
- package/templates/node_modules/math-intrinsics/constants/maxArrayLength.js +0 -4
- package/templates/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +0 -3
- package/templates/node_modules/math-intrinsics/constants/maxSafeInteger.js +0 -5
- package/templates/node_modules/math-intrinsics/constants/maxValue.d.ts +0 -3
- package/templates/node_modules/math-intrinsics/constants/maxValue.js +0 -5
- package/templates/node_modules/math-intrinsics/floor.d.ts +0 -1
- package/templates/node_modules/math-intrinsics/floor.js +0 -4
- package/templates/node_modules/math-intrinsics/isFinite.d.ts +0 -3
- package/templates/node_modules/math-intrinsics/isFinite.js +0 -12
- package/templates/node_modules/math-intrinsics/isInteger.d.ts +0 -3
- package/templates/node_modules/math-intrinsics/isInteger.js +0 -16
- package/templates/node_modules/math-intrinsics/isNaN.d.ts +0 -1
- package/templates/node_modules/math-intrinsics/isNaN.js +0 -6
- package/templates/node_modules/math-intrinsics/isNegativeZero.d.ts +0 -3
- package/templates/node_modules/math-intrinsics/isNegativeZero.js +0 -6
- package/templates/node_modules/math-intrinsics/max.d.ts +0 -1
- package/templates/node_modules/math-intrinsics/max.js +0 -4
- package/templates/node_modules/math-intrinsics/min.d.ts +0 -1
- package/templates/node_modules/math-intrinsics/min.js +0 -4
- package/templates/node_modules/math-intrinsics/mod.d.ts +0 -3
- package/templates/node_modules/math-intrinsics/mod.js +0 -9
- package/templates/node_modules/math-intrinsics/package.json +0 -86
- package/templates/node_modules/math-intrinsics/pow.d.ts +0 -1
- package/templates/node_modules/math-intrinsics/pow.js +0 -4
- package/templates/node_modules/math-intrinsics/round.d.ts +0 -1
- package/templates/node_modules/math-intrinsics/round.js +0 -4
- package/templates/node_modules/math-intrinsics/sign.d.ts +0 -3
- package/templates/node_modules/math-intrinsics/sign.js +0 -11
- package/templates/node_modules/math-intrinsics/test/index.js +0 -192
- package/templates/node_modules/math-intrinsics/tsconfig.json +0 -3
- package/templates/node_modules/media-typer/HISTORY.md +0 -50
- package/templates/node_modules/media-typer/LICENSE +0 -22
- package/templates/node_modules/media-typer/README.md +0 -93
- package/templates/node_modules/media-typer/index.js +0 -143
- package/templates/node_modules/media-typer/package.json +0 -33
- package/templates/node_modules/memory-pager/.travis.yml +0 -4
- package/templates/node_modules/memory-pager/LICENSE +0 -21
- package/templates/node_modules/memory-pager/README.md +0 -65
- package/templates/node_modules/memory-pager/index.js +0 -160
- package/templates/node_modules/memory-pager/package.json +0 -24
- package/templates/node_modules/memory-pager/test.js +0 -80
- package/templates/node_modules/merge-descriptors/index.d.ts +0 -11
- package/templates/node_modules/merge-descriptors/index.js +0 -26
- package/templates/node_modules/merge-descriptors/license +0 -11
- package/templates/node_modules/merge-descriptors/package.json +0 -50
- package/templates/node_modules/merge-descriptors/readme.md +0 -55
- package/templates/node_modules/mime-db/HISTORY.md +0 -541
- package/templates/node_modules/mime-db/LICENSE +0 -23
- package/templates/node_modules/mime-db/README.md +0 -109
- package/templates/node_modules/mime-db/db.json +0 -9342
- package/templates/node_modules/mime-db/index.js +0 -12
- package/templates/node_modules/mime-db/package.json +0 -56
- package/templates/node_modules/mime-types/HISTORY.md +0 -428
- package/templates/node_modules/mime-types/LICENSE +0 -23
- package/templates/node_modules/mime-types/README.md +0 -126
- package/templates/node_modules/mime-types/index.js +0 -211
- package/templates/node_modules/mime-types/mimeScore.js +0 -57
- package/templates/node_modules/mime-types/package.json +0 -49
- package/templates/node_modules/mongodb/LICENSE.md +0 -201
- package/templates/node_modules/mongodb/README.md +0 -355
- package/templates/node_modules/mongodb/etc/prepare.js +0 -12
- package/templates/node_modules/mongodb/lib/admin.js +0 -136
- package/templates/node_modules/mongodb/lib/admin.js.map +0 -1
- package/templates/node_modules/mongodb/lib/bson.js +0 -84
- package/templates/node_modules/mongodb/lib/bson.js.map +0 -1
- package/templates/node_modules/mongodb/lib/bulk/common.js +0 -835
- package/templates/node_modules/mongodb/lib/bulk/common.js.map +0 -1
- package/templates/node_modules/mongodb/lib/bulk/ordered.js +0 -67
- package/templates/node_modules/mongodb/lib/bulk/ordered.js.map +0 -1
- package/templates/node_modules/mongodb/lib/bulk/unordered.js +0 -92
- package/templates/node_modules/mongodb/lib/bulk/unordered.js.map +0 -1
- package/templates/node_modules/mongodb/lib/change_stream.js +0 -511
- package/templates/node_modules/mongodb/lib/change_stream.js.map +0 -1
- package/templates/node_modules/mongodb/lib/client-side-encryption/auto_encrypter.js +0 -272
- package/templates/node_modules/mongodb/lib/client-side-encryption/auto_encrypter.js.map +0 -1
- package/templates/node_modules/mongodb/lib/client-side-encryption/client_encryption.js +0 -609
- package/templates/node_modules/mongodb/lib/client-side-encryption/client_encryption.js.map +0 -1
- package/templates/node_modules/mongodb/lib/client-side-encryption/errors.js +0 -138
- package/templates/node_modules/mongodb/lib/client-side-encryption/errors.js.map +0 -1
- package/templates/node_modules/mongodb/lib/client-side-encryption/mongocryptd_manager.js +0 -85
- package/templates/node_modules/mongodb/lib/client-side-encryption/mongocryptd_manager.js.map +0 -1
- package/templates/node_modules/mongodb/lib/client-side-encryption/providers/aws.js +0 -23
- package/templates/node_modules/mongodb/lib/client-side-encryption/providers/aws.js.map +0 -1
- package/templates/node_modules/mongodb/lib/client-side-encryption/providers/azure.js +0 -132
- package/templates/node_modules/mongodb/lib/client-side-encryption/providers/azure.js.map +0 -1
- package/templates/node_modules/mongodb/lib/client-side-encryption/providers/gcp.js +0 -16
- package/templates/node_modules/mongodb/lib/client-side-encryption/providers/gcp.js.map +0 -1
- package/templates/node_modules/mongodb/lib/client-side-encryption/providers/index.js +0 -43
- package/templates/node_modules/mongodb/lib/client-side-encryption/providers/index.js.map +0 -1
- package/templates/node_modules/mongodb/lib/client-side-encryption/state_machine.js +0 -426
- package/templates/node_modules/mongodb/lib/client-side-encryption/state_machine.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/auth_provider.js +0 -51
- package/templates/node_modules/mongodb/lib/cmap/auth/auth_provider.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/aws_temporary_credentials.js +0 -102
- package/templates/node_modules/mongodb/lib/cmap/auth/aws_temporary_credentials.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/gssapi.js +0 -154
- package/templates/node_modules/mongodb/lib/cmap/auth/gssapi.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/mongo_credentials.js +0 -168
- package/templates/node_modules/mongodb/lib/cmap/auth/mongo_credentials.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js +0 -133
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_aws.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js +0 -84
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js +0 -62
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js +0 -141
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js +0 -44
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js +0 -39
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js +0 -122
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/k8s_machine_workflow.js +0 -31
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/k8s_machine_workflow.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js +0 -52
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js +0 -22
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc.js +0 -73
- package/templates/node_modules/mongodb/lib/cmap/auth/mongodb_oidc.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/plain.js +0 -26
- package/templates/node_modules/mongodb/lib/cmap/auth/plain.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/providers.js +0 -22
- package/templates/node_modules/mongodb/lib/cmap/auth/providers.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/scram.js +0 -254
- package/templates/node_modules/mongodb/lib/cmap/auth/scram.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/auth/x509.js +0 -36
- package/templates/node_modules/mongodb/lib/cmap/auth/x509.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/command_monitoring_events.js +0 -223
- package/templates/node_modules/mongodb/lib/cmap/command_monitoring_events.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/commands.js +0 -535
- package/templates/node_modules/mongodb/lib/cmap/commands.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/connect.js +0 -366
- package/templates/node_modules/mongodb/lib/cmap/connect.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/connection.js +0 -571
- package/templates/node_modules/mongodb/lib/cmap/connection.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/connection_pool.js +0 -558
- package/templates/node_modules/mongodb/lib/cmap/connection_pool.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/connection_pool_events.js +0 -190
- package/templates/node_modules/mongodb/lib/cmap/connection_pool_events.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/errors.js +0 -108
- package/templates/node_modules/mongodb/lib/cmap/errors.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/handshake/client_metadata.js +0 -241
- package/templates/node_modules/mongodb/lib/cmap/handshake/client_metadata.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/metrics.js +0 -62
- package/templates/node_modules/mongodb/lib/cmap/metrics.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/stream_description.js +0 -70
- package/templates/node_modules/mongodb/lib/cmap/stream_description.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/wire_protocol/compression.js +0 -163
- package/templates/node_modules/mongodb/lib/cmap/wire_protocol/compression.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/wire_protocol/constants.js +0 -21
- package/templates/node_modules/mongodb/lib/cmap/wire_protocol/constants.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/wire_protocol/on_data.js +0 -111
- package/templates/node_modules/mongodb/lib/cmap/wire_protocol/on_data.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/wire_protocol/on_demand/document.js +0 -222
- package/templates/node_modules/mongodb/lib/cmap/wire_protocol/on_demand/document.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/wire_protocol/responses.js +0 -315
- package/templates/node_modules/mongodb/lib/cmap/wire_protocol/responses.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cmap/wire_protocol/shared.js +0 -35
- package/templates/node_modules/mongodb/lib/cmap/wire_protocol/shared.js.map +0 -1
- package/templates/node_modules/mongodb/lib/collection.js +0 -751
- package/templates/node_modules/mongodb/lib/collection.js.map +0 -1
- package/templates/node_modules/mongodb/lib/connection_string.js +0 -1089
- package/templates/node_modules/mongodb/lib/connection_string.js.map +0 -1
- package/templates/node_modules/mongodb/lib/constants.js +0 -170
- package/templates/node_modules/mongodb/lib/constants.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cursor/abstract_cursor.js +0 -924
- package/templates/node_modules/mongodb/lib/cursor/abstract_cursor.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cursor/aggregation_cursor.js +0 -164
- package/templates/node_modules/mongodb/lib/cursor/aggregation_cursor.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cursor/change_stream_cursor.js +0 -104
- package/templates/node_modules/mongodb/lib/cursor/change_stream_cursor.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cursor/client_bulk_write_cursor.js +0 -52
- package/templates/node_modules/mongodb/lib/cursor/client_bulk_write_cursor.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cursor/explainable_cursor.js +0 -36
- package/templates/node_modules/mongodb/lib/cursor/explainable_cursor.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cursor/find_cursor.js +0 -399
- package/templates/node_modules/mongodb/lib/cursor/find_cursor.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cursor/list_collections_cursor.js +0 -34
- package/templates/node_modules/mongodb/lib/cursor/list_collections_cursor.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cursor/list_indexes_cursor.js +0 -32
- package/templates/node_modules/mongodb/lib/cursor/list_indexes_cursor.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cursor/list_search_indexes_cursor.js +0 -14
- package/templates/node_modules/mongodb/lib/cursor/list_search_indexes_cursor.js.map +0 -1
- package/templates/node_modules/mongodb/lib/cursor/run_command_cursor.js +0 -94
- package/templates/node_modules/mongodb/lib/cursor/run_command_cursor.js.map +0 -1
- package/templates/node_modules/mongodb/lib/db.js +0 -420
- package/templates/node_modules/mongodb/lib/db.js.map +0 -1
- package/templates/node_modules/mongodb/lib/deps.js +0 -125
- package/templates/node_modules/mongodb/lib/deps.js.map +0 -1
- package/templates/node_modules/mongodb/lib/encrypter.js +0 -106
- package/templates/node_modules/mongodb/lib/encrypter.js.map +0 -1
- package/templates/node_modules/mongodb/lib/error.js +0 -1383
- package/templates/node_modules/mongodb/lib/error.js.map +0 -1
- package/templates/node_modules/mongodb/lib/explain.js +0 -59
- package/templates/node_modules/mongodb/lib/explain.js.map +0 -1
- package/templates/node_modules/mongodb/lib/gridfs/download.js +0 -305
- package/templates/node_modules/mongodb/lib/gridfs/download.js.map +0 -1
- package/templates/node_modules/mongodb/lib/gridfs/index.js +0 -164
- package/templates/node_modules/mongodb/lib/gridfs/index.js.map +0 -1
- package/templates/node_modules/mongodb/lib/gridfs/upload.js +0 -358
- package/templates/node_modules/mongodb/lib/gridfs/upload.js.map +0 -1
- package/templates/node_modules/mongodb/lib/index.js +0 -193
- package/templates/node_modules/mongodb/lib/index.js.map +0 -1
- package/templates/node_modules/mongodb/lib/mongo_client.js +0 -557
- package/templates/node_modules/mongodb/lib/mongo_client.js.map +0 -1
- package/templates/node_modules/mongodb/lib/mongo_client_auth_providers.js +0 -80
- package/templates/node_modules/mongodb/lib/mongo_client_auth_providers.js.map +0 -1
- package/templates/node_modules/mongodb/lib/mongo_logger.js +0 -649
- package/templates/node_modules/mongodb/lib/mongo_logger.js.map +0 -1
- package/templates/node_modules/mongodb/lib/mongo_types.js +0 -56
- package/templates/node_modules/mongodb/lib/mongo_types.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/aggregate.js +0 -90
- package/templates/node_modules/mongodb/lib/operations/aggregate.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/client_bulk_write/client_bulk_write.js +0 -51
- package/templates/node_modules/mongodb/lib/operations/client_bulk_write/client_bulk_write.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/client_bulk_write/command_builder.js +0 -340
- package/templates/node_modules/mongodb/lib/operations/client_bulk_write/command_builder.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/client_bulk_write/common.js +0 -3
- package/templates/node_modules/mongodb/lib/operations/client_bulk_write/common.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/client_bulk_write/executor.js +0 -120
- package/templates/node_modules/mongodb/lib/operations/client_bulk_write/executor.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/client_bulk_write/results_merger.js +0 -204
- package/templates/node_modules/mongodb/lib/operations/client_bulk_write/results_merger.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/command.js +0 -83
- package/templates/node_modules/mongodb/lib/operations/command.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/count.js +0 -45
- package/templates/node_modules/mongodb/lib/operations/count.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/create_collection.js +0 -109
- package/templates/node_modules/mongodb/lib/operations/create_collection.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/delete.js +0 -125
- package/templates/node_modules/mongodb/lib/operations/delete.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/distinct.js +0 -61
- package/templates/node_modules/mongodb/lib/operations/distinct.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/drop.js +0 -93
- package/templates/node_modules/mongodb/lib/operations/drop.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/end_sessions.js +0 -34
- package/templates/node_modules/mongodb/lib/operations/end_sessions.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/estimated_document_count.js +0 -41
- package/templates/node_modules/mongodb/lib/operations/estimated_document_count.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/execute_operation.js +0 -238
- package/templates/node_modules/mongodb/lib/operations/execute_operation.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/find.js +0 -148
- package/templates/node_modules/mongodb/lib/operations/find.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/find_and_modify.js +0 -158
- package/templates/node_modules/mongodb/lib/operations/find_and_modify.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/get_more.js +0 -62
- package/templates/node_modules/mongodb/lib/operations/get_more.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/indexes.js +0 -186
- package/templates/node_modules/mongodb/lib/operations/indexes.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/insert.js +0 -70
- package/templates/node_modules/mongodb/lib/operations/insert.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/kill_cursors.js +0 -43
- package/templates/node_modules/mongodb/lib/operations/kill_cursors.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/list_collections.js +0 -53
- package/templates/node_modules/mongodb/lib/operations/list_collections.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/list_databases.js +0 -40
- package/templates/node_modules/mongodb/lib/operations/list_databases.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/operation.js +0 -102
- package/templates/node_modules/mongodb/lib/operations/operation.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/profiling_level.js +0 -43
- package/templates/node_modules/mongodb/lib/operations/profiling_level.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/remove_user.js +0 -27
- package/templates/node_modules/mongodb/lib/operations/remove_user.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/rename.js +0 -38
- package/templates/node_modules/mongodb/lib/operations/rename.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/run_command.js +0 -47
- package/templates/node_modules/mongodb/lib/operations/run_command.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/search_indexes/create.js +0 -33
- package/templates/node_modules/mongodb/lib/operations/search_indexes/create.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/search_indexes/drop.js +0 -43
- package/templates/node_modules/mongodb/lib/operations/search_indexes/drop.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/search_indexes/update.js +0 -35
- package/templates/node_modules/mongodb/lib/operations/search_indexes/update.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/set_profiling_level.js +0 -53
- package/templates/node_modules/mongodb/lib/operations/set_profiling_level.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/stats.js +0 -27
- package/templates/node_modules/mongodb/lib/operations/stats.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/update.js +0 -188
- package/templates/node_modules/mongodb/lib/operations/update.js.map +0 -1
- package/templates/node_modules/mongodb/lib/operations/validate_collection.js +0 -37
- package/templates/node_modules/mongodb/lib/operations/validate_collection.js.map +0 -1
- package/templates/node_modules/mongodb/lib/read_concern.js +0 -73
- package/templates/node_modules/mongodb/lib/read_concern.js.map +0 -1
- package/templates/node_modules/mongodb/lib/read_preference.js +0 -191
- package/templates/node_modules/mongodb/lib/read_preference.js.map +0 -1
- package/templates/node_modules/mongodb/lib/sdam/common.js +0 -49
- package/templates/node_modules/mongodb/lib/sdam/common.js.map +0 -1
- package/templates/node_modules/mongodb/lib/sdam/events.js +0 -146
- package/templates/node_modules/mongodb/lib/sdam/events.js.map +0 -1
- package/templates/node_modules/mongodb/lib/sdam/monitor.js +0 -544
- package/templates/node_modules/mongodb/lib/sdam/monitor.js.map +0 -1
- package/templates/node_modules/mongodb/lib/sdam/server.js +0 -392
- package/templates/node_modules/mongodb/lib/sdam/server.js.map +0 -1
- package/templates/node_modules/mongodb/lib/sdam/server_description.js +0 -204
- package/templates/node_modules/mongodb/lib/sdam/server_description.js.map +0 -1
- package/templates/node_modules/mongodb/lib/sdam/server_selection.js +0 -231
- package/templates/node_modules/mongodb/lib/sdam/server_selection.js.map +0 -1
- package/templates/node_modules/mongodb/lib/sdam/server_selection_events.js +0 -85
- package/templates/node_modules/mongodb/lib/sdam/server_selection_events.js.map +0 -1
- package/templates/node_modules/mongodb/lib/sdam/srv_polling.js +0 -108
- package/templates/node_modules/mongodb/lib/sdam/srv_polling.js.map +0 -1
- package/templates/node_modules/mongodb/lib/sdam/topology.js +0 -650
- package/templates/node_modules/mongodb/lib/sdam/topology.js.map +0 -1
- package/templates/node_modules/mongodb/lib/sdam/topology_description.js +0 -383
- package/templates/node_modules/mongodb/lib/sdam/topology_description.js.map +0 -1
- package/templates/node_modules/mongodb/lib/sessions.js +0 -828
- package/templates/node_modules/mongodb/lib/sessions.js.map +0 -1
- package/templates/node_modules/mongodb/lib/sort.js +0 -103
- package/templates/node_modules/mongodb/lib/sort.js.map +0 -1
- package/templates/node_modules/mongodb/lib/timeout.js +0 -296
- package/templates/node_modules/mongodb/lib/timeout.js.map +0 -1
- package/templates/node_modules/mongodb/lib/transactions.js +0 -135
- package/templates/node_modules/mongodb/lib/transactions.js.map +0 -1
- package/templates/node_modules/mongodb/lib/utils.js +0 -1189
- package/templates/node_modules/mongodb/lib/utils.js.map +0 -1
- package/templates/node_modules/mongodb/lib/write_concern.js +0 -100
- package/templates/node_modules/mongodb/lib/write_concern.js.map +0 -1
- package/templates/node_modules/mongodb/mongodb.d.ts +0 -9010
- package/templates/node_modules/mongodb/package.json +0 -175
- package/templates/node_modules/mongodb/src/admin.ts +0 -173
- package/templates/node_modules/mongodb/src/bson.ts +0 -148
- package/templates/node_modules/mongodb/src/bulk/common.ts +0 -1251
- package/templates/node_modules/mongodb/src/bulk/ordered.ts +0 -83
- package/templates/node_modules/mongodb/src/bulk/unordered.ts +0 -115
- package/templates/node_modules/mongodb/src/change_stream.ts +0 -1158
- package/templates/node_modules/mongodb/src/client-side-encryption/auto_encrypter.ts +0 -469
- package/templates/node_modules/mongodb/src/client-side-encryption/client_encryption.ts +0 -1150
- package/templates/node_modules/mongodb/src/client-side-encryption/errors.ts +0 -144
- package/templates/node_modules/mongodb/src/client-side-encryption/mongocryptd_manager.ts +0 -100
- package/templates/node_modules/mongodb/src/client-side-encryption/providers/aws.ts +0 -33
- package/templates/node_modules/mongodb/src/client-side-encryption/providers/azure.ts +0 -181
- package/templates/node_modules/mongodb/src/client-side-encryption/providers/gcp.ts +0 -16
- package/templates/node_modules/mongodb/src/client-side-encryption/providers/index.ts +0 -207
- package/templates/node_modules/mongodb/src/client-side-encryption/state_machine.ts +0 -650
- package/templates/node_modules/mongodb/src/cmap/auth/auth_provider.ts +0 -77
- package/templates/node_modules/mongodb/src/cmap/auth/aws_temporary_credentials.ts +0 -127
- package/templates/node_modules/mongodb/src/cmap/auth/gssapi.ts +0 -202
- package/templates/node_modules/mongodb/src/cmap/auth/mongo_credentials.ts +0 -291
- package/templates/node_modules/mongodb/src/cmap/auth/mongodb_aws.ts +0 -186
- package/templates/node_modules/mongodb/src/cmap/auth/mongodb_oidc/automated_callback_workflow.ts +0 -88
- package/templates/node_modules/mongodb/src/cmap/auth/mongodb_oidc/azure_machine_workflow.ts +0 -73
- package/templates/node_modules/mongodb/src/cmap/auth/mongodb_oidc/callback_workflow.ts +0 -188
- package/templates/node_modules/mongodb/src/cmap/auth/mongodb_oidc/command_builders.ts +0 -53
- package/templates/node_modules/mongodb/src/cmap/auth/mongodb_oidc/gcp_machine_workflow.ts +0 -46
- package/templates/node_modules/mongodb/src/cmap/auth/mongodb_oidc/human_callback_workflow.ts +0 -141
- package/templates/node_modules/mongodb/src/cmap/auth/mongodb_oidc/k8s_machine_workflow.ts +0 -30
- package/templates/node_modules/mongodb/src/cmap/auth/mongodb_oidc/token_cache.ts +0 -62
- package/templates/node_modules/mongodb/src/cmap/auth/mongodb_oidc/token_machine_workflow.ts +0 -21
- package/templates/node_modules/mongodb/src/cmap/auth/mongodb_oidc.ts +0 -185
- package/templates/node_modules/mongodb/src/cmap/auth/plain.ts +0 -25
- package/templates/node_modules/mongodb/src/cmap/auth/providers.ts +0 -22
- package/templates/node_modules/mongodb/src/cmap/auth/scram.ts +0 -344
- package/templates/node_modules/mongodb/src/cmap/auth/x509.ts +0 -43
- package/templates/node_modules/mongodb/src/cmap/command_monitoring_events.ts +0 -316
- package/templates/node_modules/mongodb/src/cmap/commands.ts +0 -788
- package/templates/node_modules/mongodb/src/cmap/connect.ts +0 -499
- package/templates/node_modules/mongodb/src/cmap/connection.ts +0 -931
- package/templates/node_modules/mongodb/src/cmap/connection_pool.ts +0 -831
- package/templates/node_modules/mongodb/src/cmap/connection_pool_events.ts +0 -300
- package/templates/node_modules/mongodb/src/cmap/errors.ts +0 -119
- package/templates/node_modules/mongodb/src/cmap/handshake/client_metadata.ts +0 -352
- package/templates/node_modules/mongodb/src/cmap/metrics.ts +0 -58
- package/templates/node_modules/mongodb/src/cmap/stream_description.ts +0 -96
- package/templates/node_modules/mongodb/src/cmap/wire_protocol/compression.ts +0 -197
- package/templates/node_modules/mongodb/src/cmap/wire_protocol/constants.ts +0 -17
- package/templates/node_modules/mongodb/src/cmap/wire_protocol/on_data.ts +0 -139
- package/templates/node_modules/mongodb/src/cmap/wire_protocol/on_demand/document.ts +0 -358
- package/templates/node_modules/mongodb/src/cmap/wire_protocol/responses.ts +0 -393
- package/templates/node_modules/mongodb/src/cmap/wire_protocol/shared.ts +0 -48
- package/templates/node_modules/mongodb/src/collection.ts +0 -1314
- package/templates/node_modules/mongodb/src/connection_string.ts +0 -1296
- package/templates/node_modules/mongodb/src/constants.ts +0 -176
- package/templates/node_modules/mongodb/src/cursor/abstract_cursor.ts +0 -1247
- package/templates/node_modules/mongodb/src/cursor/aggregation_cursor.ts +0 -245
- package/templates/node_modules/mongodb/src/cursor/change_stream_cursor.ts +0 -171
- package/templates/node_modules/mongodb/src/cursor/client_bulk_write_cursor.ts +0 -83
- package/templates/node_modules/mongodb/src/cursor/explainable_cursor.ts +0 -51
- package/templates/node_modules/mongodb/src/cursor/find_cursor.ts +0 -497
- package/templates/node_modules/mongodb/src/cursor/list_collections_cursor.ts +0 -50
- package/templates/node_modules/mongodb/src/cursor/list_indexes_cursor.ts +0 -37
- package/templates/node_modules/mongodb/src/cursor/list_search_indexes_cursor.ts +0 -20
- package/templates/node_modules/mongodb/src/cursor/run_command_cursor.ts +0 -178
- package/templates/node_modules/mongodb/src/db.ts +0 -622
- package/templates/node_modules/mongodb/src/deps.ts +0 -287
- package/templates/node_modules/mongodb/src/encrypter.ts +0 -127
- package/templates/node_modules/mongodb/src/error.ts +0 -1571
- package/templates/node_modules/mongodb/src/explain.ts +0 -124
- package/templates/node_modules/mongodb/src/gridfs/download.ts +0 -483
- package/templates/node_modules/mongodb/src/gridfs/index.ts +0 -264
- package/templates/node_modules/mongodb/src/gridfs/upload.ts +0 -537
- package/templates/node_modules/mongodb/src/index.ts +0 -633
- package/templates/node_modules/mongodb/src/mongo_client.ts +0 -1155
- package/templates/node_modules/mongodb/src/mongo_client_auth_providers.ts +0 -87
- package/templates/node_modules/mongodb/src/mongo_logger.ts +0 -1076
- package/templates/node_modules/mongodb/src/mongo_types.ts +0 -678
- package/templates/node_modules/mongodb/src/operations/aggregate.ts +0 -153
- package/templates/node_modules/mongodb/src/operations/client_bulk_write/client_bulk_write.ts +0 -72
- package/templates/node_modules/mongodb/src/operations/client_bulk_write/command_builder.ts +0 -487
- package/templates/node_modules/mongodb/src/operations/client_bulk_write/common.ts +0 -276
- package/templates/node_modules/mongodb/src/operations/client_bulk_write/executor.ts +0 -149
- package/templates/node_modules/mongodb/src/operations/client_bulk_write/results_merger.ts +0 -260
- package/templates/node_modules/mongodb/src/operations/command.ts +0 -171
- package/templates/node_modules/mongodb/src/operations/count.ts +0 -74
- package/templates/node_modules/mongodb/src/operations/create_collection.ts +0 -218
- package/templates/node_modules/mongodb/src/operations/delete.ts +0 -183
- package/templates/node_modules/mongodb/src/operations/distinct.ts +0 -92
- package/templates/node_modules/mongodb/src/operations/drop.ts +0 -130
- package/templates/node_modules/mongodb/src/operations/end_sessions.ts +0 -44
- package/templates/node_modules/mongodb/src/operations/estimated_document_count.ts +0 -61
- package/templates/node_modules/mongodb/src/operations/execute_operation.ts +0 -318
- package/templates/node_modules/mongodb/src/operations/find.ts +0 -254
- package/templates/node_modules/mongodb/src/operations/find_and_modify.ts +0 -319
- package/templates/node_modules/mongodb/src/operations/get_more.ts +0 -108
- package/templates/node_modules/mongodb/src/operations/indexes.ts +0 -418
- package/templates/node_modules/mongodb/src/operations/insert.ts +0 -108
- package/templates/node_modules/mongodb/src/operations/kill_cursors.ts +0 -64
- package/templates/node_modules/mongodb/src/operations/list_collections.ts +0 -108
- package/templates/node_modules/mongodb/src/operations/list_databases.ts +0 -68
- package/templates/node_modules/mongodb/src/operations/operation.ts +0 -181
- package/templates/node_modules/mongodb/src/operations/profiling_level.ts +0 -46
- package/templates/node_modules/mongodb/src/operations/remove_user.ts +0 -36
- package/templates/node_modules/mongodb/src/operations/rename.ts +0 -55
- package/templates/node_modules/mongodb/src/operations/run_command.ts +0 -79
- package/templates/node_modules/mongodb/src/operations/search_indexes/create.ts +0 -56
- package/templates/node_modules/mongodb/src/operations/search_indexes/drop.ts +0 -58
- package/templates/node_modules/mongodb/src/operations/search_indexes/update.ts +0 -45
- package/templates/node_modules/mongodb/src/operations/set_profiling_level.ts +0 -74
- package/templates/node_modules/mongodb/src/operations/stats.ts +0 -37
- package/templates/node_modules/mongodb/src/operations/update.ts +0 -318
- package/templates/node_modules/mongodb/src/operations/validate_collection.ts +0 -50
- package/templates/node_modules/mongodb/src/read_concern.ts +0 -88
- package/templates/node_modules/mongodb/src/read_preference.ts +0 -256
- package/templates/node_modules/mongodb/src/sdam/common.ts +0 -74
- package/templates/node_modules/mongodb/src/sdam/events.ts +0 -219
- package/templates/node_modules/mongodb/src/sdam/monitor.ts +0 -771
- package/templates/node_modules/mongodb/src/sdam/server.ts +0 -577
- package/templates/node_modules/mongodb/src/sdam/server_description.ts +0 -291
- package/templates/node_modules/mongodb/src/sdam/server_selection.ts +0 -323
- package/templates/node_modules/mongodb/src/sdam/server_selection_events.ts +0 -142
- package/templates/node_modules/mongodb/src/sdam/srv_polling.ts +0 -146
- package/templates/node_modules/mongodb/src/sdam/topology.ts +0 -1096
- package/templates/node_modules/mongodb/src/sdam/topology_description.ts +0 -548
- package/templates/node_modules/mongodb/src/sessions.ts +0 -1160
- package/templates/node_modules/mongodb/src/sort.ts +0 -141
- package/templates/node_modules/mongodb/src/timeout.ts +0 -405
- package/templates/node_modules/mongodb/src/transactions.ts +0 -181
- package/templates/node_modules/mongodb/src/utils.ts +0 -1491
- package/templates/node_modules/mongodb/src/write_concern.ts +0 -183
- package/templates/node_modules/mongodb/tsconfig.json +0 -46
- package/templates/node_modules/mongodb-connection-string-url/.esm-wrapper.mjs +0 -6
- package/templates/node_modules/mongodb-connection-string-url/LICENSE +0 -192
- package/templates/node_modules/mongodb-connection-string-url/README.md +0 -25
- package/templates/node_modules/mongodb-connection-string-url/lib/index.d.ts +0 -63
- package/templates/node_modules/mongodb-connection-string-url/lib/index.js +0 -239
- package/templates/node_modules/mongodb-connection-string-url/lib/index.js.map +0 -1
- package/templates/node_modules/mongodb-connection-string-url/lib/redact.d.ts +0 -7
- package/templates/node_modules/mongodb-connection-string-url/lib/redact.js +0 -97
- package/templates/node_modules/mongodb-connection-string-url/lib/redact.js.map +0 -1
- package/templates/node_modules/mongodb-connection-string-url/package.json +0 -71
- package/templates/node_modules/mongoose/LICENSE.md +0 -22
- package/templates/node_modules/mongoose/README.md +0 -397
- package/templates/node_modules/mongoose/SECURITY.md +0 -1
- package/templates/node_modules/mongoose/eslint.config.mjs +0 -198
- package/templates/node_modules/mongoose/index.js +0 -64
- package/templates/node_modules/mongoose/lib/aggregate.js +0 -1189
- package/templates/node_modules/mongoose/lib/cast/bigint.js +0 -46
- package/templates/node_modules/mongoose/lib/cast/boolean.js +0 -32
- package/templates/node_modules/mongoose/lib/cast/date.js +0 -41
- package/templates/node_modules/mongoose/lib/cast/decimal128.js +0 -39
- package/templates/node_modules/mongoose/lib/cast/double.js +0 -50
- package/templates/node_modules/mongoose/lib/cast/int32.js +0 -36
- package/templates/node_modules/mongoose/lib/cast/number.js +0 -42
- package/templates/node_modules/mongoose/lib/cast/objectid.js +0 -29
- package/templates/node_modules/mongoose/lib/cast/string.js +0 -37
- package/templates/node_modules/mongoose/lib/cast/uuid.js +0 -35
- package/templates/node_modules/mongoose/lib/cast.js +0 -444
- package/templates/node_modules/mongoose/lib/collection.js +0 -321
- package/templates/node_modules/mongoose/lib/connection.js +0 -1849
- package/templates/node_modules/mongoose/lib/connectionState.js +0 -26
- package/templates/node_modules/mongoose/lib/constants.js +0 -73
- package/templates/node_modules/mongoose/lib/cursor/aggregationCursor.js +0 -466
- package/templates/node_modules/mongoose/lib/cursor/changeStream.js +0 -198
- package/templates/node_modules/mongoose/lib/cursor/queryCursor.js +0 -622
- package/templates/node_modules/mongoose/lib/document.js +0 -5481
- package/templates/node_modules/mongoose/lib/driver.js +0 -15
- package/templates/node_modules/mongoose/lib/drivers/SPEC.md +0 -4
- package/templates/node_modules/mongoose/lib/drivers/node-mongodb-native/bulkWriteResult.js +0 -5
- package/templates/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js +0 -405
- package/templates/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js +0 -521
- package/templates/node_modules/mongoose/lib/drivers/node-mongodb-native/index.js +0 -10
- package/templates/node_modules/mongoose/lib/error/browserMissingSchema.js +0 -29
- package/templates/node_modules/mongoose/lib/error/bulkSaveIncompleteError.js +0 -44
- package/templates/node_modules/mongoose/lib/error/bulkWriteError.js +0 -41
- package/templates/node_modules/mongoose/lib/error/cast.js +0 -158
- package/templates/node_modules/mongoose/lib/error/createCollectionsError.js +0 -26
- package/templates/node_modules/mongoose/lib/error/divergentArray.js +0 -40
- package/templates/node_modules/mongoose/lib/error/eachAsyncMultiError.js +0 -41
- package/templates/node_modules/mongoose/lib/error/index.js +0 -237
- package/templates/node_modules/mongoose/lib/error/invalidSchemaOption.js +0 -32
- package/templates/node_modules/mongoose/lib/error/messages.js +0 -47
- package/templates/node_modules/mongoose/lib/error/missingSchema.js +0 -33
- package/templates/node_modules/mongoose/lib/error/mongooseError.js +0 -13
- package/templates/node_modules/mongoose/lib/error/notFound.js +0 -47
- package/templates/node_modules/mongoose/lib/error/objectExpected.js +0 -31
- package/templates/node_modules/mongoose/lib/error/objectParameter.js +0 -31
- package/templates/node_modules/mongoose/lib/error/overwriteModel.js +0 -31
- package/templates/node_modules/mongoose/lib/error/parallelSave.js +0 -33
- package/templates/node_modules/mongoose/lib/error/parallelValidate.js +0 -33
- package/templates/node_modules/mongoose/lib/error/serverSelection.js +0 -62
- package/templates/node_modules/mongoose/lib/error/setOptionError.js +0 -103
- package/templates/node_modules/mongoose/lib/error/strict.js +0 -35
- package/templates/node_modules/mongoose/lib/error/strictPopulate.js +0 -31
- package/templates/node_modules/mongoose/lib/error/syncIndexes.js +0 -30
- package/templates/node_modules/mongoose/lib/error/validation.js +0 -97
- package/templates/node_modules/mongoose/lib/error/validator.js +0 -100
- package/templates/node_modules/mongoose/lib/error/version.js +0 -38
- package/templates/node_modules/mongoose/lib/helpers/aggregate/prepareDiscriminatorPipeline.js +0 -39
- package/templates/node_modules/mongoose/lib/helpers/aggregate/stringifyFunctionOperators.js +0 -50
- package/templates/node_modules/mongoose/lib/helpers/arrayDepth.js +0 -33
- package/templates/node_modules/mongoose/lib/helpers/clone.js +0 -204
- package/templates/node_modules/mongoose/lib/helpers/common.js +0 -127
- package/templates/node_modules/mongoose/lib/helpers/createJSONSchemaTypeDefinition.js +0 -24
- package/templates/node_modules/mongoose/lib/helpers/cursor/eachAsync.js +0 -225
- package/templates/node_modules/mongoose/lib/helpers/discriminator/applyEmbeddedDiscriminators.js +0 -36
- package/templates/node_modules/mongoose/lib/helpers/discriminator/areDiscriminatorValuesEqual.js +0 -16
- package/templates/node_modules/mongoose/lib/helpers/discriminator/checkEmbeddedDiscriminatorKeyProjection.js +0 -12
- package/templates/node_modules/mongoose/lib/helpers/discriminator/getConstructor.js +0 -29
- package/templates/node_modules/mongoose/lib/helpers/discriminator/getDiscriminatorByValue.js +0 -28
- package/templates/node_modules/mongoose/lib/helpers/discriminator/getSchemaDiscriminatorByValue.js +0 -27
- package/templates/node_modules/mongoose/lib/helpers/discriminator/mergeDiscriminatorSchema.js +0 -91
- package/templates/node_modules/mongoose/lib/helpers/document/applyDefaults.js +0 -132
- package/templates/node_modules/mongoose/lib/helpers/document/applyTimestamps.js +0 -105
- package/templates/node_modules/mongoose/lib/helpers/document/applyVirtuals.js +0 -146
- package/templates/node_modules/mongoose/lib/helpers/document/cleanModifiedSubpaths.js +0 -45
- package/templates/node_modules/mongoose/lib/helpers/document/compile.js +0 -238
- package/templates/node_modules/mongoose/lib/helpers/document/getDeepestSubdocumentForPath.js +0 -38
- package/templates/node_modules/mongoose/lib/helpers/document/getEmbeddedDiscriminatorPath.js +0 -53
- package/templates/node_modules/mongoose/lib/helpers/document/handleSpreadDoc.js +0 -35
- package/templates/node_modules/mongoose/lib/helpers/each.js +0 -25
- package/templates/node_modules/mongoose/lib/helpers/error/combinePathErrors.js +0 -22
- package/templates/node_modules/mongoose/lib/helpers/firstKey.js +0 -8
- package/templates/node_modules/mongoose/lib/helpers/get.js +0 -65
- package/templates/node_modules/mongoose/lib/helpers/getConstructorName.js +0 -16
- package/templates/node_modules/mongoose/lib/helpers/getDefaultBulkwriteResult.js +0 -18
- package/templates/node_modules/mongoose/lib/helpers/getFunctionName.js +0 -10
- package/templates/node_modules/mongoose/lib/helpers/immediate.js +0 -16
- package/templates/node_modules/mongoose/lib/helpers/indexes/applySchemaCollation.js +0 -13
- package/templates/node_modules/mongoose/lib/helpers/indexes/decorateDiscriminatorIndexOptions.js +0 -14
- package/templates/node_modules/mongoose/lib/helpers/indexes/getRelatedIndexes.js +0 -63
- package/templates/node_modules/mongoose/lib/helpers/indexes/isDefaultIdIndex.js +0 -18
- package/templates/node_modules/mongoose/lib/helpers/indexes/isIndexEqual.js +0 -95
- package/templates/node_modules/mongoose/lib/helpers/indexes/isIndexSpecEqual.js +0 -32
- package/templates/node_modules/mongoose/lib/helpers/indexes/isTextIndex.js +0 -16
- package/templates/node_modules/mongoose/lib/helpers/indexes/isTimeseriesIndex.js +0 -16
- package/templates/node_modules/mongoose/lib/helpers/isAsyncFunction.js +0 -9
- package/templates/node_modules/mongoose/lib/helpers/isBsonType.js +0 -15
- package/templates/node_modules/mongoose/lib/helpers/isMongooseObject.js +0 -22
- package/templates/node_modules/mongoose/lib/helpers/isObject.js +0 -16
- package/templates/node_modules/mongoose/lib/helpers/isPOJO.js +0 -12
- package/templates/node_modules/mongoose/lib/helpers/isPromise.js +0 -6
- package/templates/node_modules/mongoose/lib/helpers/isSimpleValidator.js +0 -22
- package/templates/node_modules/mongoose/lib/helpers/minimize.js +0 -41
- package/templates/node_modules/mongoose/lib/helpers/model/applyDefaultsToPOJO.js +0 -52
- package/templates/node_modules/mongoose/lib/helpers/model/applyHooks.js +0 -140
- package/templates/node_modules/mongoose/lib/helpers/model/applyMethods.js +0 -70
- package/templates/node_modules/mongoose/lib/helpers/model/applyStaticHooks.js +0 -33
- package/templates/node_modules/mongoose/lib/helpers/model/applyStatics.js +0 -13
- package/templates/node_modules/mongoose/lib/helpers/model/castBulkWrite.js +0 -320
- package/templates/node_modules/mongoose/lib/helpers/model/decorateBulkWriteResult.js +0 -8
- package/templates/node_modules/mongoose/lib/helpers/model/discriminator.js +0 -265
- package/templates/node_modules/mongoose/lib/helpers/model/pushNestedArrayPaths.js +0 -15
- package/templates/node_modules/mongoose/lib/helpers/omitUndefined.js +0 -20
- package/templates/node_modules/mongoose/lib/helpers/once.js +0 -12
- package/templates/node_modules/mongoose/lib/helpers/parallelLimit.js +0 -37
- package/templates/node_modules/mongoose/lib/helpers/path/parentPaths.js +0 -18
- package/templates/node_modules/mongoose/lib/helpers/path/setDottedPath.js +0 -33
- package/templates/node_modules/mongoose/lib/helpers/pluralize.js +0 -95
- package/templates/node_modules/mongoose/lib/helpers/populate/assignRawDocsToIdStructure.js +0 -129
- package/templates/node_modules/mongoose/lib/helpers/populate/assignVals.js +0 -360
- package/templates/node_modules/mongoose/lib/helpers/populate/createPopulateQueryFilter.js +0 -97
- package/templates/node_modules/mongoose/lib/helpers/populate/getModelsMapForPopulate.js +0 -774
- package/templates/node_modules/mongoose/lib/helpers/populate/getSchemaTypes.js +0 -229
- package/templates/node_modules/mongoose/lib/helpers/populate/getVirtual.js +0 -103
- package/templates/node_modules/mongoose/lib/helpers/populate/leanPopulateMap.js +0 -7
- package/templates/node_modules/mongoose/lib/helpers/populate/lookupLocalFields.js +0 -40
- package/templates/node_modules/mongoose/lib/helpers/populate/markArraySubdocsPopulated.js +0 -49
- package/templates/node_modules/mongoose/lib/helpers/populate/modelNamesFromRefPath.js +0 -66
- package/templates/node_modules/mongoose/lib/helpers/populate/removeDeselectedForeignField.js +0 -31
- package/templates/node_modules/mongoose/lib/helpers/populate/setPopulatedVirtualValue.js +0 -33
- package/templates/node_modules/mongoose/lib/helpers/populate/skipPopulateValue.js +0 -10
- package/templates/node_modules/mongoose/lib/helpers/populate/validateRef.js +0 -19
- package/templates/node_modules/mongoose/lib/helpers/printJestWarning.js +0 -21
- package/templates/node_modules/mongoose/lib/helpers/processConnectionOptions.js +0 -65
- package/templates/node_modules/mongoose/lib/helpers/projection/applyProjection.js +0 -83
- package/templates/node_modules/mongoose/lib/helpers/projection/hasIncludedChildren.js +0 -41
- package/templates/node_modules/mongoose/lib/helpers/projection/isDefiningProjection.js +0 -18
- package/templates/node_modules/mongoose/lib/helpers/projection/isExclusive.js +0 -37
- package/templates/node_modules/mongoose/lib/helpers/projection/isInclusive.js +0 -39
- package/templates/node_modules/mongoose/lib/helpers/projection/isNestedProjection.js +0 -8
- package/templates/node_modules/mongoose/lib/helpers/projection/isPathExcluded.js +0 -40
- package/templates/node_modules/mongoose/lib/helpers/projection/isPathSelectedInclusive.js +0 -28
- package/templates/node_modules/mongoose/lib/helpers/projection/isSubpath.js +0 -14
- package/templates/node_modules/mongoose/lib/helpers/projection/parseProjection.js +0 -33
- package/templates/node_modules/mongoose/lib/helpers/query/applyGlobalOption.js +0 -29
- package/templates/node_modules/mongoose/lib/helpers/query/cast$expr.js +0 -287
- package/templates/node_modules/mongoose/lib/helpers/query/castFilterPath.js +0 -54
- package/templates/node_modules/mongoose/lib/helpers/query/castUpdate.js +0 -643
- package/templates/node_modules/mongoose/lib/helpers/query/getEmbeddedDiscriminatorPath.js +0 -103
- package/templates/node_modules/mongoose/lib/helpers/query/handleImmutable.js +0 -44
- package/templates/node_modules/mongoose/lib/helpers/query/handleReadPreferenceAliases.js +0 -23
- package/templates/node_modules/mongoose/lib/helpers/query/hasDollarKeys.js +0 -23
- package/templates/node_modules/mongoose/lib/helpers/query/isOperator.js +0 -14
- package/templates/node_modules/mongoose/lib/helpers/query/sanitizeFilter.js +0 -38
- package/templates/node_modules/mongoose/lib/helpers/query/sanitizeProjection.js +0 -14
- package/templates/node_modules/mongoose/lib/helpers/query/selectPopulatedFields.js +0 -62
- package/templates/node_modules/mongoose/lib/helpers/query/trusted.js +0 -13
- package/templates/node_modules/mongoose/lib/helpers/query/validOps.js +0 -3
- package/templates/node_modules/mongoose/lib/helpers/schema/addAutoId.js +0 -7
- package/templates/node_modules/mongoose/lib/helpers/schema/applyBuiltinPlugins.js +0 -12
- package/templates/node_modules/mongoose/lib/helpers/schema/applyPlugins.js +0 -55
- package/templates/node_modules/mongoose/lib/helpers/schema/applyReadConcern.js +0 -20
- package/templates/node_modules/mongoose/lib/helpers/schema/applyWriteConcern.js +0 -37
- package/templates/node_modules/mongoose/lib/helpers/schema/cleanPositionalOperators.js +0 -12
- package/templates/node_modules/mongoose/lib/helpers/schema/getIndexes.js +0 -171
- package/templates/node_modules/mongoose/lib/helpers/schema/getKeysInSchemaOrder.js +0 -28
- package/templates/node_modules/mongoose/lib/helpers/schema/getPath.js +0 -43
- package/templates/node_modules/mongoose/lib/helpers/schema/getSubdocumentStrictValue.js +0 -32
- package/templates/node_modules/mongoose/lib/helpers/schema/handleIdOption.js +0 -20
- package/templates/node_modules/mongoose/lib/helpers/schema/handleTimestampOption.js +0 -24
- package/templates/node_modules/mongoose/lib/helpers/schema/idGetter.js +0 -34
- package/templates/node_modules/mongoose/lib/helpers/schema/merge.js +0 -36
- package/templates/node_modules/mongoose/lib/helpers/schematype/handleImmutable.js +0 -50
- package/templates/node_modules/mongoose/lib/helpers/setDefaultsOnInsert.js +0 -161
- package/templates/node_modules/mongoose/lib/helpers/specialProperties.js +0 -3
- package/templates/node_modules/mongoose/lib/helpers/symbols.js +0 -20
- package/templates/node_modules/mongoose/lib/helpers/timers.js +0 -3
- package/templates/node_modules/mongoose/lib/helpers/timestamps/setDocumentTimestamps.js +0 -26
- package/templates/node_modules/mongoose/lib/helpers/timestamps/setupTimestamps.js +0 -107
- package/templates/node_modules/mongoose/lib/helpers/topology/allServersUnknown.js +0 -12
- package/templates/node_modules/mongoose/lib/helpers/topology/isAtlas.js +0 -31
- package/templates/node_modules/mongoose/lib/helpers/topology/isSSLError.js +0 -16
- package/templates/node_modules/mongoose/lib/helpers/update/applyTimestampsToChildren.js +0 -193
- package/templates/node_modules/mongoose/lib/helpers/update/applyTimestampsToUpdate.js +0 -130
- package/templates/node_modules/mongoose/lib/helpers/update/castArrayFilters.js +0 -113
- package/templates/node_modules/mongoose/lib/helpers/update/decorateUpdateWithVersionKey.js +0 -35
- package/templates/node_modules/mongoose/lib/helpers/update/modifiedPaths.js +0 -33
- package/templates/node_modules/mongoose/lib/helpers/update/moveImmutableProperties.js +0 -53
- package/templates/node_modules/mongoose/lib/helpers/update/removeUnusedArrayFilters.js +0 -32
- package/templates/node_modules/mongoose/lib/helpers/update/updatedPathsByArrayFilter.js +0 -27
- package/templates/node_modules/mongoose/lib/helpers/updateValidators.js +0 -193
- package/templates/node_modules/mongoose/lib/index.js +0 -17
- package/templates/node_modules/mongoose/lib/internal.js +0 -46
- package/templates/node_modules/mongoose/lib/model.js +0 -5021
- package/templates/node_modules/mongoose/lib/modifiedPathsSnapshot.js +0 -9
- package/templates/node_modules/mongoose/lib/mongoose.js +0 -1411
- package/templates/node_modules/mongoose/lib/options/populateOptions.js +0 -36
- package/templates/node_modules/mongoose/lib/options/propertyOptions.js +0 -8
- package/templates/node_modules/mongoose/lib/options/saveOptions.js +0 -16
- package/templates/node_modules/mongoose/lib/options/schemaArrayOptions.js +0 -78
- package/templates/node_modules/mongoose/lib/options/schemaBufferOptions.js +0 -38
- package/templates/node_modules/mongoose/lib/options/schemaDateOptions.js +0 -71
- package/templates/node_modules/mongoose/lib/options/schemaDocumentArrayOptions.js +0 -68
- package/templates/node_modules/mongoose/lib/options/schemaMapOptions.js +0 -43
- package/templates/node_modules/mongoose/lib/options/schemaNumberOptions.js +0 -101
- package/templates/node_modules/mongoose/lib/options/schemaObjectIdOptions.js +0 -64
- package/templates/node_modules/mongoose/lib/options/schemaStringOptions.js +0 -138
- package/templates/node_modules/mongoose/lib/options/schemaSubdocumentOptions.js +0 -66
- package/templates/node_modules/mongoose/lib/options/schemaTypeOptions.js +0 -244
- package/templates/node_modules/mongoose/lib/options/schemaUnionOptions.js +0 -32
- package/templates/node_modules/mongoose/lib/options/virtualOptions.js +0 -164
- package/templates/node_modules/mongoose/lib/options.js +0 -17
- package/templates/node_modules/mongoose/lib/plugins/index.js +0 -6
- package/templates/node_modules/mongoose/lib/plugins/saveSubdocs.js +0 -75
- package/templates/node_modules/mongoose/lib/plugins/sharding.js +0 -84
- package/templates/node_modules/mongoose/lib/plugins/trackTransaction.js +0 -85
- package/templates/node_modules/mongoose/lib/plugins/validateBeforeSave.js +0 -41
- package/templates/node_modules/mongoose/lib/query.js +0 -5649
- package/templates/node_modules/mongoose/lib/queryHelpers.js +0 -390
- package/templates/node_modules/mongoose/lib/schema/array.js +0 -701
- package/templates/node_modules/mongoose/lib/schema/bigint.js +0 -282
- package/templates/node_modules/mongoose/lib/schema/boolean.js +0 -332
- package/templates/node_modules/mongoose/lib/schema/buffer.js +0 -343
- package/templates/node_modules/mongoose/lib/schema/date.js +0 -467
- package/templates/node_modules/mongoose/lib/schema/decimal128.js +0 -263
- package/templates/node_modules/mongoose/lib/schema/documentArray.js +0 -664
- package/templates/node_modules/mongoose/lib/schema/documentArrayElement.js +0 -107
- package/templates/node_modules/mongoose/lib/schema/double.js +0 -246
- package/templates/node_modules/mongoose/lib/schema/index.js +0 -31
- package/templates/node_modules/mongoose/lib/schema/int32.js +0 -289
- package/templates/node_modules/mongoose/lib/schema/map.js +0 -201
- package/templates/node_modules/mongoose/lib/schema/mixed.js +0 -146
- package/templates/node_modules/mongoose/lib/schema/number.js +0 -492
- package/templates/node_modules/mongoose/lib/schema/objectId.js +0 -333
- package/templates/node_modules/mongoose/lib/schema/operators/bitwise.js +0 -38
- package/templates/node_modules/mongoose/lib/schema/operators/exists.js +0 -12
- package/templates/node_modules/mongoose/lib/schema/operators/geospatial.js +0 -107
- package/templates/node_modules/mongoose/lib/schema/operators/helpers.js +0 -32
- package/templates/node_modules/mongoose/lib/schema/operators/text.js +0 -39
- package/templates/node_modules/mongoose/lib/schema/operators/type.js +0 -20
- package/templates/node_modules/mongoose/lib/schema/string.js +0 -733
- package/templates/node_modules/mongoose/lib/schema/subdocument.js +0 -439
- package/templates/node_modules/mongoose/lib/schema/symbols.js +0 -5
- package/templates/node_modules/mongoose/lib/schema/union.js +0 -113
- package/templates/node_modules/mongoose/lib/schema/uuid.js +0 -305
- package/templates/node_modules/mongoose/lib/schema.js +0 -3227
- package/templates/node_modules/mongoose/lib/schemaType.js +0 -1835
- package/templates/node_modules/mongoose/lib/stateMachine.js +0 -232
- package/templates/node_modules/mongoose/lib/types/array/index.js +0 -119
- package/templates/node_modules/mongoose/lib/types/array/isMongooseArray.js +0 -5
- package/templates/node_modules/mongoose/lib/types/array/methods/index.js +0 -1065
- package/templates/node_modules/mongoose/lib/types/arraySubdocument.js +0 -197
- package/templates/node_modules/mongoose/lib/types/buffer.js +0 -294
- package/templates/node_modules/mongoose/lib/types/decimal128.js +0 -13
- package/templates/node_modules/mongoose/lib/types/documentArray/index.js +0 -113
- package/templates/node_modules/mongoose/lib/types/documentArray/isMongooseDocumentArray.js +0 -5
- package/templates/node_modules/mongoose/lib/types/documentArray/methods/index.js +0 -415
- package/templates/node_modules/mongoose/lib/types/double.js +0 -13
- package/templates/node_modules/mongoose/lib/types/index.js +0 -23
- package/templates/node_modules/mongoose/lib/types/map.js +0 -419
- package/templates/node_modules/mongoose/lib/types/objectid.js +0 -41
- package/templates/node_modules/mongoose/lib/types/subdocument.js +0 -454
- package/templates/node_modules/mongoose/lib/types/uuid.js +0 -13
- package/templates/node_modules/mongoose/lib/utils.js +0 -1038
- package/templates/node_modules/mongoose/lib/validOptions.js +0 -42
- package/templates/node_modules/mongoose/lib/virtualType.js +0 -204
- package/templates/node_modules/mongoose/package.json +0 -143
- package/templates/node_modules/mongoose/types/aggregate.d.ts +0 -180
- package/templates/node_modules/mongoose/types/augmentations.d.ts +0 -9
- package/templates/node_modules/mongoose/types/callback.d.ts +0 -8
- package/templates/node_modules/mongoose/types/collection.d.ts +0 -49
- package/templates/node_modules/mongoose/types/connection.d.ts +0 -297
- package/templates/node_modules/mongoose/types/cursor.d.ts +0 -67
- package/templates/node_modules/mongoose/types/document.d.ts +0 -374
- package/templates/node_modules/mongoose/types/error.d.ts +0 -143
- package/templates/node_modules/mongoose/types/expressions.d.ts +0 -3053
- package/templates/node_modules/mongoose/types/helpers.d.ts +0 -32
- package/templates/node_modules/mongoose/types/index.d.ts +0 -1046
- package/templates/node_modules/mongoose/types/indexes.d.ts +0 -97
- package/templates/node_modules/mongoose/types/inferhydrateddoctype.d.ts +0 -115
- package/templates/node_modules/mongoose/types/inferrawdoctype.d.ts +0 -135
- package/templates/node_modules/mongoose/types/inferschematype.d.ts +0 -337
- package/templates/node_modules/mongoose/types/middlewares.d.ts +0 -48
- package/templates/node_modules/mongoose/types/models.d.ts +0 -1291
- package/templates/node_modules/mongoose/types/mongooseoptions.d.ts +0 -228
- package/templates/node_modules/mongoose/types/pipelinestage.d.ts +0 -333
- package/templates/node_modules/mongoose/types/populate.d.ts +0 -53
- package/templates/node_modules/mongoose/types/query.d.ts +0 -934
- package/templates/node_modules/mongoose/types/schemaoptions.d.ts +0 -280
- package/templates/node_modules/mongoose/types/schematypes.d.ts +0 -645
- package/templates/node_modules/mongoose/types/session.d.ts +0 -32
- package/templates/node_modules/mongoose/types/types.d.ts +0 -109
- package/templates/node_modules/mongoose/types/utility.d.ts +0 -175
- package/templates/node_modules/mongoose/types/validation.d.ts +0 -39
- package/templates/node_modules/mongoose/types/virtuals.d.ts +0 -14
- package/templates/node_modules/morgan/HISTORY.md +0 -221
- package/templates/node_modules/morgan/LICENSE +0 -23
- package/templates/node_modules/morgan/README.md +0 -436
- package/templates/node_modules/morgan/index.js +0 -544
- package/templates/node_modules/morgan/node_modules/debug/.coveralls.yml +0 -1
- package/templates/node_modules/morgan/node_modules/debug/.eslintrc +0 -11
- package/templates/node_modules/morgan/node_modules/debug/.travis.yml +0 -14
- package/templates/node_modules/morgan/node_modules/debug/CHANGELOG.md +0 -362
- package/templates/node_modules/morgan/node_modules/debug/LICENSE +0 -19
- package/templates/node_modules/morgan/node_modules/debug/Makefile +0 -50
- package/templates/node_modules/morgan/node_modules/debug/README.md +0 -312
- package/templates/node_modules/morgan/node_modules/debug/component.json +0 -19
- package/templates/node_modules/morgan/node_modules/debug/karma.conf.js +0 -70
- package/templates/node_modules/morgan/node_modules/debug/node.js +0 -1
- package/templates/node_modules/morgan/node_modules/debug/package.json +0 -49
- package/templates/node_modules/morgan/node_modules/debug/src/browser.js +0 -185
- package/templates/node_modules/morgan/node_modules/debug/src/debug.js +0 -202
- package/templates/node_modules/morgan/node_modules/debug/src/index.js +0 -10
- package/templates/node_modules/morgan/node_modules/debug/src/inspector-log.js +0 -15
- package/templates/node_modules/morgan/node_modules/debug/src/node.js +0 -248
- package/templates/node_modules/morgan/node_modules/ms/index.js +0 -152
- package/templates/node_modules/morgan/node_modules/ms/license.md +0 -21
- package/templates/node_modules/morgan/node_modules/ms/package.json +0 -37
- package/templates/node_modules/morgan/node_modules/ms/readme.md +0 -51
- package/templates/node_modules/morgan/node_modules/on-finished/HISTORY.md +0 -88
- package/templates/node_modules/morgan/node_modules/on-finished/LICENSE +0 -23
- package/templates/node_modules/morgan/node_modules/on-finished/README.md +0 -154
- package/templates/node_modules/morgan/node_modules/on-finished/index.js +0 -196
- package/templates/node_modules/morgan/node_modules/on-finished/package.json +0 -31
- package/templates/node_modules/morgan/package.json +0 -52
- package/templates/node_modules/mpath/.travis.yml +0 -9
- package/templates/node_modules/mpath/History.md +0 -88
- package/templates/node_modules/mpath/LICENSE +0 -22
- package/templates/node_modules/mpath/README.md +0 -278
- package/templates/node_modules/mpath/SECURITY.md +0 -5
- package/templates/node_modules/mpath/index.js +0 -3
- package/templates/node_modules/mpath/lib/index.js +0 -336
- package/templates/node_modules/mpath/lib/stringToParts.js +0 -48
- package/templates/node_modules/mpath/package.json +0 -144
- package/templates/node_modules/mpath/test/.eslintrc.yml +0 -4
- package/templates/node_modules/mpath/test/index.js +0 -1879
- package/templates/node_modules/mpath/test/stringToParts.js +0 -30
- package/templates/node_modules/mquery/.github/ISSUE_TEMPLATE.md +0 -11
- package/templates/node_modules/mquery/.github/PULL_REQUEST_TEMPLATE.md +0 -9
- package/templates/node_modules/mquery/History.md +0 -393
- package/templates/node_modules/mquery/LICENSE +0 -22
- package/templates/node_modules/mquery/README.md +0 -1387
- package/templates/node_modules/mquery/SECURITY.md +0 -1
- package/templates/node_modules/mquery/lib/collection/collection.js +0 -47
- package/templates/node_modules/mquery/lib/collection/index.js +0 -13
- package/templates/node_modules/mquery/lib/collection/node.js +0 -128
- package/templates/node_modules/mquery/lib/env.js +0 -22
- package/templates/node_modules/mquery/lib/mquery.js +0 -2748
- package/templates/node_modules/mquery/lib/permissions.js +0 -93
- package/templates/node_modules/mquery/lib/utils.js +0 -297
- package/templates/node_modules/mquery/package.json +0 -35
- package/templates/node_modules/ms/index.js +0 -162
- package/templates/node_modules/ms/license.md +0 -21
- package/templates/node_modules/ms/package.json +0 -38
- package/templates/node_modules/ms/readme.md +0 -59
- package/templates/node_modules/negotiator/HISTORY.md +0 -114
- package/templates/node_modules/negotiator/LICENSE +0 -24
- package/templates/node_modules/negotiator/README.md +0 -212
- package/templates/node_modules/negotiator/index.js +0 -83
- package/templates/node_modules/negotiator/lib/charset.js +0 -169
- package/templates/node_modules/negotiator/lib/encoding.js +0 -205
- package/templates/node_modules/negotiator/lib/language.js +0 -179
- package/templates/node_modules/negotiator/lib/mediaType.js +0 -294
- package/templates/node_modules/negotiator/package.json +0 -43
- package/templates/node_modules/object-inspect/.eslintrc +0 -53
- package/templates/node_modules/object-inspect/.github/FUNDING.yml +0 -12
- package/templates/node_modules/object-inspect/.nycrc +0 -13
- package/templates/node_modules/object-inspect/CHANGELOG.md +0 -424
- package/templates/node_modules/object-inspect/LICENSE +0 -21
- package/templates/node_modules/object-inspect/example/all.js +0 -23
- package/templates/node_modules/object-inspect/example/circular.js +0 -6
- package/templates/node_modules/object-inspect/example/fn.js +0 -5
- package/templates/node_modules/object-inspect/example/inspect.js +0 -10
- package/templates/node_modules/object-inspect/index.js +0 -544
- package/templates/node_modules/object-inspect/package-support.json +0 -20
- package/templates/node_modules/object-inspect/package.json +0 -105
- package/templates/node_modules/object-inspect/readme.markdown +0 -84
- package/templates/node_modules/object-inspect/test/bigint.js +0 -58
- package/templates/node_modules/object-inspect/test/browser/dom.js +0 -15
- package/templates/node_modules/object-inspect/test/circular.js +0 -16
- package/templates/node_modules/object-inspect/test/deep.js +0 -12
- package/templates/node_modules/object-inspect/test/element.js +0 -53
- package/templates/node_modules/object-inspect/test/err.js +0 -48
- package/templates/node_modules/object-inspect/test/fakes.js +0 -29
- package/templates/node_modules/object-inspect/test/fn.js +0 -76
- package/templates/node_modules/object-inspect/test/global.js +0 -17
- package/templates/node_modules/object-inspect/test/has.js +0 -15
- package/templates/node_modules/object-inspect/test/holes.js +0 -15
- package/templates/node_modules/object-inspect/test/indent-option.js +0 -271
- package/templates/node_modules/object-inspect/test/inspect.js +0 -139
- package/templates/node_modules/object-inspect/test/lowbyte.js +0 -12
- package/templates/node_modules/object-inspect/test/number.js +0 -58
- package/templates/node_modules/object-inspect/test/quoteStyle.js +0 -26
- package/templates/node_modules/object-inspect/test/toStringTag.js +0 -40
- package/templates/node_modules/object-inspect/test/undef.js +0 -12
- package/templates/node_modules/object-inspect/test/values.js +0 -261
- package/templates/node_modules/object-inspect/test-core-js.js +0 -26
- package/templates/node_modules/object-inspect/util.inspect.js +0 -1
- package/templates/node_modules/on-finished/HISTORY.md +0 -98
- package/templates/node_modules/on-finished/LICENSE +0 -23
- package/templates/node_modules/on-finished/README.md +0 -162
- package/templates/node_modules/on-finished/index.js +0 -234
- package/templates/node_modules/on-finished/package.json +0 -39
- package/templates/node_modules/on-headers/HISTORY.md +0 -26
- package/templates/node_modules/on-headers/LICENSE +0 -22
- package/templates/node_modules/on-headers/README.md +0 -81
- package/templates/node_modules/on-headers/index.js +0 -180
- package/templates/node_modules/on-headers/package.json +0 -44
- package/templates/node_modules/once/LICENSE +0 -15
- package/templates/node_modules/once/README.md +0 -79
- package/templates/node_modules/once/once.js +0 -42
- package/templates/node_modules/once/package.json +0 -33
- package/templates/node_modules/parseurl/HISTORY.md +0 -58
- package/templates/node_modules/parseurl/LICENSE +0 -24
- package/templates/node_modules/parseurl/README.md +0 -133
- package/templates/node_modules/parseurl/index.js +0 -158
- package/templates/node_modules/parseurl/package.json +0 -40
- package/templates/node_modules/path-to-regexp/LICENSE +0 -21
- package/templates/node_modules/path-to-regexp/Readme.md +0 -224
- package/templates/node_modules/path-to-regexp/dist/index.d.ts +0 -144
- package/templates/node_modules/path-to-regexp/dist/index.js +0 -409
- package/templates/node_modules/path-to-regexp/dist/index.js.map +0 -1
- package/templates/node_modules/path-to-regexp/package.json +0 -64
- package/templates/node_modules/proxy-addr/HISTORY.md +0 -161
- package/templates/node_modules/proxy-addr/LICENSE +0 -22
- package/templates/node_modules/proxy-addr/README.md +0 -139
- package/templates/node_modules/proxy-addr/index.js +0 -327
- package/templates/node_modules/proxy-addr/package.json +0 -47
- package/templates/node_modules/punycode/LICENSE-MIT.txt +0 -20
- package/templates/node_modules/punycode/README.md +0 -148
- package/templates/node_modules/punycode/package.json +0 -58
- package/templates/node_modules/punycode/punycode.es6.js +0 -444
- package/templates/node_modules/punycode/punycode.js +0 -443
- package/templates/node_modules/qs/.editorconfig +0 -46
- package/templates/node_modules/qs/.eslintrc +0 -39
- package/templates/node_modules/qs/.github/FUNDING.yml +0 -12
- package/templates/node_modules/qs/.nycrc +0 -13
- package/templates/node_modules/qs/CHANGELOG.md +0 -622
- package/templates/node_modules/qs/LICENSE.md +0 -29
- package/templates/node_modules/qs/README.md +0 -733
- package/templates/node_modules/qs/dist/qs.js +0 -141
- package/templates/node_modules/qs/lib/formats.js +0 -23
- package/templates/node_modules/qs/lib/index.js +0 -11
- package/templates/node_modules/qs/lib/parse.js +0 -328
- package/templates/node_modules/qs/lib/stringify.js +0 -356
- package/templates/node_modules/qs/lib/utils.js +0 -268
- package/templates/node_modules/qs/package.json +0 -93
- package/templates/node_modules/qs/test/empty-keys-cases.js +0 -267
- package/templates/node_modules/qs/test/parse.js +0 -1276
- package/templates/node_modules/qs/test/stringify.js +0 -1306
- package/templates/node_modules/qs/test/utils.js +0 -262
- package/templates/node_modules/range-parser/HISTORY.md +0 -56
- package/templates/node_modules/range-parser/LICENSE +0 -23
- package/templates/node_modules/range-parser/README.md +0 -84
- package/templates/node_modules/range-parser/index.js +0 -162
- package/templates/node_modules/range-parser/package.json +0 -44
- package/templates/node_modules/raw-body/LICENSE +0 -22
- package/templates/node_modules/raw-body/README.md +0 -223
- package/templates/node_modules/raw-body/index.d.ts +0 -85
- package/templates/node_modules/raw-body/index.js +0 -336
- package/templates/node_modules/raw-body/package.json +0 -46
- package/templates/node_modules/router/HISTORY.md +0 -228
- package/templates/node_modules/router/LICENSE +0 -23
- package/templates/node_modules/router/README.md +0 -416
- package/templates/node_modules/router/index.js +0 -748
- package/templates/node_modules/router/lib/layer.js +0 -247
- package/templates/node_modules/router/lib/route.js +0 -242
- package/templates/node_modules/router/package.json +0 -44
- package/templates/node_modules/safe-buffer/LICENSE +0 -21
- package/templates/node_modules/safe-buffer/README.md +0 -584
- package/templates/node_modules/safe-buffer/index.d.ts +0 -187
- package/templates/node_modules/safe-buffer/index.js +0 -62
- package/templates/node_modules/safe-buffer/package.json +0 -37
- package/templates/node_modules/safer-buffer/LICENSE +0 -21
- package/templates/node_modules/safer-buffer/Porting-Buffer.md +0 -268
- package/templates/node_modules/safer-buffer/Readme.md +0 -156
- package/templates/node_modules/safer-buffer/dangerous.js +0 -58
- package/templates/node_modules/safer-buffer/package.json +0 -34
- package/templates/node_modules/safer-buffer/safer.js +0 -77
- package/templates/node_modules/safer-buffer/tests.js +0 -406
- package/templates/node_modules/send/LICENSE +0 -23
- package/templates/node_modules/send/README.md +0 -317
- package/templates/node_modules/send/index.js +0 -997
- package/templates/node_modules/send/package.json +0 -63
- package/templates/node_modules/serve-static/LICENSE +0 -25
- package/templates/node_modules/serve-static/README.md +0 -253
- package/templates/node_modules/serve-static/index.js +0 -208
- package/templates/node_modules/serve-static/package.json +0 -44
- package/templates/node_modules/setprototypeof/LICENSE +0 -13
- package/templates/node_modules/setprototypeof/README.md +0 -31
- package/templates/node_modules/setprototypeof/index.d.ts +0 -2
- package/templates/node_modules/setprototypeof/index.js +0 -17
- package/templates/node_modules/setprototypeof/package.json +0 -38
- package/templates/node_modules/setprototypeof/test/index.js +0 -24
- package/templates/node_modules/side-channel/.editorconfig +0 -9
- package/templates/node_modules/side-channel/.eslintrc +0 -12
- package/templates/node_modules/side-channel/.github/FUNDING.yml +0 -12
- package/templates/node_modules/side-channel/.nycrc +0 -13
- package/templates/node_modules/side-channel/CHANGELOG.md +0 -110
- package/templates/node_modules/side-channel/LICENSE +0 -21
- package/templates/node_modules/side-channel/README.md +0 -61
- package/templates/node_modules/side-channel/index.d.ts +0 -14
- package/templates/node_modules/side-channel/index.js +0 -43
- package/templates/node_modules/side-channel/package.json +0 -85
- package/templates/node_modules/side-channel/test/index.js +0 -104
- package/templates/node_modules/side-channel/tsconfig.json +0 -9
- package/templates/node_modules/side-channel-list/.editorconfig +0 -9
- package/templates/node_modules/side-channel-list/.eslintrc +0 -11
- package/templates/node_modules/side-channel-list/.github/FUNDING.yml +0 -12
- package/templates/node_modules/side-channel-list/.nycrc +0 -13
- package/templates/node_modules/side-channel-list/CHANGELOG.md +0 -15
- package/templates/node_modules/side-channel-list/LICENSE +0 -21
- package/templates/node_modules/side-channel-list/README.md +0 -62
- package/templates/node_modules/side-channel-list/index.d.ts +0 -13
- package/templates/node_modules/side-channel-list/index.js +0 -113
- package/templates/node_modules/side-channel-list/list.d.ts +0 -14
- package/templates/node_modules/side-channel-list/package.json +0 -77
- package/templates/node_modules/side-channel-list/test/index.js +0 -104
- package/templates/node_modules/side-channel-list/tsconfig.json +0 -9
- package/templates/node_modules/side-channel-map/.editorconfig +0 -9
- package/templates/node_modules/side-channel-map/.eslintrc +0 -11
- package/templates/node_modules/side-channel-map/.github/FUNDING.yml +0 -12
- package/templates/node_modules/side-channel-map/.nycrc +0 -13
- package/templates/node_modules/side-channel-map/CHANGELOG.md +0 -22
- package/templates/node_modules/side-channel-map/LICENSE +0 -21
- package/templates/node_modules/side-channel-map/README.md +0 -62
- package/templates/node_modules/side-channel-map/index.d.ts +0 -15
- package/templates/node_modules/side-channel-map/index.js +0 -68
- package/templates/node_modules/side-channel-map/package.json +0 -80
- package/templates/node_modules/side-channel-map/test/index.js +0 -114
- package/templates/node_modules/side-channel-map/tsconfig.json +0 -9
- package/templates/node_modules/side-channel-weakmap/.editorconfig +0 -9
- package/templates/node_modules/side-channel-weakmap/.eslintrc +0 -12
- package/templates/node_modules/side-channel-weakmap/.github/FUNDING.yml +0 -12
- package/templates/node_modules/side-channel-weakmap/.nycrc +0 -13
- package/templates/node_modules/side-channel-weakmap/CHANGELOG.md +0 -28
- package/templates/node_modules/side-channel-weakmap/LICENSE +0 -21
- package/templates/node_modules/side-channel-weakmap/README.md +0 -62
- package/templates/node_modules/side-channel-weakmap/index.d.ts +0 -15
- package/templates/node_modules/side-channel-weakmap/index.js +0 -84
- package/templates/node_modules/side-channel-weakmap/package.json +0 -87
- package/templates/node_modules/side-channel-weakmap/test/index.js +0 -114
- package/templates/node_modules/side-channel-weakmap/tsconfig.json +0 -9
- package/templates/node_modules/sift/MIT-LICENSE.txt +0 -20
- package/templates/node_modules/sift/README.md +0 -465
- package/templates/node_modules/sift/es/index.js +0 -632
- package/templates/node_modules/sift/es/index.js.map +0 -1
- package/templates/node_modules/sift/es5m/index.js +0 -743
- package/templates/node_modules/sift/es5m/index.js.map +0 -1
- package/templates/node_modules/sift/index.d.ts +0 -4
- package/templates/node_modules/sift/index.js +0 -4
- package/templates/node_modules/sift/lib/core.d.ts +0 -116
- package/templates/node_modules/sift/lib/index.d.ts +0 -6
- package/templates/node_modules/sift/lib/index.js +0 -781
- package/templates/node_modules/sift/lib/index.js.map +0 -1
- package/templates/node_modules/sift/lib/operations.d.ts +0 -88
- package/templates/node_modules/sift/lib/utils.d.ts +0 -11
- package/templates/node_modules/sift/package.json +0 -61
- package/templates/node_modules/sift/sift.csp.min.js +0 -778
- package/templates/node_modules/sift/sift.csp.min.js.map +0 -1
- package/templates/node_modules/sift/sift.min.js +0 -2
- package/templates/node_modules/sift/sift.min.js.map +0 -1
- package/templates/node_modules/sift/src/core.ts +0 -494
- package/templates/node_modules/sift/src/index.ts +0 -54
- package/templates/node_modules/sift/src/operations.ts +0 -422
- package/templates/node_modules/sift/src/utils.ts +0 -74
- package/templates/node_modules/sparse-bitfield/.travis.yml +0 -6
- package/templates/node_modules/sparse-bitfield/LICENSE +0 -21
- package/templates/node_modules/sparse-bitfield/README.md +0 -62
- package/templates/node_modules/sparse-bitfield/index.js +0 -95
- package/templates/node_modules/sparse-bitfield/package.json +0 -27
- package/templates/node_modules/sparse-bitfield/test.js +0 -79
- package/templates/node_modules/statuses/HISTORY.md +0 -87
- package/templates/node_modules/statuses/LICENSE +0 -23
- package/templates/node_modules/statuses/README.md +0 -139
- package/templates/node_modules/statuses/codes.json +0 -65
- package/templates/node_modules/statuses/index.js +0 -146
- package/templates/node_modules/statuses/package.json +0 -49
- package/templates/node_modules/toidentifier/HISTORY.md +0 -9
- package/templates/node_modules/toidentifier/LICENSE +0 -21
- package/templates/node_modules/toidentifier/README.md +0 -61
- package/templates/node_modules/toidentifier/index.js +0 -32
- package/templates/node_modules/toidentifier/package.json +0 -38
- package/templates/node_modules/tr46/LICENSE.md +0 -21
- package/templates/node_modules/tr46/README.md +0 -76
- package/templates/node_modules/tr46/index.js +0 -344
- package/templates/node_modules/tr46/lib/mappingTable.json +0 -1
- package/templates/node_modules/tr46/lib/regexes.js +0 -29
- package/templates/node_modules/tr46/lib/statusMapping.js +0 -9
- package/templates/node_modules/tr46/package.json +0 -44
- package/templates/node_modules/type-is/HISTORY.md +0 -292
- package/templates/node_modules/type-is/LICENSE +0 -23
- package/templates/node_modules/type-is/README.md +0 -198
- package/templates/node_modules/type-is/index.js +0 -250
- package/templates/node_modules/type-is/package.json +0 -47
- package/templates/node_modules/unpipe/HISTORY.md +0 -4
- package/templates/node_modules/unpipe/LICENSE +0 -22
- package/templates/node_modules/unpipe/README.md +0 -43
- package/templates/node_modules/unpipe/index.js +0 -69
- package/templates/node_modules/unpipe/package.json +0 -27
- package/templates/node_modules/vary/HISTORY.md +0 -39
- package/templates/node_modules/vary/LICENSE +0 -22
- package/templates/node_modules/vary/README.md +0 -101
- package/templates/node_modules/vary/index.js +0 -149
- package/templates/node_modules/vary/package.json +0 -43
- package/templates/node_modules/webidl-conversions/LICENSE.md +0 -12
- package/templates/node_modules/webidl-conversions/README.md +0 -99
- package/templates/node_modules/webidl-conversions/lib/index.js +0 -450
- package/templates/node_modules/webidl-conversions/package.json +0 -35
- package/templates/node_modules/whatwg-url/LICENSE.txt +0 -21
- package/templates/node_modules/whatwg-url/README.md +0 -106
- package/templates/node_modules/whatwg-url/index.js +0 -27
- package/templates/node_modules/whatwg-url/lib/Function.js +0 -42
- package/templates/node_modules/whatwg-url/lib/URL-impl.js +0 -233
- package/templates/node_modules/whatwg-url/lib/URL.js +0 -499
- package/templates/node_modules/whatwg-url/lib/URLSearchParams-impl.js +0 -135
- package/templates/node_modules/whatwg-url/lib/URLSearchParams.js +0 -505
- package/templates/node_modules/whatwg-url/lib/VoidFunction.js +0 -26
- package/templates/node_modules/whatwg-url/lib/encoding.js +0 -16
- package/templates/node_modules/whatwg-url/lib/infra.js +0 -26
- package/templates/node_modules/whatwg-url/lib/percent-encoding.js +0 -142
- package/templates/node_modules/whatwg-url/lib/url-state-machine.js +0 -1274
- package/templates/node_modules/whatwg-url/lib/urlencoded.js +0 -89
- package/templates/node_modules/whatwg-url/lib/utils.js +0 -190
- package/templates/node_modules/whatwg-url/package.json +0 -53
- package/templates/node_modules/whatwg-url/webidl2js-wrapper.js +0 -7
- package/templates/node_modules/wrappy/LICENSE +0 -15
- package/templates/node_modules/wrappy/README.md +0 -36
- package/templates/node_modules/wrappy/package.json +0 -29
- package/templates/node_modules/wrappy/wrappy.js +0 -33
- package/templates/package-lock.json +0 -1139
- package/templates/package.json +0 -20
- /package/templates/controllers/{users.routes.js → index.routes.js} +0 -0
|
@@ -1,3227 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/*!
|
|
4
|
-
* Module dependencies.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
const EventEmitter = require('events').EventEmitter;
|
|
8
|
-
const Kareem = require('kareem');
|
|
9
|
-
const MongooseError = require('./error/mongooseError');
|
|
10
|
-
const SchemaType = require('./schemaType');
|
|
11
|
-
const SchemaTypeOptions = require('./options/schemaTypeOptions');
|
|
12
|
-
const VirtualOptions = require('./options/virtualOptions');
|
|
13
|
-
const VirtualType = require('./virtualType');
|
|
14
|
-
const addAutoId = require('./helpers/schema/addAutoId');
|
|
15
|
-
const clone = require('./helpers/clone');
|
|
16
|
-
const get = require('./helpers/get');
|
|
17
|
-
const getConstructorName = require('./helpers/getConstructorName');
|
|
18
|
-
const getIndexes = require('./helpers/schema/getIndexes');
|
|
19
|
-
const handleReadPreferenceAliases = require('./helpers/query/handleReadPreferenceAliases');
|
|
20
|
-
const idGetter = require('./helpers/schema/idGetter');
|
|
21
|
-
const isIndexSpecEqual = require('./helpers/indexes/isIndexSpecEqual');
|
|
22
|
-
const merge = require('./helpers/schema/merge');
|
|
23
|
-
const mpath = require('mpath');
|
|
24
|
-
const setPopulatedVirtualValue = require('./helpers/populate/setPopulatedVirtualValue');
|
|
25
|
-
const setupTimestamps = require('./helpers/timestamps/setupTimestamps');
|
|
26
|
-
const symbols = require('./schema/symbols');
|
|
27
|
-
const utils = require('./utils');
|
|
28
|
-
const validateRef = require('./helpers/populate/validateRef');
|
|
29
|
-
|
|
30
|
-
const hasNumericSubpathRegex = /\.\d+(\.|$)/;
|
|
31
|
-
|
|
32
|
-
let MongooseTypes;
|
|
33
|
-
|
|
34
|
-
const queryHooks = require('./constants').queryMiddlewareFunctions;
|
|
35
|
-
const documentHooks = require('./constants').documentMiddlewareFunctions;
|
|
36
|
-
const hookNames = queryHooks.concat(documentHooks).
|
|
37
|
-
reduce((s, hook) => s.add(hook), new Set());
|
|
38
|
-
|
|
39
|
-
const isPOJO = utils.isPOJO;
|
|
40
|
-
|
|
41
|
-
let id = 0;
|
|
42
|
-
|
|
43
|
-
const numberRE = /^\d+$/;
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Schema constructor.
|
|
47
|
-
*
|
|
48
|
-
* #### Example:
|
|
49
|
-
*
|
|
50
|
-
* const child = new Schema({ name: String });
|
|
51
|
-
* const schema = new Schema({ name: String, age: Number, children: [child] });
|
|
52
|
-
* const Tree = mongoose.model('Tree', schema);
|
|
53
|
-
*
|
|
54
|
-
* // setting schema options
|
|
55
|
-
* new Schema({ name: String }, { id: false, autoIndex: false })
|
|
56
|
-
*
|
|
57
|
-
* #### Options:
|
|
58
|
-
*
|
|
59
|
-
* - [autoIndex](https://mongoosejs.com/docs/guide.html#autoIndex): bool - defaults to null (which means use the connection's autoIndex option)
|
|
60
|
-
* - [autoCreate](https://mongoosejs.com/docs/guide.html#autoCreate): bool - defaults to null (which means use the connection's autoCreate option)
|
|
61
|
-
* - [bufferCommands](https://mongoosejs.com/docs/guide.html#bufferCommands): bool - defaults to true
|
|
62
|
-
* - [bufferTimeoutMS](https://mongoosejs.com/docs/guide.html#bufferTimeoutMS): number - defaults to 10000 (10 seconds). If `bufferCommands` is enabled, the amount of time Mongoose will wait for connectivity to be restablished before erroring out.
|
|
63
|
-
* - [capped](https://mongoosejs.com/docs/guide.html#capped): bool | number | object - defaults to false
|
|
64
|
-
* - [collection](https://mongoosejs.com/docs/guide.html#collection): string - no default
|
|
65
|
-
* - [discriminatorKey](https://mongoosejs.com/docs/guide.html#discriminatorKey): string - defaults to `__t`
|
|
66
|
-
* - [id](https://mongoosejs.com/docs/guide.html#id): bool - defaults to true
|
|
67
|
-
* - [_id](https://mongoosejs.com/docs/guide.html#_id): bool - defaults to true
|
|
68
|
-
* - [minimize](https://mongoosejs.com/docs/guide.html#minimize): bool - controls [document#toObject](https://mongoosejs.com/docs/api/document.html#Document.prototype.toObject()) behavior when called manually - defaults to true
|
|
69
|
-
* - [read](https://mongoosejs.com/docs/guide.html#read): string
|
|
70
|
-
* - [readConcern](https://mongoosejs.com/docs/guide.html#readConcern): object - defaults to null, use to set a default [read concern](https://www.mongodb.com/docs/manual/reference/read-concern/) for all queries.
|
|
71
|
-
* - [writeConcern](https://mongoosejs.com/docs/guide.html#writeConcern): object - defaults to null, use to override [the MongoDB server's default write concern settings](https://www.mongodb.com/docs/manual/reference/write-concern/)
|
|
72
|
-
* - [shardKey](https://mongoosejs.com/docs/guide.html#shardKey): object - defaults to `null`
|
|
73
|
-
* - [strict](https://mongoosejs.com/docs/guide.html#strict): bool - defaults to true
|
|
74
|
-
* - [strictQuery](https://mongoosejs.com/docs/guide.html#strictQuery): bool - defaults to false
|
|
75
|
-
* - [toJSON](https://mongoosejs.com/docs/guide.html#toJSON) - object - no default
|
|
76
|
-
* - [toObject](https://mongoosejs.com/docs/guide.html#toObject) - object - no default
|
|
77
|
-
* - [typeKey](https://mongoosejs.com/docs/guide.html#typeKey) - string - defaults to 'type'
|
|
78
|
-
* - [validateBeforeSave](https://mongoosejs.com/docs/guide.html#validateBeforeSave) - bool - defaults to `true`
|
|
79
|
-
* - [validateModifiedOnly](https://mongoosejs.com/docs/api/document.html#Document.prototype.validate()) - bool - defaults to `false`
|
|
80
|
-
* - [versionKey](https://mongoosejs.com/docs/guide.html#versionKey): string or object - defaults to "__v"
|
|
81
|
-
* - [optimisticConcurrency](https://mongoosejs.com/docs/guide.html#optimisticConcurrency): bool or string[] or { exclude: string[] } - defaults to false. Set to true to enable [optimistic concurrency](https://thecodebarbarian.com/whats-new-in-mongoose-5-10-optimistic-concurrency.html). Set to string array to enable optimistic concurrency for only certain fields, or `{ exclude: string[] }` to define a list of fields to ignore for optimistic concurrency.
|
|
82
|
-
* - [collation](https://mongoosejs.com/docs/guide.html#collation): object - defaults to null (which means use no collation)
|
|
83
|
-
* - [timeseries](https://mongoosejs.com/docs/guide.html#timeseries): object - defaults to null (which means this schema's collection won't be a timeseries collection)
|
|
84
|
-
* - [selectPopulatedPaths](https://mongoosejs.com/docs/guide.html#selectPopulatedPaths): boolean - defaults to `true`
|
|
85
|
-
* - [skipVersioning](https://mongoosejs.com/docs/guide.html#skipVersioning): object - paths to exclude from versioning
|
|
86
|
-
* - [timestamps](https://mongoosejs.com/docs/guide.html#timestamps): object or boolean - defaults to `false`. If true, Mongoose adds `createdAt` and `updatedAt` properties to your schema and manages those properties for you.
|
|
87
|
-
* - [pluginTags](https://mongoosejs.com/docs/guide.html#pluginTags): array of strings - defaults to `undefined`. If set and plugin called with `tags` option, will only apply that plugin to schemas with a matching tag.
|
|
88
|
-
* - [virtuals](https://mongoosejs.com/docs/tutorials/virtuals.html#virtuals-via-schema-options): object - virtuals to define, alias for [`.virtual`](https://mongoosejs.com/docs/api/schema.html#Schema.prototype.virtual())
|
|
89
|
-
* - [collectionOptions]: object with options passed to [`createCollection()`](https://www.mongodb.com/docs/manual/reference/method/db.createCollection/) when calling `Model.createCollection()` or `autoCreate` set to true.
|
|
90
|
-
* - [encryptionType]: the encryption type for the schema. Valid options are `csfle` or `queryableEncryption`. See https://mongoosejs.com/docs/field-level-encryption.
|
|
91
|
-
*
|
|
92
|
-
* #### Options for Nested Schemas:
|
|
93
|
-
*
|
|
94
|
-
* - `excludeIndexes`: bool - defaults to `false`. If `true`, skip building indexes on this schema's paths.
|
|
95
|
-
*
|
|
96
|
-
* #### Note:
|
|
97
|
-
*
|
|
98
|
-
* _When nesting schemas, (`children` in the example above), always declare the child schema first before passing it into its parent._
|
|
99
|
-
*
|
|
100
|
-
* @param {Object|Schema|Array} [definition] Can be one of: object describing schema paths, or schema to copy, or array of objects and schemas
|
|
101
|
-
* @param {Object} [options]
|
|
102
|
-
* @inherits NodeJS EventEmitter https://nodejs.org/api/events.html#class-eventemitter
|
|
103
|
-
* @event `init`: Emitted after the schema is compiled into a `Model`.
|
|
104
|
-
* @api public
|
|
105
|
-
*/
|
|
106
|
-
|
|
107
|
-
function Schema(obj, options) {
|
|
108
|
-
if (!(this instanceof Schema)) {
|
|
109
|
-
return new Schema(obj, options);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
this.obj = obj;
|
|
113
|
-
this.paths = {};
|
|
114
|
-
this.aliases = {};
|
|
115
|
-
this.subpaths = {};
|
|
116
|
-
this.virtuals = {};
|
|
117
|
-
this.singleNestedPaths = {};
|
|
118
|
-
this.nested = {};
|
|
119
|
-
this.inherits = {};
|
|
120
|
-
this.callQueue = [];
|
|
121
|
-
this._indexes = [];
|
|
122
|
-
this._searchIndexes = [];
|
|
123
|
-
this.methods = (options && options.methods) || {};
|
|
124
|
-
this.methodOptions = {};
|
|
125
|
-
this.statics = (options && options.statics) || {};
|
|
126
|
-
this.tree = {};
|
|
127
|
-
this.query = (options && options.query) || {};
|
|
128
|
-
this.childSchemas = [];
|
|
129
|
-
this.plugins = [];
|
|
130
|
-
// For internal debugging. Do not use this to try to save a schema in MDB.
|
|
131
|
-
this.$id = ++id;
|
|
132
|
-
this.mapPaths = [];
|
|
133
|
-
this.encryptedFields = {};
|
|
134
|
-
|
|
135
|
-
this.s = {
|
|
136
|
-
hooks: new Kareem()
|
|
137
|
-
};
|
|
138
|
-
this.options = this.defaultOptions(options);
|
|
139
|
-
|
|
140
|
-
// build paths
|
|
141
|
-
if (Array.isArray(obj)) {
|
|
142
|
-
for (const definition of obj) {
|
|
143
|
-
this.add(definition);
|
|
144
|
-
}
|
|
145
|
-
} else if (obj) {
|
|
146
|
-
this.add(obj);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
// build virtual paths
|
|
150
|
-
if (options && options.virtuals) {
|
|
151
|
-
const virtuals = options.virtuals;
|
|
152
|
-
const pathNames = Object.keys(virtuals);
|
|
153
|
-
for (const pathName of pathNames) {
|
|
154
|
-
const pathOptions = virtuals[pathName].options ? virtuals[pathName].options : undefined;
|
|
155
|
-
const virtual = this.virtual(pathName, pathOptions);
|
|
156
|
-
|
|
157
|
-
if (virtuals[pathName].get) {
|
|
158
|
-
virtual.get(virtuals[pathName].get);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
if (virtuals[pathName].set) {
|
|
162
|
-
virtual.set(virtuals[pathName].set);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
// check if _id's value is a subdocument (gh-2276)
|
|
168
|
-
const _idSubDoc = obj && obj._id && utils.isObject(obj._id);
|
|
169
|
-
|
|
170
|
-
// ensure the documents get an auto _id unless disabled
|
|
171
|
-
const auto_id = !this.paths['_id'] &&
|
|
172
|
-
(this.options._id) && !_idSubDoc;
|
|
173
|
-
|
|
174
|
-
if (auto_id) {
|
|
175
|
-
addAutoId(this);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
this.setupTimestamp(this.options.timestamps);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* Create virtual properties with alias field
|
|
183
|
-
* @api private
|
|
184
|
-
*/
|
|
185
|
-
function aliasFields(schema, paths) {
|
|
186
|
-
for (const path of Object.keys(paths)) {
|
|
187
|
-
let alias = null;
|
|
188
|
-
if (paths[path] != null) {
|
|
189
|
-
alias = paths[path];
|
|
190
|
-
} else {
|
|
191
|
-
const options = get(schema.paths[path], 'options');
|
|
192
|
-
if (options == null) {
|
|
193
|
-
continue;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
alias = options.alias;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
if (!alias) {
|
|
200
|
-
continue;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
const prop = schema.paths[path].path;
|
|
204
|
-
if (Array.isArray(alias)) {
|
|
205
|
-
for (const a of alias) {
|
|
206
|
-
if (typeof a !== 'string') {
|
|
207
|
-
throw new Error('Invalid value for alias option on ' + prop + ', got ' + a);
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
schema.aliases[a] = prop;
|
|
211
|
-
|
|
212
|
-
schema.
|
|
213
|
-
virtual(a).
|
|
214
|
-
get((function(p) {
|
|
215
|
-
return function() {
|
|
216
|
-
if (typeof this.get === 'function') {
|
|
217
|
-
return this.get(p);
|
|
218
|
-
}
|
|
219
|
-
return this[p];
|
|
220
|
-
};
|
|
221
|
-
})(prop)).
|
|
222
|
-
set((function(p) {
|
|
223
|
-
return function(v) {
|
|
224
|
-
return this.$set(p, v);
|
|
225
|
-
};
|
|
226
|
-
})(prop));
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
continue;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
if (typeof alias !== 'string') {
|
|
233
|
-
throw new Error('Invalid value for alias option on ' + prop + ', got ' + alias);
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
schema.aliases[alias] = prop;
|
|
237
|
-
|
|
238
|
-
schema.
|
|
239
|
-
virtual(alias).
|
|
240
|
-
get((function(p) {
|
|
241
|
-
return function() {
|
|
242
|
-
if (typeof this.get === 'function') {
|
|
243
|
-
return this.get(p);
|
|
244
|
-
}
|
|
245
|
-
return this[p];
|
|
246
|
-
};
|
|
247
|
-
})(prop)).
|
|
248
|
-
set((function(p) {
|
|
249
|
-
return function(v) {
|
|
250
|
-
return this.$set(p, v);
|
|
251
|
-
};
|
|
252
|
-
})(prop));
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
/*!
|
|
257
|
-
* Inherit from EventEmitter.
|
|
258
|
-
*/
|
|
259
|
-
Schema.prototype = Object.create(EventEmitter.prototype);
|
|
260
|
-
Schema.prototype.constructor = Schema;
|
|
261
|
-
Schema.prototype.instanceOfSchema = true;
|
|
262
|
-
|
|
263
|
-
/*!
|
|
264
|
-
* ignore
|
|
265
|
-
*/
|
|
266
|
-
|
|
267
|
-
Object.defineProperty(Schema.prototype, '$schemaType', {
|
|
268
|
-
configurable: false,
|
|
269
|
-
enumerable: false,
|
|
270
|
-
writable: true
|
|
271
|
-
});
|
|
272
|
-
|
|
273
|
-
/**
|
|
274
|
-
* Array of child schemas (from document arrays and single nested subdocs)
|
|
275
|
-
* and their corresponding compiled models. Each element of the array is
|
|
276
|
-
* an object with 2 properties: `schema` and `model`.
|
|
277
|
-
*
|
|
278
|
-
* This property is typically only useful for plugin authors and advanced users.
|
|
279
|
-
* You do not need to interact with this property at all to use mongoose.
|
|
280
|
-
*
|
|
281
|
-
* @api public
|
|
282
|
-
* @property childSchemas
|
|
283
|
-
* @memberOf Schema
|
|
284
|
-
* @instance
|
|
285
|
-
*/
|
|
286
|
-
|
|
287
|
-
Object.defineProperty(Schema.prototype, 'childSchemas', {
|
|
288
|
-
configurable: false,
|
|
289
|
-
enumerable: true,
|
|
290
|
-
writable: true
|
|
291
|
-
});
|
|
292
|
-
|
|
293
|
-
/**
|
|
294
|
-
* Object containing all virtuals defined on this schema.
|
|
295
|
-
* The objects' keys are the virtual paths and values are instances of `VirtualType`.
|
|
296
|
-
*
|
|
297
|
-
* This property is typically only useful for plugin authors and advanced users.
|
|
298
|
-
* You do not need to interact with this property at all to use mongoose.
|
|
299
|
-
*
|
|
300
|
-
* #### Example:
|
|
301
|
-
*
|
|
302
|
-
* const schema = new Schema({});
|
|
303
|
-
* schema.virtual('answer').get(() => 42);
|
|
304
|
-
*
|
|
305
|
-
* console.log(schema.virtuals); // { answer: VirtualType { path: 'answer', ... } }
|
|
306
|
-
* console.log(schema.virtuals['answer'].getters[0].call()); // 42
|
|
307
|
-
*
|
|
308
|
-
* @api public
|
|
309
|
-
* @property virtuals
|
|
310
|
-
* @memberOf Schema
|
|
311
|
-
* @instance
|
|
312
|
-
*/
|
|
313
|
-
|
|
314
|
-
Object.defineProperty(Schema.prototype, 'virtuals', {
|
|
315
|
-
configurable: false,
|
|
316
|
-
enumerable: true,
|
|
317
|
-
writable: true
|
|
318
|
-
});
|
|
319
|
-
|
|
320
|
-
/**
|
|
321
|
-
* The original object passed to the schema constructor
|
|
322
|
-
*
|
|
323
|
-
* #### Example:
|
|
324
|
-
*
|
|
325
|
-
* const schema = new Schema({ a: String }).add({ b: String });
|
|
326
|
-
* schema.obj; // { a: String }
|
|
327
|
-
*
|
|
328
|
-
* @api public
|
|
329
|
-
* @property obj
|
|
330
|
-
* @memberOf Schema
|
|
331
|
-
* @instance
|
|
332
|
-
*/
|
|
333
|
-
|
|
334
|
-
Schema.prototype.obj;
|
|
335
|
-
|
|
336
|
-
/**
|
|
337
|
-
* The paths defined on this schema. The keys are the top-level paths
|
|
338
|
-
* in this schema, and the values are instances of the SchemaType class.
|
|
339
|
-
*
|
|
340
|
-
* #### Example:
|
|
341
|
-
*
|
|
342
|
-
* const schema = new Schema({ name: String }, { _id: false });
|
|
343
|
-
* schema.paths; // { name: SchemaString { ... } }
|
|
344
|
-
*
|
|
345
|
-
* schema.add({ age: Number });
|
|
346
|
-
* schema.paths; // { name: SchemaString { ... }, age: SchemaNumber { ... } }
|
|
347
|
-
*
|
|
348
|
-
* @api public
|
|
349
|
-
* @property paths
|
|
350
|
-
* @memberOf Schema
|
|
351
|
-
* @instance
|
|
352
|
-
*/
|
|
353
|
-
|
|
354
|
-
Schema.prototype.paths;
|
|
355
|
-
|
|
356
|
-
/**
|
|
357
|
-
* Schema as a tree
|
|
358
|
-
*
|
|
359
|
-
* #### Example:
|
|
360
|
-
*
|
|
361
|
-
* {
|
|
362
|
-
* '_id' : ObjectId
|
|
363
|
-
* , 'nested' : {
|
|
364
|
-
* 'key' : String
|
|
365
|
-
* }
|
|
366
|
-
* }
|
|
367
|
-
*
|
|
368
|
-
* @api private
|
|
369
|
-
* @property tree
|
|
370
|
-
* @memberOf Schema
|
|
371
|
-
* @instance
|
|
372
|
-
*/
|
|
373
|
-
|
|
374
|
-
Schema.prototype.tree;
|
|
375
|
-
|
|
376
|
-
/**
|
|
377
|
-
* Creates a new schema with the given definition and options. Equivalent to `new Schema(definition, options)`.
|
|
378
|
-
*
|
|
379
|
-
* `Schema.create()` is primarily useful for automatic schema type inference in TypeScript.
|
|
380
|
-
*
|
|
381
|
-
* #### Example:
|
|
382
|
-
*
|
|
383
|
-
* const schema = Schema.create({ name: String }, { toObject: { virtuals: true } });
|
|
384
|
-
* // Equivalent:
|
|
385
|
-
* const schema2 = new Schema({ name: String }, { toObject: { virtuals: true } });
|
|
386
|
-
*
|
|
387
|
-
* @param {Object} definition
|
|
388
|
-
* @param {Object} [options]
|
|
389
|
-
* @return {Schema} the new schema
|
|
390
|
-
* @api public
|
|
391
|
-
* @memberOf Schema
|
|
392
|
-
* @static
|
|
393
|
-
*/
|
|
394
|
-
|
|
395
|
-
Schema.create = function create(definition, options) {
|
|
396
|
-
return new Schema(definition, options);
|
|
397
|
-
};
|
|
398
|
-
|
|
399
|
-
/**
|
|
400
|
-
* Returns a deep copy of the schema
|
|
401
|
-
*
|
|
402
|
-
* #### Example:
|
|
403
|
-
*
|
|
404
|
-
* const schema = new Schema({ name: String });
|
|
405
|
-
* const clone = schema.clone();
|
|
406
|
-
* clone === schema; // false
|
|
407
|
-
* clone.path('name'); // SchemaString { ... }
|
|
408
|
-
*
|
|
409
|
-
* @return {Schema} the cloned schema
|
|
410
|
-
* @api public
|
|
411
|
-
* @memberOf Schema
|
|
412
|
-
* @instance
|
|
413
|
-
*/
|
|
414
|
-
|
|
415
|
-
Schema.prototype.clone = function() {
|
|
416
|
-
const s = this._clone();
|
|
417
|
-
|
|
418
|
-
// Bubble up `init` for backwards compat
|
|
419
|
-
s.on('init', v => this.emit('init', v));
|
|
420
|
-
|
|
421
|
-
return s;
|
|
422
|
-
};
|
|
423
|
-
|
|
424
|
-
/*!
|
|
425
|
-
* ignore
|
|
426
|
-
*/
|
|
427
|
-
|
|
428
|
-
Schema.prototype._clone = function _clone(Constructor) {
|
|
429
|
-
Constructor = Constructor || (this.base == null ? Schema : this.base.Schema);
|
|
430
|
-
|
|
431
|
-
const s = new Constructor({}, this._userProvidedOptions);
|
|
432
|
-
s.base = this.base;
|
|
433
|
-
s.obj = this.obj;
|
|
434
|
-
s.options = clone(this.options);
|
|
435
|
-
s.callQueue = this.callQueue.map(function(f) { return f; });
|
|
436
|
-
s.methods = clone(this.methods);
|
|
437
|
-
s.methodOptions = clone(this.methodOptions);
|
|
438
|
-
s.statics = clone(this.statics);
|
|
439
|
-
s.query = clone(this.query);
|
|
440
|
-
s.plugins = Array.prototype.slice.call(this.plugins);
|
|
441
|
-
s._indexes = clone(this._indexes);
|
|
442
|
-
s._searchIndexes = clone(this._searchIndexes);
|
|
443
|
-
s.s.hooks = this.s.hooks.clone();
|
|
444
|
-
|
|
445
|
-
s.tree = clone(this.tree);
|
|
446
|
-
s.paths = Object.fromEntries(
|
|
447
|
-
Object.entries(this.paths).map(([key, value]) => ([key, value.clone()]))
|
|
448
|
-
);
|
|
449
|
-
s.nested = clone(this.nested);
|
|
450
|
-
s.subpaths = clone(this.subpaths);
|
|
451
|
-
for (const schemaType of Object.values(s.paths)) {
|
|
452
|
-
if (schemaType.$isSingleNested) {
|
|
453
|
-
const path = schemaType.path;
|
|
454
|
-
for (const key of Object.keys(schemaType.schema.paths)) {
|
|
455
|
-
s.singleNestedPaths[path + '.' + key] = schemaType.schema.paths[key];
|
|
456
|
-
}
|
|
457
|
-
for (const key of Object.keys(schemaType.schema.singleNestedPaths)) {
|
|
458
|
-
s.singleNestedPaths[path + '.' + key] =
|
|
459
|
-
schemaType.schema.singleNestedPaths[key];
|
|
460
|
-
}
|
|
461
|
-
for (const key of Object.keys(schemaType.schema.subpaths)) {
|
|
462
|
-
s.singleNestedPaths[path + '.' + key] =
|
|
463
|
-
schemaType.schema.subpaths[key];
|
|
464
|
-
}
|
|
465
|
-
for (const key of Object.keys(schemaType.schema.nested)) {
|
|
466
|
-
s.singleNestedPaths[path + '.' + key] = 'nested';
|
|
467
|
-
}
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
s._gatherChildSchemas();
|
|
471
|
-
|
|
472
|
-
s.virtuals = clone(this.virtuals);
|
|
473
|
-
s.$globalPluginsApplied = this.$globalPluginsApplied;
|
|
474
|
-
s.$isRootDiscriminator = this.$isRootDiscriminator;
|
|
475
|
-
s.$implicitlyCreated = this.$implicitlyCreated;
|
|
476
|
-
s.$id = ++id;
|
|
477
|
-
s.$originalSchemaId = this.$id;
|
|
478
|
-
s.mapPaths = [].concat(this.mapPaths);
|
|
479
|
-
|
|
480
|
-
if (this.discriminatorMapping != null) {
|
|
481
|
-
s.discriminatorMapping = Object.assign({}, this.discriminatorMapping);
|
|
482
|
-
}
|
|
483
|
-
if (this.discriminators != null) {
|
|
484
|
-
s.discriminators = Object.assign({}, this.discriminators);
|
|
485
|
-
}
|
|
486
|
-
if (this._applyDiscriminators != null) {
|
|
487
|
-
s._applyDiscriminators = new Map(this._applyDiscriminators);
|
|
488
|
-
}
|
|
489
|
-
|
|
490
|
-
s.aliases = Object.assign({}, this.aliases);
|
|
491
|
-
|
|
492
|
-
s.encryptedFields = clone(this.encryptedFields);
|
|
493
|
-
|
|
494
|
-
return s;
|
|
495
|
-
};
|
|
496
|
-
|
|
497
|
-
/**
|
|
498
|
-
* Returns a new schema that has the picked `paths` from this schema.
|
|
499
|
-
*
|
|
500
|
-
* This method is analagous to [Lodash's `pick()` function](https://lodash.com/docs/4.17.15#pick) for Mongoose schemas.
|
|
501
|
-
*
|
|
502
|
-
* #### Example:
|
|
503
|
-
*
|
|
504
|
-
* const schema = Schema({ name: String, age: Number });
|
|
505
|
-
* // Creates a new schema with the same `name` path as `schema`,
|
|
506
|
-
* // but no `age` path.
|
|
507
|
-
* const newSchema = schema.pick(['name']);
|
|
508
|
-
*
|
|
509
|
-
* newSchema.path('name'); // SchemaString { ... }
|
|
510
|
-
* newSchema.path('age'); // undefined
|
|
511
|
-
*
|
|
512
|
-
* @param {String[]} paths List of Paths to pick for the new Schema
|
|
513
|
-
* @param {Object} [options] Options to pass to the new Schema Constructor (same as `new Schema(.., Options)`). Defaults to `this.options` if not set.
|
|
514
|
-
* @return {Schema}
|
|
515
|
-
* @api public
|
|
516
|
-
*/
|
|
517
|
-
|
|
518
|
-
Schema.prototype.pick = function(paths, options) {
|
|
519
|
-
const newSchema = new Schema({}, options || this.options);
|
|
520
|
-
if (!Array.isArray(paths)) {
|
|
521
|
-
throw new MongooseError('Schema#pick() only accepts an array argument, ' +
|
|
522
|
-
'got "' + typeof paths + '"');
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
for (const path of paths) {
|
|
526
|
-
if (this._hasEncryptedField(path)) {
|
|
527
|
-
const encrypt = this.encryptedFields[path];
|
|
528
|
-
const schemaType = this.path(path);
|
|
529
|
-
newSchema.add({
|
|
530
|
-
[path]: {
|
|
531
|
-
encrypt,
|
|
532
|
-
[this.options.typeKey]: schemaType
|
|
533
|
-
}
|
|
534
|
-
});
|
|
535
|
-
} else if (this.nested[path]) {
|
|
536
|
-
newSchema.add({ [path]: get(this.tree, path) });
|
|
537
|
-
} else {
|
|
538
|
-
const schematype = this.path(path);
|
|
539
|
-
if (schematype == null) {
|
|
540
|
-
throw new MongooseError('Path `' + path + '` is not in the schema');
|
|
541
|
-
}
|
|
542
|
-
newSchema.add({ [path]: schematype });
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
if (!this._hasEncryptedFields()) {
|
|
547
|
-
newSchema.options.encryptionType = null;
|
|
548
|
-
}
|
|
549
|
-
|
|
550
|
-
return newSchema;
|
|
551
|
-
};
|
|
552
|
-
|
|
553
|
-
/**
|
|
554
|
-
* Returns a new schema that has the `paths` from the original schema, minus the omitted ones.
|
|
555
|
-
*
|
|
556
|
-
* This method is analagous to [Lodash's `omit()` function](https://lodash.com/docs/#omit) for Mongoose schemas.
|
|
557
|
-
*
|
|
558
|
-
* #### Example:
|
|
559
|
-
*
|
|
560
|
-
* const schema = Schema({ name: String, age: Number });
|
|
561
|
-
* // Creates a new schema omitting the `age` path
|
|
562
|
-
* const newSchema = schema.omit(['age']);
|
|
563
|
-
*
|
|
564
|
-
* newSchema.path('name'); // SchemaString { ... }
|
|
565
|
-
* newSchema.path('age'); // undefined
|
|
566
|
-
*
|
|
567
|
-
* @param {String[]} paths List of Paths to omit for the new Schema
|
|
568
|
-
* @param {Object} [options] Options to pass to the new Schema Constructor (same as `new Schema(.., Options)`). Defaults to `this.options` if not set.
|
|
569
|
-
* @return {Schema}
|
|
570
|
-
* @api public
|
|
571
|
-
*/
|
|
572
|
-
|
|
573
|
-
Schema.prototype.omit = function(paths, options) {
|
|
574
|
-
const newSchema = new Schema(this, options || this.options);
|
|
575
|
-
if (!Array.isArray(paths)) {
|
|
576
|
-
throw new MongooseError(
|
|
577
|
-
'Schema#omit() only accepts an array argument, ' +
|
|
578
|
-
'got "' +
|
|
579
|
-
typeof paths +
|
|
580
|
-
'"'
|
|
581
|
-
);
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
newSchema.remove(paths);
|
|
585
|
-
|
|
586
|
-
for (const nested in newSchema.singleNestedPaths) {
|
|
587
|
-
if (paths.includes(nested)) {
|
|
588
|
-
delete newSchema.singleNestedPaths[nested];
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
|
|
592
|
-
return newSchema;
|
|
593
|
-
};
|
|
594
|
-
|
|
595
|
-
/**
|
|
596
|
-
* Returns default options for this schema, merged with `options`.
|
|
597
|
-
*
|
|
598
|
-
* @param {Object} [options] Options to overwrite the default options
|
|
599
|
-
* @return {Object} The merged options of `options` and the default options
|
|
600
|
-
* @api private
|
|
601
|
-
*/
|
|
602
|
-
|
|
603
|
-
Schema.prototype.defaultOptions = function(options) {
|
|
604
|
-
this._userProvidedOptions = options == null ? {} : clone(options);
|
|
605
|
-
const baseOptions = this.base && this.base.options || {};
|
|
606
|
-
const strict = 'strict' in baseOptions ? baseOptions.strict : true;
|
|
607
|
-
const strictQuery = 'strictQuery' in baseOptions ? baseOptions.strictQuery : false;
|
|
608
|
-
const id = 'id' in baseOptions ? baseOptions.id : true;
|
|
609
|
-
options = {
|
|
610
|
-
strict,
|
|
611
|
-
strictQuery,
|
|
612
|
-
bufferCommands: true,
|
|
613
|
-
capped: false, // { size, max, autoIndexId }
|
|
614
|
-
versionKey: '__v',
|
|
615
|
-
optimisticConcurrency: false,
|
|
616
|
-
minimize: true,
|
|
617
|
-
autoIndex: null,
|
|
618
|
-
discriminatorKey: '__t',
|
|
619
|
-
shardKey: null,
|
|
620
|
-
read: null,
|
|
621
|
-
validateBeforeSave: true,
|
|
622
|
-
validateModifiedOnly: false,
|
|
623
|
-
// the following are only applied at construction time
|
|
624
|
-
_id: true,
|
|
625
|
-
id: id,
|
|
626
|
-
typeKey: 'type',
|
|
627
|
-
...options
|
|
628
|
-
};
|
|
629
|
-
|
|
630
|
-
if (options.versionKey && typeof options.versionKey !== 'string') {
|
|
631
|
-
throw new MongooseError('`versionKey` must be falsy or string, got `' + (typeof options.versionKey) + '`');
|
|
632
|
-
}
|
|
633
|
-
|
|
634
|
-
if (typeof options.read === 'string') {
|
|
635
|
-
options.read = handleReadPreferenceAliases(options.read);
|
|
636
|
-
} else if (Array.isArray(options.read) && typeof options.read[0] === 'string') {
|
|
637
|
-
options.read = {
|
|
638
|
-
mode: handleReadPreferenceAliases(options.read[0]),
|
|
639
|
-
tags: options.read[1]
|
|
640
|
-
};
|
|
641
|
-
}
|
|
642
|
-
|
|
643
|
-
if (options.optimisticConcurrency && !options.versionKey) {
|
|
644
|
-
throw new MongooseError('Must set `versionKey` if using `optimisticConcurrency`');
|
|
645
|
-
}
|
|
646
|
-
|
|
647
|
-
return options;
|
|
648
|
-
};
|
|
649
|
-
|
|
650
|
-
/**
|
|
651
|
-
* Inherit a Schema by applying a discriminator on an existing Schema.
|
|
652
|
-
*
|
|
653
|
-
*
|
|
654
|
-
* #### Example:
|
|
655
|
-
*
|
|
656
|
-
* const eventSchema = new mongoose.Schema({ timestamp: Date }, { discriminatorKey: 'kind' });
|
|
657
|
-
*
|
|
658
|
-
* const clickedEventSchema = new mongoose.Schema({ element: String }, { discriminatorKey: 'kind' });
|
|
659
|
-
* const ClickedModel = eventSchema.discriminator('clicked', clickedEventSchema);
|
|
660
|
-
*
|
|
661
|
-
* const Event = mongoose.model('Event', eventSchema);
|
|
662
|
-
*
|
|
663
|
-
* Event.discriminators['clicked']; // Model { clicked }
|
|
664
|
-
*
|
|
665
|
-
* const doc = await Event.create({ kind: 'clicked', element: '#hero' });
|
|
666
|
-
* doc.element; // '#hero'
|
|
667
|
-
* doc instanceof ClickedModel; // true
|
|
668
|
-
*
|
|
669
|
-
* @param {String} name the name of the discriminator
|
|
670
|
-
* @param {Schema} schema the discriminated Schema
|
|
671
|
-
* @param {Object} [options] discriminator options
|
|
672
|
-
* @param {String} [options.value] the string stored in the `discriminatorKey` property. If not specified, Mongoose uses the `name` parameter.
|
|
673
|
-
* @param {Boolean} [options.clone=true] By default, `discriminator()` clones the given `schema`. Set to `false` to skip cloning.
|
|
674
|
-
* @param {Boolean} [options.overwriteModels=false] by default, Mongoose does not allow you to define a discriminator with the same name as another discriminator. Set this to allow overwriting discriminators with the same name.
|
|
675
|
-
* @param {Boolean} [options.mergeHooks=true] By default, Mongoose merges the base schema's hooks with the discriminator schema's hooks. Set this option to `false` to make Mongoose use the discriminator schema's hooks instead.
|
|
676
|
-
* @param {Boolean} [options.mergePlugins=true] By default, Mongoose merges the base schema's plugins with the discriminator schema's plugins. Set this option to `false` to make Mongoose use the discriminator schema's plugins instead.
|
|
677
|
-
* @return {Schema} the Schema instance
|
|
678
|
-
* @api public
|
|
679
|
-
*/
|
|
680
|
-
Schema.prototype.discriminator = function(name, schema, options) {
|
|
681
|
-
this._applyDiscriminators = this._applyDiscriminators || new Map();
|
|
682
|
-
this._applyDiscriminators.set(name, { schema, options });
|
|
683
|
-
|
|
684
|
-
return this;
|
|
685
|
-
};
|
|
686
|
-
|
|
687
|
-
/*!
|
|
688
|
-
* Get the document middleware for this schema, filtering out any hooks that are specific to queries.
|
|
689
|
-
*/
|
|
690
|
-
Schema.prototype._getDocumentMiddleware = function _getDocumentMiddleware() {
|
|
691
|
-
return this.s.hooks.
|
|
692
|
-
filter(hook => {
|
|
693
|
-
if (hook.name === 'updateOne' || hook.name === 'deleteOne') {
|
|
694
|
-
return !!hook['document'];
|
|
695
|
-
}
|
|
696
|
-
if (hook.name === 'remove' || hook.name === 'init') {
|
|
697
|
-
return hook['document'] == null || !!hook['document'];
|
|
698
|
-
}
|
|
699
|
-
if (hook.query != null || hook.document != null) {
|
|
700
|
-
return hook.document !== false;
|
|
701
|
-
}
|
|
702
|
-
return true;
|
|
703
|
-
}).
|
|
704
|
-
filter(hook => {
|
|
705
|
-
// If user has overwritten the method, don't apply built-in middleware
|
|
706
|
-
if (this.methods[hook.name]) {
|
|
707
|
-
return !hook.fn[symbols.builtInMiddleware];
|
|
708
|
-
}
|
|
709
|
-
|
|
710
|
-
return true;
|
|
711
|
-
});
|
|
712
|
-
};
|
|
713
|
-
|
|
714
|
-
/*!
|
|
715
|
-
* Get this schema's default toObject/toJSON options, including Mongoose global
|
|
716
|
-
* options.
|
|
717
|
-
*/
|
|
718
|
-
|
|
719
|
-
Schema.prototype._defaultToObjectOptions = function(json) {
|
|
720
|
-
const path = json ? 'toJSON' : 'toObject';
|
|
721
|
-
if (this._defaultToObjectOptionsMap && this._defaultToObjectOptionsMap[path]) {
|
|
722
|
-
return this._defaultToObjectOptionsMap[path];
|
|
723
|
-
}
|
|
724
|
-
|
|
725
|
-
const baseOptions = this.base &&
|
|
726
|
-
this.base.options &&
|
|
727
|
-
this.base.options[path] || {};
|
|
728
|
-
const schemaOptions = this.options[path] || {};
|
|
729
|
-
// merge base default options with Schema's set default options if available.
|
|
730
|
-
// `clone` is necessary here because `utils.options` directly modifies the second input.
|
|
731
|
-
const defaultOptions = Object.assign({}, baseOptions, schemaOptions);
|
|
732
|
-
|
|
733
|
-
this._defaultToObjectOptionsMap = this._defaultToObjectOptionsMap || {};
|
|
734
|
-
this._defaultToObjectOptionsMap[path] = defaultOptions;
|
|
735
|
-
return defaultOptions;
|
|
736
|
-
};
|
|
737
|
-
|
|
738
|
-
/**
|
|
739
|
-
* Sets the encryption type of the schema, if a value is provided, otherwise
|
|
740
|
-
* returns the encryption type.
|
|
741
|
-
*
|
|
742
|
-
* @param {'csfle' | 'queryableEncryption' | null | undefined} encryptionType plain object with paths to add, or another schema
|
|
743
|
-
*/
|
|
744
|
-
Schema.prototype.encryptionType = function encryptionType(encryptionType) {
|
|
745
|
-
if (arguments.length === 0) {
|
|
746
|
-
return this.options.encryptionType;
|
|
747
|
-
}
|
|
748
|
-
if (!(typeof encryptionType === 'string' || encryptionType === null)) {
|
|
749
|
-
throw new Error('invalid `encryptionType`: ${encryptionType}');
|
|
750
|
-
}
|
|
751
|
-
this.options.encryptionType = encryptionType;
|
|
752
|
-
};
|
|
753
|
-
|
|
754
|
-
/**
|
|
755
|
-
* Adds key path / schema type pairs to this schema.
|
|
756
|
-
*
|
|
757
|
-
* #### Example:
|
|
758
|
-
*
|
|
759
|
-
* const ToySchema = new Schema();
|
|
760
|
-
* ToySchema.add({ name: 'string', color: 'string', price: 'number' });
|
|
761
|
-
*
|
|
762
|
-
* const TurboManSchema = new Schema();
|
|
763
|
-
* // You can also `add()` another schema and copy over all paths, virtuals,
|
|
764
|
-
* // getters, setters, indexes, methods, and statics.
|
|
765
|
-
* TurboManSchema.add(ToySchema).add({ year: Number });
|
|
766
|
-
*
|
|
767
|
-
* @param {Object|Schema} obj plain object with paths to add, or another schema
|
|
768
|
-
* @param {String} [prefix] path to prefix the newly added paths with
|
|
769
|
-
* @return {Schema} the Schema instance
|
|
770
|
-
* @api public
|
|
771
|
-
*/
|
|
772
|
-
|
|
773
|
-
Schema.prototype.add = function add(obj, prefix) {
|
|
774
|
-
if (obj instanceof Schema || (obj != null && obj.instanceOfSchema)) {
|
|
775
|
-
merge(this, obj);
|
|
776
|
-
return this;
|
|
777
|
-
}
|
|
778
|
-
|
|
779
|
-
// Special case: setting top-level `_id` to false should convert to disabling
|
|
780
|
-
// the `_id` option. This behavior never worked before 5.4.11 but numerous
|
|
781
|
-
// codebases use it (see gh-7516, gh-7512).
|
|
782
|
-
if (obj._id === false && prefix == null) {
|
|
783
|
-
this.options._id = false;
|
|
784
|
-
}
|
|
785
|
-
|
|
786
|
-
prefix = prefix || '';
|
|
787
|
-
// avoid prototype pollution
|
|
788
|
-
if (prefix === '__proto__.' || prefix === 'constructor.' || prefix === 'prototype.') {
|
|
789
|
-
return this;
|
|
790
|
-
}
|
|
791
|
-
|
|
792
|
-
const keys = Object.keys(obj);
|
|
793
|
-
const typeKey = this.options.typeKey;
|
|
794
|
-
for (const key of keys) {
|
|
795
|
-
if (utils.specialProperties.has(key)) {
|
|
796
|
-
continue;
|
|
797
|
-
}
|
|
798
|
-
|
|
799
|
-
const fullPath = prefix + key;
|
|
800
|
-
const val = obj[key];
|
|
801
|
-
|
|
802
|
-
if (val == null) {
|
|
803
|
-
throw new TypeError('Invalid value for schema path `' + fullPath +
|
|
804
|
-
'`, got value "' + val + '"');
|
|
805
|
-
}
|
|
806
|
-
// Retain `_id: false` but don't set it as a path, re: gh-8274.
|
|
807
|
-
if (key === '_id' && val === false) {
|
|
808
|
-
continue;
|
|
809
|
-
}
|
|
810
|
-
// Deprecate setting schema paths to primitive types (gh-7558)
|
|
811
|
-
let isMongooseTypeString = false;
|
|
812
|
-
if (typeof val === 'string') {
|
|
813
|
-
// Handle the case in which the type is specified as a string (eg. 'date', 'oid', ...)
|
|
814
|
-
const MongooseTypes = this.base != null ? this.base.Schema.Types : Schema.Types;
|
|
815
|
-
const upperVal = val.charAt(0).toUpperCase() + val.substring(1);
|
|
816
|
-
isMongooseTypeString = MongooseTypes[upperVal] != null;
|
|
817
|
-
}
|
|
818
|
-
if (
|
|
819
|
-
key !== '_id' &&
|
|
820
|
-
((typeof val !== 'object' && typeof val !== 'function' && !isMongooseTypeString) ||
|
|
821
|
-
val == null)
|
|
822
|
-
) {
|
|
823
|
-
throw new TypeError(`Invalid schema configuration: \`${val}\` is not ` +
|
|
824
|
-
`a valid type at path \`${key}\`. See ` +
|
|
825
|
-
'https://bit.ly/mongoose-schematypes for a list of valid schema types.');
|
|
826
|
-
}
|
|
827
|
-
if (val instanceof VirtualType || (val.constructor && val.constructor.name || null) === 'VirtualType') {
|
|
828
|
-
this.virtual(val);
|
|
829
|
-
continue;
|
|
830
|
-
}
|
|
831
|
-
|
|
832
|
-
if (Array.isArray(val) && val.length === 1 && val[0] == null) {
|
|
833
|
-
throw new TypeError('Invalid value for schema Array path `' + fullPath +
|
|
834
|
-
'`, got value "' + val[0] + '"');
|
|
835
|
-
}
|
|
836
|
-
|
|
837
|
-
if (!(isPOJO(val) || val instanceof SchemaTypeOptions)) {
|
|
838
|
-
// Special-case: Non-options definitely a path so leaf at this node
|
|
839
|
-
// Examples: Schema instances, SchemaType instances
|
|
840
|
-
if (prefix) {
|
|
841
|
-
this.nested[prefix.substring(0, prefix.length - 1)] = true;
|
|
842
|
-
}
|
|
843
|
-
this.path(prefix + key, val);
|
|
844
|
-
if (val[0] != null && !(val[0].instanceOfSchema) && utils.isPOJO(val[0].discriminators)) {
|
|
845
|
-
const schemaType = this.path(prefix + key);
|
|
846
|
-
for (const key in val[0].discriminators) {
|
|
847
|
-
schemaType.discriminator(key, val[0].discriminators[key]);
|
|
848
|
-
}
|
|
849
|
-
}
|
|
850
|
-
} else if (Object.keys(val).length < 1) {
|
|
851
|
-
// Special-case: {} always interpreted as Mixed path so leaf at this node
|
|
852
|
-
if (prefix) {
|
|
853
|
-
this.nested[prefix.substring(0, prefix.length - 1)] = true;
|
|
854
|
-
}
|
|
855
|
-
this.path(fullPath, val); // mixed type
|
|
856
|
-
} else if (!val[typeKey] || (typeKey === 'type' && isPOJO(val.type) && val.type.type)) {
|
|
857
|
-
// Special-case: POJO with no bona-fide type key - interpret as tree of deep paths so recurse
|
|
858
|
-
// nested object `{ last: { name: String } }`. Avoid functions with `.type` re: #10807 because
|
|
859
|
-
// NestJS sometimes adds `Date.type`.
|
|
860
|
-
this.nested[fullPath] = true;
|
|
861
|
-
this.add(val, fullPath + '.');
|
|
862
|
-
} else {
|
|
863
|
-
// There IS a bona-fide type key that may also be a POJO
|
|
864
|
-
const _typeDef = val[typeKey];
|
|
865
|
-
if (isPOJO(_typeDef) && Object.keys(_typeDef).length > 0) {
|
|
866
|
-
// If a POJO is the value of a type key, make it a subdocument
|
|
867
|
-
if (prefix) {
|
|
868
|
-
this.nested[prefix.substring(0, prefix.length - 1)] = true;
|
|
869
|
-
}
|
|
870
|
-
|
|
871
|
-
const childSchemaOptions = {};
|
|
872
|
-
if (this._userProvidedOptions.typeKey) {
|
|
873
|
-
childSchemaOptions.typeKey = this._userProvidedOptions.typeKey;
|
|
874
|
-
}
|
|
875
|
-
// propagate 'strict' option to child schema
|
|
876
|
-
if (this._userProvidedOptions.strict != null) {
|
|
877
|
-
childSchemaOptions.strict = this._userProvidedOptions.strict;
|
|
878
|
-
}
|
|
879
|
-
if (this._userProvidedOptions.toObject != null) {
|
|
880
|
-
childSchemaOptions.toObject = utils.omit(this._userProvidedOptions.toObject, ['transform']);
|
|
881
|
-
}
|
|
882
|
-
if (this._userProvidedOptions.toJSON != null) {
|
|
883
|
-
childSchemaOptions.toJSON = utils.omit(this._userProvidedOptions.toJSON, ['transform']);
|
|
884
|
-
}
|
|
885
|
-
|
|
886
|
-
const _schema = new Schema(_typeDef, childSchemaOptions);
|
|
887
|
-
_schema.$implicitlyCreated = true;
|
|
888
|
-
const schemaWrappedPath = Object.assign({}, val, { [typeKey]: _schema });
|
|
889
|
-
this.path(prefix + key, schemaWrappedPath);
|
|
890
|
-
} else {
|
|
891
|
-
// Either the type is non-POJO or we interpret it as Mixed anyway
|
|
892
|
-
if (prefix) {
|
|
893
|
-
this.nested[prefix.substring(0, prefix.length - 1)] = true;
|
|
894
|
-
}
|
|
895
|
-
this.path(prefix + key, val);
|
|
896
|
-
if (val != null && !(val.instanceOfSchema) && utils.isPOJO(val.discriminators)) {
|
|
897
|
-
const schemaType = this.path(prefix + key);
|
|
898
|
-
for (const key in val.discriminators) {
|
|
899
|
-
schemaType.discriminator(key, val.discriminators[key]);
|
|
900
|
-
}
|
|
901
|
-
}
|
|
902
|
-
}
|
|
903
|
-
}
|
|
904
|
-
|
|
905
|
-
if (val.instanceOfSchema && val.encryptionType() != null) {
|
|
906
|
-
// schema.add({ field: <instance of encrypted schema> })
|
|
907
|
-
if (this.encryptionType() != val.encryptionType()) {
|
|
908
|
-
throw new Error('encryptionType of a nested schema must match the encryption type of the parent schema.');
|
|
909
|
-
}
|
|
910
|
-
|
|
911
|
-
for (const [encryptedField, encryptedFieldConfig] of Object.entries(val.encryptedFields)) {
|
|
912
|
-
const path = fullPath + '.' + encryptedField;
|
|
913
|
-
this._addEncryptedField(path, encryptedFieldConfig);
|
|
914
|
-
}
|
|
915
|
-
} else if (typeof val === 'object' && 'encrypt' in val) {
|
|
916
|
-
// schema.add({ field: { type: <schema type>, encrypt: { ... }}})
|
|
917
|
-
const { encrypt } = val;
|
|
918
|
-
|
|
919
|
-
if (this.encryptionType() == null) {
|
|
920
|
-
throw new Error('encryptionType must be provided');
|
|
921
|
-
}
|
|
922
|
-
|
|
923
|
-
this._addEncryptedField(fullPath, encrypt);
|
|
924
|
-
} else {
|
|
925
|
-
// if the field was already encrypted and we re-configure it to be unencrypted, remove
|
|
926
|
-
// the encrypted field configuration
|
|
927
|
-
this._removeEncryptedField(fullPath);
|
|
928
|
-
}
|
|
929
|
-
}
|
|
930
|
-
|
|
931
|
-
const aliasObj = Object.fromEntries(
|
|
932
|
-
Object.entries(obj).map(([key]) => ([prefix + key, null]))
|
|
933
|
-
);
|
|
934
|
-
aliasFields(this, aliasObj);
|
|
935
|
-
return this;
|
|
936
|
-
};
|
|
937
|
-
|
|
938
|
-
/**
|
|
939
|
-
* @param {string} path
|
|
940
|
-
* @param {object} fieldConfig
|
|
941
|
-
*
|
|
942
|
-
* @api private
|
|
943
|
-
*/
|
|
944
|
-
Schema.prototype._addEncryptedField = function _addEncryptedField(path, fieldConfig) {
|
|
945
|
-
const type = this.path(path).autoEncryptionType();
|
|
946
|
-
if (type == null) {
|
|
947
|
-
throw new Error(`Invalid BSON type for FLE field: '${path}'`);
|
|
948
|
-
}
|
|
949
|
-
|
|
950
|
-
this.encryptedFields[path] = clone(fieldConfig);
|
|
951
|
-
};
|
|
952
|
-
|
|
953
|
-
/**
|
|
954
|
-
* @param {string} path
|
|
955
|
-
*
|
|
956
|
-
* @api private
|
|
957
|
-
*/
|
|
958
|
-
Schema.prototype._removeEncryptedField = function _removeEncryptedField(path) {
|
|
959
|
-
delete this.encryptedFields[path];
|
|
960
|
-
};
|
|
961
|
-
|
|
962
|
-
/**
|
|
963
|
-
* @api private
|
|
964
|
-
*
|
|
965
|
-
* @returns {boolean}
|
|
966
|
-
*/
|
|
967
|
-
Schema.prototype._hasEncryptedFields = function _hasEncryptedFields() {
|
|
968
|
-
return Object.keys(this.encryptedFields).length > 0;
|
|
969
|
-
};
|
|
970
|
-
|
|
971
|
-
/**
|
|
972
|
-
* @param {string} path
|
|
973
|
-
* @returns {boolean}
|
|
974
|
-
*
|
|
975
|
-
* @api private
|
|
976
|
-
*/
|
|
977
|
-
Schema.prototype._hasEncryptedField = function _hasEncryptedField(path) {
|
|
978
|
-
return path in this.encryptedFields;
|
|
979
|
-
};
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
/**
|
|
983
|
-
* Builds an encryptedFieldsMap for the schema.
|
|
984
|
-
*
|
|
985
|
-
* @api private
|
|
986
|
-
*/
|
|
987
|
-
Schema.prototype._buildEncryptedFields = function() {
|
|
988
|
-
const fields = Object.entries(this.encryptedFields).map(
|
|
989
|
-
([path, config]) => {
|
|
990
|
-
const bsonType = this.path(path).autoEncryptionType();
|
|
991
|
-
// { path, bsonType, keyId, queries? }
|
|
992
|
-
return { path, bsonType, ...config };
|
|
993
|
-
});
|
|
994
|
-
|
|
995
|
-
return { fields };
|
|
996
|
-
};
|
|
997
|
-
|
|
998
|
-
/**
|
|
999
|
-
* Builds a schemaMap for the schema, if the schema is configured for client-side field level encryption.
|
|
1000
|
-
*
|
|
1001
|
-
* @api private
|
|
1002
|
-
*/
|
|
1003
|
-
Schema.prototype._buildSchemaMap = function() {
|
|
1004
|
-
/**
|
|
1005
|
-
* `schemaMap`s are JSON schemas, which use the following structure to represent objects:
|
|
1006
|
-
* { field: { bsonType: 'object', properties: { ... } } }
|
|
1007
|
-
*
|
|
1008
|
-
* for example, a schema that looks like this `{ a: { b: int32 } }` would be encoded as
|
|
1009
|
-
* `{ a: { bsonType: 'object', properties: { b: < encryption configuration > } } }`
|
|
1010
|
-
*
|
|
1011
|
-
* This function takes an array of path segments, an output object (that gets mutated) and
|
|
1012
|
-
* a value to be associated with the full path, and constructs a valid CSFLE JSON schema path for
|
|
1013
|
-
* the object. This works for deeply nested properties as well.
|
|
1014
|
-
*
|
|
1015
|
-
* @param {string[]} path array of path components
|
|
1016
|
-
* @param {object} object the object in which to build a JSON schema of `path`'s properties
|
|
1017
|
-
* @param {object} value the value to associate with the path in object
|
|
1018
|
-
*/
|
|
1019
|
-
function buildNestedPath(path, object, value) {
|
|
1020
|
-
let i = 0, component = path[i];
|
|
1021
|
-
for (; i < path.length - 1; ++i, component = path[i]) {
|
|
1022
|
-
object[component] = object[component] == null ? {
|
|
1023
|
-
bsonType: 'object',
|
|
1024
|
-
properties: {}
|
|
1025
|
-
} : object[component];
|
|
1026
|
-
object = object[component].properties;
|
|
1027
|
-
}
|
|
1028
|
-
object[component] = value;
|
|
1029
|
-
}
|
|
1030
|
-
|
|
1031
|
-
const schemaMapPropertyReducer = (accum, [path, propertyConfig]) => {
|
|
1032
|
-
const bsonType = this.path(path).autoEncryptionType();
|
|
1033
|
-
const pathComponents = path.split('.');
|
|
1034
|
-
const configuration = { encrypt: { ...propertyConfig, bsonType } };
|
|
1035
|
-
buildNestedPath(pathComponents, accum, configuration);
|
|
1036
|
-
return accum;
|
|
1037
|
-
};
|
|
1038
|
-
|
|
1039
|
-
const properties = Object.entries(this.encryptedFields).reduce(
|
|
1040
|
-
schemaMapPropertyReducer,
|
|
1041
|
-
{});
|
|
1042
|
-
|
|
1043
|
-
return {
|
|
1044
|
-
bsonType: 'object',
|
|
1045
|
-
properties
|
|
1046
|
-
};
|
|
1047
|
-
};
|
|
1048
|
-
|
|
1049
|
-
/**
|
|
1050
|
-
* Add an alias for `path`. This means getting or setting the `alias`
|
|
1051
|
-
* is equivalent to getting or setting the `path`.
|
|
1052
|
-
*
|
|
1053
|
-
* #### Example:
|
|
1054
|
-
*
|
|
1055
|
-
* const toySchema = new Schema({ n: String });
|
|
1056
|
-
*
|
|
1057
|
-
* // Make 'name' an alias for 'n'
|
|
1058
|
-
* toySchema.alias('n', 'name');
|
|
1059
|
-
*
|
|
1060
|
-
* const Toy = mongoose.model('Toy', toySchema);
|
|
1061
|
-
* const turboMan = new Toy({ n: 'Turbo Man' });
|
|
1062
|
-
*
|
|
1063
|
-
* turboMan.name; // 'Turbo Man'
|
|
1064
|
-
* turboMan.n; // 'Turbo Man'
|
|
1065
|
-
*
|
|
1066
|
-
* turboMan.name = 'Turbo Man Action Figure';
|
|
1067
|
-
* turboMan.n; // 'Turbo Man Action Figure'
|
|
1068
|
-
*
|
|
1069
|
-
* await turboMan.save(); // Saves { _id: ..., n: 'Turbo Man Action Figure' }
|
|
1070
|
-
*
|
|
1071
|
-
*
|
|
1072
|
-
* @param {String} path real path to alias
|
|
1073
|
-
* @param {String|String[]} alias the path(s) to use as an alias for `path`
|
|
1074
|
-
* @return {Schema} the Schema instance
|
|
1075
|
-
* @api public
|
|
1076
|
-
*/
|
|
1077
|
-
|
|
1078
|
-
Schema.prototype.alias = function alias(path, alias) {
|
|
1079
|
-
aliasFields(this, { [path]: alias });
|
|
1080
|
-
return this;
|
|
1081
|
-
};
|
|
1082
|
-
|
|
1083
|
-
/**
|
|
1084
|
-
* Remove an index by name or index specification.
|
|
1085
|
-
*
|
|
1086
|
-
* removeIndex only removes indexes from your schema object. Does **not** affect the indexes
|
|
1087
|
-
* in MongoDB.
|
|
1088
|
-
*
|
|
1089
|
-
* #### Example:
|
|
1090
|
-
*
|
|
1091
|
-
* const ToySchema = new Schema({ name: String, color: String, price: Number });
|
|
1092
|
-
*
|
|
1093
|
-
* // Add a new index on { name, color }
|
|
1094
|
-
* ToySchema.index({ name: 1, color: 1 });
|
|
1095
|
-
*
|
|
1096
|
-
* // Remove index on { name, color }
|
|
1097
|
-
* // Keep in mind that order matters! `removeIndex({ color: 1, name: 1 })` won't remove the index
|
|
1098
|
-
* ToySchema.removeIndex({ name: 1, color: 1 });
|
|
1099
|
-
*
|
|
1100
|
-
* // Add an index with a custom name
|
|
1101
|
-
* ToySchema.index({ color: 1 }, { name: 'my custom index name' });
|
|
1102
|
-
* // Remove index by name
|
|
1103
|
-
* ToySchema.removeIndex('my custom index name');
|
|
1104
|
-
*
|
|
1105
|
-
* @param {Object|string} index name or index specification
|
|
1106
|
-
* @return {Schema} the Schema instance
|
|
1107
|
-
* @api public
|
|
1108
|
-
*/
|
|
1109
|
-
|
|
1110
|
-
Schema.prototype.removeIndex = function removeIndex(index) {
|
|
1111
|
-
if (arguments.length > 1) {
|
|
1112
|
-
throw new Error('removeIndex() takes only 1 argument');
|
|
1113
|
-
}
|
|
1114
|
-
|
|
1115
|
-
if (typeof index !== 'object' && typeof index !== 'string') {
|
|
1116
|
-
throw new Error('removeIndex() may only take either an object or a string as an argument');
|
|
1117
|
-
}
|
|
1118
|
-
|
|
1119
|
-
if (typeof index === 'object') {
|
|
1120
|
-
for (let i = this._indexes.length - 1; i >= 0; --i) {
|
|
1121
|
-
if (isIndexSpecEqual(this._indexes[i][0], index)) {
|
|
1122
|
-
this._indexes.splice(i, 1);
|
|
1123
|
-
}
|
|
1124
|
-
}
|
|
1125
|
-
} else {
|
|
1126
|
-
for (let i = this._indexes.length - 1; i >= 0; --i) {
|
|
1127
|
-
if (this._indexes[i][1] != null && this._indexes[i][1].name === index) {
|
|
1128
|
-
this._indexes.splice(i, 1);
|
|
1129
|
-
}
|
|
1130
|
-
}
|
|
1131
|
-
}
|
|
1132
|
-
|
|
1133
|
-
return this;
|
|
1134
|
-
};
|
|
1135
|
-
|
|
1136
|
-
/**
|
|
1137
|
-
* Remove all indexes from this schema.
|
|
1138
|
-
*
|
|
1139
|
-
* clearIndexes only removes indexes from your schema object. Does **not** affect the indexes
|
|
1140
|
-
* in MongoDB.
|
|
1141
|
-
*
|
|
1142
|
-
* #### Example:
|
|
1143
|
-
*
|
|
1144
|
-
* const ToySchema = new Schema({ name: String, color: String, price: Number });
|
|
1145
|
-
* ToySchema.index({ name: 1 });
|
|
1146
|
-
* ToySchema.index({ color: 1 });
|
|
1147
|
-
*
|
|
1148
|
-
* // Remove all indexes on this schema
|
|
1149
|
-
* ToySchema.clearIndexes();
|
|
1150
|
-
*
|
|
1151
|
-
* ToySchema.indexes(); // []
|
|
1152
|
-
*
|
|
1153
|
-
* @return {Schema} the Schema instance
|
|
1154
|
-
* @api public
|
|
1155
|
-
*/
|
|
1156
|
-
|
|
1157
|
-
Schema.prototype.clearIndexes = function clearIndexes() {
|
|
1158
|
-
this._indexes.length = 0;
|
|
1159
|
-
|
|
1160
|
-
return this;
|
|
1161
|
-
};
|
|
1162
|
-
|
|
1163
|
-
/**
|
|
1164
|
-
* Add an [Atlas search index](https://www.mongodb.com/docs/atlas/atlas-search/create-index/) that Mongoose will create using `Model.createSearchIndex()`.
|
|
1165
|
-
* This function only works when connected to MongoDB Atlas.
|
|
1166
|
-
*
|
|
1167
|
-
* #### Example:
|
|
1168
|
-
*
|
|
1169
|
-
* const ToySchema = new Schema({ name: String, color: String, price: Number });
|
|
1170
|
-
* ToySchema.searchIndex({ name: 'test', definition: { mappings: { dynamic: true } } });
|
|
1171
|
-
*
|
|
1172
|
-
* @param {Object} description index options, including `name` and `definition`
|
|
1173
|
-
* @param {String} description.name
|
|
1174
|
-
* @param {Object} description.definition
|
|
1175
|
-
* @return {Schema} the Schema instance
|
|
1176
|
-
* @api public
|
|
1177
|
-
*/
|
|
1178
|
-
|
|
1179
|
-
Schema.prototype.searchIndex = function searchIndex(description) {
|
|
1180
|
-
this._searchIndexes.push(description);
|
|
1181
|
-
|
|
1182
|
-
return this;
|
|
1183
|
-
};
|
|
1184
|
-
|
|
1185
|
-
/**
|
|
1186
|
-
* Reserved document keys.
|
|
1187
|
-
*
|
|
1188
|
-
* Keys in this object are names that are warned in schema declarations
|
|
1189
|
-
* because they have the potential to break Mongoose/ Mongoose plugins functionality. If you create a schema
|
|
1190
|
-
* using `new Schema()` with one of these property names, Mongoose will log a warning.
|
|
1191
|
-
*
|
|
1192
|
-
* - _posts
|
|
1193
|
-
* - _pres
|
|
1194
|
-
* - collection
|
|
1195
|
-
* - emit
|
|
1196
|
-
* - errors
|
|
1197
|
-
* - get
|
|
1198
|
-
* - init
|
|
1199
|
-
* - isModified
|
|
1200
|
-
* - isNew
|
|
1201
|
-
* - listeners
|
|
1202
|
-
* - modelName
|
|
1203
|
-
* - on
|
|
1204
|
-
* - once
|
|
1205
|
-
* - populated
|
|
1206
|
-
* - prototype
|
|
1207
|
-
* - remove
|
|
1208
|
-
* - removeListener
|
|
1209
|
-
* - save
|
|
1210
|
-
* - schema
|
|
1211
|
-
* - toObject
|
|
1212
|
-
* - validate
|
|
1213
|
-
*
|
|
1214
|
-
* _NOTE:_ Use of these terms as method names is permitted, but play at your own risk, as they may be existing mongoose document methods you are stomping on.
|
|
1215
|
-
*
|
|
1216
|
-
* const schema = new Schema(..);
|
|
1217
|
-
* schema.methods.init = function () {} // potentially breaking
|
|
1218
|
-
*
|
|
1219
|
-
* @property reserved
|
|
1220
|
-
* @memberOf Schema
|
|
1221
|
-
* @static
|
|
1222
|
-
*/
|
|
1223
|
-
|
|
1224
|
-
Schema.reserved = Object.create(null);
|
|
1225
|
-
Schema.prototype.reserved = Schema.reserved;
|
|
1226
|
-
|
|
1227
|
-
const reserved = Schema.reserved;
|
|
1228
|
-
// Core object
|
|
1229
|
-
reserved['prototype'] =
|
|
1230
|
-
// EventEmitter
|
|
1231
|
-
reserved.emit =
|
|
1232
|
-
reserved.listeners =
|
|
1233
|
-
reserved.removeListener =
|
|
1234
|
-
|
|
1235
|
-
// document properties and functions
|
|
1236
|
-
reserved.collection =
|
|
1237
|
-
reserved.errors =
|
|
1238
|
-
reserved.get =
|
|
1239
|
-
reserved.init =
|
|
1240
|
-
reserved.isModified =
|
|
1241
|
-
reserved.isNew =
|
|
1242
|
-
reserved.populated =
|
|
1243
|
-
reserved.remove =
|
|
1244
|
-
reserved.save =
|
|
1245
|
-
reserved.toObject =
|
|
1246
|
-
reserved.validate = 1;
|
|
1247
|
-
reserved.collection = 1;
|
|
1248
|
-
|
|
1249
|
-
/**
|
|
1250
|
-
* Gets/sets schema paths.
|
|
1251
|
-
*
|
|
1252
|
-
* Sets a path (if arity 2)
|
|
1253
|
-
* Gets a path (if arity 1)
|
|
1254
|
-
*
|
|
1255
|
-
* #### Example:
|
|
1256
|
-
*
|
|
1257
|
-
* schema.path('name') // returns a SchemaType
|
|
1258
|
-
* schema.path('name', Number) // changes the schemaType of `name` to Number
|
|
1259
|
-
*
|
|
1260
|
-
* @param {String} path The name of the Path to get / set
|
|
1261
|
-
* @param {Object} [obj] The Type to set the path to, if provided the path will be SET, otherwise the path will be GET
|
|
1262
|
-
* @api public
|
|
1263
|
-
*/
|
|
1264
|
-
|
|
1265
|
-
Schema.prototype.path = function(path, obj) {
|
|
1266
|
-
if (obj === undefined) {
|
|
1267
|
-
if (this.paths[path] != null) {
|
|
1268
|
-
return this.paths[path];
|
|
1269
|
-
}
|
|
1270
|
-
// Convert to '.$' to check subpaths re: gh-6405
|
|
1271
|
-
const cleanPath = _pathToPositionalSyntax(path);
|
|
1272
|
-
let schematype = _getPath(this, path, cleanPath);
|
|
1273
|
-
if (schematype != null) {
|
|
1274
|
-
return schematype;
|
|
1275
|
-
}
|
|
1276
|
-
|
|
1277
|
-
// Look for maps
|
|
1278
|
-
const mapPath = getMapPath(this, path);
|
|
1279
|
-
if (mapPath != null) {
|
|
1280
|
-
return mapPath;
|
|
1281
|
-
}
|
|
1282
|
-
|
|
1283
|
-
// Look if a parent of this path is mixed
|
|
1284
|
-
schematype = this.hasMixedParent(cleanPath);
|
|
1285
|
-
if (schematype != null) {
|
|
1286
|
-
return schematype;
|
|
1287
|
-
}
|
|
1288
|
-
|
|
1289
|
-
// subpaths?
|
|
1290
|
-
return hasNumericSubpathRegex.test(path)
|
|
1291
|
-
? getPositionalPath(this, path, cleanPath)
|
|
1292
|
-
: undefined;
|
|
1293
|
-
}
|
|
1294
|
-
|
|
1295
|
-
// some path names conflict with document methods
|
|
1296
|
-
const firstPieceOfPath = path.split('.')[0];
|
|
1297
|
-
if (reserved[firstPieceOfPath] && !this.options.suppressReservedKeysWarning) {
|
|
1298
|
-
const errorMessage = `\`${firstPieceOfPath}\` is a reserved schema pathname and may break some functionality. ` +
|
|
1299
|
-
'You are allowed to use it, but use at your own risk. ' +
|
|
1300
|
-
'To disable this warning pass `suppressReservedKeysWarning` as a schema option.';
|
|
1301
|
-
|
|
1302
|
-
utils.warn(errorMessage);
|
|
1303
|
-
}
|
|
1304
|
-
|
|
1305
|
-
if (typeof obj === 'object' && utils.hasUserDefinedProperty(obj, 'ref')) {
|
|
1306
|
-
validateRef(obj.ref, path);
|
|
1307
|
-
}
|
|
1308
|
-
|
|
1309
|
-
// update the tree
|
|
1310
|
-
const subpaths = path.split(/\./);
|
|
1311
|
-
const last = subpaths.pop();
|
|
1312
|
-
let branch = this.tree;
|
|
1313
|
-
let fullPath = '';
|
|
1314
|
-
|
|
1315
|
-
for (const sub of subpaths) {
|
|
1316
|
-
if (utils.specialProperties.has(sub)) {
|
|
1317
|
-
throw new Error('Cannot set special property `' + sub + '` on a schema');
|
|
1318
|
-
}
|
|
1319
|
-
fullPath = fullPath += (fullPath.length > 0 ? '.' : '') + sub;
|
|
1320
|
-
if (!branch[sub]) {
|
|
1321
|
-
this.nested[fullPath] = true;
|
|
1322
|
-
branch[sub] = {};
|
|
1323
|
-
}
|
|
1324
|
-
if (typeof branch[sub] !== 'object') {
|
|
1325
|
-
const msg = 'Cannot set nested path `' + path + '`. '
|
|
1326
|
-
+ 'Parent path `'
|
|
1327
|
-
+ fullPath
|
|
1328
|
-
+ '` already set to type ' + branch[sub].name
|
|
1329
|
-
+ '.';
|
|
1330
|
-
throw new Error(msg);
|
|
1331
|
-
}
|
|
1332
|
-
branch = branch[sub];
|
|
1333
|
-
}
|
|
1334
|
-
|
|
1335
|
-
branch[last] = clone(obj);
|
|
1336
|
-
|
|
1337
|
-
this.paths[path] = this.interpretAsType(path, obj, this.options);
|
|
1338
|
-
const schemaType = this.paths[path];
|
|
1339
|
-
|
|
1340
|
-
// If overwriting an existing path, make sure to clear the childSchemas
|
|
1341
|
-
this.childSchemas = this.childSchemas.filter(childSchema => childSchema.path !== path);
|
|
1342
|
-
|
|
1343
|
-
if (schemaType.$isSchemaMap) {
|
|
1344
|
-
// Maps can have arbitrary keys, so `$*` is internal shorthand for "any key"
|
|
1345
|
-
// The '$' is to imply this path should never be stored in MongoDB so we
|
|
1346
|
-
// can easily build a regexp out of this path, and '*' to imply "any key."
|
|
1347
|
-
const mapPath = path + '.$*';
|
|
1348
|
-
|
|
1349
|
-
this.paths[mapPath] = schemaType.$__schemaType;
|
|
1350
|
-
this.mapPaths.push(this.paths[mapPath]);
|
|
1351
|
-
if (schemaType.$__schemaType.$isSingleNested) {
|
|
1352
|
-
this.childSchemas.push({
|
|
1353
|
-
schema: schemaType.$__schemaType.schema,
|
|
1354
|
-
model: schemaType.$__schemaType.Constructor,
|
|
1355
|
-
path: path
|
|
1356
|
-
});
|
|
1357
|
-
}
|
|
1358
|
-
}
|
|
1359
|
-
|
|
1360
|
-
if (schemaType.$isSingleNested) {
|
|
1361
|
-
for (const key of Object.keys(schemaType.schema.paths)) {
|
|
1362
|
-
this.singleNestedPaths[path + '.' + key] = schemaType.schema.paths[key];
|
|
1363
|
-
}
|
|
1364
|
-
for (const key of Object.keys(schemaType.schema.singleNestedPaths)) {
|
|
1365
|
-
this.singleNestedPaths[path + '.' + key] =
|
|
1366
|
-
schemaType.schema.singleNestedPaths[key];
|
|
1367
|
-
}
|
|
1368
|
-
for (const key of Object.keys(schemaType.schema.subpaths)) {
|
|
1369
|
-
this.singleNestedPaths[path + '.' + key] =
|
|
1370
|
-
schemaType.schema.subpaths[key];
|
|
1371
|
-
}
|
|
1372
|
-
for (const key of Object.keys(schemaType.schema.nested)) {
|
|
1373
|
-
this.singleNestedPaths[path + '.' + key] = 'nested';
|
|
1374
|
-
}
|
|
1375
|
-
|
|
1376
|
-
Object.defineProperty(schemaType.schema, 'base', {
|
|
1377
|
-
configurable: true,
|
|
1378
|
-
enumerable: false,
|
|
1379
|
-
writable: false,
|
|
1380
|
-
value: this.base
|
|
1381
|
-
});
|
|
1382
|
-
|
|
1383
|
-
schemaType.Constructor.base = this.base;
|
|
1384
|
-
this.childSchemas.push({
|
|
1385
|
-
schema: schemaType.schema,
|
|
1386
|
-
model: schemaType.Constructor,
|
|
1387
|
-
path: path
|
|
1388
|
-
});
|
|
1389
|
-
} else if (schemaType.$isMongooseDocumentArray) {
|
|
1390
|
-
Object.defineProperty(schemaType.schema, 'base', {
|
|
1391
|
-
configurable: true,
|
|
1392
|
-
enumerable: false,
|
|
1393
|
-
writable: false,
|
|
1394
|
-
value: this.base
|
|
1395
|
-
});
|
|
1396
|
-
|
|
1397
|
-
schemaType.Constructor.base = this.base;
|
|
1398
|
-
this.childSchemas.push({
|
|
1399
|
-
schema: schemaType.schema,
|
|
1400
|
-
model: schemaType.Constructor,
|
|
1401
|
-
path: path
|
|
1402
|
-
});
|
|
1403
|
-
}
|
|
1404
|
-
|
|
1405
|
-
if (schemaType.$isMongooseArray && !schemaType.$isMongooseDocumentArray) {
|
|
1406
|
-
let arrayPath = path;
|
|
1407
|
-
let _schemaType = schemaType;
|
|
1408
|
-
|
|
1409
|
-
const toAdd = [];
|
|
1410
|
-
while (_schemaType.$isMongooseArray) {
|
|
1411
|
-
arrayPath = arrayPath + '.$';
|
|
1412
|
-
|
|
1413
|
-
_schemaType.embeddedSchemaType._arrayPath = arrayPath;
|
|
1414
|
-
_schemaType.embeddedSchemaType._arrayParentPath = path;
|
|
1415
|
-
_schemaType = _schemaType.embeddedSchemaType;
|
|
1416
|
-
|
|
1417
|
-
this.subpaths[arrayPath] = _schemaType;
|
|
1418
|
-
}
|
|
1419
|
-
|
|
1420
|
-
for (const _schemaType of toAdd) {
|
|
1421
|
-
this.subpaths[_schemaType.path] = _schemaType;
|
|
1422
|
-
}
|
|
1423
|
-
}
|
|
1424
|
-
|
|
1425
|
-
if (schemaType.$isMongooseDocumentArray) {
|
|
1426
|
-
for (const key of Object.keys(schemaType.schema.paths)) {
|
|
1427
|
-
const _schemaType = schemaType.schema.paths[key];
|
|
1428
|
-
this.subpaths[path + '.' + key] = _schemaType;
|
|
1429
|
-
if (typeof _schemaType === 'object' && _schemaType != null && _schemaType.$parentSchemaDocArray == null) {
|
|
1430
|
-
_schemaType.$parentSchemaDocArray = schemaType;
|
|
1431
|
-
}
|
|
1432
|
-
}
|
|
1433
|
-
for (const key of Object.keys(schemaType.schema.subpaths)) {
|
|
1434
|
-
const _schemaType = schemaType.schema.subpaths[key];
|
|
1435
|
-
this.subpaths[path + '.' + key] = _schemaType;
|
|
1436
|
-
if (typeof _schemaType === 'object' && _schemaType != null && _schemaType.$parentSchemaDocArray == null) {
|
|
1437
|
-
_schemaType.$parentSchemaDocArray = schemaType;
|
|
1438
|
-
}
|
|
1439
|
-
}
|
|
1440
|
-
for (const key of Object.keys(schemaType.schema.singleNestedPaths)) {
|
|
1441
|
-
const _schemaType = schemaType.schema.singleNestedPaths[key];
|
|
1442
|
-
this.subpaths[path + '.' + key] = _schemaType;
|
|
1443
|
-
if (typeof _schemaType === 'object' && _schemaType != null && _schemaType.$parentSchemaDocArray == null) {
|
|
1444
|
-
_schemaType.$parentSchemaDocArray = schemaType;
|
|
1445
|
-
}
|
|
1446
|
-
}
|
|
1447
|
-
}
|
|
1448
|
-
|
|
1449
|
-
return this;
|
|
1450
|
-
};
|
|
1451
|
-
|
|
1452
|
-
/*!
|
|
1453
|
-
* ignore
|
|
1454
|
-
*/
|
|
1455
|
-
|
|
1456
|
-
Schema.prototype._gatherChildSchemas = function _gatherChildSchemas() {
|
|
1457
|
-
const childSchemas = [];
|
|
1458
|
-
|
|
1459
|
-
for (const path of Object.keys(this.paths)) {
|
|
1460
|
-
if (typeof path !== 'string') {
|
|
1461
|
-
continue;
|
|
1462
|
-
}
|
|
1463
|
-
const schematype = this.paths[path];
|
|
1464
|
-
if (schematype.$isMongooseDocumentArray || schematype.$isSingleNested) {
|
|
1465
|
-
childSchemas.push({
|
|
1466
|
-
schema: schematype.schema,
|
|
1467
|
-
model: schematype.Constructor,
|
|
1468
|
-
path: path
|
|
1469
|
-
});
|
|
1470
|
-
} else if (schematype.$isSchemaMap && schematype.$__schemaType.$isSingleNested) {
|
|
1471
|
-
childSchemas.push({
|
|
1472
|
-
schema: schematype.$__schemaType.schema,
|
|
1473
|
-
model: schematype.$__schemaType.Constructor,
|
|
1474
|
-
path: path
|
|
1475
|
-
});
|
|
1476
|
-
}
|
|
1477
|
-
}
|
|
1478
|
-
|
|
1479
|
-
this.childSchemas = childSchemas;
|
|
1480
|
-
return childSchemas;
|
|
1481
|
-
};
|
|
1482
|
-
|
|
1483
|
-
/*!
|
|
1484
|
-
* ignore
|
|
1485
|
-
*/
|
|
1486
|
-
|
|
1487
|
-
function _getPath(schema, path, cleanPath) {
|
|
1488
|
-
if (Object.hasOwn(schema.paths, path)) {
|
|
1489
|
-
return schema.paths[path];
|
|
1490
|
-
}
|
|
1491
|
-
if (Object.hasOwn(schema.subpaths, cleanPath)) {
|
|
1492
|
-
const subpath = schema.subpaths[cleanPath];
|
|
1493
|
-
if (subpath === 'nested') {
|
|
1494
|
-
return undefined;
|
|
1495
|
-
}
|
|
1496
|
-
return subpath;
|
|
1497
|
-
}
|
|
1498
|
-
if (Object.hasOwn(schema.singleNestedPaths, cleanPath) && typeof schema.singleNestedPaths[cleanPath] === 'object') {
|
|
1499
|
-
const singleNestedPath = schema.singleNestedPaths[cleanPath];
|
|
1500
|
-
if (singleNestedPath === 'nested') {
|
|
1501
|
-
return undefined;
|
|
1502
|
-
}
|
|
1503
|
-
return singleNestedPath;
|
|
1504
|
-
}
|
|
1505
|
-
|
|
1506
|
-
return null;
|
|
1507
|
-
}
|
|
1508
|
-
|
|
1509
|
-
/*!
|
|
1510
|
-
* ignore
|
|
1511
|
-
*/
|
|
1512
|
-
|
|
1513
|
-
function _pathToPositionalSyntax(path) {
|
|
1514
|
-
if (!/\.\d+/.test(path)) {
|
|
1515
|
-
return path;
|
|
1516
|
-
}
|
|
1517
|
-
return path.replace(/\.\d+\./g, '.$.').replace(/\.\d+$/, '.$');
|
|
1518
|
-
}
|
|
1519
|
-
|
|
1520
|
-
/*!
|
|
1521
|
-
* ignore
|
|
1522
|
-
*/
|
|
1523
|
-
|
|
1524
|
-
function getMapPath(schema, path) {
|
|
1525
|
-
if (schema.mapPaths.length === 0) {
|
|
1526
|
-
return null;
|
|
1527
|
-
}
|
|
1528
|
-
for (const val of schema.mapPaths) {
|
|
1529
|
-
const cleanPath = val.path.replace(/\.\$\*/g, '');
|
|
1530
|
-
if (path === cleanPath || (path.startsWith(cleanPath + '.') && path.slice(cleanPath.length + 1).indexOf('.') === -1)) {
|
|
1531
|
-
return val;
|
|
1532
|
-
} else if (val.schema && path.startsWith(cleanPath + '.')) {
|
|
1533
|
-
let remnant = path.slice(cleanPath.length + 1);
|
|
1534
|
-
remnant = remnant.slice(remnant.indexOf('.') + 1);
|
|
1535
|
-
return val.schema.paths[remnant];
|
|
1536
|
-
} else if (val.$isSchemaMap && path.startsWith(cleanPath + '.')) {
|
|
1537
|
-
let remnant = path.slice(cleanPath.length + 1);
|
|
1538
|
-
remnant = remnant.slice(remnant.indexOf('.') + 1);
|
|
1539
|
-
const presplitPath = val.$__schemaType._presplitPath;
|
|
1540
|
-
if (remnant.indexOf('.') === -1 && presplitPath[presplitPath.length - 1] === '$*') {
|
|
1541
|
-
// Handle map of map of primitives
|
|
1542
|
-
return val.$__schemaType;
|
|
1543
|
-
} else if (remnant.indexOf('.') !== -1 && val.$__schemaType.schema && presplitPath[presplitPath.length - 1] === '$*') {
|
|
1544
|
-
// map of map of subdocs (recursive)
|
|
1545
|
-
return val.$__schemaType.schema.path(remnant.slice(remnant.indexOf('.') + 1));
|
|
1546
|
-
}
|
|
1547
|
-
}
|
|
1548
|
-
}
|
|
1549
|
-
|
|
1550
|
-
return null;
|
|
1551
|
-
}
|
|
1552
|
-
|
|
1553
|
-
/**
|
|
1554
|
-
* The Mongoose instance this schema is associated with
|
|
1555
|
-
*
|
|
1556
|
-
* @property base
|
|
1557
|
-
* @api private
|
|
1558
|
-
*/
|
|
1559
|
-
|
|
1560
|
-
Object.defineProperty(Schema.prototype, 'base', {
|
|
1561
|
-
configurable: true,
|
|
1562
|
-
enumerable: false,
|
|
1563
|
-
writable: true,
|
|
1564
|
-
value: null
|
|
1565
|
-
});
|
|
1566
|
-
|
|
1567
|
-
/**
|
|
1568
|
-
* Converts type arguments into Mongoose Types.
|
|
1569
|
-
*
|
|
1570
|
-
* @param {String} path
|
|
1571
|
-
* @param {Object} obj constructor
|
|
1572
|
-
* @param {Object} options schema options
|
|
1573
|
-
* @api private
|
|
1574
|
-
*/
|
|
1575
|
-
|
|
1576
|
-
Schema.prototype.interpretAsType = function(path, obj, options) {
|
|
1577
|
-
if (obj instanceof SchemaType) {
|
|
1578
|
-
if (obj.path === path) {
|
|
1579
|
-
return obj;
|
|
1580
|
-
}
|
|
1581
|
-
const clone = obj.clone();
|
|
1582
|
-
clone.path = path;
|
|
1583
|
-
return clone;
|
|
1584
|
-
}
|
|
1585
|
-
|
|
1586
|
-
// If this schema has an associated Mongoose object, use the Mongoose object's
|
|
1587
|
-
// copy of SchemaTypes re: gh-7158 gh-6933
|
|
1588
|
-
const MongooseTypes = this.base != null ? this.base.Schema.Types : Schema.Types;
|
|
1589
|
-
const Types = this.base != null ? this.base.Types : require('./types');
|
|
1590
|
-
|
|
1591
|
-
if (!utils.isPOJO(obj) && !(obj instanceof SchemaTypeOptions)) {
|
|
1592
|
-
const constructorName = utils.getFunctionName(obj.constructor);
|
|
1593
|
-
if (constructorName !== 'Object') {
|
|
1594
|
-
const oldObj = obj;
|
|
1595
|
-
obj = {};
|
|
1596
|
-
obj[options.typeKey] = oldObj;
|
|
1597
|
-
}
|
|
1598
|
-
}
|
|
1599
|
-
|
|
1600
|
-
// Get the type making sure to allow keys named "type"
|
|
1601
|
-
// and default to mixed if not specified.
|
|
1602
|
-
// { type: { type: String, default: 'freshcut' } }
|
|
1603
|
-
let type = obj[options.typeKey] && (obj[options.typeKey] instanceof Function || options.typeKey !== 'type' || !obj.type.type)
|
|
1604
|
-
? obj[options.typeKey]
|
|
1605
|
-
: {};
|
|
1606
|
-
|
|
1607
|
-
if (type instanceof SchemaType) {
|
|
1608
|
-
if (type.path === path) {
|
|
1609
|
-
return type;
|
|
1610
|
-
}
|
|
1611
|
-
const clone = type.clone();
|
|
1612
|
-
clone.path = path;
|
|
1613
|
-
return clone;
|
|
1614
|
-
}
|
|
1615
|
-
|
|
1616
|
-
let name;
|
|
1617
|
-
|
|
1618
|
-
if (utils.isPOJO(type) || type === 'mixed') {
|
|
1619
|
-
return new MongooseTypes.Mixed(path, obj, null, this);
|
|
1620
|
-
}
|
|
1621
|
-
|
|
1622
|
-
if (Array.isArray(type) || type === Array || type === 'array' || type === MongooseTypes.Array) {
|
|
1623
|
-
// if it was specified through { type } look for `cast`
|
|
1624
|
-
let cast = (type === Array || type === 'array')
|
|
1625
|
-
? obj.cast || obj.of
|
|
1626
|
-
: type[0];
|
|
1627
|
-
|
|
1628
|
-
// new Schema({ path: [new Schema({ ... })] })
|
|
1629
|
-
if (cast && cast.instanceOfSchema) {
|
|
1630
|
-
if (!(cast instanceof Schema)) {
|
|
1631
|
-
if (this.options._isMerging) {
|
|
1632
|
-
cast = new Schema(cast);
|
|
1633
|
-
} else {
|
|
1634
|
-
throw new TypeError('Schema for array path `' + path +
|
|
1635
|
-
'` is from a different copy of the Mongoose module. ' +
|
|
1636
|
-
'Please make sure you\'re using the same version ' +
|
|
1637
|
-
'of Mongoose everywhere with `npm list mongoose`. If you are still ' +
|
|
1638
|
-
'getting this error, please add `new Schema()` around the path: ' +
|
|
1639
|
-
`${path}: new Schema(...)`);
|
|
1640
|
-
}
|
|
1641
|
-
}
|
|
1642
|
-
return new MongooseTypes.DocumentArray(path, cast, obj, null, this);
|
|
1643
|
-
}
|
|
1644
|
-
if (cast &&
|
|
1645
|
-
cast[options.typeKey] &&
|
|
1646
|
-
cast[options.typeKey].instanceOfSchema) {
|
|
1647
|
-
if (!(cast[options.typeKey] instanceof Schema)) {
|
|
1648
|
-
if (this.options._isMerging) {
|
|
1649
|
-
cast[options.typeKey] = new Schema(cast[options.typeKey]);
|
|
1650
|
-
} else {
|
|
1651
|
-
throw new TypeError('Schema for array path `' + path +
|
|
1652
|
-
'` is from a different copy of the Mongoose module. ' +
|
|
1653
|
-
'Please make sure you\'re using the same version ' +
|
|
1654
|
-
'of Mongoose everywhere with `npm list mongoose`. If you are still ' +
|
|
1655
|
-
'getting this error, please add `new Schema()` around the path: ' +
|
|
1656
|
-
`${path}: new Schema(...)`);
|
|
1657
|
-
}
|
|
1658
|
-
}
|
|
1659
|
-
return new MongooseTypes.DocumentArray(path, cast[options.typeKey], obj, cast, this);
|
|
1660
|
-
}
|
|
1661
|
-
if (typeof cast !== 'undefined') {
|
|
1662
|
-
if (Array.isArray(cast) || cast.type === Array || cast.type == 'Array') {
|
|
1663
|
-
if (cast && cast.type == 'Array') {
|
|
1664
|
-
cast.type = Array;
|
|
1665
|
-
}
|
|
1666
|
-
return new MongooseTypes.Array(path, this.interpretAsType(path, cast, options), obj, null, this);
|
|
1667
|
-
}
|
|
1668
|
-
}
|
|
1669
|
-
|
|
1670
|
-
// Handle both `new Schema({ arr: [{ subpath: String }] })` and `new Schema({ arr: [{ type: { subpath: string } }] })`
|
|
1671
|
-
const castFromTypeKey = (cast != null && cast[options.typeKey] && (options.typeKey !== 'type' || !cast.type.type)) ?
|
|
1672
|
-
cast[options.typeKey] :
|
|
1673
|
-
cast;
|
|
1674
|
-
if (typeof cast === 'string') {
|
|
1675
|
-
cast = MongooseTypes[cast.charAt(0).toUpperCase() + cast.substring(1)];
|
|
1676
|
-
} else if (utils.isPOJO(castFromTypeKey)) {
|
|
1677
|
-
if (Object.keys(castFromTypeKey).length) {
|
|
1678
|
-
// The `minimize` and `typeKey` options propagate to child schemas
|
|
1679
|
-
// declared inline, like `{ arr: [{ val: { $type: String } }] }`.
|
|
1680
|
-
// See gh-3560
|
|
1681
|
-
const childSchemaOptions = { minimize: options.minimize };
|
|
1682
|
-
if (options.typeKey) {
|
|
1683
|
-
childSchemaOptions.typeKey = options.typeKey;
|
|
1684
|
-
}
|
|
1685
|
-
// propagate 'strict' option to child schema
|
|
1686
|
-
if (Object.hasOwn(options, 'strict')) {
|
|
1687
|
-
childSchemaOptions.strict = options.strict;
|
|
1688
|
-
}
|
|
1689
|
-
if (Object.hasOwn(options, 'strictQuery')) {
|
|
1690
|
-
childSchemaOptions.strictQuery = options.strictQuery;
|
|
1691
|
-
}
|
|
1692
|
-
if (Object.hasOwn(options, 'toObject')) {
|
|
1693
|
-
childSchemaOptions.toObject = utils.omit(options.toObject, ['transform']);
|
|
1694
|
-
}
|
|
1695
|
-
if (Object.hasOwn(options, 'toJSON')) {
|
|
1696
|
-
childSchemaOptions.toJSON = utils.omit(options.toJSON, ['transform']);
|
|
1697
|
-
}
|
|
1698
|
-
|
|
1699
|
-
if (Object.hasOwn(this._userProvidedOptions, '_id')) {
|
|
1700
|
-
childSchemaOptions._id = this._userProvidedOptions._id;
|
|
1701
|
-
} else if (Schema.Types.DocumentArray.defaultOptions._id != null) {
|
|
1702
|
-
childSchemaOptions._id = Schema.Types.DocumentArray.defaultOptions._id;
|
|
1703
|
-
}
|
|
1704
|
-
|
|
1705
|
-
const childSchema = new Schema(castFromTypeKey, childSchemaOptions);
|
|
1706
|
-
childSchema.$implicitlyCreated = true;
|
|
1707
|
-
return new MongooseTypes.DocumentArray(path, childSchema, obj, null, this);
|
|
1708
|
-
} else {
|
|
1709
|
-
// Special case: empty object becomes mixed
|
|
1710
|
-
return new MongooseTypes.Array(path, MongooseTypes.Mixed, obj, null, this);
|
|
1711
|
-
}
|
|
1712
|
-
}
|
|
1713
|
-
|
|
1714
|
-
if (cast) {
|
|
1715
|
-
type = cast[options.typeKey] && (options.typeKey !== 'type' || !cast.type.type)
|
|
1716
|
-
? cast[options.typeKey]
|
|
1717
|
-
: cast;
|
|
1718
|
-
if (Array.isArray(type)) {
|
|
1719
|
-
return new MongooseTypes.Array(path, this.interpretAsType(path, type, options), obj, null, this);
|
|
1720
|
-
}
|
|
1721
|
-
|
|
1722
|
-
name = typeof type === 'string'
|
|
1723
|
-
? type
|
|
1724
|
-
: type.schemaName || utils.getFunctionName(type);
|
|
1725
|
-
|
|
1726
|
-
// For Jest 26+, see #10296
|
|
1727
|
-
if (name === 'ClockDate') {
|
|
1728
|
-
name = 'Date';
|
|
1729
|
-
}
|
|
1730
|
-
|
|
1731
|
-
if (name === void 0) {
|
|
1732
|
-
throw new TypeError('Invalid schema configuration: ' +
|
|
1733
|
-
`Could not determine the embedded type for array \`${path}\`. ` +
|
|
1734
|
-
'See https://mongoosejs.com/docs/guide.html#definition for more info on supported schema syntaxes.');
|
|
1735
|
-
}
|
|
1736
|
-
if (!Object.hasOwn(MongooseTypes, name)) {
|
|
1737
|
-
throw new TypeError('Invalid schema configuration: ' +
|
|
1738
|
-
`\`${name}\` is not a valid type within the array \`${path}\`.` +
|
|
1739
|
-
'See https://bit.ly/mongoose-schematypes for a list of valid schema types.');
|
|
1740
|
-
}
|
|
1741
|
-
|
|
1742
|
-
if (name === 'Union' && typeof cast === 'object') {
|
|
1743
|
-
cast.parentSchema = this;
|
|
1744
|
-
}
|
|
1745
|
-
}
|
|
1746
|
-
|
|
1747
|
-
return new MongooseTypes.Array(path, cast || MongooseTypes.Mixed, obj, options, this);
|
|
1748
|
-
}
|
|
1749
|
-
|
|
1750
|
-
if (type && type.instanceOfSchema) {
|
|
1751
|
-
return new MongooseTypes.Subdocument(type, path, obj, this);
|
|
1752
|
-
}
|
|
1753
|
-
|
|
1754
|
-
if (Buffer.isBuffer(type)) {
|
|
1755
|
-
name = 'Buffer';
|
|
1756
|
-
} else if (typeof type === 'function' || typeof type === 'object') {
|
|
1757
|
-
name = type.schemaName || utils.getFunctionName(type);
|
|
1758
|
-
} else if (type === Types.ObjectId) {
|
|
1759
|
-
name = 'ObjectId';
|
|
1760
|
-
} else if (type === Types.Decimal128) {
|
|
1761
|
-
name = 'Decimal128';
|
|
1762
|
-
} else {
|
|
1763
|
-
name = type == null ? '' + type : type.toString();
|
|
1764
|
-
}
|
|
1765
|
-
|
|
1766
|
-
if (name) {
|
|
1767
|
-
name = name.charAt(0).toUpperCase() + name.substring(1);
|
|
1768
|
-
}
|
|
1769
|
-
// Special case re: gh-7049 because the bson `ObjectID` class' capitalization
|
|
1770
|
-
// doesn't line up with Mongoose's.
|
|
1771
|
-
if (name === 'ObjectID') {
|
|
1772
|
-
name = 'ObjectId';
|
|
1773
|
-
}
|
|
1774
|
-
// For Jest 26+, see #10296
|
|
1775
|
-
if (name === 'ClockDate') {
|
|
1776
|
-
name = 'Date';
|
|
1777
|
-
}
|
|
1778
|
-
|
|
1779
|
-
if (name === void 0) {
|
|
1780
|
-
throw new TypeError(`Invalid schema configuration: \`${path}\` schematype definition is ` +
|
|
1781
|
-
'invalid. See ' +
|
|
1782
|
-
'https://mongoosejs.com/docs/guide.html#definition for more info on supported schema syntaxes.');
|
|
1783
|
-
}
|
|
1784
|
-
if (MongooseTypes[name] == null) {
|
|
1785
|
-
throw new TypeError(`Invalid schema configuration: \`${name}\` is not ` +
|
|
1786
|
-
`a valid type at path \`${path}\`. See ` +
|
|
1787
|
-
'https://bit.ly/mongoose-schematypes for a list of valid schema types.');
|
|
1788
|
-
}
|
|
1789
|
-
|
|
1790
|
-
const schemaType = new MongooseTypes[name](path, obj, options, this);
|
|
1791
|
-
|
|
1792
|
-
return schemaType;
|
|
1793
|
-
};
|
|
1794
|
-
|
|
1795
|
-
/**
|
|
1796
|
-
* Iterates the schemas paths similar to Array#forEach.
|
|
1797
|
-
*
|
|
1798
|
-
* The callback is passed the pathname and the schemaType instance.
|
|
1799
|
-
*
|
|
1800
|
-
* #### Example:
|
|
1801
|
-
*
|
|
1802
|
-
* const userSchema = new Schema({ name: String, registeredAt: Date });
|
|
1803
|
-
* userSchema.eachPath((pathname, schematype) => {
|
|
1804
|
-
* // Prints twice:
|
|
1805
|
-
* // name SchemaString { ... }
|
|
1806
|
-
* // registeredAt SchemaDate { ... }
|
|
1807
|
-
* console.log(pathname, schematype);
|
|
1808
|
-
* });
|
|
1809
|
-
*
|
|
1810
|
-
* @param {Function} fn callback function
|
|
1811
|
-
* @return {Schema} this
|
|
1812
|
-
* @api public
|
|
1813
|
-
*/
|
|
1814
|
-
|
|
1815
|
-
Schema.prototype.eachPath = function(fn) {
|
|
1816
|
-
const keys = Object.keys(this.paths);
|
|
1817
|
-
const len = keys.length;
|
|
1818
|
-
|
|
1819
|
-
for (let i = 0; i < len; ++i) {
|
|
1820
|
-
fn(keys[i], this.paths[keys[i]]);
|
|
1821
|
-
}
|
|
1822
|
-
|
|
1823
|
-
return this;
|
|
1824
|
-
};
|
|
1825
|
-
|
|
1826
|
-
/**
|
|
1827
|
-
* Returns an Array of path strings that are required by this schema.
|
|
1828
|
-
*
|
|
1829
|
-
* #### Example:
|
|
1830
|
-
*
|
|
1831
|
-
* const s = new Schema({
|
|
1832
|
-
* name: { type: String, required: true },
|
|
1833
|
-
* age: { type: String, required: true },
|
|
1834
|
-
* notes: String
|
|
1835
|
-
* });
|
|
1836
|
-
* s.requiredPaths(); // [ 'age', 'name' ]
|
|
1837
|
-
*
|
|
1838
|
-
* @api public
|
|
1839
|
-
* @param {Boolean} invalidate Refresh the cache
|
|
1840
|
-
* @return {Array}
|
|
1841
|
-
*/
|
|
1842
|
-
|
|
1843
|
-
Schema.prototype.requiredPaths = function requiredPaths(invalidate) {
|
|
1844
|
-
if (this._requiredpaths && !invalidate) {
|
|
1845
|
-
return this._requiredpaths;
|
|
1846
|
-
}
|
|
1847
|
-
|
|
1848
|
-
const paths = Object.keys(this.paths);
|
|
1849
|
-
let i = paths.length;
|
|
1850
|
-
const ret = [];
|
|
1851
|
-
|
|
1852
|
-
while (i--) {
|
|
1853
|
-
const path = paths[i];
|
|
1854
|
-
if (this.paths[path].isRequired) {
|
|
1855
|
-
ret.push(path);
|
|
1856
|
-
}
|
|
1857
|
-
}
|
|
1858
|
-
this._requiredpaths = ret;
|
|
1859
|
-
return this._requiredpaths;
|
|
1860
|
-
};
|
|
1861
|
-
|
|
1862
|
-
/**
|
|
1863
|
-
* Returns indexes from fields and schema-level indexes (cached).
|
|
1864
|
-
*
|
|
1865
|
-
* @api private
|
|
1866
|
-
* @return {Array}
|
|
1867
|
-
*/
|
|
1868
|
-
|
|
1869
|
-
Schema.prototype.indexedPaths = function indexedPaths() {
|
|
1870
|
-
if (this._indexedpaths) {
|
|
1871
|
-
return this._indexedpaths;
|
|
1872
|
-
}
|
|
1873
|
-
this._indexedpaths = this.indexes();
|
|
1874
|
-
return this._indexedpaths;
|
|
1875
|
-
};
|
|
1876
|
-
|
|
1877
|
-
/**
|
|
1878
|
-
* Returns the pathType of `path` for this schema.
|
|
1879
|
-
*
|
|
1880
|
-
* Given a path, returns whether it is a real, virtual, nested, or ad-hoc/undefined path.
|
|
1881
|
-
*
|
|
1882
|
-
* #### Example:
|
|
1883
|
-
*
|
|
1884
|
-
* const s = new Schema({ name: String, nested: { foo: String } });
|
|
1885
|
-
* s.virtual('foo').get(() => 42);
|
|
1886
|
-
* s.pathType('name'); // "real"
|
|
1887
|
-
* s.pathType('nested'); // "nested"
|
|
1888
|
-
* s.pathType('foo'); // "virtual"
|
|
1889
|
-
* s.pathType('fail'); // "adhocOrUndefined"
|
|
1890
|
-
*
|
|
1891
|
-
* @param {String} path
|
|
1892
|
-
* @return {String}
|
|
1893
|
-
* @api public
|
|
1894
|
-
*/
|
|
1895
|
-
|
|
1896
|
-
Schema.prototype.pathType = function(path) {
|
|
1897
|
-
if (Object.hasOwn(this.paths, path)) {
|
|
1898
|
-
return 'real';
|
|
1899
|
-
}
|
|
1900
|
-
if (Object.hasOwn(this.virtuals, path)) {
|
|
1901
|
-
return 'virtual';
|
|
1902
|
-
}
|
|
1903
|
-
if (Object.hasOwn(this.nested, path)) {
|
|
1904
|
-
return 'nested';
|
|
1905
|
-
}
|
|
1906
|
-
|
|
1907
|
-
// Convert to '.$' to check subpaths re: gh-6405
|
|
1908
|
-
const cleanPath = _pathToPositionalSyntax(path);
|
|
1909
|
-
|
|
1910
|
-
if (Object.hasOwn(this.subpaths, cleanPath) || Object.hasOwn(this.subpaths, path)) {
|
|
1911
|
-
return 'real';
|
|
1912
|
-
}
|
|
1913
|
-
|
|
1914
|
-
const singleNestedPath = Object.hasOwn(this.singleNestedPaths, cleanPath) || Object.hasOwn(this.singleNestedPaths, path);
|
|
1915
|
-
if (singleNestedPath) {
|
|
1916
|
-
return singleNestedPath === 'nested' ? 'nested' : 'real';
|
|
1917
|
-
}
|
|
1918
|
-
|
|
1919
|
-
// Look for maps
|
|
1920
|
-
const mapPath = getMapPath(this, path);
|
|
1921
|
-
if (mapPath != null) {
|
|
1922
|
-
return 'real';
|
|
1923
|
-
}
|
|
1924
|
-
|
|
1925
|
-
if (/\.\d+\.|\.\d+$/.test(path)) {
|
|
1926
|
-
return getPositionalPathType(this, path, cleanPath);
|
|
1927
|
-
}
|
|
1928
|
-
return 'adhocOrUndefined';
|
|
1929
|
-
};
|
|
1930
|
-
|
|
1931
|
-
/**
|
|
1932
|
-
* Returns true iff this path is a child of a mixed schema.
|
|
1933
|
-
*
|
|
1934
|
-
* @param {String} path
|
|
1935
|
-
* @return {Boolean}
|
|
1936
|
-
* @api private
|
|
1937
|
-
*/
|
|
1938
|
-
|
|
1939
|
-
Schema.prototype.hasMixedParent = function(path) {
|
|
1940
|
-
const subpaths = path.split(/\./g);
|
|
1941
|
-
path = '';
|
|
1942
|
-
for (let i = 0; i < subpaths.length; ++i) {
|
|
1943
|
-
path = i > 0 ? path + '.' + subpaths[i] : subpaths[i];
|
|
1944
|
-
if (Object.hasOwn(this.paths, path) &&
|
|
1945
|
-
this.paths[path] instanceof MongooseTypes.Mixed) {
|
|
1946
|
-
return this.paths[path];
|
|
1947
|
-
}
|
|
1948
|
-
}
|
|
1949
|
-
|
|
1950
|
-
return null;
|
|
1951
|
-
};
|
|
1952
|
-
|
|
1953
|
-
/**
|
|
1954
|
-
* Setup updatedAt and createdAt timestamps to documents if enabled
|
|
1955
|
-
*
|
|
1956
|
-
* @param {Boolean|Object} timestamps timestamps options
|
|
1957
|
-
* @api private
|
|
1958
|
-
*/
|
|
1959
|
-
Schema.prototype.setupTimestamp = function(timestamps) {
|
|
1960
|
-
return setupTimestamps(this, timestamps);
|
|
1961
|
-
};
|
|
1962
|
-
|
|
1963
|
-
/**
|
|
1964
|
-
* ignore. Deprecated re: #6405
|
|
1965
|
-
* @param {Any} self
|
|
1966
|
-
* @param {String} path
|
|
1967
|
-
* @api private
|
|
1968
|
-
*/
|
|
1969
|
-
|
|
1970
|
-
function getPositionalPathType(self, path, cleanPath) {
|
|
1971
|
-
const subpaths = path.split(/\.(\d+)\.|\.(\d+)$/).filter(Boolean);
|
|
1972
|
-
if (subpaths.length < 2) {
|
|
1973
|
-
return Object.hasOwn(self.paths, subpaths[0]) ?
|
|
1974
|
-
self.paths[subpaths[0]] :
|
|
1975
|
-
'adhocOrUndefined';
|
|
1976
|
-
}
|
|
1977
|
-
|
|
1978
|
-
let val = self.path(subpaths[0]);
|
|
1979
|
-
let isNested = false;
|
|
1980
|
-
if (!val) {
|
|
1981
|
-
return 'adhocOrUndefined';
|
|
1982
|
-
}
|
|
1983
|
-
|
|
1984
|
-
const last = subpaths.length - 1;
|
|
1985
|
-
|
|
1986
|
-
for (let i = 1; i < subpaths.length; ++i) {
|
|
1987
|
-
isNested = false;
|
|
1988
|
-
const subpath = subpaths[i];
|
|
1989
|
-
|
|
1990
|
-
if (i === last && val && !/\D/.test(subpath)) {
|
|
1991
|
-
if (val.$isMongooseDocumentArray) {
|
|
1992
|
-
val = val.embeddedSchemaType;
|
|
1993
|
-
} else if (val instanceof MongooseTypes.Array) {
|
|
1994
|
-
// StringSchema, NumberSchema, etc
|
|
1995
|
-
val = val.embeddedSchemaType;
|
|
1996
|
-
} else {
|
|
1997
|
-
val = undefined;
|
|
1998
|
-
}
|
|
1999
|
-
break;
|
|
2000
|
-
}
|
|
2001
|
-
|
|
2002
|
-
// ignore if its just a position segment: path.0.subpath
|
|
2003
|
-
if (!/\D/.test(subpath)) {
|
|
2004
|
-
// Nested array
|
|
2005
|
-
if (val instanceof MongooseTypes.Array && i !== last) {
|
|
2006
|
-
val = val.embeddedSchemaType;
|
|
2007
|
-
}
|
|
2008
|
-
continue;
|
|
2009
|
-
}
|
|
2010
|
-
|
|
2011
|
-
if (!(val && val.schema)) {
|
|
2012
|
-
val = undefined;
|
|
2013
|
-
break;
|
|
2014
|
-
}
|
|
2015
|
-
|
|
2016
|
-
const type = val.schema.pathType(subpath);
|
|
2017
|
-
isNested = (type === 'nested');
|
|
2018
|
-
val = val.schema.path(subpath);
|
|
2019
|
-
}
|
|
2020
|
-
|
|
2021
|
-
self.subpaths[cleanPath] = val;
|
|
2022
|
-
if (val) {
|
|
2023
|
-
return 'real';
|
|
2024
|
-
}
|
|
2025
|
-
if (isNested) {
|
|
2026
|
-
return 'nested';
|
|
2027
|
-
}
|
|
2028
|
-
return 'adhocOrUndefined';
|
|
2029
|
-
}
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
/*!
|
|
2033
|
-
* ignore
|
|
2034
|
-
*/
|
|
2035
|
-
|
|
2036
|
-
function getPositionalPath(self, path, cleanPath) {
|
|
2037
|
-
getPositionalPathType(self, path, cleanPath);
|
|
2038
|
-
return self.subpaths[cleanPath];
|
|
2039
|
-
}
|
|
2040
|
-
|
|
2041
|
-
/**
|
|
2042
|
-
* Adds a method call to the queue.
|
|
2043
|
-
*
|
|
2044
|
-
* #### Example:
|
|
2045
|
-
*
|
|
2046
|
-
* schema.methods.print = function() { console.log(this); };
|
|
2047
|
-
* schema.queue('print', []); // Print the doc every one is instantiated
|
|
2048
|
-
*
|
|
2049
|
-
* const Model = mongoose.model('Test', schema);
|
|
2050
|
-
* new Model({ name: 'test' }); // Prints '{"_id": ..., "name": "test" }'
|
|
2051
|
-
*
|
|
2052
|
-
* @param {String} name name of the document method to call later
|
|
2053
|
-
* @param {Array} args arguments to pass to the method
|
|
2054
|
-
* @api public
|
|
2055
|
-
*/
|
|
2056
|
-
|
|
2057
|
-
Schema.prototype.queue = function(name, args) {
|
|
2058
|
-
this.callQueue.push([name, args]);
|
|
2059
|
-
return this;
|
|
2060
|
-
};
|
|
2061
|
-
|
|
2062
|
-
/**
|
|
2063
|
-
* Defines a pre hook for the model.
|
|
2064
|
-
*
|
|
2065
|
-
* #### Example:
|
|
2066
|
-
*
|
|
2067
|
-
* const toySchema = new Schema({ name: String, created: Date });
|
|
2068
|
-
*
|
|
2069
|
-
* toySchema.pre('save', function() {
|
|
2070
|
-
* if (!this.created) this.created = new Date;
|
|
2071
|
-
* });
|
|
2072
|
-
*
|
|
2073
|
-
* toySchema.pre('validate', function() {
|
|
2074
|
-
* if (this.name !== 'Woody') this.name = 'Woody';
|
|
2075
|
-
* });
|
|
2076
|
-
*
|
|
2077
|
-
* // Equivalent to calling `pre()` on `find`, `findOne`, `findOneAndUpdate`.
|
|
2078
|
-
* toySchema.pre(/^find/, function() {
|
|
2079
|
-
* console.log(this.getFilter());
|
|
2080
|
-
* });
|
|
2081
|
-
*
|
|
2082
|
-
* // Equivalent to calling `pre()` on `updateOne`, `findOneAndUpdate`.
|
|
2083
|
-
* toySchema.pre(['updateOne', 'findOneAndUpdate'], function() {
|
|
2084
|
-
* console.log(this.getFilter());
|
|
2085
|
-
* });
|
|
2086
|
-
*
|
|
2087
|
-
* toySchema.pre('deleteOne', function() {
|
|
2088
|
-
* // Runs when you call `Toy.deleteOne()`
|
|
2089
|
-
* });
|
|
2090
|
-
*
|
|
2091
|
-
* toySchema.pre('deleteOne', { document: true }, function() {
|
|
2092
|
-
* // Runs when you call `doc.deleteOne()`
|
|
2093
|
-
* });
|
|
2094
|
-
*
|
|
2095
|
-
* @param {String|RegExp|String[]} methodName The method name or regular expression to match method name
|
|
2096
|
-
* @param {Object} [options]
|
|
2097
|
-
* @param {Boolean} [options.document] If `name` is a hook for both document and query middleware, set to `true` to run on document middleware. For example, set `options.document` to `true` to apply this hook to `Document#deleteOne()` rather than `Query#deleteOne()`.
|
|
2098
|
-
* @param {Boolean} [options.query] If `name` is a hook for both document and query middleware, set to `true` to run on query middleware.
|
|
2099
|
-
* @param {Function} callback
|
|
2100
|
-
* @api public
|
|
2101
|
-
*/
|
|
2102
|
-
|
|
2103
|
-
Schema.prototype.pre = function(name) {
|
|
2104
|
-
if (name instanceof RegExp) {
|
|
2105
|
-
const remainingArgs = Array.prototype.slice.call(arguments, 1);
|
|
2106
|
-
for (const fn of hookNames) {
|
|
2107
|
-
if (name.test(fn)) {
|
|
2108
|
-
this.pre.apply(this, [fn].concat(remainingArgs));
|
|
2109
|
-
}
|
|
2110
|
-
}
|
|
2111
|
-
return this;
|
|
2112
|
-
}
|
|
2113
|
-
if (Array.isArray(name)) {
|
|
2114
|
-
const remainingArgs = Array.prototype.slice.call(arguments, 1);
|
|
2115
|
-
for (const el of name) {
|
|
2116
|
-
this.pre.apply(this, [el].concat(remainingArgs));
|
|
2117
|
-
}
|
|
2118
|
-
return this;
|
|
2119
|
-
}
|
|
2120
|
-
this.s.hooks.pre.apply(this.s.hooks, arguments);
|
|
2121
|
-
return this;
|
|
2122
|
-
};
|
|
2123
|
-
|
|
2124
|
-
/**
|
|
2125
|
-
* Defines a post hook for the document
|
|
2126
|
-
*
|
|
2127
|
-
* const schema = new Schema(..);
|
|
2128
|
-
* schema.post('save', function (doc) {
|
|
2129
|
-
* console.log('this fired after a document was saved');
|
|
2130
|
-
* });
|
|
2131
|
-
*
|
|
2132
|
-
* schema.post('find', function(docs) {
|
|
2133
|
-
* console.log('this fired after you ran a find query');
|
|
2134
|
-
* });
|
|
2135
|
-
*
|
|
2136
|
-
* schema.post(/Many$/, function(res) {
|
|
2137
|
-
* console.log('this fired after you ran `updateMany()` or `deleteMany()`');
|
|
2138
|
-
* });
|
|
2139
|
-
*
|
|
2140
|
-
* const Model = mongoose.model('Model', schema);
|
|
2141
|
-
*
|
|
2142
|
-
* const m = new Model(..);
|
|
2143
|
-
* await m.save();
|
|
2144
|
-
* console.log('this fires after the `post` hook');
|
|
2145
|
-
*
|
|
2146
|
-
* await m.find();
|
|
2147
|
-
* console.log('this fires after the post find hook');
|
|
2148
|
-
*
|
|
2149
|
-
* @param {String|RegExp|String[]} methodName The method name or regular expression to match method name
|
|
2150
|
-
* @param {Object} [options]
|
|
2151
|
-
* @param {Boolean} [options.document] If `name` is a hook for both document and query middleware, set to `true` to run on document middleware.
|
|
2152
|
-
* @param {Boolean} [options.query] If `name` is a hook for both document and query middleware, set to `true` to run on query middleware.
|
|
2153
|
-
* @param {Function} fn callback
|
|
2154
|
-
* @see middleware https://mongoosejs.com/docs/middleware.html
|
|
2155
|
-
* @see kareem https://npmjs.org/package/kareem
|
|
2156
|
-
* @api public
|
|
2157
|
-
*/
|
|
2158
|
-
|
|
2159
|
-
Schema.prototype.post = function(name) {
|
|
2160
|
-
if (name instanceof RegExp) {
|
|
2161
|
-
const remainingArgs = Array.prototype.slice.call(arguments, 1);
|
|
2162
|
-
for (const fn of hookNames) {
|
|
2163
|
-
if (name.test(fn)) {
|
|
2164
|
-
this.post.apply(this, [fn].concat(remainingArgs));
|
|
2165
|
-
}
|
|
2166
|
-
}
|
|
2167
|
-
return this;
|
|
2168
|
-
}
|
|
2169
|
-
if (Array.isArray(name)) {
|
|
2170
|
-
const remainingArgs = Array.prototype.slice.call(arguments, 1);
|
|
2171
|
-
for (const el of name) {
|
|
2172
|
-
this.post.apply(this, [el].concat(remainingArgs));
|
|
2173
|
-
}
|
|
2174
|
-
return this;
|
|
2175
|
-
}
|
|
2176
|
-
this.s.hooks.post.apply(this.s.hooks, arguments);
|
|
2177
|
-
return this;
|
|
2178
|
-
};
|
|
2179
|
-
|
|
2180
|
-
/**
|
|
2181
|
-
* Registers a plugin for this schema.
|
|
2182
|
-
*
|
|
2183
|
-
* #### Example:
|
|
2184
|
-
*
|
|
2185
|
-
* const s = new Schema({ name: String });
|
|
2186
|
-
* s.plugin(schema => console.log(schema.path('name').path));
|
|
2187
|
-
* mongoose.model('Test', s); // Prints 'name'
|
|
2188
|
-
*
|
|
2189
|
-
* Or with Options:
|
|
2190
|
-
*
|
|
2191
|
-
* const s = new Schema({ name: String });
|
|
2192
|
-
* s.plugin((schema, opts) => console.log(opts.text, schema.path('name').path), { text: "Schema Path Name:" });
|
|
2193
|
-
* mongoose.model('Test', s); // Prints 'Schema Path Name: name'
|
|
2194
|
-
*
|
|
2195
|
-
* @param {Function} plugin The Plugin's callback
|
|
2196
|
-
* @param {Object} [opts] Options to pass to the plugin
|
|
2197
|
-
* @param {Boolean} [opts.deduplicate=false] If true, ignore duplicate plugins (same `fn` argument using `===`)
|
|
2198
|
-
* @see plugins https://mongoosejs.com/docs/plugins.html
|
|
2199
|
-
* @api public
|
|
2200
|
-
*/
|
|
2201
|
-
|
|
2202
|
-
Schema.prototype.plugin = function(fn, opts) {
|
|
2203
|
-
if (typeof fn !== 'function') {
|
|
2204
|
-
throw new Error('First param to `schema.plugin()` must be a function, ' +
|
|
2205
|
-
'got "' + (typeof fn) + '"');
|
|
2206
|
-
}
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
if (opts && opts.deduplicate) {
|
|
2210
|
-
for (const plugin of this.plugins) {
|
|
2211
|
-
if (plugin.fn === fn) {
|
|
2212
|
-
return this;
|
|
2213
|
-
}
|
|
2214
|
-
}
|
|
2215
|
-
}
|
|
2216
|
-
this.plugins.push({ fn: fn, opts: opts });
|
|
2217
|
-
|
|
2218
|
-
fn(this, opts);
|
|
2219
|
-
return this;
|
|
2220
|
-
};
|
|
2221
|
-
|
|
2222
|
-
/**
|
|
2223
|
-
* Adds an instance method to documents constructed from Models compiled from this schema.
|
|
2224
|
-
*
|
|
2225
|
-
* #### Example:
|
|
2226
|
-
*
|
|
2227
|
-
* const schema = kittySchema = new Schema(..);
|
|
2228
|
-
*
|
|
2229
|
-
* schema.method('meow', function () {
|
|
2230
|
-
* console.log('meeeeeoooooooooooow');
|
|
2231
|
-
* })
|
|
2232
|
-
*
|
|
2233
|
-
* const Kitty = mongoose.model('Kitty', schema);
|
|
2234
|
-
*
|
|
2235
|
-
* const fizz = new Kitty;
|
|
2236
|
-
* fizz.meow(); // meeeeeooooooooooooow
|
|
2237
|
-
*
|
|
2238
|
-
* If a hash of name/fn pairs is passed as the only argument, each name/fn pair will be added as methods.
|
|
2239
|
-
*
|
|
2240
|
-
* schema.method({
|
|
2241
|
-
* purr: function () {}
|
|
2242
|
-
* , scratch: function () {}
|
|
2243
|
-
* });
|
|
2244
|
-
*
|
|
2245
|
-
* // later
|
|
2246
|
-
* const fizz = new Kitty;
|
|
2247
|
-
* fizz.purr();
|
|
2248
|
-
* fizz.scratch();
|
|
2249
|
-
*
|
|
2250
|
-
* NOTE: `Schema.method()` adds instance methods to the `Schema.methods` object. You can also add instance methods directly to the `Schema.methods` object as seen in the [guide](https://mongoosejs.com/docs/guide.html#methods)
|
|
2251
|
-
*
|
|
2252
|
-
* @param {String|Object} name The Method Name for a single function, or a Object of "string-function" pairs.
|
|
2253
|
-
* @param {Function} [fn] The Function in a single-function definition.
|
|
2254
|
-
* @api public
|
|
2255
|
-
*/
|
|
2256
|
-
|
|
2257
|
-
Schema.prototype.method = function(name, fn, options) {
|
|
2258
|
-
if (typeof name !== 'string') {
|
|
2259
|
-
for (const i in name) {
|
|
2260
|
-
this.methods[i] = name[i];
|
|
2261
|
-
this.methodOptions[i] = clone(options);
|
|
2262
|
-
}
|
|
2263
|
-
} else {
|
|
2264
|
-
this.methods[name] = fn;
|
|
2265
|
-
this.methodOptions[name] = clone(options);
|
|
2266
|
-
}
|
|
2267
|
-
return this;
|
|
2268
|
-
};
|
|
2269
|
-
|
|
2270
|
-
/**
|
|
2271
|
-
* Adds static "class" methods to Models compiled from this schema.
|
|
2272
|
-
*
|
|
2273
|
-
* #### Example:
|
|
2274
|
-
*
|
|
2275
|
-
* const schema = new Schema(..);
|
|
2276
|
-
* // Equivalent to `schema.statics.findByName = function(name) {}`;
|
|
2277
|
-
* schema.static('findByName', function(name) {
|
|
2278
|
-
* return this.find({ name: name });
|
|
2279
|
-
* });
|
|
2280
|
-
*
|
|
2281
|
-
* const Drink = mongoose.model('Drink', schema);
|
|
2282
|
-
* await Drink.findByName('LaCroix');
|
|
2283
|
-
*
|
|
2284
|
-
* If a hash of name/fn pairs is passed as the only argument, each name/fn pair will be added as methods.
|
|
2285
|
-
*
|
|
2286
|
-
* schema.static({
|
|
2287
|
-
* findByName: function () {..}
|
|
2288
|
-
* , findByCost: function () {..}
|
|
2289
|
-
* });
|
|
2290
|
-
*
|
|
2291
|
-
* const Drink = mongoose.model('Drink', schema);
|
|
2292
|
-
* await Drink.findByName('LaCroix');
|
|
2293
|
-
* await Drink.findByCost(3);
|
|
2294
|
-
*
|
|
2295
|
-
* If a hash of name/fn pairs is passed as the only argument, each name/fn pair will be added as statics.
|
|
2296
|
-
*
|
|
2297
|
-
* @param {String|Object} name The Method Name for a single function, or a Object of "string-function" pairs.
|
|
2298
|
-
* @param {Function} [fn] The Function in a single-function definition.
|
|
2299
|
-
* @api public
|
|
2300
|
-
* @see Statics https://mongoosejs.com/docs/guide.html#statics
|
|
2301
|
-
*/
|
|
2302
|
-
|
|
2303
|
-
Schema.prototype.static = function(name, fn) {
|
|
2304
|
-
if (typeof name !== 'string') {
|
|
2305
|
-
for (const i in name) {
|
|
2306
|
-
this.statics[i] = name[i];
|
|
2307
|
-
}
|
|
2308
|
-
} else {
|
|
2309
|
-
this.statics[name] = fn;
|
|
2310
|
-
}
|
|
2311
|
-
return this;
|
|
2312
|
-
};
|
|
2313
|
-
|
|
2314
|
-
/**
|
|
2315
|
-
* Defines an index (most likely compound) for this schema.
|
|
2316
|
-
*
|
|
2317
|
-
* #### Example:
|
|
2318
|
-
*
|
|
2319
|
-
* schema.index({ first: 1, last: -1 })
|
|
2320
|
-
*
|
|
2321
|
-
* @param {Object} fields The Fields to index, with the order, available values: `1 | -1 | '2d' | '2dsphere' | 'geoHaystack' | 'hashed' | 'text'`
|
|
2322
|
-
* @param {Object} [options] Options to pass to [MongoDB driver's `createIndex()` function](https://mongodb.github.io/node-mongodb-native/4.9/classes/Collection.html#createIndex)
|
|
2323
|
-
* @param {String | number} [options.expires=null] Mongoose-specific syntactic sugar, uses [ms](https://www.npmjs.com/package/ms) to convert `expires` option into seconds for the `expireAfterSeconds` in the above link.
|
|
2324
|
-
* @param {String} [options.language_override=null] Tells mongodb to use the specified field instead of `language` for parsing text indexes.
|
|
2325
|
-
* @api public
|
|
2326
|
-
*/
|
|
2327
|
-
|
|
2328
|
-
Schema.prototype.index = function(fields, options) {
|
|
2329
|
-
fields || (fields = {});
|
|
2330
|
-
options || (options = {});
|
|
2331
|
-
|
|
2332
|
-
if (options.expires) {
|
|
2333
|
-
utils.expires(options);
|
|
2334
|
-
}
|
|
2335
|
-
for (const key in fields) {
|
|
2336
|
-
if (this.aliases[key]) {
|
|
2337
|
-
fields = utils.renameObjKey(fields, key, this.aliases[key]);
|
|
2338
|
-
}
|
|
2339
|
-
}
|
|
2340
|
-
for (const field of Object.keys(fields)) {
|
|
2341
|
-
if (fields[field] === 'ascending' || fields[field] === 'asc') {
|
|
2342
|
-
fields[field] = 1;
|
|
2343
|
-
} else if (fields[field] === 'descending' || fields[field] === 'desc') {
|
|
2344
|
-
fields[field] = -1;
|
|
2345
|
-
}
|
|
2346
|
-
}
|
|
2347
|
-
|
|
2348
|
-
for (const existingIndex of this.indexes()) {
|
|
2349
|
-
if (options.name == null && existingIndex[1].name == null && isIndexSpecEqual(existingIndex[0], fields)) {
|
|
2350
|
-
utils.warn(`Duplicate schema index on ${JSON.stringify(fields)} found. This is often due to declaring an index using both "index: true" and "schema.index()". Please remove the duplicate index definition.`);
|
|
2351
|
-
}
|
|
2352
|
-
}
|
|
2353
|
-
|
|
2354
|
-
this._indexes.push([fields, options]);
|
|
2355
|
-
return this;
|
|
2356
|
-
};
|
|
2357
|
-
|
|
2358
|
-
/**
|
|
2359
|
-
* Sets a schema option.
|
|
2360
|
-
*
|
|
2361
|
-
* #### Example:
|
|
2362
|
-
*
|
|
2363
|
-
* schema.set('strict'); // 'true' by default
|
|
2364
|
-
* schema.set('strict', false); // Sets 'strict' to false
|
|
2365
|
-
* schema.set('strict'); // 'false'
|
|
2366
|
-
*
|
|
2367
|
-
* @param {String} key The name of the option to set the value to
|
|
2368
|
-
* @param {Object} [value] The value to set the option to, if not passed, the option will be reset to default
|
|
2369
|
-
* @param {Array<string>} [tags] tags to add to read preference if key === 'read'
|
|
2370
|
-
* @see Schema https://mongoosejs.com/docs/api/schema.html#Schema()
|
|
2371
|
-
* @api public
|
|
2372
|
-
*/
|
|
2373
|
-
|
|
2374
|
-
Schema.prototype.set = function(key, value, tags) {
|
|
2375
|
-
if (arguments.length === 1) {
|
|
2376
|
-
return this.options[key];
|
|
2377
|
-
}
|
|
2378
|
-
|
|
2379
|
-
switch (key) {
|
|
2380
|
-
case 'read':
|
|
2381
|
-
if (typeof value === 'string') {
|
|
2382
|
-
this.options[key] = { mode: handleReadPreferenceAliases(value), tags };
|
|
2383
|
-
} else if (Array.isArray(value) && typeof value[0] === 'string') {
|
|
2384
|
-
this.options[key] = {
|
|
2385
|
-
mode: handleReadPreferenceAliases(value[0]),
|
|
2386
|
-
tags: value[1]
|
|
2387
|
-
};
|
|
2388
|
-
} else {
|
|
2389
|
-
this.options[key] = value;
|
|
2390
|
-
}
|
|
2391
|
-
this._userProvidedOptions[key] = this.options[key];
|
|
2392
|
-
break;
|
|
2393
|
-
case 'timestamps':
|
|
2394
|
-
this.setupTimestamp(value);
|
|
2395
|
-
this.options[key] = value;
|
|
2396
|
-
this._userProvidedOptions[key] = this.options[key];
|
|
2397
|
-
break;
|
|
2398
|
-
case '_id':
|
|
2399
|
-
this.options[key] = value;
|
|
2400
|
-
this._userProvidedOptions[key] = this.options[key];
|
|
2401
|
-
|
|
2402
|
-
if (value && !this.paths['_id']) {
|
|
2403
|
-
addAutoId(this);
|
|
2404
|
-
} else if (!value && this.paths['_id'] != null && this.paths['_id'].auto) {
|
|
2405
|
-
this.remove('_id');
|
|
2406
|
-
}
|
|
2407
|
-
break;
|
|
2408
|
-
default:
|
|
2409
|
-
this.options[key] = value;
|
|
2410
|
-
this._userProvidedOptions[key] = this.options[key];
|
|
2411
|
-
break;
|
|
2412
|
-
}
|
|
2413
|
-
|
|
2414
|
-
// Propagate `strict` and `strictQuery` changes down to implicitly created schemas
|
|
2415
|
-
if (key === 'strict') {
|
|
2416
|
-
_propagateOptionsToImplicitlyCreatedSchemas(this, { strict: value });
|
|
2417
|
-
}
|
|
2418
|
-
if (key === 'strictQuery') {
|
|
2419
|
-
_propagateOptionsToImplicitlyCreatedSchemas(this, { strictQuery: value });
|
|
2420
|
-
}
|
|
2421
|
-
if (key === 'toObject') {
|
|
2422
|
-
value = { ...value };
|
|
2423
|
-
// Avoid propagating transform to implicitly created schemas re: gh-3279
|
|
2424
|
-
delete value.transform;
|
|
2425
|
-
_propagateOptionsToImplicitlyCreatedSchemas(this, { toObject: value });
|
|
2426
|
-
}
|
|
2427
|
-
if (key === 'toJSON') {
|
|
2428
|
-
value = { ...value };
|
|
2429
|
-
// Avoid propagating transform to implicitly created schemas re: gh-3279
|
|
2430
|
-
delete value.transform;
|
|
2431
|
-
_propagateOptionsToImplicitlyCreatedSchemas(this, { toJSON: value });
|
|
2432
|
-
}
|
|
2433
|
-
|
|
2434
|
-
return this;
|
|
2435
|
-
};
|
|
2436
|
-
|
|
2437
|
-
/*!
|
|
2438
|
-
* Recursively set options on implicitly created schemas
|
|
2439
|
-
*/
|
|
2440
|
-
|
|
2441
|
-
function _propagateOptionsToImplicitlyCreatedSchemas(baseSchema, options) {
|
|
2442
|
-
for (const { schema } of baseSchema.childSchemas) {
|
|
2443
|
-
if (!schema.$implicitlyCreated) {
|
|
2444
|
-
continue;
|
|
2445
|
-
}
|
|
2446
|
-
Object.assign(schema.options, options);
|
|
2447
|
-
_propagateOptionsToImplicitlyCreatedSchemas(schema, options);
|
|
2448
|
-
}
|
|
2449
|
-
}
|
|
2450
|
-
|
|
2451
|
-
/**
|
|
2452
|
-
* Gets a schema option.
|
|
2453
|
-
*
|
|
2454
|
-
* #### Example:
|
|
2455
|
-
*
|
|
2456
|
-
* schema.get('strict'); // true
|
|
2457
|
-
* schema.set('strict', false);
|
|
2458
|
-
* schema.get('strict'); // false
|
|
2459
|
-
*
|
|
2460
|
-
* @param {String} key The name of the Option to get the current value for
|
|
2461
|
-
* @api public
|
|
2462
|
-
* @return {Any} the option's value
|
|
2463
|
-
*/
|
|
2464
|
-
|
|
2465
|
-
Schema.prototype.get = function(key) {
|
|
2466
|
-
return this.options[key];
|
|
2467
|
-
};
|
|
2468
|
-
|
|
2469
|
-
const indexTypes = '2d 2dsphere hashed text'.split(' ');
|
|
2470
|
-
|
|
2471
|
-
/**
|
|
2472
|
-
* The allowed index types
|
|
2473
|
-
*
|
|
2474
|
-
* @property {String[]} indexTypes
|
|
2475
|
-
* @memberOf Schema
|
|
2476
|
-
* @static
|
|
2477
|
-
* @api public
|
|
2478
|
-
*/
|
|
2479
|
-
|
|
2480
|
-
Object.defineProperty(Schema, 'indexTypes', {
|
|
2481
|
-
get: function() {
|
|
2482
|
-
return indexTypes;
|
|
2483
|
-
},
|
|
2484
|
-
set: function() {
|
|
2485
|
-
throw new Error('Cannot overwrite Schema.indexTypes');
|
|
2486
|
-
}
|
|
2487
|
-
});
|
|
2488
|
-
|
|
2489
|
-
/**
|
|
2490
|
-
* Returns a list of indexes that this schema declares, via `schema.index()` or by `index: true` in a path's options.
|
|
2491
|
-
* Indexes are expressed as an array `[spec, options]`.
|
|
2492
|
-
*
|
|
2493
|
-
* #### Example:
|
|
2494
|
-
*
|
|
2495
|
-
* const userSchema = new Schema({
|
|
2496
|
-
* email: { type: String, required: true, unique: true },
|
|
2497
|
-
* registeredAt: { type: Date, index: true }
|
|
2498
|
-
* });
|
|
2499
|
-
*
|
|
2500
|
-
* // [ [ { email: 1 }, { unique: true } ],
|
|
2501
|
-
* // [ { registeredAt: 1 }, {} ] ]
|
|
2502
|
-
* userSchema.indexes();
|
|
2503
|
-
*
|
|
2504
|
-
* [Plugins](https://mongoosejs.com/docs/plugins.html) can use the return value of this function to modify a schema's indexes.
|
|
2505
|
-
* For example, the below plugin makes every index unique by default.
|
|
2506
|
-
*
|
|
2507
|
-
* function myPlugin(schema) {
|
|
2508
|
-
* for (const index of schema.indexes()) {
|
|
2509
|
-
* if (index[1].unique === undefined) {
|
|
2510
|
-
* index[1].unique = true;
|
|
2511
|
-
* }
|
|
2512
|
-
* }
|
|
2513
|
-
* }
|
|
2514
|
-
*
|
|
2515
|
-
* @api public
|
|
2516
|
-
* @return {Array} list of indexes defined in the schema
|
|
2517
|
-
*/
|
|
2518
|
-
|
|
2519
|
-
Schema.prototype.indexes = function() {
|
|
2520
|
-
return getIndexes(this);
|
|
2521
|
-
};
|
|
2522
|
-
|
|
2523
|
-
/**
|
|
2524
|
-
* Creates a virtual type with the given name.
|
|
2525
|
-
*
|
|
2526
|
-
* @param {String} name The name of the Virtual
|
|
2527
|
-
* @param {Object} [options]
|
|
2528
|
-
* @param {String|Model} [options.ref] model name or model instance. Marks this as a [populate virtual](https://mongoosejs.com/docs/populate.html#populate-virtuals).
|
|
2529
|
-
* @param {String|Function} [options.localField] Required for populate virtuals. See [populate virtual docs](https://mongoosejs.com/docs/populate.html#populate-virtuals) for more information.
|
|
2530
|
-
* @param {String|Function} [options.foreignField] Required for populate virtuals. See [populate virtual docs](https://mongoosejs.com/docs/populate.html#populate-virtuals) for more information.
|
|
2531
|
-
* @param {Boolean|Function} [options.justOne=false] Only works with populate virtuals. If [truthy](https://masteringjs.io/tutorials/fundamentals/truthy), will be a single doc or `null`. Otherwise, the populate virtual will be an array.
|
|
2532
|
-
* @param {Boolean} [options.count=false] Only works with populate virtuals. If [truthy](https://masteringjs.io/tutorials/fundamentals/truthy), this populate virtual will contain the number of documents rather than the documents themselves when you `populate()`.
|
|
2533
|
-
* @param {Function|null} [options.get=null] Adds a [getter](https://mongoosejs.com/docs/tutorials/getters-setters.html) to this virtual to transform the populated doc.
|
|
2534
|
-
* @param {Object|Function} [options.match=null] Apply a default [`match` option to populate](https://mongoosejs.com/docs/populate.html#match), adding an additional filter to the populate query.
|
|
2535
|
-
* @param {Boolean} [options.applyToArray=false] If true and the given `name` is a direct child of an array, apply the virtual to the array rather than the elements.
|
|
2536
|
-
* @return {VirtualType}
|
|
2537
|
-
*/
|
|
2538
|
-
|
|
2539
|
-
Schema.prototype.virtual = function(name, options) {
|
|
2540
|
-
if (name instanceof VirtualType || getConstructorName(name) === 'VirtualType') {
|
|
2541
|
-
return this.virtual(name.path, name.options);
|
|
2542
|
-
}
|
|
2543
|
-
options = new VirtualOptions(options);
|
|
2544
|
-
|
|
2545
|
-
if (utils.hasUserDefinedProperty(options, ['ref', 'refPath'])) {
|
|
2546
|
-
if (options.localField == null) {
|
|
2547
|
-
throw new Error('Reference virtuals require `localField` option');
|
|
2548
|
-
}
|
|
2549
|
-
|
|
2550
|
-
if (options.foreignField == null) {
|
|
2551
|
-
throw new Error('Reference virtuals require `foreignField` option');
|
|
2552
|
-
}
|
|
2553
|
-
|
|
2554
|
-
const virtual = this.virtual(name);
|
|
2555
|
-
virtual.options = options;
|
|
2556
|
-
|
|
2557
|
-
this.pre('init', function virtualPreInit(obj, opts) {
|
|
2558
|
-
if (mpath.has(name, obj)) {
|
|
2559
|
-
const _v = mpath.get(name, obj);
|
|
2560
|
-
if (!this.$$populatedVirtuals) {
|
|
2561
|
-
this.$$populatedVirtuals = {};
|
|
2562
|
-
}
|
|
2563
|
-
|
|
2564
|
-
if (options.justOne || options.count) {
|
|
2565
|
-
this.$$populatedVirtuals[name] = Array.isArray(_v) ?
|
|
2566
|
-
_v[0] :
|
|
2567
|
-
_v;
|
|
2568
|
-
} else {
|
|
2569
|
-
this.$$populatedVirtuals[name] = Array.isArray(_v) ?
|
|
2570
|
-
_v :
|
|
2571
|
-
_v == null ? [] : [_v];
|
|
2572
|
-
}
|
|
2573
|
-
|
|
2574
|
-
if (opts?.hydratedPopulatedDocs && !options.count) {
|
|
2575
|
-
const modelNames = virtual._getModelNamesForPopulate(this);
|
|
2576
|
-
const populatedVal = this.$$populatedVirtuals[name];
|
|
2577
|
-
if (!Array.isArray(populatedVal) && !populatedVal.$__ && modelNames?.length === 1) {
|
|
2578
|
-
const PopulateModel = this.db.model(modelNames[0]);
|
|
2579
|
-
this.$$populatedVirtuals[name] = PopulateModel.hydrate(populatedVal);
|
|
2580
|
-
} else if (Array.isArray(populatedVal) && modelNames?.length === 1) {
|
|
2581
|
-
const PopulateModel = this.db.model(modelNames[0]);
|
|
2582
|
-
for (let i = 0; i < populatedVal.length; ++i) {
|
|
2583
|
-
if (!populatedVal[i].$__) {
|
|
2584
|
-
populatedVal[i] = PopulateModel.hydrate(populatedVal[i], null, { hydratedPopulatedDocs: true });
|
|
2585
|
-
}
|
|
2586
|
-
}
|
|
2587
|
-
const foreignField = options.foreignField;
|
|
2588
|
-
this.$populated(
|
|
2589
|
-
name,
|
|
2590
|
-
populatedVal.map(doc => doc == null ? doc : doc.get(typeof foreignField === 'function' ? foreignField.call(doc, doc) : foreignField)),
|
|
2591
|
-
{ populateModelSymbol: PopulateModel }
|
|
2592
|
-
);
|
|
2593
|
-
}
|
|
2594
|
-
}
|
|
2595
|
-
|
|
2596
|
-
mpath.unset(name, obj);
|
|
2597
|
-
}
|
|
2598
|
-
});
|
|
2599
|
-
|
|
2600
|
-
virtual.
|
|
2601
|
-
set(function(v) {
|
|
2602
|
-
if (!this.$$populatedVirtuals) {
|
|
2603
|
-
this.$$populatedVirtuals = {};
|
|
2604
|
-
}
|
|
2605
|
-
|
|
2606
|
-
return setPopulatedVirtualValue(
|
|
2607
|
-
this.$$populatedVirtuals,
|
|
2608
|
-
name,
|
|
2609
|
-
v,
|
|
2610
|
-
options
|
|
2611
|
-
);
|
|
2612
|
-
});
|
|
2613
|
-
|
|
2614
|
-
if (typeof options.get === 'function') {
|
|
2615
|
-
virtual.get(options.get);
|
|
2616
|
-
}
|
|
2617
|
-
|
|
2618
|
-
// Workaround for gh-8198: if virtual is under document array, make a fake
|
|
2619
|
-
// virtual. See gh-8210, gh-13189
|
|
2620
|
-
const parts = name.split('.');
|
|
2621
|
-
let cur = parts[0];
|
|
2622
|
-
for (let i = 0; i < parts.length - 1; ++i) {
|
|
2623
|
-
if (this.paths[cur] == null) {
|
|
2624
|
-
continue;
|
|
2625
|
-
}
|
|
2626
|
-
|
|
2627
|
-
if (this.paths[cur].$isMongooseDocumentArray || this.paths[cur].$isSingleNested) {
|
|
2628
|
-
const remnant = parts.slice(i + 1).join('.');
|
|
2629
|
-
this.paths[cur].schema.virtual(remnant, options);
|
|
2630
|
-
break;
|
|
2631
|
-
} else if (this.paths[cur].$isSchemaMap) {
|
|
2632
|
-
const remnant = parts.slice(i + 2).join('.');
|
|
2633
|
-
this.paths[cur].$__schemaType.schema.virtual(remnant, options);
|
|
2634
|
-
break;
|
|
2635
|
-
}
|
|
2636
|
-
|
|
2637
|
-
cur += '.' + parts[i + 1];
|
|
2638
|
-
}
|
|
2639
|
-
|
|
2640
|
-
return virtual;
|
|
2641
|
-
}
|
|
2642
|
-
|
|
2643
|
-
const virtuals = this.virtuals;
|
|
2644
|
-
const parts = name.split('.');
|
|
2645
|
-
|
|
2646
|
-
if (this.pathType(name) === 'real') {
|
|
2647
|
-
throw new Error('Virtual path "' + name + '"' +
|
|
2648
|
-
' conflicts with a real path in the schema');
|
|
2649
|
-
}
|
|
2650
|
-
|
|
2651
|
-
virtuals[name] = parts.reduce(function(mem, part, i) {
|
|
2652
|
-
mem[part] || (mem[part] = (i === parts.length - 1)
|
|
2653
|
-
? new VirtualType(options, name)
|
|
2654
|
-
: {});
|
|
2655
|
-
return mem[part];
|
|
2656
|
-
}, this.tree);
|
|
2657
|
-
|
|
2658
|
-
if (options && options.applyToArray && parts.length > 1) {
|
|
2659
|
-
const path = this.path(parts.slice(0, -1).join('.'));
|
|
2660
|
-
if (path && path.$isMongooseArray) {
|
|
2661
|
-
return path.virtual(parts[parts.length - 1], options);
|
|
2662
|
-
} else {
|
|
2663
|
-
throw new MongooseError(`Path "${path}" is not an array`);
|
|
2664
|
-
}
|
|
2665
|
-
}
|
|
2666
|
-
|
|
2667
|
-
return virtuals[name];
|
|
2668
|
-
};
|
|
2669
|
-
|
|
2670
|
-
/**
|
|
2671
|
-
* Returns the virtual type with the given `name`.
|
|
2672
|
-
*
|
|
2673
|
-
* @param {String} name The name of the Virtual to get
|
|
2674
|
-
* @return {VirtualType|null}
|
|
2675
|
-
*/
|
|
2676
|
-
|
|
2677
|
-
Schema.prototype.virtualpath = function(name) {
|
|
2678
|
-
return Object.hasOwn(this.virtuals, name) ? this.virtuals[name] : null;
|
|
2679
|
-
};
|
|
2680
|
-
|
|
2681
|
-
/**
|
|
2682
|
-
* Removes the given `path` (or [`paths`]).
|
|
2683
|
-
*
|
|
2684
|
-
* #### Example:
|
|
2685
|
-
*
|
|
2686
|
-
* const schema = new Schema({ name: String, age: Number });
|
|
2687
|
-
* schema.remove('name');
|
|
2688
|
-
* schema.path('name'); // Undefined
|
|
2689
|
-
* schema.path('age'); // SchemaNumber { ... }
|
|
2690
|
-
*
|
|
2691
|
-
* Or as a Array:
|
|
2692
|
-
*
|
|
2693
|
-
* schema.remove(['name', 'age']);
|
|
2694
|
-
* schema.path('name'); // Undefined
|
|
2695
|
-
* schema.path('age'); // Undefined
|
|
2696
|
-
*
|
|
2697
|
-
* @param {String|Array} path The Path(s) to remove
|
|
2698
|
-
* @return {Schema} the Schema instance
|
|
2699
|
-
* @api public
|
|
2700
|
-
*/
|
|
2701
|
-
Schema.prototype.remove = function(path) {
|
|
2702
|
-
if (typeof path === 'string') {
|
|
2703
|
-
path = [path];
|
|
2704
|
-
}
|
|
2705
|
-
if (Array.isArray(path)) {
|
|
2706
|
-
path.forEach(function(name) {
|
|
2707
|
-
if (this.path(name) == null && !this.nested[name]) {
|
|
2708
|
-
return;
|
|
2709
|
-
}
|
|
2710
|
-
if (this.nested[name]) {
|
|
2711
|
-
const allKeys = Object.keys(this.paths).
|
|
2712
|
-
concat(Object.keys(this.nested));
|
|
2713
|
-
for (const path of allKeys) {
|
|
2714
|
-
if (path.startsWith(name + '.')) {
|
|
2715
|
-
delete this.paths[path];
|
|
2716
|
-
delete this.nested[path];
|
|
2717
|
-
_deletePath(this, path);
|
|
2718
|
-
}
|
|
2719
|
-
}
|
|
2720
|
-
|
|
2721
|
-
delete this.nested[name];
|
|
2722
|
-
_deletePath(this, name);
|
|
2723
|
-
return;
|
|
2724
|
-
}
|
|
2725
|
-
|
|
2726
|
-
delete this.paths[name];
|
|
2727
|
-
_deletePath(this, name);
|
|
2728
|
-
|
|
2729
|
-
this._removeEncryptedField(name);
|
|
2730
|
-
}, this);
|
|
2731
|
-
}
|
|
2732
|
-
return this;
|
|
2733
|
-
};
|
|
2734
|
-
|
|
2735
|
-
/*!
|
|
2736
|
-
* ignore
|
|
2737
|
-
*/
|
|
2738
|
-
|
|
2739
|
-
function _deletePath(schema, name) {
|
|
2740
|
-
const pieces = name.split('.');
|
|
2741
|
-
const last = pieces.pop();
|
|
2742
|
-
|
|
2743
|
-
let branch = schema.tree;
|
|
2744
|
-
|
|
2745
|
-
for (const piece of pieces) {
|
|
2746
|
-
branch = branch[piece];
|
|
2747
|
-
}
|
|
2748
|
-
|
|
2749
|
-
delete branch[last];
|
|
2750
|
-
}
|
|
2751
|
-
|
|
2752
|
-
/**
|
|
2753
|
-
* Removes the given virtual or virtuals from the schema.
|
|
2754
|
-
*
|
|
2755
|
-
* @param {String|Array} path The virutal path(s) to remove.
|
|
2756
|
-
* @returns {Schema} the Schema instance, or a mongoose error if the virtual does not exist.
|
|
2757
|
-
* @api public
|
|
2758
|
-
*/
|
|
2759
|
-
|
|
2760
|
-
Schema.prototype.removeVirtual = function(path) {
|
|
2761
|
-
if (typeof path === 'string') {
|
|
2762
|
-
path = [path];
|
|
2763
|
-
}
|
|
2764
|
-
if (Array.isArray(path)) {
|
|
2765
|
-
for (const virtual of path) {
|
|
2766
|
-
if (this.virtuals[virtual] == null) {
|
|
2767
|
-
throw new MongooseError(`Attempting to remove virtual "${virtual}" that does not exist.`);
|
|
2768
|
-
}
|
|
2769
|
-
}
|
|
2770
|
-
|
|
2771
|
-
for (const virtual of path) {
|
|
2772
|
-
delete this.paths[virtual];
|
|
2773
|
-
delete this.virtuals[virtual];
|
|
2774
|
-
if (virtual.indexOf('.') !== -1) {
|
|
2775
|
-
mpath.unset(virtual, this.tree);
|
|
2776
|
-
} else {
|
|
2777
|
-
delete this.tree[virtual];
|
|
2778
|
-
}
|
|
2779
|
-
}
|
|
2780
|
-
}
|
|
2781
|
-
return this;
|
|
2782
|
-
};
|
|
2783
|
-
|
|
2784
|
-
/**
|
|
2785
|
-
* Loads an ES6 class into a schema. Maps [setters](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set) + [getters](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get), [static methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static),
|
|
2786
|
-
* and [instance methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Class_body_and_method_definitions)
|
|
2787
|
-
* to schema [virtuals](https://mongoosejs.com/docs/guide.html#virtuals),
|
|
2788
|
-
* [statics](https://mongoosejs.com/docs/guide.html#statics), and
|
|
2789
|
-
* [methods](https://mongoosejs.com/docs/guide.html#methods).
|
|
2790
|
-
*
|
|
2791
|
-
* #### Example:
|
|
2792
|
-
*
|
|
2793
|
-
* ```javascript
|
|
2794
|
-
* const md5 = require('md5');
|
|
2795
|
-
* const userSchema = new Schema({ email: String });
|
|
2796
|
-
* class UserClass {
|
|
2797
|
-
* // `gravatarImage` becomes a virtual
|
|
2798
|
-
* get gravatarImage() {
|
|
2799
|
-
* const hash = md5(this.email.toLowerCase());
|
|
2800
|
-
* return `https://www.gravatar.com/avatar/${hash}`;
|
|
2801
|
-
* }
|
|
2802
|
-
*
|
|
2803
|
-
* // `getProfileUrl()` becomes a document method
|
|
2804
|
-
* getProfileUrl() {
|
|
2805
|
-
* return `https://mysite.com/${this.email}`;
|
|
2806
|
-
* }
|
|
2807
|
-
*
|
|
2808
|
-
* // `findByEmail()` becomes a static
|
|
2809
|
-
* static findByEmail(email) {
|
|
2810
|
-
* return this.findOne({ email });
|
|
2811
|
-
* }
|
|
2812
|
-
* }
|
|
2813
|
-
*
|
|
2814
|
-
* // `schema` will now have a `gravatarImage` virtual, a `getProfileUrl()` method,
|
|
2815
|
-
* // and a `findByEmail()` static
|
|
2816
|
-
* userSchema.loadClass(UserClass);
|
|
2817
|
-
* ```
|
|
2818
|
-
*
|
|
2819
|
-
* @param {Function} model The Class to load
|
|
2820
|
-
* @param {Boolean} [virtualsOnly] if truthy, only pulls virtuals from the class, not methods or statics
|
|
2821
|
-
*/
|
|
2822
|
-
Schema.prototype.loadClass = function(model, virtualsOnly) {
|
|
2823
|
-
// Stop copying when hit certain base classes
|
|
2824
|
-
if (model === Object.prototype ||
|
|
2825
|
-
model === Function.prototype ||
|
|
2826
|
-
Object.hasOwn(model.prototype, '$isMongooseModelPrototype') ||
|
|
2827
|
-
Object.hasOwn(model.prototype, '$isMongooseDocumentPrototype')) {
|
|
2828
|
-
return this;
|
|
2829
|
-
}
|
|
2830
|
-
|
|
2831
|
-
this.loadClass(Object.getPrototypeOf(model), virtualsOnly);
|
|
2832
|
-
|
|
2833
|
-
// Add static methods
|
|
2834
|
-
if (!virtualsOnly) {
|
|
2835
|
-
Object.getOwnPropertyNames(model).forEach(function(name) {
|
|
2836
|
-
if (name.match(/^(length|name|prototype|constructor|__proto__)$/)) {
|
|
2837
|
-
return;
|
|
2838
|
-
}
|
|
2839
|
-
const prop = Object.getOwnPropertyDescriptor(model, name);
|
|
2840
|
-
if (Object.hasOwn(prop, 'value')) {
|
|
2841
|
-
this.static(name, prop.value);
|
|
2842
|
-
}
|
|
2843
|
-
}, this);
|
|
2844
|
-
}
|
|
2845
|
-
|
|
2846
|
-
// Add methods and virtuals
|
|
2847
|
-
Object.getOwnPropertyNames(model.prototype).forEach(function(name) {
|
|
2848
|
-
if (name.match(/^(constructor)$/)) {
|
|
2849
|
-
return;
|
|
2850
|
-
}
|
|
2851
|
-
const method = Object.getOwnPropertyDescriptor(model.prototype, name);
|
|
2852
|
-
if (!virtualsOnly) {
|
|
2853
|
-
if (typeof method.value === 'function') {
|
|
2854
|
-
this.method(name, method.value);
|
|
2855
|
-
}
|
|
2856
|
-
}
|
|
2857
|
-
if (typeof method.get === 'function') {
|
|
2858
|
-
if (this.virtuals[name]) {
|
|
2859
|
-
this.virtuals[name].getters = [];
|
|
2860
|
-
}
|
|
2861
|
-
this.virtual(name).get(method.get);
|
|
2862
|
-
}
|
|
2863
|
-
if (typeof method.set === 'function') {
|
|
2864
|
-
if (this.virtuals[name]) {
|
|
2865
|
-
this.virtuals[name].setters = [];
|
|
2866
|
-
}
|
|
2867
|
-
this.virtual(name).set(method.set);
|
|
2868
|
-
}
|
|
2869
|
-
}, this);
|
|
2870
|
-
|
|
2871
|
-
return this;
|
|
2872
|
-
};
|
|
2873
|
-
|
|
2874
|
-
/*!
|
|
2875
|
-
* ignore
|
|
2876
|
-
*/
|
|
2877
|
-
|
|
2878
|
-
Schema.prototype._getSchema = function(path) {
|
|
2879
|
-
const _this = this;
|
|
2880
|
-
const pathschema = _this.path(path);
|
|
2881
|
-
const resultPath = [];
|
|
2882
|
-
|
|
2883
|
-
if (pathschema) {
|
|
2884
|
-
pathschema.$fullPath = path;
|
|
2885
|
-
return pathschema;
|
|
2886
|
-
}
|
|
2887
|
-
|
|
2888
|
-
function search(parts, schema) {
|
|
2889
|
-
let p = parts.length + 1;
|
|
2890
|
-
let foundschema;
|
|
2891
|
-
let trypath;
|
|
2892
|
-
|
|
2893
|
-
while (p--) {
|
|
2894
|
-
trypath = parts.slice(0, p).join('.');
|
|
2895
|
-
foundschema = schema.path(trypath);
|
|
2896
|
-
if (foundschema) {
|
|
2897
|
-
resultPath.push(trypath);
|
|
2898
|
-
|
|
2899
|
-
if (foundschema.embeddedSchemaType || foundschema.Constructor) {
|
|
2900
|
-
// array of Mixed?
|
|
2901
|
-
if (foundschema.embeddedSchemaType instanceof MongooseTypes.Mixed) {
|
|
2902
|
-
foundschema.embeddedSchemaType.$fullPath = resultPath.join('.');
|
|
2903
|
-
return foundschema.embeddedSchemaType;
|
|
2904
|
-
}
|
|
2905
|
-
|
|
2906
|
-
// Now that we found the array, we need to check if there
|
|
2907
|
-
// are remaining document paths to look up for casting.
|
|
2908
|
-
// Also we need to handle array.$.path since schema.path
|
|
2909
|
-
// doesn't work for that.
|
|
2910
|
-
// If there is no foundschema.schema we are dealing with
|
|
2911
|
-
// a path like array.$
|
|
2912
|
-
if (p !== parts.length) {
|
|
2913
|
-
if (p + 1 === parts.length && foundschema.embeddedSchemaType && (parts[p] === '$' || isArrayFilter(parts[p]))) {
|
|
2914
|
-
return foundschema.embeddedSchemaType;
|
|
2915
|
-
}
|
|
2916
|
-
|
|
2917
|
-
if (foundschema.schema) {
|
|
2918
|
-
let ret;
|
|
2919
|
-
if (parts[p] === '$' || isArrayFilter(parts[p])) {
|
|
2920
|
-
if (p + 1 === parts.length) {
|
|
2921
|
-
// comments.$
|
|
2922
|
-
return foundschema.embeddedSchemaType;
|
|
2923
|
-
}
|
|
2924
|
-
// comments.$.comments.$.title
|
|
2925
|
-
ret = search(parts.slice(p + 1), foundschema.schema);
|
|
2926
|
-
if (ret) {
|
|
2927
|
-
ret.$parentSchemaDocArray = ret.$parentSchemaDocArray ||
|
|
2928
|
-
(foundschema.schema.$isSingleNested ? null : foundschema);
|
|
2929
|
-
}
|
|
2930
|
-
return ret;
|
|
2931
|
-
}
|
|
2932
|
-
// this is the last path of the selector
|
|
2933
|
-
ret = search(parts.slice(p), foundschema.schema);
|
|
2934
|
-
if (ret) {
|
|
2935
|
-
ret.$parentSchemaDocArray = ret.$parentSchemaDocArray ||
|
|
2936
|
-
(foundschema.schema.$isSingleNested ? null : foundschema);
|
|
2937
|
-
}
|
|
2938
|
-
return ret;
|
|
2939
|
-
}
|
|
2940
|
-
}
|
|
2941
|
-
} else if (foundschema.$isSchemaMap) {
|
|
2942
|
-
if (p >= parts.length) {
|
|
2943
|
-
return foundschema;
|
|
2944
|
-
}
|
|
2945
|
-
// Any path in the map will be an instance of the map's embedded schematype
|
|
2946
|
-
if (p + 1 >= parts.length) {
|
|
2947
|
-
return foundschema.$__schemaType;
|
|
2948
|
-
}
|
|
2949
|
-
|
|
2950
|
-
if (foundschema.$__schemaType instanceof MongooseTypes.Mixed) {
|
|
2951
|
-
return foundschema.$__schemaType;
|
|
2952
|
-
}
|
|
2953
|
-
if (foundschema.$__schemaType.schema != null) {
|
|
2954
|
-
// Map of docs
|
|
2955
|
-
const ret = search(parts.slice(p + 1), foundschema.$__schemaType.schema);
|
|
2956
|
-
return ret;
|
|
2957
|
-
}
|
|
2958
|
-
}
|
|
2959
|
-
|
|
2960
|
-
foundschema.$fullPath = resultPath.join('.');
|
|
2961
|
-
|
|
2962
|
-
return foundschema;
|
|
2963
|
-
}
|
|
2964
|
-
}
|
|
2965
|
-
}
|
|
2966
|
-
|
|
2967
|
-
// look for arrays
|
|
2968
|
-
const parts = path.split('.');
|
|
2969
|
-
for (let i = 0; i < parts.length; ++i) {
|
|
2970
|
-
if (parts[i] === '$' || isArrayFilter(parts[i])) {
|
|
2971
|
-
// Re: gh-5628, because `schema.path()` doesn't take $ into account.
|
|
2972
|
-
parts[i] = '0';
|
|
2973
|
-
}
|
|
2974
|
-
if (numberRE.test(parts[i])) {
|
|
2975
|
-
parts[i] = '$';
|
|
2976
|
-
}
|
|
2977
|
-
}
|
|
2978
|
-
return search(parts, _this);
|
|
2979
|
-
};
|
|
2980
|
-
|
|
2981
|
-
/*!
|
|
2982
|
-
* ignore
|
|
2983
|
-
*/
|
|
2984
|
-
|
|
2985
|
-
Schema.prototype._getPathType = function(path) {
|
|
2986
|
-
const _this = this;
|
|
2987
|
-
const pathschema = _this.path(path);
|
|
2988
|
-
|
|
2989
|
-
if (pathschema) {
|
|
2990
|
-
return 'real';
|
|
2991
|
-
}
|
|
2992
|
-
|
|
2993
|
-
function search(parts, schema) {
|
|
2994
|
-
let p = parts.length + 1,
|
|
2995
|
-
foundschema,
|
|
2996
|
-
trypath;
|
|
2997
|
-
|
|
2998
|
-
while (p--) {
|
|
2999
|
-
trypath = parts.slice(0, p).join('.');
|
|
3000
|
-
foundschema = schema.path(trypath);
|
|
3001
|
-
if (foundschema) {
|
|
3002
|
-
if (foundschema.embeddedSchemaType || foundschema.Constructor) {
|
|
3003
|
-
// array of Mixed?
|
|
3004
|
-
if (foundschema.embeddedSchemaType instanceof MongooseTypes.Mixed) {
|
|
3005
|
-
return { schema: foundschema, pathType: 'mixed' };
|
|
3006
|
-
}
|
|
3007
|
-
|
|
3008
|
-
// Now that we found the array, we need to check if there
|
|
3009
|
-
// are remaining document paths to look up for casting.
|
|
3010
|
-
// Also we need to handle array.$.path since schema.path
|
|
3011
|
-
// doesn't work for that.
|
|
3012
|
-
// If there is no foundschema.schema we are dealing with
|
|
3013
|
-
// a path like array.$
|
|
3014
|
-
if (p !== parts.length && foundschema.schema) {
|
|
3015
|
-
if (parts[p] === '$' || isArrayFilter(parts[p])) {
|
|
3016
|
-
if (p === parts.length - 1) {
|
|
3017
|
-
return { schema: foundschema, pathType: 'nested' };
|
|
3018
|
-
}
|
|
3019
|
-
// comments.$.comments.$.title
|
|
3020
|
-
return search(parts.slice(p + 1), foundschema.schema);
|
|
3021
|
-
}
|
|
3022
|
-
// this is the last path of the selector
|
|
3023
|
-
return search(parts.slice(p), foundschema.schema);
|
|
3024
|
-
}
|
|
3025
|
-
return {
|
|
3026
|
-
schema: foundschema,
|
|
3027
|
-
pathType: foundschema.$isSingleNested ? 'nested' : 'array'
|
|
3028
|
-
};
|
|
3029
|
-
}
|
|
3030
|
-
return { schema: foundschema, pathType: 'real' };
|
|
3031
|
-
} else if (p === parts.length && schema.nested[trypath]) {
|
|
3032
|
-
return { schema: schema, pathType: 'nested' };
|
|
3033
|
-
}
|
|
3034
|
-
}
|
|
3035
|
-
return { schema: foundschema || schema, pathType: 'undefined' };
|
|
3036
|
-
}
|
|
3037
|
-
|
|
3038
|
-
// look for arrays
|
|
3039
|
-
return search(path.split('.'), _this);
|
|
3040
|
-
};
|
|
3041
|
-
|
|
3042
|
-
/**
|
|
3043
|
-
* Transforms the duplicate key error by checking for duplicate key error messages by path.
|
|
3044
|
-
* If no duplicate key error messages are found, returns the original error.
|
|
3045
|
-
*
|
|
3046
|
-
* @param {Error} error The error to transform
|
|
3047
|
-
* @returns {Error} The transformed error
|
|
3048
|
-
* @api private
|
|
3049
|
-
*/
|
|
3050
|
-
|
|
3051
|
-
Schema.prototype._transformDuplicateKeyError = function _transformDuplicateKeyError(error) {
|
|
3052
|
-
if (!this._duplicateKeyErrorMessagesByPath) {
|
|
3053
|
-
return error;
|
|
3054
|
-
}
|
|
3055
|
-
if (error.code !== 11000 && error.code !== 11001) {
|
|
3056
|
-
return error;
|
|
3057
|
-
}
|
|
3058
|
-
|
|
3059
|
-
if (error.keyPattern != null) {
|
|
3060
|
-
const keyPattern = error.keyPattern;
|
|
3061
|
-
const keys = Object.keys(keyPattern);
|
|
3062
|
-
if (keys.length !== 1) {
|
|
3063
|
-
return error;
|
|
3064
|
-
}
|
|
3065
|
-
const firstKey = keys[0];
|
|
3066
|
-
if (!Object.hasOwn(this._duplicateKeyErrorMessagesByPath, firstKey)) {
|
|
3067
|
-
return error;
|
|
3068
|
-
}
|
|
3069
|
-
return new MongooseError(this._duplicateKeyErrorMessagesByPath[firstKey], { cause: error });
|
|
3070
|
-
}
|
|
3071
|
-
|
|
3072
|
-
return error;
|
|
3073
|
-
};
|
|
3074
|
-
|
|
3075
|
-
/*!
|
|
3076
|
-
* ignore
|
|
3077
|
-
*/
|
|
3078
|
-
|
|
3079
|
-
function isArrayFilter(piece) {
|
|
3080
|
-
return piece.startsWith('$[') && piece.endsWith(']');
|
|
3081
|
-
}
|
|
3082
|
-
|
|
3083
|
-
/**
|
|
3084
|
-
* Called by `compile()` _right before_ compiling. Good for making any changes to
|
|
3085
|
-
* the schema that should respect options set by plugins, like `id`
|
|
3086
|
-
* @method _preCompile
|
|
3087
|
-
* @memberOf Schema
|
|
3088
|
-
* @instance
|
|
3089
|
-
* @api private
|
|
3090
|
-
*/
|
|
3091
|
-
|
|
3092
|
-
Schema.prototype._preCompile = function _preCompile() {
|
|
3093
|
-
this.plugin(idGetter, { deduplicate: true });
|
|
3094
|
-
};
|
|
3095
|
-
|
|
3096
|
-
/**
|
|
3097
|
-
* Returns a JSON schema representation of this Schema.
|
|
3098
|
-
*
|
|
3099
|
-
* By default, returns normal [JSON schema representation](https://json-schema.org/learn/getting-started-step-by-step), which is not typically what you want to use with
|
|
3100
|
-
* [MongoDB's `$jsonSchema` collection option](https://www.mongodb.com/docs/manual/core/schema-validation/specify-json-schema/).
|
|
3101
|
-
* Use the `useBsonType: true` option to return MongoDB `$jsonSchema` syntax instead.
|
|
3102
|
-
*
|
|
3103
|
-
* In addition to types, `jsonSchema()` supports the following Mongoose validators:
|
|
3104
|
-
* - `enum` for strings and numbers
|
|
3105
|
-
*
|
|
3106
|
-
* #### Example:
|
|
3107
|
-
* const schema = new Schema({ name: String });
|
|
3108
|
-
* // { required: ['_id'], properties: { name: { type: ['string', 'null'] }, _id: { type: 'string' } } }
|
|
3109
|
-
* schema.toJSONSchema();
|
|
3110
|
-
*
|
|
3111
|
-
* // { required: ['_id'], properties: { name: { bsonType: ['string', 'null'] }, _id: { bsonType: 'objectId' } } }
|
|
3112
|
-
* schema.toJSONSchema({ useBsonType: true });
|
|
3113
|
-
*
|
|
3114
|
-
* @param {Object} [options]
|
|
3115
|
-
* @param [Boolean] [options.useBsonType=false] if true, specify each path's type using `bsonType` rather than `type` for MongoDB $jsonSchema support
|
|
3116
|
-
*/
|
|
3117
|
-
|
|
3118
|
-
Schema.prototype.toJSONSchema = function toJSONSchema(options) {
|
|
3119
|
-
const useBsonType = options?.useBsonType ?? false;
|
|
3120
|
-
const result = useBsonType ? { required: [], properties: {} } : { type: 'object', required: [], properties: {} };
|
|
3121
|
-
for (const path of Object.keys(this.paths)) {
|
|
3122
|
-
const schemaType = this.paths[path];
|
|
3123
|
-
|
|
3124
|
-
// Skip Map embedded paths, maps will be handled seperately.
|
|
3125
|
-
if (schemaType._presplitPath.indexOf('$*') !== -1) {
|
|
3126
|
-
continue;
|
|
3127
|
-
}
|
|
3128
|
-
|
|
3129
|
-
// Nested paths are stored as `nested.path` in the schema type, so create nested paths in the json schema
|
|
3130
|
-
// when necessary.
|
|
3131
|
-
const isNested = schemaType._presplitPath.length > 1;
|
|
3132
|
-
let jsonSchemaForPath = result;
|
|
3133
|
-
if (isNested) {
|
|
3134
|
-
for (let i = 0; i < schemaType._presplitPath.length - 1; ++i) {
|
|
3135
|
-
const subpath = schemaType._presplitPath[i];
|
|
3136
|
-
if (jsonSchemaForPath.properties[subpath] == null) {
|
|
3137
|
-
jsonSchemaForPath.properties[subpath] = useBsonType
|
|
3138
|
-
? {
|
|
3139
|
-
bsonType: ['object', 'null'],
|
|
3140
|
-
properties: {}
|
|
3141
|
-
}
|
|
3142
|
-
: {
|
|
3143
|
-
type: ['object', 'null'],
|
|
3144
|
-
properties: {}
|
|
3145
|
-
};
|
|
3146
|
-
}
|
|
3147
|
-
jsonSchemaForPath = jsonSchemaForPath.properties[subpath];
|
|
3148
|
-
}
|
|
3149
|
-
}
|
|
3150
|
-
|
|
3151
|
-
const lastSubpath = schemaType._presplitPath[schemaType._presplitPath.length - 1];
|
|
3152
|
-
let isRequired = false;
|
|
3153
|
-
if (path === '_id') {
|
|
3154
|
-
if (!jsonSchemaForPath.required) {
|
|
3155
|
-
jsonSchemaForPath.required = [];
|
|
3156
|
-
}
|
|
3157
|
-
jsonSchemaForPath.required.push('_id');
|
|
3158
|
-
isRequired = true;
|
|
3159
|
-
} else if (schemaType.options.required && typeof schemaType.options.required !== 'function') {
|
|
3160
|
-
if (!jsonSchemaForPath.required) {
|
|
3161
|
-
jsonSchemaForPath.required = [];
|
|
3162
|
-
}
|
|
3163
|
-
// Only `required: true` paths are required, conditional required is not required
|
|
3164
|
-
jsonSchemaForPath.required.push(lastSubpath);
|
|
3165
|
-
isRequired = true;
|
|
3166
|
-
}
|
|
3167
|
-
jsonSchemaForPath.properties[lastSubpath] = schemaType.toJSONSchema(options);
|
|
3168
|
-
if (schemaType.options.enum) {
|
|
3169
|
-
jsonSchemaForPath.properties[lastSubpath].enum = isRequired
|
|
3170
|
-
? schemaType.options.enum
|
|
3171
|
-
: [...schemaType.options.enum, null];
|
|
3172
|
-
}
|
|
3173
|
-
}
|
|
3174
|
-
|
|
3175
|
-
// Otherwise MongoDB errors with "$jsonSchema keyword 'required' cannot be an empty array"
|
|
3176
|
-
if (result.required.length === 0) {
|
|
3177
|
-
delete result.required;
|
|
3178
|
-
}
|
|
3179
|
-
return result;
|
|
3180
|
-
};
|
|
3181
|
-
|
|
3182
|
-
/*!
|
|
3183
|
-
* Module exports.
|
|
3184
|
-
*/
|
|
3185
|
-
|
|
3186
|
-
module.exports = exports = Schema;
|
|
3187
|
-
|
|
3188
|
-
// require down here because of reference issues
|
|
3189
|
-
|
|
3190
|
-
/**
|
|
3191
|
-
* The various built-in Mongoose Schema Types.
|
|
3192
|
-
*
|
|
3193
|
-
* #### Example:
|
|
3194
|
-
*
|
|
3195
|
-
* const mongoose = require('mongoose');
|
|
3196
|
-
* const ObjectId = mongoose.Schema.Types.ObjectId;
|
|
3197
|
-
*
|
|
3198
|
-
* #### Types:
|
|
3199
|
-
*
|
|
3200
|
-
* - [String](https://mongoosejs.com/docs/schematypes.html#strings)
|
|
3201
|
-
* - [Number](https://mongoosejs.com/docs/schematypes.html#numbers)
|
|
3202
|
-
* - [Boolean](https://mongoosejs.com/docs/schematypes.html#booleans) | Bool
|
|
3203
|
-
* - [Array](https://mongoosejs.com/docs/schematypes.html#arrays)
|
|
3204
|
-
* - [Buffer](https://mongoosejs.com/docs/schematypes.html#buffers)
|
|
3205
|
-
* - [Date](https://mongoosejs.com/docs/schematypes.html#dates)
|
|
3206
|
-
* - [ObjectId](https://mongoosejs.com/docs/schematypes.html#objectids) | Oid
|
|
3207
|
-
* - [Mixed](https://mongoosejs.com/docs/schematypes.html#mixed)
|
|
3208
|
-
* - [UUID](https://mongoosejs.com/docs/schematypes.html#uuid)
|
|
3209
|
-
* - [BigInt](https://mongoosejs.com/docs/schematypes.html#bigint)
|
|
3210
|
-
* - [Double] (https://mongoosejs.com/docs/schematypes.html#double)
|
|
3211
|
-
* - [Int32](https://mongoosejs.com/docs/schematypes.html#int32)
|
|
3212
|
-
*
|
|
3213
|
-
* Using this exposed access to the `Mixed` SchemaType, we can use them in our schema.
|
|
3214
|
-
*
|
|
3215
|
-
* const Mixed = mongoose.Schema.Types.Mixed;
|
|
3216
|
-
* new mongoose.Schema({ _user: Mixed })
|
|
3217
|
-
*
|
|
3218
|
-
* @api public
|
|
3219
|
-
*/
|
|
3220
|
-
|
|
3221
|
-
Schema.Types = MongooseTypes = require('./schema/index');
|
|
3222
|
-
|
|
3223
|
-
/*!
|
|
3224
|
-
* ignore
|
|
3225
|
-
*/
|
|
3226
|
-
|
|
3227
|
-
exports.ObjectId = MongooseTypes.ObjectId;
|