From 1039d040e96eb635e21430daf7997117cfa906ea Mon Sep 17 00:00:00 2001 From: Sebastian Rindom Date: Mon, 16 Aug 2021 15:45:26 +0200 Subject: [PATCH] Add SQLite support for easy setup (#336) * Modifies schema to allow SQLite as a DB driver. SQLite is preinstalled in most OSes allowing for minimal prerequisites in the installation process. * Removes Redis dependency and replaces "real" redis instance with ioredis-mock this is not feature complete and errors are expected. * Updates medusa new command to only ask for Postgres credentials if the starter template has database_type === "postgres" in medusa-config.js * Small improvements to bin resolution * Improvements to endpoint stability --- integration-tests/api/__tests__/store/cart.js | 2 +- .../api/__tests__/store/customer.js | 2 +- integration-tests/api/package.json | 6 +- integration-tests/api/yarn.lock | 731 ++++++++++++++++-- integration-tests/helpers/use-db.js | 92 ++- packages/medusa-cli/src/commands/link.js | 8 + packages/medusa-cli/src/commands/new.js | 129 +++- packages/medusa-cli/src/create-cli.js | 5 - packages/medusa-cli/src/reporter/index.js | 16 +- .../medusa-cli/src/reporter/panic-handler.js | 25 + packages/medusa-telemetry/yarn.lock | 232 ++++-- packages/medusa/.gitignore | 2 +- packages/medusa/package.json | 3 + .../src/api/middlewares/error-handler.js | 37 +- .../__tests__/create-collection.js | 2 +- .../products/__tests__/create-product.js | 2 +- .../routes/store/carts/add-shipping-method.js | 9 +- .../routes/store/carts/create-line-item.js | 24 +- .../customers/__tests__/create-customer.js | 2 +- packages/medusa/src/commands/develop.js | 8 +- packages/medusa/src/commands/seed.js | 6 +- packages/medusa/src/commands/user.js | 1 + packages/medusa/src/loaders/database.js | 11 +- packages/medusa/src/loaders/defaults.js | 46 ++ packages/medusa/src/loaders/express.js | 37 +- packages/medusa/src/loaders/index.js | 15 +- packages/medusa/src/loaders/redis.js | 34 + packages/medusa/src/models/address.ts | 9 +- packages/medusa/src/models/cart.ts | 17 +- packages/medusa/src/models/claim-image.ts | 10 +- packages/medusa/src/models/claim-item.ts | 11 +- packages/medusa/src/models/claim-order.ts | 19 +- packages/medusa/src/models/claim-tag.ts | 9 +- packages/medusa/src/models/customer.ts | 9 +- packages/medusa/src/models/discount-rule.ts | 13 +- packages/medusa/src/models/discount.ts | 16 +- packages/medusa/src/models/draft-order.ts | 35 +- packages/medusa/src/models/fulfillment.ts | 17 +- .../src/models/gift-card-transaction.ts | 3 +- packages/medusa/src/models/gift-card.ts | 11 +- packages/medusa/src/models/idempotency-key.ts | 9 +- packages/medusa/src/models/image.ts | 9 +- packages/medusa/src/models/line-item.ts | 7 +- packages/medusa/src/models/money-amount.ts | 7 +- packages/medusa/src/models/notification.ts | 7 +- packages/medusa/src/models/oauth.ts | 3 +- packages/medusa/src/models/order.ts | 41 +- packages/medusa/src/models/payment-session.ts | 9 +- packages/medusa/src/models/payment.ts | 13 +- .../medusa/src/models/product-collection.ts | 9 +- .../medusa/src/models/product-option-value.ts | 9 +- packages/medusa/src/models/product-option.ts | 9 +- packages/medusa/src/models/product-tag.ts | 9 +- packages/medusa/src/models/product-type.ts | 9 +- packages/medusa/src/models/product-variant.ts | 9 +- packages/medusa/src/models/product.ts | 9 +- packages/medusa/src/models/refund.ts | 9 +- packages/medusa/src/models/region.ts | 9 +- packages/medusa/src/models/return-item.ts | 3 +- packages/medusa/src/models/return-reason.ts | 9 +- packages/medusa/src/models/return.ts | 19 +- packages/medusa/src/models/shipping-method.ts | 3 +- .../src/models/shipping-option-requirement.ts | 3 +- packages/medusa/src/models/shipping-option.ts | 13 +- .../medusa/src/models/shipping-profile.ts | 17 +- packages/medusa/src/models/staged-job.ts | 3 +- packages/medusa/src/models/store.ts | 7 +- packages/medusa/src/models/swap.ts | 17 +- packages/medusa/src/models/tracking-link.ts | 9 +- packages/medusa/src/models/user.ts | 9 +- .../src/services/__tests__/line-item.js | 6 + packages/medusa/src/services/event-bus.js | 5 +- packages/medusa/src/services/line-item.js | 69 +- packages/medusa/src/utils/db-aware-column.ts | 58 ++ .../medusa/src/utils/manual-auto-increment.ts | 24 + packages/medusa/yarn.lock | 469 ++++++++++- 76 files changed, 2072 insertions(+), 523 deletions(-) create mode 100644 packages/medusa-cli/src/reporter/panic-handler.js create mode 100644 packages/medusa/src/loaders/redis.js create mode 100644 packages/medusa/src/utils/db-aware-column.ts create mode 100644 packages/medusa/src/utils/manual-auto-increment.ts diff --git a/integration-tests/api/__tests__/store/cart.js b/integration-tests/api/__tests__/store/cart.js index 8e6371d28c..8527218273 100644 --- a/integration-tests/api/__tests__/store/cart.js +++ b/integration-tests/api/__tests__/store/cart.js @@ -21,7 +21,7 @@ describe("/store/carts", () => { beforeAll(async () => { const cwd = path.resolve(path.join(__dirname, "..", "..")); dbConnection = await initDb({ cwd }); - medusaProcess = await setupServer({ cwd, verbose: true }); + medusaProcess = await setupServer({ cwd }); }); afterAll(async () => { diff --git a/integration-tests/api/__tests__/store/customer.js b/integration-tests/api/__tests__/store/customer.js index 6f3b25f301..ff5b63fe44 100644 --- a/integration-tests/api/__tests__/store/customer.js +++ b/integration-tests/api/__tests__/store/customer.js @@ -73,7 +73,7 @@ describe("/store/customers", () => { }) .catch((err) => err.response); - expect(response.status).toEqual(409); + expect(response.status).toEqual(402); }); }); diff --git a/integration-tests/api/package.json b/integration-tests/api/package.json index 0ea9a23633..742e683fd5 100644 --- a/integration-tests/api/package.json +++ b/integration-tests/api/package.json @@ -8,15 +8,15 @@ "build": "babel src -d dist --extensions \".ts,.js\"" }, "dependencies": { - "@medusajs/medusa": "1.1.34-dev-1628665194353", - "medusa-interfaces": "1.1.21-dev-1628665194353", + "@medusajs/medusa": "1.1.36-dev-1629109473927", + "medusa-interfaces": "1.1.21-dev-1629109473927", "typeorm": "^0.2.31" }, "devDependencies": { "@babel/cli": "^7.12.10", "@babel/core": "^7.12.10", "@babel/node": "^7.12.10", - "babel-preset-medusa-package": "1.1.13-dev-1628665194353", + "babel-preset-medusa-package": "1.1.13-dev-1629109473927", "jest": "^26.6.3" } } diff --git a/integration-tests/api/yarn.lock b/integration-tests/api/yarn.lock index 790604814c..b1e9576e06 100644 --- a/integration-tests/api/yarn.lock +++ b/integration-tests/api/yarn.lock @@ -1230,10 +1230,10 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@medusajs/medusa-cli@1.1.15-dev-1628665194353": - version "1.1.15-dev-1628665194353" - resolved "http://localhost:4873/@medusajs%2fmedusa-cli/-/medusa-cli-1.1.15-dev-1628665194353.tgz#5a3b69e7f806a5f4fc48be675955c213657bbbcb" - integrity sha512-nFaQH1NECfzfpSqnUuSTaztK5aqGqsTWbTg4wxu/r6SMPafr0sjRQBWA5xQcSiHnmEK9cQDrfWIflEim0Jq7RA== +"@medusajs/medusa-cli@1.1.15-dev-1629109473927": + version "1.1.15-dev-1629109473927" + resolved "http://localhost:4873/@medusajs%2fmedusa-cli/-/medusa-cli-1.1.15-dev-1629109473927.tgz#d7d170daab4fc471f78841d55799f8d0c426c3a9" + integrity sha512-VOaMDt1vkB/13dXqr9eeW6fKspI5sOzh1hAMZvJZ8Y3k0+2/eHr7imzxwBwOHW9qbgzCASq31hNGRl5SG+GigQ== dependencies: "@babel/polyfill" "^7.8.7" "@babel/runtime" "^7.9.6" @@ -1251,8 +1251,8 @@ is-valid-path "^0.1.1" joi-objectid "^3.0.1" meant "^1.0.1" - medusa-core-utils "1.1.20-dev-1628665194353" - medusa-telemetry "0.0.2-dev-1628665194353" + medusa-core-utils "1.1.20-dev-1629109473927" + medusa-telemetry "0.0.2-dev-1629109473927" netrc-parser "^3.1.6" open "^8.0.6" ora "^5.4.1" @@ -1266,13 +1266,13 @@ winston "^3.3.3" yargs "^15.3.1" -"@medusajs/medusa@1.1.34-dev-1628665194353": - version "1.1.34-dev-1628665194353" - resolved "http://localhost:4873/@medusajs%2fmedusa/-/medusa-1.1.34-dev-1628665194353.tgz#f939756ac196f63d28203f4381d346db77d900a0" - integrity sha512-neoxIH05nUfxoC3stIENLZPpiDBLgPHc7Cmx7q6uhcKjNGYGi9+dok7lIlMrjWfF4BpaRBPPIkNDiZSGY0pAig== +"@medusajs/medusa@1.1.36-dev-1629109473927": + version "1.1.36-dev-1629109473927" + resolved "http://localhost:4873/@medusajs%2fmedusa/-/medusa-1.1.36-dev-1629109473927.tgz#198c64c177aa5d39785fbada7f97bfc54d41737b" + integrity sha512-4URRvrzBFqU72xGy0jZw3puLknNlZLQ2qCSopMF36qqPa0EFfZhC/fu2x7DIqAdbR8+WxPV/IV8nJQZwlbcOAA== dependencies: "@hapi/joi" "^16.1.8" - "@medusajs/medusa-cli" "1.1.15-dev-1628665194353" + "@medusajs/medusa-cli" "1.1.15-dev-1629109473927" "@types/lodash" "^4.14.168" awilix "^4.2.3" body-parser "^1.19.0" @@ -1288,11 +1288,12 @@ fs-exists-cached "^1.0.0" glob "^7.1.6" ioredis "^4.17.3" + ioredis-mock "^5.6.0" joi "^17.3.0" joi-objectid "^3.0.1" jsonwebtoken "^8.5.1" - medusa-core-utils "1.1.20-dev-1628665194353" - medusa-test-utils "1.1.23-dev-1628665194353" + medusa-core-utils "1.1.20-dev-1629109473927" + medusa-test-utils "1.1.23-dev-1629109473927" morgan "^1.9.1" multer "^1.4.2" passport "^0.4.0" @@ -1306,6 +1307,7 @@ request-ip "^2.1.3" resolve-cwd "^3.0.0" scrypt-kdf "^2.0.1" + sqlite3 "^5.0.2" ulid "^2.3.0" uuid "^8.3.1" winston "^3.2.1" @@ -1566,6 +1568,11 @@ abab@^2.0.3, abab@^2.0.5: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -1604,6 +1611,16 @@ agent-base@6: dependencies: debug "4" +ajv@^6.12.3: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ansi-align@^3.0.0: version "3.0.0" resolved "http://localhost:4873/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" @@ -1698,6 +1715,19 @@ append-field@^1.0.0: resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" integrity sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY= +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1740,6 +1770,18 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -1773,6 +1815,16 @@ awilix@^4.2.3: camel-case "^4.1.2" glob "^7.1.6" +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + axios-retry@^3.1.9: version "3.1.9" resolved "http://localhost:4873/axios-retry/-/axios-retry-3.1.9.tgz#6c30fc9aeb4519aebaec758b90ef56fa03fe72e8" @@ -1886,10 +1938,10 @@ babel-preset-jest@^26.6.2: babel-plugin-jest-hoist "^26.6.2" babel-preset-current-node-syntax "^1.0.0" -babel-preset-medusa-package@1.1.13-dev-1628665194353: - version "1.1.13-dev-1628665194353" - resolved "http://localhost:4873/babel-preset-medusa-package/-/babel-preset-medusa-package-1.1.13-dev-1628665194353.tgz#d0401b36156ef49a1843f8155d247a7d5c478568" - integrity sha512-a22ODezW26cSwPPLTkkcVnOpoJCpcl5haS9LUK1Lg6a//S33PDXBWe3tBe1qdJKvTlIeQkJEbaSFLr25QT+gew== +babel-preset-medusa-package@1.1.13-dev-1629109473927: + version "1.1.13-dev-1629109473927" + resolved "http://localhost:4873/babel-preset-medusa-package/-/babel-preset-medusa-package-1.1.13-dev-1629109473927.tgz#1ec273faf2a64f1a02a23106de19d2babc9223bc" + integrity sha512-Im7BInUm9S0OTb04CLiWRUNpVdNciJ7xVwFicNvCettujV5DvJWpMK/pYhYj+5HCyvYkZcgR2X3KZTpOtIt+uA== dependencies: "@babel/plugin-proposal-class-properties" "^7.12.1" "@babel/plugin-proposal-decorators" "^7.12.1" @@ -1931,6 +1983,13 @@ basic-auth@~2.0.1: dependencies: safe-buffer "5.1.2" +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" @@ -1950,6 +2009,13 @@ bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + dependencies: + inherits "~2.0.0" + body-parser@1.19.0, body-parser@^1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" @@ -2160,6 +2226,11 @@ cardinal@^2.1.1: ansicolors "~0.3.2" redeyed "~2.1.0" +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + chalk@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -2221,6 +2292,11 @@ chokidar@^3.4.0, chokidar@^3.4.2: optionalDependencies: fsevents "~2.3.2" +chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -2369,6 +2445,11 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -2440,7 +2521,7 @@ colorspace@1.1.x: color "3.0.x" text-hex "1.0.x" -combined-stream@^1.0.8: +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -2494,6 +2575,11 @@ connect-redis@^5.0.0: resolved "https://registry.yarnpkg.com/connect-redis/-/connect-redis-5.2.0.tgz#d38e173f2e2cccecb89b8757ce7627ecdb8e3b94" integrity sha512-wcv1lZWa2K7RbsdSlrvwApBQFLQx+cia+oirLIeim0axR3D/9ZJbHdeTM/j8tJYYKk34dVs2QPAuAqcIklWD+Q== +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + content-disposition@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -2559,7 +2645,7 @@ core-js@^3.15.0, core-js@^3.6.5, core-js@^3.7.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.15.2.tgz#740660d2ff55ef34ce664d7e2455119c5bdd3d61" integrity sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q== -core-util-is@~1.0.0: +core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= @@ -2622,6 +2708,13 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + data-urls@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" @@ -2645,7 +2738,7 @@ debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: dependencies: ms "2.1.2" -debug@^3.1.0: +debug@^3.1.0, debug@^3.2.6: version "3.2.7" resolved "http://localhost:4873/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== @@ -2672,6 +2765,11 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -2728,6 +2826,11 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + denque@^1.1.0, denque@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.0.tgz#773de0686ff2d8ec2ff92914316a47b73b1c73de" @@ -2748,6 +2851,11 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -2792,6 +2900,14 @@ dotenv@^8.2.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + ecdsa-sig-formatter@1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" @@ -3092,6 +3208,11 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + external-editor@^3.0.3: version "3.1.0" resolved "http://localhost:4873/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -3120,6 +3241,21 @@ extract-stack@^2.0.0: resolved "http://localhost:4873/extract-stack/-/extract-stack-2.0.0.tgz#11367bc865bfcd9bc0db3123e5edb57786f11f9b" integrity sha512-AEo4zm+TenK7zQorGK1f9mJ8L14hnTDi2ZQPR+Mub1NX8zimka1mXpV5LpH8x9HoUmFSHZCfLHqWvp0Y4FxxzQ== +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + fast-glob@^3.1.1: version "3.2.7" resolved "http://localhost:4873/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" @@ -3165,6 +3301,20 @@ fecha@^4.2.0: resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.1.tgz#0a83ad8f86ef62a091e22bb5a039cd03d23eecce" integrity sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q== +fengari-interop@^0.1.2: + version "0.1.2" + resolved "http://localhost:4873/fengari-interop/-/fengari-interop-0.1.2.tgz#f7731dcdd2ff4449073fb7ac3c451a8841ce1e87" + integrity sha512-8iTvaByZVoi+lQJhHH9vC+c/Yaok9CwOqNQZN6JrVpjmWwW4dDkeblBXhnHC+BoI6eF4Cy5NKW3z6ICEjvgywQ== + +fengari@^0.1.4: + version "0.1.4" + resolved "http://localhost:4873/fengari/-/fengari-0.1.4.tgz#72416693cd9e43bd7d809d7829ddc0578b78b0bb" + integrity sha512-6ujqUuiIYmcgkGz8MGAdERU57EIluGGPSUgGPTsco657EHa+srq0S3/YUl/r9kx1+D+d4rGfYObd+m8K22gB1g== + dependencies: + readline-sync "^1.4.9" + sprintf-js "^1.1.1" + tmp "^0.0.33" + figlet@^1.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.5.0.tgz#2db4d00a584e5155a96080632db919213c3e003c" @@ -3253,6 +3403,11 @@ for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + form-data@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" @@ -3262,6 +3417,15 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -3302,6 +3466,13 @@ fs-extra@^8.1: jsonfile "^4.0.0" universalify "^0.1.0" +fs-minipass@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + fs-readdir-recursive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -3317,11 +3488,35 @@ fsevents@^2.1.2, fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== +fstream@^1.0.0, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -3380,6 +3575,13 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -3387,7 +3589,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== @@ -3426,6 +3628,19 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -3453,6 +3668,11 @@ has-symbols@^1.0.1, has-symbols@^1.0.2: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -3558,6 +3778,15 @@ http-proxy-agent@^4.0.1: agent-base "6" debug "4" +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + https-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" @@ -3581,7 +3810,7 @@ hyperlinker@^1.0.0: resolved "http://localhost:4873/hyperlinker/-/hyperlinker-1.0.0.tgz#23dc9e38a206b208ee49bc2d6c8ef47027df0c0e" integrity sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ== -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3593,6 +3822,13 @@ ieee754@^1.1.13, ieee754@^1.2.1: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== +ignore-walk@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" + integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== + dependencies: + minimatch "^3.0.4" + ignore@^5.1.4: version "5.1.8" resolved "http://localhost:4873/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" @@ -3624,7 +3860,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3634,6 +3870,11 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + inquirer@^8.0.0: version "8.1.2" resolved "http://localhost:4873/inquirer/-/inquirer-8.1.2.tgz#65b204d2cd7fb63400edd925dfe428bafd422e3d" @@ -3654,6 +3895,16 @@ inquirer@^8.0.0: strip-ansi "^6.0.0" through "^2.3.6" +ioredis-mock@^5.6.0: + version "5.6.0" + resolved "http://localhost:4873/ioredis-mock/-/ioredis-mock-5.6.0.tgz#f60f9fbc3a53b50f567be9369e2b211ed52c0653" + integrity sha512-Ow+tyKdijg/gA2gSEv7lq8dLp6bO7FnwDXbJ9as37NF23XNRGMLzBc7ITaqMydfrbTodWnLcE2lKEaBs7SBpyA== + dependencies: + fengari "^0.1.4" + fengari-interop "^0.1.2" + lodash "^4.17.21" + standard-as-callback "^2.1.0" + ioredis@^4.17.3, ioredis@^4.27.0: version "4.27.6" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.27.6.tgz#a53d427d3fe75fbd10ed7ad150ce00559df8dcf8" @@ -3813,6 +4064,13 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "http://localhost:4873/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -3941,7 +4199,7 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typedarray@^1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -4002,6 +4260,11 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + istanbul-lib-coverage@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" @@ -4452,6 +4715,11 @@ js-yaml@^4.0.0: dependencies: argparse "^2.0.1" +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + jsdom@^16.4.0: version "16.6.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac" @@ -4500,6 +4768,21 @@ json-parse-even-better-errors@^2.3.0: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + json5@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" @@ -4539,6 +4822,16 @@ jsonwebtoken@^8.2.0, jsonwebtoken@^8.5.1: ms "^2.1.1" semver "^5.6.0" +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + jwa@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" @@ -4780,25 +5073,25 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -medusa-core-utils@1.1.20-dev-1628665194353: - version "1.1.20-dev-1628665194353" - resolved "http://localhost:4873/medusa-core-utils/-/medusa-core-utils-1.1.20-dev-1628665194353.tgz#25d8ab74386e3691bda25a68b811031907f1ec08" - integrity sha512-VUdf9ynG01fVW4hIfCX2cLasWAqwX5ZcBNGVJhrCO+7+Htt+Sk//G6yYFhUDwlgZ9jTNp1qcc3t2TLSZoiEQLQ== +medusa-core-utils@1.1.20-dev-1629109473927: + version "1.1.20-dev-1629109473927" + resolved "http://localhost:4873/medusa-core-utils/-/medusa-core-utils-1.1.20-dev-1629109473927.tgz#fec5497a8d06cc4c264755fc691dcc89c285d041" + integrity sha512-qAdf4KZRDtB4hPI5TYTCTlGXP+0WAbNOm5BX77aiLBGhDqjcYTH6zE2E1KWnMcpeydtqoVQ5Cpnt52tPX/HAFw== dependencies: joi "^17.3.0" joi-objectid "^3.0.1" -medusa-interfaces@1.1.21-dev-1628665194353: - version "1.1.21-dev-1628665194353" - resolved "http://localhost:4873/medusa-interfaces/-/medusa-interfaces-1.1.21-dev-1628665194353.tgz#c85cd8e2ce8182baf192bc5fda321892aac9ca62" - integrity sha512-KcItrHJBHtFHbj47moLdGL4NoitKvHV5M4Y4RtMMAngo+iuw8mGHesBlSfg0DwrQwZU0kNWl7kE3S2VgsZVaRw== +medusa-interfaces@1.1.21-dev-1629109473927: + version "1.1.21-dev-1629109473927" + resolved "http://localhost:4873/medusa-interfaces/-/medusa-interfaces-1.1.21-dev-1629109473927.tgz#b53f49b31a6ff34de09a4b2a71e10966aff4210d" + integrity sha512-gtxUAcWD5yyWTMnHm7egamyVKtgc2bbaHfF/ezK7y+dqUPwHI9nry4Kpuy7YboF5XX4X/FHVajkRfGSJVPun7Q== dependencies: - medusa-core-utils "1.1.20-dev-1628665194353" + medusa-core-utils "1.1.20-dev-1629109473927" -medusa-telemetry@0.0.2-dev-1628665194353: - version "0.0.2-dev-1628665194353" - resolved "http://localhost:4873/medusa-telemetry/-/medusa-telemetry-0.0.2-dev-1628665194353.tgz#5fa577e48683441f5b4c15ed8f1f903f4ec9f8b7" - integrity sha512-ynROEMTDGuHTy1k7narmZvLMe6v2EoQD+5LRUaypJOPpTzwDSdTp6RRKZq+BxNilOYK6Eklshbr3uXwM34pIzA== +medusa-telemetry@0.0.2-dev-1629109473927: + version "0.0.2-dev-1629109473927" + resolved "http://localhost:4873/medusa-telemetry/-/medusa-telemetry-0.0.2-dev-1629109473927.tgz#4ac0eb3ef4d1d0dea112a841023c2415b09fd5df" + integrity sha512-a+k7QtRx9o3AFHsp7i9hijSTT5KWeDPKNFkRIcB3gEMaS+CkcCZ3CA3563yoeRJmGKpAcSxrRtbFDz8v757dLA== dependencies: axios "^0.21.1" axios-retry "^3.1.9" @@ -4809,13 +5102,13 @@ medusa-telemetry@0.0.2-dev-1628665194353: remove-trailing-slash "^0.1.1" uuid "^8.3.2" -medusa-test-utils@1.1.23-dev-1628665194353: - version "1.1.23-dev-1628665194353" - resolved "http://localhost:4873/medusa-test-utils/-/medusa-test-utils-1.1.23-dev-1628665194353.tgz#e07d1f0eb469094d218c56c0a13b4c68718eee68" - integrity sha512-eeUTdy18iq6SGT9fofVkVeQXaVfRuDk8FoMRE3PMOO/wGzgGkKAHF88Z4foFfzIFjA2bwb/pCt8vVJJ4mpEXfw== +medusa-test-utils@1.1.23-dev-1629109473927: + version "1.1.23-dev-1629109473927" + resolved "http://localhost:4873/medusa-test-utils/-/medusa-test-utils-1.1.23-dev-1629109473927.tgz#b7e47941f48b0a0b8be8d11b4e1dac75a1ada71e" + integrity sha512-6NE+XQXBc6Qo8hFxCpY+mTzjOdymKlzdIokG8C+FihK9vLx79xI2iCKD9vv7ERmUA6j5ebNohS3GfRyPwfdMaQ== dependencies: "@babel/plugin-transform-classes" "^7.9.5" - medusa-core-utils "1.1.20-dev-1628665194353" + medusa-core-utils "1.1.20-dev-1629109473927" randomatic "^3.1.1" merge-descriptors@1.0.1: @@ -4870,6 +5163,11 @@ mime-db@1.48.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== +mime-db@1.49.0: + version "1.49.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" + integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== + mime-types@^2.1.12, mime-types@~2.1.24: version "2.1.31" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" @@ -4877,6 +5175,13 @@ mime-types@^2.1.12, mime-types@~2.1.24: dependencies: mime-db "1.48.0" +mime-types@~2.1.19: + version "2.1.32" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" + integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== + dependencies: + mime-db "1.49.0" + mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -4899,6 +5204,21 @@ minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -4907,7 +5227,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.1: +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -5017,6 +5337,15 @@ natural-orderby@^2.0.1: resolved "http://localhost:4873/natural-orderby/-/natural-orderby-2.0.3.tgz#8623bc518ba162f8ff1cdb8941d74deb0fdcc016" integrity sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q== +needle@^2.2.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.8.0.tgz#1c8ef9c1a2c29dcc1e83d73809d7bc681c80a048" + integrity sha512-ZTq6WYkN/3782H1393me3utVYdq2XyqNUFBsprEE3VMAT0+hP/cItpnITpqsY6ep2yeFE4Tqtqwc74VqUlUYtw== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -5043,6 +5372,11 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-addon-api@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== + node-environment-flags@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" @@ -5051,6 +5385,24 @@ node-environment-flags@^1.0.5: object.getownpropertydescriptors "^2.0.3" semver "^5.7.0" +node-gyp@3.x: + version "3.8.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "^2.87.0" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -5073,11 +5425,42 @@ node-notifier@^8.0.0: uuid "^8.3.0" which "^2.0.2" +node-pre-gyp@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz#db1f33215272f692cd38f03238e3e9b47c5dd054" + integrity sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + node-releases@^1.1.71: version "1.1.73" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + dependencies: + abbrev "1" + +nopt@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== + dependencies: + abbrev "1" + osenv "^0.1.4" + normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -5100,6 +5483,27 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +npm-bundled@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +npm-packlist@^1.1.6: + version "1.4.8" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -5114,12 +5518,32 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== -object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.1: +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -5250,11 +5674,24 @@ ora@^5.3.0, ora@^5.4.1: strip-ansi "^6.0.0" wcwidth "^1.0.1" -os-tmpdir@~1.0.2: +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "http://localhost:4873/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= +osenv@0, osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + p-each-series@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" @@ -5451,6 +5888,11 @@ pause@0.0.1: resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" integrity sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10= +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + pg-connection-string@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.5.0.tgz#538cadd0f7e603fc09a12590f3b8a452c2c0cf34" @@ -5635,7 +6077,7 @@ proxy-addr@~2.0.5: forwarded "0.2.0" ipaddr.js "1.9.1" -psl@^1.1.33: +psl@^1.1.28, psl@^1.1.33: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== @@ -5653,7 +6095,7 @@ punycode@1.3.2: resolved "http://localhost:4873/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^2.1.1: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -5663,6 +6105,11 @@ qs@6.7.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + querystring@0.2.0: version "0.2.0" resolved "http://localhost:4873/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" @@ -5702,6 +6149,16 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + react-is@^17.0.1: version "17.0.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" @@ -5736,7 +6193,7 @@ readable-stream@1.1.x: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.7: +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.7: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -5774,6 +6231,11 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +readline-sync@^1.4.9: + version "1.4.10" + resolved "http://localhost:4873/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b" + integrity sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw== + redeyed@~2.1.0: version "2.1.1" resolved "http://localhost:4873/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" @@ -5901,6 +6363,32 @@ request-ip@^2.1.3: dependencies: is_js "^0.9.0" +request@^2.87.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -5954,6 +6442,13 @@ reusify@^1.0.4: resolved "http://localhost:4873/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rimraf@2, rimraf@^2.6.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -5990,7 +6485,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -6002,7 +6497,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -6022,7 +6517,7 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sax@>=0.6.0: +sax@>=0.6.0, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -6039,7 +6534,7 @@ scrypt-kdf@^2.0.1: resolved "https://registry.yarnpkg.com/scrypt-kdf/-/scrypt-kdf-2.0.1.tgz#3355224c52d398331b2cbf2b70a7be26b52c53e6" integrity sha512-dMhpgBVJPDWZP5erOCwTjI6oAO9hKhFAjZsdSQ0spaWJYHuA/wFNF2weQQfsyCIk8eNKoLfEDxr3zAtM+gZo0Q== -"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0, semver@^5.7.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -6061,6 +6556,11 @@ semver@^7.3.2: dependencies: lru-cache "^6.0.0" +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -6090,7 +6590,7 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" -set-blocking@^2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -6290,11 +6790,41 @@ split2@^3.1.1: dependencies: readable-stream "^3.0.0" +sprintf-js@^1.1.1: + version "1.1.2" + resolved "http://localhost:4873/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" + integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +sqlite3@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.0.2.tgz#00924adcc001c17686e0a6643b6cbbc2d3965083" + integrity sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA== + dependencies: + node-addon-api "^3.0.0" + node-pre-gyp "^0.11.0" + optionalDependencies: + node-gyp "3.x" + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + stack-trace@0.0.x, stack-trace@^0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" @@ -6338,7 +6868,16 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-width@^2.1.1: +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.1.1: version "2.1.1" resolved "http://localhost:4873/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -6399,7 +6938,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0: +strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= @@ -6442,6 +6981,11 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -6481,6 +7025,28 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +tar@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== + dependencies: + block-stream "*" + fstream "^1.0.12" + inherits "2" + +tar@^4: + version "4.4.16" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.16.tgz#4a48b3c025e77d9d0c788f038a09b91c594d326d" + integrity sha512-gOVUT/KWPkGFZQmCRDVFNUWBl7niIo/PRR7lzrIqtZpit+st54lGROuVjc6zEQM9FhH+dJfQIl+9F0k8GNXg5g== + dependencies: + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" + terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -6590,6 +7156,14 @@ tough-cookie@^4.0.0: punycode "^2.1.1" universalify "^0.1.2" +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + tr46@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" @@ -6617,6 +7191,18 @@ tslib@~2.1.0: resolved "http://localhost:4873/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -6782,6 +7368,13 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" @@ -6821,6 +7414,11 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + uuid@^8.3.0, uuid@^8.3.1, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" @@ -6855,6 +7453,15 @@ vary@^1, vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -6930,7 +7537,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.9: +which@1, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -6944,6 +7551,13 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + widest-line@^3.1.0: version "3.1.0" resolved "http://localhost:4873/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" @@ -7069,6 +7683,11 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== +yallist@^3.0.0, yallist@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" diff --git a/integration-tests/helpers/use-db.js b/integration-tests/helpers/use-db.js index 5f73ebc4ee..18cd785a17 100644 --- a/integration-tests/helpers/use-db.js +++ b/integration-tests/helpers/use-db.js @@ -7,6 +7,7 @@ const { createConnection } = require("typeorm"); const DB_USERNAME = process.env.DB_USERNAME || "postgres"; const DB_PASSWORD = process.env.DB_PASSWORD || ""; const DB_URL = `postgres://${DB_USERNAME}:${DB_PASSWORD}@localhost/medusa-integration`; + const pgGodCredentials = { user: DB_USERNAME, password: DB_PASSWORD, @@ -21,6 +22,8 @@ const keepTables = [ "currency", ]; +let connectionType = "postgresql"; + const DbTestUtil = { db_: null, @@ -36,7 +39,12 @@ const DbTestUtil = { const entities = this.db_.entityMetadatas; const manager = this.db_.manager; - await manager.query(`SET session_replication_role = 'replica';`); + if (connectionType === "sqlite") { + await manager.query(`PRAGMA foreign_keys = OFF`); + } else { + await manager.query(`SET session_replication_role = 'replica';`); + } + for (const entity of entities) { if (keepTables.includes(entity.tableName)) { continue; @@ -44,7 +52,11 @@ const DbTestUtil = { await manager.query(`DELETE FROM "${entity.tableName}";`); } - await manager.query(`SET session_replication_role = 'origin';`); + if (connectionType === "sqlite") { + await manager.query(`PRAGMA foreign_keys = ON`); + } else { + await manager.query(`SET session_replication_role = 'origin';`); + } }, shutdown: async function () { @@ -58,28 +70,7 @@ const instance = DbTestUtil; module.exports = { initDb: async function ({ cwd }) { - const migrationDir = path.resolve( - path.join( - cwd, - `node_modules`, - `@medusajs`, - `medusa`, - `dist`, - `migrations` - ) - ); - - const databaseName = "medusa-integration"; - await createDatabase({ databaseName }, pgGodCredentials); - - const connection = await createConnection({ - type: "postgres", - url: DB_URL, - migrations: [`${migrationDir}/*.js`], - }); - - await connection.runMigrations(); - await connection.close(); + const configPath = path.resolve(path.join(cwd, `medusa-config.js`)); const modelsLoader = require(path.join( cwd, @@ -90,16 +81,53 @@ module.exports = { `loaders`, `models` )).default; - const entities = modelsLoader({}, { register: false }); - const dbConnection = await createConnection({ - type: "postgres", - url: DB_URL, - entities, - }); - instance.setDb(dbConnection); - return dbConnection; + const { projectConfig } = require(configPath); + if (projectConfig.database_type === "sqlite") { + connectionType = "sqlite"; + const dbConnection = await createConnection({ + type: "sqlite", + database: projectConfig.database_database, + synchronize: true, + entities, + }); + + instance.setDb(dbConnection); + return dbConnection; + } else { + const migrationDir = path.resolve( + path.join( + cwd, + `node_modules`, + `@medusajs`, + `medusa`, + `dist`, + `migrations` + ) + ); + + const databaseName = "medusa-integration"; + await createDatabase({ databaseName }, pgGodCredentials); + + const connection = await createConnection({ + type: "postgres", + url: DB_URL, + migrations: [`${migrationDir}/*.js`], + }); + + await connection.runMigrations(); + await connection.close(); + + const dbConnection = await createConnection({ + type: "postgres", + url: DB_URL, + entities, + }); + + instance.setDb(dbConnection); + return dbConnection; + } }, useDb: function () { return instance; diff --git a/packages/medusa-cli/src/commands/link.js b/packages/medusa-cli/src/commands/link.js index b54b2531a5..1d45220d2e 100644 --- a/packages/medusa-cli/src/commands/link.js +++ b/packages/medusa-cli/src/commands/link.js @@ -8,6 +8,8 @@ const { track } = require("medusa-telemetry") const { getToken } = require("../util/token-store") const logger = require("../reporter").default +const MEDUSA_CLI_DEBUG = process.env.MEDUSA_CLI_DEBUG || false + module.exports = { link: async argv => { track("CLI_LINK", { args: argv }) @@ -59,6 +61,12 @@ module.exports = { }, } ) + + if (MEDUSA_CLI_DEBUG) { + proc.stderr.pipe(process.stderr) + proc.stdout.pipe(process.stdout) + } + const res = await proc if (res.stderr) { const err = new Error("stderr error") diff --git a/packages/medusa-cli/src/commands/new.js b/packages/medusa-cli/src/commands/new.js index 60c96a4ac6..44902a288f 100644 --- a/packages/medusa-cli/src/commands/new.js +++ b/packages/medusa-cli/src/commands/new.js @@ -19,6 +19,14 @@ import inquirer from "inquirer" import reporter from "../reporter" import { getPackageManager, setPackageManager } from "../util/package-manager" +const removeUndefined = obj => { + return Object.fromEntries( + Object.entries(obj) + .filter(([_, v]) => v != null) + .map(([k, v]) => [k, v === Object(v) ? removeEmpty(v) : v]) + ) +} + const spawnWithArgs = (file, args, options) => execa(file, args, { stdio: `inherit`, preferLocal: false, ...options }) @@ -199,6 +207,24 @@ const clone = async (hostInfo, rootPath) => { if (!isGit) await createInitialGitCommit(rootPath, url) } +const getMedusaConfig = rootPath => { + try { + const configPath = sysPath.join(rootPath, "medusa-config.js") + if (existsSync(configPath)) { + const resolved = sysPath.resolve(configPath) + const configModule = require(resolved) + return configModule + } + throw Error() + } catch (err) { + console.log(err) + reporter.warn( + `Couldn't find a medusa-config.js file; please double check that you have the correct starter installed` + ) + } + return {} +} + const getPaths = async (starterPath, rootPath) => { let selectedOtherStarter = false @@ -211,7 +237,18 @@ const getPaths = async (starterPath, rootPath) => { message: `What is your project called?`, initial: `my-medusa-store`, }, + { + type: `select`, + name: `starter`, + message: `What starter would you like to use?`, + choices: [ + { title: `medusa-starter-default`, value: `medusa-starter-default` }, + { title: `(Use a different starter)`, value: `different` }, + ], + initial: 0, + }, ]) + // exit gracefully if responses aren't provided if (!response.starter || !response.path.trim()) { throw new Error( @@ -220,7 +257,7 @@ const getPaths = async (starterPath, rootPath) => { } selectedOtherStarter = response.starter === `different` - starterPath = `medusajs/medusa-starter-default` + starterPath = `medusajs/${response.starter}` rootPath = response.path } @@ -232,8 +269,7 @@ const getPaths = async (starterPath, rootPath) => { } const successMessage = path => { - reporter.info(` -Your new Medusa project is ready for you! To start developing run: + reporter.info(`Your new Medusa project is ready for you! To start developing run: cd ${path} medusa develop @@ -241,7 +277,7 @@ Your new Medusa project is ready for you! To start developing run: } const defaultDBCreds = { - user: "postgres", + user: process.env.USER || "postgres", database: "postgres", password: "", port: 5432, @@ -392,27 +428,32 @@ const setupDB = async (dbName, dbCreds = {}) => { }) } -const setupEnvVars = async (rootPath, dbName, dbCreds = {}) => { - const credentials = Object.assign({}, defaultDBCreds, dbCreds) - - let dbUrl = "" - if ( - credentials.user !== defaultDBCreds.user || - credentials.password !== defaultDBCreds.password - ) { - dbUrl = `postgres://${credentials.user}:${credentials.password}@${credentials.host}:${credentials.port}/${dbName}` - } else { - dbUrl = `postgres://${credentials.host}:${credentials.port}/${dbName}` - } - +const setupEnvVars = async ( + rootPath, + dbName, + dbCreds = {}, + isPostgres = true +) => { const templatePath = sysPath.join(rootPath, ".env.template") const destination = sysPath.join(rootPath, ".env") if (existsSync(templatePath)) { fs.renameSync(templatePath, destination) - } else { - reporter.info(`No .env.template found. Creating .env.`) } - fs.appendFileSync(destination, `DATABASE_URL=${dbUrl}\n`) + + if (isPostgres) { + const credentials = Object.assign({}, defaultDBCreds, dbCreds) + let dbUrl = "" + if ( + credentials.user !== defaultDBCreds.user || + credentials.password !== defaultDBCreds.password + ) { + dbUrl = `postgres://${credentials.user}:${credentials.password}@${credentials.host}:${credentials.port}/${dbName}` + } else { + dbUrl = `postgres://${credentials.host}:${credentials.port}/${dbName}` + } + + fs.appendFileSync(destination, `DATABASE_URL=${dbUrl}\n`) + } } const runMigrations = async rootPath => { @@ -494,25 +535,39 @@ export const newStarter = async args => { dbHost, } = args - const dbCredentials = { + const dbCredentials = removeUndefined({ user: dbUser, database: dbDatabase, password: dbPass, port: dbPort, host: dbHost, - } + }) - const { starterPath, rootPath } = await getPaths(starter, root) + const { starterPath, rootPath, selectedOtherStarter } = await getPaths( + starter, + root + ) const urlObject = url.parse(rootPath) + if (selectedOtherStarter) { + reporter.info( + `Find the url of the Medusa starter you wish to create and run: + +medusa new ${rootPath} [url-to-starter] + +` + ) + return + } + if (urlObject.protocol && urlObject.host) { const isStarterAUrl = starter && !url.parse(starter).hostname && !url.parse(starter).protocol if (/medusa-starter/gi.test(rootPath) && isStarterAUrl) { reporter.panic({ - id: `11610`, + id: `10000`, context: { starter, rootPath, @@ -521,7 +576,7 @@ export const newStarter = async args => { return } reporter.panic({ - id: `11611`, + id: `10001`, context: { rootPath, }, @@ -531,7 +586,7 @@ export const newStarter = async args => { if (!isValid(rootPath)) { reporter.panic({ - id: `11612`, + id: `10002`, context: { path: sysPath.resolve(rootPath), }, @@ -541,7 +596,7 @@ export const newStarter = async args => { if (existsSync(sysPath.join(rootPath, `package.json`))) { reporter.panic({ - id: `11613`, + id: `10003`, context: { rootPath, }, @@ -556,28 +611,36 @@ export const newStarter = async args => { await copy(starterPath, rootPath) } + const medusaConfig = getMedusaConfig(rootPath) + + let isPostgres = false + if (medusaConfig && medusaConfig.projectConfig) { + const databaseType = medusaConfig.projectConfig.database_type + isPostgres = databaseType === "postgres" + } + track("CLI_NEW_LAYOUT_COMPLETED") let creds = dbCredentials - if (!useDefaults && !skipDb && !skipEnv) { - creds = await interactiveDbCreds(root, dbCredentials) + if (isPostgres && !useDefaults && !skipDb && !skipEnv) { + creds = await interactiveDbCreds(rootPath, dbCredentials) } if (creds === null) { reporter.info("Skipping automatic database setup") } else { - if (!skipDb) { + if (!skipDb && isPostgres) { track("CLI_NEW_SETUP_DB") - await setupDB(root, creds) + await setupDB(rootPath, creds) } if (!skipEnv) { track("CLI_NEW_SETUP_ENV") - await setupEnvVars(rootPath, root, creds) + await setupEnvVars(rootPath, rootPath, creds, isPostgres) } - if (!skipMigrations) { + if (!skipMigrations && isPostgres) { track("CLI_NEW_RUN_MIGRATIONS") await runMigrations(rootPath) } diff --git a/packages/medusa-cli/src/create-cli.js b/packages/medusa-cli/src/create-cli.js index fee203a9e2..13616de300 100644 --- a/packages/medusa-cli/src/create-cli.js +++ b/packages/medusa-cli/src/create-cli.js @@ -100,27 +100,22 @@ function buildLocalCommands(cli, isLocalProject) { .option(`db-user`, { type: `string`, describe: `The database user to use for database setup and migrations.`, - default: `postgres`, }) .option(`db-database`, { type: `string`, describe: `The database use for database setup and migrations.`, - default: `postgres`, }) .option(`db-pass`, { type: `string`, describe: `The database password to use for database setup and migrations.`, - default: ``, }) .option(`db-port`, { type: `number`, describe: `The database port to use for database setup and migrations.`, - default: 5432, }) .option(`db-host`, { type: `string`, describe: `The database host to use for database setup and migrations.`, - default: `localhost`, }), desc: `Create a new Medusa project.`, handler: handlerP(newStarter), diff --git a/packages/medusa-cli/src/reporter/index.js b/packages/medusa-cli/src/reporter/index.js index 8310d72855..7493deeec6 100644 --- a/packages/medusa-cli/src/reporter/index.js +++ b/packages/medusa-cli/src/reporter/index.js @@ -4,11 +4,14 @@ import winston from "winston" import ora from "ora" import { track } from "medusa-telemetry" +import { panicHandler } from "./panic-handler" + const LOG_LEVEL = process.env.LOG_LEVEL || "silly" const NODE_ENV = process.env.NODE_ENV || "development" +const IS_DEV = NODE_ENV === "development" const transports = [] -if (process.env.NODE_ENV && process.env.NODE_ENV !== "development") { +if (!IS_DEV) { transports.push(new winston.transports.Console()) } else { transports.push( @@ -43,10 +46,12 @@ export class Reporter { } panic = data => { + const parsedPanic = panicHandler(data) + this.loggerInstance_.log({ level: "error", details: data, - message: data.error && data.error.message, + message: parsedPanic.message, }) track("PANIC_ERROR_REACHED", { @@ -92,7 +97,7 @@ export class Reporter { */ activity = (message, config = {}) => { const id = ulid() - if (NODE_ENV === "development" && this.shouldLog("info")) { + if (IS_DEV && this.shouldLog("info")) { const activity = this.ora_(message).start() this.activities_[id] = { @@ -168,6 +173,11 @@ export class Reporter { } this.loggerInstance_.log(toLog) + + // Give stack traces and details in dev + if (error && IS_DEV) { + console.log(error) + } } /** diff --git a/packages/medusa-cli/src/reporter/panic-handler.js b/packages/medusa-cli/src/reporter/panic-handler.js new file mode 100644 index 0000000000..588e96b12a --- /dev/null +++ b/packages/medusa-cli/src/reporter/panic-handler.js @@ -0,0 +1,25 @@ +export const panicHandler = (panicData = {}) => { + const { id, context } = panicData + switch (id) { + case "10000": + return { + message: `Looks like you provided a URL as your project name. Try "medusa new my-medusa-store ${context.rootPath}" instead.`, + } + case "10001": + return { + message: `Looks like you provided a URL as your project name. Try "medusa new my-medusa-store ${context.rootPath}" instead.`, + } + case "10002": + return { + message: `Could not create project because ${context.path} is not a valid path.`, + } + case "10003": + return { + message: `Directory ${context.rootPath} is already a Node project.`, + } + default: + return { + message: "Unknown error", + } + } +} diff --git a/packages/medusa-telemetry/yarn.lock b/packages/medusa-telemetry/yarn.lock index b301d4b299..874a98817c 100644 --- a/packages/medusa-telemetry/yarn.lock +++ b/packages/medusa-telemetry/yarn.lock @@ -25,7 +25,12 @@ dependencies: "@babel/highlight" "^7.14.5" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.5", "@babel/compat-data@^7.14.7": +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.7", "@babel/compat-data@^7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" + integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== + +"@babel/compat-data@^7.14.5": version "7.14.7" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.7.tgz#7b047d7a3a89a67d2258dc61f604f098f1bc7e08" integrity sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw== @@ -60,6 +65,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.0.tgz#a7d0c172e0d814974bad5aa77ace543b97917f15" + integrity sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ== + dependencies: + "@babel/types" "^7.15.0" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz#7bf478ec3b71726d56a8ca5775b046fc29879e61" @@ -75,7 +89,17 @@ "@babel/helper-explode-assignable-expression" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.14.5": +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz#973df8cbd025515f3ff25db0c05efc704fa79818" + integrity sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A== + dependencies: + "@babel/compat-data" "^7.15.0" + "@babel/helper-validator-option" "^7.14.5" + browserslist "^4.16.6" + semver "^6.3.0" + +"@babel/helper-compilation-targets@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz#7a99c5d0967911e972fe2c3411f7d5b498498ecf" integrity sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== @@ -85,7 +109,19 @@ browserslist "^4.16.6" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.14.6": +"@babel/helper-create-class-features-plugin@^7.14.5": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.0.tgz#c9a137a4d137b2d0e2c649acf536d7ba1a76c0f7" + integrity sha512-MdmDXgvTIi4heDVX/e9EFfeGpugqm9fobBVg/iioE8kueXrOHdRDe36FAY7SnE9xXLVeYCoJR/gdrBEIHRC83Q== + dependencies: + "@babel/helper-annotate-as-pure" "^7.14.5" + "@babel/helper-function-name" "^7.14.5" + "@babel/helper-member-expression-to-functions" "^7.15.0" + "@babel/helper-optimise-call-expression" "^7.14.5" + "@babel/helper-replace-supers" "^7.15.0" + "@babel/helper-split-export-declaration" "^7.14.5" + +"@babel/helper-create-class-features-plugin@^7.14.6": version "7.14.8" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.8.tgz#a6f8c3de208b1e5629424a9a63567f56501955fc" integrity sha512-bpYvH8zJBWzeqi1o+co8qOrw+EXzQ/0c74gVmY205AWXy9nifHrOg77y+1zwxX5lXE7Icq4sPlSQ4O2kWBrteQ== @@ -156,6 +192,13 @@ dependencies: "@babel/types" "^7.14.5" +"@babel/helper-member-expression-to-functions@^7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz#0ddaf5299c8179f27f37327936553e9bba60990b" + integrity sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg== + dependencies: + "@babel/types" "^7.15.0" + "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" @@ -163,7 +206,21 @@ dependencies: "@babel/types" "^7.14.5" -"@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.14.8": +"@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz#679275581ea056373eddbe360e1419ef23783b08" + integrity sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg== + dependencies: + "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-replace-supers" "^7.15.0" + "@babel/helper-simple-access" "^7.14.8" + "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/helper-validator-identifier" "^7.14.9" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.15.0" + "@babel/types" "^7.15.0" + +"@babel/helper-module-transforms@^7.14.8": version "7.14.8" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.8.tgz#d4279f7e3fd5f4d5d342d833af36d4dd87d7dc49" integrity sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA== @@ -208,7 +265,17 @@ "@babel/traverse" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/helper-simple-access@^7.14.5", "@babel/helper-simple-access@^7.14.8": +"@babel/helper-replace-supers@^7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz#ace07708f5bf746bf2e6ba99572cce79b5d4e7f4" + integrity sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.15.0" + "@babel/helper-optimise-call-expression" "^7.14.5" + "@babel/traverse" "^7.15.0" + "@babel/types" "^7.15.0" + +"@babel/helper-simple-access@^7.14.8": version "7.14.8" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== @@ -234,6 +301,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.8.tgz#32be33a756f29e278a0d644fa08a2c9e0f88a34c" integrity sha512-ZGy6/XQjllhYQrNw/3zfWRwZCTVSiBLZ9DHVZxn9n2gip/7ab8mv2TWlKPIBk26RwedCBoWdjLmn+t9na2Gcow== +"@babel/helper-validator-identifier@^7.14.9": + version "7.14.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" + integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== + "@babel/helper-validator-option@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" @@ -272,6 +344,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.8.tgz#66fd41666b2d7b840bd5ace7f7416d5ac60208d4" integrity sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA== +"@babel/parser@^7.15.0": + version "7.15.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.3.tgz#3416d9bea748052cfcb63dbcc27368105b1ed862" + integrity sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA== + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz#4b467302e1548ed3b1be43beae2cc9cf45e0bb7e" @@ -281,10 +358,10 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" "@babel/plugin-proposal-optional-chaining" "^7.14.5" -"@babel/plugin-proposal-async-generator-functions@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz#784a48c3d8ed073f65adcf30b57bcbf6c8119ace" - integrity sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q== +"@babel/plugin-proposal-async-generator-functions@^7.14.9": + version "7.14.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.9.tgz#7028dc4fa21dc199bbacf98b39bab1267d0eaf9a" + integrity sha512-d1lnh+ZnKrFKwtTYdw320+sQWCTwgkB9fmUhNXRADA4akR6wLjaruSGnIEUjpt9HCOwTr4ynFTKu19b7rFRpmw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/helper-remap-async-to-generator" "^7.14.5" @@ -568,16 +645,16 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-block-scoping@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz#8cc63e61e50f42e078e6f09be775a75f23ef9939" - integrity sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw== + version "7.15.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf" + integrity sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz#0e98e82097b38550b03b483f9b51a78de0acb2cf" - integrity sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA== +"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.14.9": + version "7.14.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.9.tgz#2a391ffb1e5292710b00f2e2c210e1435e7d449f" + integrity sha512-NfZpTcxU3foGWbl4wxmZ35mTsYJy8oQocbeIMoDAGGFarAmSQlL+LWMkDx/tj6pNotpbX3rltIA4dprgAPOq5A== dependencies: "@babel/helper-annotate-as-pure" "^7.14.5" "@babel/helper-function-name" "^7.14.5" @@ -669,14 +746,14 @@ "@babel/helper-plugin-utils" "^7.14.5" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz#7aaee0ea98283de94da98b28f8c35701429dad97" - integrity sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A== +"@babel/plugin-transform-modules-commonjs@^7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.0.tgz#3305896e5835f953b5cdb363acd9e8c2219a5281" + integrity sha512-3H/R9s8cXcOGE8kgMlmjYYC9nqr5ELiPkJn4q0mypBrjhYQoc+5/Maq69vV4xRPWnkzZuwJPf5rArxpB/35Cig== dependencies: - "@babel/helper-module-transforms" "^7.14.5" + "@babel/helper-module-transforms" "^7.15.0" "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.14.5" + "@babel/helper-simple-access" "^7.14.8" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-systemjs@^7.14.5": @@ -698,10 +775,10 @@ "@babel/helper-module-transforms" "^7.14.5" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-named-capturing-groups-regex@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.7.tgz#60c06892acf9df231e256c24464bfecb0908fd4e" - integrity sha512-DTNOTaS7TkW97xsDMrp7nycUVh6sn/eq22VaxWfEdzuEbRsiaOU0pqU7DlyUGHVsbQbSghvjKRpEl+nUCKGQSg== +"@babel/plugin-transform-named-capturing-groups-regex@^7.14.9": + version "7.14.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz#c68f5c5d12d2ebaba3762e57c2c4f6347a46e7b2" + integrity sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.14.5" @@ -749,9 +826,9 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-runtime@^7.12.1": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.5.tgz#30491dad49c6059f8f8fa5ee8896a0089e987523" - integrity sha512-fPMBhh1AV8ZyneiCIA+wYYUH1arzlXR1UMcApjvchDhfKxhy2r2lReJv8uHEyihi4IFIGlr1Pdx7S5fkESDQsg== + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.0.tgz#d3aa650d11678ca76ce294071fda53d7804183b3" + integrity sha512-sfHYkLGjhzWTq6xsuQ01oEsUYjkHRux9fW1iUA68dC7Qd8BS1Unq4aZ8itmQp95zUzIcyR2EbNMTzAicFj+guw== dependencies: "@babel/helper-module-imports" "^7.14.5" "@babel/helper-plugin-utils" "^7.14.5" @@ -821,16 +898,16 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/preset-env@^7.12.7": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.8.tgz#254942f5ca80ccabcfbb2a9f524c74bca574005b" - integrity sha512-a9aOppDU93oArQ51H+B8M1vH+tayZbuBqzjOhntGetZVa+4tTu5jp+XTwqHGG2lxslqomPYVSjIxQkFwXzgnxg== + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.0.tgz#e2165bf16594c9c05e52517a194bf6187d6fe464" + integrity sha512-FhEpCNFCcWW3iZLg0L2NPE9UerdtsCR6ZcsGHUX6Om6kbCQeL5QZDqFDmeNHC6/fy6UH3jEge7K4qG5uC9In0Q== dependencies: - "@babel/compat-data" "^7.14.7" - "@babel/helper-compilation-targets" "^7.14.5" + "@babel/compat-data" "^7.15.0" + "@babel/helper-compilation-targets" "^7.15.0" "@babel/helper-plugin-utils" "^7.14.5" "@babel/helper-validator-option" "^7.14.5" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-async-generator-functions" "^7.14.7" + "@babel/plugin-proposal-async-generator-functions" "^7.14.9" "@babel/plugin-proposal-class-properties" "^7.14.5" "@babel/plugin-proposal-class-static-block" "^7.14.5" "@babel/plugin-proposal-dynamic-import" "^7.14.5" @@ -863,7 +940,7 @@ "@babel/plugin-transform-async-to-generator" "^7.14.5" "@babel/plugin-transform-block-scoped-functions" "^7.14.5" "@babel/plugin-transform-block-scoping" "^7.14.5" - "@babel/plugin-transform-classes" "^7.14.5" + "@babel/plugin-transform-classes" "^7.14.9" "@babel/plugin-transform-computed-properties" "^7.14.5" "@babel/plugin-transform-destructuring" "^7.14.7" "@babel/plugin-transform-dotall-regex" "^7.14.5" @@ -874,10 +951,10 @@ "@babel/plugin-transform-literals" "^7.14.5" "@babel/plugin-transform-member-expression-literals" "^7.14.5" "@babel/plugin-transform-modules-amd" "^7.14.5" - "@babel/plugin-transform-modules-commonjs" "^7.14.5" + "@babel/plugin-transform-modules-commonjs" "^7.15.0" "@babel/plugin-transform-modules-systemjs" "^7.14.5" "@babel/plugin-transform-modules-umd" "^7.14.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.9" "@babel/plugin-transform-new-target" "^7.14.5" "@babel/plugin-transform-object-super" "^7.14.5" "@babel/plugin-transform-parameters" "^7.14.5" @@ -892,11 +969,11 @@ "@babel/plugin-transform-unicode-escapes" "^7.14.5" "@babel/plugin-transform-unicode-regex" "^7.14.5" "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.14.8" + "@babel/types" "^7.15.0" babel-plugin-polyfill-corejs2 "^0.2.2" babel-plugin-polyfill-corejs3 "^0.2.2" babel-plugin-polyfill-regenerator "^0.2.2" - core-js-compat "^3.15.0" + core-js-compat "^3.16.0" semver "^6.3.0" "@babel/preset-modules@^0.1.4": @@ -920,9 +997,9 @@ "@babel/plugin-transform-typescript" "^7.14.5" "@babel/runtime@^7.8.4": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.8.tgz#7119a56f421018852694290b9f9148097391b446" - integrity sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg== + version "7.15.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.3.tgz#2e1c2880ca118e5b2f9988322bd8a7656a32502b" + integrity sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA== dependencies: regenerator-runtime "^0.13.4" @@ -935,7 +1012,7 @@ "@babel/parser" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.14.8": +"@babel/traverse@^7.1.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.14.8": version "7.14.8" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.8.tgz#c0253f02677c5de1a8ff9df6b0aacbec7da1a8ce" integrity sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg== @@ -950,7 +1027,22 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/traverse@^7.13.0", "@babel/traverse@^7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.0.tgz#4cca838fd1b2a03283c1f38e141f639d60b3fc98" + integrity sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.15.0" + "@babel/helper-function-name" "^7.14.5" + "@babel/helper-hoist-variables" "^7.14.5" + "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/parser" "^7.15.0" + "@babel/types" "^7.15.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3": version "7.14.8" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.8.tgz#38109de8fcadc06415fbd9b74df0065d4d41c728" integrity sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q== @@ -958,6 +1050,14 @@ "@babel/helper-validator-identifier" "^7.14.8" to-fast-properties "^2.0.0" +"@babel/types@^7.15.0", "@babel/types@^7.4.4": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd" + integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ== + dependencies: + "@babel/helper-validator-identifier" "^7.14.9" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1707,6 +1807,17 @@ browserslist@^4.16.6: escalade "^3.1.1" node-releases "^1.1.71" +browserslist@^4.16.7: + version "4.16.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.7.tgz#108b0d1ef33c4af1b587c54f390e7041178e4335" + integrity sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA== + dependencies: + caniuse-lite "^1.0.30001248" + colorette "^1.2.2" + electron-to-chromium "^1.3.793" + escalade "^3.1.1" + node-releases "^1.1.73" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -1775,6 +1886,11 @@ caniuse-lite@^1.0.30001219: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz#26ab45e340f155ea5da2920dadb76a533cb8ebce" integrity sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw== +caniuse-lite@^1.0.30001248: + version "1.0.30001251" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001251.tgz#6853a606ec50893115db660f82c094d18f096d85" + integrity sha512-HOe1r+9VkU4TFmnU70z+r7OLmtR+/chB1rdcJUeQlAinjEeb0cKL20tlAtOagNZhbrtLnCvV19B4FmF1rgzl6A== + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -1978,18 +2094,18 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.14.0, core-js-compat@^3.15.0: - version "3.16.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.16.0.tgz#fced4a0a534e7e02f7e084bff66c701f8281805f" - integrity sha512-5D9sPHCdewoUK7pSUPfTF7ZhLh8k9/CoJXWUEo+F1dZT5Z1DVgcuRqUKhjeKW+YLb8f21rTFgWwQJiNw1hoZ5Q== +core-js-compat@^3.14.0, core-js-compat@^3.16.0: + version "3.16.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.16.1.tgz#c44b7caa2dcb94b673a98f27eee1c8312f55bc2d" + integrity sha512-NHXQXvRbd4nxp9TEmooTJLUf94ySUG6+DSsscBpTftN1lQLQ4LjnWvc7AoIo4UjDsFF3hB8Uh5LLCRRdaiT5MQ== dependencies: - browserslist "^4.16.6" + browserslist "^4.16.7" semver "7.0.0" core-js@^3.7.0: - version "3.16.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.16.0.tgz#1d46fb33720bc1fa7f90d20431f36a5540858986" - integrity sha512-5+5VxRFmSf97nM8Jr2wzOwLqRo6zphH2aX+7KsAUONObyzakDNq2G/bgbhinxB4PoV9L3aXQYhiDKyIKWd2c8g== + version "3.16.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.16.1.tgz#f4485ce5c9f3c6a7cb18fa80488e08d362097249" + integrity sha512-AAkP8i35EbefU+JddyWi12AWE9f2N/qr/pwnDtWz4nyUIBGMJPX99ANFFRSw6FefM374lDujdtLDyhN2A/btHw== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -2202,6 +2318,11 @@ electron-to-chromium@^1.3.723: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.791.tgz#e38f325ff22470bdcff34409d58c0baf9c2e3e93" integrity sha512-Tdx7w1fZpeWOOBluK+kXTAKCXyc79K65RB6Zp0+sPSZZhDjXlrxfGlXrlMGVVQUrKCyEZFQs1UBBLNz5IdbF0g== +electron-to-chromium@^1.3.793: + version "1.3.805" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.805.tgz#a0873393a3b027ec60bdaf22a19c4946688cf941" + integrity sha512-uUJF59M6pNSRHQaXwdkaNB4BhSQ9lldRdG1qCjlrAFkynPGDc5wPoUcYEQQeQGmKyAWJPvGkYAWmtVrxWmDAkg== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -3958,6 +4079,11 @@ node-releases@^1.1.71: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== +node-releases@^1.1.73: + version "1.1.74" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.74.tgz#e5866488080ebaa70a93b91144ccde06f3c3463e" + integrity sha512-caJBVempXZPepZoZAPCWRTNxYQ+xtG/KAi4ozTA5A+nJ7IU+kLQCbqaUjb5Rwy14M9upBWiQ4NutcmW04LJSRw== + nodemon@^2.0.1: version "2.0.12" resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.12.tgz#5dae4e162b617b91f1873b3bfea215dd71e144d5" diff --git a/packages/medusa/.gitignore b/packages/medusa/.gitignore index 5b0adf937e..874c6c69d3 100644 --- a/packages/medusa/.gitignore +++ b/packages/medusa/.gitignore @@ -3,4 +3,4 @@ node_modules .DS_store .env* .env - +*.sql diff --git a/packages/medusa/package.json b/packages/medusa/package.json index 2032e530a2..5714933772 100644 --- a/packages/medusa/package.json +++ b/packages/medusa/package.json @@ -27,6 +27,7 @@ "medusa-interfaces": "^1.1.21", "nodemon": "^2.0.1", "prettier": "^1.19.1", + "sqlite3": "^5.0.2", "supertest": "^4.0.2" }, "scripts": { @@ -60,6 +61,7 @@ "fs-exists-cached": "^1.0.0", "glob": "^7.1.6", "ioredis": "^4.17.3", + "ioredis-mock": "^5.6.0", "joi": "^17.3.0", "joi-objectid": "^3.0.1", "jsonwebtoken": "^8.5.1", @@ -78,6 +80,7 @@ "request-ip": "^2.1.3", "resolve-cwd": "^3.0.0", "scrypt-kdf": "^2.0.1", + "sqlite3": "^5.0.2", "ulid": "^2.3.0", "uuid": "^8.3.1", "winston": "^3.2.1" diff --git a/packages/medusa/src/api/middlewares/error-handler.js b/packages/medusa/src/api/middlewares/error-handler.js index 2fc414f012..edb315b06e 100644 --- a/packages/medusa/src/api/middlewares/error-handler.js +++ b/packages/medusa/src/api/middlewares/error-handler.js @@ -1,16 +1,39 @@ import { MedusaError } from "medusa-core-utils" +const QUERY_RUNNER_RELEASED = "QueryRunnerAlreadyReleasedError" +const TRANSACTION_STARTED = "TransactionAlreadyStartedError" +const TRANSACTION_NOT_STARTED = "TransactionNotStartedError" + +const API_ERROR = "api_error" +const INVALID_REQUEST_ERROR = "invalid_request_error" +const INVALID_STATE_ERROR = "invalid_state_error" + export default () => { return (err, req, res, next) => { const logger = req.scope.resolve("logger") - logger.error(err.message) + logger.error(err) - console.error(err) + const errorType = err.type || err.name + + const errObj = { + code: err.code, + type: err.type, + message: err.message, + } let statusCode = 500 - switch (err.name) { - case MedusaError.Types.DUPLICATE_ERROR: + switch (errorType) { + case QUERY_RUNNER_RELEASED: + case TRANSACTION_STARTED: + case TRANSACTION_NOT_STARTED: statusCode = 409 + errObj.code = INVALID_STATE_ERROR + errObj.message = + "The request conflicted with another request. You may retry the request with the provided Idempotency-Key." + break + case MedusaError.Types.DUPLICATE_ERROR: + statusCode = 402 + errObj.code = INVALID_REQUEST_ERROR break case MedusaError.Types.NOT_ALLOWED: case MedusaError.Types.INVALID_DATA: @@ -21,14 +44,12 @@ export default () => { break case MedusaError.Types.DB_ERROR: statusCode = 500 + errObj.code = API_ERROR break default: break } - res.status(statusCode).json({ - name: err.name, - message: err.message, - }) + res.status(statusCode).json(errObj) } } diff --git a/packages/medusa/src/api/routes/admin/collections/__tests__/create-collection.js b/packages/medusa/src/api/routes/admin/collections/__tests__/create-collection.js index 2e3b2b750a..7ca2c08bac 100644 --- a/packages/medusa/src/api/routes/admin/collections/__tests__/create-collection.js +++ b/packages/medusa/src/api/routes/admin/collections/__tests__/create-collection.js @@ -58,7 +58,7 @@ describe("POST /admin/collections", () => { }) it("returns error details", () => { - expect(subject.body.name).toEqual("invalid_data") + expect(subject.body.type).toEqual("invalid_data") expect(subject.body.message[0].message).toEqual(`"title" is required`) }) }) diff --git a/packages/medusa/src/api/routes/admin/products/__tests__/create-product.js b/packages/medusa/src/api/routes/admin/products/__tests__/create-product.js index c69a7bbf37..c3aa01cddc 100644 --- a/packages/medusa/src/api/routes/admin/products/__tests__/create-product.js +++ b/packages/medusa/src/api/routes/admin/products/__tests__/create-product.js @@ -135,7 +135,7 @@ describe("POST /admin/products", () => { }) it("returns error details", () => { - expect(subject.body.name).toEqual("invalid_data") + expect(subject.body.type).toEqual("invalid_data") expect(subject.body.message[0].message).toEqual(`"title" is required`) }) }) diff --git a/packages/medusa/src/api/routes/store/carts/add-shipping-method.js b/packages/medusa/src/api/routes/store/carts/add-shipping-method.js index 731b4ba9c0..fc3b8090ee 100644 --- a/packages/medusa/src/api/routes/store/carts/add-shipping-method.js +++ b/packages/medusa/src/api/routes/store/carts/add-shipping-method.js @@ -43,15 +43,14 @@ export default async (req, res) => { const cartService = req.scope.resolve("cartService") await manager.transaction(async m => { - await cartService - .withTransaction(m) - .addShippingMethod(id, value.option_id, value.data) - const updated = await cartService.withTransaction(m).retrieve(id, { + const txCartService = cartService.withTransaction(m) + await txCartService.addShippingMethod(id, value.option_id, value.data) + const updated = await txCartService.retrieve(id, { relations: ["payment_sessions"], }) if (updated.payment_sessions?.length) { - await cartService.withTransaction(m).setPaymentSessions(id) + await txCartService.setPaymentSessions(id) } }) diff --git a/packages/medusa/src/api/routes/store/carts/create-line-item.js b/packages/medusa/src/api/routes/store/carts/create-line-item.js index 4b034b53d3..3d4dfc8482 100644 --- a/packages/medusa/src/api/routes/store/carts/create-line-item.js +++ b/packages/medusa/src/api/routes/store/carts/create-line-item.js @@ -43,27 +43,27 @@ export default async (req, res) => { const lineItemService = req.scope.resolve("lineItemService") const cartService = req.scope.resolve("cartService") - let cart = await cartService.retrieve(id) - await manager.transaction(async m => { - const line = await lineItemService.generate( - value.variant_id, - cart.region_id, - value.quantity, - { metadata: value.metadata } - ) - await cartService.withTransaction(m).addLineItem(id, line) + const txCartService = cartService.withTransaction(m) + const cart = await txCartService.retrieve(id) - const updated = await cartService.withTransaction(m).retrieve(id, { + const line = await lineItemService + .withTransaction(m) + .generate(value.variant_id, cart.region_id, value.quantity, { + metadata: value.metadata, + }) + await txCartService.addLineItem(id, line) + + const updated = await txCartService.retrieve(id, { relations: ["payment_sessions"], }) if (updated.payment_sessions?.length) { - await cartService.withTransaction(m).setPaymentSessions(id) + await txCartService.setPaymentSessions(id) } }) - cart = await cartService.retrieve(id, { + const cart = await cartService.retrieve(id, { select: defaultFields, relations: defaultRelations, }) diff --git a/packages/medusa/src/api/routes/store/customers/__tests__/create-customer.js b/packages/medusa/src/api/routes/store/customers/__tests__/create-customer.js index d42d3ba41b..939961163b 100644 --- a/packages/medusa/src/api/routes/store/customers/__tests__/create-customer.js +++ b/packages/medusa/src/api/routes/store/customers/__tests__/create-customer.js @@ -61,7 +61,7 @@ describe("POST /store/customers", () => { }) it("returns product decorated", () => { - expect(subject.body.name).toEqual("invalid_data") + expect(subject.body.type).toEqual("invalid_data") }) }) }) diff --git a/packages/medusa/src/commands/develop.js b/packages/medusa/src/commands/develop.js index 0990855685..acc92914bc 100644 --- a/packages/medusa/src/commands/develop.js +++ b/packages/medusa/src/commands/develop.js @@ -1,3 +1,4 @@ +import path from "path" import { spawn, execSync } from "child_process" import chokidar from "chokidar" @@ -9,12 +10,13 @@ export default async function({ port, directory }) { args.shift() args.shift() - execSync("babel src -d dist", { + const babelPath = path.join(directory, "node_modules", ".bin", "babel") + execSync(`${babelPath} src -d dist`, { cwd: directory, stdio: ["ignore", process.stdout, process.stderr], }) - const cliPath = "./node_modules/@medusajs/medusa/cli.js" + const cliPath = path.join(directory, "node_modules", ".bin", "medusa") let child = spawn(cliPath, [`start`, ...args], { cwd: directory, env: process.env, @@ -26,7 +28,7 @@ export default async function({ port, directory }) { Logger.info(`${f} changed: restarting...`) child.kill("SIGINT") - execSync(`babel src -d dist`, { + execSync(`./node_modules/.bin/babel src -d dist`, { cwd: directory, stdio: ["pipe", process.stdout, process.stderr], }) diff --git a/packages/medusa/src/commands/seed.js b/packages/medusa/src/commands/seed.js index c580202367..df92b2ff40 100644 --- a/packages/medusa/src/commands/seed.js +++ b/packages/medusa/src/commands/seed.js @@ -27,11 +27,13 @@ const t = async function({ directory, migrate, seedFile }) { } } - if (migrate) { + const { configModule } = getConfigFile(directory, `medusa-config`) + const dbType = configModule.projectConfig.database_type + if (migrate && dbType !== "sqlite") { const migrationDirs = getMigrations(directory) - const { configModule } = getConfigFile(directory, `medusa-config`) const connection = await createConnection({ type: configModule.projectConfig.database_type, + database: configModule.projectConfig.database_database, url: configModule.projectConfig.database_url, extra: configModule.projectConfig.database_extra || {}, migrations: migrationDirs, diff --git a/packages/medusa/src/commands/user.js b/packages/medusa/src/commands/user.js index f30d404f55..07bb36cb78 100644 --- a/packages/medusa/src/commands/user.js +++ b/packages/medusa/src/commands/user.js @@ -2,6 +2,7 @@ import "core-js/stable" import "regenerator-runtime/runtime" import express from "express" +import { track } from "medusa-telemetry" import loaders from "../loaders" diff --git a/packages/medusa/src/loaders/database.js b/packages/medusa/src/loaders/database.js index ca04478e84..df6079c59a 100644 --- a/packages/medusa/src/loaders/database.js +++ b/packages/medusa/src/loaders/database.js @@ -1,18 +1,27 @@ -import { createConnection, Connection, DefaultNamingStrategy } from "typeorm" +import { createConnection } from "typeorm" import { ShortenedNamingStrategy } from "../utils/naming-strategy" export default async ({ container, configModule }) => { const entities = container.resolve("db_entities") + const isSqlite = configModule.projectConfig.database_type === "sqlite" + const connection = await createConnection({ type: configModule.projectConfig.database_type, url: configModule.projectConfig.database_url, + database: configModule.projectConfig.database_database, extra: configModule.projectConfig.database_extra || {}, entities, namingStrategy: new ShortenedNamingStrategy(), logging: configModule.projectConfig.database_logging || false, }) + if (isSqlite) { + await connection.query(`PRAGMA foreign_keys = OFF`) + await connection.synchronize() + await connection.query(`PRAGMA foreign_keys = ON`) + } + return connection } diff --git a/packages/medusa/src/loaders/defaults.js b/packages/medusa/src/loaders/defaults.js index 620fbeee12..2cabe9c3ee 100644 --- a/packages/medusa/src/loaders/defaults.js +++ b/packages/medusa/src/loaders/defaults.js @@ -1,3 +1,6 @@ +import { currencies } from "../utils/currencies" +import { countries } from "../utils/countries" + const silentResolution = (container, name, logger) => { try { const resolved = container.resolve(name) @@ -29,11 +32,54 @@ const silentResolution = (container, name, logger) => { export default async ({ container }) => { const storeService = container.resolve("storeService") + const currencyRepository = container.resolve("currencyRepository") + const countryRepository = container.resolve("countryRepository") const profileService = container.resolve("shippingProfileService") const logger = container.resolve("logger") const entityManager = container.resolve("manager") + await entityManager.transaction(async manager => { + const countryRepo = manager.getCustomRepository(countryRepository) + const hasCountries = await countryRepo.findOne() + if (!hasCountries) { + for (const c of countries) { + const query = `INSERT INTO "country" ("iso_2", "iso_3", "num_code", "name", "display_name") VALUES ($1, $2, $3, $4, $5)` + + const iso2 = c.alpha2.toLowerCase() + const iso3 = c.alpha3.toLowerCase() + const numeric = c.numeric + const name = c.name.toUpperCase() + const display = c.name + + await manager.queryRunner.query(query, [ + iso2, + iso3, + numeric, + name, + display, + ]) + } + } + }) + + await entityManager.transaction(async manager => { + const currencyRepo = manager.getCustomRepository(currencyRepository) + const hasCurrencies = await currencyRepo.findOne() + if (!hasCurrencies) { + for (const [_, c] of Object.entries(currencies)) { + const query = `INSERT INTO "currency" ("code", "symbol", "symbol_native", "name") VALUES ($1, $2, $3, $4)` + + const code = c.code.toLowerCase() + const sym = c.symbol + const nat = c.symbol_native + const name = c.name + + await manager.queryRunner.query(query, [code, sym, nat, name]) + } + } + }) + await entityManager.transaction(async manager => { await storeService.withTransaction(manager).create() diff --git a/packages/medusa/src/loaders/express.js b/packages/medusa/src/loaders/express.js index ff1c39dd4e..a8a1ced5fc 100644 --- a/packages/medusa/src/loaders/express.js +++ b/packages/medusa/src/loaders/express.js @@ -1,4 +1,3 @@ -import express from "express" import session from "express-session" import cookieParser from "cookie-parser" import morgan from "morgan" @@ -18,8 +17,24 @@ export default async ({ app, configModule }) => { sameSite = "none" } - const RedisStore = createStore(session) - const redisClient = redis.createClient(configModule.projectConfig.redis_url) + let sessionOpts = { + resave: true, + saveUninitialized: true, + cookieName: "session", + proxy: true, + secret: config.cookieSecret, + cookie: { + sameSite, + secure, + maxAge: 10 * 60 * 60 * 1000, + }, + } + + if (configModule.projectConfig.redis_url) { + const RedisStore = createStore(session) + const redisClient = redis.createClient(configModule.projectConfig.redis_url) + sessionOpts.store = new RedisStore({ client: redisClient }) + } app.set("trust proxy", 1) app.use( @@ -28,21 +43,7 @@ export default async ({ app, configModule }) => { }) ) app.use(cookieParser()) - app.use( - session({ - store: new RedisStore({ client: redisClient }), - resave: true, - saveUninitialized: true, - cookieName: "session", - proxy: true, - secret: config.cookieSecret, - cookie: { - sameSite, - secure, - maxAge: 10 * 60 * 60 * 1000, - }, - }) - ) + app.use(session(sessionOpts)) app.get("/health", (req, res) => { res.status(200).send("OK") diff --git a/packages/medusa/src/loaders/index.js b/packages/medusa/src/loaders/index.js index 40dc9c9fd9..fe40a35b72 100644 --- a/packages/medusa/src/loaders/index.js +++ b/packages/medusa/src/loaders/index.js @@ -1,11 +1,11 @@ import { createContainer, asValue } from "awilix" -import Redis from "ioredis" import requestIp from "request-ip" import { getManager } from "typeorm" import { getConfigFile } from "medusa-core-utils" import { track } from "medusa-telemetry" import expressLoader from "./express" +import redisLoader from "./redis" import databaseLoader from "./database" import repositoriesLoader from "./repositories" import apiLoader from "./api" @@ -18,10 +18,7 @@ import defaultsLoader from "./defaults" import Logger from "./logger" export default async ({ directory: rootDirectory, expressApp }) => { - const { configModule, configFilePath } = getConfigFile( - rootDirectory, - `medusa-config` - ) + const { configModule } = getConfigFile(rootDirectory, `medusa-config`) const container = createContainer() container.registerAdd = function(name, registration) { @@ -40,10 +37,6 @@ export default async ({ directory: rootDirectory, expressApp }) => { return this }.bind(container) - // Economical way of dealing with redis clients - const client = new Redis(configModule.projectConfig.redis_url) - const subscriber = new Redis(configModule.projectConfig.redis_url) - // Add additional information to context of request expressApp.use((req, res, next) => { const ipAddress = requestIp.getClientIp(req) @@ -57,11 +50,11 @@ export default async ({ directory: rootDirectory, expressApp }) => { }) container.register({ - redisClient: asValue(client), - redisSubscriber: asValue(subscriber), logger: asValue(Logger), }) + await redisLoader({ container, configModule, logger: Logger }) + const modelsActivity = Logger.activity("Initializing models") track("MODELS_INIT_STARTED") modelsLoader({ container, activityId: modelsActivity }) diff --git a/packages/medusa/src/loaders/redis.js b/packages/medusa/src/loaders/redis.js new file mode 100644 index 0000000000..36abe1a6b1 --- /dev/null +++ b/packages/medusa/src/loaders/redis.js @@ -0,0 +1,34 @@ +import { asValue } from "awilix" +import RealRedis from "ioredis" +import FakeRedis from "ioredis-mock" + +const redisLoader = async ({ container, configModule, logger }) => { + if (configModule.projectConfig.redis_url) { + // Economical way of dealing with redis clients + const client = new RealRedis(configModule.projectConfig.redis_url) + const subscriber = new RealRedis(configModule.projectConfig.redis_url) + + container.register({ + redisClient: asValue(client), + redisSubscriber: asValue(subscriber), + }) + } else { + if (process.env.NODE_ENV === "production") { + logger.warn( + `No Redis url was provided - using Medusa in production without a proper Redis instance is not recommended` + ) + } + + logger.info("Using fake Redis") + + // Economical way of dealing with redis clients + const client = new FakeRedis() + + container.register({ + redisClient: asValue(client), + redisSubscriber: asValue(client), + }) + } +} + +export default redisLoader diff --git a/packages/medusa/src/models/address.ts b/packages/medusa/src/models/address.ts index fb83c24b31..f6e3ad3155 100644 --- a/packages/medusa/src/models/address.ts +++ b/packages/medusa/src/models/address.ts @@ -39,6 +39,7 @@ import { JoinColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Customer } from "./customer" import { Country } from "./country" @@ -90,16 +91,16 @@ export class Address { @Column({ nullable: true }) phone: string - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/cart.ts b/packages/medusa/src/models/cart.ts index 3190685171..1786681024 100644 --- a/packages/medusa/src/models/cart.ts +++ b/packages/medusa/src/models/cart.ts @@ -102,6 +102,7 @@ import { BeforeUpdate, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Region } from "./region" import { Address } from "./address" @@ -223,30 +224,30 @@ export class Cart { ) shipping_methods: ShippingMethod[] - @Column({ type: "enum", enum: CartType, default: "default" }) + @DbAwareColumn({ type: "enum", enum: CartType, default: "default" }) type: boolean - @Column({ type: "timestamptz", nullable: true }) + @Column({ type: resolveDbType("timestamptz"), nullable: true }) completed_at: Date - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @Column({ nullable: true }) idempotency_key: string - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) context: any - + // Total fields shipping_total: number discount_total: number diff --git a/packages/medusa/src/models/claim-image.ts b/packages/medusa/src/models/claim-image.ts index 23a65ceccc..e1256236b4 100644 --- a/packages/medusa/src/models/claim-image.ts +++ b/packages/medusa/src/models/claim-image.ts @@ -14,6 +14,8 @@ import { ulid } from "ulid" import { ClaimItem } from "./claim-item" +import { DbAwareColumn, resolveDbType } from "../utils/db-aware-column" + @Entity() export class ClaimImage { @PrimaryColumn() @@ -33,16 +35,16 @@ export class ClaimImage { @Column() url: string - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/claim-item.ts b/packages/medusa/src/models/claim-item.ts index 58b66391a7..df24db7804 100644 --- a/packages/medusa/src/models/claim-item.ts +++ b/packages/medusa/src/models/claim-item.ts @@ -14,6 +14,7 @@ import { JoinTable, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { LineItem } from "./line-item" import { ClaimImage } from "./claim-image" @@ -67,7 +68,7 @@ export class ClaimItem { @JoinColumn({ name: "variant_id" }) variant: ProductVariant - @Column({ type: "enum", enum: ClaimReason }) + @DbAwareColumn({ type: "enum", enum: ClaimReason }) reason: ClaimReason @Column({ nullable: true }) @@ -90,16 +91,16 @@ export class ClaimItem { }) tags: ClaimTag[] - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/claim-order.ts b/packages/medusa/src/models/claim-order.ts index c5c8ec430b..4a497f63c5 100644 --- a/packages/medusa/src/models/claim-order.ts +++ b/packages/medusa/src/models/claim-order.ts @@ -13,6 +13,7 @@ import { JoinColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Fulfillment } from "./fulfillment" import { LineItem } from "./line-item" @@ -50,14 +51,14 @@ export class ClaimOrder { @PrimaryColumn() id: string - @Column({ + @DbAwareColumn({ type: "enum", enum: ClaimPaymentStatus, default: ClaimPaymentStatus.NA, }) payment_status: ClaimPaymentStatus - @Column({ + @DbAwareColumn({ type: "enum", enum: ClaimFulfillmentStatus, default: ClaimFulfillmentStatus.NOT_FULFILLED, @@ -77,7 +78,7 @@ export class ClaimOrder { ) additional_items: LineItem[] - @Column({ type: "enum", enum: ClaimType }) + @DbAwareColumn({ type: "enum", enum: ClaimType }) type: ClaimType @Index() @@ -122,22 +123,22 @@ export class ClaimOrder { @Column({ type: "int", nullable: true }) refund_amount: number - @Column({ type: "timestamptz", nullable: true }) + @Column({ type: resolveDbType("timestamptz"), nullable: true }) canceled_at: Date - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "boolean", nullable: true}) + @Column({ type: "boolean", nullable: true }) no_notification: Boolean - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @Column({ nullable: true }) diff --git a/packages/medusa/src/models/claim-tag.ts b/packages/medusa/src/models/claim-tag.ts index d9bba794ae..59075deda5 100644 --- a/packages/medusa/src/models/claim-tag.ts +++ b/packages/medusa/src/models/claim-tag.ts @@ -12,6 +12,7 @@ import { JoinColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" @Entity() export class ClaimTag { @@ -22,16 +23,16 @@ export class ClaimTag { @Column() value: string - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/customer.ts b/packages/medusa/src/models/customer.ts index 8591613f22..4a6cdcdea1 100644 --- a/packages/medusa/src/models/customer.ts +++ b/packages/medusa/src/models/customer.ts @@ -12,6 +12,7 @@ import { JoinColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Address } from "./address" import { Order } from "./order" @@ -60,16 +61,16 @@ export class Customer { ) orders: Order[] - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/discount-rule.ts b/packages/medusa/src/models/discount-rule.ts index 1e86542892..0ea2d46296 100644 --- a/packages/medusa/src/models/discount-rule.ts +++ b/packages/medusa/src/models/discount-rule.ts @@ -11,6 +11,7 @@ import { JoinTable, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Product } from "./product" @@ -33,7 +34,7 @@ export class DiscountRule { @Column({ nullable: true }) description: string - @Column({ + @DbAwareColumn({ type: "enum", enum: DiscountRuleType, }) @@ -42,7 +43,7 @@ export class DiscountRule { @Column() value: number - @Column({ + @DbAwareColumn({ type: "enum", enum: AllocationType, nullable: true, @@ -63,16 +64,16 @@ export class DiscountRule { }) valid_for: Product[] - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/discount.ts b/packages/medusa/src/models/discount.ts index 21b2e1787e..34c033a4df 100644 --- a/packages/medusa/src/models/discount.ts +++ b/packages/medusa/src/models/discount.ts @@ -14,6 +14,7 @@ import { JoinColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { DiscountRule } from "./discount-rule" import { Region } from "./region" @@ -48,10 +49,13 @@ export class Discount { @JoinColumn({ name: "parent_discount_id" }) parent_discount: Discount - @Column({ type: "timestamptz", default: () => "CURRENT_TIMESTAMP" }) + @Column({ + type: resolveDbType("timestamptz"), + default: () => "CURRENT_TIMESTAMP", + }) starts_at: Date - @Column({ type: "timestamptz", nullable: true }) + @Column({ type: resolveDbType("timestamptz"), nullable: true }) ends_at: Date @ManyToMany(() => Region, { cascade: true }) @@ -74,16 +78,16 @@ export class Discount { @Column({ default: 0 }) usage_count: number - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/draft-order.ts b/packages/medusa/src/models/draft-order.ts index 7c49919069..02ed2d3b54 100644 --- a/packages/medusa/src/models/draft-order.ts +++ b/packages/medusa/src/models/draft-order.ts @@ -11,6 +11,12 @@ import { JoinColumn, } from "typeorm" import { ulid } from "ulid" +import { + resolveDbType, + resolveDbGenerationStrategy, + DbAwareColumn, +} from "../utils/db-aware-column" +import { manualAutoIncrement } from "../utils/manual-auto-increment" import { Cart } from "./cart" import { Order } from "./order" @@ -25,12 +31,12 @@ export class DraftOrder { @PrimaryColumn() id: string - @Column({ type: "enum", enum: DraftOrderStatus, default: "open" }) + @DbAwareColumn({ type: "enum", enum: DraftOrderStatus, default: "open" }) status: DraftOrderStatus @Index() @Column() - @Generated("increment") + @Generated(resolveDbGenerationStrategy("increment")) display_id: number @Index() @@ -49,32 +55,37 @@ export class DraftOrder { @JoinColumn({ name: "order_id" }) order: Order - @Column({ nullable: true, type: "timestamptz" }) + @Column({ nullable: true, type: resolveDbType("timestamptz") }) canceled_at: Date - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @Column({ type: "timestamptz", nullable: true }) + @Column({ type: resolveDbType("timestamptz"), nullable: true }) completed_at: Date - @Column({ nullable: true}) + @Column({ nullable: true }) no_notification_order: boolean - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @Column({ nullable: true }) idempotency_key: string @BeforeInsert() - private beforeInsert() { - if (this.id) return - const id = ulid() - this.id = `dorder_${id}` + private async beforeInsert() { + if (!this.id) { + const id = ulid() + this.id = `dorder_${id}` + } + + if (process.env.NODE_ENV === "development" && !this.display_id) { + this.display_id = await manualAutoIncrement("draft_order") + } } } diff --git a/packages/medusa/src/models/fulfillment.ts b/packages/medusa/src/models/fulfillment.ts index 30fc17986e..bc26330f68 100644 --- a/packages/medusa/src/models/fulfillment.ts +++ b/packages/medusa/src/models/fulfillment.ts @@ -16,6 +16,7 @@ import { JoinTable, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Order } from "./order" import { FulfillmentProvider } from "./fulfillment-provider" @@ -62,7 +63,7 @@ export class Fulfillment { @JoinColumn({ name: "order_id" }) order: Order - @Column({ type: "boolean", nullable: true}) + @Column({ type: "boolean", nullable: true }) no_notification: Boolean @Index() @@ -87,25 +88,25 @@ export class Fulfillment { ) tracking_links: TrackingLink[] - @Column({ type: "jsonb", default: [] }) + @DbAwareColumn({ type: "jsonb", default: [] }) tracking_numbers: string[] - @Column({ type: "jsonb" }) + @DbAwareColumn({ type: "jsonb" }) data: any - @Column({ type: "timestamptz", nullable: true }) + @Column({ type: resolveDbType("timestamptz"), nullable: true }) shipped_at: Date - @Column({ type: "timestamptz", nullable: true }) + @Column({ type: resolveDbType("timestamptz"), nullable: true }) canceled_at: Date - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @Column({ nullable: true }) diff --git a/packages/medusa/src/models/gift-card-transaction.ts b/packages/medusa/src/models/gift-card-transaction.ts index fa63ac5223..2a3b02a8e6 100644 --- a/packages/medusa/src/models/gift-card-transaction.ts +++ b/packages/medusa/src/models/gift-card-transaction.ts @@ -10,6 +10,7 @@ import { JoinColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType } from "../utils/db-aware-column" import { GiftCard } from "./gift-card" import { Order } from "./order" @@ -38,7 +39,7 @@ export class GiftCardTransaction { @Column("int") amount: number - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date @BeforeInsert() diff --git a/packages/medusa/src/models/gift-card.ts b/packages/medusa/src/models/gift-card.ts index 8b763b2dcc..606c2db654 100644 --- a/packages/medusa/src/models/gift-card.ts +++ b/packages/medusa/src/models/gift-card.ts @@ -11,6 +11,7 @@ import { JoinColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Region } from "./region" import { Order } from "./order" @@ -50,21 +51,21 @@ export class GiftCard { is_disabled: boolean @Column({ - type: "timestamptz", + type: resolveDbType("timestamptz"), nullable: true, }) ends_at: Date - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/idempotency-key.ts b/packages/medusa/src/models/idempotency-key.ts index 4bd6ba2ec5..ca940c5e0a 100644 --- a/packages/medusa/src/models/idempotency-key.ts +++ b/packages/medusa/src/models/idempotency-key.ts @@ -7,6 +7,7 @@ import { PrimaryColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" @Entity() export class IdempotencyKey { @@ -17,16 +18,16 @@ export class IdempotencyKey { @Column() idempotency_key: string - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @Column({ type: "timestamptz", nullable: true }) + @DbAwareColumn({ type: "timestamptz", nullable: true }) locked_at: Date @Column({ nullable: true }) request_method: string - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) request_params: any @Column({ nullable: true }) @@ -35,7 +36,7 @@ export class IdempotencyKey { @Column({ type: "int", nullable: true }) response_code: number - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) response_body: any @Column({ default: "started" }) diff --git a/packages/medusa/src/models/image.ts b/packages/medusa/src/models/image.ts index ee4391721a..9e82e608d2 100644 --- a/packages/medusa/src/models/image.ts +++ b/packages/medusa/src/models/image.ts @@ -8,6 +8,7 @@ import { PrimaryColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" @Entity() export class Image { @@ -17,16 +18,16 @@ export class Image { @Column() url: string - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/line-item.ts b/packages/medusa/src/models/line-item.ts index 3060050646..0a3bff8639 100644 --- a/packages/medusa/src/models/line-item.ts +++ b/packages/medusa/src/models/line-item.ts @@ -11,6 +11,7 @@ import { JoinColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Swap } from "./swap" import { Cart } from "./cart" @@ -115,13 +116,13 @@ export class LineItem { @Column({ nullable: true, type: "int" }) shipped_quantity: number - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any refundable: number | null diff --git a/packages/medusa/src/models/money-amount.ts b/packages/medusa/src/models/money-amount.ts index 5f1268d501..29440b5083 100644 --- a/packages/medusa/src/models/money-amount.ts +++ b/packages/medusa/src/models/money-amount.ts @@ -16,6 +16,7 @@ import { JoinTable, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Currency } from "./currency" import { ProductVariant } from "./product-variant" @@ -55,13 +56,13 @@ export class MoneyAmount { @JoinColumn({ name: "region_id" }) region: Region - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date @BeforeInsert() diff --git a/packages/medusa/src/models/notification.ts b/packages/medusa/src/models/notification.ts index c83a66bb21..de8db103f2 100644 --- a/packages/medusa/src/models/notification.ts +++ b/packages/medusa/src/models/notification.ts @@ -11,6 +11,7 @@ import { JoinColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Customer } from "./customer" import { NotificationProvider } from "./notification-provider" @@ -42,7 +43,7 @@ export class Notification { @Column() to: string - @Column({ type: "jsonb" }) + @DbAwareColumn({ type: "jsonb" }) data: any @Column({ nullable: true }) @@ -65,10 +66,10 @@ export class Notification { @JoinColumn({ name: "provider_id" }) provider: NotificationProvider - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date @BeforeInsert() diff --git a/packages/medusa/src/models/oauth.ts b/packages/medusa/src/models/oauth.ts index d39828d677..ec0a793c10 100644 --- a/packages/medusa/src/models/oauth.ts +++ b/packages/medusa/src/models/oauth.ts @@ -16,6 +16,7 @@ import { JoinTable, } from "typeorm" import { ulid } from "ulid" +import { DbAwareColumn } from "../utils/db-aware-column" @Entity() export class Oauth { @@ -35,7 +36,7 @@ export class Oauth { @Column({ nullable: true }) uninstall_url: string - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) data: any @BeforeInsert() diff --git a/packages/medusa/src/models/order.ts b/packages/medusa/src/models/order.ts index 6aab13bc40..7b0fcdf3ef 100644 --- a/packages/medusa/src/models/order.ts +++ b/packages/medusa/src/models/order.ts @@ -15,6 +15,12 @@ import { JoinTable, } from "typeorm" import { ulid } from "ulid" +import { + resolveDbType, + resolveDbGenerationStrategy, + DbAwareColumn, +} from "../utils/db-aware-column" +import { manualAutoIncrement } from "../utils/manual-auto-increment" import { Address } from "./address" import { LineItem } from "./line-item" @@ -69,18 +75,22 @@ export class Order { @PrimaryColumn() id: string - @Column({ type: "enum", enum: OrderStatus, default: "pending" }) + @DbAwareColumn({ type: "enum", enum: OrderStatus, default: "pending" }) status: OrderStatus - @Column({ type: "enum", enum: FulfillmentStatus, default: "not_fulfilled" }) + @DbAwareColumn({ + type: "enum", + enum: FulfillmentStatus, + default: "not_fulfilled", + }) fulfillment_status: FulfillmentStatus - @Column({ type: "enum", enum: PaymentStatus, default: "not_paid" }) + @DbAwareColumn({ type: "enum", enum: PaymentStatus, default: "not_paid" }) payment_status: PaymentStatus @Index() @Column() - @Generated("increment") + @Generated(resolveDbGenerationStrategy("increment")) display_id: number @Index() @@ -233,19 +243,19 @@ export class Order { ) gift_card_transactions: GiftCardTransaction[] - @Column({ nullable: true, type: "timestamptz" }) + @Column({ nullable: true, type: resolveDbType("timestamptz") }) canceled_at: Date - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any - @Column({ type: "boolean", nullable: true}) + @Column({ type: "boolean", nullable: true }) no_notification: Boolean @Column({ nullable: true }) @@ -263,10 +273,15 @@ export class Order { gift_card_total: number @BeforeInsert() - private beforeInsert() { - if (this.id) return - const id = ulid() - this.id = `order_${id}` + private async beforeInsert() { + if (!this.id) { + const id = ulid() + this.id = `order_${id}` + } + + if (process.env.NODE_ENV === "development" && !this.display_id) { + this.display_id = await manualAutoIncrement("order") + } } } diff --git a/packages/medusa/src/models/payment-session.ts b/packages/medusa/src/models/payment-session.ts index a74a49b6e7..179a830e48 100644 --- a/packages/medusa/src/models/payment-session.ts +++ b/packages/medusa/src/models/payment-session.ts @@ -11,6 +11,7 @@ import { Unique, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Cart } from "./cart" export enum PaymentSessionStatus { @@ -45,16 +46,16 @@ export class PaymentSession { @Column({ nullable: true }) is_selected: boolean - @Column({ type: "enum", enum: PaymentSessionStatus }) + @DbAwareColumn({ type: "enum", enum: PaymentSessionStatus }) status: string - @Column({ type: "jsonb" }) + @DbAwareColumn({ type: "jsonb" }) data: any - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date @Column({ nullable: true }) diff --git a/packages/medusa/src/models/payment.ts b/packages/medusa/src/models/payment.ts index 8cc8172097..3b97110c44 100644 --- a/packages/medusa/src/models/payment.ts +++ b/packages/medusa/src/models/payment.ts @@ -11,6 +11,7 @@ import { JoinColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Swap } from "./swap" import { Currency } from "./currency" @@ -67,22 +68,22 @@ export class Payment { @Column() provider_id: string - @Column({ type: "jsonb" }) + @DbAwareColumn({ type: "jsonb" }) data: any - @Column({ type: "timestamptz", nullable: true }) + @Column({ type: resolveDbType("timestamptz"), nullable: true }) captured_at: Date - @Column({ type: "timestamptz", nullable: true }) + @Column({ type: resolveDbType("timestamptz"), nullable: true }) canceled_at: Date - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @Column({ nullable: true }) diff --git a/packages/medusa/src/models/product-collection.ts b/packages/medusa/src/models/product-collection.ts index 3fa79cbfdb..e0fc3c72a2 100644 --- a/packages/medusa/src/models/product-collection.ts +++ b/packages/medusa/src/models/product-collection.ts @@ -11,6 +11,7 @@ import { OneToMany, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import _ from "lodash" import { Product } from "./product" @@ -33,16 +34,16 @@ export class ProductCollection { ) products: Product[] - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/product-option-value.ts b/packages/medusa/src/models/product-option-value.ts index c3564fdbd0..64a390bafe 100644 --- a/packages/medusa/src/models/product-option-value.ts +++ b/packages/medusa/src/models/product-option-value.ts @@ -11,6 +11,7 @@ import { PrimaryColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { ProductOption } from "./product-option" import { ProductVariant } from "./product-variant" @@ -45,16 +46,16 @@ export class ProductOptionValue { @JoinColumn({ name: "variant_id" }) variant: ProductVariant - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/product-option.ts b/packages/medusa/src/models/product-option.ts index 999c65db32..2b101677c8 100644 --- a/packages/medusa/src/models/product-option.ts +++ b/packages/medusa/src/models/product-option.ts @@ -11,6 +11,7 @@ import { JoinColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Product } from "./product" import { ProductOptionValue } from "./product-option-value" @@ -39,16 +40,16 @@ export class ProductOption { @JoinColumn({ name: "product_id" }) product: Product - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/product-tag.ts b/packages/medusa/src/models/product-tag.ts index bee519c157..9f80d39e74 100644 --- a/packages/medusa/src/models/product-tag.ts +++ b/packages/medusa/src/models/product-tag.ts @@ -8,6 +8,7 @@ import { PrimaryColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" @Entity() export class ProductTag { @@ -17,16 +18,16 @@ export class ProductTag { @Column() value: string - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/product-type.ts b/packages/medusa/src/models/product-type.ts index b03a43b542..eba5da2a1d 100644 --- a/packages/medusa/src/models/product-type.ts +++ b/packages/medusa/src/models/product-type.ts @@ -8,6 +8,7 @@ import { PrimaryColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" @Entity() export class ProductType { @@ -17,16 +18,16 @@ export class ProductType { @Column() value: string - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/product-variant.ts b/packages/medusa/src/models/product-variant.ts index fd5730765f..a746605e27 100644 --- a/packages/medusa/src/models/product-variant.ts +++ b/packages/medusa/src/models/product-variant.ts @@ -14,6 +14,7 @@ import { JoinTable, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Product } from "./product" import { MoneyAmount } from "./money-amount" @@ -102,16 +103,16 @@ export class ProductVariant { ) options: ProductOptionValue[] - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/product.ts b/packages/medusa/src/models/product.ts index a1fe29b881..122ff17bd7 100644 --- a/packages/medusa/src/models/product.ts +++ b/packages/medusa/src/models/product.ts @@ -15,6 +15,7 @@ import { JoinTable, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Image } from "./image" import { ProductCollection } from "./product-collection" @@ -139,16 +140,16 @@ export class Product { @Column({ default: true }) discountable: boolean - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/refund.ts b/packages/medusa/src/models/refund.ts index 1cff9e4d74..52c59ba790 100644 --- a/packages/medusa/src/models/refund.ts +++ b/packages/medusa/src/models/refund.ts @@ -11,6 +11,7 @@ import { JoinColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Currency } from "./currency" import { Cart } from "./cart" @@ -46,16 +47,16 @@ export class Refund { @Column({ nullable: true }) note: string - @Column({ type: "enum", enum: RefundReason }) + @DbAwareColumn({ type: "enum", enum: RefundReason }) reason: string - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @Column({ nullable: true }) diff --git a/packages/medusa/src/models/region.ts b/packages/medusa/src/models/region.ts index 225ab2507a..b834ef7f66 100644 --- a/packages/medusa/src/models/region.ts +++ b/packages/medusa/src/models/region.ts @@ -13,6 +13,7 @@ import { JoinColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Currency } from "./currency" import { Country } from "./country" @@ -74,16 +75,16 @@ export class Region { }) fulfillment_providers: FulfillmentProvider[] - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/return-item.ts b/packages/medusa/src/models/return-item.ts index 942528a3ae..0238060eac 100644 --- a/packages/medusa/src/models/return-item.ts +++ b/packages/medusa/src/models/return-item.ts @@ -15,6 +15,7 @@ import { JoinColumn, JoinTable, } from "typeorm" +import { DbAwareColumn } from "../utils/db-aware-column" import { ReturnReason } from "./return-reason" import { Return } from "./return" @@ -58,7 +59,7 @@ export class ReturnItem { @Column({ nullable: true }) note: string - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any } diff --git a/packages/medusa/src/models/return-reason.ts b/packages/medusa/src/models/return-reason.ts index d1c37ffa88..6846e0da27 100644 --- a/packages/medusa/src/models/return-reason.ts +++ b/packages/medusa/src/models/return-reason.ts @@ -9,6 +9,7 @@ import { PrimaryColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" @Entity() export class ReturnReason { @@ -25,16 +26,16 @@ export class ReturnReason { @Column({ nullable: true }) description: string - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/return.ts b/packages/medusa/src/models/return.ts index 382f308937..400b3fc41f 100644 --- a/packages/medusa/src/models/return.ts +++ b/packages/medusa/src/models/return.ts @@ -16,6 +16,7 @@ import { JoinTable, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Order } from "./order" import { Swap } from "./swap" @@ -34,7 +35,11 @@ export class Return { @PrimaryColumn() id: string - @Column({ type: "enum", enum: ReturnStatus, default: ReturnStatus.REQUESTED }) + @DbAwareColumn({ + type: "enum", + enum: ReturnStatus, + default: ReturnStatus.REQUESTED, + }) status: ReturnStatus @OneToMany( @@ -84,25 +89,25 @@ export class Return { ) shipping_method: ShippingMethod - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) shipping_data: any @Column({ type: "int" }) refund_amount: number - @Column({ type: "timestamptz", nullable: true }) + @Column({ type: resolveDbType("timestamptz"), nullable: true }) received_at: Date - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @Column({ type: "boolean", nullable: true}) + @Column({ type: "boolean", nullable: true }) no_notification: Boolean - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @Column({ nullable: true }) diff --git a/packages/medusa/src/models/shipping-method.ts b/packages/medusa/src/models/shipping-method.ts index 923e532f7a..4f63ae8304 100644 --- a/packages/medusa/src/models/shipping-method.ts +++ b/packages/medusa/src/models/shipping-method.ts @@ -10,6 +10,7 @@ import { Index, } from "typeorm" import { ulid } from "ulid" +import { DbAwareColumn } from "../utils/db-aware-column" import { ClaimOrder } from "./claim-order" import { Order } from "./order" @@ -81,7 +82,7 @@ export class ShippingMethod { @Column({ type: "int" }) price: number - @Column({ type: "jsonb" }) + @DbAwareColumn({ type: "jsonb" }) data: any @BeforeInsert() diff --git a/packages/medusa/src/models/shipping-option-requirement.ts b/packages/medusa/src/models/shipping-option-requirement.ts index 4417ca568b..b847687d02 100644 --- a/packages/medusa/src/models/shipping-option-requirement.ts +++ b/packages/medusa/src/models/shipping-option-requirement.ts @@ -16,6 +16,7 @@ import { JoinTable, } from "typeorm" import { ulid } from "ulid" +import { DbAwareColumn } from "../utils/db-aware-column" import { ShippingOption } from "./shipping-option" @@ -37,7 +38,7 @@ export class ShippingOptionRequirement { @JoinColumn({ name: "shipping_option_id" }) shipping_option: ShippingOption - @Column({ type: "enum", enum: RequirementType }) + @DbAwareColumn({ type: "enum", enum: RequirementType }) type: RequirementType @Column({ type: "int" }) diff --git a/packages/medusa/src/models/shipping-option.ts b/packages/medusa/src/models/shipping-option.ts index f3719fd317..e35eb764bc 100644 --- a/packages/medusa/src/models/shipping-option.ts +++ b/packages/medusa/src/models/shipping-option.ts @@ -17,6 +17,7 @@ import { JoinTable, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { ShippingProfile } from "./shipping-profile" import { Region } from "./region" @@ -61,7 +62,7 @@ export class ShippingOption { @JoinColumn({ name: "provider_id" }) provider: FulfillmentProvider - @Column({ type: "enum", enum: ShippingOptionPriceType }) + @DbAwareColumn({ type: "enum", enum: ShippingOptionPriceType }) price_type: ShippingOptionPriceType @Column({ type: "int", nullable: true }) @@ -80,19 +81,19 @@ export class ShippingOption { ) requirements: ShippingOptionRequirement[] - @Column({ type: "jsonb" }) + @DbAwareColumn({ type: "jsonb" }) data: any - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/shipping-profile.ts b/packages/medusa/src/models/shipping-profile.ts index b9bb365470..ea9d069632 100644 --- a/packages/medusa/src/models/shipping-profile.ts +++ b/packages/medusa/src/models/shipping-profile.ts @@ -5,16 +5,11 @@ import { DeleteDateColumn, CreateDateColumn, UpdateDateColumn, - RelationId, PrimaryColumn, - OneToOne, OneToMany, - ManyToOne, - ManyToMany, - JoinColumn, - JoinTable, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { ShippingOption } from "./shipping-option" import { Product } from "./product" @@ -33,7 +28,7 @@ export class ShippingProfile { @Column() name: string - @Column({ type: "enum", enum: ShippingProfileType }) + @DbAwareColumn({ type: "enum", enum: ShippingProfileType }) type: ShippingProfileType @OneToMany( @@ -48,16 +43,16 @@ export class ShippingProfile { ) shipping_options: ShippingOption[] - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/staged-job.ts b/packages/medusa/src/models/staged-job.ts index 1b25615151..c9e3c535e2 100644 --- a/packages/medusa/src/models/staged-job.ts +++ b/packages/medusa/src/models/staged-job.ts @@ -15,6 +15,7 @@ import { JoinTable, } from "typeorm" import { ulid } from "ulid" +import { DbAwareColumn } from "../utils/db-aware-column" @Entity() export class StagedJob { @@ -24,7 +25,7 @@ export class StagedJob { @Column() event_name: string - @Column({ type: "jsonb" }) + @DbAwareColumn({ type: "jsonb" }) data: any @BeforeInsert() diff --git a/packages/medusa/src/models/store.ts b/packages/medusa/src/models/store.ts index 1bd259f25f..d00540cb34 100644 --- a/packages/medusa/src/models/store.ts +++ b/packages/medusa/src/models/store.ts @@ -15,6 +15,7 @@ import { JoinTable, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Currency } from "./currency" @@ -53,13 +54,13 @@ export class Store { @Column({ nullable: true }) payment_link_template: string - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/models/swap.ts b/packages/medusa/src/models/swap.ts index 8bac4bda79..8672ae054d 100644 --- a/packages/medusa/src/models/swap.ts +++ b/packages/medusa/src/models/swap.ts @@ -15,6 +15,7 @@ import { JoinTable, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Order } from "./order" import { Fulfillment } from "./fulfillment" @@ -49,10 +50,10 @@ export class Swap { @PrimaryColumn() id: string - @Column({ type: "enum", enum: FulfillmentStatus }) + @DbAwareColumn({ type: "enum", enum: FulfillmentStatus }) fulfillment_status: FulfillmentStatus - @Column({ type: "enum", enum: PaymentStatus }) + @DbAwareColumn({ type: "enum", enum: PaymentStatus }) payment_status: PaymentStatus @Index() @@ -118,22 +119,22 @@ export class Swap { @JoinColumn({ name: "cart_id" }) cart: Cart - @Column({ type: "timestamptz", nullable: true }) + @Column({ type: resolveDbType("timestamptz"), nullable: true }) confirmed_at: Date - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "boolean", nullable: true}) + @Column({ type: "boolean", nullable: true }) no_notification: Boolean - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @Column({ nullable: true }) diff --git a/packages/medusa/src/models/tracking-link.ts b/packages/medusa/src/models/tracking-link.ts index b245127d35..331d5f3c0c 100644 --- a/packages/medusa/src/models/tracking-link.ts +++ b/packages/medusa/src/models/tracking-link.ts @@ -15,6 +15,7 @@ import { JoinTable, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" import { Fulfillment } from "./fulfillment" @@ -39,16 +40,16 @@ export class TrackingLink { @JoinColumn({ name: "fulfillment_id" }) fulfillment: Fulfillment - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @Column({ nullable: true }) diff --git a/packages/medusa/src/models/user.ts b/packages/medusa/src/models/user.ts index dccfb352bd..212a339494 100644 --- a/packages/medusa/src/models/user.ts +++ b/packages/medusa/src/models/user.ts @@ -9,6 +9,7 @@ import { PrimaryColumn, } from "typeorm" import { ulid } from "ulid" +import { resolveDbType, DbAwareColumn } from "../utils/db-aware-column" @Entity() export class User { @@ -31,16 +32,16 @@ export class User { @Column({ nullable: true }) api_token: string - @CreateDateColumn({ type: "timestamptz" }) + @CreateDateColumn({ type: resolveDbType("timestamptz") }) created_at: Date - @UpdateDateColumn({ type: "timestamptz" }) + @UpdateDateColumn({ type: resolveDbType("timestamptz") }) updated_at: Date - @DeleteDateColumn({ type: "timestamptz" }) + @DeleteDateColumn({ type: resolveDbType("timestamptz") }) deleted_at: Date - @Column({ type: "jsonb", nullable: true }) + @DbAwareColumn({ type: "jsonb", nullable: true }) metadata: any @BeforeInsert() diff --git a/packages/medusa/src/services/__tests__/line-item.js b/packages/medusa/src/services/__tests__/line-item.js index 82eba5e61e..0642e9791d 100644 --- a/packages/medusa/src/services/__tests__/line-item.js +++ b/packages/medusa/src/services/__tests__/line-item.js @@ -13,6 +13,9 @@ describe("LineItemService", () => { }) const regionService = { + withTransaction: function() { + return this + }, retrieve: () => { return { id: IdMap.getId("test-region"), @@ -21,6 +24,9 @@ describe("LineItemService", () => { } const productVariantService = { + withTransaction: function() { + return this + }, retrieve: query => { if (query === IdMap.getId("test-giftcard")) { return { diff --git a/packages/medusa/src/services/event-bus.js b/packages/medusa/src/services/event-bus.js index 962fe125c3..2716934dfd 100644 --- a/packages/medusa/src/services/event-bus.js +++ b/packages/medusa/src/services/event-bus.js @@ -20,7 +20,10 @@ class EventBusService { case "subscriber": return redisSubscriber default: - return new Redis(config.projectConfig.redis_url) + if (config.projectConfig.redis_url) { + return new Redis(config.projectConfig.redis_url) + } + return redisClient } }, } diff --git a/packages/medusa/src/services/line-item.js b/packages/medusa/src/services/line-item.js index d30a2db45e..759ae2d63a 100644 --- a/packages/medusa/src/services/line-item.js +++ b/packages/medusa/src/services/line-item.js @@ -90,45 +90,50 @@ class LineItemService extends BaseService { } async generate(variantId, regionId, quantity, config = {}) { - const variant = await this.productVariantService_.retrieve(variantId, { - relations: ["product"], - }) + return this.atomicPhase_(async manager => { + const variant = await this.productVariantService_ + .withTransaction(manager) + .retrieve(variantId, { + relations: ["product"], + }) - const region = await this.regionService_.retrieve(regionId) + const region = await this.regionService_ + .withTransaction(manager) + .retrieve(regionId) - let price - let shouldMerge = true + let price + let shouldMerge = true - if (config.unit_price && typeof config.unit_price !== `undefined`) { - // if custom unit_price, we ensure positive values - // and we choose to not merge the items - shouldMerge = false - if (config.unit_price < 0) { - price = 0 + if (config.unit_price && typeof config.unit_price !== `undefined`) { + // if custom unit_price, we ensure positive values + // and we choose to not merge the items + shouldMerge = false + if (config.unit_price < 0) { + price = 0 + } else { + price = config.unit_price + } } else { - price = config.unit_price + price = await this.productVariantService_ + .withTransaction(manager) + .getRegionPrice(variant.id, region.id) } - } else { - price = await this.productVariantService_.getRegionPrice( - variant.id, - region.id - ) - } - const toCreate = { - unit_price: price, - title: variant.product.title, - description: variant.title, - thumbnail: variant.product.thumbnail, - variant_id: variant.id, - quantity: quantity || 1, - allow_discounts: variant.product.discountable, - is_giftcard: variant.product.is_giftcard, - metadata: config?.metadata || {}, - should_merge: shouldMerge, - } + const toCreate = { + unit_price: price, + title: variant.product.title, + description: variant.title, + thumbnail: variant.product.thumbnail, + variant_id: variant.id, + quantity: quantity || 1, + allow_discounts: variant.product.discountable, + is_giftcard: variant.product.is_giftcard, + metadata: config?.metadata || {}, + should_merge: shouldMerge, + } - return toCreate + return toCreate + }) } /** diff --git a/packages/medusa/src/utils/db-aware-column.ts b/packages/medusa/src/utils/db-aware-column.ts new file mode 100644 index 0000000000..ea6023286f --- /dev/null +++ b/packages/medusa/src/utils/db-aware-column.ts @@ -0,0 +1,58 @@ +import path from "path" +import { Column, ColumnOptions, ColumnType } from "typeorm" +import { getConfigFile } from "medusa-core-utils" + +const pgSqliteTypeMapping: { [key: string]: ColumnType } = { + increment: "rowid", + timestamptz: "datetime", + jsonb: "simple-json", + enum: "text", +} + +const pgSqliteGenerationMapping: { + [key: string]: "increment" | "uuid" | "rowid" +} = { + increment: "rowid", +} + +let dbType: string +export function resolveDbType(pgSqlType: ColumnType): ColumnType { + if (!dbType) { + const { configModule } = getConfigFile(path.resolve("."), `medusa-config`) + dbType = configModule.projectConfig.database_type + } + + if (dbType === "sqlite" && pgSqlType in pgSqliteTypeMapping) { + return pgSqliteTypeMapping[pgSqlType.toString()] + } + return pgSqlType +} + +export function resolveDbGenerationStrategy( + pgSqlType: "increment" | "uuid" | "rowid" +): "increment" | "uuid" | "rowid" { + if (!dbType) { + const { configModule } = getConfigFile(path.resolve("."), `medusa-config`) + dbType = configModule.projectConfig.database_type + } + + if (dbType === "sqlite" && pgSqlType in pgSqliteTypeMapping) { + return pgSqliteGenerationMapping[pgSqlType] + } + return pgSqlType +} + +export function DbAwareColumn(columnOptions: ColumnOptions) { + const pre = columnOptions.type + if (columnOptions.type) { + columnOptions.type = resolveDbType(columnOptions.type) + } + + if (pre === "jsonb" && pre !== columnOptions.type) { + if ("default" in columnOptions) { + columnOptions.default = JSON.stringify(columnOptions.default) + } + } + + return Column(columnOptions) +} diff --git a/packages/medusa/src/utils/manual-auto-increment.ts b/packages/medusa/src/utils/manual-auto-increment.ts new file mode 100644 index 0000000000..a75a3c0947 --- /dev/null +++ b/packages/medusa/src/utils/manual-auto-increment.ts @@ -0,0 +1,24 @@ +import path from "path" +import { getConnection } from "typeorm" +import { getConfigFile } from "medusa-core-utils" + +export async function manualAutoIncrement( + tableName: string +): Promise { + const { configModule } = getConfigFile(path.resolve("."), `medusa-config`) + const dbType = configModule.projectConfig.database_type + if (dbType === "sqlite") { + const connection = getConnection() + const [rec] = await connection.query( + `SELECT MAX(rowid) as mr FROM "${tableName}"` + ) + + let mr = 0 + if (rec && rec.mr) { + mr = rec.mr + } + return mr + 1 + } + + return null +} diff --git a/packages/medusa/yarn.lock b/packages/medusa/yarn.lock index 47b6343e44..c11956284c 100644 --- a/packages/medusa/yarn.lock +++ b/packages/medusa/yarn.lock @@ -1229,10 +1229,10 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" -"@medusajs/medusa-cli@^1.1.14": - version "1.1.14" - resolved "https://registry.yarnpkg.com/@medusajs/medusa-cli/-/medusa-cli-1.1.14.tgz#3abe5ae2aeba9126a83912d73f4212a259513aad" - integrity sha512-rmC54zBn5Sz+03/i+CzKzIdiCP3YJi/aQhhnJG80+w4nMkH/9lt///4NlbySYFYtIw7ORq8zkOza3//LVKRk4A== +"@medusajs/medusa-cli@^1.1.15": + version "1.1.15" + resolved "https://registry.yarnpkg.com/@medusajs/medusa-cli/-/medusa-cli-1.1.15.tgz#01837aeb8850349b204a85cb2bbac0d5ce166eeb" + integrity sha512-WxToDuksYZWSUvrKhOvETwzBGgOqhd9q2l2kGLOV997bMu/elj90Nhzrf0jZ+ioNsXmebq7aw6/fCrmZc9KxbQ== dependencies: "@babel/polyfill" "^7.8.7" "@babel/runtime" "^7.9.6" @@ -1251,6 +1251,7 @@ joi-objectid "^3.0.1" meant "^1.0.1" medusa-core-utils "^0.1.27" + medusa-telemetry "^0.0.2" netrc-parser "^3.1.6" open "^8.0.6" ora "^5.4.1" @@ -1581,6 +1582,11 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: dependencies: type-fest "^0.21.3" +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" @@ -1636,6 +1642,19 @@ append-field@^1.0.0: resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" integrity sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY= +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1738,6 +1757,13 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== +axios-retry@^3.1.9: + version "3.1.9" + resolved "https://registry.yarnpkg.com/axios-retry/-/axios-retry-3.1.9.tgz#6c30fc9aeb4519aebaec758b90ef56fa03fe72e8" + integrity sha512-NFCoNIHq8lYkJa6ku4m+V1837TP6lCa7n79Iuf8/AqATAHYB0ISaAS1eyIenDOfHOLtym34W65Sjke2xjg2fsA== + dependencies: + is-retry-allowed "^1.1.0" + axios@^0.21.1: version "0.21.1" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" @@ -1913,6 +1939,13 @@ bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + dependencies: + inherits "~2.0.0" + body-parser@1.19.0, body-parser@^1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" @@ -1943,6 +1976,20 @@ boxen@^4.2.0: type-fest "^0.8.1" widest-line "^3.1.0" +boxen@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.0.1.tgz#657528bdd3f59a772b8279b831f27ec2c744664b" + integrity sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA== + dependencies: + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.0" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -2110,6 +2157,11 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + caniuse-lite@^1.0.30001219: version "1.0.30001236" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001236.tgz#0a80de4cdf62e1770bb46a30d884fc8d633e3958" @@ -2180,11 +2232,21 @@ chokidar@^3.2.2, chokidar@^3.4.0, chokidar@^3.4.2: optionalDependencies: fsevents "~2.3.1" +chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" + integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -2202,7 +2264,7 @@ clean-stack@^3.0.0: dependencies: escape-string-regexp "4.0.0" -cli-boxes@^2.2.0: +cli-boxes@^2.2.0, cli-boxes@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== @@ -2295,6 +2357,11 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -2415,6 +2482,11 @@ connect-redis@^5.0.0: resolved "https://registry.yarnpkg.com/connect-redis/-/connect-redis-5.2.0.tgz#d38e173f2e2cccecb89b8757ce7627ecdb8e3b94" integrity sha512-wcv1lZWa2K7RbsdSlrvwApBQFLQx+cia+oirLIeim0axR3D/9ZJbHdeTM/j8tJYYKk34dVs2QPAuAqcIklWD+Q== +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + content-disposition@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -2680,6 +2752,11 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + denque@^1.1.0, denque@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.0.tgz#773de0686ff2d8ec2ff92914316a47b73b1c73de" @@ -2700,6 +2777,11 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -3249,6 +3331,20 @@ fecha@^4.2.0: resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.1.tgz#0a83ad8f86ef62a091e22bb5a039cd03d23eecce" integrity sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q== +fengari-interop@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/fengari-interop/-/fengari-interop-0.1.2.tgz#f7731dcdd2ff4449073fb7ac3c451a8841ce1e87" + integrity sha512-8iTvaByZVoi+lQJhHH9vC+c/Yaok9CwOqNQZN6JrVpjmWwW4dDkeblBXhnHC+BoI6eF4Cy5NKW3z6ICEjvgywQ== + +fengari@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/fengari/-/fengari-0.1.4.tgz#72416693cd9e43bd7d809d7829ddc0578b78b0bb" + integrity sha512-6ujqUuiIYmcgkGz8MGAdERU57EIluGGPSUgGPTsco657EHa+srq0S3/YUl/r9kx1+D+d4rGfYObd+m8K22gB1g== + dependencies: + readline-sync "^1.4.9" + sprintf-js "^1.1.1" + tmp "^0.0.33" + figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -3405,6 +3501,13 @@ fs-extra@^8.1: jsonfile "^4.0.0" universalify "^0.1.0" +fs-minipass@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + fs-readdir-recursive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -3420,6 +3523,16 @@ fsevents@^2.1.2, fsevents@~2.3.1: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== +fstream@^1.0.0, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -3430,6 +3543,20 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -3510,7 +3637,7 @@ glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== @@ -3613,6 +3740,11 @@ has-symbols@^1.0.1, has-symbols@^1.0.2: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -3731,7 +3863,7 @@ hyperlinker@^1.0.0: resolved "https://registry.yarnpkg.com/hyperlinker/-/hyperlinker-1.0.0.tgz#23dc9e38a206b208ee49bc2d6c8ef47027df0c0e" integrity sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ== -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3748,6 +3880,13 @@ ignore-by-default@^1.0.1: resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= +ignore-walk@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" + integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== + dependencies: + minimatch "^3.0.4" + ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -3797,7 +3936,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3856,6 +3995,16 @@ inquirer@^8.0.0: strip-ansi "^6.0.0" through "^2.3.6" +ioredis-mock@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/ioredis-mock/-/ioredis-mock-5.6.0.tgz#f60f9fbc3a53b50f567be9369e2b211ed52c0653" + integrity sha512-Ow+tyKdijg/gA2gSEv7lq8dLp6bO7FnwDXbJ9as37NF23XNRGMLzBc7ITaqMydfrbTodWnLcE2lKEaBs7SBpyA== + dependencies: + fengari "^0.1.4" + fengari-interop "^0.1.2" + lodash "^4.17.21" + standard-as-callback "^2.1.0" + ioredis@^4.17.3, ioredis@^4.27.0: version "4.27.5" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.27.5.tgz#b62192bb6198f8a5a02947902117150aef39b7f1" @@ -3993,7 +4142,7 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-docker@^2.0.0, is-docker@^2.1.1: +is-docker@^2.0.0, is-docker@^2.1.1, is-docker@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== @@ -4020,6 +4169,13 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -4141,6 +4297,11 @@ is-regex@^1.1.3: call-bind "^1.0.2" has-symbols "^1.0.2" +is-retry-allowed@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -5071,28 +5232,42 @@ medusa-core-utils@^0.1.27: "@hapi/joi" "^16.1.8" joi-objectid "^3.0.1" -medusa-core-utils@^1.1.19: - version "1.1.19" - resolved "https://registry.yarnpkg.com/medusa-core-utils/-/medusa-core-utils-1.1.19.tgz#d792cfd487e9fd80c41fed0ffbfdf6d677777c22" - integrity sha512-tNEpRFh0siqHSyTNtvMzsckyar2+TcM78xdoiC9qtkdYvNEgou5dXm4YRH0pBtYQSOyOaSll6nUwqFM1p2zhOg== +medusa-core-utils@^1.1.20: + version "1.1.20" + resolved "https://registry.yarnpkg.com/medusa-core-utils/-/medusa-core-utils-1.1.20.tgz#676c0dc863a206b80cc53299a984c532d07df65f" + integrity sha512-gf+/L5eeqHea3xgjwD7YZEzfUGlxbjfvaeiiGWi3Wfu0dLa+G1B4S0TsX+upR+oVeWPmk66VMqWC80h3e4csqw== dependencies: joi "^17.3.0" joi-objectid "^3.0.1" -medusa-interfaces@^1.1.20: - version "1.1.20" - resolved "https://registry.yarnpkg.com/medusa-interfaces/-/medusa-interfaces-1.1.20.tgz#66fcb1e351cae95305714c239393ba63c96fe3e0" - integrity sha512-54WIK9E65QVecqcaLuoJFvhJQclQnOb2q6ASk3sdZZk3QPl6mVGqg7dKJZwU3xSnhoQ3Up7cPtduGpvXHTMmIw== +medusa-interfaces@^1.1.21: + version "1.1.21" + resolved "https://registry.yarnpkg.com/medusa-interfaces/-/medusa-interfaces-1.1.21.tgz#ca86808e939b7ecc21a6d316008a4e41f163619f" + integrity sha512-mlHHoMIOFBc+Exs+uVIQsfeEP2C1Pi6IZHcpbm7O00tYBdQdqRjJre9+Z/I/Z37wt5IwA28/TIoVkYG71iQYxw== dependencies: - medusa-core-utils "^1.1.19" + medusa-core-utils "^1.1.20" -medusa-test-utils@^1.1.22: - version "1.1.22" - resolved "https://registry.yarnpkg.com/medusa-test-utils/-/medusa-test-utils-1.1.22.tgz#2839fa8023f6f4a7a1170bfdb3a27443923efe3b" - integrity sha512-ZaQmQ+hjrQNs9XsmmROXKJ2QZ23FAD29jLAhUVIwxd11NQ/gZof2F2dgqWyA6sIXKn82tMCTgpiE3KWDtnbA7Q== +medusa-telemetry@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/medusa-telemetry/-/medusa-telemetry-0.0.2.tgz#f3324eb3703b3f877f472dce450b5ad600a9a8f1" + integrity sha512-pZYYcXWPBkfoDSvReR9Aph3pKiXHf6sBiijtI+eSTvA1RmuPGktL7xpiKdGOG6IBKQpeqQRRfX0rV9bptu/PRg== + dependencies: + axios "^0.21.1" + axios-retry "^3.1.9" + boxen "^5.0.1" + ci-info "^3.2.0" + configstore "5.0.1" + is-docker "^2.2.1" + remove-trailing-slash "^0.1.1" + uuid "^8.3.2" + +medusa-test-utils@^1.1.23: + version "1.1.23" + resolved "https://registry.yarnpkg.com/medusa-test-utils/-/medusa-test-utils-1.1.23.tgz#e8380df499979cd0b97a5bb87779662f4da9d722" + integrity sha512-okyUgB4t7bqDieE0XO+HkbVVemn6hE1tTAtF9PXRi2igmKmcnyW/Ljk3lqrKYVhjei4z3Z/b+K2b0oNwhopbGQ== dependencies: "@babel/plugin-transform-classes" "^7.9.5" - medusa-core-utils "^1.1.19" + medusa-core-utils "^1.1.20" randomatic "^3.1.1" merge-descriptors@1.0.1: @@ -5181,6 +5356,21 @@ minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -5189,7 +5379,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.1: +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -5285,6 +5475,15 @@ natural-orderby@^2.0.1: resolved "https://registry.yarnpkg.com/natural-orderby/-/natural-orderby-2.0.3.tgz#8623bc518ba162f8ff1cdb8941d74deb0fdcc016" integrity sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q== +needle@^2.2.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.8.0.tgz#1c8ef9c1a2c29dcc1e83d73809d7bc681c80a048" + integrity sha512-ZTq6WYkN/3782H1393me3utVYdq2XyqNUFBsprEE3VMAT0+hP/cItpnITpqsY6ep2yeFE4Tqtqwc74VqUlUYtw== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -5311,6 +5510,29 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-addon-api@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== + +node-gyp@3.x: + version "3.8.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "^2.87.0" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -5332,6 +5554,22 @@ node-notifier@^6.0.0: shellwords "^0.1.1" which "^1.3.1" +node-pre-gyp@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz#db1f33215272f692cd38f03238e3e9b47c5dd054" + integrity sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + node-releases@^1.1.71: version "1.1.73" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" @@ -5353,6 +5591,21 @@ nodemon@^2.0.1: undefsafe "^2.0.3" update-notifier "^4.1.0" +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + dependencies: + abbrev "1" + +nopt@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== + dependencies: + abbrev "1" + osenv "^0.1.4" + nopt@~1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" @@ -5387,6 +5640,27 @@ normalize-url@^4.1.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== +npm-bundled@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +npm-packlist@^1.1.6: + version "1.4.8" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -5401,6 +5675,21 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" @@ -5411,7 +5700,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4, object-assign@^4.1.1: +object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -5542,11 +5831,24 @@ ora@^5.3.0, ora@^5.4.1: strip-ansi "^6.0.0" wcwidth "^1.0.1" -os-tmpdir@~1.0.2: +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= +osenv@0, osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + p-cancelable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" @@ -6034,7 +6336,7 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.2.8: +rc@^1.2.7, rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -6078,7 +6380,7 @@ readable-stream@1.1.x: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.5, readable-stream@^2.3.7: +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.5, readable-stream@^2.3.7: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -6116,6 +6418,11 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" +readline-sync@^1.4.9: + version "1.4.10" + resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b" + integrity sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw== + realpath-native@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" @@ -6240,6 +6547,11 @@ remove-trailing-separator@^1.0.1: resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= +remove-trailing-slash@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz#be2285a59f39c74d1bce4f825950061915e3780d" + integrity sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA== + repeat-element@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" @@ -6273,7 +6585,7 @@ request-promise-native@^1.0.7: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.88.0: +request@^2.87.0, request@^2.88.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -6369,6 +6681,13 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rimraf@2, rimraf@^2.6.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" @@ -6412,7 +6731,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -6444,6 +6763,11 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + saxes@^3.1.9: version "3.1.11" resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" @@ -6463,7 +6787,7 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -6485,6 +6809,11 @@ semver@^7.3.2: dependencies: lru-cache "^6.0.0" +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -6514,7 +6843,7 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" -set-blocking@^2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -6717,11 +7046,26 @@ split2@^3.1.1: dependencies: readable-stream "^3.0.0" +sprintf-js@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" + integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +sqlite3@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.0.2.tgz#00924adcc001c17686e0a6643b6cbbc2d3965083" + integrity sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA== + dependencies: + node-addon-api "^3.0.0" + node-pre-gyp "^0.11.0" + optionalDependencies: + node-gyp "3.x" + sshpk@^1.7.0: version "1.16.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" @@ -6785,7 +7129,16 @@ string-length@^3.1.0: astral-regex "^1.0.0" strip-ansi "^5.2.0" -string-width@^2.1.1: +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -6846,6 +7199,13 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" @@ -6960,6 +7320,28 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" +tar@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== + dependencies: + block-stream "*" + fstream "^1.0.12" + inherits "2" + +tar@^4: + version "4.4.16" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.16.tgz#4a48b3c025e77d9d0c788f038a09b91c594d326d" + integrity sha512-gOVUT/KWPkGFZQmCRDVFNUWBl7niIo/PRR7lzrIqtZpit+st54lGROuVjc6zEQM9FhH+dJfQIl+9F0k8GNXg5g== + dependencies: + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" + term-size@^2.1.0: version "2.2.1" resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" @@ -7136,6 +7518,11 @@ type-detect@4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" @@ -7345,7 +7732,7 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^8.3.0, uuid@^8.3.1: +uuid@^8.3.0, uuid@^8.3.1, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== @@ -7458,7 +7845,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.9, which@^1.3.1: +which@1, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -7472,6 +7859,13 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + widest-line@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" @@ -7586,6 +7980,11 @@ y18n@^4.0.0: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== +yallist@^3.0.0, yallist@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"