From 41c7792b54bac17f96f9ae5d2c51150987456a60 Mon Sep 17 00:00:00 2001 From: Ben Irvin Date: Wed, 22 Mar 2023 12:11:15 +0100 Subject: [PATCH 1/9] add mysql2 as a db client option --- .github/workflows/tests.yml | 13 ++-- examples/getstarted/config/database.js | 12 ++++ examples/getstarted/package.json | 1 + packages/core/database/lib/dialects/index.js | 19 +++++- .../database-templates/js/database.template | 21 +++++++ .../database-templates/mysql2.template | 8 +++ .../database-templates/ts/database.template | 21 +++++++ .../app/lib/utils/db-client-dependencies.js | 18 +++--- test/api.js | 12 +++- yarn.lock | 60 ++++++++++++++++++- 10 files changed, 166 insertions(+), 19 deletions(-) create mode 100644 packages/generators/app/lib/resources/templates/database-templates/mysql2.template diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 94a12dce63..399bcd5979 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -164,6 +164,7 @@ jobs: strategy: matrix: node: [14, 16, 18] + db_client: ['mysql', 'mysql2'] services: mysql: image: bitnami/mysql:latest @@ -193,15 +194,16 @@ jobs: - run: yarn install --frozen-lockfile - uses: ./.github/actions/run-api-tests with: - dbOptions: '--dbclient=mysql --dbhost=localhost --dbport=3306 --dbname=strapi_test --dbusername=strapi --dbpassword=strapi' + dbOptions: '--dbclient=${{ matrix.db_client }} --dbhost=localhost --dbport=3306 --dbname=strapi_test --dbusername=strapi --dbpassword=strapi' api_ce_mysql_5: runs-on: ubuntu-latest needs: [lint, unit_back, unit_front] - name: '[CE] API Integration (mysql:5 , node: ${{ matrix.node }})' + name: '[CE] API Integration (mysql:5, client:${{ matrix.db_client }} , node: ${{ matrix.node }})' strategy: matrix: node: [14, 16, 18] + db_client: ['mysql', 'mysql2'] services: mysql: image: bitnami/mysql:5.7 @@ -230,7 +232,9 @@ jobs: - run: yarn install --frozen-lockfile - uses: ./.github/actions/run-api-tests with: - dbOptions: '--dbclient=mysql --dbhost=localhost --dbport=3306 --dbname=strapi_test --dbusername=strapi --dbpassword=strapi' + dbOptions: '--dbclient=${{ matrix.db_client }} --dbhost=localhost --dbport=3306 --dbname=strapi_test --dbusername=strapi --dbpassword=strapi' + + # TODO THE REST OF THESE api_ce_sqlite: runs-on: ubuntu-latest @@ -311,6 +315,7 @@ jobs: strategy: matrix: node: [14, 16, 18] + db_client: ['mysql', 'mysql2'] services: mysql: image: bitnami/mysql:latest @@ -340,7 +345,7 @@ jobs: - run: yarn install --frozen-lockfile - uses: ./.github/actions/run-api-tests with: - dbOptions: '--dbclient=mysql --dbhost=localhost --dbport=3306 --dbname=strapi_test --dbusername=strapi --dbpassword=strapi' + dbOptions: '--dbclient=${{ matrix.db_client }} --dbhost=localhost --dbport=3306 --dbname=strapi_test --dbusername=strapi --dbpassword=strapi' runEE: true api_ee_sqlite: diff --git a/examples/getstarted/config/database.js b/examples/getstarted/config/database.js index 88aa65cd8f..0ac5587d1c 100644 --- a/examples/getstarted/config/database.js +++ b/examples/getstarted/config/database.js @@ -28,6 +28,17 @@ const mysql = { }, }; +const mysql2 = { + client: 'mysql2', + connection: { + database: 'strapi', + user: 'strapi', + password: 'strapi', + port: 3306, + host: 'localhost', + }, +}; + const mariadb = { client: 'mysql', connection: { @@ -41,6 +52,7 @@ const mariadb = { const db = { mysql, + mysql2, sqlite, postgres, mariadb, diff --git a/examples/getstarted/package.json b/examples/getstarted/package.json index 551430435a..d15078c580 100644 --- a/examples/getstarted/package.json +++ b/examples/getstarted/package.json @@ -27,6 +27,7 @@ "better-sqlite3": "8.0.1", "lodash": "4.17.21", "mysql": "2.18.1", + "mysql2": "3.2.0", "passport-google-oauth2": "0.2.0", "pg": "8.8.0", "react": "^17.0.2", diff --git a/packages/core/database/lib/dialects/index.js b/packages/core/database/lib/dialects/index.js index a0b44e77cd..11f7451795 100644 --- a/packages/core/database/lib/dialects/index.js +++ b/packages/core/database/lib/dialects/index.js @@ -13,12 +13,27 @@ const getDialectClass = (client) => { } }; +const getDialectName = (client) => { + switch (client) { + case 'postgres': + return 'postgres'; + case 'mysql': + case 'mysql2': + return 'mysql'; + case 'sqlite': + return 'sqlite'; + default: + throw new Error(`Unknown dialect ${client}`); + } +}; + const getDialect = (db) => { const { client } = db.config.connection; + const dialectName = getDialectName(client); - const constructor = getDialectClass(client); + const constructor = getDialectClass(dialectName); const dialect = new constructor(db); - dialect.client = client; + dialect.client = dialectName; return dialect; }; diff --git a/packages/generators/app/lib/resources/templates/database-templates/js/database.template b/packages/generators/app/lib/resources/templates/database-templates/js/database.template index 9a97b6cd15..08cfc683e0 100644 --- a/packages/generators/app/lib/resources/templates/database-templates/js/database.template +++ b/packages/generators/app/lib/resources/templates/database-templates/js/database.template @@ -26,6 +26,27 @@ module.exports = ({ env }) => { }, pool: { min: env.int('DATABASE_POOL_MIN', 2), max: env.int('DATABASE_POOL_MAX', 10) }, }, + mysql2: { + connection: { + host: env('DATABASE_HOST', 'localhost'), + port: env.int('DATABASE_PORT', 3306), + database: env('DATABASE_NAME', 'strapi'), + user: env('DATABASE_USERNAME', 'strapi'), + password: env('DATABASE_PASSWORD', 'strapi'), + ssl: env.bool('DATABASE_SSL', false) && { + key: env('DATABASE_SSL_KEY', undefined), + cert: env('DATABASE_SSL_CERT', undefined), + ca: env('DATABASE_SSL_CA', undefined), + capath: env('DATABASE_SSL_CAPATH', undefined), + cipher: env('DATABASE_SSL_CIPHER', undefined), + rejectUnauthorized: env.bool( + 'DATABASE_SSL_REJECT_UNAUTHORIZED', + true + ), + }, + }, + pool: { min: env.int('DATABASE_POOL_MIN', 2), max: env.int('DATABASE_POOL_MAX', 10) }, + }, postgres: { connection: { connectionString: env('DATABASE_URL'), diff --git a/packages/generators/app/lib/resources/templates/database-templates/mysql2.template b/packages/generators/app/lib/resources/templates/database-templates/mysql2.template new file mode 100644 index 0000000000..2650bcedf6 --- /dev/null +++ b/packages/generators/app/lib/resources/templates/database-templates/mysql2.template @@ -0,0 +1,8 @@ +# Database +DATABASE_CLIENT=<%= client %> +DATABASE_HOST=<%= connection.host %> +DATABASE_PORT=<%= connection.port %> +DATABASE_NAME=<%= connection.database %> +DATABASE_USERNAME=<%= connection.username %> +DATABASE_PASSWORD=<%= connection.password %> +DATABASE_SSL=<%= connection.ssl %> diff --git a/packages/generators/app/lib/resources/templates/database-templates/ts/database.template b/packages/generators/app/lib/resources/templates/database-templates/ts/database.template index 5480932101..708a8ccf70 100644 --- a/packages/generators/app/lib/resources/templates/database-templates/ts/database.template +++ b/packages/generators/app/lib/resources/templates/database-templates/ts/database.template @@ -26,6 +26,27 @@ export default ({ env }) => { }, pool: { min: env.int('DATABASE_POOL_MIN', 2), max: env.int('DATABASE_POOL_MAX', 10) }, }, + mysql2: { + connection: { + host: env('DATABASE_HOST', 'localhost'), + port: env.int('DATABASE_PORT', 3306), + database: env('DATABASE_NAME', 'strapi'), + user: env('DATABASE_USERNAME', 'strapi'), + password: env('DATABASE_PASSWORD', 'strapi'), + ssl: env.bool('DATABASE_SSL', false) && { + key: env('DATABASE_SSL_KEY', undefined), + cert: env('DATABASE_SSL_CERT', undefined), + ca: env('DATABASE_SSL_CA', undefined), + capath: env('DATABASE_SSL_CAPATH', undefined), + cipher: env('DATABASE_SSL_CIPHER', undefined), + rejectUnauthorized: env.bool( + 'DATABASE_SSL_REJECT_UNAUTHORIZED', + true + ), + }, + }, + pool: { min: env.int('DATABASE_POOL_MIN', 2), max: env.int('DATABASE_POOL_MAX', 10) }, + }, postgres: { connection: { connectionString: env('DATABASE_URL'), diff --git a/packages/generators/app/lib/utils/db-client-dependencies.js b/packages/generators/app/lib/utils/db-client-dependencies.js index 6f72034cbb..3366c1eafa 100644 --- a/packages/generators/app/lib/utils/db-client-dependencies.js +++ b/packages/generators/app/lib/utils/db-client-dependencies.js @@ -2,6 +2,7 @@ const sqlClientModule = { mysql: { mysql: '2.18.1' }, + mysql2: { mysql2: '3.2.0' }, postgres: { pg: '8.8.0' }, sqlite: { 'better-sqlite3': '8.0.1' }, 'sqlite-legacy': { sqlite3: '^5.0.2' }, @@ -11,16 +12,11 @@ const sqlClientModule = { * Client dependencies */ module.exports = ({ client }) => { - switch (client) { - case 'sqlite': - case 'sqlite-legacy': - case 'postgres': - case 'mysql': - return { - ...sqlClientModule[client], - }; - - default: - throw new Error(`Invalid client "${client}"`); + if (Object.keys(sqlClientModule).includes(client)) { + return { + ...sqlClientModule[client], + }; } + + throw new Error(`Invalid client "${client}"`); }; diff --git a/test/api.js b/test/api.js index 18ca66721e..5264bd881c 100644 --- a/test/api.js +++ b/test/api.js @@ -33,6 +33,16 @@ const databases = { password: 'strapi', }, }, + mysql2: { + client: 'mysql2', + connection: { + host: '127.0.0.1', + port: 3306, + database: 'strapi_test', + username: 'strapi', + password: 'strapi', + }, + }, sqlite: { client: 'sqlite', connection: { @@ -80,7 +90,7 @@ yargs }) .command( '$0', - 'run end to end tests', + 'run API integration tests', (yarg) => { yarg.option('database', { alias: 'db', diff --git a/yarn.lock b/yarn.lock index 0eadf54a5e..895833434c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10256,6 +10256,11 @@ delegates@1.0.0, delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== +denque@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" + integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== + depd@2.0.0, depd@^2.0.0, depd@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -12175,6 +12180,13 @@ gauge@^4.0.3: strip-ansi "^6.0.1" wide-align "^1.1.5" +generate-function@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" + integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== + dependencies: + is-property "^1.0.2" + gensync@^1.0.0-beta.1, 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" @@ -13268,7 +13280,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@0.6.3, iconv-lite@^0.6.2: +iconv-lite@0.6.3, iconv-lite@^0.6.2, iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== @@ -13884,6 +13896,11 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== +is-property@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + integrity sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g== + is-regex@^1.1.2, is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -15591,6 +15608,11 @@ long@^4.0.0: resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== +long@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.1.tgz#e27595d0083d103d2fa2c20c7699f8e0c92b897f" + integrity sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A== + longest-streak@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" @@ -15654,6 +15676,11 @@ lru-cache@^7.10.1, lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.13.1.tgz#267a81fbd0881327c46a81c5922606a2cfe336c4" integrity sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ== +lru-cache@^7.14.1: + version "7.18.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + lru_map@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" @@ -16509,6 +16536,20 @@ mute-stream@0.0.8, mute-stream@~0.0.4: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +mysql2@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-3.2.0.tgz#3613a8903bcb7ade0ae35b29945a0378eb67da89" + integrity sha512-0Vn6a9WSrq6fWwvPgrvIwnOCldiEcgbzapVRDAtDZ4cMTxN7pnGqCTx8EG32S/NYXl6AXkdO+9hV1tSIi/LigA== + dependencies: + denque "^2.1.0" + generate-function "^2.3.1" + iconv-lite "^0.6.3" + long "^5.2.1" + lru-cache "^7.14.1" + named-placeholders "^1.1.3" + seq-queue "^0.0.5" + sqlstring "^2.3.2" + mysql@2.18.1: version "2.18.1" resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.18.1.tgz#2254143855c5a8c73825e4522baf2ea021766717" @@ -16528,6 +16569,13 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" +named-placeholders@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/named-placeholders/-/named-placeholders-1.1.3.tgz#df595799a36654da55dda6152ba7a137ad1d9351" + integrity sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w== + dependencies: + lru-cache "^7.14.1" + nan@^2.12.1: version "2.16.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916" @@ -19931,6 +19979,11 @@ sentence-case@^2.1.0: no-case "^2.2.0" upper-case-first "^1.1.2" +seq-queue@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e" + integrity sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q== + serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" @@ -20459,6 +20512,11 @@ sqlstring@2.3.1: resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40" integrity sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ== +sqlstring@^2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.3.tgz#2ddc21f03bce2c387ed60680e739922c65751d0c" + integrity sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg== + sshpk@^1.7.0: version "1.17.0" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" From c6d73764203866dcf9a95b4ad5e3d80bc291c2ec Mon Sep 17 00:00:00 2001 From: Ben Irvin Date: Wed, 22 Mar 2023 13:26:51 +0100 Subject: [PATCH 2/9] clean up workflow --- .github/workflows/tests.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 399bcd5979..d778741479 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -160,7 +160,7 @@ jobs: api_ce_mysql: runs-on: ubuntu-latest needs: [lint, unit_back, unit_front] - name: '[CE] API Integration (mysql, node: ${{ matrix.node }})' + name: '[CE] API Integration (mysql:latest, client: ${{ matrix.db_client }}, node: ${{ matrix.node }})' strategy: matrix: node: [14, 16, 18] @@ -199,7 +199,7 @@ jobs: api_ce_mysql_5: runs-on: ubuntu-latest needs: [lint, unit_back, unit_front] - name: '[CE] API Integration (mysql:5, client:${{ matrix.db_client }} , node: ${{ matrix.node }})' + name: '[CE] API Integration (mysql:5, client: ${{ matrix.db_client }} , node: ${{ matrix.node }})' strategy: matrix: node: [14, 16, 18] @@ -234,12 +234,10 @@ jobs: with: dbOptions: '--dbclient=${{ matrix.db_client }} --dbhost=localhost --dbport=3306 --dbname=strapi_test --dbusername=strapi --dbpassword=strapi' - # TODO THE REST OF THESE - api_ce_sqlite: runs-on: ubuntu-latest needs: [lint, unit_back, unit_front] - name: '[CE] API Integration (sqlite: ${{ matrix.sqlite_pkg }}, node: ${{ matrix.node }})' + name: '[CE] API Integration (sqlite, client: ${{ matrix.sqlite_pkg }}, node: ${{ matrix.node }})' strategy: matrix: node: [14, 16, 18] @@ -308,7 +306,7 @@ jobs: api_ee_mysql: runs-on: ubuntu-latest needs: [lint, unit_back, unit_front] - name: '[EE] API Integration (mysql, node: ${{ matrix.node }})' + name: '[EE] API Integration (mysql:latest, client: ${{ matrix.db_client }}, node: ${{ matrix.node }})' if: github.event.pull_request.head.repo.full_name == github.repository && !(github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]') env: STRAPI_LICENSE: ${{ secrets.strapiLicense }} @@ -351,7 +349,7 @@ jobs: api_ee_sqlite: runs-on: ubuntu-latest needs: [lint, unit_back, unit_front] - name: '[EE] API Integration (sqlite: ${{ matrix.sqlite_pkg }}, node: ${{ matrix.node }})' + name: '[EE] API Integration (sqlite, client: ${{ matrix.sqlite_pkg }}, node: ${{ matrix.node }})' if: github.event.pull_request.head.repo.full_name == github.repository && !(github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]') env: STRAPI_LICENSE: ${{ secrets.strapiLicense }} From c7db702b33eeb10b8fbdbc07ab91858011452420 Mon Sep 17 00:00:00 2001 From: Ben Irvin Date: Thu, 23 Mar 2023 13:01:44 +0100 Subject: [PATCH 3/9] fix tests --- .../tests/admin-api-token-crud.test.api.js | 15 +++++------- .../admin-transfer-token-crud.test.api.js | 23 ++++++------------- 2 files changed, 13 insertions(+), 25 deletions(-) diff --git a/packages/core/admin/server/tests/admin-api-token-crud.test.api.js b/packages/core/admin/server/tests/admin-api-token-crud.test.api.js index ae030617d5..d48befb858 100644 --- a/packages/core/admin/server/tests/admin-api-token-crud.test.api.js +++ b/packages/core/admin/server/tests/admin-api-token-crud.test.api.js @@ -8,6 +8,8 @@ const constants = require('../services/constants'); describe('Admin API Token v2 CRUD (api)', () => { let rq; let strapi; + let now; + let nowSpy; const deleteAllTokens = async () => { const tokens = await strapi.admin.services['api-token'].list(); @@ -22,6 +24,9 @@ describe('Admin API Token v2 CRUD (api)', () => { beforeAll(async () => { strapi = await createStrapiInstance(); rq = await createAuthRequest({ strapi }); + // To eliminate latency in the request and predict the expiry timestamp, we freeze Date.now() + now = Date.now(); + nowSpy = jest.spyOn(Date, 'now').mockImplementation(() => now); // delete tokens await deleteAllTokens(); @@ -29,6 +34,7 @@ describe('Admin API Token v2 CRUD (api)', () => { // Cleanup actions afterAll(async () => { + nowSpy.mockRestore(); await strapi.destroy(); }); @@ -178,9 +184,6 @@ describe('Admin API Token v2 CRUD (api)', () => { }); test('Creates a token with a 7-day lifespan', async () => { - const now = Date.now(); - jest.useFakeTimers('modern').setSystemTime(now); - const body = { name: 'api-token_tests-lifespan7', description: 'api-token_tests-description', @@ -217,9 +220,6 @@ describe('Admin API Token v2 CRUD (api)', () => { }); test('Creates a token with a 30-day lifespan', async () => { - const now = Date.now(); - jest.useFakeTimers('modern').setSystemTime(now); - const body = { name: 'api-token_tests-lifespan30', description: 'api-token_tests-description', @@ -256,9 +256,6 @@ describe('Admin API Token v2 CRUD (api)', () => { }); test('Creates a token with a 90-day lifespan', async () => { - const now = Date.now(); - jest.useFakeTimers('modern').setSystemTime(now); - const body = { name: 'api-token_tests-lifespan90', description: 'api-token_tests-description', diff --git a/packages/core/admin/server/tests/admin-transfer-token-crud.test.api.js b/packages/core/admin/server/tests/admin-transfer-token-crud.test.api.js index 106537b919..99a98708cc 100644 --- a/packages/core/admin/server/tests/admin-transfer-token-crud.test.api.js +++ b/packages/core/admin/server/tests/admin-transfer-token-crud.test.api.js @@ -8,6 +8,8 @@ const constants = require('../services/constants'); describe('Admin Transfer Token CRUD (api)', () => { let rq; let strapi; + let now; + let nowSpy; const deleteAllTokens = async () => { const tokens = await strapi.admin.services.transfer.token.list(); @@ -22,6 +24,9 @@ describe('Admin Transfer Token CRUD (api)', () => { beforeAll(async () => { strapi = await createStrapiInstance(); rq = await createAuthRequest({ strapi }); + // To eliminate latency in the request and predict the expiry timestamp, we freeze Date.now() + now = Date.now(); + nowSpy = jest.spyOn(Date, 'now').mockImplementation(() => now); // delete tokens await deleteAllTokens(); @@ -29,6 +34,7 @@ describe('Admin Transfer Token CRUD (api)', () => { // Cleanup actions afterAll(async () => { + nowSpy.mockRestore(); await strapi.destroy(); }); @@ -116,9 +122,6 @@ describe('Admin Transfer Token CRUD (api)', () => { }); test('Creates a transfer token with a 7-day lifespan', async () => { - const now = Date.now(); - jest.useFakeTimers('modern').setSystemTime(now); - const body = { name: 'transfer-token_tests-lifespan7', description: 'transfer-token_tests-description', @@ -148,14 +151,9 @@ describe('Admin Transfer Token CRUD (api)', () => { // Datetime stored in some databases may lose ms accuracy, so allow a range of 2 seconds for timing edge cases expect(Date.parse(res.body.data.expiresAt)).toBeGreaterThan(now + body.lifespan - 2000); expect(Date.parse(res.body.data.expiresAt)).toBeLessThan(now + body.lifespan + 2000); - - jest.useRealTimers(); }); test('Creates a transfer token with a 30-day lifespan', async () => { - const now = Date.now(); - jest.useFakeTimers('modern').setSystemTime(now); - const body = { name: 'transfer-token_tests-lifespan30', description: 'transfer-token_tests-description', @@ -185,14 +183,9 @@ describe('Admin Transfer Token CRUD (api)', () => { // Datetime stored in some databases may lose ms accuracy, so allow a range of 2 seconds for timing edge cases expect(Date.parse(res.body.data.expiresAt)).toBeGreaterThan(now + body.lifespan - 2000); expect(Date.parse(res.body.data.expiresAt)).toBeLessThan(now + body.lifespan + 2000); - - jest.useRealTimers(); }); test('Creates a transfer token with a 90-day lifespan', async () => { - const now = Date.now(); - jest.useFakeTimers('modern').setSystemTime(now); - const body = { name: 'transfer-token_tests-lifespan90', description: 'transfer-token_tests-description', @@ -222,8 +215,6 @@ describe('Admin Transfer Token CRUD (api)', () => { // Datetime stored in some databases may lose ms accuracy, so allow a range of 2 seconds for timing edge cases expect(Date.parse(res.body.data.expiresAt)).toBeGreaterThan(now + body.lifespan - 2000); expect(Date.parse(res.body.data.expiresAt)).toBeLessThan(now + body.lifespan + 2000); - - jest.useRealTimers(); }); test('Creates a transfer token with a null lifespan', async () => { @@ -424,7 +415,7 @@ describe('Admin Transfer Token CRUD (api)', () => { test('Returns a 404 if the ressource to retrieve does not exist', async () => { const res = await rq({ - url: '/admin/transfer/tokens/42', + url: '/admin/transfer/tokens/999', method: 'GET', }); From f75af1250511c751696653b79d28d2ae6064dc35 Mon Sep 17 00:00:00 2001 From: Ben Irvin Date: Thu, 23 Mar 2023 14:25:47 +0100 Subject: [PATCH 4/9] sqlite-legacy is dialect sqlite --- packages/core/database/lib/dialects/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/core/database/lib/dialects/index.js b/packages/core/database/lib/dialects/index.js index 11f7451795..a42f1b3465 100644 --- a/packages/core/database/lib/dialects/index.js +++ b/packages/core/database/lib/dialects/index.js @@ -21,6 +21,7 @@ const getDialectName = (client) => { case 'mysql2': return 'mysql'; case 'sqlite': + case 'sqlite-legacy': return 'sqlite'; default: throw new Error(`Unknown dialect ${client}`); From 41a793ed53ae4bcd50e379d9a575c5da3a21fb48 Mon Sep 17 00:00:00 2001 From: Ben Irvin Date: Thu, 23 Mar 2023 15:02:08 +0100 Subject: [PATCH 5/9] clean up after each test --- .../admin/server/tests/admin-api-token-crud.test.api.js | 4 ++++ .../server/tests/admin-transfer-token-crud.test.api.js | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/core/admin/server/tests/admin-api-token-crud.test.api.js b/packages/core/admin/server/tests/admin-api-token-crud.test.api.js index d48befb858..8f7d0654d5 100644 --- a/packages/core/admin/server/tests/admin-api-token-crud.test.api.js +++ b/packages/core/admin/server/tests/admin-api-token-crud.test.api.js @@ -38,6 +38,10 @@ describe('Admin API Token v2 CRUD (api)', () => { await strapi.destroy(); }); + afterEach(async () => { + await deleteAllTokens(); + }); + // create a predictable valid token that we can test with (delete, list, etc) let currentTokens = 0; const createValidToken = async (token = {}) => { diff --git a/packages/core/admin/server/tests/admin-transfer-token-crud.test.api.js b/packages/core/admin/server/tests/admin-transfer-token-crud.test.api.js index 99a98708cc..4f8fdfbccc 100644 --- a/packages/core/admin/server/tests/admin-transfer-token-crud.test.api.js +++ b/packages/core/admin/server/tests/admin-transfer-token-crud.test.api.js @@ -38,6 +38,10 @@ describe('Admin Transfer Token CRUD (api)', () => { await strapi.destroy(); }); + afterEach(async () => { + await deleteAllTokens(); + }); + // create a predictable valid token that we can test with (delete, list, etc) let currentTokens = 0; const createValidToken = async (token = {}) => { @@ -415,7 +419,7 @@ describe('Admin Transfer Token CRUD (api)', () => { test('Returns a 404 if the ressource to retrieve does not exist', async () => { const res = await rq({ - url: '/admin/transfer/tokens/999', + url: '/admin/transfer/tokens/42', method: 'GET', }); @@ -465,6 +469,8 @@ describe('Admin Transfer Token CRUD (api)', () => { }); test('Returns a 404 if the resource to update does not exist', async () => { + await deleteAllTokens(); + const body = { name: 'transfer-token_tests-updated-name', description: 'transfer-token_tests-updated-description', From 297bda0d5cc2bcb9cdf6ea1f437be0d91a523cfe Mon Sep 17 00:00:00 2001 From: Ben Irvin Date: Thu, 23 Mar 2023 16:10:24 +0100 Subject: [PATCH 6/9] add comments --- packages/core/database/lib/dialects/index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/core/database/lib/dialects/index.js b/packages/core/database/lib/dialects/index.js index a42f1b3465..e13fb4d95a 100644 --- a/packages/core/database/lib/dialects/index.js +++ b/packages/core/database/lib/dialects/index.js @@ -1,5 +1,8 @@ 'use strict'; +/** + * Require our dialect-specific code + */ const getDialectClass = (client) => { switch (client) { case 'postgres': @@ -13,6 +16,12 @@ const getDialectClass = (client) => { } }; +/** + * Get the dialect of a database client + * + * @param {string} The client value from a project database configuration + * @returns {string} The dialect of that client + */ const getDialectName = (client) => { switch (client) { case 'postgres': From f97adac5115128837d2de216471fb28ba4e77ad9 Mon Sep 17 00:00:00 2001 From: Ben Irvin Date: Fri, 24 Mar 2023 16:45:41 +0100 Subject: [PATCH 7/9] fix yarn.lock --- yarn.lock | 325 ++++++++++++++++++++++++++---------------------------- 1 file changed, 158 insertions(+), 167 deletions(-) diff --git a/yarn.lock b/yarn.lock index c5812f3ee8..b3ab772c01 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3037,13 +3037,13 @@ __metadata: linkType: hard "@eslint-community/eslint-utils@npm:^4.2.0": - version: 4.4.0 - resolution: "@eslint-community/eslint-utils@npm:4.4.0" + version: 4.3.0 + resolution: "@eslint-community/eslint-utils@npm:4.3.0" dependencies: eslint-visitor-keys: ^3.3.0 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: cdfe3ae42b4f572cbfb46d20edafe6f36fc5fb52bf2d90875c58aefe226892b9677fef60820e2832caf864a326fe4fc225714c46e8389ccca04d5f9288aabd22 + checksum: f487760a692f0f1fef76e248ad72976919576ba57edc2b1b1dc1d182553bae6b5bf7b078e654da85d04f0af8a485d20bd26280002768f4fbcd2e330078340cb0 languageName: node linkType: hard @@ -4218,6 +4218,15 @@ __metadata: languageName: node linkType: hard +"@nrwl/cli@npm:15.8.2": + version: 15.8.2 + resolution: "@nrwl/cli@npm:15.8.2" + dependencies: + nx: 15.8.2 + checksum: c8fa47772281110bb24a9fb1bde96ff243ad7ecdcbae3464e24b803f3b5042fe100460f497cf9659fe408a10d09416b210e96bd0281ef258903342cc0dc1df79 + languageName: node + linkType: hard + "@nrwl/cli@npm:15.8.3": version: 15.8.3 resolution: "@nrwl/cli@npm:15.8.3" @@ -4227,18 +4236,9 @@ __metadata: languageName: node linkType: hard -"@nrwl/cli@npm:15.8.8": - version: 15.8.8 - resolution: "@nrwl/cli@npm:15.8.8" - dependencies: - nx: 15.8.8 - checksum: 077f1de7983bc9512cbf291cb5f67178db93452b9a6f7e27e71df4dbeb514dfbbf4d53fdc2a0c982c76d37fb094b9e60dff19e0fcb02f3b01a7bcac22308b4c9 - languageName: node - linkType: hard - "@nrwl/devkit@npm:>=15.5.2 < 16": - version: 15.8.8 - resolution: "@nrwl/devkit@npm:15.8.8" + version: 15.8.2 + resolution: "@nrwl/devkit@npm:15.8.2" dependencies: "@phenomnomnominal/tsquery": 4.1.1 ejs: ^3.1.7 @@ -4248,7 +4248,14 @@ __metadata: tslib: ^2.3.0 peerDependencies: nx: ">= 14.1 <= 16" - checksum: 68b4c6b0615e4af96241334363a93f419097ebbef5b992f36c6f0962bdff4f74884a2b87d4e7f89144378d779db97a5c8fb3c62496d21703cedae9274f7d908a + checksum: ef890cecb5fd7dbed2d5c91a904d1c75293bd65888b92c8d158e8fc1469ce72ed92bf11a3eeb5c0e99bd877d29fdaeebe9c8ced82a59058f1860385b344edc92 + languageName: node + linkType: hard + +"@nrwl/nx-darwin-arm64@npm:15.8.2": + version: 15.8.2 + resolution: "@nrwl/nx-darwin-arm64@npm:15.8.2" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -4259,10 +4266,10 @@ __metadata: languageName: node linkType: hard -"@nrwl/nx-darwin-arm64@npm:15.8.8": - version: 15.8.8 - resolution: "@nrwl/nx-darwin-arm64@npm:15.8.8" - conditions: os=darwin & cpu=arm64 +"@nrwl/nx-darwin-x64@npm:15.8.2": + version: 15.8.2 + resolution: "@nrwl/nx-darwin-x64@npm:15.8.2" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -4273,10 +4280,10 @@ __metadata: languageName: node linkType: hard -"@nrwl/nx-darwin-x64@npm:15.8.8": - version: 15.8.8 - resolution: "@nrwl/nx-darwin-x64@npm:15.8.8" - conditions: os=darwin & cpu=x64 +"@nrwl/nx-linux-arm-gnueabihf@npm:15.8.2": + version: 15.8.2 + resolution: "@nrwl/nx-linux-arm-gnueabihf@npm:15.8.2" + conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -4287,10 +4294,10 @@ __metadata: languageName: node linkType: hard -"@nrwl/nx-linux-arm-gnueabihf@npm:15.8.8": - version: 15.8.8 - resolution: "@nrwl/nx-linux-arm-gnueabihf@npm:15.8.8" - conditions: os=linux & cpu=arm +"@nrwl/nx-linux-arm64-gnu@npm:15.8.2": + version: 15.8.2 + resolution: "@nrwl/nx-linux-arm64-gnu@npm:15.8.2" + conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard @@ -4301,10 +4308,10 @@ __metadata: languageName: node linkType: hard -"@nrwl/nx-linux-arm64-gnu@npm:15.8.8": - version: 15.8.8 - resolution: "@nrwl/nx-linux-arm64-gnu@npm:15.8.8" - conditions: os=linux & cpu=arm64 & libc=glibc +"@nrwl/nx-linux-arm64-musl@npm:15.8.2": + version: 15.8.2 + resolution: "@nrwl/nx-linux-arm64-musl@npm:15.8.2" + conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard @@ -4315,10 +4322,10 @@ __metadata: languageName: node linkType: hard -"@nrwl/nx-linux-arm64-musl@npm:15.8.8": - version: 15.8.8 - resolution: "@nrwl/nx-linux-arm64-musl@npm:15.8.8" - conditions: os=linux & cpu=arm64 & libc=musl +"@nrwl/nx-linux-x64-gnu@npm:15.8.2": + version: 15.8.2 + resolution: "@nrwl/nx-linux-x64-gnu@npm:15.8.2" + conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard @@ -4329,10 +4336,10 @@ __metadata: languageName: node linkType: hard -"@nrwl/nx-linux-x64-gnu@npm:15.8.8": - version: 15.8.8 - resolution: "@nrwl/nx-linux-x64-gnu@npm:15.8.8" - conditions: os=linux & cpu=x64 & libc=glibc +"@nrwl/nx-linux-x64-musl@npm:15.8.2": + version: 15.8.2 + resolution: "@nrwl/nx-linux-x64-musl@npm:15.8.2" + conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard @@ -4343,10 +4350,10 @@ __metadata: languageName: node linkType: hard -"@nrwl/nx-linux-x64-musl@npm:15.8.8": - version: 15.8.8 - resolution: "@nrwl/nx-linux-x64-musl@npm:15.8.8" - conditions: os=linux & cpu=x64 & libc=musl +"@nrwl/nx-win32-arm64-msvc@npm:15.8.2": + version: 15.8.2 + resolution: "@nrwl/nx-win32-arm64-msvc@npm:15.8.2" + conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -4357,10 +4364,10 @@ __metadata: languageName: node linkType: hard -"@nrwl/nx-win32-arm64-msvc@npm:15.8.8": - version: 15.8.8 - resolution: "@nrwl/nx-win32-arm64-msvc@npm:15.8.8" - conditions: os=win32 & cpu=arm64 +"@nrwl/nx-win32-x64-msvc@npm:15.8.2": + version: 15.8.2 + resolution: "@nrwl/nx-win32-x64-msvc@npm:15.8.2" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -4371,10 +4378,14 @@ __metadata: languageName: node linkType: hard -"@nrwl/nx-win32-x64-msvc@npm:15.8.8": - version: 15.8.8 - resolution: "@nrwl/nx-win32-x64-msvc@npm:15.8.8" - conditions: os=win32 & cpu=x64 +"@nrwl/tao@npm:15.8.2": + version: 15.8.2 + resolution: "@nrwl/tao@npm:15.8.2" + dependencies: + nx: 15.8.2 + bin: + tao: index.js + checksum: 7dfa1defe92d60262e30219f276ea279279fe0214b6130ead97ec2f495e7e53fd289c7f4173366d69dd447f7c7ee7245f126e1b29701450ee826879a09606c3d languageName: node linkType: hard @@ -4389,17 +4400,6 @@ __metadata: languageName: node linkType: hard -"@nrwl/tao@npm:15.8.8": - version: 15.8.8 - resolution: "@nrwl/tao@npm:15.8.8" - dependencies: - nx: 15.8.8 - bin: - tao: index - checksum: 053b05ffcaacbccb84dfbc462d29a3c8da94e1816242ebf81e19dd05c98360a44d200306957cb4d1951f6d479640ff7c6db0deed56320b81d4bc806b3e6a5171 - languageName: node - linkType: hard - "@octokit/auth-token@npm:^2.4.4": version: 2.5.0 resolution: "@octokit/auth-token@npm:2.5.0" @@ -14614,13 +14614,13 @@ __metadata: linkType: hard "ejs@npm:^3.1.7": - version: 3.1.9 - resolution: "ejs@npm:3.1.9" + version: 3.1.8 + resolution: "ejs@npm:3.1.8" dependencies: jake: ^10.8.5 bin: ejs: bin/cli.js - checksum: af6f10eb815885ff8a8cfacc42c6b6cf87daf97a4884f87a30e0c3271fedd85d76a3a297d9c33a70e735b97ee632887f85e32854b9cdd3a2d97edf931519a35f + checksum: 1d40d198ad52e315ccf37e577bdec06e24eefdc4e3c27aafa47751a03a0c7f0ec4310254c9277a5f14763c3cd4bbacce27497332b2d87c74232b9b1defef8efc languageName: node linkType: hard @@ -16826,13 +16826,13 @@ __metadata: linkType: hard "fs-extra@npm:^11.1.0": - version: 11.1.1 - resolution: "fs-extra@npm:11.1.1" + version: 11.1.0 + resolution: "fs-extra@npm:11.1.0" dependencies: graceful-fs: ^4.2.0 jsonfile: ^6.0.1 universalify: ^2.0.0 - checksum: fb883c68245b2d777fbc1f2082c9efb084eaa2bbf9fddaa366130d196c03608eebef7fb490541276429ee1ca99f317e2d73e96f5ca0999eefedf5a624ae1edfd + checksum: 5ca476103fa1f5ff4a9b3c4f331548f8a3c1881edaae323a4415d3153b5dc11dc6a981c8d1dd93eec8367ceee27b53f8bd27eecbbf66ffcdd04927510c171e7f languageName: node linkType: hard @@ -22191,11 +22191,11 @@ __metadata: linkType: hard "marked@npm:^4.2.12": - version: 4.3.0 - resolution: "marked@npm:4.3.0" + version: 4.2.12 + resolution: "marked@npm:4.2.12" bin: marked: bin/marked.js - checksum: 0db6817893952c3ec710eb9ceafb8468bf5ae38cb0f92b7b083baa13d70b19774674be04db5b817681fa7c5c6a088f61300815e4dd75a59696f4716ad69f6260 + checksum: bd551cd61028ee639d4ca2ccdfcc5a6ba4227c1b143c4538f3cde27f569dcb57df8e6313560394645b418b84a7336c07ab1e438b89b6324c29d7d8cdd3102d63 languageName: node linkType: hard @@ -22685,11 +22685,11 @@ __metadata: linkType: hard "minimatch@npm:^7.1.3": - version: 7.4.3 - resolution: "minimatch@npm:7.4.3" + version: 7.4.1 + resolution: "minimatch@npm:7.4.1" dependencies: brace-expansion: ^2.0.1 - checksum: daa954231b6859e3ba0e5fbd2486986d3cae283bb69acb7ed3833c84a293f8d7edb8514360ea62c01426ba791446b2a1e1cc0d718bed15c0212cef35c59a6b95 + checksum: fd930530878ba08e5a57eacc0e69fbc980d4c1dfeb98c6c5eba3a05a10b1f6d8dd4ecca59442a1909107b7ef891b43c005720c1a8ed1a02db962fd0327bf9557 languageName: node linkType: hard @@ -23776,6 +23776,87 @@ __metadata: languageName: node linkType: hard +"nx@npm:15.8.2, nx@npm:>=15.5.2 < 16": + version: 15.8.2 + resolution: "nx@npm:15.8.2" + dependencies: + "@nrwl/cli": 15.8.2 + "@nrwl/nx-darwin-arm64": 15.8.2 + "@nrwl/nx-darwin-x64": 15.8.2 + "@nrwl/nx-linux-arm-gnueabihf": 15.8.2 + "@nrwl/nx-linux-arm64-gnu": 15.8.2 + "@nrwl/nx-linux-arm64-musl": 15.8.2 + "@nrwl/nx-linux-x64-gnu": 15.8.2 + "@nrwl/nx-linux-x64-musl": 15.8.2 + "@nrwl/nx-win32-arm64-msvc": 15.8.2 + "@nrwl/nx-win32-x64-msvc": 15.8.2 + "@nrwl/tao": 15.8.2 + "@parcel/watcher": 2.0.4 + "@yarnpkg/lockfile": ^1.1.0 + "@yarnpkg/parsers": ^3.0.0-rc.18 + "@zkochan/js-yaml": 0.0.6 + axios: ^1.0.0 + chalk: ^4.1.0 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + cliui: ^7.0.2 + dotenv: ~10.0.0 + enquirer: ~2.3.6 + fast-glob: 3.2.7 + figures: 3.2.0 + flat: ^5.0.2 + fs-extra: ^11.1.0 + glob: 7.1.4 + ignore: ^5.0.4 + js-yaml: 4.1.0 + jsonc-parser: 3.2.0 + lines-and-columns: ~2.0.3 + minimatch: 3.0.5 + npm-run-path: ^4.0.1 + open: ^8.4.0 + semver: 7.3.4 + string-width: ^4.2.3 + strong-log-transformer: ^2.1.0 + tar-stream: ~2.2.0 + tmp: ~0.2.1 + tsconfig-paths: ^4.1.2 + tslib: ^2.3.0 + v8-compile-cache: 2.3.0 + yargs: ^17.6.2 + yargs-parser: 21.1.1 + peerDependencies: + "@swc-node/register": ^1.4.2 + "@swc/core": ^1.2.173 + dependenciesMeta: + "@nrwl/nx-darwin-arm64": + optional: true + "@nrwl/nx-darwin-x64": + optional: true + "@nrwl/nx-linux-arm-gnueabihf": + optional: true + "@nrwl/nx-linux-arm64-gnu": + optional: true + "@nrwl/nx-linux-arm64-musl": + optional: true + "@nrwl/nx-linux-x64-gnu": + optional: true + "@nrwl/nx-linux-x64-musl": + optional: true + "@nrwl/nx-win32-arm64-msvc": + optional: true + "@nrwl/nx-win32-x64-msvc": + optional: true + peerDependenciesMeta: + "@swc-node/register": + optional: true + "@swc/core": + optional: true + bin: + nx: bin/nx.js + checksum: d1f888bef8b27bec5a31a64c0420971ff5d0fc445573fe1435e7bb169f0e667ea46fdae91e520b23445527a8bb73537caa942b7016acc3d11d3b84e785104eb8 + languageName: node + linkType: hard + "nx@npm:15.8.3": version: 15.8.3 resolution: "nx@npm:15.8.3" @@ -23857,87 +23938,6 @@ __metadata: languageName: node linkType: hard -"nx@npm:15.8.8, nx@npm:>=15.5.2 < 16": - version: 15.8.8 - resolution: "nx@npm:15.8.8" - dependencies: - "@nrwl/cli": 15.8.8 - "@nrwl/nx-darwin-arm64": 15.8.8 - "@nrwl/nx-darwin-x64": 15.8.8 - "@nrwl/nx-linux-arm-gnueabihf": 15.8.8 - "@nrwl/nx-linux-arm64-gnu": 15.8.8 - "@nrwl/nx-linux-arm64-musl": 15.8.8 - "@nrwl/nx-linux-x64-gnu": 15.8.8 - "@nrwl/nx-linux-x64-musl": 15.8.8 - "@nrwl/nx-win32-arm64-msvc": 15.8.8 - "@nrwl/nx-win32-x64-msvc": 15.8.8 - "@nrwl/tao": 15.8.8 - "@parcel/watcher": 2.0.4 - "@yarnpkg/lockfile": ^1.1.0 - "@yarnpkg/parsers": ^3.0.0-rc.18 - "@zkochan/js-yaml": 0.0.6 - axios: ^1.0.0 - chalk: ^4.1.0 - cli-cursor: 3.1.0 - cli-spinners: 2.6.1 - cliui: ^7.0.2 - dotenv: ~10.0.0 - enquirer: ~2.3.6 - fast-glob: 3.2.7 - figures: 3.2.0 - flat: ^5.0.2 - fs-extra: ^11.1.0 - glob: 7.1.4 - ignore: ^5.0.4 - js-yaml: 4.1.0 - jsonc-parser: 3.2.0 - lines-and-columns: ~2.0.3 - minimatch: 3.0.5 - npm-run-path: ^4.0.1 - open: ^8.4.0 - semver: 7.3.4 - string-width: ^4.2.3 - strong-log-transformer: ^2.1.0 - tar-stream: ~2.2.0 - tmp: ~0.2.1 - tsconfig-paths: ^4.1.2 - tslib: ^2.3.0 - v8-compile-cache: 2.3.0 - yargs: ^17.6.2 - yargs-parser: 21.1.1 - peerDependencies: - "@swc-node/register": ^1.4.2 - "@swc/core": ^1.2.173 - dependenciesMeta: - "@nrwl/nx-darwin-arm64": - optional: true - "@nrwl/nx-darwin-x64": - optional: true - "@nrwl/nx-linux-arm-gnueabihf": - optional: true - "@nrwl/nx-linux-arm64-gnu": - optional: true - "@nrwl/nx-linux-arm64-musl": - optional: true - "@nrwl/nx-linux-x64-gnu": - optional: true - "@nrwl/nx-linux-x64-musl": - optional: true - "@nrwl/nx-win32-arm64-msvc": - optional: true - "@nrwl/nx-win32-x64-msvc": - optional: true - peerDependenciesMeta: - "@swc-node/register": - optional: true - "@swc/core": - optional: true - bin: - nx: bin/nx.js - checksum: d7c2a41c611a7be28499c6c3bcdd2cf975156e785d8287d12bb6590636fb8b284a9493dd5904fc57da2cdea42eaeb2c708d901f8b337fbbd376f413504e17f4d - languageName: node - linkType: hard - "oauth-sign@npm:^0.9.0, oauth-sign@npm:~0.9.0": version: 0.9.0 resolution: "oauth-sign@npm:0.9.0" @@ -26086,7 +26086,7 @@ __metadata: languageName: node linkType: hard -"qs@npm:6.11.1": +"qs@npm:6.11.1, qs@npm:^6.10.0, qs@npm:^6.10.2, qs@npm:^6.10.3, qs@npm:^6.11.0, qs@npm:^6.4.0, qs@npm:^6.5.2, qs@npm:^6.9.6": version: 6.11.1 resolution: "qs@npm:6.11.1" dependencies: @@ -26095,15 +26095,6 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.10.0, qs@npm:^6.10.2, qs@npm:^6.10.3, qs@npm:^6.11.0, qs@npm:^6.4.0, qs@npm:^6.5.2, qs@npm:^6.9.6": - version: 6.11.0 - resolution: "qs@npm:6.11.0" - dependencies: - side-channel: ^1.0.4 - checksum: 6e1f29dd5385f7488ec74ac7b6c92f4d09a90408882d0c208414a34dd33badc1a621019d4c799a3df15ab9b1d0292f97c1dd71dc7c045e69f81a8064e5af7297 - languageName: node - linkType: hard - "qs@npm:~6.5.2": version: 6.5.3 resolution: "qs@npm:6.5.3" @@ -29546,7 +29537,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:6.1.11": +"tar@npm:6.1.11, tar@npm:^6.0.2, tar@npm:^6.1.11, tar@npm:^6.1.2": version: 6.1.11 resolution: "tar@npm:6.1.11" dependencies: @@ -29560,7 +29551,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:6.1.13, tar@npm:^6.0.2, tar@npm:^6.1.11, tar@npm:^6.1.2": +"tar@npm:6.1.13": version: 6.1.13 resolution: "tar@npm:6.1.13" dependencies: From 892aeeee71e3bfaab41d1aef6edb5705c893a94b Mon Sep 17 00:00:00 2001 From: Ben Irvin Date: Mon, 27 Mar 2023 08:55:33 +0200 Subject: [PATCH 8/9] Update packages/generators/app/lib/utils/db-client-dependencies.js Co-authored-by: Alexandre BODIN --- packages/generators/app/lib/utils/db-client-dependencies.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/generators/app/lib/utils/db-client-dependencies.js b/packages/generators/app/lib/utils/db-client-dependencies.js index 3366c1eafa..d061879eab 100644 --- a/packages/generators/app/lib/utils/db-client-dependencies.js +++ b/packages/generators/app/lib/utils/db-client-dependencies.js @@ -12,7 +12,7 @@ const sqlClientModule = { * Client dependencies */ module.exports = ({ client }) => { - if (Object.keys(sqlClientModule).includes(client)) { + if (client in sqlClientModule) { return { ...sqlClientModule[client], }; From 73e1fc3510b7c4d8688b749f198fc599fec863ff Mon Sep 17 00:00:00 2001 From: Ben Irvin Date: Mon, 27 Mar 2023 09:41:14 +0200 Subject: [PATCH 9/9] fix yarn.lock --- yarn.lock | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/yarn.lock b/yarn.lock index b3ab772c01..9ef59ef39a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17227,33 +17227,6 @@ __metadata: languageName: unknown linkType: soft -"getstartedlog@workspace:examples/getstarted.log": - version: 0.0.0-use.local - resolution: "getstartedlog@workspace:examples/getstarted.log" - dependencies: - "@strapi/icons": 1.6.6 - "@strapi/plugin-color-picker": 4.8.2 - "@strapi/plugin-documentation": 4.8.2 - "@strapi/plugin-graphql": 4.8.2 - "@strapi/plugin-i18n": 4.8.2 - "@strapi/plugin-sentry": 4.8.2 - "@strapi/plugin-users-permissions": 4.8.2 - "@strapi/provider-email-mailgun": 4.8.2 - "@strapi/provider-upload-aws-s3": 4.8.2 - "@strapi/provider-upload-cloudinary": 4.8.2 - "@strapi/strapi": 4.8.2 - "@vscode/sqlite3": 5.1.2 - better-sqlite3: 8.0.1 - lodash: 4.17.21 - mysql: 2.18.1 - passport-google-oauth2: 0.2.0 - pg: 8.8.0 - react: ^17.0.2 - react-intl: 6.3.2 - sqlite3: 5.1.2 - languageName: unknown - linkType: soft - "git-raw-commits@npm:^2.0.8": version: 2.0.11 resolution: "git-raw-commits@npm:2.0.11"