From db503fc445cf6ba4fcd38300716904f5f1e72203 Mon Sep 17 00:00:00 2001 From: Aashish Agrawal Date: Sat, 4 Nov 2023 16:56:53 +0530 Subject: [PATCH 001/279] Id conflict issue solved --- packages/nocodb/src/services/datas.service.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/nocodb/src/services/datas.service.ts b/packages/nocodb/src/services/datas.service.ts index fbbc4ee5db..06495d9132 100644 --- a/packages/nocodb/src/services/datas.service.ts +++ b/packages/nocodb/src/services/datas.service.ts @@ -63,7 +63,7 @@ export class DatasService { async dataInsert( param: PathParams & { - body: unknown; + body: any; cookie: any; disableOptimization?: boolean; }, @@ -78,6 +78,10 @@ export class DatasService { dbDriver: await NcConnectionMgrv2.get(source), }); + if (param?.body?.Id) { + delete param?.body?.Id + } + return await baseModel.insert(param.body, null, param.cookie); } @@ -933,7 +937,7 @@ export class DatasService { .sort((c1, c2) => Array.isArray(fields) ? fields.indexOf(c1.title as any) - - fields.indexOf(c2.title as any) + fields.indexOf(c2.title as any) : 0, ) .filter( From 915ccbd99a9573125c8867baf264c9bafcf4a842 Mon Sep 17 00:00:00 2001 From: Aashish Agrawal Date: Sun, 12 Nov 2023 11:30:41 +0530 Subject: [PATCH 002/279] deleted columns with ai = true --- packages/nocodb/src/db/BaseModelSqlv2.ts | 18 ++++++++++++++++-- packages/nocodb/src/services/datas.service.ts | 6 +----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/packages/nocodb/src/db/BaseModelSqlv2.ts b/packages/nocodb/src/db/BaseModelSqlv2.ts index b9114ae056..e2244aec46 100644 --- a/packages/nocodb/src/db/BaseModelSqlv2.ts +++ b/packages/nocodb/src/db/BaseModelSqlv2.ts @@ -2193,7 +2193,21 @@ class BaseModelSqlv2 { await this.beforeInsert(insertObj, trx, cookie); } - await this.model.getColumns(); + const columns = await this.model.getColumns(); + + //remove auto increment columns if present in body + for (const col of columns) { + + if (col.ai == true) { + const keyName = data?.[col.column_name] !== undefined + ? col.column_name + : col.title + + if (data[keyName]) { + delete data[keyName] + } + } + } await this.prepareAttachmentData(insertObj); @@ -2211,7 +2225,7 @@ class BaseModelSqlv2 { const ai = this.model.columns.find((c) => c.ai); let ag: Column; - if (!ai) ag = this.model.columns.find((c) => c.meta?.ag); + if (!ai) ag = this.model.columns.find((c) => c.meta?.ag); // handle if autogenerated primary key is used if (ag) { diff --git a/packages/nocodb/src/services/datas.service.ts b/packages/nocodb/src/services/datas.service.ts index 06495d9132..4f3753e0c2 100644 --- a/packages/nocodb/src/services/datas.service.ts +++ b/packages/nocodb/src/services/datas.service.ts @@ -63,7 +63,7 @@ export class DatasService { async dataInsert( param: PathParams & { - body: any; + body: unknown; cookie: any; disableOptimization?: boolean; }, @@ -78,10 +78,6 @@ export class DatasService { dbDriver: await NcConnectionMgrv2.get(source), }); - if (param?.body?.Id) { - delete param?.body?.Id - } - return await baseModel.insert(param.body, null, param.cookie); } From 1370356edca8b844cc01362f3c3b046f1960e5d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D5=A1=C9=A8=D5=BC=C9=A2=D3=84=D5=A1=D6=85=D5=BC=C9=A2?= Date: Mon, 13 Nov 2023 15:04:19 +0800 Subject: [PATCH 003/279] refactor(nocodb): lint --- packages/nocodb/src/db/BaseModelSqlv2.ts | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/packages/nocodb/src/db/BaseModelSqlv2.ts b/packages/nocodb/src/db/BaseModelSqlv2.ts index e2244aec46..7ff70380c4 100644 --- a/packages/nocodb/src/db/BaseModelSqlv2.ts +++ b/packages/nocodb/src/db/BaseModelSqlv2.ts @@ -2193,18 +2193,16 @@ class BaseModelSqlv2 { await this.beforeInsert(insertObj, trx, cookie); } - const columns = await this.model.getColumns(); + const columns = await this.model.getColumns(); - //remove auto increment columns if present in body + // exclude auto increment columns in body for (const col of columns) { - - if (col.ai == true) { - const keyName = data?.[col.column_name] !== undefined - ? col.column_name - : col.title + if (col.ai === true) { + const keyName = + data?.[col.column_name] !== undefined ? col.column_name : col.title; if (data[keyName]) { - delete data[keyName] + delete data[keyName]; } } } @@ -2225,7 +2223,7 @@ class BaseModelSqlv2 { const ai = this.model.columns.find((c) => c.ai); let ag: Column; - if (!ai) ag = this.model.columns.find((c) => c.meta?.ag); + if (!ai) ag = this.model.columns.find((c) => c.meta?.ag); // handle if autogenerated primary key is used if (ag) { From 1981d3ea08346a2e5766553dc289c72915273d90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D5=A1=C9=A8=D5=BC=C9=A2=D3=84=D5=A1=D6=85=D5=BC=C9=A2?= Date: Mon, 13 Nov 2023 15:04:48 +0800 Subject: [PATCH 004/279] chore(nocodb): lint --- packages/nocodb/src/services/datas.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nocodb/src/services/datas.service.ts b/packages/nocodb/src/services/datas.service.ts index 4f3753e0c2..fbbc4ee5db 100644 --- a/packages/nocodb/src/services/datas.service.ts +++ b/packages/nocodb/src/services/datas.service.ts @@ -933,7 +933,7 @@ export class DatasService { .sort((c1, c2) => Array.isArray(fields) ? fields.indexOf(c1.title as any) - - fields.indexOf(c2.title as any) + fields.indexOf(c2.title as any) : 0, ) .filter( From aa4296f606dc4c4a638336f30a831a0a2c96f72a Mon Sep 17 00:00:00 2001 From: Aashish Agrawal Date: Mon, 13 Nov 2023 12:42:36 +0530 Subject: [PATCH 005/279] col.ai =true to col.ai --- packages/nocodb/src/db/BaseModelSqlv2.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nocodb/src/db/BaseModelSqlv2.ts b/packages/nocodb/src/db/BaseModelSqlv2.ts index 7ff70380c4..a7417541a3 100644 --- a/packages/nocodb/src/db/BaseModelSqlv2.ts +++ b/packages/nocodb/src/db/BaseModelSqlv2.ts @@ -2197,7 +2197,7 @@ class BaseModelSqlv2 { // exclude auto increment columns in body for (const col of columns) { - if (col.ai === true) { + if (col.ai) { const keyName = data?.[col.column_name] !== undefined ? col.column_name : col.title; From 888b6e693c54ba77fc42d0b66b0ae41a54268f61 Mon Sep 17 00:00:00 2001 From: Aashish Agrawal Date: Thu, 16 Nov 2023 17:33:03 +0530 Subject: [PATCH 006/279] fixed PR comments --- packages/nocodb/src/db/BaseModelSqlv2.ts | 29 ++++++++++++------------ 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/nocodb/src/db/BaseModelSqlv2.ts b/packages/nocodb/src/db/BaseModelSqlv2.ts index a7417541a3..4989c79ff6 100644 --- a/packages/nocodb/src/db/BaseModelSqlv2.ts +++ b/packages/nocodb/src/db/BaseModelSqlv2.ts @@ -2178,20 +2178,6 @@ class BaseModelSqlv2 { async insert(data, trx?, cookie?, _disableOptimization = false) { try { - await populatePk(this.model, data); - - // todo: filter based on view - const insertObj = await this.model.mapAliasToColumn( - data, - this.clientMeta, - this.dbDriver, - ); - - await this.validate(insertObj); - - if ('beforeInsert' in this) { - await this.beforeInsert(insertObj, trx, cookie); - } const columns = await this.model.getColumns(); @@ -2204,9 +2190,24 @@ class BaseModelSqlv2 { if (data[keyName]) { delete data[keyName]; } + } } + await populatePk(this.model, data); + + // todo: filter based on view + const insertObj = await this.model.mapAliasToColumn( + data, + this.clientMeta, + this.dbDriver, + ); + + await this.validate(insertObj); + + if ('beforeInsert' in this) { + await this.beforeInsert(insertObj, trx, cookie); + } await this.prepareAttachmentData(insertObj); let response; From a580aaaa4beb2a78790f53702a1b009e3dd2ca46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D5=A1=C9=A8=D5=BC=C9=A2=D3=84=D5=A1=D6=85=D5=BC=C9=A2?= Date: Mon, 20 Nov 2023 21:57:08 +0800 Subject: [PATCH 007/279] chore: local sdk --- packages/nc-gui/package.json | 2 +- packages/nocodb/package.json | 2 +- pnpm-lock.yaml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/nc-gui/package.json b/packages/nc-gui/package.json index 72f9b81c37..f8504e7917 100644 --- a/packages/nc-gui/package.json +++ b/packages/nc-gui/package.json @@ -65,7 +65,7 @@ "locale-codes": "^1.3.1", "monaco-editor": "^0.33.0", "monaco-sql-languages": "^0.11.0", - "nocodb-sdk": "0.202.8", + "nocodb-sdk": "workspace:^", "papaparse": "^5.4.1", "parse-github-url": "^1.0.2", "pinia": "^2.1.7", diff --git a/packages/nocodb/package.json b/packages/nocodb/package.json index 6054b713ec..91b3bccc9f 100644 --- a/packages/nocodb/package.json +++ b/packages/nocodb/package.json @@ -137,7 +137,7 @@ "ncp": "^2.0.0", "nestjs-kafka": "^1.0.6", "nestjs-throttler-storage-redis": "^0.3.3", - "nocodb-sdk": "0.202.8", + "nocodb-sdk": "workspace:^", "nodemailer": "^6.4.10", "object-hash": "^3.0.0", "object-sizeof": "^2.6.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c2b00c97b0..51dd55de8f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -115,7 +115,7 @@ importers: specifier: ^0.11.0 version: 0.11.0 nocodb-sdk: - specifier: 0.202.8 + specifier: workspace:^ version: link:../nocodb-sdk papaparse: specifier: ^5.4.1 @@ -656,7 +656,7 @@ importers: specifier: ^0.3.3 version: 0.3.3(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(@nestjs/throttler@4.2.1)(ioredis@5.3.2)(reflect-metadata@0.1.13) nocodb-sdk: - specifier: 0.202.8 + specifier: workspace:^ version: link:../nocodb-sdk nodemailer: specifier: ^6.4.10 From a376b83b36013e9c9cdbc38591d2731ceafe8d29 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Nov 2023 16:09:39 +0000 Subject: [PATCH 008/279] chore(renovate): Update patch --- packages/nc-gui/package.json | 2 +- packages/nocodb/package.json | 12 +- pnpm-lock.yaml | 595 ++++++++++------------------ scripts/pkg-executable/package.json | 6 +- 4 files changed, 213 insertions(+), 402 deletions(-) diff --git a/packages/nc-gui/package.json b/packages/nc-gui/package.json index f8504e7917..867daf7fa7 100644 --- a/packages/nc-gui/package.json +++ b/packages/nc-gui/package.json @@ -116,7 +116,7 @@ "@iconify-json/tabler": "^1.1.97", "@iconify-json/vscode-icons": "^1.1.29", "@intlify/unplugin-vue-i18n": "^0.12.3", - "@nuxt/image-edge": "1.0.0-28336957.57c0f74", + "@nuxt/image-edge": "1.0.0-28341483.13a120f", "@types/d3-scale": "^4.0.8", "@types/dagre": "^0.7.52", "@types/file-saver": "^2.0.7", diff --git a/packages/nocodb/package.json b/packages/nocodb/package.json index 91b3bccc9f..1d36823771 100644 --- a/packages/nocodb/package.json +++ b/packages/nocodb/package.json @@ -53,18 +53,18 @@ "@graphql-tools/merge": "^6.2.17", "@jm18457/kafkajs-msk-iam-authentication-mechanism": "^3.1.2", "@nestjs/bull": "^10.0.1", - "@nestjs/common": "^10.2.9", + "@nestjs/common": "^10.2.10", "@nestjs/config": "^3.1.1", - "@nestjs/core": "^10.2.9", + "@nestjs/core": "^10.2.10", "@nestjs/event-emitter": "^2.0.3", "@nestjs/jwt": "^10.2.0", "@nestjs/mapped-types": "^2.0.4", "@nestjs/passport": "^10.0.2", - "@nestjs/platform-express": "^10.2.9", - "@nestjs/platform-socket.io": "^10.2.9", + "@nestjs/platform-express": "^10.2.10", + "@nestjs/platform-socket.io": "^10.2.10", "@nestjs/serve-static": "^4.0.0", "@nestjs/throttler": "^4.2.1", - "@nestjs/websockets": "^10.2.9", + "@nestjs/websockets": "^10.2.10", "@ntegral/nestjs-sentry": "^4.0.0", "@sentry/node": "^6.19.7", "@techpass/passport-openidconnect": "^0.3.3", @@ -177,7 +177,7 @@ "devDependencies": { "@nestjs/cli": "^10.2.1", "@nestjs/schematics": "^10.0.3", - "@nestjs/testing": "^10.2.9", + "@nestjs/testing": "^10.2.10", "@nestjsplus/dyn-schematics": "^1.0.12", "@types/ejs": "^3.1.5", "@types/express": "^4.17.21", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 51dd55de8f..2f2ad7fdbb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -263,8 +263,8 @@ importers: specifier: ^0.12.3 version: 0.12.3(vue-i18n@9.2.2) '@nuxt/image-edge': - specifier: 1.0.0-28336957.57c0f74 - version: 1.0.0-28336957.57c0f74 + specifier: 1.0.0-28341483.13a120f + version: 1.0.0-28341483.13a120f '@types/d3-scale': specifier: ^4.0.8 version: 4.0.8 @@ -402,46 +402,46 @@ importers: version: 3.1.2 '@nestjs/bull': specifier: ^10.0.1 - version: 10.0.1(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(bull@4.11.5) + version: 10.0.1(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(bull@4.11.5) '@nestjs/common': - specifier: ^10.2.9 - version: 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) + specifier: ^10.2.10 + version: 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) '@nestjs/config': specifier: ^3.1.1 - version: 3.1.1(@nestjs/common@10.2.9)(reflect-metadata@0.1.13) + version: 3.1.1(@nestjs/common@10.2.10)(reflect-metadata@0.1.13) '@nestjs/core': - specifier: ^10.2.9 - version: 10.2.9(@nestjs/common@10.2.9)(@nestjs/platform-express@10.2.9)(@nestjs/websockets@10.2.9)(reflect-metadata@0.1.13)(rxjs@7.2.0) + specifier: ^10.2.10 + version: 10.2.10(@nestjs/common@10.2.10)(@nestjs/platform-express@10.2.10)(@nestjs/websockets@10.2.10)(reflect-metadata@0.1.13)(rxjs@7.2.0) '@nestjs/event-emitter': specifier: ^2.0.3 - version: 2.0.3(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(reflect-metadata@0.1.13) + version: 2.0.3(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(reflect-metadata@0.1.13) '@nestjs/jwt': specifier: ^10.2.0 - version: 10.2.0(@nestjs/common@10.2.9) + version: 10.2.0(@nestjs/common@10.2.10) '@nestjs/mapped-types': specifier: ^2.0.4 - version: 2.0.4(@nestjs/common@10.2.9)(reflect-metadata@0.1.13) + version: 2.0.4(@nestjs/common@10.2.10)(reflect-metadata@0.1.13) '@nestjs/passport': specifier: ^10.0.2 - version: 10.0.2(@nestjs/common@10.2.9)(passport@0.6.0) + version: 10.0.2(@nestjs/common@10.2.10)(passport@0.6.0) '@nestjs/platform-express': - specifier: ^10.2.9 - version: 10.2.9(@nestjs/common@10.2.9)(@nestjs/core@10.2.9) + specifier: ^10.2.10 + version: 10.2.10(@nestjs/common@10.2.10)(@nestjs/core@10.2.10) '@nestjs/platform-socket.io': - specifier: ^10.2.9 - version: 10.2.9(@nestjs/common@10.2.9)(@nestjs/websockets@10.2.9)(rxjs@7.2.0) + specifier: ^10.2.10 + version: 10.2.10(@nestjs/common@10.2.10)(@nestjs/websockets@10.2.10)(rxjs@7.2.0) '@nestjs/serve-static': specifier: ^4.0.0 - version: 4.0.0(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(express@4.18.2) + version: 4.0.0(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(express@4.18.2) '@nestjs/throttler': specifier: ^4.2.1 - version: 4.2.1(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(reflect-metadata@0.1.13) + version: 4.2.1(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(reflect-metadata@0.1.13) '@nestjs/websockets': - specifier: ^10.2.9 - version: 10.2.9(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(@nestjs/platform-socket.io@10.2.9)(reflect-metadata@0.1.13)(rxjs@7.2.0) + specifier: ^10.2.10 + version: 10.2.10(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(@nestjs/platform-socket.io@10.2.10)(reflect-metadata@0.1.13)(rxjs@7.2.0) '@ntegral/nestjs-sentry': specifier: ^4.0.0 - version: 4.0.0(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(@sentry/hub@7.74.1)(@sentry/node@6.19.7)(graphql@15.3.0)(reflect-metadata@0.1.13)(rimraf@3.0.2)(rxjs@7.2.0) + version: 4.0.0(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(@sentry/hub@7.74.1)(@sentry/node@6.19.7)(graphql@15.3.0)(reflect-metadata@0.1.13)(rimraf@3.0.2)(rxjs@7.2.0) '@sentry/node': specifier: ^6.19.7 version: 6.19.7 @@ -654,7 +654,7 @@ importers: version: 1.0.6(debug@4.3.4)(kafkajs@2.2.4)(reflect-metadata@0.1.13) nestjs-throttler-storage-redis: specifier: ^0.3.3 - version: 0.3.3(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(@nestjs/throttler@4.2.1)(ioredis@5.3.2)(reflect-metadata@0.1.13) + version: 0.3.3(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(@nestjs/throttler@4.2.1)(ioredis@5.3.2)(reflect-metadata@0.1.13) nocodb-sdk: specifier: workspace:^ version: link:../nocodb-sdk @@ -771,8 +771,8 @@ importers: specifier: ^10.0.3 version: 10.0.3(chokidar@3.5.3)(typescript@5.2.2) '@nestjs/testing': - specifier: ^10.2.9 - version: 10.2.9(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(@nestjs/platform-express@10.2.9) + specifier: ^10.2.10 + version: 10.2.10(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(@nestjs/platform-express@10.2.10) '@nestjsplus/dyn-schematics': specifier: ^1.0.12 version: 1.0.12 @@ -2833,28 +2833,6 @@ packages: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} - /@babel/core@7.22.11: - resolution: {integrity: sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.10 - '@babel/helper-compilation-targets': 7.22.10 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) - '@babel/helpers': 7.22.11 - '@babel/parser': 7.23.0 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.11 - '@babel/types': 7.23.0 - convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - /@babel/core@7.23.2: resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} engines: {node: '>=6.9.0'} @@ -2876,16 +2854,6 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - - /@babel/generator@7.22.10: - resolution: {integrity: sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.19 - jsesc: 2.5.2 /@babel/generator@7.23.0: resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} @@ -2895,7 +2863,6 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 - dev: true /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} @@ -2904,16 +2871,6 @@ packages: '@babel/types': 7.23.0 dev: true - /@babel/helper-compilation-targets@7.22.10: - resolution: {integrity: sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.22.9 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.10 - lru-cache: 5.1.1 - semver: 6.3.1 - /@babel/helper-compilation-targets@7.22.15: resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} @@ -2923,21 +2880,20 @@ packages: browserslist: 4.21.10 lru-cache: 5.1.1 semver: 6.3.1 - dev: true - /@babel/helper-create-class-features-plugin@7.22.11(@babel/core@7.22.11): + /@babel/helper-create-class-features-plugin@7.22.11(@babel/core@7.23.2): resolution: {integrity: sha512-y1grdYL4WzmUDBRGK0pDbIoFd7UZKoDurDzWEoNMYoj1EL+foGRQNyPWDcC+YyegN5y1DUsFFmzjGijB3nSVAQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.22.5 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.11) + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.23.2) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 @@ -2951,8 +2907,8 @@ packages: dependencies: '@babel/core': 7.23.2 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) @@ -2964,18 +2920,6 @@ packages: /@babel/helper-environment-visitor@7.22.20: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-environment-visitor@7.22.5: - resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} - engines: {node: '>=6.9.0'} - - /@babel/helper-function-name@7.22.5: - resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.23.0 /@babel/helper-function-name@7.23.0: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} @@ -2983,7 +2927,6 @@ packages: dependencies: '@babel/template': 7.22.15 '@babel/types': 7.23.0 - dev: true /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} @@ -3010,26 +2953,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.0 - dev: true - - /@babel/helper-module-imports@7.22.5: - resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - - /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.11): - resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2): resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} @@ -3043,7 +2966,6 @@ packages: '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 - dev: true /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} @@ -3069,14 +2991,14 @@ packages: '@babel/helper-optimise-call-expression': 7.22.5 dev: true - /@babel/helper-replace-supers@7.22.9(@babel/core@7.22.11): + /@babel/helper-replace-supers@7.22.9(@babel/core@7.23.2): resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.11 - '@babel/helper-environment-visitor': 7.22.5 + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.22.5 '@babel/helper-optimise-call-expression': 7.22.5 dev: true @@ -3111,21 +3033,6 @@ packages: /@babel/helper-validator-option@7.22.15: resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-option@7.22.5: - resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} - engines: {node: '>=6.9.0'} - - /@babel/helpers@7.22.11: - resolution: {integrity: sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.11 - '@babel/types': 7.23.0 - transitivePeerDependencies: - - supports-color /@babel/helpers@7.23.2: resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} @@ -3136,7 +3043,6 @@ packages: '@babel/types': 7.23.0 transitivePeerDependencies: - supports-color - dev: true /@babel/highlight@7.22.20: resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} @@ -3167,30 +3073,30 @@ packages: '@babel/plugin-syntax-decorators': 7.22.10(@babel/core@7.23.2) dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.11): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.2): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.11): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.11): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.2): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -3214,15 +3120,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.11): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -3232,22 +3129,12 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.11): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.11): - resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -3261,77 +3148,67 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.11): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.11): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.11): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.11): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.11): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.11): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.11): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.2): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.11): - resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -3345,17 +3222,17 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typescript@7.22.11(@babel/core@7.22.11): + /@babel/plugin-transform-typescript@7.22.11(@babel/core@7.23.2): resolution: {integrity: sha512-0E4/L+7gfvHub7wsbTv03oRtD69X31LByy44fGmFzbZScpupFByMcgCJ0VbBTkzyjSJKuRoGN8tcijOWKTmqOA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.11(@babel/core@7.22.11) + '@babel/helper-create-class-features-plugin': 7.22.11(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2) dev: true /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.23.2): @@ -3389,32 +3266,6 @@ packages: '@babel/code-frame': 7.22.13 '@babel/parser': 7.23.0 '@babel/types': 7.23.0 - dev: true - - /@babel/template@7.22.5: - resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 - - /@babel/traverse@7.22.11: - resolution: {integrity: sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.10 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 - debug: 4.3.4(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color /@babel/traverse@7.23.2: resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} @@ -3432,7 +3283,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true /@babel/types@7.23.0: resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} @@ -4895,7 +4745,7 @@ packages: resolution: {integrity: sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.19 babel-plugin-istanbul: 6.1.1 @@ -5096,27 +4946,27 @@ packages: dev: false optional: true - /@nestjs/bull-shared@10.0.1(@nestjs/common@10.2.9)(@nestjs/core@10.2.9): + /@nestjs/bull-shared@10.0.1(@nestjs/common@10.2.10)(@nestjs/core@10.2.10): resolution: {integrity: sha512-8Td36l2i5x9+iQWjPB5Bd5+6u5Eangb5DclNcwrdwKqvd28xE92MSW97P4JV52C2kxrTjZwx8ck/wObAwtpQPw==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 dependencies: - '@nestjs/common': 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/core': 10.2.9(@nestjs/common@10.2.9)(@nestjs/platform-express@10.2.9)(@nestjs/websockets@10.2.9)(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/common': 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/core': 10.2.10(@nestjs/common@10.2.10)(@nestjs/platform-express@10.2.10)(@nestjs/websockets@10.2.10)(reflect-metadata@0.1.13)(rxjs@7.2.0) tslib: 2.6.0 dev: false - /@nestjs/bull@10.0.1(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(bull@4.11.5): + /@nestjs/bull@10.0.1(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(bull@4.11.5): resolution: {integrity: sha512-1GcJ8BkHDgQdBMZ7SqAqgUHiFnISXmpGvewFeTc8wf87JLk2PweiKv9j9/KQKU+NI237pCe82XB0bXzTnsdxSw==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 bull: ^3.3 || ^4.0.0 dependencies: - '@nestjs/bull-shared': 10.0.1(@nestjs/common@10.2.9)(@nestjs/core@10.2.9) - '@nestjs/common': 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/core': 10.2.9(@nestjs/common@10.2.9)(@nestjs/platform-express@10.2.9)(@nestjs/websockets@10.2.9)(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/bull-shared': 10.0.1(@nestjs/common@10.2.10)(@nestjs/core@10.2.10) + '@nestjs/common': 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/core': 10.2.10(@nestjs/common@10.2.10)(@nestjs/platform-express@10.2.10)(@nestjs/websockets@10.2.10)(reflect-metadata@0.1.13)(rxjs@7.2.0) bull: 4.11.5 tslib: 2.6.0 dev: false @@ -5163,8 +5013,8 @@ packages: - webpack-cli dev: true - /@nestjs/common@10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0): - resolution: {integrity: sha512-i7vb2zMLJUDIPqjfBhMkgIITK1AnKDkFYSsM+aaRHpNa9xv/CwsiQuINaXfzStMpnwjkq5FDE3aoF0wkTfD2cQ==} + /@nestjs/common@10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0): + resolution: {integrity: sha512-fwAk931rjW8CNH2Mgwawq/7HWHH1dxkOLdcgs7U52ddLk8CtHXjejm1cbNahewlSbNhvlOl7y1STLHutE6sUqw==} peerDependencies: class-transformer: '*' class-validator: '*' @@ -5208,13 +5058,13 @@ packages: - debug dev: false - /@nestjs/config@3.1.1(@nestjs/common@10.2.9)(reflect-metadata@0.1.13): + /@nestjs/config@3.1.1(@nestjs/common@10.2.10)(reflect-metadata@0.1.13): resolution: {integrity: sha512-qu5QlNiJdqQtOsnB6lx4JCXPQ96jkKUsOGd+JXfXwqJqZcOSAq6heNFg0opW4pq4J/VZoNwoo87TNnx9wthnqQ==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 reflect-metadata: ^0.1.13 dependencies: - '@nestjs/common': 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/common': 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) dotenv: 16.3.1 dotenv-expand: 10.0.0 lodash: 4.17.21 @@ -5222,8 +5072,8 @@ packages: uuid: 9.0.0 dev: false - /@nestjs/core@10.2.9(@nestjs/common@10.2.9)(@nestjs/platform-express@10.2.9)(@nestjs/websockets@10.2.9)(reflect-metadata@0.1.13)(rxjs@7.2.0): - resolution: {integrity: sha512-Hl6HC9hR7JD3YmzwcveBKeydaq9cguEsMdEghzLuVH3VEH0M+bTFHjCIKhsxMez4/O7/K6n3EhNx1Et4Z+BqWg==} + /@nestjs/core@10.2.10(@nestjs/common@10.2.10)(@nestjs/platform-express@10.2.10)(@nestjs/websockets@10.2.10)(reflect-metadata@0.1.13)(rxjs@7.2.0): + resolution: {integrity: sha512-+ckOI6BPi2ZMHikT9MCG4ctHDc4OnjhoIytrn7f2AYMMXI4bnutJhqyQKc30VDka5x3Wq6QAD57pgSP7y+JjJg==} requiresBuild: true peerDependencies: '@nestjs/common': ^10.0.0 @@ -5240,9 +5090,9 @@ packages: '@nestjs/websockets': optional: true dependencies: - '@nestjs/common': 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/platform-express': 10.2.9(@nestjs/common@10.2.9)(@nestjs/core@10.2.9) - '@nestjs/websockets': 10.2.9(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(@nestjs/platform-socket.io@10.2.9)(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/common': 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/platform-express': 10.2.10(@nestjs/common@10.2.10)(@nestjs/core@10.2.10) + '@nestjs/websockets': 10.2.10(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(@nestjs/platform-socket.io@10.2.10)(reflect-metadata@0.1.13)(rxjs@7.2.0) '@nuxtjs/opencollective': 0.3.2 fast-safe-stringify: 2.1.1 iterare: 1.2.1 @@ -5254,20 +5104,20 @@ packages: transitivePeerDependencies: - encoding - /@nestjs/event-emitter@2.0.3(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(reflect-metadata@0.1.13): + /@nestjs/event-emitter@2.0.3(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(reflect-metadata@0.1.13): resolution: {integrity: sha512-Pt7KAERrgK0OjvarSI3wfVhwZ8X1iLq1lXuodyRe+Zx3aLLP7fraFUHirASbFkB6KIQ1Zj+gZ1g8a9eu4GfFhw==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 reflect-metadata: ^0.1.12 dependencies: - '@nestjs/common': 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/core': 10.2.9(@nestjs/common@10.2.9)(@nestjs/platform-express@10.2.9)(@nestjs/websockets@10.2.9)(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/common': 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/core': 10.2.10(@nestjs/common@10.2.10)(@nestjs/platform-express@10.2.10)(@nestjs/websockets@10.2.10)(reflect-metadata@0.1.13)(rxjs@7.2.0) eventemitter2: 6.4.9 reflect-metadata: 0.1.13 dev: false - /@nestjs/graphql@10.2.1(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(graphql@15.3.0)(reflect-metadata@0.1.13): + /@nestjs/graphql@10.2.1(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(graphql@15.3.0)(reflect-metadata@0.1.13): resolution: {integrity: sha512-FBzYTymT4oopiGMpej7GTRyhz1BgJxLlXZPUueamC5J9u1WxCwJyETkzBI/zeUkUydlklF/xd5zDd/Md6//hEw==} requiresBuild: true peerDependencies: @@ -5292,9 +5142,9 @@ packages: '@graphql-tools/merge': 8.3.18(graphql@15.3.0) '@graphql-tools/schema': 9.0.16(graphql@15.3.0) '@graphql-tools/utils': 9.2.1(graphql@15.3.0) - '@nestjs/common': 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/core': 10.2.9(@nestjs/common@10.2.9)(@nestjs/platform-express@10.2.9)(@nestjs/websockets@10.2.9)(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/mapped-types': 1.2.2(@nestjs/common@10.2.9)(reflect-metadata@0.1.13) + '@nestjs/common': 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/core': 10.2.10(@nestjs/common@10.2.10)(@nestjs/platform-express@10.2.10)(@nestjs/websockets@10.2.10)(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/mapped-types': 1.2.2(@nestjs/common@10.2.10)(reflect-metadata@0.1.13) chokidar: 3.5.3 fast-glob: 3.2.12 graphql: 15.3.0 @@ -5313,17 +5163,17 @@ packages: dev: false optional: true - /@nestjs/jwt@10.2.0(@nestjs/common@10.2.9): + /@nestjs/jwt@10.2.0(@nestjs/common@10.2.10): resolution: {integrity: sha512-x8cG90SURkEiLOehNaN2aRlotxT0KZESUliOPKKnjWiyJOcWurkF3w345WOX0P4MgFzUjGoZ1Sy0aZnxeihT0g==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 dependencies: - '@nestjs/common': 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/common': 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) '@types/jsonwebtoken': 9.0.5 jsonwebtoken: 9.0.2 dev: false - /@nestjs/mapped-types@1.2.2(@nestjs/common@10.2.9)(reflect-metadata@0.1.13): + /@nestjs/mapped-types@1.2.2(@nestjs/common@10.2.10)(reflect-metadata@0.1.13): resolution: {integrity: sha512-3dHxLXs3M0GPiriAcCFFJQHoDFUuzTD5w6JDhE7TyfT89YKpe6tcCCIqOZWdXmt9AZjjK30RkHRSFF+QEnWFQg==} requiresBuild: true peerDependencies: @@ -5337,12 +5187,12 @@ packages: class-validator: optional: true dependencies: - '@nestjs/common': 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/common': 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) reflect-metadata: 0.1.13 dev: false optional: true - /@nestjs/mapped-types@2.0.4(@nestjs/common@10.2.9)(reflect-metadata@0.1.13): + /@nestjs/mapped-types@2.0.4(@nestjs/common@10.2.10)(reflect-metadata@0.1.13): resolution: {integrity: sha512-xl+gUSp0B+ln1VSNoUftlglk8dfpUes3DHGxKZ5knuBxS5g2H/8p9/DSBOYWUfO5f4u9s6ffBPZ71WO+tbe5SA==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 @@ -5355,28 +5205,28 @@ packages: class-validator: optional: true dependencies: - '@nestjs/common': 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/common': 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) reflect-metadata: 0.1.13 dev: false - /@nestjs/passport@10.0.2(@nestjs/common@10.2.9)(passport@0.6.0): + /@nestjs/passport@10.0.2(@nestjs/common@10.2.10)(passport@0.6.0): resolution: {integrity: sha512-od31vfB2z3y05IDB5dWSbCGE2+pAf2k2WCBinNuTTOxN0O0+wtO1L3kawj/aCW3YR9uxsTOVbTDwtwgpNNsnjQ==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 passport: ^0.4.0 || ^0.5.0 || ^0.6.0 dependencies: - '@nestjs/common': 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/common': 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) passport: 0.6.0 dev: false - /@nestjs/platform-express@10.2.9(@nestjs/common@10.2.9)(@nestjs/core@10.2.9): - resolution: {integrity: sha512-r6BSMJmLLeNgyPZJ9F8wQWCXH6rrMHMd9QbCfvyUmETci5Ofy6atiYVVXl7Ms1rAi2EEnXpVCuoydHBBqSlTbg==} + /@nestjs/platform-express@10.2.10(@nestjs/common@10.2.10)(@nestjs/core@10.2.10): + resolution: {integrity: sha512-U4KDgtMjH8TqEvt0RzC/POP8ABvL9bYoCScvlGtFSKgVGaMLBKkZ4+jHtbQx6qItYSlBBRUuz/dveMZCObfrkQ==} peerDependencies: '@nestjs/common': ^10.0.0 '@nestjs/core': ^10.0.0 dependencies: - '@nestjs/common': 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/core': 10.2.9(@nestjs/common@10.2.9)(@nestjs/platform-express@10.2.9)(@nestjs/websockets@10.2.9)(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/common': 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/core': 10.2.10(@nestjs/common@10.2.10)(@nestjs/platform-express@10.2.10)(@nestjs/websockets@10.2.10)(reflect-metadata@0.1.13)(rxjs@7.2.0) body-parser: 1.20.2 cors: 2.8.5 express: 4.18.2 @@ -5385,15 +5235,15 @@ packages: transitivePeerDependencies: - supports-color - /@nestjs/platform-socket.io@10.2.9(@nestjs/common@10.2.9)(@nestjs/websockets@10.2.9)(rxjs@7.2.0): - resolution: {integrity: sha512-xuXsUWUtgzdRnNBSWZADQv0sShBOsyHK7iEwwIpFMerqbthSMwjsyUv0s3hDoPEnS6Nf4MMf2KReD5JBAnMBFQ==} + /@nestjs/platform-socket.io@10.2.10(@nestjs/common@10.2.10)(@nestjs/websockets@10.2.10)(rxjs@7.2.0): + resolution: {integrity: sha512-JBuemeIBp2mpp+z7D12oa22k83TnDTxyQDMKZpO/B2/QnBVR+2C4EZ07/XOct14LQXO6vIjmT0iYYCZbNvczjw==} peerDependencies: '@nestjs/common': ^10.0.0 '@nestjs/websockets': ^10.0.0 rxjs: ^7.1.0 dependencies: - '@nestjs/common': 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/websockets': 10.2.9(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(@nestjs/platform-socket.io@10.2.9)(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/common': 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/websockets': 10.2.10(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(@nestjs/platform-socket.io@10.2.10)(reflect-metadata@0.1.13)(rxjs@7.2.0) rxjs: 7.2.0 socket.io: 4.7.2 tslib: 2.6.2 @@ -5417,7 +5267,7 @@ packages: - chokidar dev: true - /@nestjs/serve-static@4.0.0(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(express@4.18.2): + /@nestjs/serve-static@4.0.0(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(express@4.18.2): resolution: {integrity: sha512-8cTrNV2ngdHIjiLNsXePnw0+KY1ThrZGz/WeyAG5gIvmZNDbnZBOrPoYlKL+MOzlXlQStxR5jKLYmn+nJeoncQ==} peerDependencies: '@fastify/static': ^6.5.0 @@ -5433,14 +5283,14 @@ packages: fastify: optional: true dependencies: - '@nestjs/common': 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/core': 10.2.9(@nestjs/common@10.2.9)(@nestjs/platform-express@10.2.9)(@nestjs/websockets@10.2.9)(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/common': 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/core': 10.2.10(@nestjs/common@10.2.10)(@nestjs/platform-express@10.2.10)(@nestjs/websockets@10.2.10)(reflect-metadata@0.1.13)(rxjs@7.2.0) express: 4.18.2 path-to-regexp: 0.2.5 dev: false - /@nestjs/testing@10.2.9(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(@nestjs/platform-express@10.2.9): - resolution: {integrity: sha512-E+66R27Op+WAQHHH6RnUsz7QpKApl4Bn42nheCAGvS/sxbaDJ8RKtm4stE4Iz2aioPCUvRi8j4z8Ze73k0CcGQ==} + /@nestjs/testing@10.2.10(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(@nestjs/platform-express@10.2.10): + resolution: {integrity: sha512-IVLUnPz/+fkBtPATYfqTIP+phN9yjkXejmj+JyhmcfPJZpxBmD1i9VSMqa4u54l37j0xkGPscQ0IXpbhqMYUKw==} peerDependencies: '@nestjs/common': ^10.0.0 '@nestjs/core': ^10.0.0 @@ -5452,27 +5302,27 @@ packages: '@nestjs/platform-express': optional: true dependencies: - '@nestjs/common': 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/core': 10.2.9(@nestjs/common@10.2.9)(@nestjs/platform-express@10.2.9)(@nestjs/websockets@10.2.9)(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/platform-express': 10.2.9(@nestjs/common@10.2.9)(@nestjs/core@10.2.9) + '@nestjs/common': 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/core': 10.2.10(@nestjs/common@10.2.10)(@nestjs/platform-express@10.2.10)(@nestjs/websockets@10.2.10)(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/platform-express': 10.2.10(@nestjs/common@10.2.10)(@nestjs/core@10.2.10) tslib: 2.6.2 dev: true - /@nestjs/throttler@4.2.1(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(reflect-metadata@0.1.13): + /@nestjs/throttler@4.2.1(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(reflect-metadata@0.1.13): resolution: {integrity: sha512-wVPMuIyr0KdrK1RVVQceWVNesogCm9IgYC1V5EkaTZ+usIE4qxEyzdwU5IqQLgOO/Loiq98MLwReDxazX7i9Uw==} peerDependencies: '@nestjs/common': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 '@nestjs/core': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 reflect-metadata: ^0.1.13 dependencies: - '@nestjs/common': 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/core': 10.2.9(@nestjs/common@10.2.9)(@nestjs/platform-express@10.2.9)(@nestjs/websockets@10.2.9)(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/common': 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/core': 10.2.10(@nestjs/common@10.2.10)(@nestjs/platform-express@10.2.10)(@nestjs/websockets@10.2.10)(reflect-metadata@0.1.13)(rxjs@7.2.0) md5: 2.3.0 reflect-metadata: 0.1.13 dev: false - /@nestjs/websockets@10.2.9(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(@nestjs/platform-socket.io@10.2.9)(reflect-metadata@0.1.13)(rxjs@7.2.0): - resolution: {integrity: sha512-Hp/ioNMcBtCzkubgcDHeA5KH4YLBL1jHfMEacLctKDa20Kn/LFXhJhXVWEr4jEzUKXbD+Q+GyYk1V/1rJi6eHA==} + /@nestjs/websockets@10.2.10(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(@nestjs/platform-socket.io@10.2.10)(reflect-metadata@0.1.13)(rxjs@7.2.0): + resolution: {integrity: sha512-L1AkxwLUj/ntk26jO1SXYl3GRElQE6Fikzfy/3MPFURk0GDs7tHUzLcb8BC8q8u5ZpUjBAC2wFVQzrY5R0MHNw==} peerDependencies: '@nestjs/common': ^10.0.0 '@nestjs/core': ^10.0.0 @@ -5483,9 +5333,9 @@ packages: '@nestjs/platform-socket.io': optional: true dependencies: - '@nestjs/common': 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/core': 10.2.9(@nestjs/common@10.2.9)(@nestjs/platform-express@10.2.9)(@nestjs/websockets@10.2.9)(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/platform-socket.io': 10.2.9(@nestjs/common@10.2.9)(@nestjs/websockets@10.2.9)(rxjs@7.2.0) + '@nestjs/common': 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/core': 10.2.10(@nestjs/common@10.2.10)(@nestjs/platform-express@10.2.10)(@nestjs/websockets@10.2.10)(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/platform-socket.io': 10.2.10(@nestjs/common@10.2.10)(@nestjs/websockets@10.2.10)(rxjs@7.2.0) iterare: 1.2.1 object-hash: 3.0.0 reflect-metadata: 0.1.13 @@ -5684,7 +5534,7 @@ packages: - debug dev: true - /@ntegral/nestjs-sentry@4.0.0(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(@sentry/hub@7.74.1)(@sentry/node@6.19.7)(graphql@15.3.0)(reflect-metadata@0.1.13)(rimraf@3.0.2)(rxjs@7.2.0): + /@ntegral/nestjs-sentry@4.0.0(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(@sentry/hub@7.74.1)(@sentry/node@6.19.7)(graphql@15.3.0)(reflect-metadata@0.1.13)(rimraf@3.0.2)(rxjs@7.2.0): resolution: {integrity: sha512-6WHZcK7NLeg7ue1y3Z61msEBzCGZeXQ0hWhliH1ddQH0kPbZ6lXLxduGMWYb0N/fPjXAX1Astz8urqnoTOZBQw==} peerDependencies: '@nestjs/common': ^9.0.4 @@ -5695,15 +5545,15 @@ packages: rimraf: ^3.0.2 rxjs: ^7.2.0 dependencies: - '@nestjs/common': 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/core': 10.2.9(@nestjs/common@10.2.9)(@nestjs/platform-express@10.2.9)(@nestjs/websockets@10.2.9)(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/common': 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/core': 10.2.10(@nestjs/common@10.2.10)(@nestjs/platform-express@10.2.10)(@nestjs/websockets@10.2.10)(reflect-metadata@0.1.13)(rxjs@7.2.0) '@sentry/hub': 7.74.1 '@sentry/node': 6.19.7 reflect-metadata: 0.1.13 rimraf: 3.0.2 rxjs: 7.2.0 optionalDependencies: - '@nestjs/graphql': 10.2.1(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(graphql@15.3.0)(reflect-metadata@0.1.13) + '@nestjs/graphql': 10.2.1(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(graphql@15.3.0)(reflect-metadata@0.1.13) transitivePeerDependencies: - '@apollo/subgraph' - bufferutil @@ -5818,8 +5668,8 @@ packages: - xml2js dev: true - /@nuxt/image-edge@1.0.0-28336957.57c0f74: - resolution: {integrity: sha512-BFdDkRiRE0k8AgmH4B3SkfKPOpOcmHaBQtR9MTAXoZPngAa/nO+eK9bdnrUpCKVIJEYkEVBpgLHVXVD41tSwRw==} + /@nuxt/image-edge@1.0.0-28341483.13a120f: + resolution: {integrity: sha512-ZhLrNO4B51tJs8nFXnGM53+yPXernc18GmfYGPR/THFFwHTLbaLkQZl/P7hJXaPP0zlH8+8rwd+x+lchwzumEA==} engines: {node: ^14.16.0 || >=16.11.0} dependencies: '@nuxt/kit': 3.8.1 @@ -5855,7 +5705,7 @@ packages: engines: {node: ^14.18.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0} dependencies: '@nuxt/schema': 3.4.0 - c12: 1.4.2 + c12: 1.5.1 consola: 3.2.3 defu: 6.1.3 globby: 13.2.2 @@ -5870,7 +5720,7 @@ packages: scule: 1.0.0 semver: 7.5.4 unctx: 2.3.1 - unimport: 3.2.0 + unimport: 3.4.0(rollup@3.29.4) untyped: 1.4.0 transitivePeerDependencies: - rollup @@ -5884,7 +5734,7 @@ packages: '@nuxt/schema': 3.7.0 c12: 1.4.2 consola: 3.2.3 - defu: 6.1.2 + defu: 6.1.3 globby: 13.2.2 hash-sum: 2.0.0 ignore: 5.2.4 @@ -5895,7 +5745,7 @@ packages: pkg-types: 1.0.3 scule: 1.0.0 semver: 7.5.4 - ufo: 1.3.0 + ufo: 1.3.2 unctx: 2.3.1 unimport: 3.2.0 untyped: 1.4.0 @@ -5921,7 +5771,7 @@ packages: pkg-types: 1.0.3 scule: 1.0.0 semver: 7.5.4 - ufo: 1.3.1 + ufo: 1.3.2 unctx: 2.3.1 unimport: 3.4.0(rollup@3.29.4) untyped: 1.4.0 @@ -5934,7 +5784,7 @@ packages: resolution: {integrity: sha512-i04UuprxtMaBK1qCaAupJEIkUUJDt6vyMpBTJ0aajAxehL6O6xV3xqHB5iqDBmtOWlsRL8vGM+M/E/5E+lKuPg==} engines: {node: ^14.18.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0} dependencies: - c12: 1.4.2 + c12: 1.5.1 create-require: 1.1.1 defu: 6.1.3 hookable: 5.5.3 @@ -5943,9 +5793,9 @@ packages: pkg-types: 1.0.3 postcss-import-resolver: 2.0.0 scule: 1.0.0 - std-env: 3.4.3 - ufo: 1.3.1 - unimport: 3.2.0 + std-env: 3.5.0 + ufo: 1.3.2 + unimport: 3.4.0(rollup@3.29.4) untyped: 1.4.0 transitivePeerDependencies: - rollup @@ -5962,9 +5812,9 @@ packages: pathe: 1.1.1 pkg-types: 1.0.3 postcss-import-resolver: 2.0.0 - std-env: 3.4.3 - ufo: 1.3.1 - unimport: 3.2.0 + std-env: 3.5.0 + ufo: 1.3.2 + unimport: 3.4.0(rollup@3.29.4) untyped: 1.4.0 transitivePeerDependencies: - rollup @@ -5980,8 +5830,8 @@ packages: hookable: 5.5.3 pathe: 1.1.1 pkg-types: 1.0.3 - std-env: 3.4.3 - ufo: 1.3.1 + std-env: 3.5.0 + ufo: 1.3.2 unimport: 3.4.0(rollup@3.29.4) untyped: 1.4.0 transitivePeerDependencies: @@ -6009,7 +5859,7 @@ packages: parse-git-config: 3.0.0 pathe: 1.1.1 rc9: 2.1.1 - std-env: 3.4.3 + std-env: 3.5.0 transitivePeerDependencies: - rollup - supports-color @@ -6049,9 +5899,9 @@ packages: pkg-types: 1.0.3 postcss: 8.4.31 rollup-plugin-visualizer: 5.9.2(rollup@3.29.4) - std-env: 3.4.3 + std-env: 3.5.0 strip-literal: 1.3.0 - ufo: 1.3.1 + ufo: 1.3.2 unplugin: 1.5.0 vite: 4.5.0(sass@1.69.5) vite-node: 0.33.0(sass@1.69.5) @@ -7888,6 +7738,7 @@ packages: /@trysound/sax@0.2.0: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} + requiresBuild: true dev: true /@tsconfig/node10@1.0.9: @@ -9102,9 +8953,9 @@ packages: vite: ^4.0.0 vue: latest dependencies: - '@babel/core': 7.22.11 - '@babel/plugin-transform-typescript': 7.22.11(@babel/core@7.22.11) - '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.22.11) + '@babel/core': 7.23.2 + '@babel/plugin-transform-typescript': 7.22.11(@babel/core@7.23.2) + '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.2) vite: 4.5.0(sass@1.69.5) vue: 3.3.8 transitivePeerDependencies: @@ -9217,35 +9068,16 @@ packages: resolution: {integrity: sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==} dev: true - /@vue/babel-plugin-jsx@1.1.5(@babel/core@7.22.11): - resolution: {integrity: sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-module-imports': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.11) - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.11 - '@babel/types': 7.23.0 - '@vue/babel-helper-vue-transform-on': 1.1.5 - camelcase: 6.3.0 - html-tags: 3.3.1 - svg-tags: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: true - /@vue/babel-plugin-jsx@1.1.5(@babel/core@7.23.2): resolution: {integrity: sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.2 - '@babel/helper-module-imports': 7.22.5 + '@babel/helper-module-imports': 7.22.15 '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.11 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 '@babel/types': 7.23.0 '@vue/babel-helper-vue-transform-on': 1.1.5 camelcase: 6.3.0 @@ -10500,17 +10332,17 @@ packages: requiresBuild: true dev: true - /babel-jest@29.6.4(@babel/core@7.22.11): + /babel-jest@29.6.4(@babel/core@7.23.2): resolution: {integrity: sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@jest/transform': 29.6.4 '@types/babel__core': 7.20.1 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.22.11) + babel-preset-jest: 29.6.3(@babel/core@7.23.2) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -10535,41 +10367,41 @@ packages: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.22.5 + '@babel/template': 7.22.15 '@babel/types': 7.23.0 '@types/babel__core': 7.20.1 '@types/babel__traverse': 7.20.1 dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.11): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.2): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.11 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.11) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.11) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.11) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.11) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.11) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.11) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.11) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.11) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.11) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.11) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.11) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.11) - dev: true - - /babel-preset-jest@29.6.3(@babel/core@7.22.11): + '@babel/core': 7.23.2 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.2) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.23.2): resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.11) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.2) dev: true /backo2@1.0.2: @@ -11257,12 +11089,6 @@ packages: engines: {node: '>=8'} dev: true - /citty@0.1.3: - resolution: {integrity: sha512-tb6zTEb2BDSrzFedqFYFUKUuKNaxVJWCm7o02K4kADGkBDyyiz7D40rDMpguczdZyAN3aetd5fhpB01HkreNyg==} - dependencies: - consola: 3.2.3 - dev: true - /citty@0.1.4: resolution: {integrity: sha512-Q3bK1huLxzQrvj7hImJ7Z1vKYJRPQCDnd0EjXfHMidcjecGOMuLrmuQmtWmFkuKLcMThlGh1yCKG8IEc6VeNXQ==} dependencies: @@ -11770,10 +11596,10 @@ packages: /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: true /cookie-es@1.0.0: resolution: {integrity: sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==} @@ -12158,6 +11984,7 @@ packages: /csso@5.0.5: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + requiresBuild: true dependencies: css-tree: 2.2.1 dev: true @@ -12500,6 +12327,7 @@ packages: /defu@6.1.2: resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} + dev: true /defu@6.1.3: resolution: {integrity: sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==} @@ -14033,7 +13861,7 @@ packages: enhanced-resolve: 5.15.0 mlly: 1.4.2 pathe: 1.1.1 - ufo: 1.3.1 + ufo: 1.3.2 dev: true /extract-zip@2.0.1: @@ -15147,7 +14975,7 @@ packages: destr: 2.0.2 iron-webcrypto: 0.8.0 radix3: 1.1.0 - ufo: 1.3.1 + ufo: 1.3.2 uncrypto: 0.1.3 unenv: 1.7.4 dev: true @@ -15945,6 +15773,7 @@ packages: /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + requiresBuild: true /is-finalizationregistry@1.0.2: resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} @@ -16297,7 +16126,7 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@babel/parser': 7.23.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 @@ -16310,7 +16139,7 @@ packages: resolution: {integrity: sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@babel/parser': 7.23.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 @@ -16470,11 +16299,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@jest/test-sequencer': 29.6.4 '@jest/types': 29.6.3 '@types/node': 20.3.3 - babel-jest: 29.6.4(@babel/core@7.22.11) + babel-jest: 29.6.4(@babel/core@7.23.2) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.1 @@ -16710,15 +16539,15 @@ packages: resolution: {integrity: sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.11 - '@babel/generator': 7.22.10 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.11) + '@babel/core': 7.23.2 + '@babel/generator': 7.23.0 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2) '@babel/types': 7.23.0 '@jest/expect-utils': 29.6.4 '@jest/transform': 29.6.4 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.11) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.2) chalk: 4.1.2 expect: 29.6.4 graceful-fs: 4.2.11 @@ -17462,7 +17291,7 @@ packages: dependencies: '@parcel/watcher': 2.3.0 '@parcel/watcher-wasm': 2.3.0 - citty: 0.1.3 + citty: 0.1.4 clipboardy: 3.0.0 consola: 3.2.3 defu: 6.1.3 @@ -17473,7 +17302,7 @@ packages: mlly: 1.4.2 node-forge: 1.3.1 pathe: 1.1.1 - ufo: 1.3.1 + ufo: 1.3.2 untun: 0.1.2 uqr: 0.1.2 dev: true @@ -18327,7 +18156,7 @@ packages: acorn: 8.11.2 pathe: 1.1.1 pkg-types: 1.0.3 - ufo: 1.3.1 + ufo: 1.3.2 /mlly@1.4.2: resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} @@ -18335,7 +18164,7 @@ packages: acorn: 8.11.2 pathe: 1.1.1 pkg-types: 1.0.3 - ufo: 1.3.1 + ufo: 1.3.2 /mocha@10.1.0: resolution: {integrity: sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg==} @@ -18685,7 +18514,7 @@ packages: - reflect-metadata dev: false - /nestjs-throttler-storage-redis@0.3.3(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(@nestjs/throttler@4.2.1)(ioredis@5.3.2)(reflect-metadata@0.1.13): + /nestjs-throttler-storage-redis@0.3.3(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(@nestjs/throttler@4.2.1)(ioredis@5.3.2)(reflect-metadata@0.1.13): resolution: {integrity: sha512-AwiWgcugi3wfE0loWJhcubgxCWDfnPy9M2BQOQFZhozc7PGktjJRIMlydwhDQzWYtRrgZT92cSIup20iQ/x+lA==} peerDependencies: '@nestjs/common': '>=9.4.1' @@ -18694,9 +18523,9 @@ packages: ioredis: ^5.3.2 reflect-metadata: ^0.1.13 dependencies: - '@nestjs/common': 10.2.9(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/core': 10.2.9(@nestjs/common@10.2.9)(@nestjs/platform-express@10.2.9)(@nestjs/websockets@10.2.9)(reflect-metadata@0.1.13)(rxjs@7.2.0) - '@nestjs/throttler': 4.2.1(@nestjs/common@10.2.9)(@nestjs/core@10.2.9)(reflect-metadata@0.1.13) + '@nestjs/common': 10.2.10(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/core': 10.2.10(@nestjs/common@10.2.10)(@nestjs/platform-express@10.2.10)(@nestjs/websockets@10.2.10)(reflect-metadata@0.1.13)(rxjs@7.2.0) + '@nestjs/throttler': 4.2.1(@nestjs/common@10.2.10)(@nestjs/core@10.2.10)(reflect-metadata@0.1.13) ioredis: 5.3.2 reflect-metadata: 0.1.13 dev: false @@ -18771,8 +18600,8 @@ packages: semver: 7.5.4 serve-placeholder: 2.0.1 serve-static: 1.15.0 - std-env: 3.4.3 - ufo: 1.3.1 + std-env: 3.5.0 + ufo: 1.3.2 uncrypto: 0.1.3 unctx: 2.3.1 unenv: 1.7.4 @@ -19456,7 +19285,7 @@ packages: citty: 0.1.4 execa: 8.0.1 pathe: 1.1.1 - ufo: 1.3.1 + ufo: 1.3.2 dev: true /oauth-sign@0.9.0: @@ -19549,7 +19378,7 @@ packages: dependencies: destr: 2.0.2 node-fetch-native: 1.4.1 - ufo: 1.3.1 + ufo: 1.3.2 dev: true /ohash@1.1.3: @@ -20574,7 +20403,7 @@ packages: dependencies: postcss: 8.4.31 postcss-value-parser: 4.2.0 - svgo: 3.0.2 + svgo: 3.0.4 dev: true /postcss-unique-selectors@6.0.0(postcss@8.4.31): @@ -22278,10 +22107,10 @@ packages: /std-env@3.4.3: resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} + dev: true /std-env@3.5.0: resolution: {integrity: sha512-JGUEaALvL0Mf6JCfYnJOTcobY+Nc7sG/TemDRBqCA0wEr4DER7zDchaaixTlmOxAjG1uRJmX82EQcxwTQTkqVA==} - dev: true /step@0.0.6: resolution: {integrity: sha512-qSSeQinUJk2w38vUFobjFoE307GqsozMC8VisOCkJLpklvKPT0ptPHwWOrENoag8rgLudvTkfP3bancwP93/Jw==} @@ -22610,19 +22439,6 @@ packages: resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} dev: true - /svgo@3.0.2: - resolution: {integrity: sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==} - engines: {node: '>=14.0.0'} - hasBin: true - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 5.1.0 - css-tree: 2.3.1 - csso: 5.0.5 - picocolors: 1.0.0 - dev: true - /svgo@3.0.4: resolution: {integrity: sha512-T+Xul3JwuJ6VGXKo/p2ndqx1ibxNKnLTvRc1ZTWKCfyKS/GgNjRZcYsK84fxTsy/izr91g/Rwx6fGnVgaFSI5g==} engines: {node: '>=14.0.0'} @@ -22637,7 +22453,6 @@ packages: csso: 5.0.5 picocolors: 1.0.0 dev: true - optional: true /symbol-observable@1.2.0: resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==} @@ -23444,15 +23259,12 @@ packages: hasBin: true dev: true - /ufo@1.3.0: - resolution: {integrity: sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==} - /ufo@1.3.1: resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} + dev: true /ufo@1.3.2: resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} - dev: true /uglify-js@3.17.4: resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} @@ -23583,7 +23395,6 @@ packages: unplugin: 1.5.0 transitivePeerDependencies: - rollup - dev: true /unique-filename@1.1.1: resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} @@ -23842,7 +23653,7 @@ packages: mri: 1.2.0 node-fetch-native: 1.4.1 ofetch: 1.3.3 - ufo: 1.3.1 + ufo: 1.3.2 transitivePeerDependencies: - supports-color dev: true @@ -23857,7 +23668,7 @@ packages: hasBin: true requiresBuild: true dependencies: - citty: 0.1.3 + citty: 0.1.4 consola: 3.2.3 pathe: 1.1.1 dev: true @@ -23866,7 +23677,7 @@ packages: resolution: {integrity: sha512-Egkr/s4zcMTEuulcIb7dgURS6QpN7DyqQYdf+jBtiaJvQ+eRsrtWUoX84SbvQWuLkXsOjM+8sJC9u6KoMK/U7Q==} hasBin: true dependencies: - '@babel/core': 7.22.11 + '@babel/core': 7.23.2 '@babel/standalone': 7.22.12 '@babel/types': 7.23.0 defu: 6.1.3 @@ -24456,7 +24267,7 @@ packages: /vue-bundle-renderer@2.0.0: resolution: {integrity: sha512-oYATTQyh8XVkUWe2kaKxhxKVuuzK2Qcehe+yr3bGiaQAhK3ry2kYE4FWOfL+KO3hVFwCdLmzDQTzYhTi9C+R2A==} dependencies: - ufo: 1.3.1 + ufo: 1.3.2 dev: true /vue-chartjs@5.2.0(chart.js@4.4.0)(vue@3.3.8): diff --git a/scripts/pkg-executable/package.json b/scripts/pkg-executable/package.json index 45510d98d8..bdb8b65d47 100644 --- a/scripts/pkg-executable/package.json +++ b/scripts/pkg-executable/package.json @@ -28,8 +28,8 @@ "license": "ISC", "dependencies": { "express": "^4.17.3", - "nocodb": "0.202.7", - "@nestjs/common": "^10.2.9", - "@nestjs/core": "^10.2.9" + "nocodb": "0.202.8", + "@nestjs/common": "^10.2.10", + "@nestjs/core": "^10.2.10" } } From 93e6608a22f8aa036d45f6d8cf3a884a2681a49e Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:14 +0000 Subject: [PATCH 009/279] New translations en.json (French) --- packages/nc-gui/lang/fr.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/fr.json b/packages/nc-gui/lang/fr.json index 247c232b25..8bca8d2a7c 100644 --- a/packages/nc-gui/lang/fr.json +++ b/packages/nc-gui/lang/fr.json @@ -591,6 +591,7 @@ "goToDashboard": "Accéder au tableau de bord", "importing": "Importation de", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Aplatir imbriqué", "downloadAllowed": "Téléchargement autorisé", From 7d0753bf983062acceb9793821b64ce9bb6428da Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:15 +0000 Subject: [PATCH 010/279] New translations en.json (Spanish) --- packages/nc-gui/lang/es.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/es.json b/packages/nc-gui/lang/es.json index c78f3aad74..4068527f58 100644 --- a/packages/nc-gui/lang/es.json +++ b/packages/nc-gui/lang/es.json @@ -591,6 +591,7 @@ "goToDashboard": "Ir al panel de control", "importing": "Importación de", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Aplanar anidado", "downloadAllowed": "Descarga permitida", From 6122818dfb77dd3e9ce1bd95d893b5afdef7d6c6 Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:16 +0000 Subject: [PATCH 011/279] New translations en.json (Arabic) --- packages/nc-gui/lang/ar.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/ar.json b/packages/nc-gui/lang/ar.json index 5e178e477c..ba5fc20966 100644 --- a/packages/nc-gui/lang/ar.json +++ b/packages/nc-gui/lang/ar.json @@ -591,6 +591,7 @@ "goToDashboard": "الذهاب إلى لوحة التحكم", "importing": "الاستيراد", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "متداخلة متقطعة", "downloadAllowed": "التحميل المسموح به", From c8b795eba13a34f31d2471ca9470a2a5d1bc0a2a Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:18 +0000 Subject: [PATCH 012/279] New translations en.json (Czech) --- packages/nc-gui/lang/cs.json | 97 ++++++++++++++++++------------------ 1 file changed, 49 insertions(+), 48 deletions(-) diff --git a/packages/nc-gui/lang/cs.json b/packages/nc-gui/lang/cs.json index 8f30d52c3f..98b4f27c36 100644 --- a/packages/nc-gui/lang/cs.json +++ b/packages/nc-gui/lang/cs.json @@ -1,12 +1,12 @@ { "dashboards": { "create_new_dashboard_project": "Create New Interface", - "connect_data_sources": "Connect data sources", + "connect_data_sources": "Připojit zdroje dat", "alert": "Alert", "alert-message": "No databases have been connected. Connect database bases to build interfaces. Skip this step and add databases from the base home page later.", "select_database_projects_that_you_want_to_link_to_this_dashboard_projects": "Select Database Bases that you want to link to this Interface.", "create_interface": "Create interface", - "project_name": "Base Name", + "project_name": "Název projektu", "connect": "Connect", "buttonActionTypes": { "open_external_url": "Open external link", @@ -67,9 +67,9 @@ "null": "Null", "escape": "Escape", "hex": "Hex", - "clear": "Clear", + "clear": "Vyprázdnit", "slack": "Slack", - "comment": "Comment", + "comment": "Komentář", "microsoftTeams": "Microsoft Teams", "discord": "Discord", "matterMost": "Mattermost", @@ -77,10 +77,10 @@ "whatsappTwilio": "WhatsApp Twilio", "submit": "Potvrdit", "create": "Vytvořit", - "createEntity": "Create {entity}", - "creating": "Creating", - "creatingEntity": "Creating {entity}", - "details": "Details", + "createEntity": "Vytvořit {entity}", + "creating": "Vytváření", + "creatingEntity": "Vytvářím {entity}", + "details": "Podrobnosti", "skip": "Skip", "duplicate": "Duplikovat", "duplicating": "Duplicating", @@ -88,7 +88,7 @@ "action": "Action", "insert": "Vložit", "delete": "Smazat", - "deleteEntity": "Delete {entity}", + "deleteEntity": "Odstranit {entity}", "bulkInsert": "Bulk Insert", "bulkDelete": "Bulk Delete", "bulkUpdate": "Bulk Update", @@ -100,7 +100,7 @@ "install": "Instalovat", "show": "Zobrazit", "access": "Access", - "visibility": "Visibility", + "visibility": "Viditelnost", "hide": "Skrýt", "deprecated": "Deprecated", "showAll": "Zobrazit vše", @@ -134,7 +134,7 @@ "after": "Po", "before": "Před", "search": "Hledat", - "searchIn": "Search In", + "searchIn": "Hledat v", "notification": "Oznámení", "reference": "Odkaz", "function": "Funkce", @@ -160,8 +160,8 @@ "sortDesc": "Seřadit sestupně", "move": "Move", "geoDataField": "Pole geodat", - "type": "Type", - "name": "Name", + "type": "Typ", + "name": "Název", "changes": "Changes", "new": "New", "old": "Old", @@ -228,19 +228,19 @@ "commenter": "Komentátor", "viewer": "Sledující", "noaccess": "No Access", - "superAdmin": "Super Admin", + "superAdmin": "Hlavní administrátor", "orgLevelCreator": "Tvůrce na úrovni organizace", "orgLevelViewer": "Prohlížeč na úrovni organizace" }, "sqlVIew": "SQL pohled", - "rowHeight": "Record Height", + "rowHeight": "Výška řádku", "heightClass": { - "short": "Short", - "medium": "Medium", - "tall": "Tall", - "extra": "Extra" + "short": "Krátký", + "medium": "Střední", + "tall": "Vyšší", + "extra": "Nejvyšší" }, - "externalDb": "External Database" + "externalDb": "Externí databáze" }, "datatype": { "ID": "ID", @@ -295,15 +295,15 @@ "isNotNull": "není null" }, "title": { - "docs": "Docs", - "forum": "Forum", + "docs": "Dokumentace", + "forum": "Fórum", "parameter": "Parameter", "headers": "Headers", "parameterName": "Parameter Name", "currencyLocale": "Currency Locale", - "currencyCode": "Currency Code", - "searchMembers": "Search Members", - "noMembersFound": "No members found", + "currencyCode": "Kód měny", + "searchMembers": "Vyhledávání členů", + "noMembersFound": "Nenalezeni žádní členové", "dateJoined": "Date Joined", "tokenName": "Token name", "inDesktop": "in Desktop", @@ -312,7 +312,7 @@ "qrCode": "QR Code", "termsOfService": "Terms of Service", "updateSelectedRows": "Update Selected Records", - "noFiltersAdded": "No filters added", + "noFiltersAdded": "Nepřidány žádné filtry", "editCards": "Edit Cards", "noFieldsFound": "No fields found", "displayValue": "Display Value", @@ -325,7 +325,7 @@ "virtualRelation": "Virtual Relation", "linkMore": "Link More", "linkMoreRecords": "Link more records", - "downloadFile": "Download File", + "downloadFile": "Stáhnout soubor", "renameTable": "Rename Table", "renamingTable": "Renaming Table", "renamingWs": "Renaming Workspace", @@ -341,7 +341,7 @@ "erdView": "Zobrazení ERD", "newBase": "New Data Source", "newProj": "Nový projekt", - "createBase": "Create Base", + "createBase": "Vytvořit projekt", "myProject": "Moje projekty", "formTitle": "Název formuláře", "collaborative": "Collaborative", @@ -391,15 +391,15 @@ "findRowByScanningCode": "Find row by scanning a QR or Barcode", "tokenManagement": "Token Management", "addNewToken": "Add new token", - "accountSettings": "Account Settings", + "accountSettings": "Nastavení účtu", "resetPasswordMenu": "Reset Password", "tokens": "Tokens", "userManagement": "User Management", "accountManagement": "Account management", "licence": "Licence", "allowAllMimeTypes": "Allow All Mime Types", - "defaultView": "Default View", - "relations": "Relations", + "defaultView": "Základní pohled", + "relations": "Relace", "switchLanguage": "Switch Language", "renameFile": "Rename File", "links": { @@ -411,11 +411,11 @@ } }, "labels": { - "downloadData": "Download Data", + "downloadData": "Stáhnout data", "noToken": "No Token", "tokenLimit": "Only one token per user is allowed", "duplicateAttachment": "File with name {filename} already attached", - "viewIdColon": "VIEW ID: {viewId}", + "viewIdColon": "ID Pohledu: {viewId}", "toAddress": "To Address", "subject": "Subject", "body": "Body", @@ -425,14 +425,14 @@ "max": "Max", "idColon": "Id:", "copiedRecordURL": "Copied Record URL", - "copyRecordURL": "Copy Record URL", + "copyRecordURL": "Kopírovat URL záznamu", "duplicateRecord": "Duplicate record", "binaryEncodingFormat": "Binary encoding format", "syntax": "Syntax", "examples": "Examples", "durationInfo": "A duration of time in minutes or seconds (e.g. 1:23).", "addHeader": "Add Header", - "enterDefaultUrlOptional": "Enter default URL (Optional)", + "enterDefaultUrlOptional": "Zadejte výchozí URL (volitelné)", "negative": "Negative", "discard": "Discard", "default": "Default", @@ -442,7 +442,7 @@ "timeFormat": "Time Format", "singularLabel": "Singular Label", "pluralLabel": "Plural Label", - "optional": "(Optional)", + "optional": "(nepovinné)", "clickToMake": "Click to make", "visibleForRole": "visible for role:", "inUI": "in UI Dashboard", @@ -450,12 +450,12 @@ "clickToHide": "Click to hide", "clickToDownload": "Click to download", "forRole": "for role", - "clickToCopyViewID": "Click to copy View ID", - "viewMode": "View Mode", + "clickToCopyViewID": "Kliknutím zkopírujete ID pohledu", + "viewMode": "Režim zobrazení", "searchUsers": "Search Users", "superAdmin": "Super Admin", "allTables": "All Tables", - "members": "Members", + "members": "Členové", "dataSources": "Data Sources", "connectDataSource": "Connect a Data Source", "searchProjects": "Search Bases", @@ -470,13 +470,13 @@ "accountDetails": "Account Details", "controlAppearance": "Control your Appearance.", "accountEmailID": "Account Email ID", - "backToWorkspace": "Back to Workspace", + "backToWorkspace": "Zpět na přehled projektů", "untitledToken": "Untitled token", "tableName": "Název tabulky", "dashboardName": "Dashboard name", - "createView": "Create a View", + "createView": "Vytvořit pohled", "creatingView": "Creating View", - "duplicateView": "Duplicate View", + "duplicateView": "Duplikovat pohled", "duplicateGridView": "Duplicate Grid View", "createGridView": "Create Grid View", "duplicateGalleryView": "Duplicate Gallery View", @@ -579,7 +579,7 @@ "requestDataSource": "Požadujete zdroj dat, který potřebujete?", "apiKey": "API klíč", "personalAccessToken": "Personal Access Token", - "sharedBaseUrl": "Shared Base URL", + "sharedBaseUrl": "Sdílet URL projektu", "importData": "Importovat data", "importSecondaryViews": "Import sekundárních zobrazení", "importRollupColumns": "Import sloupců rollupu", @@ -591,6 +591,7 @@ "goToDashboard": "Přejít na přehled", "importing": "Importování", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Zploštění vnořených", "downloadAllowed": "Stažení povoleno", @@ -647,12 +648,12 @@ "outOfSync": "Out of sync", "newSource": "New Data Source", "newWebhook": "New Webhook", - "enablePublicAccess": "Enable Public Access", + "enablePublicAccess": "Povolit veřejný přístup", "doYouWantToSaveTheChanges": "Do you want to save the changes ?", "editingAccess": "Editing access", "enabledPublicViewing": "Enable public viewing", "restrictAccessWithPassword": "Restrict access with password", - "manageProjectAccess": "Manage Base Access", + "manageProjectAccess": "Správa přístupu k projektu", "allowDownload": "Allow Download", "surveyMode": "Survey Mode", "rtlOrientation": "RTL Orientation", @@ -700,10 +701,10 @@ "filter": "Filtr", "addFilter": "Přidat filtr", "share": "Sdílet", - "groupBy": "Group By", + "groupBy": "Seskupit dle", "addSubGroup": "Add subgroup", "shareBase": { - "label": "Share base", + "label": "Sdílet projekt", "disable": "Zakázat sdílenou základnu", "enable": "Kdokoli s odkazem", "link": "Sdílený základní odkaz" @@ -767,7 +768,7 @@ "ListView": "Seznam pohledů", "copyView": "Kopírovat pohled", "renameView": "Přejmenovat pohled", - "uploadData": "Upload Data", + "uploadData": "Nahrát data", "deleteView": "Odstranit pohled", "createGrid": "Vytvoření zobrazení mřížky", "createGallery": "Vytvořit zobrazení galerie", From 19be9987a22fa279282f2c5ef71ac8947be3bdfc Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:19 +0000 Subject: [PATCH 013/279] New translations en.json (Danish) --- packages/nc-gui/lang/da.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/da.json b/packages/nc-gui/lang/da.json index 76b5b5f9d0..6e06a7f013 100644 --- a/packages/nc-gui/lang/da.json +++ b/packages/nc-gui/lang/da.json @@ -591,6 +591,7 @@ "goToDashboard": "Gå til Dashboard", "importing": "Import af", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Flade, indlejrede", "downloadAllowed": "Download tilladt", From 4966fb30ed199ab907ed1b40322820604af0699c Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:20 +0000 Subject: [PATCH 014/279] New translations en.json (German) --- packages/nc-gui/lang/de.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/de.json b/packages/nc-gui/lang/de.json index b58bd6517d..4a92db8e6e 100644 --- a/packages/nc-gui/lang/de.json +++ b/packages/nc-gui/lang/de.json @@ -591,6 +591,7 @@ "goToDashboard": "Zum Dashboard gehen", "importing": "Wird importiert", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Verflachen Verschachtelt", "downloadAllowed": "Download erlaubt", From c50d6d882f2188096b7e2a6232bc44de65d87746 Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:21 +0000 Subject: [PATCH 015/279] New translations en.json (Basque) --- packages/nc-gui/lang/eu.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/eu.json b/packages/nc-gui/lang/eu.json index 185f86f5db..5bbb9cac8b 100644 --- a/packages/nc-gui/lang/eu.json +++ b/packages/nc-gui/lang/eu.json @@ -591,6 +591,7 @@ "goToDashboard": "Go to Dashboard", "importing": "Importing", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Flatten Nested", "downloadAllowed": "Download allowed", From 67012e5af0cc97c1b645dfa7fe6a49c23a7790dc Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:22 +0000 Subject: [PATCH 016/279] New translations en.json (Finnish) --- packages/nc-gui/lang/fi.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/fi.json b/packages/nc-gui/lang/fi.json index ff6656a35f..cfd904aa03 100644 --- a/packages/nc-gui/lang/fi.json +++ b/packages/nc-gui/lang/fi.json @@ -591,6 +591,7 @@ "goToDashboard": "Siirry kojelautaan", "importing": "Tuo", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Flatten Nested", "downloadAllowed": "Lataa sallittu", From 7b38356c26331753471375ff0de1d2e7a257283c Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:23 +0000 Subject: [PATCH 017/279] New translations en.json (Hebrew) --- packages/nc-gui/lang/he.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/he.json b/packages/nc-gui/lang/he.json index 10ef925741..67c92d0414 100644 --- a/packages/nc-gui/lang/he.json +++ b/packages/nc-gui/lang/he.json @@ -591,6 +591,7 @@ "goToDashboard": "Go to Dashboard", "importing": "מייבא", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Flatten Nested", "downloadAllowed": "Download allowed", From 727dfd2d46f195b19a14a10ff7f30739d5dc7b9f Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:25 +0000 Subject: [PATCH 018/279] New translations en.json (Italian) --- packages/nc-gui/lang/it.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/it.json b/packages/nc-gui/lang/it.json index 68261a1eaa..6d7f31e147 100644 --- a/packages/nc-gui/lang/it.json +++ b/packages/nc-gui/lang/it.json @@ -591,6 +591,7 @@ "goToDashboard": "Vada alla Dashboard", "importing": "Importazione", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Appiattisci annidato", "downloadAllowed": "Download consentito", From 3471c291aacd58a246e98e946d1a7f0422490fd6 Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:26 +0000 Subject: [PATCH 019/279] New translations en.json (Japanese) --- packages/nc-gui/lang/ja.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/ja.json b/packages/nc-gui/lang/ja.json index 3f80b8730f..d8684eee04 100644 --- a/packages/nc-gui/lang/ja.json +++ b/packages/nc-gui/lang/ja.json @@ -591,6 +591,7 @@ "goToDashboard": "ダッシュボードに移動", "importing": "インポート中", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "入れ子を平坦化", "downloadAllowed": "ダウンロードを許可", From 11f655c5e5e0be0cc2882e7bd30c94a790d18cb0 Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:27 +0000 Subject: [PATCH 020/279] New translations en.json (Korean) --- packages/nc-gui/lang/ko.json | 479 ++++++++++++++++++----------------- 1 file changed, 240 insertions(+), 239 deletions(-) diff --git a/packages/nc-gui/lang/ko.json b/packages/nc-gui/lang/ko.json index 7359035a5f..e252bb7388 100644 --- a/packages/nc-gui/lang/ko.json +++ b/packages/nc-gui/lang/ko.json @@ -1,45 +1,45 @@ { "dashboards": { - "create_new_dashboard_project": "Create New Interface", - "connect_data_sources": "Connect data sources", - "alert": "Alert", - "alert-message": "No databases have been connected. Connect database bases to build interfaces. Skip this step and add databases from the base home page later.", - "select_database_projects_that_you_want_to_link_to_this_dashboard_projects": "Select Database Bases that you want to link to this Interface.", - "create_interface": "Create interface", - "project_name": "Base Name", - "connect": "Connect", + "create_new_dashboard_project": "새 인터페이스 만들기", + "connect_data_sources": "데이터소스 연결", + "alert": "알림", + "alert-message": "연결된 데이터베이스가 없습니다. 데이터베이스 베이스를 연결하여 인터페이스를 만듭니다. 이 단계를 건너뛰고 나중에 베이스 홈 페이지에서 데이터베이스를 추가합니다.", + "select_database_projects_that_you_want_to_link_to_this_dashboard_projects": "이 인터페이스에 연결할 데이터베이스를 선택합니다.", + "create_interface": "새 인터페이스 만들기", + "project_name": "기본 이름", + "connect": "연결", "buttonActionTypes": { - "open_external_url": "Open external link", - "delete_record": "Delete record", - "update_record": "Update record", - "open_layout": "Open layout" + "open_external_url": "외부 링크로 이동", + "delete_record": "행 삭제", + "update_record": "레코드 업데이트", + "open_layout": "레이아웃 열기" }, "widgets": { - "static_text": "Text", - "chart": "Chart", - "table": "Table", - "image": "Image", - "map": "Map", - "button": "Button", - "number": "Number", - "bar_chart": "Bar Chart", - "line_chart": "Line Chart", - "area_chart": "Area Chart", - "pie_chart": "Pie Chart", - "donut_chart": "Donut Chart", - "scatter_plot": "Scatter Plot", - "bubble_chart": "Bubble Chart", - "radar_chart": "Radar Chart", - "polar_area_chart": "Polar Area Chart", - "radial_bar_chart": "Radial Bar Chart", - "heatmap_chart": "Heatmap Chart", - "treemap_chart": "Treemap Chart", - "box_plot_chart": "Box Plot Chart", - "candlestick_chart": "Candlestick Chart" + "static_text": "텍스트", + "chart": "차트", + "table": "표", + "image": "이미지", + "map": "지도", + "button": "버튼", + "number": "숫자", + "bar_chart": "막대 차트", + "line_chart": "꺽은선형 차트", + "area_chart": "면적도", + "pie_chart": "파이 차트", + "donut_chart": "도넛 차트", + "scatter_plot": "분포도", + "bubble_chart": "버블 차트", + "radar_chart": "막대 차트", + "polar_area_chart": "극지방 차트", + "radial_bar_chart": "방사형 막대 차트", + "heatmap_chart": "히트맵 차트", + "treemap_chart": "트리맵 차트", + "box_plot_chart": "박스 플롯 차트", + "candlestick_chart": "캔들 스틱 차트" } }, "general": { - "quit": "Quit", + "quit": "나가기", "home": "홈", "load": "불러오기", "open": "열기", @@ -47,29 +47,29 @@ "yes": "네", "no": "아니요", "ok": "확인", - "back": "Back", + "back": "뒤로", "and": "그리고", "or": "또는", "add": "추가", "edit": "편집", - "link": "Link", - "links": "Links", + "link": "링크", + "links": "링크", "remove": "제거", - "import": "Import", - "logout": "Log Out", - "empty": "Empty", - "changeIcon": "Change Icon", + "import": "가져오기", + "logout": "로그아웃", + "empty": "비어 있음", + "changeIcon": "아이콘 변경", "save": "저장", - "available": "Available", - "abort": "Abort", - "saving": "Saving", + "available": "사용가능", + "abort": "중지", + "saving": "저장", "cancel": "취소", - "null": "Null", + "null": "없음", "escape": "Escape", - "hex": "Hex", - "clear": "Clear", - "slack": "Slack", - "comment": "Comment", + "hex": "16진수", + "clear": "지우기", + "slack": "슬랙", + "comment": "코멘트", "microsoftTeams": "Microsoft Teams", "discord": "Discord", "matterMost": "Mattermost", @@ -183,14 +183,14 @@ "join": "Join", "options": "Options", "primaryValue": "Primary Value", - "useSurveyMode": "Use Survey Mode", + "useSurveyMode": "설문 조사 모드 사용", "shift": "Shift", "enter": "Enter", - "seconds": "Seconds" + "seconds": "초" }, "objects": { - "workspace": "Workspace", - "workspaces": "Workspaces", + "workspace": "작업 공간", + "workspaces": "작업 공간", "project": "프로젝트", "projects": "프로젝트", "table": "테이블", @@ -207,7 +207,7 @@ "webhooks": "웹훅", "view": "뷰", "views": "뷰", - "sidebar": "Sidebar", + "sidebar": "사이드바", "viewType": { "grid": "그리드", "gallery": "갤러리", @@ -220,27 +220,27 @@ "users": "사용자", "role": "역할", "roles": "역할", - "developer": "Developer", + "developer": "개발자", "roleType": { "owner": "소유자", "creator": "생성자", "editor": "편집자", "commenter": "해설자", "viewer": "뷰어", - "noaccess": "No Access", - "superAdmin": "Super Admin", + "noaccess": "권한 없음", + "superAdmin": "최고 운영자", "orgLevelCreator": "조직 수준 생성", "orgLevelViewer": "조직 수준 뷰어" }, "sqlVIew": "SQL View", - "rowHeight": "Record Height", + "rowHeight": "최고치", "heightClass": { - "short": "Short", - "medium": "Medium", - "tall": "Tall", - "extra": "Extra" + "short": "짧음", + "medium": "중간", + "tall": "높음", + "extra": "추가" }, - "externalDb": "External Database" + "externalDb": "외부 데이터베이스" }, "datatype": { "ID": "ID", @@ -295,40 +295,40 @@ "isNotNull": "null 값이 아님" }, "title": { - "docs": "Docs", - "forum": "Forum", - "parameter": "Parameter", - "headers": "Headers", - "parameterName": "Parameter Name", - "currencyLocale": "Currency Locale", - "currencyCode": "Currency Code", - "searchMembers": "Search Members", - "noMembersFound": "No members found", - "dateJoined": "Date Joined", - "tokenName": "Token name", - "inDesktop": "in Desktop", - "rowData": "Record data", - "creator": "Creator", - "qrCode": "QR Code", - "termsOfService": "Terms of Service", - "updateSelectedRows": "Update Selected Records", - "noFiltersAdded": "No filters added", - "editCards": "Edit Cards", - "noFieldsFound": "No fields found", - "displayValue": "Display Value", - "expand": "Expand", - "hideAll": "Hide all", - "hideSystemFields": "Hide system fields", - "removeFile": "Remove File", - "hasMany": "Has Many", - "manyToMany": "Many to Many", - "virtualRelation": "Virtual Relation", - "linkMore": "Link More", - "linkMoreRecords": "Link more records", - "downloadFile": "Download File", - "renameTable": "Rename Table", - "renamingTable": "Renaming Table", - "renamingWs": "Renaming Workspace", + "docs": "문서", + "forum": "포럼", + "parameter": "매개 변수", + "headers": "제목", + "parameterName": "매개변수 이름", + "currencyLocale": "통화 로케일", + "currencyCode": "통화 코드", + "searchMembers": "회원 검색", + "noMembersFound": "회원을 찾을 수 없습니다.", + "dateJoined": "가입일", + "tokenName": "토큰명", + "inDesktop": "데스크톱에서", + "rowData": "데이터 기록", + "creator": "생성자", + "qrCode": "QR코드", + "termsOfService": "서비스 이용 약관", + "updateSelectedRows": "선택한 레코드 업데이트", + "noFiltersAdded": "추가한 필터 없음", + "editCards": "카드 편집", + "noFieldsFound": "필드를 찾을 수 없습니다.", + "displayValue": "값 표시", + "expand": "펼쳐보기", + "hideAll": "모두 숨기기", + "hideSystemFields": "시스템 필드 숨기기", + "removeFile": "파일삭제", + "hasMany": "많이", + "manyToMany": "다대다", + "virtualRelation": "가상 관계", + "linkMore": "링크 더 보기", + "linkMoreRecords": "더 많은 레코드 연결", + "downloadFile": "파일 다운로드", + "renameTable": "테이블 이름 변경", + "renamingTable": "테이블 이름 바꾸기", + "renamingWs": "작업 공간 이름 바꾸기", "renameWs": "Rename Workspace", "deleteWs": "Delete Workspace", "deletingWs": "Deleting Workspace", @@ -373,7 +373,7 @@ "importFromAirtable": "Airtable에서 불러오기", "generateToken": "Token 생성", "APIsAndSupport": "API 및 지원", - "helpCenter": "Help center", + "helpCenter": "도움말 센터", "noLabels": "No Labels", "swaggerDocumentation": "Swagger 문서", "quickImportFrom": "Quick Import From", @@ -388,7 +388,7 @@ "codeSnippet": "코드 스니펫", "keyboardShortcut": "키보드 단축키", "generateRandomName": "랜덤 이름 생성", - "findRowByScanningCode": "Find row by scanning a QR or Barcode", + "findRowByScanningCode": "QR 또는 바코드를 스캔하여 행 찾기", "tokenManagement": "Token Management", "addNewToken": "Add new token", "accountSettings": "Account Settings", @@ -421,60 +421,60 @@ "body": "Body", "commaSeparatedMobileNumber": "Comma separated Mobile #", "headerName": "Header Name", - "icon": "Icon", - "max": "Max", + "icon": "아이콘", + "max": "최대", "idColon": "Id:", - "copiedRecordURL": "Copied Record URL", - "copyRecordURL": "Copy Record URL", - "duplicateRecord": "Duplicate record", - "binaryEncodingFormat": "Binary encoding format", + "copiedRecordURL": "레코드 URL을 복사했습니다.", + "copyRecordURL": "레코드 URL 복사", + "duplicateRecord": "행 복제", + "binaryEncodingFormat": "바이너리 인코딩 형식", "syntax": "Syntax", - "examples": "Examples", - "durationInfo": "A duration of time in minutes or seconds (e.g. 1:23).", - "addHeader": "Add Header", - "enterDefaultUrlOptional": "Enter default URL (Optional)", + "examples": "예제", + "durationInfo": "분 또는 초 단위의 시간(예: 1:23)", + "addHeader": "헤더 추가", + "enterDefaultUrlOptional": "기본 URL 입력(선택 사항)", "negative": "Negative", - "discard": "Discard", - "default": "Default", - "defaultNumberPercent": "Default Number (%)", - "durationFormat": "Duration Format", - "dateFormat": "Date Format", - "timeFormat": "Time Format", - "singularLabel": "Singular Label", - "pluralLabel": "Plural Label", - "optional": "(Optional)", - "clickToMake": "Click to make", - "visibleForRole": "visible for role:", - "inUI": "in UI Dashboard", - "projectSettings": "Base Settings", - "clickToHide": "Click to hide", - "clickToDownload": "Click to download", - "forRole": "for role", - "clickToCopyViewID": "Click to copy View ID", - "viewMode": "View Mode", - "searchUsers": "Search Users", - "superAdmin": "Super Admin", - "allTables": "All Tables", - "members": "Members", - "dataSources": "Data Sources", - "connectDataSource": "Connect a Data Source", - "searchProjects": "Search Bases", + "discard": "취소", + "default": "기본값", + "defaultNumberPercent": "기본 값(%)", + "durationFormat": "시간 형식", + "dateFormat": "날짜 표현 형식:", + "timeFormat": "시간 형식", + "singularLabel": "단수 레이블", + "pluralLabel": "복수 레이블", + "optional": "(선택사항)", + "clickToMake": "클릭하여 생성", + "visibleForRole": "역할에 표시:", + "inUI": "UI 대시보드에서", + "projectSettings": "기본 설정", + "clickToHide": "클릭하여 숨김", + "clickToDownload": "클릭하여 다운로드", + "forRole": "역할", + "clickToCopyViewID": "클릭하여 ID 복사", + "viewMode": "보기 모드", + "searchUsers": "사용자 검색", + "superAdmin": "최고 운영자", + "allTables": "모든 테이블", + "members": "회원", + "dataSources": "데이터 소스", + "connectDataSource": "데이터 원본 연결", + "searchProjects": "프로젝트 검색", "createdBy": "생성자", - "viewingAttachmentsOf": "Viewing Attachments of", - "readOnly": "Readonly", - "dropHere": "Drop here", - "createdOn": "Created On", + "viewingAttachmentsOf": "첨부 파일 보기", + "readOnly": "읽기 전용 (readonly)", + "dropHere": "이곳에 끌어다 놓기", + "createdOn": "생성일", "notifyVia": "공지", "projName": "프로젝트 이름", - "profile": "Profile", - "accountDetails": "Account Details", - "controlAppearance": "Control your Appearance.", - "accountEmailID": "Account Email ID", - "backToWorkspace": "Back to Workspace", - "untitledToken": "Untitled token", + "profile": "프로필", + "accountDetails": "계정 정보", + "controlAppearance": "UI 세부사항 설정", + "accountEmailID": "계정 이메일:", + "backToWorkspace": "작업 공간으로 돌아가기", + "untitledToken": "제목 없는 토큰", "tableName": "테이블 이름", - "dashboardName": "Dashboard name", - "createView": "Create a View", + "dashboardName": "대시보드 이름", + "createView": "뷰 생성", "creatingView": "Creating View", "duplicateView": "Duplicate View", "duplicateGridView": "Duplicate Grid View", @@ -488,7 +488,7 @@ "viewName": "이름 보기", "viewLink": "링크 보기", "columnName": "열 이름", - "columnToScanFor": "Column to scan", + "columnToScanFor": "스캔 할 열", "columnType": "열 유형", "roleName": "역할 이름", "roleDescription": "역할 설명", @@ -531,8 +531,8 @@ "sqlOutput": "SQL 출력", "addOption": "옵션 추가", "interfaceColor": "Interface Color", - "qrCodeValueColumn": "Column with QR code value", - "barcodeValueColumn": "Column with Barcode value", + "qrCodeValueColumn": "QR코드 값", + "barcodeValueColumn": "바코드 값", "barcodeFormat": "바코드 형식", "qrCodeValueTooLong": "QR코드 문자가 너무 깁니다", "barcodeValueTooLong": "바코드 문자가 너무 깁니다", @@ -582,15 +582,16 @@ "sharedBaseUrl": "Shared Base URL", "importData": "데이터 가져오기", "importSecondaryViews": "보조 뷰 가져오기", - "importRollupColumns": "Import Rollup Columns", - "importLookupColumns": "Import Lookup Columns", - "importAttachmentColumns": "Import Attachment Columns", - "importFormulaColumns": "Import Formula Columns", + "importRollupColumns": "롤업 열 가져오기", + "importLookupColumns": "조회 열 가져오기", + "importAttachmentColumns": "첨부 열 가져오기", + "importFormulaColumns": "포뮬러 열 가져오기", "importUsers": "Import Users (by email)", "noData": "데이터 없음", "goToDashboard": "대시보드로 이동", "importing": "가져오는 중", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "중첩 테이블 평탄화", "downloadAllowed": "다운로드 허용", @@ -603,13 +604,13 @@ "commentsOnly": "댓글 만", "documentation": "문서", "subscribeNewsletter": "뉴스 레터 구독", - "signUpWithProvider": "Sign up with {provider}", - "signInWithProvider": "Sign in with {provider}", + "signUpWithProvider": "{provider}에 가입", + "signInWithProvider": "{provider}에 로그인", "agreeToTos": "NocoDB의 {tosLink}에 동의합니다.", "welcomeToNc": "Welcome to NocoDB!", "inviteOnlySignup": "초대 URL을 사용한 가입만 허용", - "nextRow": "Next Row", - "prevRow": "Previous Row", + "nextRow": "다음 행", + "prevRow": "이전 행", "addRowGrid": "Manually add data in grid view", "addRowForm": "Enter record data through a form", "noAccess": "No access", @@ -633,37 +634,37 @@ "bulkDownload": "Bulk Download", "attachFile": "Attach File", "viewAttachment": "View Attachments", - "attachmentDrop": "Click or drop a file into cell", - "addFiles": "Add File(s)", - "hideInUI": "Hide in UI", - "addBase": "Add Base", - "addParameter": "Add Parameter", - "submitAnotherForm": "Submit Another Form", - "dragAndDropFieldsHereToAdd": "Drag and drop fields here to add", - "editSource": "Edit Data Source", - "enterText": "Enter text", - "okEditBase": "Ok & Edit Base", - "showInUI": "Show in UI", - "outOfSync": "Out of sync", - "newSource": "New Data Source", - "newWebhook": "New Webhook", - "enablePublicAccess": "Enable Public Access", - "doYouWantToSaveTheChanges": "Do you want to save the changes ?", - "editingAccess": "Editing access", - "enabledPublicViewing": "Enable public viewing", - "restrictAccessWithPassword": "Restrict access with password", - "manageProjectAccess": "Manage Base Access", - "allowDownload": "Allow Download", - "surveyMode": "Survey Mode", - "rtlOrientation": "RTL Orientation", - "useTheme": "Use Theme", - "copyLink": "Copy Link", - "copiedLink": "Link Copied", - "copyInviteLink": "Copy invite link", - "copiedInviteLink": "Copied invite link", + "attachmentDrop": "셀에 파일을 클릭하거나 끌어다 놓습니다.", + "addFiles": "파일 추가", + "hideInUI": "UI에서 숨기기", + "addBase": "프로젝트 추가", + "addParameter": "매개 변수 추가", + "submitAnotherForm": "다른 양식 제출", + "dragAndDropFieldsHereToAdd": "이곳으로 드래그 앤 드롭하여 추가합니다.", + "editSource": "데이터 원본 편집", + "enterText": "텍스트를 입력하세요.", + "okEditBase": "확인 및 프로젝트 저장", + "showInUI": "UI에 표시", + "outOfSync": "동기화되지 않음", + "newSource": "새로운 데이터 소스", + "newWebhook": "새 웹훅", + "enablePublicAccess": "전체 공개", + "doYouWantToSaveTheChanges": "바뀐 내용을 저장할까요?", + "editingAccess": "수정 권한", + "enabledPublicViewing": "공개 보기 사용 설정", + "restrictAccessWithPassword": "비밀번호로 액세스 제한", + "manageProjectAccess": "프로젝트 접근 권한", + "allowDownload": "다운로드 허용", + "surveyMode": "설문 조사 모드", + "rtlOrientation": "RTL 방향", + "useTheme": "테마 사용", + "copyLink": "링크 복사", + "copiedLink": "링크가 복사되었습니다", + "copyInviteLink": "초대 링크 복사", + "copiedInviteLink": "초대 링크가 복사되었습니다.", "copyUrl": "URL 복사", - "moreColors": "More Colors", - "moveProject": "Move Base", + "moreColors": "추가 색상", + "moveProject": "프로젝트로 이동", "createProject": "프로젝트 생성", "importProject": "프로젝트 가져오기", "searchProject": "프로젝트 검색", @@ -674,7 +675,7 @@ "deleteProject": "프로젝트 삭제", "refreshProject": "프로젝트 새로 고침", "saveProject": "저장", - "saveAndQuit": "Save & Quit", + "saveAndQuit": "저장 및 종료", "deleteKanbanStack": "칸반 스택 삭제", "createProjectExtended": { "extDB": "외부 데이터베이스 연결", @@ -690,7 +691,7 @@ "translate": "도움말 번역", "account": { "authToken": "인증 토큰 복사", - "authTokenCopied": "Copied Auth Token", + "authTokenCopied": "인증 토큰 복사", "swagger": "Swagger: REST APIs", "projInfo": "프로젝트 정보 복사", "themes": "테마" @@ -700,10 +701,10 @@ "filter": "필터", "addFilter": "필터 추가", "share": "공유", - "groupBy": "Group By", - "addSubGroup": "Add subgroup", + "groupBy": "분류 기준", + "addSubGroup": "하위 그룹 추가", "shareBase": { - "label": "Share base", + "label": "프로젝트 공유", "disable": "공유 베이스 비활성화", "enable": "링크가 있는 모든 사용자", "link": "공유 링크" @@ -713,8 +714,8 @@ "inviteTeam": "팀 초대", "inviteUser": "사용자 초대", "inviteToken": "초대 토큰", - "linkedRecords": "Linked Records", - "addNewLink": "Add New Link", + "linkedRecords": "연결된 레코드", + "addNewLink": "새 링크 추가", "newUser": "사용자 추가", "editUser": "사용자 편집", "deleteUser": "사용자 제거", @@ -728,12 +729,12 @@ "nextRecord": "다음 기록", "previousRecord": "이전 기록", "copyApiURL": "API URL 복사", - "createTable": "Create New Table", - "createDashboard": "Create Dashboard", - "createWorkspace": "Create Workspace", + "createTable": "새 테이블", + "createDashboard": "새 대시보드 만들기", + "createWorkspace": "새로운 작업영역 생성하기", "refreshTable": "테이블 새로 고침", "renameTable": "테이블 이름 변경", - "renameLayout": "Layout Rename", + "renameLayout": "레이아웃 이름 바꾸기", "deleteTable": "테이블 삭제", "addField": "테이블에 새 필드 추가", "setDisplay": "표시값으로 설정", @@ -742,11 +743,11 @@ "saveAndExit": "저장 및 종료", "saveAndStay": "저장", "insertRow": "행 삽입", - "duplicateRow": "Duplicate Row", + "duplicateRow": "행 복제", "deleteRow": "행 삭제", - "deleteRows": "Delete records", - "predictColumns": "Predict Fields", - "predictFormulas": "Predict Formulas", + "deleteRows": "레코드 삭제", + "predictColumns": "필드 예측", + "predictFormulas": "공식 예측", "deleteSelectedRow": "선택한 행 삭제", "importExcel": "엑셀 가져오기", "importCSV": "CSV 가져오기", @@ -761,13 +762,13 @@ "changePwd": "암호 변경", "createView": "뷰 생성", "shareView": "뷰 공유", - "findRowByCodeScan": "Find row by scan", + "findRowByCodeScan": "QR 또는 바코드를 스캔하여 행 찾기", "fillByCodeScan": "QR 또는 바코드를 스캔하여 셀 채우기", "listSharedView": "공유 뷰 목록", "ListView": "뷰 목록", "copyView": "뷰 복사", "renameView": "뷰 이름 변경", - "uploadData": "Upload Data", + "uploadData": "데이터 업로드", "deleteView": "뷰 삭제", "createGrid": "그리드 뷰 생성", "createGallery": "갤러리 뷰 생성", @@ -794,21 +795,21 @@ "editConnJson": "연결 JSON 편집", "sponsorUs": "후원", "sendEmail": "이메일 보내기", - "addUserToProject": "Add user to project", + "addUserToProject": "프로젝트에 사용자 추가", "getApiSnippet": "API 스니펫 가져오기", "clearCell": "셀 지우기", - "addFilterGroup": "Add Filter Group", + "addFilterGroup": "필터 그룹 추가", "linkRecord": "레코드에 링크", "addNewRecord": "새 레코드 추가", - "newRecord": "New record", - "tableNameCreateNewRecord": "{tableName}: Create new record", - "gotSavedLinkedSuccessfully": "{tableName} '{recordTitle}' got saved & linked successfully", - "recordCreatedLinked": "Record Created & Linked", + "newRecord": "새 레코드", + "tableNameCreateNewRecord": "{tableName}: 새 레코드가 생성되었습니다.", + "gotSavedLinkedSuccessfully": "{tableName} '{recordTitle}' 저장 및 연결에 성공했습니다.", + "recordCreatedLinked": "레코드 생성 및 연결", "useConnectionUrl": "연결 URL 사용", "toggleCommentsDraw": "댓글 바 토글", "expandRecord": "레코드 확장", "deleteRecord": "레코드 삭제", - "fullWidth": "Full width", + "fullWidth": "전체 넓이", "exitFullWidth": "Exit full width", "markAllAsRead": "Mark all as read", "column": { @@ -819,7 +820,7 @@ "addOther": "Add Other Field" }, "erd": { - "showColumns": "Show Columns", + "showColumns": "열 표시", "showPkAndFk": "PK 및 FK 표시", "showSqlViews": "SQL 뷰 표시", "showMMTables": "Show Many to Many tables", @@ -1035,14 +1036,14 @@ "basesMigrated": "Bases are migrated. Please try again.", "pasteNotSupported": "활성 셀에서는 붙여넣기 작업이 지원되지 않습니다.", "roles": { - "orgCreator": "Creator can create new projects and access any invited project.", - "orgViewer": "Viewer is not allowed to create new projects but they can access any invited project." + "orgCreator": "작성자는 새 프로젝트를 작성하고 초대된 프로젝트에 액세스할 수 있습니다.", + "orgViewer": "뷰어는 새 프로젝트를 만들 수 없지만 초대된 프로젝트에 액세스할 수 있습니다." }, "codeScanner": { "loadingScanner": "스캐너를 로드하는 중입니다.", - "selectColumn": "Select a column (QR code or Barcode) that you want to use for finding a row by scanning.", - "moreThanOneRowFoundForCode": "More than one row found for this code. Currently only unique codes are supported.", - "noRowFoundForCode": "No row found for this code for the selected column" + "selectColumn": "스캔하여 행을 찾는 데 사용할 열(QR 코드 또는 바코드)을 선택합니다.", + "moreThanOneRowFoundForCode": "이 코드에 대한 행이 둘 이상 있습니다. 현재 고유 코드만 지원됩니다.", + "noRowFoundForCode": "이 코드에 대한 행이 없습니다." }, "map": { "overLimit": "제한을 초과했습니다. 지도에 표시되는 행 수를 줄이십시오.", @@ -1160,7 +1161,7 @@ "cacheEmpty": "캐시가 비어 있습니다.", "exportedCache": "캐시가 내보내졌습니다.", "valueAlreadyInList": "값이 이미 목록에 있습니다.", - "noColumnsToUpdate": "No columns to update", + "noColumnsToUpdate": "업데이트 할 열이 없습니다.", "tableDeleted": "테이블이 삭제되었습니다.", "layoutDeleted": "Deleted layout successfully", "generatePublicShareableReadonlyBase": "Generate publicly shareable readonly base", @@ -1174,8 +1175,8 @@ "showNullAndEmptyInFilter": "필터에 NULL 및 비어 있음 표시", "showNullAndEmptyInFilterDesc": "NULL & Empty Strings를 포함하는 필드를 구별하려면 'additional' 필터를 활성화합니다. Blank에 대한 기본 지원은 NULL & Empty 문자열을 모두 동일하게 취급합니다.", "deleteKanbanStackConfirmation": "이 스택을 삭제하면 '{groupingField}'에서 '{stackToBeDeleted}' 선택 옵션도 제거됩니다. 레코드가 분류되지 않은 스택으로 이동합니다.", - "computedFieldEditWarning": "Computed field: contents are read-only. Use column edit menu to reconfigure", - "computedFieldDeleteWarning": "Computed field: contents are read-only. Unable to clear content.", + "computedFieldEditWarning": "계산 필드: 내용이 읽기 전용입니다. 열 편집 메뉴를 사용하여 재구성합니다", + "computedFieldDeleteWarning": "계산 필드: 내용이 읽기 전용이므로 내용을 지울 수 없습니다.", "noMoreRecords": "더 이상 레코드가 없습니다.", "tokenNameNotEmpty": "Token name should not be empty", "tokenNameMaxLength": "Token name should not be more than 255 characters", @@ -1210,7 +1211,7 @@ "nullFilterExists": "Null filter exists. Please remove them", "signUpRules": { "emailRequired": "Email is required", - "emailInvalid": "이메일이 유효해야합니다.", + "emailInvalid": "이메일이 유효하지 않습니다.", "passwdRequired": "비밀번호를 입력하십시오.", "passwdLength": "비밀번호는 8자 이상이어야 합니다.", "passwdMismatch": "비밀번호가 일치하지 않습니다", @@ -1228,11 +1229,11 @@ "internalError": "내부 오류", "templateGeneratorNotFound": "템플릿 생성기를 찾을 수 없습니다.", "fileUploadFailed": "파일 업로드 실패", - "primaryColumnUpdateFailed": "Failed to update primary column", + "primaryColumnUpdateFailed": "기본 열 업데이트 실패", "formDescriptionTooLong": "양식 설명이 너무 깁니다.", - "columnsRequired": "Following columns are required", - "selectAtleastOneColumn": "At least one column has to be selected", - "columnDescriptionNotFound": "Cannot find the destination column for", + "columnsRequired": "컬럼이 필요합니다.", + "selectAtleastOneColumn": "컬럼을 하나 이상 선택하십시오.", + "columnDescriptionNotFound": "컬럼 설명을 찾을 수 없습니다.", "duplicateMappingFound": "중복 매핑이 발견되었습니다.", "nullValueViolatesNotNull": "NULL 값이 NOT NULL 제약 조건을 위반합니다.", "sourceHasInvalidNumbers": "소스 데이터에 잘못된 숫자 값이 포함되어 있습니다.", @@ -1244,19 +1245,19 @@ "failedToLoadChildrenList": "하위 목록을 불러오지 못했습니다.", "deleteFailed": "삭제 실패", "unlinkFailed": "링크 해제 실패", - "rowUpdateFailed": "Row update failed", - "deleteRowFailed": "Failed to delete row", + "rowUpdateFailed": "행 업데이트 실패", + "deleteRowFailed": "행 삭제 실패", "setFormDataFailed": "양식 데이터 설정 실패", "formViewUpdateFailed": "양식 뷰 업데이트 실패", "tableNameRequired": "테이블 이름이 필요합니다.", "nameShouldStartWithAnAlphabetOr_": "이름은 영문자 또는 _로 시작해야 합니다.", "followingCharactersAreNotAllowed": "다음 문자는 허용되지 않습니다.", - "columnNameRequired": "Column name is required", + "columnNameRequired": "컬럼 이름이 필요합니다.", "duplicateColumnName": "Duplicate field name", "uiDataTypeRequired": "UI data type is required", - "columnNameExceedsCharacters": "The length of column name exceeds the max {value} characters", - "projectNameExceeds50Characters": "Project name exceeds 50 characters", - "projectNameCannotStartWithSpace": "Project name cannot start with space", + "columnNameExceedsCharacters": "열 이름의 길이가 최대 {value}자를 초과합니다.", + "projectNameExceeds50Characters": "프로젝트 이름의 길이가 최대 50자를 초과합니다.", + "projectNameCannotStartWithSpace": "프로젝트 이름은 공백으로 시작할 수 없습니다.", "requiredField": "필수 필드입니다.", "ipNotAllowed": "IP가 허용되지 않습니다.", "targetFileIsNotAnAcceptedFileType": "대상 파일이 허용되는 파일 유형이 아닙니다.", @@ -1265,7 +1266,7 @@ "parameterKeyCannotBeEmpty": "매개 변수 키는 비워 둘 수 없습니다.", "duplicateParameterKeysAreNotAllowed": "중복 매개 변수 키는 허용되지 않습니다.", "fieldRequired": "{value}은(는) 비워 둘 수 없습니다.", - "projectNotAccessible": "Project not accessible", + "projectNotAccessible": "프로젝트에 액세스할 수 없습니다.", "copyToClipboardError": "클립 보드에 복사할 수 없습니다." }, "toast": { @@ -1287,8 +1288,8 @@ }, "success": { "licenseKeyUpdated": "License Key Updated", - "columnDuplicated": "Column duplicated successfully", - "rowDuplicatedWithoutSavedYet": "Row duplicated (not saved)", + "columnDuplicated": "열 복제", + "rowDuplicatedWithoutSavedYet": "행이 중복됨(저장되지 않음)", "updatedUIACL": "테이블에 대한 UI ACL을 업데이트했습니다.", "pluginUninstalled": "플러그인이 성공적으로 제거되었습니다.", "pluginSettingsSaved": "플러그인 설정이 성공적으로 저장되었습니다.", @@ -1296,7 +1297,7 @@ "tableRenamed": "테이블 이름이 성공적으로 변경되었습니다.", "layoutRenamed": "Layout renamed successfully", "viewDeleted": "뷰가 성공적으로 삭제되었습니다.", - "primaryColumnUpdated": "Successfully updated as primary column", + "primaryColumnUpdated": "기본 열이 성공적으로 업데이트되었습니다.", "tableDataExported": "테이블 데이터가 성공적으로 내보내졌습니다.", "updated": "성공적으로 업데이트되었습니다.", "sharedViewDeleted": "공유된 뷰가 성공적으로 삭제되었습니다.", @@ -1304,9 +1305,9 @@ "viewRenamed": "뷰 이름이 성공적으로 변경되었습니다.", "tokenGenerated": "토큰이 성공적으로 생성되었습니다.", "tokenDeleted": "토큰이 성공적으로 삭제되었습니다.", - "userAddedToProject": "Successfully added user to project", + "userAddedToProject": "사용자가 성공적으로 프로젝트에 추가되었습니다.", "userAdded": "사용자가 성공적으로 추가되었습니다.", - "userDeletedFromProject": "Successfully deleted user from project", + "userDeletedFromProject": "사용자가 성공적으로 프로젝트에서 삭제되었습니다.", "inviteEmailSent": "초대 이메일이 성공적으로 전송되었습니다.", "inviteURLCopied": "초대 URL이 클립보드에 복사되었습니다.", "commentCopied": "댓글이 클립보드에 복사되었습니다.", @@ -1318,8 +1319,8 @@ "webhookUpdated": "Webhook가 성공적으로 업데이트되었습니다.", "webhookDeleted": "Webhook가 성공적으로 삭제되었습니다.", "webhookTested": "Webhook가 성공적으로 테스트되었습니다.", - "columnUpdated": "Column updated", - "columnCreated": "Column created", + "columnUpdated": "열이 성공적으로 업데이트되었습니다.", + "columnCreated": "열이 성공적으로 생성되었습니다.", "passwordChanged": "비밀번호가 성공적으로 변경되었습니다.", "settingsSaved": "설정이 성공적으로 저장되었습니다.", "roleUpdated": "역할이 성공적으로 업데이트되었습니다." From 65eec294e625a2221e79136dfac95eeee6f09eaf Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:28 +0000 Subject: [PATCH 021/279] New translations en.json (Dutch) --- packages/nc-gui/lang/nl.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/nl.json b/packages/nc-gui/lang/nl.json index 1d993a96a0..530688b3e7 100644 --- a/packages/nc-gui/lang/nl.json +++ b/packages/nc-gui/lang/nl.json @@ -591,6 +591,7 @@ "goToDashboard": "Ga naar het dashboard", "importing": "Importeren", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Afvlakken genest", "downloadAllowed": "Downloaden toegestaan", From a16b4d241730f4efb9323b8d4c61513151b48798 Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:29 +0000 Subject: [PATCH 022/279] New translations en.json (Norwegian) --- packages/nc-gui/lang/no.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/no.json b/packages/nc-gui/lang/no.json index dfd3b0fb18..df1370f706 100644 --- a/packages/nc-gui/lang/no.json +++ b/packages/nc-gui/lang/no.json @@ -591,6 +591,7 @@ "goToDashboard": "Go to Dashboard", "importing": "Importing", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Flatten Nested", "downloadAllowed": "Download allowed", From 5164b25efbde049adceaac5d0e602b418ab1aa81 Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:30 +0000 Subject: [PATCH 023/279] New translations en.json (Polish) --- packages/nc-gui/lang/pl.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/pl.json b/packages/nc-gui/lang/pl.json index a0c4d751f2..cb8fc1fddc 100644 --- a/packages/nc-gui/lang/pl.json +++ b/packages/nc-gui/lang/pl.json @@ -591,6 +591,7 @@ "goToDashboard": "Przejdź do panelu", "importing": "Importowanie", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Spłaszcz zagnieżdżone", "downloadAllowed": "Pobieranie dozwolone", From d41cd0a86baf61e03f1321360d40d5608f8eff7e Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:32 +0000 Subject: [PATCH 024/279] New translations en.json (Portuguese) --- packages/nc-gui/lang/pt.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/pt.json b/packages/nc-gui/lang/pt.json index 9715bac068..1e50ffda6d 100644 --- a/packages/nc-gui/lang/pt.json +++ b/packages/nc-gui/lang/pt.json @@ -591,6 +591,7 @@ "goToDashboard": "Ir para Painel de controlo", "importing": "Importação", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Ninhada achatada", "downloadAllowed": "Download permitido", From 0704e99da67e80ee3695c7b7dcf3e70504e4041a Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:33 +0000 Subject: [PATCH 025/279] New translations en.json (Russian) --- packages/nc-gui/lang/ru.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/ru.json b/packages/nc-gui/lang/ru.json index c0140851ba..58c0fb41f0 100644 --- a/packages/nc-gui/lang/ru.json +++ b/packages/nc-gui/lang/ru.json @@ -591,6 +591,7 @@ "goToDashboard": "Перейти к Дашборду", "importing": "Импорт", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Вложенные", "downloadAllowed": "Скачивание разрешено", From a776e2ddb40e5f7d0681a73cf5f1cf53728871de Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:34 +0000 Subject: [PATCH 026/279] New translations en.json (Slovak) --- packages/nc-gui/lang/sk.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/sk.json b/packages/nc-gui/lang/sk.json index 478280885d..f6ac9346fd 100644 --- a/packages/nc-gui/lang/sk.json +++ b/packages/nc-gui/lang/sk.json @@ -591,6 +591,7 @@ "goToDashboard": "Prejsť na prístrojový panel", "importing": "Importovanie", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Sploštenie vnorených", "downloadAllowed": "Stiahnuť povolené", From 7b52bdad50dbc186524da90f5410de10c3ca0c7b Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:35 +0000 Subject: [PATCH 027/279] New translations en.json (Slovenian) --- packages/nc-gui/lang/sl.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/sl.json b/packages/nc-gui/lang/sl.json index faab5ede7d..2ca26aa9f5 100644 --- a/packages/nc-gui/lang/sl.json +++ b/packages/nc-gui/lang/sl.json @@ -591,6 +591,7 @@ "goToDashboard": "Pojdite na nadzorno ploščo", "importing": "Uvoz", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Ploščati vgnezdeno", "downloadAllowed": "Prenos dovoljen", From 8f0541e1659ab38e392740007a7bce52799836cf Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:36 +0000 Subject: [PATCH 028/279] New translations en.json (Swedish) --- packages/nc-gui/lang/sv.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/sv.json b/packages/nc-gui/lang/sv.json index 4043281884..3dfc16987f 100644 --- a/packages/nc-gui/lang/sv.json +++ b/packages/nc-gui/lang/sv.json @@ -591,6 +591,7 @@ "goToDashboard": "Gå till instrumentpanelen", "importing": "Importera", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Platta och inbäddade", "downloadAllowed": "Nedladdning tillåten", From 3009f5a2e0aa438ccb4208566e44fa7bdf1af0d2 Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:38 +0000 Subject: [PATCH 029/279] New translations en.json (Turkish) --- packages/nc-gui/lang/tr.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/tr.json b/packages/nc-gui/lang/tr.json index 023378ae58..96fef5fd04 100644 --- a/packages/nc-gui/lang/tr.json +++ b/packages/nc-gui/lang/tr.json @@ -591,6 +591,7 @@ "goToDashboard": "Gösterge Tablosuna Git", "importing": "İthalat", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Yuvalanmış Düzleştir", "downloadAllowed": "İndirme izni verildi", From 60b2e7fa221cec0078c7840d51f83c39ee6f2a83 Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:39 +0000 Subject: [PATCH 030/279] New translations en.json (Ukrainian) --- packages/nc-gui/lang/uk.json | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/nc-gui/lang/uk.json b/packages/nc-gui/lang/uk.json index b8961d9de5..dc2662b505 100644 --- a/packages/nc-gui/lang/uk.json +++ b/packages/nc-gui/lang/uk.json @@ -1,15 +1,15 @@ { "dashboards": { - "create_new_dashboard_project": "Create New Interface", - "connect_data_sources": "Connect data sources", - "alert": "Alert", - "alert-message": "No databases have been connected. Connect database bases to build interfaces. Skip this step and add databases from the base home page later.", - "select_database_projects_that_you_want_to_link_to_this_dashboard_projects": "Select Database Bases that you want to link to this Interface.", - "create_interface": "Create interface", - "project_name": "Base Name", - "connect": "Connect", + "create_new_dashboard_project": "Створити новий інтерфейс", + "connect_data_sources": "Підключення джерел даних", + "alert": "Оповіщення", + "alert-message": "Немає баз даних підключено. З’єднайте бази даних для створення інтерфейсів. Пропустіть цей крок і додайте бази даних з основної домашньої сторінки пізніше.", + "select_database_projects_that_you_want_to_link_to_this_dashboard_projects": "Виберіть базу даних, які Ви хочете прив'язати до цього інтерфейсу.", + "create_interface": "Створення інтерфейсу", + "project_name": "Назва бази", + "connect": "Підключитися", "buttonActionTypes": { - "open_external_url": "Open external link", + "open_external_url": "Відкрити зовнішнє посилання", "delete_record": "Delete record", "update_record": "Update record", "open_layout": "Open layout" @@ -591,6 +591,7 @@ "goToDashboard": "Панель керування", "importing": "Імпорт", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Вкладені", "downloadAllowed": "Завантаження дозволене", From 606edcdb3e276beacf3d29d9a7a013e1de7b7350 Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:40 +0000 Subject: [PATCH 031/279] New translations en.json (Chinese Simplified) --- packages/nc-gui/lang/zh-Hans.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/zh-Hans.json b/packages/nc-gui/lang/zh-Hans.json index 2f94f05328..60137277ea 100644 --- a/packages/nc-gui/lang/zh-Hans.json +++ b/packages/nc-gui/lang/zh-Hans.json @@ -591,6 +591,7 @@ "goToDashboard": "转到仪表板", "importing": "导入中", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "扁平化嵌套", "downloadAllowed": "允许下载", From 0a34e0986397fc4c7fb3c8024d17c45f91bf464c Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:41 +0000 Subject: [PATCH 032/279] New translations en.json (Chinese Traditional) --- packages/nc-gui/lang/zh-Hant.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/zh-Hant.json b/packages/nc-gui/lang/zh-Hant.json index 1230f2594c..5da645bb37 100644 --- a/packages/nc-gui/lang/zh-Hant.json +++ b/packages/nc-gui/lang/zh-Hant.json @@ -591,6 +591,7 @@ "goToDashboard": "前往儀表板", "importing": "匯入中", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "展平嵌套", "downloadAllowed": "允許下載", From 3a15a9d123efeca106d9e065bcb40ea1326e4cbd Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:43 +0000 Subject: [PATCH 033/279] New translations en.json (Vietnamese) --- packages/nc-gui/lang/vi.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/vi.json b/packages/nc-gui/lang/vi.json index a9d1e15b41..621e2c1d1b 100644 --- a/packages/nc-gui/lang/vi.json +++ b/packages/nc-gui/lang/vi.json @@ -591,6 +591,7 @@ "goToDashboard": "Go to Dashboard", "importing": "Importing", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Flatten Nested", "downloadAllowed": "Download allowed", From 02f01f26f5fbddf5c34f11c60a836be2184dc8f5 Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:44 +0000 Subject: [PATCH 034/279] New translations en.json (Portuguese, Brazilian) --- packages/nc-gui/lang/pt_BR.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/pt_BR.json b/packages/nc-gui/lang/pt_BR.json index e231dba8e2..618b0a0b88 100644 --- a/packages/nc-gui/lang/pt_BR.json +++ b/packages/nc-gui/lang/pt_BR.json @@ -591,6 +591,7 @@ "goToDashboard": "Ir para o Painel de Controle", "importing": "Importando", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Achatamento aninhado", "downloadAllowed": "Download permitido", From 1b2442ad9697d7482405705bd6bf7ea3842b845e Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:45 +0000 Subject: [PATCH 035/279] New translations en.json (Indonesian) --- packages/nc-gui/lang/id.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/id.json b/packages/nc-gui/lang/id.json index b1d539517d..4c957f392e 100644 --- a/packages/nc-gui/lang/id.json +++ b/packages/nc-gui/lang/id.json @@ -591,6 +591,7 @@ "goToDashboard": "Buka Dasbor", "importing": "Mengimpor", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Ratakan Bersarang", "downloadAllowed": "Unduh diizinkan", From e4ede7563ab97f983c80c53bafd1202427f844bd Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:46 +0000 Subject: [PATCH 036/279] New translations en.json (Persian) --- packages/nc-gui/lang/fa.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/fa.json b/packages/nc-gui/lang/fa.json index 612b15fb14..4bf456ca90 100644 --- a/packages/nc-gui/lang/fa.json +++ b/packages/nc-gui/lang/fa.json @@ -591,6 +591,7 @@ "goToDashboard": "رفتن به داشبورد", "importing": "در حال ایمپورت", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "مسطح کردن تو در تو", "downloadAllowed": "اجازه دانلود", From 7031d590018fec449ae46f709c0cf8afc5fe6ecf Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:48 +0000 Subject: [PATCH 037/279] New translations en.json (Thai) --- packages/nc-gui/lang/th.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/th.json b/packages/nc-gui/lang/th.json index cae8bf75b8..7201411ff4 100644 --- a/packages/nc-gui/lang/th.json +++ b/packages/nc-gui/lang/th.json @@ -591,6 +591,7 @@ "goToDashboard": "Go to Dashboard", "importing": "Importing", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Flatten Nested", "downloadAllowed": "อนุญาตให้ดาวน์โหลด", From 0b6aa4e5e501d1563b270fe151d45d549fa14c6b Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:49 +0000 Subject: [PATCH 038/279] New translations en.json (Croatian) --- packages/nc-gui/lang/hr.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/hr.json b/packages/nc-gui/lang/hr.json index 167b35e5ff..a6b10600d6 100644 --- a/packages/nc-gui/lang/hr.json +++ b/packages/nc-gui/lang/hr.json @@ -591,6 +591,7 @@ "goToDashboard": "Idi na nadzornu ploču", "importing": "Uvozim", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Ispravi ugniježđene strukture", "downloadAllowed": "Preuzimanje dozvoljeno", From c370fecc51a3373e3739902f851c46feeb54951d Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:50 +0000 Subject: [PATCH 039/279] New translations en.json (Latvian) --- packages/nc-gui/lang/lv.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/lv.json b/packages/nc-gui/lang/lv.json index 935b52cda0..d111b2cf1b 100644 --- a/packages/nc-gui/lang/lv.json +++ b/packages/nc-gui/lang/lv.json @@ -591,6 +591,7 @@ "goToDashboard": "Dodieties uz paneli", "importing": "Importēšana", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Izlīdzināt ligzdotās", "downloadAllowed": "Lejupielādēt atļauts", From 344f76568b4e36384b3dbe8e6b59d684b7abb67f Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:51 +0000 Subject: [PATCH 040/279] New translations en.json (Hindi) --- packages/nc-gui/lang/hi.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/hi.json b/packages/nc-gui/lang/hi.json index b30d2a4033..0b681718b4 100644 --- a/packages/nc-gui/lang/hi.json +++ b/packages/nc-gui/lang/hi.json @@ -591,6 +591,7 @@ "goToDashboard": "Go to Dashboard", "importing": "Importing", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Flatten Nested", "downloadAllowed": "Download allowed", From 7f6c0781c84ade48dcc27267ff7e444ffd7ba144 Mon Sep 17 00:00:00 2001 From: navi Date: Mon, 20 Nov 2023 19:36:53 +0000 Subject: [PATCH 041/279] New translations en.json (Bengali, India) --- packages/nc-gui/lang/bn_IN.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lang/bn_IN.json b/packages/nc-gui/lang/bn_IN.json index f348f0fd4d..cf8c66f6ab 100644 --- a/packages/nc-gui/lang/bn_IN.json +++ b/packages/nc-gui/lang/bn_IN.json @@ -591,6 +591,7 @@ "goToDashboard": "Go to Dashboard", "importing": "Importing", "formatJson": "Format JSON", + "autoSelectFieldTypes": "Auto-Select Field Types", "firstRowAsHeaders": "Use First Record as Headers", "flattenNested": "Flatten Nested", "downloadAllowed": "Download allowed", From f8e7be7f10ed1b8ccd10d2211646969835548162 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 05:02:42 +0000 Subject: [PATCH 042/279] chore(renovate): Update patch --- packages/nc-gui/package.json | 10 +- packages/nocodb/package.json | 8 +- pnpm-lock.yaml | 1344 +++++++++++++++++++++++++--------- 3 files changed, 1011 insertions(+), 351 deletions(-) diff --git a/packages/nc-gui/package.json b/packages/nc-gui/package.json index 867daf7fa7..e238ea7384 100644 --- a/packages/nc-gui/package.json +++ b/packages/nc-gui/package.json @@ -116,20 +116,20 @@ "@iconify-json/tabler": "^1.1.97", "@iconify-json/vscode-icons": "^1.1.29", "@intlify/unplugin-vue-i18n": "^0.12.3", - "@nuxt/image-edge": "1.0.0-28341483.13a120f", + "@nuxt/image-edge": "1.0.0-28342020.fed0a3b", "@types/d3-scale": "^4.0.8", "@types/dagre": "^0.7.52", "@types/file-saver": "^2.0.7", "@types/leaflet": "^1.9.8", "@types/leaflet.markercluster": "^1.5.4", - "@types/papaparse": "^5.3.11", + "@types/papaparse": "^5.3.12", "@types/parse-github-url": "^1.0.3", "@types/qrcode": "^1.5.5", - "@types/showdown": "^2.0.4", + "@types/showdown": "^2.0.5", "@types/sortablejs": "^1.13.0", "@types/splitpanes": "^2.2.5", "@types/tinycolor2": "^1.4.6", - "@types/validator": "^13.11.6", + "@types/validator": "^13.11.7", "@types/vue-barcode-reader": "^0.0.3", "@unocss/nuxt": "^0.51.13", "@vitest/ui": "^0.18.1", @@ -143,7 +143,7 @@ "eslint-config-prettier": "^8.8.0", "eslint-plugin-prettier": "^4.2.1", "happy-dom": "^6.0.4", - "nuxt": "^3.8.1", + "nuxt": "^3.8.2", "nuxt-windicss": "^2.6.1", "prettier": "^2.8.8", "sass": "^1.69.5", diff --git a/packages/nocodb/package.json b/packages/nocodb/package.json index 1d36823771..0b36914495 100644 --- a/packages/nocodb/package.json +++ b/packages/nocodb/package.json @@ -68,7 +68,7 @@ "@ntegral/nestjs-sentry": "^4.0.0", "@sentry/node": "^6.19.7", "@techpass/passport-openidconnect": "^0.3.3", - "@types/chai": "^4.3.10", + "@types/chai": "^4.3.11", "airtable": "^0.12.2", "ajv": "^8.12.0", "ajv-formats": "^2.1.1", @@ -181,9 +181,9 @@ "@nestjsplus/dyn-schematics": "^1.0.12", "@types/ejs": "^3.1.5", "@types/express": "^4.17.21", - "@types/jest": "^29.5.8", - "@types/mocha": "^10.0.4", - "@types/multer": "^1.4.10", + "@types/jest": "^29.5.9", + "@types/mocha": "^10.0.5", + "@types/multer": "^1.4.11", "@types/node": "20.3.3", "@types/passport-google-oauth20": "^2.0.14", "@types/passport-jwt": "^3.0.13", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2f2ad7fdbb..e16343da85 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -263,8 +263,8 @@ importers: specifier: ^0.12.3 version: 0.12.3(vue-i18n@9.2.2) '@nuxt/image-edge': - specifier: 1.0.0-28341483.13a120f - version: 1.0.0-28341483.13a120f + specifier: 1.0.0-28342020.fed0a3b + version: 1.0.0-28342020.fed0a3b '@types/d3-scale': specifier: ^4.0.8 version: 4.0.8 @@ -281,8 +281,8 @@ importers: specifier: ^1.5.4 version: 1.5.4 '@types/papaparse': - specifier: ^5.3.11 - version: 5.3.11 + specifier: ^5.3.12 + version: 5.3.12 '@types/parse-github-url': specifier: ^1.0.3 version: 1.0.3 @@ -290,8 +290,8 @@ importers: specifier: ^1.5.5 version: 1.5.5 '@types/showdown': - specifier: ^2.0.4 - version: 2.0.4 + specifier: ^2.0.5 + version: 2.0.5 '@types/sortablejs': specifier: ^1.13.0 version: 1.13.0 @@ -302,8 +302,8 @@ importers: specifier: ^1.4.6 version: 1.4.6 '@types/validator': - specifier: ^13.11.6 - version: 13.11.6 + specifier: ^13.11.7 + version: 13.11.7 '@types/vue-barcode-reader': specifier: ^0.0.3 version: 0.0.3 @@ -321,7 +321,7 @@ importers: version: 2.0.2(vue@3.3.8) '@vueuse/nuxt': specifier: ^10.2.1 - version: 10.2.1(nuxt@3.8.1)(vue@3.3.8) + version: 10.2.1(nuxt@3.8.2)(vue@3.3.8) '@windicss/plugin-animations': specifier: ^1.0.9 version: 1.0.9 @@ -344,8 +344,8 @@ importers: specifier: ^6.0.4 version: 6.0.4 nuxt: - specifier: ^3.8.1 - version: 3.8.1(eslint@8.33.0)(sass@1.69.5)(vite@4.5.0) + specifier: ^3.8.2 + version: 3.8.2(eslint@8.33.0)(sass@1.69.5)(vite@4.5.0) nuxt-windicss: specifier: ^2.6.1 version: 2.6.1(vite@4.5.0) @@ -449,8 +449,8 @@ importers: specifier: ^0.3.3 version: 0.3.3 '@types/chai': - specifier: ^4.3.10 - version: 4.3.10 + specifier: ^4.3.11 + version: 4.3.11 airtable: specifier: ^0.12.2 version: 0.12.2 @@ -783,14 +783,14 @@ importers: specifier: ^4.17.21 version: 4.17.21 '@types/jest': - specifier: ^29.5.8 - version: 29.5.8 + specifier: ^29.5.9 + version: 29.5.9 '@types/mocha': - specifier: ^10.0.4 - version: 10.0.4 + specifier: ^10.0.5 + version: 10.0.5 '@types/multer': - specifier: ^1.4.10 - version: 1.4.10 + specifier: ^1.4.11 + version: 1.4.11 '@types/node': specifier: 20.3.3 version: 20.3.3 @@ -2829,6 +2829,14 @@ packages: '@babel/highlight': 7.22.20 chalk: 2.4.2 + /@babel/code-frame@7.23.4: + resolution: {integrity: sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + dev: true + /@babel/compat-data@7.22.9: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} @@ -2855,6 +2863,29 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core@7.23.3: + resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.4 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) + '@babel/helpers': 7.23.2 + '@babel/parser': 7.23.4 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.4 + '@babel/types': 7.23.4 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/generator@7.23.0: resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} engines: {node: '>=6.9.0'} @@ -2864,6 +2895,16 @@ packages: '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 + /@babel/generator@7.23.4: + resolution: {integrity: sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.4 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + jsesc: 2.5.2 + dev: true + /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} @@ -2881,8 +2922,8 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.22.11(@babel/core@7.23.2): - resolution: {integrity: sha512-y1grdYL4WzmUDBRGK0pDbIoFd7UZKoDurDzWEoNMYoj1EL+foGRQNyPWDcC+YyegN5y1DUsFFmzjGijB3nSVAQ==} + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -2891,27 +2932,27 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.23.2) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 dev: true - /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.2): + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.3): resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 @@ -2934,13 +2975,6 @@ packages: dependencies: '@babel/types': 7.23.0 - /@babel/helper-member-expression-to-functions@7.22.5: - resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - dev: true - /@babel/helper-member-expression-to-functions@7.23.0: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} @@ -2967,6 +3001,20 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} @@ -2991,15 +3039,15 @@ packages: '@babel/helper-optimise-call-expression': 7.22.5 dev: true - /@babel/helper-replace-supers@7.22.9(@babel/core@7.23.2): - resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.3): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 dev: true @@ -3026,6 +3074,11 @@ packages: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} @@ -3052,6 +3105,15 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + /@babel/parser@7.23.0: resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} engines: {node: '>=6.0.0'} @@ -3059,6 +3121,14 @@ packages: dependencies: '@babel/types': 7.23.0 + /@babel/parser@7.23.4: + resolution: {integrity: sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.4 + dev: true + /@babel/plugin-proposal-decorators@7.23.2(@babel/core@7.23.2): resolution: {integrity: sha512-eR0gJQc830fJVGz37oKLvt9W9uUIQSAovUl0e9sJ3YeO09dlcoBVYD3CLrjCj4qHdXmfiyTyFt8yeQYSN5fxLg==} engines: {node: '>=6.9.0'} @@ -3148,6 +3218,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.3): + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -3222,17 +3302,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typescript@7.22.11(@babel/core@7.23.2): - resolution: {integrity: sha512-0E4/L+7gfvHub7wsbTv03oRtD69X31LByy44fGmFzbZScpupFByMcgCJ0VbBTkzyjSJKuRoGN8tcijOWKTmqOA==} + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.2 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.11(@babel/core@7.23.2) + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2) dev: true /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.23.2): @@ -3248,6 +3325,19 @@ packages: '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2) dev: true + /@babel/plugin-transform-typescript@7.23.4(@babel/core@7.23.3): + resolution: {integrity: sha512-39hCCOl+YUAyMOu6B9SmUTiHUU0t/CxJNUmY3qRdJujbqi+lrQcL11ysYUsAvFWPBdhihrv1z0oRG84Yr3dODQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.3) + dev: true + /@babel/runtime@7.22.11: resolution: {integrity: sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==} engines: {node: '>=6.9.0'} @@ -3284,6 +3374,24 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse@7.23.4: + resolution: {integrity: sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.4 + '@babel/generator': 7.23.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.4 + '@babel/types': 7.23.4 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/types@7.23.0: resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} engines: {node: '>=6.9.0'} @@ -3292,6 +3400,15 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + /@babel/types@7.23.4: + resolution: {integrity: sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true @@ -3537,6 +3654,15 @@ packages: dev: true optional: true + /@esbuild/android-arm64@0.19.7: + resolution: {integrity: sha512-YEDcw5IT7hW3sFKZBkCAQaOCJQLONVcD4bOyTXMZz5fr66pTHnAet46XAtbXAkJRfIn2YVhdC6R9g4xa27jQ1w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm@0.18.20: resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -3555,6 +3681,15 @@ packages: dev: true optional: true + /@esbuild/android-arm@0.19.7: + resolution: {integrity: sha512-YGSPnndkcLo4PmVl2tKatEn+0mlVMr3yEpOOT0BeMria87PhvoJb5dg5f5Ft9fbCVgtAz4pWMzZVgSEGpDAlww==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64@0.18.20: resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} @@ -3573,6 +3708,15 @@ packages: dev: true optional: true + /@esbuild/android-x64@0.19.7: + resolution: {integrity: sha512-jhINx8DEjz68cChFvM72YzrqfwJuFbfvSxZAk4bebpngGfNNRm+zRl4rtT9oAX6N9b6gBcFaJHFew5Blf6CvUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64@0.18.20: resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} @@ -3591,6 +3735,15 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64@0.19.7: + resolution: {integrity: sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64@0.18.20: resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} @@ -3609,6 +3762,15 @@ packages: dev: true optional: true + /@esbuild/darwin-x64@0.19.7: + resolution: {integrity: sha512-Lc0q5HouGlzQEwLkgEKnWcSazqr9l9OdV2HhVasWJzLKeOt0PLhHaUHuzb8s/UIya38DJDoUm74GToZ6Wc7NGQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64@0.18.20: resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} @@ -3627,6 +3789,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64@0.19.7: + resolution: {integrity: sha512-+y2YsUr0CxDFF7GWiegWjGtTUF6gac2zFasfFkRJPkMAuMy9O7+2EH550VlqVdpEEchWMynkdhC9ZjtnMiHImQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64@0.18.20: resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} @@ -3645,6 +3816,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64@0.19.7: + resolution: {integrity: sha512-CdXOxIbIzPJmJhrpmJTLx+o35NoiKBIgOvmvT+jeSadYiWJn0vFKsl+0bSG/5lwjNHoIDEyMYc/GAPR9jxusTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64@0.18.20: resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} @@ -3663,6 +3843,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm64@0.19.7: + resolution: {integrity: sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm@0.18.20: resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} @@ -3681,6 +3870,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm@0.19.7: + resolution: {integrity: sha512-Y+SCmWxsJOdQtjcBxoacn/pGW9HDZpwsoof0ttL+2vGcHokFlfqV666JpfLCSP2xLxFpF1lj7T3Ox3sr95YXww==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32@0.18.20: resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} @@ -3699,6 +3897,15 @@ packages: dev: true optional: true + /@esbuild/linux-ia32@0.19.7: + resolution: {integrity: sha512-2BbiL7nLS5ZO96bxTQkdO0euGZIUQEUXMTrqLxKUmk/Y5pmrWU84f+CMJpM8+EHaBPfFSPnomEaQiG/+Gmh61g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.18.20: resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -3717,6 +3924,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64@0.19.7: + resolution: {integrity: sha512-BVFQla72KXv3yyTFCQXF7MORvpTo4uTA8FVFgmwVrqbB/4DsBFWilUm1i2Oq6zN36DOZKSVUTb16jbjedhfSHw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el@0.18.20: resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} @@ -3735,6 +3951,15 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el@0.19.7: + resolution: {integrity: sha512-DzAYckIaK+pS31Q/rGpvUKu7M+5/t+jI+cdleDgUwbU7KdG2eC3SUbZHlo6Q4P1CfVKZ1lUERRFP8+q0ob9i2w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64@0.18.20: resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} @@ -3753,6 +3978,15 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64@0.19.7: + resolution: {integrity: sha512-JQ1p0SmUteNdUaaiRtyS59GkkfTW0Edo+e0O2sihnY4FoZLz5glpWUQEKMSzMhA430ctkylkS7+vn8ziuhUugQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64@0.18.20: resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} @@ -3771,6 +4005,15 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64@0.19.7: + resolution: {integrity: sha512-xGwVJ7eGhkprY/nB7L7MXysHduqjpzUl40+XoYDGC4UPLbnG+gsyS1wQPJ9lFPcxYAaDXbdRXd1ACs9AE9lxuw==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x@0.18.20: resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} @@ -3789,6 +4032,15 @@ packages: dev: true optional: true + /@esbuild/linux-s390x@0.19.7: + resolution: {integrity: sha512-U8Rhki5PVU0L0nvk+E8FjkV8r4Lh4hVEb9duR6Zl21eIEYEwXz8RScj4LZWA2i3V70V4UHVgiqMpszXvG0Yqhg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64@0.18.20: resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} @@ -3807,6 +4059,15 @@ packages: dev: true optional: true + /@esbuild/linux-x64@0.19.7: + resolution: {integrity: sha512-ZYZopyLhm4mcoZXjFt25itRlocKlcazDVkB4AhioiL9hOWhDldU9n38g62fhOI4Pth6vp+Mrd5rFKxD0/S+7aQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64@0.18.20: resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} @@ -3825,6 +4086,15 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64@0.19.7: + resolution: {integrity: sha512-/yfjlsYmT1O3cum3J6cmGG16Fd5tqKMcg5D+sBYLaOQExheAJhqr8xOAEIuLo8JYkevmjM5zFD9rVs3VBcsjtQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64@0.18.20: resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} @@ -3843,6 +4113,15 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64@0.19.7: + resolution: {integrity: sha512-MYDFyV0EW1cTP46IgUJ38OnEY5TaXxjoDmwiTXPjezahQgZd+j3T55Ht8/Q9YXBM0+T9HJygrSRGV5QNF/YVDQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64@0.18.20: resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -3861,6 +4140,15 @@ packages: dev: true optional: true + /@esbuild/sunos-x64@0.19.7: + resolution: {integrity: sha512-JcPvgzf2NN/y6X3UUSqP6jSS06V0DZAV/8q0PjsZyGSXsIGcG110XsdmuWiHM+pno7/mJF6fjH5/vhUz/vA9fw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64@0.18.20: resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} @@ -3879,6 +4167,15 @@ packages: dev: true optional: true + /@esbuild/win32-arm64@0.19.7: + resolution: {integrity: sha512-ZA0KSYti5w5toax5FpmfcAgu3ZNJxYSRm0AW/Dao5up0YV1hDVof1NvwLomjEN+3/GMtaWDI+CIyJOMTRSTdMw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32@0.18.20: resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} @@ -3897,6 +4194,15 @@ packages: dev: true optional: true + /@esbuild/win32-ia32@0.19.7: + resolution: {integrity: sha512-CTOnijBKc5Jpk6/W9hQMMvJnsSYRYgveN6O75DTACCY18RA2nqka8dTZR+x/JqXCRiKk84+5+bRKXUSbbwsS0A==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64@0.18.20: resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} @@ -3915,6 +4221,15 @@ packages: dev: true optional: true + /@esbuild/win32-x64@0.19.7: + resolution: {integrity: sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.33.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3954,6 +4269,11 @@ packages: dev: true optional: true + /@fastify/busboy@2.1.0: + resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + engines: {node: '>=14'} + dev: true + /@gar/promisify@1.1.3: resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} requiresBuild: true @@ -4504,7 +4824,7 @@ packages: dependencies: '@intlify/bundle-utils': 7.0.2(vue-i18n@9.2.2) '@intlify/shared': 9.3.0-beta.24 - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) '@vue/compiler-sfc': 3.3.8 debug: 4.3.4(supports-color@8.1.1) fast-glob: 3.3.1 @@ -5351,11 +5671,11 @@ packages: typescript: 5.2.2 dev: true - /@netlify/functions@2.3.0: - resolution: {integrity: sha512-E3kzXPWMP/r1rAWhjTaXcaOT47dhEvg/eQUJjRLhD9Zzp0WqkdynHr+bqff4rFNv6tuXrtFZrpbPJFKHH0c0zw==} + /@netlify/functions@2.4.0: + resolution: {integrity: sha512-dIqhdj5u4Lu/8qbYwtYpn8NfvIyPHbSTV2lAP4ocL+iwC9As06AXT0wa/xOpO2vRWJa0IMxdZaqCPnkyHlHiyg==} engines: {node: '>=14.0.0'} dependencies: - '@netlify/serverless-functions-api': 1.9.0 + '@netlify/serverless-functions-api': 1.11.0 is-promise: 4.0.0 dev: true @@ -5364,8 +5684,8 @@ packages: engines: {node: ^14.16.0 || >=16.0.0} dev: true - /@netlify/serverless-functions-api@1.9.0: - resolution: {integrity: sha512-Jq4uk1Mwa5vyxImupJYXPP+I5yYcp3PtguvXtJRutKdm9DPALXfZVtCQzBWMNdZiqVWCM3La9hvaBsPjSMfeug==} + /@netlify/serverless-functions-api@1.11.0: + resolution: {integrity: sha512-3splAsr2CekL7VTwgo6yTvzD2+f269/s+TJafYazonqMNNo31yzvFxD5HpLtni4DNE1ppymVKZ4X/rLN3yl0vQ==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@netlify/node-cookies': 0.1.0 @@ -5568,31 +5888,31 @@ packages: resolution: {integrity: sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==} dev: true - /@nuxt/devtools-kit@1.0.0(nuxt@3.8.1)(vite@4.5.0): - resolution: {integrity: sha512-cNloBepQYCBW6x/ctfCvyYRZudxhfgh5w5JDswpCzn7KXmm8U6abG2jyT0FXIaceW1d5QYMpGCN1RUw24wSvOA==} + /@nuxt/devtools-kit@1.0.3(nuxt@3.8.2)(vite@4.5.0): + resolution: {integrity: sha512-a/ZAVmrD5yOfUYhRVfC9afMkczzL8J8zdf0h6QHbTd33rJW/jmjwTn++RTdnbSD2gg2fSBRi/h8y17RmqIdb9g==} peerDependencies: - nuxt: ^3.7.4 + nuxt: ^3.8.1 vite: '*' dependencies: - '@nuxt/kit': 3.8.1 - '@nuxt/schema': 3.8.1 + '@nuxt/kit': 3.8.2 + '@nuxt/schema': 3.8.2 execa: 7.2.0 - nuxt: 3.8.1(eslint@8.33.0)(sass@1.69.5)(vite@4.5.0) - vite: 4.5.0(sass@1.69.5) + nuxt: 3.8.2(eslint@8.33.0)(sass@1.69.5)(vite@4.5.0) + vite: 4.5.0(@types/node@20.3.1)(sass@1.69.5) transitivePeerDependencies: - rollup - supports-color dev: true - /@nuxt/devtools-wizard@1.0.0: - resolution: {integrity: sha512-9OeZM2/Y4VuI06gdlDjmYM8yUzdfnywy4t2u2VAEfA2Lk7vk3U1lYn51IAqr+Gits9tp/Q9OiktMWmPLLNGgFw==} + /@nuxt/devtools-wizard@1.0.3: + resolution: {integrity: sha512-iningPOhBVMYov+7hDX5yr1tAVVA6AmJ7EgRkNfmHqPX2rerhD4eIN7Ao4KwkjGmQJ7qdM7k8w+NiL8OQOpdFQ==} hasBin: true dependencies: consola: 3.2.3 diff: 5.1.0 execa: 7.2.0 - global-dirs: 3.0.1 - magicast: 0.3.0 + global-directory: 4.0.1 + magicast: 0.3.2 pathe: 1.1.1 pkg-types: 1.0.3 prompts: 2.4.2 @@ -5600,35 +5920,34 @@ packages: semver: 7.5.4 dev: true - /@nuxt/devtools@1.0.0(nuxt@3.8.1)(vite@4.5.0): - resolution: {integrity: sha512-pM5AvystXlFPYOsGbH8PBxEYkttiEWHsZnGw660iMw8QedB6mAweT21XX9LDS69cqnRY5uTFqVOmO9Y4EYL3hg==} + /@nuxt/devtools@1.0.3(nuxt@3.8.2)(vite@4.5.0): + resolution: {integrity: sha512-2mXvQiS3KTMF0fO80Y9WLx95yubRoIp2wSCarmhhqInPe8/0K9VZ4TUiTGF20ti45h0ky3OAxiVSmLfViwDWjg==} hasBin: true peerDependencies: - nuxt: ^3.7.4 + nuxt: ^3.8.1 vite: '*' dependencies: '@antfu/utils': 0.7.6 - '@nuxt/devtools-kit': 1.0.0(nuxt@3.8.1)(vite@4.5.0) - '@nuxt/devtools-wizard': 1.0.0 - '@nuxt/kit': 3.8.1 + '@nuxt/devtools-kit': 1.0.3(nuxt@3.8.2)(vite@4.5.0) + '@nuxt/devtools-wizard': 1.0.3 + '@nuxt/kit': 3.8.2 birpc: 0.2.14 consola: 3.2.3 destr: 2.0.2 error-stack-parser-es: 0.1.1 execa: 7.2.0 - fast-glob: 3.3.1 + fast-glob: 3.3.2 flatted: 3.2.9 get-port-please: 3.1.1 - global-dirs: 3.0.1 - h3: 1.8.2 + h3: 1.9.0 hookable: 5.5.3 - image-meta: 0.1.1 - is-installed-globally: 0.4.0 + image-meta: 0.2.0 + is-installed-globally: 1.0.0 launch-editor: 2.6.1 local-pkg: 0.5.0 - magicast: 0.3.0 - nitropack: 2.7.2 - nuxt: 3.8.1(eslint@8.33.0)(sass@1.69.5)(vite@4.5.0) + magicast: 0.3.2 + nitropack: 2.8.0 + nuxt: 3.8.2(eslint@8.33.0)(sass@1.69.5)(vite@4.5.0) nypm: 0.3.3 ofetch: 1.3.3 ohash: 1.1.3 @@ -5637,13 +5956,13 @@ packages: perfect-debounce: 1.0.0 pkg-types: 1.0.3 rc9: 2.1.1 - scule: 1.0.0 + scule: 1.1.0 semver: 7.5.4 - simple-git: 3.20.0 + simple-git: 3.21.0 sirv: 2.0.3 - unimport: 3.4.0(rollup@3.29.4) - vite: 4.5.0(sass@1.69.5) - vite-plugin-inspect: 0.7.41(@nuxt/kit@3.8.1)(vite@4.5.0) + unimport: 3.5.0(rollup@4.5.0) + vite: 4.5.0(@types/node@20.3.1)(sass@1.69.5) + vite-plugin-inspect: 0.7.42(@nuxt/kit@3.8.2)(vite@4.5.0) vite-plugin-vue-inspector: 4.0.0(vite@4.5.0) which: 3.0.1 ws: 8.14.2 @@ -5655,6 +5974,7 @@ packages: - '@azure/keyvault-secrets' - '@azure/storage-blob' - '@capacitor/preferences' + - '@netlify/blobs' - '@planetscale/database' - '@upstash/redis' - '@vercel/kv' @@ -5668,14 +5988,14 @@ packages: - xml2js dev: true - /@nuxt/image-edge@1.0.0-28341483.13a120f: - resolution: {integrity: sha512-ZhLrNO4B51tJs8nFXnGM53+yPXernc18GmfYGPR/THFFwHTLbaLkQZl/P7hJXaPP0zlH8+8rwd+x+lchwzumEA==} + /@nuxt/image-edge@1.0.0-28342020.fed0a3b: + resolution: {integrity: sha512-+rDkWddrBA+nnWFujSj2tlHdOCFv4rUFaVJzDezYF6e0Yly8W+xrtDh/91Dz8vJbeLo9qsGBIkMevh4eUmyEMQ==} engines: {node: ^14.16.0 || >=16.11.0} dependencies: - '@nuxt/kit': 3.8.1 + '@nuxt/kit': 3.8.2 consola: 3.2.3 defu: 6.1.3 - h3: 1.8.2 + h3: 1.9.0 image-meta: 0.2.0 node-fetch-native: 1.4.1 ohash: 1.1.3 @@ -5720,7 +6040,7 @@ packages: scule: 1.0.0 semver: 7.5.4 unctx: 2.3.1 - unimport: 3.4.0(rollup@3.29.4) + unimport: 3.4.0 untyped: 1.4.0 transitivePeerDependencies: - rollup @@ -5773,7 +6093,34 @@ packages: semver: 7.5.4 ufo: 1.3.2 unctx: 2.3.1 - unimport: 3.4.0(rollup@3.29.4) + unimport: 3.4.0 + untyped: 1.4.0 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /@nuxt/kit@3.8.2: + resolution: {integrity: sha512-LrXCm8hAkw+zpX8teUSD/LqXRarlXjbRiYxDkaqw739JSHFReWzBFgJbojsJqL4h1XIEScDGGOWiEgO4QO1sMg==} + engines: {node: ^14.18.0 || >=16.10.0} + dependencies: + '@nuxt/schema': 3.8.2 + c12: 1.5.1 + consola: 3.2.3 + defu: 6.1.3 + globby: 14.0.0 + hash-sum: 2.0.0 + ignore: 5.3.0 + jiti: 1.21.0 + knitwork: 1.0.0 + mlly: 1.4.2 + pathe: 1.1.1 + pkg-types: 1.0.3 + scule: 1.1.0 + semver: 7.5.4 + ufo: 1.3.2 + unctx: 2.3.1 + unimport: 3.5.0(rollup@4.5.0) untyped: 1.4.0 transitivePeerDependencies: - rollup @@ -5795,7 +6142,7 @@ packages: scule: 1.0.0 std-env: 3.5.0 ufo: 1.3.2 - unimport: 3.4.0(rollup@3.29.4) + unimport: 3.4.0 untyped: 1.4.0 transitivePeerDependencies: - rollup @@ -5814,7 +6161,7 @@ packages: postcss-import-resolver: 2.0.0 std-env: 3.5.0 ufo: 1.3.2 - unimport: 3.4.0(rollup@3.29.4) + unimport: 3.4.0 untyped: 1.4.0 transitivePeerDependencies: - rollup @@ -5832,7 +6179,27 @@ packages: pkg-types: 1.0.3 std-env: 3.5.0 ufo: 1.3.2 - unimport: 3.4.0(rollup@3.29.4) + unimport: 3.4.0 + untyped: 1.4.0 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /@nuxt/schema@3.8.2: + resolution: {integrity: sha512-AMpysQ/wHK2sOujLShqYdC4OSj/S3fFJGjhYXqA2g6dgmz+FNQWJRG/ie5sI9r2EX9Ela1wt0GN1jZR3wYNE8Q==} + engines: {node: ^14.18.0 || >=16.10.0} + dependencies: + '@nuxt/ui-templates': 1.3.1 + consola: 3.2.3 + defu: 6.1.3 + hookable: 5.5.3 + pathe: 1.1.1 + pkg-types: 1.0.3 + scule: 1.1.0 + std-env: 3.5.0 + ufo: 1.3.2 + unimport: 3.5.0(rollup@4.5.0) untyped: 1.4.0 transitivePeerDependencies: - rollup @@ -5843,7 +6210,7 @@ packages: resolution: {integrity: sha512-kZ+rWq/5MZonMhp8KGFI5zMaR2VsiWpnlkOLJIuIX2WoJl0DkHvtxCtuFq2erAqMVruWLpKU+tgMC+1cno/QmA==} hasBin: true dependencies: - '@nuxt/kit': 3.8.1 + '@nuxt/kit': 3.8.2 ci-info: 3.8.0 consola: 3.2.3 create-require: 1.1.1 @@ -5868,28 +6235,28 @@ packages: /@nuxt/ui-templates@1.3.1: resolution: {integrity: sha512-5gc02Pu1HycOVUWJ8aYsWeeXcSTPe8iX8+KIrhyEtEoOSkY0eMBuo0ssljB8wALuEmepv31DlYe5gpiRwkjESA==} - /@nuxt/vite-builder@3.8.1(eslint@8.33.0)(sass@1.69.5)(vue@3.3.8): - resolution: {integrity: sha512-Ot/twGONxj22T9U4bxp771ibKVFlZxIiYDHY/e6mZsE4Blc0efKo6MzPPPo0W4/tXQbtKKEq41uINN3dMI3mag==} + /@nuxt/vite-builder@3.8.2(eslint@8.33.0)(sass@1.69.5)(vue@3.3.8): + resolution: {integrity: sha512-l/lzDDTbd3M89BpmWqjhVLgLVRqfkKp0tyYgV5seJQjj3SX+IeqI7k6k8+dMEifdeO34jUajVWptNpITXQryyg==} engines: {node: ^14.18.0 || >=16.10.0} peerDependencies: vue: latest dependencies: - '@nuxt/kit': 3.8.1 - '@rollup/plugin-replace': 5.0.5(rollup@3.29.4) - '@vitejs/plugin-vue': 4.4.0(vite@4.5.0)(vue@3.3.8) - '@vitejs/plugin-vue-jsx': 3.0.2(vite@4.5.0)(vue@3.3.8) + '@nuxt/kit': 3.8.2 + '@rollup/plugin-replace': 5.0.5(rollup@4.5.0) + '@vitejs/plugin-vue': 4.5.0(vite@4.5.0)(vue@3.3.8) + '@vitejs/plugin-vue-jsx': 3.1.0(vite@4.5.0)(vue@3.3.8) autoprefixer: 10.4.16(postcss@8.4.31) clear: 0.1.0 consola: 3.2.3 cssnano: 6.0.1(postcss@8.4.31) defu: 6.1.3 - esbuild: 0.19.5 + esbuild: 0.19.7 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 externality: 1.0.2 fs-extra: 11.1.1 get-port-please: 3.1.1 - h3: 1.8.2 + h3: 1.9.0 knitwork: 1.0.0 magic-string: 0.30.5 mlly: 1.4.2 @@ -5898,12 +6265,12 @@ packages: perfect-debounce: 1.0.0 pkg-types: 1.0.3 postcss: 8.4.31 - rollup-plugin-visualizer: 5.9.2(rollup@3.29.4) + rollup-plugin-visualizer: 5.9.2(rollup@4.5.0) std-env: 3.5.0 strip-literal: 1.3.0 ufo: 1.3.2 - unplugin: 1.5.0 - vite: 4.5.0(sass@1.69.5) + unplugin: 1.5.1 + vite: 4.5.0(@types/node@20.3.1)(sass@1.69.5) vite-node: 0.33.0(sass@1.69.5) vite-plugin-checker: 0.6.2(eslint@8.33.0)(vite@4.5.0) vue: 3.3.8 @@ -6385,7 +6752,7 @@ packages: '@iconify/iconify': 3.1.1 dev: true - /@rollup/plugin-alias@5.0.1(rollup@3.29.4): + /@rollup/plugin-alias@5.0.1(rollup@4.5.0): resolution: {integrity: sha512-JObvbWdOHoMy9W7SU0lvGhDtWq9PllP5mjpAy+TUslZG/WzOId9u80Hsqq1vCUn9pFJ0cxpdcnAv+QzU2zFH3Q==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6394,11 +6761,11 @@ packages: rollup: optional: true dependencies: - rollup: 3.29.4 + rollup: 4.5.0 slash: 4.0.0 dev: true - /@rollup/plugin-commonjs@25.0.7(rollup@3.29.4): + /@rollup/plugin-commonjs@25.0.7(rollup@4.5.0): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6407,16 +6774,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.5 - rollup: 3.29.4 + rollup: 4.5.0 dev: true - /@rollup/plugin-inject@5.0.5(rollup@3.29.4): + /@rollup/plugin-inject@5.0.5(rollup@4.5.0): resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6425,13 +6792,13 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) estree-walker: 2.0.2 magic-string: 0.30.5 - rollup: 3.29.4 + rollup: 4.5.0 dev: true - /@rollup/plugin-json@6.0.1(rollup@3.29.4): + /@rollup/plugin-json@6.0.1(rollup@4.5.0): resolution: {integrity: sha512-RgVfl5hWMkxN1h/uZj8FVESvPuBJ/uf6ly6GTj0GONnkfoBN5KC0MSz+PN2OLDgYXMhtG0mWpTrkiOjoxAIevw==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6440,11 +6807,11 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) - rollup: 3.29.4 + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) + rollup: 4.5.0 dev: true - /@rollup/plugin-node-resolve@15.2.3(rollup@3.29.4): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.5.0): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6453,16 +6820,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.4 - rollup: 3.29.4 + rollup: 4.5.0 dev: true - /@rollup/plugin-replace@5.0.5(rollup@3.29.4): + /@rollup/plugin-replace@5.0.5(rollup@4.5.0): resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6471,12 +6838,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) magic-string: 0.30.5 - rollup: 3.29.4 + rollup: 4.5.0 dev: true - /@rollup/plugin-terser@0.4.4(rollup@3.29.4): + /@rollup/plugin-terser@0.4.4(rollup@4.5.0): resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6485,13 +6852,13 @@ packages: rollup: optional: true dependencies: - rollup: 3.29.4 + rollup: 4.5.0 serialize-javascript: 6.0.1 smob: 1.4.0 terser: 5.19.2 dev: true - /@rollup/plugin-wasm@6.2.2(rollup@3.29.4): + /@rollup/plugin-wasm@6.2.2(rollup@4.5.0): resolution: {integrity: sha512-gpC4R1G9Ni92ZIRTexqbhX7U+9estZrbhP+9SRb0DW9xpB9g7j34r+J2hqrcW/lRI7dJaU84MxZM0Rt82tqYPQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6500,8 +6867,8 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) - rollup: 3.29.4 + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) + rollup: 4.5.0 dev: true /@rollup/pluginutils@4.2.1: @@ -6512,33 +6879,117 @@ packages: picomatch: 2.3.1 dev: true - /@rollup/pluginutils@5.0.4: - resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@types/estree': 1.0.1 - estree-walker: 2.0.2 - picomatch: 2.3.1 - dev: true + /@rollup/pluginutils@5.0.4: + resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@rollup/pluginutils@5.0.5(rollup@4.5.0): + resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 4.5.0 + + /@rollup/rollup-android-arm-eabi@4.5.0: + resolution: {integrity: sha512-OINaBGY+Wc++U0rdr7BLuFClxcoWaVW3vQYqmQq6B3bqQ/2olkaoz+K8+af/Mmka/C2yN5j+L9scBkv4BtKsDA==} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + + /@rollup/rollup-android-arm64@4.5.0: + resolution: {integrity: sha512-UdMf1pOQc4ZmUA/NTmKhgJTBimbSKnhPS2zJqucqFyBRFPnPDtwA8MzrGNTjDeQbIAWfpJVAlxejw+/lQyBK/w==} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + + /@rollup/rollup-darwin-arm64@4.5.0: + resolution: {integrity: sha512-L0/CA5p/idVKI+c9PcAPGorH6CwXn6+J0Ys7Gg1axCbTPgI8MeMlhA6fLM9fK+ssFhqogMHFC8HDvZuetOii7w==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + + /@rollup/rollup-darwin-x64@4.5.0: + resolution: {integrity: sha512-QZCbVqU26mNlLn8zi/XDDquNmvcr4ON5FYAHQQsyhrHx8q+sQi/6xduoznYXwk/KmKIXG5dLfR0CvY+NAWpFYQ==} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.5.0: + resolution: {integrity: sha512-VpSQ+xm93AeV33QbYslgf44wc5eJGYfYitlQzAi3OObu9iwrGXEnmu5S3ilkqE3Pr/FkgOiJKV/2p0ewf4Hrtg==} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.5.0: + resolution: {integrity: sha512-OrEyIfpxSsMal44JpEVx9AEcGpdBQG1ZuWISAanaQTSMeStBW+oHWwOkoqR54bw3x8heP8gBOyoJiGg+fLY8qQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.5.0: + resolution: {integrity: sha512-1H7wBbQuE6igQdxMSTjtFfD+DGAudcYWhp106z/9zBA8OQhsJRnemO4XGavdzHpGhRtRxbgmUGdO3YQgrWf2RA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.5.0: + resolution: {integrity: sha512-FVyFI13tXw5aE65sZdBpNjPVIi4Q5mARnL/39UIkxvSgRAIqCo5sCpCELk0JtXHGee2owZz5aNLbWNfBHzr71Q==} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.5.0: + resolution: {integrity: sha512-eBPYl2sLpH/o8qbSz6vPwWlDyThnQjJfcDOGFbNjmjb44XKC1F5dQfakOsADRVrXCNzM6ZsSIPDG5dc6HHLNFg==} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.5.0: + resolution: {integrity: sha512-xaOHIfLOZypoQ5U2I6rEaugS4IYtTgP030xzvrBf5js7p9WI9wik07iHmsKaej8Z83ZDxN5GyypfoyKV5O5TJA==} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.5.0: + resolution: {integrity: sha512-Al6quztQUrHwcOoU2TuFblUQ5L+/AmPBXFR6dUvyo4nRj2yQRK0WIUaGMF/uwKulvRcXkpHe3k9A8Vf93VDktA==} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true - /@rollup/pluginutils@5.0.5(rollup@3.29.4): - resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@types/estree': 1.0.1 - estree-walker: 2.0.2 - picomatch: 2.3.1 - rollup: 3.29.4 + /@rollup/rollup-win32-x64-msvc@4.5.0: + resolution: {integrity: sha512-8kdW+brNhI/NzJ4fxDufuJUjepzINqJKLGHuxyAtpPG9bMbn8P5mtaCcbOm0EzLJ+atg+kF9dwg8jpclkVqx5w==} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true /@sentry/core@6.19.7: resolution: {integrity: sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==} @@ -6702,6 +7153,11 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true + /@sindresorhus/merge-streams@1.0.0: + resolution: {integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==} + engines: {node: '>=18'} + dev: true + /@sinonjs/commons@3.0.0: resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} dependencies: @@ -7821,11 +8277,11 @@ packages: /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: - '@types/chai': 4.3.10 + '@types/chai': 4.3.11 dev: true - /@types/chai@4.3.10: - resolution: {integrity: sha512-of+ICnbqjmFCiixUnqRulbylyXQrPqIGf/B3Jax1wIF3DvSheysQxAWvqHhZiW3IQrycvokcLcFQlveGp+vyNg==} + /@types/chai@4.3.11: + resolution: {integrity: sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==} /@types/chai@4.3.5: resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} @@ -7975,8 +8431,8 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest@29.5.8: - resolution: {integrity: sha512-fXEFTxMV2Co8ZF5aYFJv+YeA08RTYJfhtN5c9JSv/mFEMe+xxjufCb+PHL+bJcMs/ebPUsBu+UNTEz+ydXrR6g==} + /@types/jest@29.5.9: + resolution: {integrity: sha512-zJeWhqBwVoPm83sP8h1/SVntwWTu5lZbKQGCvBjxQOyEWnKnsaomt2y7SlV4KfwlrHAHHAn00Sh4IAWaIsGOgQ==} dependencies: expect: 29.6.4 pretty-format: 29.6.3 @@ -8038,12 +8494,12 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/mocha@10.0.4: - resolution: {integrity: sha512-xKU7bUjiFTIttpWaIZ9qvgg+22O1nmbA+HRxdlR+u6TWsGfmFdXrheJoK4fFxrHNVIOBDvDNKZG+LYBpMHpX3w==} + /@types/mocha@10.0.5: + resolution: {integrity: sha512-JUI82qwkRhYJYesuKSeFy46fKbhLaV9RU1gAh2PHmyoEECvlTf5UYeIivYlMszp1WT2CwJ4ziC3zoxsodhsGwg==} dev: true - /@types/multer@1.4.10: - resolution: {integrity: sha512-6l9mYMhUe8wbnz/67YIjc7ZJyQNZoKq7fRXVf7nMdgWgalD0KyzJ2ywI7hoATUSXSbTu9q2HBiEwzy0tNN1v2w==} + /@types/multer@1.4.11: + resolution: {integrity: sha512-svK240gr6LVWvv3YGyhLlA+6LRRWA4mnGIU7RcNmgjBYFl6665wcXrRfxGp5tEPVHUNm5FMcmq7too9bxCwX/w==} dependencies: '@types/express': 4.17.21 dev: true @@ -8084,8 +8540,8 @@ packages: '@types/node': 20.3.3 dev: true - /@types/papaparse@5.3.11: - resolution: {integrity: sha512-ISil0lMkpRDrBTKRPnUgVb5IqxWwj19gWBrX/ROk3pbkkslBN3URa713r/BSfAUj+w9gTPg3S3f45aMToVfh1w==} + /@types/papaparse@5.3.12: + resolution: {integrity: sha512-b6tFvGgpY6zUjflrhhyFjNCN/okylDH/DKqAuYX2xqzK004H4CoEvnFyfT0ijiC/9h+dCUQYWS1Vl1mliLuMJA==} dependencies: '@types/node': 20.3.3 dev: true @@ -8170,8 +8626,8 @@ packages: '@types/mime': 3.0.1 '@types/node': 20.3.3 - /@types/showdown@2.0.4: - resolution: {integrity: sha512-cSXSKOpTSr2HTdlGq8WskyZwNyxKhM7M/zJeLVdWjlUQmQ4d8TdtPrwz4JejglZdzIzSgU5loi5QUaEJF9JD8w==} + /@types/showdown@2.0.5: + resolution: {integrity: sha512-fpzpGeXq69n032uOYFEmctcaWftPw4ZZ4saxMaIi6k+aZrTVjME1bT6xWp2JNUJiAM587FGuwW7jMqYixWzgVw==} dev: true /@types/sortablejs@1.13.0: @@ -8225,8 +8681,8 @@ packages: resolution: {integrity: sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==} dev: true - /@types/validator@13.11.6: - resolution: {integrity: sha512-HUgHujPhKuNzgNXBRZKYexwoG+gHKU+tnfPqjWXFghZAnn73JElicMkuSKJyLGr9JgyA8IgK7fj88IyA9rwYeQ==} + /@types/validator@13.11.7: + resolution: {integrity: sha512-q0JomTsJ2I5Mv7dhHhQLGjMvX0JJm5dyZ1DXQySIUzU1UlwzB8bt+R6+LODUbz0UDIOvEzGc28tk27gBJw2N8Q==} dev: true /@types/vue-barcode-reader@0.0.3: @@ -8653,42 +9109,42 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@unhead/dom@1.8.3: - resolution: {integrity: sha512-rPj9PiRTDf+Qy7tSK/UCGxwKfsOOQ+YniANxQy9v2AhWsDy2amW7kbfgR9fVaSlOFdpsyuh2wLCbMcyj9Wn0Jw==} + /@unhead/dom@1.8.5: + resolution: {integrity: sha512-CLgOw5mF9Moo29z2SwNrJcdX75pPEJxoNpxbrlf3BctwpZJV19MMyxp9HaG9yAYLNTrYIsHjma/dZ2I0184StA==} dependencies: - '@unhead/schema': 1.8.3 - '@unhead/shared': 1.8.3 + '@unhead/schema': 1.8.5 + '@unhead/shared': 1.8.5 dev: true - /@unhead/schema@1.8.3: - resolution: {integrity: sha512-3XbcJzdlyLr/RV2TKaygI21YorlU6XPgHn/MoWjQvH4PYiHkH8PtTGg8Je6k3gvcUURSiDfucFKaGEYdJXAVqQ==} + /@unhead/schema@1.8.5: + resolution: {integrity: sha512-Ui/0r1VI9fM5RjjJJhzz/C7lvey+gNy2ZuSvSvL7jE3/w+CfBwdp5Vw+3jHVhr5JKKOFzzYeBL0b4lk/mmYF7w==} dependencies: hookable: 5.5.3 zhead: 2.2.4 dev: true - /@unhead/shared@1.8.3: - resolution: {integrity: sha512-E1knEiAO0iENLzZd+LjWA4mUp8JRaSxo5V0vMjSENyf5hSVB/SxAVjDPmTIelLY7KrP5mJrNMen2ZmQrr/AZJw==} + /@unhead/shared@1.8.5: + resolution: {integrity: sha512-2yckMljMlYWvzO4l3ZOcTdZJPi2CjUyuS/zy/eHK4ZHTvcRzc9igKSDKBon6wnWK/WDjwryZBdPUrN/mjRMmWg==} dependencies: - '@unhead/schema': 1.8.3 + '@unhead/schema': 1.8.5 dev: true - /@unhead/ssr@1.8.3: - resolution: {integrity: sha512-GSTkUCL4qymGkPU8BXiV74Epj0yyXJgmfTSJ3EqalpQTYyJHl910Mq2oDWk7Xyl5lHBrz2Bn0lzNXfSkS7Ao0Q==} + /@unhead/ssr@1.8.5: + resolution: {integrity: sha512-RG2OHLR5Jy4FOXj9+YvQr6mx7MZuoALQFQXn/8z0Nb1SM4Aipt5GY1Aeh8bk6Gd+g5BbiqOqmJNumvgdKOPm5w==} dependencies: - '@unhead/schema': 1.8.3 - '@unhead/shared': 1.8.3 + '@unhead/schema': 1.8.5 + '@unhead/shared': 1.8.5 dev: true - /@unhead/vue@1.8.3(vue@3.3.8): - resolution: {integrity: sha512-sj/1VosMreUQXd68rn5jDLdpgFVdN0mKrjW/8eZMWbomZkzbzs7FxyRUApd584xNjFVdtyWrTepmrNSKmEwKgg==} + /@unhead/vue@1.8.5(vue@3.3.8): + resolution: {integrity: sha512-m8Q1U1JJvn5LKI5tGRh6f0Of0R64szZN7AXfRN8zTumf6HuOAdg6bHEX+lUX3wtRLUAPzrM9Oz4r0nTqIa9Oow==} peerDependencies: vue: latest dependencies: - '@unhead/schema': 1.8.3 - '@unhead/shared': 1.8.3 + '@unhead/schema': 1.8.5 + '@unhead/shared': 1.8.5 hookable: 5.5.3 - unhead: 1.8.3 + unhead: 1.8.5 vue: 3.3.8 dev: true @@ -8709,7 +9165,7 @@ packages: hasBin: true dependencies: '@ampproject/remapping': 2.2.1 - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) '@unocss/config': 0.51.13 '@unocss/core': 0.51.13 '@unocss/preset-uno': 0.51.13 @@ -8892,7 +9348,7 @@ packages: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 dependencies: '@ampproject/remapping': 2.2.1 - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) '@unocss/config': 0.51.13 '@unocss/core': 0.51.13 '@unocss/inspector': 0.51.13 @@ -8901,7 +9357,7 @@ packages: chokidar: 3.5.3 fast-glob: 3.3.1 magic-string: 0.30.5 - vite: 4.5.0(sass@1.69.5) + vite: 4.5.0(@types/node@20.3.1)(sass@1.69.5) transitivePeerDependencies: - rollup dev: true @@ -8912,7 +9368,7 @@ packages: webpack: ^4 || ^5 dependencies: '@ampproject/remapping': 2.2.1 - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) '@unocss/config': 0.51.13 '@unocss/core': 0.51.13 chokidar: 3.5.3 @@ -8946,30 +9402,30 @@ packages: - supports-color dev: true - /@vitejs/plugin-vue-jsx@3.0.2(vite@4.5.0)(vue@3.3.8): - resolution: {integrity: sha512-obF26P2Z4Ogy3cPp07B4VaW6rpiu0ue4OT2Y15UxT5BZZ76haUY9guOsZV3uWh/I6xc+VeiW+ZVabRE82FyzWw==} + /@vitejs/plugin-vue-jsx@3.1.0(vite@4.5.0)(vue@3.3.8): + resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: ^4.0.0 + vite: ^4.0.0 || ^5.0.0 vue: latest dependencies: - '@babel/core': 7.23.2 - '@babel/plugin-transform-typescript': 7.22.11(@babel/core@7.23.2) - '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.2) - vite: 4.5.0(sass@1.69.5) + '@babel/core': 7.23.3 + '@babel/plugin-transform-typescript': 7.23.4(@babel/core@7.23.3) + '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.3) + vite: 4.5.0(@types/node@20.3.1)(sass@1.69.5) vue: 3.3.8 transitivePeerDependencies: - supports-color dev: true - /@vitejs/plugin-vue@4.4.0(vite@4.5.0)(vue@3.3.8): - resolution: {integrity: sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==} + /@vitejs/plugin-vue@4.5.0(vite@4.5.0)(vue@3.3.8): + resolution: {integrity: sha512-a2WSpP8X8HTEww/U00bU4mX1QpLINNuz/2KMNpLsdu3BzOpak3AGI1CJYBTXcc4SPhaD0eNRUp7IyQK405L5dQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: ^4.0.0 + vite: ^4.0.0 || ^5.0.0 vue: latest dependencies: - vite: 4.5.0(sass@1.69.5) + vite: 4.5.0(@types/node@20.3.1)(sass@1.69.5) vue: 3.3.8 dev: true @@ -9054,7 +9510,7 @@ packages: optional: true dependencies: '@babel/types': 7.23.0 - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) '@vue/compiler-sfc': 3.3.8 ast-kit: 0.11.2 local-pkg: 0.4.3 @@ -9087,6 +9543,25 @@ packages: - supports-color dev: true + /@vue/babel-plugin-jsx@1.1.5(@babel/core@7.23.3): + resolution: {integrity: sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-module-imports': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.3) + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + '@vue/babel-helper-vue-transform-on': 1.1.5 + camelcase: 6.3.0 + html-tags: 3.3.1 + svg-tags: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /@vue/compiler-core@3.3.8: resolution: {integrity: sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==} dependencies: @@ -9296,7 +9771,7 @@ packages: resolution: {integrity: sha512-qhdwPI65Bgcj23e5lpGfQsxcy0bMjCAsUGoXkJ7DsoeDUdasbZ2DBa4dinFCOER3lF4gwUv+UD2AlA11zdzMFw==} dev: false - /@vueuse/nuxt@10.2.1(nuxt@3.8.1)(vue@3.3.8): + /@vueuse/nuxt@10.2.1(nuxt@3.8.2)(vue@3.3.8): resolution: {integrity: sha512-01iDXnjZFDaGZnEL0nvlmSTNV0EG6WY+VSFyWnBji9lbxdQwOn4DHvLou3ePe8ipaoQVtY58WcL0OHIFa4+fBA==} peerDependencies: nuxt: ^3.0.0 @@ -9305,7 +9780,7 @@ packages: '@vueuse/core': 10.2.1(vue@3.3.8) '@vueuse/metadata': 10.2.1 local-pkg: 0.4.3 - nuxt: 3.8.1(eslint@8.33.0)(sass@1.69.5)(vite@4.5.0) + nuxt: 3.8.2(eslint@8.33.0)(sass@1.69.5)(vite@4.5.0) vue-demi: 0.14.5(vue@3.3.8) transitivePeerDependencies: - '@vue/composition-api' @@ -10132,7 +10607,7 @@ packages: engines: {node: '>=16.14.0'} dependencies: '@babel/parser': 7.23.0 - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) pathe: 1.1.1 transitivePeerDependencies: - rollup @@ -10143,7 +10618,7 @@ packages: engines: {node: '>=16.14.0'} dependencies: '@babel/parser': 7.23.0 - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) pathe: 1.1.1 transitivePeerDependencies: - rollup @@ -10781,7 +11256,7 @@ packages: chokidar: 3.5.3 defu: 6.1.3 dotenv: 16.3.1 - giget: 1.1.2 + giget: 1.1.3 jiti: 1.21.0 mlly: 1.4.2 ohash: 1.1.3 @@ -10836,7 +11311,7 @@ packages: promise-inflight: 1.0.1 rimraf: 3.0.2 ssri: 8.0.1 - tar: 6.1.15 + tar: 6.2.0 unique-filename: 1.1.1 transitivePeerDependencies: - bluebird @@ -10856,7 +11331,7 @@ packages: minipass-pipeline: 1.2.4 p-map: 4.0.0 ssri: 10.0.5 - tar: 6.1.15 + tar: 6.2.0 unique-filename: 3.0.0 dev: true @@ -10874,7 +11349,7 @@ packages: minipass-pipeline: 1.2.4 p-map: 4.0.0 ssri: 10.0.5 - tar: 6.1.15 + tar: 6.2.0 unique-filename: 3.0.0 dev: true @@ -11095,6 +11570,12 @@ packages: consola: 3.2.3 dev: true + /citty@0.1.5: + resolution: {integrity: sha512-AS7n5NSc0OQVMV9v6wt3ByujNIrne0/cTjiC2MYqhvao57VNfiuVksTSr2p17nVOhEr2KtqiAkGwHcgMC/qUuQ==} + dependencies: + consola: 3.2.3 + dev: true + /cjs-module-lexer@1.2.3: resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} dev: true @@ -12933,6 +13414,36 @@ packages: '@esbuild/win32-x64': 0.19.5 dev: true + /esbuild@0.19.7: + resolution: {integrity: sha512-6brbTZVqxhqgbpqBR5MzErImcpA0SQdoKOkcWK/U30HtQxnokIpG3TX2r0IJqbFUzqLjhU/zC1S5ndgakObVCQ==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.19.7 + '@esbuild/android-arm64': 0.19.7 + '@esbuild/android-x64': 0.19.7 + '@esbuild/darwin-arm64': 0.19.7 + '@esbuild/darwin-x64': 0.19.7 + '@esbuild/freebsd-arm64': 0.19.7 + '@esbuild/freebsd-x64': 0.19.7 + '@esbuild/linux-arm': 0.19.7 + '@esbuild/linux-arm64': 0.19.7 + '@esbuild/linux-ia32': 0.19.7 + '@esbuild/linux-loong64': 0.19.7 + '@esbuild/linux-mips64el': 0.19.7 + '@esbuild/linux-ppc64': 0.19.7 + '@esbuild/linux-riscv64': 0.19.7 + '@esbuild/linux-s390x': 0.19.7 + '@esbuild/linux-x64': 0.19.7 + '@esbuild/netbsd-x64': 0.19.7 + '@esbuild/openbsd-x64': 0.19.7 + '@esbuild/sunos-x64': 0.19.7 + '@esbuild/win32-arm64': 0.19.7 + '@esbuild/win32-ia32': 0.19.7 + '@esbuild/win32-x64': 0.19.7 + dev: true + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -13933,6 +14444,17 @@ packages: merge2: 1.4.1 micromatch: 4.0.5 + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + /fast-json-stable-stringify@2.0.0: resolution: {integrity: sha512-eIgZvM9C3P05kg0qxfqaVU6Tma4QedCPIByQOcemV0vju8ot3cS2DpHi4m2G2JvbSMI152rjfLX0p1pkSdyPlQ==} dev: true @@ -14099,7 +14621,7 @@ packages: resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} engines: {node: '>=12.0.0'} dependencies: - flatted: 3.2.7 + flatted: 3.2.9 keyv: 4.5.3 rimraf: 3.0.2 dev: true @@ -14108,10 +14630,6 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - dev: true - /flatted@3.2.9: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true @@ -14582,20 +15100,6 @@ packages: assert-plus: 1.0.0 dev: false - /giget@1.1.2: - resolution: {integrity: sha512-HsLoS07HiQ5oqvObOI+Qb2tyZH4Gj5nYGfF9qQcZNrPw+uEFhdXtgJr01aO2pWadGHucajYDLxxbtQkm97ON2A==} - hasBin: true - dependencies: - colorette: 2.0.20 - defu: 6.1.3 - https-proxy-agent: 5.0.1 - mri: 1.2.0 - node-fetch-native: 1.4.1 - pathe: 1.1.1 - tar: 6.1.15 - transitivePeerDependencies: - - supports-color - /giget@1.1.3: resolution: {integrity: sha512-zHuCeqtfgqgDwvXlR84UNgnJDuUHQcNI5OqWqFxxuk2BshuKbYhJWdxBsEo4PvKqoGh23lUAIvBNpChMLv7/9Q==} hasBin: true @@ -14609,7 +15113,6 @@ packages: tar: 6.2.0 transitivePeerDependencies: - supports-color - dev: true /git-config-path@2.0.0: resolution: {integrity: sha512-qc8h1KIQbJpp+241id3GuAtkdyJ+IK+LIVtkiFTRKRrmddDzs3SI9CvP1QYmWBFvm1I/PWRwj//of8bgAc0ltA==} @@ -14753,6 +15256,13 @@ packages: path-scurry: 1.10.1 dev: true + /global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + dependencies: + ini: 4.1.1 + dev: true + /global-dirs@0.1.1: resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} engines: {node: '>=4'} @@ -14760,13 +15270,6 @@ packages: ini: 1.3.8 dev: true - /global-dirs@3.0.1: - resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} - engines: {node: '>=10'} - dependencies: - ini: 2.0.0 - dev: true - /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -14820,6 +15323,18 @@ packages: merge2: 1.4.1 slash: 4.0.0 + /globby@14.0.0: + resolution: {integrity: sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==} + engines: {node: '>=18'} + dependencies: + '@sindresorhus/merge-streams': 1.0.0 + fast-glob: 3.3.2 + ignore: 5.2.4 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + dev: true + /google-auth-library@8.9.0: resolution: {integrity: sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==} engines: {node: '>=12'} @@ -14993,6 +15508,19 @@ packages: unenv: 1.7.4 dev: true + /h3@1.9.0: + resolution: {integrity: sha512-+F3ZqrNV/CFXXfZ2lXBINHi+rM4Xw3CDC5z2CDK3NMPocjonKipGLLDSkrqY9DOrioZNPTIdDMWfQKm//3X2DA==} + dependencies: + cookie-es: 1.0.0 + defu: 6.1.3 + destr: 2.0.2 + iron-webcrypto: 1.0.0 + radix3: 1.1.0 + ufo: 1.3.2 + uncrypto: 0.1.3 + unenv: 1.7.4 + dev: true + /handlebars@4.7.6: resolution: {integrity: sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==} engines: {node: '>=0.4.7'} @@ -15389,9 +15917,9 @@ packages: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} - /image-meta@0.1.1: - resolution: {integrity: sha512-+oXiHwOEPr1IE5zY0tcBLED/CYcre15J4nwL50x3o0jxWqEkyjrusiKP3YSU+tr9fvJp33ZcP5Gpj2295g3aEw==} - engines: {node: '>=10.18.0'} + /ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + engines: {node: '>= 4'} dev: true /image-meta@0.2.0: @@ -15457,9 +15985,9 @@ packages: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: true - /ini@2.0.0: - resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} - engines: {node: '>=10'} + /ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true /init-package-json@5.0.0: @@ -15616,7 +16144,7 @@ packages: defu: 6.1.3 destr: 2.0.2 etag: 1.8.1 - h3: 1.8.2 + h3: 1.9.0 image-meta: 0.2.0 listhen: 1.5.5 ofetch: 1.3.3 @@ -15650,6 +16178,10 @@ packages: resolution: {integrity: sha512-gScdcWHjTGclCU15CIv2r069NoQrys1UeUFFfaO1hL++ytLHkVw7N5nXJmFf3J2LEDMz1PkrvC0m62JEeu1axQ==} dev: true + /iron-webcrypto@1.0.0: + resolution: {integrity: sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==} + dev: true + /is-absolute@1.0.0: resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} engines: {node: '>=0.10.0'} @@ -15832,12 +16364,12 @@ packages: is-docker: 3.0.0 dev: true - /is-installed-globally@0.4.0: - resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} - engines: {node: '>=10'} + /is-installed-globally@1.0.0: + resolution: {integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==} + engines: {node: '>=18'} dependencies: - global-dirs: 3.0.1 - is-path-inside: 3.0.3 + global-directory: 4.0.1 + is-path-inside: 4.0.0 dev: true /is-interactive@1.0.0: @@ -15890,6 +16422,11 @@ packages: engines: {node: '>=8'} dev: true + /is-path-inside@4.0.0: + resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} + engines: {node: '>=12'} + dev: true + /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} @@ -17318,7 +17855,7 @@ packages: consola: 3.2.3 defu: 6.1.3 get-port-please: 3.1.1 - h3: 1.8.2 + h3: 1.9.0 http-shutdown: 1.2.2 jiti: 1.21.0 mlly: 1.4.2 @@ -17576,6 +18113,11 @@ packages: engines: {node: 14 || >=16.14} dev: true + /lru-cache@10.0.3: + resolution: {integrity: sha512-B7gr+F6MkqB3uzINHXNctGieGsRTMwIBgxkp0yq/5BwcuDzD4A8wQpHQW6vDAm1uKSLQghmRdD9sKqf2vJ1cEg==} + engines: {node: 14 || >=16.14} + dev: true + /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: @@ -17656,11 +18198,11 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - /magicast@0.3.0: - resolution: {integrity: sha512-ZsEzw35h7xYoFlWHIyxU6zmH4sdwzdmY0DY4s/Lie/qKimeijz2jRw8/OV2248kt/y6FbvoTvGRKyB7y/Mpx8w==} + /magicast@0.3.2: + resolution: {integrity: sha512-Fjwkl6a0syt9TFN0JSYpOybxiMCkYNEeOTnOTNRbjphirLakznZXAqrXgj/7GG3D1dvETONNwrBfinvAbpunDg==} dependencies: - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 + '@babel/parser': 7.23.4 + '@babel/types': 7.23.4 source-map-js: 1.0.2 dev: true @@ -18534,8 +19076,8 @@ packages: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} dev: true - /nitropack@2.7.2: - resolution: {integrity: sha512-6vQbGdBNR20N8wTChzIQUZQmNVhWVDrjUdpOYD68u2hlyUiJembth2fQuoWw3KlsoNYWFvcyqL9X3DPjjnoEUQ==} + /nitropack@2.8.0: + resolution: {integrity: sha512-dkCILTSpM1Sd3oaagV21ifPxPOSCvFZjfdDMOa6SrxpcntitHkD1QgvjdbqEfnwGNPGbp7Z42qNhzNljDVeKMQ==} engines: {node: ^16.11.0 || >=17.0.0} hasBin: true peerDependencies: @@ -18545,35 +19087,35 @@ packages: optional: true dependencies: '@cloudflare/kv-asset-handler': 0.3.0 - '@netlify/functions': 2.3.0 - '@rollup/plugin-alias': 5.0.1(rollup@3.29.4) - '@rollup/plugin-commonjs': 25.0.7(rollup@3.29.4) - '@rollup/plugin-inject': 5.0.5(rollup@3.29.4) - '@rollup/plugin-json': 6.0.1(rollup@3.29.4) - '@rollup/plugin-node-resolve': 15.2.3(rollup@3.29.4) - '@rollup/plugin-replace': 5.0.5(rollup@3.29.4) - '@rollup/plugin-terser': 0.4.4(rollup@3.29.4) - '@rollup/plugin-wasm': 6.2.2(rollup@3.29.4) - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + '@netlify/functions': 2.4.0 + '@rollup/plugin-alias': 5.0.1(rollup@4.5.0) + '@rollup/plugin-commonjs': 25.0.7(rollup@4.5.0) + '@rollup/plugin-inject': 5.0.5(rollup@4.5.0) + '@rollup/plugin-json': 6.0.1(rollup@4.5.0) + '@rollup/plugin-node-resolve': 15.2.3(rollup@4.5.0) + '@rollup/plugin-replace': 5.0.5(rollup@4.5.0) + '@rollup/plugin-terser': 0.4.4(rollup@4.5.0) + '@rollup/plugin-wasm': 6.2.2(rollup@4.5.0) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) '@types/http-proxy': 1.17.14 '@vercel/nft': 0.24.3 archiver: 6.0.1 c12: 1.5.1 chalk: 5.3.0 chokidar: 3.5.3 - citty: 0.1.4 + citty: 0.1.5 consola: 3.2.3 cookie-es: 1.0.0 defu: 6.1.3 destr: 2.0.2 dot-prop: 8.0.2 - esbuild: 0.19.5 + esbuild: 0.19.7 escape-string-regexp: 5.0.0 etag: 1.8.1 fs-extra: 11.1.1 - globby: 13.2.2 + globby: 14.0.0 gzip-size: 7.0.0 - h3: 1.8.2 + h3: 1.9.0 hookable: 5.5.3 httpxy: 0.1.5 is-primitive: 3.0.1 @@ -18588,15 +19130,15 @@ packages: node-fetch-native: 1.4.1 ofetch: 1.3.3 ohash: 1.1.3 - openapi-typescript: 6.7.0 + openapi-typescript: 6.7.1 pathe: 1.1.1 perfect-debounce: 1.0.0 pkg-types: 1.0.3 pretty-bytes: 6.1.1 radix3: 1.1.0 - rollup: 3.29.4 - rollup-plugin-visualizer: 5.9.2(rollup@3.29.4) - scule: 1.0.0 + rollup: 4.5.0 + rollup-plugin-visualizer: 5.9.2(rollup@4.5.0) + scule: 1.1.0 semver: 7.5.4 serve-placeholder: 2.0.1 serve-static: 1.15.0 @@ -18605,8 +19147,8 @@ packages: uncrypto: 0.1.3 unctx: 2.3.1 unenv: 1.7.4 - unimport: 3.4.0(rollup@3.29.4) - unstorage: 1.9.0 + unimport: 3.5.0(rollup@4.5.0) + unstorage: 1.10.1 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -18615,6 +19157,7 @@ packages: - '@azure/keyvault-secrets' - '@azure/storage-blob' - '@capacitor/preferences' + - '@netlify/blobs' - '@planetscale/database' - '@upstash/redis' - '@vercel/kv' @@ -18714,7 +19257,7 @@ packages: nopt: 7.2.0 proc-log: 3.0.0 semver: 7.5.4 - tar: 6.1.15 + tar: 6.2.0 which: 4.0.0 transitivePeerDependencies: - supports-color @@ -18755,7 +19298,7 @@ packages: npmlog: 6.0.2 rimraf: 3.0.2 semver: 7.5.4 - tar: 6.1.15 + tar: 6.2.0 which: 2.0.2 transitivePeerDependencies: - supports-color @@ -19074,8 +19617,8 @@ packages: boolbase: 1.0.0 dev: true - /nuxi@3.9.1: - resolution: {integrity: sha512-4R4tcC2uQ5QCnHxyKoX5nZm/YUesCcQM3bZBKYU/8ZWrWjK6aPG6Q5zOQG1aLPkAotyahNsqtSiU/CrRoenEgA==} + /nuxi@3.10.0: + resolution: {integrity: sha512-veZXw2NuaQ1PrpvHrnQ1dPgkAjv0WqPlvFReg5Iubum0QVGWdJJvGuNsltDQyPcZ7X7mhMXq9SLIpokK4kpvKA==} engines: {node: ^14.18.0 || >=16.10.0} hasBin: true optionalDependencies: @@ -19106,8 +19649,8 @@ packages: - vite dev: true - /nuxt@3.8.1(eslint@8.33.0)(sass@1.69.5)(vite@4.5.0): - resolution: {integrity: sha512-RSGO56Gv0x2f6AXWw4o4GoBaVdsD0qkPCjrX7Ud/jzH3cRJoyYMPuq/9AOLvf2o1ecZWl39j5elqJ4QHmggyOA==} + /nuxt@3.8.2(eslint@8.33.0)(sass@1.69.5)(vite@4.5.0): + resolution: {integrity: sha512-HUAyifmqTs2zcQBGvcby3KNs2pBAk+l7ZbLjD1oCNqQQ+wBuZ1qgLC4Ebu++y4g3o3Y8WAWSvpafbKRLQZziPw==} engines: {node: ^14.18.0 || >=16.10.0} hasBin: true peerDependencies: @@ -19120,15 +19663,15 @@ packages: optional: true dependencies: '@nuxt/devalue': 2.0.2 - '@nuxt/devtools': 1.0.0(nuxt@3.8.1)(vite@4.5.0) - '@nuxt/kit': 3.8.1 - '@nuxt/schema': 3.8.1 + '@nuxt/devtools': 1.0.3(nuxt@3.8.2)(vite@4.5.0) + '@nuxt/kit': 3.8.2 + '@nuxt/schema': 3.8.2 '@nuxt/telemetry': 2.5.2 '@nuxt/ui-templates': 1.3.1 - '@nuxt/vite-builder': 3.8.1(eslint@8.33.0)(sass@1.69.5)(vue@3.3.8) - '@unhead/dom': 1.8.3 - '@unhead/ssr': 1.8.3 - '@unhead/vue': 1.8.3(vue@3.3.8) + '@nuxt/vite-builder': 3.8.2(eslint@8.33.0)(sass@1.69.5)(vue@3.3.8) + '@unhead/dom': 1.8.5 + '@unhead/ssr': 1.8.5 + '@unhead/vue': 1.8.5(vue@3.3.8) '@vue/shared': 3.3.8 acorn: 8.11.2 c12: 1.5.1 @@ -19137,20 +19680,20 @@ packages: defu: 6.1.3 destr: 2.0.2 devalue: 4.3.2 - esbuild: 0.19.5 + esbuild: 0.19.7 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 fs-extra: 11.1.1 - globby: 13.2.2 - h3: 1.8.2 + globby: 14.0.0 + h3: 1.9.0 hookable: 5.5.3 jiti: 1.21.0 klona: 2.0.6 knitwork: 1.0.0 magic-string: 0.30.5 mlly: 1.4.2 - nitropack: 2.7.2 - nuxi: 3.9.1 + nitropack: 2.8.0 + nuxi: 3.10.0 nypm: 0.3.3 ofetch: 1.3.3 ohash: 1.1.3 @@ -19158,16 +19701,16 @@ packages: perfect-debounce: 1.0.0 pkg-types: 1.0.3 radix3: 1.1.0 - scule: 1.0.0 - std-env: 3.4.3 + scule: 1.1.0 + std-env: 3.5.0 strip-literal: 1.3.0 - ufo: 1.3.1 + ufo: 1.3.2 ultrahtml: 1.5.2 uncrypto: 0.1.3 unctx: 2.3.1 unenv: 1.7.4 - unimport: 3.4.0(rollup@3.29.4) - unplugin: 1.5.0 + unimport: 3.5.0(rollup@4.5.0) + unplugin: 1.5.1 unplugin-vue-router: 0.7.0(vue-router@4.2.5)(vue@3.3.8) untyped: 1.4.0 vue: 3.3.8 @@ -19182,6 +19725,7 @@ packages: - '@azure/keyvault-secrets' - '@azure/storage-blob' - '@capacitor/preferences' + - '@netlify/blobs' - '@planetscale/database' - '@upstash/redis' - '@vercel/kv' @@ -19452,15 +19996,15 @@ packages: is-wsl: 2.2.0 dev: true - /openapi-typescript@6.7.0: - resolution: {integrity: sha512-eoUfJwhnMEug7euZ1dATG7iRiDVsEROwdPkhLUDiaFjcClV4lzft9F0Ii0fYjULCPNIiWiFi0BqMpSxipuvAgQ==} + /openapi-typescript@6.7.1: + resolution: {integrity: sha512-Q3Ltt0KUm2smcPrsaR8qKmSwQ1KM4yGDJVoQdpYa0yvKPeN8huDx5utMT7DvwvJastHHzUxajjivK3WN2+fobg==} hasBin: true dependencies: ansi-colors: 4.1.3 fast-glob: 3.3.1 js-yaml: 4.1.0 supports-color: 9.4.0 - undici: 5.23.0 + undici: 5.27.2 yargs-parser: 21.1.1 dev: true @@ -19652,7 +20196,7 @@ packages: read-package-json-fast: 3.0.2 sigstore: 1.9.0 ssri: 10.0.5 - tar: 6.1.15 + tar: 6.2.0 transitivePeerDependencies: - bluebird - supports-color @@ -19680,7 +20224,7 @@ packages: read-package-json-fast: 3.0.2 sigstore: 2.1.0 ssri: 10.0.5 - tar: 6.1.15 + tar: 6.2.0 transitivePeerDependencies: - bluebird - supports-color @@ -19917,6 +20461,11 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + /path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + dev: true + /pathe@1.1.1: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} @@ -21239,7 +21788,7 @@ packages: - supports-color dev: true - /rollup-plugin-visualizer@5.9.2(rollup@3.29.4): + /rollup-plugin-visualizer@5.9.2(rollup@4.5.0): resolution: {integrity: sha512-waHktD5mlWrYFrhOLbti4YgQCn1uR24nYsNuXxg7LkPH8KdTXVWR9DNY1WU0QqokyMixVXJS4J04HNrVTMP01A==} engines: {node: '>=14'} hasBin: true @@ -21251,7 +21800,7 @@ packages: dependencies: open: 8.4.2 picomatch: 2.3.1 - rollup: 3.29.4 + rollup: 4.5.0 source-map: 0.7.4 yargs: 17.7.2 dev: true @@ -21262,19 +21811,31 @@ packages: estree-walker: 0.6.1 dev: true - /rollup@3.28.1: - resolution: {integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==} + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.3 dev: true - /rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} + /rollup@4.5.0: + resolution: {integrity: sha512-41xsWhzxqjMDASCxH5ibw1mXk+3c4TNI2UjKbLxe6iEzrSQnqOzmmK8/3mufCPbzHNJ2e04Fc1ddI35hHy+8zg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.5.0 + '@rollup/rollup-android-arm64': 4.5.0 + '@rollup/rollup-darwin-arm64': 4.5.0 + '@rollup/rollup-darwin-x64': 4.5.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.5.0 + '@rollup/rollup-linux-arm64-gnu': 4.5.0 + '@rollup/rollup-linux-arm64-musl': 4.5.0 + '@rollup/rollup-linux-x64-gnu': 4.5.0 + '@rollup/rollup-linux-x64-musl': 4.5.0 + '@rollup/rollup-win32-arm64-msvc': 4.5.0 + '@rollup/rollup-win32-ia32-msvc': 4.5.0 + '@rollup/rollup-win32-x64-msvc': 4.5.0 fsevents: 2.3.3 /rootpath@0.1.2: @@ -21419,6 +21980,10 @@ packages: /scule@1.0.0: resolution: {integrity: sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ==} + /scule@1.1.0: + resolution: {integrity: sha512-vRUjqhyM/YWYzT+jsMk6tnl3NkY4A4soJ8uyh3O6Um+JXEQL9ozUCe7pqrxn3CSKokw0hw3nFStfskzpgYwR0g==} + dev: true + /sdp@2.12.0: resolution: {integrity: sha512-jhXqQAQVM+8Xj5EjJGVweuEzgtGWb3tmEEpl3CLP3cStInSbVHSg0QWOGQzNq8pSID4JkpeV2mPqlMDLrm0/Vw==} dev: false @@ -21637,8 +22202,8 @@ packages: dev: true optional: true - /simple-git@3.20.0: - resolution: {integrity: sha512-ozK8tl2hvLts8ijTs18iFruE+RoqmC/mqZhjs/+V7gS5W68JpJ3+FCTmLVqmR59MaUQ52MfGQuWsIqfsTbbJ0Q==} + /simple-git@3.21.0: + resolution: {integrity: sha512-oTzw9248AF5bDTMk9MrxsRzEzivMlY+DWH0yWS4VYpMhNLhDWnN06pCtaUyPnqv/FpsdeNmRqmZugMABHRPdDA==} dependencies: '@kwsites/file-exists': 1.1.1 '@kwsites/promise-deferred': 1.1.1 @@ -21694,6 +22259,11 @@ packages: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} + /slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + dev: true + /slice-ansi@3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} engines: {node: '>=8'} @@ -22567,7 +23137,6 @@ packages: minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 - dev: true /tarn@3.0.2: resolution: {integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==} @@ -23259,10 +23828,6 @@ packages: hasBin: true dev: true - /ufo@1.3.1: - resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} - dev: true - /ufo@1.3.2: resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} @@ -23325,11 +23890,11 @@ packages: resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} dev: true - /undici@5.23.0: - resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==} + /undici@5.27.2: + resolution: {integrity: sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==} engines: {node: '>=14.0'} dependencies: - busboy: 1.6.0 + '@fastify/busboy': 2.1.0 dev: true /unenv@1.7.4: @@ -23353,19 +23918,24 @@ packages: resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} dev: false - /unhead@1.8.3: - resolution: {integrity: sha512-2/5NJs7nY1MgCkUNuyevALM9nSgGp2loRv5QPhYyZXUPdF+F76CpKvkqATEOEJ/1yDzWjCaWrNh4u5lS6BEioA==} + /unhead@1.8.5: + resolution: {integrity: sha512-h8bTzI8tJQKD0nWYXtLEWD5TTsXhaT034bcxtY9yY77hjyxi/HYL0a/FYebBLVvY02HsWgENahO6rKPTvDRhig==} dependencies: - '@unhead/dom': 1.8.3 - '@unhead/schema': 1.8.3 - '@unhead/shared': 1.8.3 + '@unhead/dom': 1.8.5 + '@unhead/schema': 1.8.5 + '@unhead/shared': 1.8.5 hookable: 5.5.3 dev: true + /unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + dev: true + /unimport@3.2.0: resolution: {integrity: sha512-9buxPxkNwxwxAlH/RfOFHxtQTUrlmBGi9Ai9HezY2yYbkoOhgJTYPI6+WqxI1EZphoM9cw1SHoCFRkXSb8/fjQ==} dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) escape-string-regexp: 5.0.0 fast-glob: 3.3.1 local-pkg: 0.4.3 @@ -23379,10 +23949,10 @@ packages: transitivePeerDependencies: - rollup - /unimport@3.4.0(rollup@3.29.4): + /unimport@3.4.0: resolution: {integrity: sha512-M/lfFEgufIT156QAr/jWHLUn55kEmxBBiQsMxvRSIbquwmeJEyQYgshHDEvQDWlSJrVOOTAgnJ3FvlsrpGkanA==} dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) escape-string-regexp: 5.0.0 fast-glob: 3.3.1 local-pkg: 0.4.3 @@ -23396,6 +23966,24 @@ packages: transitivePeerDependencies: - rollup + /unimport@3.5.0(rollup@4.5.0): + resolution: {integrity: sha512-0Ei1iTeSYxs7oxxUf79/KaBc2dPjZxe7qdVpw7yIz5YcdTZjmBYO6ToLDW+fX9QOHiueZ3xtwb5Z/wqaSfXx6A==} + dependencies: + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) + escape-string-regexp: 5.0.0 + fast-glob: 3.3.2 + local-pkg: 0.5.0 + magic-string: 0.30.5 + mlly: 1.4.2 + pathe: 1.1.1 + pkg-types: 1.0.3 + scule: 1.1.0 + strip-literal: 1.3.0 + unplugin: 1.5.1 + transitivePeerDependencies: + - rollup + dev: true + /unique-filename@1.1.1: resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} requiresBuild: true @@ -23570,7 +24158,7 @@ packages: optional: true dependencies: '@babel/types': 7.23.0 - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) '@vue-macros/common': 1.8.0(vue@3.3.8) ast-walker-scope: 0.5.0 chokidar: 3.5.3 @@ -23579,8 +24167,8 @@ packages: local-pkg: 0.4.3 mlly: 1.4.2 pathe: 1.1.1 - scule: 1.0.0 - unplugin: 1.5.0 + scule: 1.1.0 + unplugin: 1.5.1 vue-router: 4.2.5(vue@3.3.8) yaml: 2.3.4 transitivePeerDependencies: @@ -23605,8 +24193,74 @@ packages: webpack-sources: 3.2.3 webpack-virtual-modules: 0.5.0 + /unplugin@1.5.1: + resolution: {integrity: sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew==} + dependencies: + acorn: 8.11.2 + chokidar: 3.5.3 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.0 + dev: true + + /unstorage@1.10.1: + resolution: {integrity: sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==} + peerDependencies: + '@azure/app-configuration': ^1.4.1 + '@azure/cosmos': ^4.0.0 + '@azure/data-tables': ^13.2.2 + '@azure/identity': ^3.3.2 + '@azure/keyvault-secrets': ^4.7.0 + '@azure/storage-blob': ^12.16.0 + '@capacitor/preferences': ^5.0.6 + '@netlify/blobs': ^6.2.0 + '@planetscale/database': ^1.11.0 + '@upstash/redis': ^1.23.4 + '@vercel/kv': ^0.2.3 + idb-keyval: ^6.2.1 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/kv': + optional: true + idb-keyval: + optional: true + dependencies: + anymatch: 3.1.3 + chokidar: 3.5.3 + destr: 2.0.2 + h3: 1.9.0 + ioredis: 5.3.2 + listhen: 1.5.5 + lru-cache: 10.0.3 + mri: 1.2.0 + node-fetch-native: 1.4.1 + ofetch: 1.3.3 + ufo: 1.3.2 + transitivePeerDependencies: + - supports-color + dev: true + /unstorage@1.9.0: resolution: {integrity: sha512-VpD8ZEYc/le8DZCrny3bnqKE4ZjioQxBRnWE+j5sGNvziPjeDlaS1NaFFHzl/kkXaO3r7UaF8MGQrs14+1B4pQ==} + requiresBuild: true peerDependencies: '@azure/app-configuration': ^1.4.1 '@azure/cosmos': ^3.17.3 @@ -23646,7 +24300,7 @@ packages: anymatch: 3.1.3 chokidar: 3.5.3 destr: 2.0.2 - h3: 1.8.2 + h3: 1.9.0 ioredis: 5.3.2 listhen: 1.5.5 lru-cache: 10.0.1 @@ -23657,6 +24311,7 @@ packages: transitivePeerDependencies: - supports-color dev: true + optional: true /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} @@ -23891,7 +24546,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.9(@types/node@20.3.1)(sass@1.69.5) + vite: 4.5.0(@types/node@20.3.1)(sass@1.69.5) transitivePeerDependencies: - '@types/node' - less @@ -23913,7 +24568,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.5.0(sass@1.69.5) + vite: 4.5.0(@types/node@20.3.1)(sass@1.69.5) transitivePeerDependencies: - '@types/node' - less @@ -23970,15 +24625,15 @@ packages: semver: 7.5.4 strip-ansi: 6.0.1 tiny-invariant: 1.3.1 - vite: 4.5.0(sass@1.69.5) + vite: 4.5.0(@types/node@20.3.1)(sass@1.69.5) vscode-languageclient: 7.0.0 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.8 vscode-uri: 3.0.7 dev: true - /vite-plugin-inspect@0.7.41(@nuxt/kit@3.8.1)(vite@4.5.0): - resolution: {integrity: sha512-gASdFRO4CHDQF8qAk9LZEJyzlIJM4bFvDn7hz0e2r1PS6uq+yukd8+jHctOAbvCceQoTS5iDAgd4/mWcGWYoMw==} + /vite-plugin-inspect@0.7.42(@nuxt/kit@3.8.2)(vite@4.5.0): + resolution: {integrity: sha512-JCyX86wr3siQc+p9Kd0t8VkFHAJag0RaQVIpdFGSv5FEaePEVB6+V/RGtz2dQkkGSXQzRWrPs4cU3dRKg32bXw==} engines: {node: '>=14'} peerDependencies: '@nuxt/kit': '*' @@ -23988,15 +24643,15 @@ packages: optional: true dependencies: '@antfu/utils': 0.7.6 - '@nuxt/kit': 3.8.1 - '@rollup/pluginutils': 5.0.5(rollup@3.29.4) + '@nuxt/kit': 3.8.2 + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) debug: 4.3.4(supports-color@8.1.1) error-stack-parser-es: 0.1.1 fs-extra: 11.1.1 open: 9.1.0 picocolors: 1.0.0 sirv: 2.0.3 - vite: 4.5.0(sass@1.69.5) + vite: 4.5.0(@types/node@20.3.1)(sass@1.69.5) transitivePeerDependencies: - rollup - supports-color @@ -24019,7 +24674,7 @@ packages: '@purge-icons/core': 0.9.1 '@purge-icons/generated': 0.9.0 rollup-plugin-purge-icons: 0.9.1 - vite: 4.5.0(sass@1.69.5) + vite: 4.5.0(@types/node@20.3.1)(sass@1.69.5) transitivePeerDependencies: - encoding - supports-color @@ -24039,7 +24694,7 @@ packages: '@vue/compiler-dom': 3.3.8 kolorist: 1.8.0 magic-string: 0.30.5 - vite: 4.5.0(sass@1.69.5) + vite: 4.5.0(@types/node@20.3.1)(sass@1.69.5) transitivePeerDependencies: - supports-color dev: true @@ -24052,7 +24707,7 @@ packages: '@windicss/plugin-utils': 1.9.1 debug: 4.3.4(supports-color@8.1.1) kolorist: 1.8.0 - vite: 4.5.0(sass@1.69.5) + vite: 4.5.0(@types/node@20.3.1)(sass@1.69.5) windicss: 3.5.6 transitivePeerDependencies: - supports-color @@ -24089,13 +24744,13 @@ packages: '@types/node': 20.3.1 esbuild: 0.18.20 postcss: 8.4.31 - rollup: 3.28.1 + rollup: 3.29.4 sass: 1.69.5 optionalDependencies: fsevents: 2.3.3 dev: true - /vite@4.5.0(sass@1.69.5): + /vite@4.5.0(@types/node@20.3.1)(sass@1.69.5): resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -24123,9 +24778,10 @@ packages: terser: optional: true dependencies: + '@types/node': 20.3.1 esbuild: 0.18.20 postcss: 8.4.31 - rollup: 3.28.1 + rollup: 3.29.4 sass: 1.69.5 optionalDependencies: fsevents: 2.3.3 @@ -24586,6 +25242,10 @@ packages: /webpack-virtual-modules@0.5.0: resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} + /webpack-virtual-modules@0.6.0: + resolution: {integrity: sha512-KnaMTE6EItz/f2q4Gwg5/rmeKVi79OR58NoYnwDJqCk9ywMtTGbBnBcfoBtN4QbYu0lWXvyMoH2Owxuhe4qI6Q==} + dev: true + /webpack@5.89.0(esbuild@0.19.5): resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} engines: {node: '>=10.13.0'} From ffdc91d3ba34292fa1350844b01b093e361bd307 Mon Sep 17 00:00:00 2001 From: cedstrom Date: Mon, 20 Nov 2023 23:29:55 -0800 Subject: [PATCH 043/279] Update acl.ts to allow editor to import excel files Allow editors to import excel files via the top menu. --- packages/nc-gui/lib/acl.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/lib/acl.ts b/packages/nc-gui/lib/acl.ts index ca3e38ea0c..d405f16f9c 100644 --- a/packages/nc-gui/lib/acl.ts +++ b/packages/nc-gui/lib/acl.ts @@ -84,6 +84,7 @@ const rolePermissions = { filterChildrenRead: true, viewFieldEdit: true, csvTableImport: true, + excelTableImport: true, }, }, [ProjectRoles.COMMENTER]: { From 4f0f38d953fde3bb96db67d98dfdcea9819d6b72 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Tue, 21 Nov 2023 14:16:43 +0530 Subject: [PATCH 044/279] feat: remove signup link from signup page if invite only signup enabled --- .../nc-gui/composables/useGlobal/state.ts | 1 + .../nc-gui/composables/useGlobal/types.ts | 1 + packages/nc-gui/pages/signin.vue | 2 +- packages/nocodb/src/services/utils.service.ts | 26 ++++++++++++------- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/packages/nc-gui/composables/useGlobal/state.ts b/packages/nc-gui/composables/useGlobal/state.ts index 4fab0a5c72..318dea2a43 100644 --- a/packages/nc-gui/composables/useGlobal/state.ts +++ b/packages/nc-gui/composables/useGlobal/state.ts @@ -109,6 +109,7 @@ export function useGlobalState(storageKey = 'nocodb-gui-v2'): State { automationLogLevel: 'OFF', disableEmailAuth: false, dashboardPath: '/dashboard', + inviteOnlySignup: false, }) /** reactive token payload */ diff --git a/packages/nc-gui/composables/useGlobal/types.ts b/packages/nc-gui/composables/useGlobal/types.ts index f7e640cd7c..9efbfacb45 100644 --- a/packages/nc-gui/composables/useGlobal/types.ts +++ b/packages/nc-gui/composables/useGlobal/types.ts @@ -34,6 +34,7 @@ export interface AppInfo { disableEmailAuth: boolean mainSubDomain?: string dashboardPath: string + inviteOnlySignup: boolean } export interface StoredState { diff --git a/packages/nc-gui/pages/signin.vue b/packages/nc-gui/pages/signin.vue index 31cc73eb4e..63d3b35d77 100644 --- a/packages/nc-gui/pages/signin.vue +++ b/packages/nc-gui/pages/signin.vue @@ -184,7 +184,7 @@ function navigateForgotPassword() { -
+
{{ $t('msg.info.signUp.dontHaveAccount') }} {{ $t('general.signUp') }}
diff --git a/packages/nocodb/src/services/utils.service.ts b/packages/nocodb/src/services/utils.service.ts index 9cd676aef3..3abeeb31e1 100644 --- a/packages/nocodb/src/services/utils.service.ts +++ b/packages/nocodb/src/services/utils.service.ts @@ -5,10 +5,10 @@ import { ViewTypes } from 'nocodb-sdk'; import { ConfigService } from '@nestjs/config'; import { useAgent } from 'request-filtering-agent'; import type { AppConfig } from '~/interface/config'; -import { NC_ATTACHMENT_FIELD_SIZE } from '~/constants'; +import {NC_APP_SETTINGS, NC_ATTACHMENT_FIELD_SIZE} from '~/constants'; import SqlMgrv2 from '~/db/sql-mgr/v2/SqlMgrv2'; import { NcError } from '~/helpers/catchError'; -import { Base, User } from '~/models'; +import {Base, Store, User} from '~/models'; import Noco from '~/Noco'; import NcConnectionMgrv2 from '~/utils/common/NcConnectionMgrv2'; import { MetaTable } from '~/utils/globals'; @@ -365,6 +365,13 @@ export class UtilsService { async appInfo(param: { req: { ncSiteUrl: string } }) { const baseHasAdmin = !(await User.isFirst()); + + let settings: { invite_only_signup?: boolean } = {}; + try { + settings = JSON.parse((await Store.get(NC_APP_SETTINGS))?.value); + } catch {} + + const oidcAuthEnabled = !!( process.env.NC_OIDC_ISSUER && process.env.NC_OIDC_AUTHORIZATION_URL && @@ -384,10 +391,10 @@ export class UtilsService { type: 'rest', env: process.env.NODE_ENV, googleAuthEnabled: !!( - process.env.NC_GOOGLE_CLIENT_ID && process.env.NC_GOOGLE_CLIENT_SECRET + process.env.NC_GOOGLE_CLIENT_ID && process.env.NC_GOOGLE_CLIENT_SECRET ), githubAuthEnabled: !!( - process.env.NC_GITHUB_CLIENT_ID && process.env.NC_GITHUB_CLIENT_SECRET + process.env.NC_GITHUB_CLIENT_ID && process.env.NC_GITHUB_CLIENT_SECRET ), oidcAuthEnabled, oidcProviderName, @@ -395,8 +402,8 @@ export class UtilsService { connectToExternalDB: !process.env.NC_CONNECT_TO_EXTERNAL_DB_DISABLED, version: packageVersion, defaultLimit: Math.max( - Math.min(defaultLimitConfig.limitDefault, defaultLimitConfig.limitMax), - defaultLimitConfig.limitMin, + Math.min(defaultLimitConfig.limitDefault, defaultLimitConfig.limitMax), + defaultLimitConfig.limitMin, ), defaultGroupByLimit: defaultGroupByLimitConfig, timezone: defaultConnectionConfig.timezone, @@ -413,9 +420,10 @@ export class UtilsService { disableEmailAuth: this.configService.get('auth.disableEmailAuth', { infer: true, }), - mainSubDomain: this.configService.get('mainSubDomain', { infer: true }), - dashboardPath: this.configService.get('dashboardPath', { infer: true }), - }; + mainSubDomain: this.configService.get('mainSubDomain', {infer: true}), + dashboardPath: this.configService.get('dashboardPath', {infer: true}), + inviteOnlySignup: settings.invite_only_signup, + } return result; } From c75f1964837aabe3af2f48ca097caf7092af3a50 Mon Sep 17 00:00:00 2001 From: Muhammed Mustafa Date: Tue, 21 Nov 2023 12:38:08 +0000 Subject: [PATCH 045/279] fix: Fixed issue with Cell icon not taking column prop with column injection is provided --- packages/nc-gui/components/smartsheet/header/CellIcon.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/nc-gui/components/smartsheet/header/CellIcon.ts b/packages/nc-gui/components/smartsheet/header/CellIcon.ts index c279f43435..da3afd5966 100644 --- a/packages/nc-gui/components/smartsheet/header/CellIcon.ts +++ b/packages/nc-gui/components/smartsheet/header/CellIcon.ts @@ -112,9 +112,9 @@ export default defineComponent({ const abstractType = computed(() => column.value && sqlUi.value.getAbstractType(column.value)) return () => { - if (!column.value) return null + if (!column.value && !columnMeta.value) return null - return h(renderIcon(column.value, abstractType.value), { + return h(renderIcon((columnMeta.value ?? column.value)!, abstractType.value), { class: 'text-inherit mx-1', }) } From cce10a8ad4b0df24f1e382b4d9828127fbd91641 Mon Sep 17 00:00:00 2001 From: Muhammed Mustafa Date: Tue, 21 Nov 2023 12:38:09 +0000 Subject: [PATCH 046/279] fix: Fixed issue with Cell icon not taking column prop with column injection is provided --- packages/nc-gui/components/smartsheet/header/CellIcon.ts | 4 +++- .../nc-gui/components/smartsheet/header/VirtualCellIcon.ts | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/nc-gui/components/smartsheet/header/CellIcon.ts b/packages/nc-gui/components/smartsheet/header/CellIcon.ts index da3afd5966..9c4da211ce 100644 --- a/packages/nc-gui/components/smartsheet/header/CellIcon.ts +++ b/packages/nc-gui/components/smartsheet/header/CellIcon.ts @@ -103,7 +103,9 @@ export default defineComponent({ setup(props) { const columnMeta = toRef(props, 'columnMeta') - const column = inject(ColumnInj, columnMeta) + const injectedColumn = inject(ColumnInj, columnMeta) + + const column = computed(() => columnMeta.value ?? injectedColumn.value) const { sqlUis } = storeToRefs(useBase()) diff --git a/packages/nc-gui/components/smartsheet/header/VirtualCellIcon.ts b/packages/nc-gui/components/smartsheet/header/VirtualCellIcon.ts index cfe2347ea0..e7e71286c4 100644 --- a/packages/nc-gui/components/smartsheet/header/VirtualCellIcon.ts +++ b/packages/nc-gui/components/smartsheet/header/VirtualCellIcon.ts @@ -78,7 +78,9 @@ export default defineComponent({ setup(props) { const columnMeta = toRef(props, 'columnMeta') - const column = inject(ColumnInj, columnMeta) as Ref + const injectedColumn = inject(ColumnInj, columnMeta) as Ref + + const column = computed(() => columnMeta.value ?? injectedColumn.value) let relationColumn: ColumnType From 4bf0949abe534558b1d2b92633841d54569b5abb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 15:16:06 +0000 Subject: [PATCH 047/279] chore(renovate): Update dependency mysql2 to ^3.6.4 --- packages/nocodb/package.json | 2 +- pnpm-lock.yaml | 280 ++++------------------------------- 2 files changed, 27 insertions(+), 255 deletions(-) diff --git a/packages/nocodb/package.json b/packages/nocodb/package.json index 0b36914495..bd8899a8a4 100644 --- a/packages/nocodb/package.json +++ b/packages/nocodb/package.json @@ -129,7 +129,7 @@ "morgan": "^1.10.0", "mssql": "^10.0.1", "multer": "^1.4.5-lts.1", - "mysql2": "^3.6.3", + "mysql2": "^3.6.4", "nanoid": "^3.1.20", "nc-help": "0.3.1", "nc-lib-gui": "0.202.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e16343da85..3749fd13a9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -198,7 +198,7 @@ importers: version: 0.26.3(eslint@8.33.0) '@esbuild-plugins/node-modules-polyfill': specifier: ^0.2.2 - version: 0.2.2(esbuild@0.19.5) + version: 0.2.2(esbuild@0.19.7) '@iconify-json/ant-design': specifier: ^1.1.10 version: 1.1.10 @@ -600,7 +600,7 @@ importers: version: 2.2.4 knex: specifier: 2.4.2 - version: 2.4.2(mysql2@3.6.3)(pg@8.10.0)(sqlite3@5.1.6)(tedious@16.6.0) + version: 2.4.2(mysql2@3.6.4)(pg@8.10.0)(sqlite3@5.1.6)(tedious@16.6.0) list-github-dir-content: specifier: ^3.0.0 version: 3.0.0 @@ -632,8 +632,8 @@ importers: specifier: ^1.4.5-lts.1 version: 1.4.5-lts.1 mysql2: - specifier: ^3.6.3 - version: 3.6.3 + specifier: ^3.6.4 + version: 3.6.4 nanoid: specifier: ^3.1.20 version: 3.1.20 @@ -856,7 +856,7 @@ importers: version: 6.3.3 ts-jest: specifier: 29.0.5 - version: 29.0.5(@babel/core@7.23.2)(jest@29.5.0)(typescript@5.2.2) + version: 29.0.5(@babel/core@7.23.3)(jest@29.5.0)(typescript@5.2.2) ts-loader: specifier: ^9.2.9 version: 9.4.4(typescript@5.2.2)(webpack@5.89.0) @@ -3626,12 +3626,12 @@ packages: is-negated-glob: 1.0.0 dev: true - /@esbuild-plugins/node-modules-polyfill@0.2.2(esbuild@0.19.5): + /@esbuild-plugins/node-modules-polyfill@0.2.2(esbuild@0.19.7): resolution: {integrity: sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==} peerDependencies: esbuild: '*' dependencies: - esbuild: 0.19.5 + esbuild: 0.19.7 escape-string-regexp: 4.0.0 rollup-plugin-node-polyfills: 0.2.1 dev: true @@ -3645,15 +3645,6 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.19.5: - resolution: {integrity: sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64@0.19.7: resolution: {integrity: sha512-YEDcw5IT7hW3sFKZBkCAQaOCJQLONVcD4bOyTXMZz5fr66pTHnAet46XAtbXAkJRfIn2YVhdC6R9g4xa27jQ1w==} engines: {node: '>=12'} @@ -3672,15 +3663,6 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.19.5: - resolution: {integrity: sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.19.7: resolution: {integrity: sha512-YGSPnndkcLo4PmVl2tKatEn+0mlVMr3yEpOOT0BeMria87PhvoJb5dg5f5Ft9fbCVgtAz4pWMzZVgSEGpDAlww==} engines: {node: '>=12'} @@ -3699,15 +3681,6 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.19.5: - resolution: {integrity: sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64@0.19.7: resolution: {integrity: sha512-jhINx8DEjz68cChFvM72YzrqfwJuFbfvSxZAk4bebpngGfNNRm+zRl4rtT9oAX6N9b6gBcFaJHFew5Blf6CvUw==} engines: {node: '>=12'} @@ -3726,15 +3699,6 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.19.5: - resolution: {integrity: sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.19.7: resolution: {integrity: sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==} engines: {node: '>=12'} @@ -3753,15 +3717,6 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.19.5: - resolution: {integrity: sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.19.7: resolution: {integrity: sha512-Lc0q5HouGlzQEwLkgEKnWcSazqr9l9OdV2HhVasWJzLKeOt0PLhHaUHuzb8s/UIya38DJDoUm74GToZ6Wc7NGQ==} engines: {node: '>=12'} @@ -3780,15 +3735,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.19.5: - resolution: {integrity: sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.19.7: resolution: {integrity: sha512-+y2YsUr0CxDFF7GWiegWjGtTUF6gac2zFasfFkRJPkMAuMy9O7+2EH550VlqVdpEEchWMynkdhC9ZjtnMiHImQ==} engines: {node: '>=12'} @@ -3807,15 +3753,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.19.5: - resolution: {integrity: sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.19.7: resolution: {integrity: sha512-CdXOxIbIzPJmJhrpmJTLx+o35NoiKBIgOvmvT+jeSadYiWJn0vFKsl+0bSG/5lwjNHoIDEyMYc/GAPR9jxusTA==} engines: {node: '>=12'} @@ -3834,15 +3771,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.19.5: - resolution: {integrity: sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.19.7: resolution: {integrity: sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==} engines: {node: '>=12'} @@ -3861,15 +3789,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.19.5: - resolution: {integrity: sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.19.7: resolution: {integrity: sha512-Y+SCmWxsJOdQtjcBxoacn/pGW9HDZpwsoof0ttL+2vGcHokFlfqV666JpfLCSP2xLxFpF1lj7T3Ox3sr95YXww==} engines: {node: '>=12'} @@ -3888,15 +3807,6 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.19.5: - resolution: {integrity: sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.19.7: resolution: {integrity: sha512-2BbiL7nLS5ZO96bxTQkdO0euGZIUQEUXMTrqLxKUmk/Y5pmrWU84f+CMJpM8+EHaBPfFSPnomEaQiG/+Gmh61g==} engines: {node: '>=12'} @@ -3915,15 +3825,6 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.19.5: - resolution: {integrity: sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64@0.19.7: resolution: {integrity: sha512-BVFQla72KXv3yyTFCQXF7MORvpTo4uTA8FVFgmwVrqbB/4DsBFWilUm1i2Oq6zN36DOZKSVUTb16jbjedhfSHw==} engines: {node: '>=12'} @@ -3942,15 +3843,6 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.19.5: - resolution: {integrity: sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.19.7: resolution: {integrity: sha512-DzAYckIaK+pS31Q/rGpvUKu7M+5/t+jI+cdleDgUwbU7KdG2eC3SUbZHlo6Q4P1CfVKZ1lUERRFP8+q0ob9i2w==} engines: {node: '>=12'} @@ -3969,15 +3861,6 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.19.5: - resolution: {integrity: sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.19.7: resolution: {integrity: sha512-JQ1p0SmUteNdUaaiRtyS59GkkfTW0Edo+e0O2sihnY4FoZLz5glpWUQEKMSzMhA430ctkylkS7+vn8ziuhUugQ==} engines: {node: '>=12'} @@ -3996,15 +3879,6 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.19.5: - resolution: {integrity: sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.19.7: resolution: {integrity: sha512-xGwVJ7eGhkprY/nB7L7MXysHduqjpzUl40+XoYDGC4UPLbnG+gsyS1wQPJ9lFPcxYAaDXbdRXd1ACs9AE9lxuw==} engines: {node: '>=12'} @@ -4023,15 +3897,6 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.19.5: - resolution: {integrity: sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.19.7: resolution: {integrity: sha512-U8Rhki5PVU0L0nvk+E8FjkV8r4Lh4hVEb9duR6Zl21eIEYEwXz8RScj4LZWA2i3V70V4UHVgiqMpszXvG0Yqhg==} engines: {node: '>=12'} @@ -4050,15 +3915,6 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.19.5: - resolution: {integrity: sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.19.7: resolution: {integrity: sha512-ZYZopyLhm4mcoZXjFt25itRlocKlcazDVkB4AhioiL9hOWhDldU9n38g62fhOI4Pth6vp+Mrd5rFKxD0/S+7aQ==} engines: {node: '>=12'} @@ -4077,15 +3933,6 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.19.5: - resolution: {integrity: sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.19.7: resolution: {integrity: sha512-/yfjlsYmT1O3cum3J6cmGG16Fd5tqKMcg5D+sBYLaOQExheAJhqr8xOAEIuLo8JYkevmjM5zFD9rVs3VBcsjtQ==} engines: {node: '>=12'} @@ -4104,15 +3951,6 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.19.5: - resolution: {integrity: sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.19.7: resolution: {integrity: sha512-MYDFyV0EW1cTP46IgUJ38OnEY5TaXxjoDmwiTXPjezahQgZd+j3T55Ht8/Q9YXBM0+T9HJygrSRGV5QNF/YVDQ==} engines: {node: '>=12'} @@ -4131,15 +3969,6 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.19.5: - resolution: {integrity: sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.19.7: resolution: {integrity: sha512-JcPvgzf2NN/y6X3UUSqP6jSS06V0DZAV/8q0PjsZyGSXsIGcG110XsdmuWiHM+pno7/mJF6fjH5/vhUz/vA9fw==} engines: {node: '>=12'} @@ -4158,15 +3987,6 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.19.5: - resolution: {integrity: sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.19.7: resolution: {integrity: sha512-ZA0KSYti5w5toax5FpmfcAgu3ZNJxYSRm0AW/Dao5up0YV1hDVof1NvwLomjEN+3/GMtaWDI+CIyJOMTRSTdMw==} engines: {node: '>=12'} @@ -4185,15 +4005,6 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.19.5: - resolution: {integrity: sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.19.7: resolution: {integrity: sha512-CTOnijBKc5Jpk6/W9hQMMvJnsSYRYgveN6O75DTACCY18RA2nqka8dTZR+x/JqXCRiKk84+5+bRKXUSbbwsS0A==} engines: {node: '>=12'} @@ -4212,15 +4023,6 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.19.5: - resolution: {integrity: sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.19.7: resolution: {integrity: sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==} engines: {node: '>=12'} @@ -5717,7 +5519,7 @@ packages: agent-base: 7.1.0 http-proxy-agent: 7.0.0 https-proxy-agent: 7.0.2 - lru-cache: 10.0.1 + lru-cache: 10.0.3 socks-proxy-agent: 8.0.2 transitivePeerDependencies: - supports-color @@ -5759,7 +5561,7 @@ packages: engines: {node: ^16.14.0 || >=18.0.0} dependencies: '@npmcli/promise-spawn': 7.0.0 - lru-cache: 10.0.1 + lru-cache: 10.0.3 npm-pick-manifest: 9.0.0 proc-log: 3.0.0 promise-inflight: 1.0.1 @@ -9375,7 +9177,7 @@ packages: fast-glob: 3.3.1 magic-string: 0.30.5 unplugin: 1.5.0 - webpack: 5.89.0(esbuild@0.19.5) + webpack: 5.89.0(esbuild@0.19.7) webpack-sources: 3.2.3 transitivePeerDependencies: - rollup @@ -11342,7 +11144,7 @@ packages: '@npmcli/fs': 3.1.0 fs-minipass: 3.0.3 glob: 10.3.10 - lru-cache: 10.0.1 + lru-cache: 10.0.3 minipass: 7.0.3 minipass-collect: 1.0.2 minipass-flush: 1.0.5 @@ -13384,36 +13186,6 @@ packages: '@esbuild/win32-x64': 0.18.20 dev: true - /esbuild@0.19.5: - resolution: {integrity: sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.19.5 - '@esbuild/android-arm64': 0.19.5 - '@esbuild/android-x64': 0.19.5 - '@esbuild/darwin-arm64': 0.19.5 - '@esbuild/darwin-x64': 0.19.5 - '@esbuild/freebsd-arm64': 0.19.5 - '@esbuild/freebsd-x64': 0.19.5 - '@esbuild/linux-arm': 0.19.5 - '@esbuild/linux-arm64': 0.19.5 - '@esbuild/linux-ia32': 0.19.5 - '@esbuild/linux-loong64': 0.19.5 - '@esbuild/linux-mips64el': 0.19.5 - '@esbuild/linux-ppc64': 0.19.5 - '@esbuild/linux-riscv64': 0.19.5 - '@esbuild/linux-s390x': 0.19.5 - '@esbuild/linux-x64': 0.19.5 - '@esbuild/netbsd-x64': 0.19.5 - '@esbuild/openbsd-x64': 0.19.5 - '@esbuild/sunos-x64': 0.19.5 - '@esbuild/win32-arm64': 0.19.5 - '@esbuild/win32-ia32': 0.19.5 - '@esbuild/win32-x64': 0.19.5 - dev: true - /esbuild@0.19.7: resolution: {integrity: sha512-6brbTZVqxhqgbpqBR5MzErImcpA0SQdoKOkcWK/U30HtQxnokIpG3TX2r0IJqbFUzqLjhU/zC1S5ndgakObVCQ==} engines: {node: '>=12'} @@ -15683,7 +15455,7 @@ packages: resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} engines: {node: ^16.14.0 || >=18.0.0} dependencies: - lru-cache: 10.0.1 + lru-cache: 10.0.3 dev: true /html-encoding-sniffer@3.0.0: @@ -17548,7 +17320,7 @@ packages: - supports-color dev: false - /knex@2.4.2(mysql2@3.6.3)(pg@8.10.0)(sqlite3@5.1.6)(tedious@16.6.0): + /knex@2.4.2(mysql2@3.6.4)(pg@8.10.0)(sqlite3@5.1.6)(tedious@16.6.0): resolution: {integrity: sha512-tMI1M7a+xwHhPxjbl/H9K1kHX+VncEYcvCx5K00M16bWvpYPKAZd6QrCu68PtHAdIZNQPWZn0GVhqVBEthGWCg==} engines: {node: '>=12'} hasBin: true @@ -17585,7 +17357,7 @@ packages: getopts: 2.3.0 interpret: 2.2.0 lodash: 4.17.21 - mysql2: 3.6.3 + mysql2: 3.6.4 pg: 8.10.0 pg-connection-string: 2.5.0 rechoir: 0.8.0 @@ -18907,8 +18679,8 @@ packages: seq-queue: 0.0.5 sqlstring: 2.3.3 - /mysql2@3.6.3: - resolution: {integrity: sha512-qYd/1CDuW1KYZjD4tzg2O8YS3X/UWuGH8ZMHyMeggMTXL3yOdMisbwZ5SNkHzDGlZXKYLAvV8tMrEH+NUMz3fw==} + /mysql2@3.6.4: + resolution: {integrity: sha512-x27dKYnowULCLFIdrtYKKNtUIIdfWSx5JR+UE94rJT09XPPnh4w4lJLHo97HAxdZ+3zlklRZOQN68WyLOeXu7w==} engines: {node: '>= 8.0'} dependencies: denque: 2.1.0 @@ -18999,7 +18771,7 @@ packages: axios: 0.27.2(debug@4.3.4) emittery: 0.13.1 is-docker: 2.2.1 - knex: 2.4.2(mysql2@3.6.3)(pg@8.10.0)(sqlite3@5.1.6)(tedious@16.6.0) + knex: 2.4.2(mysql2@3.6.4)(pg@8.10.0)(sqlite3@5.1.6)(tedious@16.6.0) lodash: 4.17.21 posthog-node: 1.3.0(debug@4.3.4) snowflake-sdk: 1.8.0(asn1.js@5.4.1) @@ -23196,7 +22968,7 @@ packages: engines: {node: '>=4'} dev: true - /terser-webpack-plugin@5.3.9(esbuild@0.19.5)(webpack@5.89.0): + /terser-webpack-plugin@5.3.9(esbuild@0.19.7)(webpack@5.89.0): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -23213,12 +22985,12 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.19 - esbuild: 0.19.5 + esbuild: 0.19.7 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 terser: 5.19.2 - webpack: 5.89.0(esbuild@0.19.5) + webpack: 5.89.0(esbuild@0.19.7) dev: true /terser-webpack-plugin@5.3.9(webpack@5.89.0): @@ -23479,7 +23251,7 @@ packages: engines: {node: '>=14.0.0'} dev: false - /ts-jest@29.0.5(@babel/core@7.23.2)(jest@29.5.0)(typescript@5.2.2): + /ts-jest@29.0.5(@babel/core@7.23.3)(jest@29.5.0)(typescript@5.2.2): resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -23500,7 +23272,7 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.23.2 + '@babel/core': 7.23.3 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 jest: 29.5.0(@types/node@20.3.3)(ts-node@10.9.1) @@ -23539,7 +23311,7 @@ packages: enhanced-resolve: 5.15.0 micromatch: 4.0.5 semver: 7.5.4 - webpack: 5.89.0(esbuild@0.19.5) + webpack: 5.89.0(esbuild@0.19.7) dev: true /ts-morph@4.3.3: @@ -24303,7 +24075,7 @@ packages: h3: 1.9.0 ioredis: 5.3.2 listhen: 1.5.5 - lru-cache: 10.0.1 + lru-cache: 10.0.3 mri: 1.2.0 node-fetch-native: 1.4.1 ofetch: 1.3.3 @@ -25246,7 +25018,7 @@ packages: resolution: {integrity: sha512-KnaMTE6EItz/f2q4Gwg5/rmeKVi79OR58NoYnwDJqCk9ywMtTGbBnBcfoBtN4QbYu0lWXvyMoH2Owxuhe4qI6Q==} dev: true - /webpack@5.89.0(esbuild@0.19.5): + /webpack@5.89.0(esbuild@0.19.7): resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} engines: {node: '>=10.13.0'} hasBin: true @@ -25277,7 +25049,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(esbuild@0.19.5)(webpack@5.89.0) + terser-webpack-plugin: 5.3.9(esbuild@0.19.7)(webpack@5.89.0) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: From 22cfed3f24d3673463f5c8e61fff7898ca980834 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 04:58:27 +0000 Subject: [PATCH 048/279] chore(renovate): Update patch --- packages/nc-gui/package.json | 8 +- packages/nocodb/package.json | 6 +- pnpm-lock.yaml | 396 ++++++++++++++++------------------- 3 files changed, 185 insertions(+), 225 deletions(-) diff --git a/packages/nc-gui/package.json b/packages/nc-gui/package.json index e238ea7384..8ebd252b7d 100644 --- a/packages/nc-gui/package.json +++ b/packages/nc-gui/package.json @@ -116,18 +116,18 @@ "@iconify-json/tabler": "^1.1.97", "@iconify-json/vscode-icons": "^1.1.29", "@intlify/unplugin-vue-i18n": "^0.12.3", - "@nuxt/image-edge": "1.0.0-28342020.fed0a3b", + "@nuxt/image-edge": "1.0.0-testing", "@types/d3-scale": "^4.0.8", "@types/dagre": "^0.7.52", "@types/file-saver": "^2.0.7", "@types/leaflet": "^1.9.8", "@types/leaflet.markercluster": "^1.5.4", - "@types/papaparse": "^5.3.12", + "@types/papaparse": "^5.3.13", "@types/parse-github-url": "^1.0.3", "@types/qrcode": "^1.5.5", - "@types/showdown": "^2.0.5", + "@types/showdown": "^2.0.6", "@types/sortablejs": "^1.13.0", - "@types/splitpanes": "^2.2.5", + "@types/splitpanes": "^2.2.6", "@types/tinycolor2": "^1.4.6", "@types/validator": "^13.11.7", "@types/vue-barcode-reader": "^0.0.3", diff --git a/packages/nocodb/package.json b/packages/nocodb/package.json index bd8899a8a4..421e9edc2c 100644 --- a/packages/nocodb/package.json +++ b/packages/nocodb/package.json @@ -129,7 +129,7 @@ "morgan": "^1.10.0", "mssql": "^10.0.1", "multer": "^1.4.5-lts.1", - "mysql2": "^3.6.4", + "mysql2": "^3.6.5", "nanoid": "^3.1.20", "nc-help": "0.3.1", "nc-lib-gui": "0.202.8", @@ -181,8 +181,8 @@ "@nestjsplus/dyn-schematics": "^1.0.12", "@types/ejs": "^3.1.5", "@types/express": "^4.17.21", - "@types/jest": "^29.5.9", - "@types/mocha": "^10.0.5", + "@types/jest": "^29.5.10", + "@types/mocha": "^10.0.6", "@types/multer": "^1.4.11", "@types/node": "20.3.3", "@types/passport-google-oauth20": "^2.0.14", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3749fd13a9..ae4593fdec 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -263,8 +263,8 @@ importers: specifier: ^0.12.3 version: 0.12.3(vue-i18n@9.2.2) '@nuxt/image-edge': - specifier: 1.0.0-28342020.fed0a3b - version: 1.0.0-28342020.fed0a3b + specifier: 1.0.0-testing + version: 1.0.0-testing '@types/d3-scale': specifier: ^4.0.8 version: 4.0.8 @@ -281,8 +281,8 @@ importers: specifier: ^1.5.4 version: 1.5.4 '@types/papaparse': - specifier: ^5.3.12 - version: 5.3.12 + specifier: ^5.3.13 + version: 5.3.13 '@types/parse-github-url': specifier: ^1.0.3 version: 1.0.3 @@ -290,14 +290,14 @@ importers: specifier: ^1.5.5 version: 1.5.5 '@types/showdown': - specifier: ^2.0.5 - version: 2.0.5 + specifier: ^2.0.6 + version: 2.0.6 '@types/sortablejs': specifier: ^1.13.0 version: 1.13.0 '@types/splitpanes': - specifier: ^2.2.5 - version: 2.2.5 + specifier: ^2.2.6 + version: 2.2.6 '@types/tinycolor2': specifier: ^1.4.6 version: 1.4.6 @@ -600,7 +600,7 @@ importers: version: 2.2.4 knex: specifier: 2.4.2 - version: 2.4.2(mysql2@3.6.4)(pg@8.10.0)(sqlite3@5.1.6)(tedious@16.6.0) + version: 2.4.2(mysql2@3.6.5)(pg@8.10.0)(sqlite3@5.1.6)(tedious@16.6.0) list-github-dir-content: specifier: ^3.0.0 version: 3.0.0 @@ -632,8 +632,8 @@ importers: specifier: ^1.4.5-lts.1 version: 1.4.5-lts.1 mysql2: - specifier: ^3.6.4 - version: 3.6.4 + specifier: ^3.6.5 + version: 3.6.5 nanoid: specifier: ^3.1.20 version: 3.1.20 @@ -783,11 +783,11 @@ importers: specifier: ^4.17.21 version: 4.17.21 '@types/jest': - specifier: ^29.5.9 - version: 29.5.9 + specifier: ^29.5.10 + version: 29.5.10 '@types/mocha': - specifier: ^10.0.5 - version: 10.0.5 + specifier: ^10.0.6 + version: 10.0.6 '@types/multer': specifier: ^1.4.11 version: 1.4.11 @@ -4055,7 +4055,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) espree: 9.6.1 globals: 13.21.0 - ignore: 5.2.4 + ignore: 5.3.0 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -4064,16 +4064,10 @@ packages: - supports-color dev: true - /@fastify/accept-negotiator@1.1.0: - resolution: {integrity: sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==} - engines: {node: '>=14'} - requiresBuild: true - dev: true - optional: true - /@fastify/busboy@2.1.0: resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} engines: {node: '>=14'} + requiresBuild: true dev: true /@gar/promisify@1.1.3: @@ -5790,34 +5784,23 @@ packages: - xml2js dev: true - /@nuxt/image-edge@1.0.0-28342020.fed0a3b: - resolution: {integrity: sha512-+rDkWddrBA+nnWFujSj2tlHdOCFv4rUFaVJzDezYF6e0Yly8W+xrtDh/91Dz8vJbeLo9qsGBIkMevh4eUmyEMQ==} - engines: {node: ^14.16.0 || >=16.11.0} + /@nuxt/image-edge@1.0.0-testing: + resolution: {integrity: sha512-7cP8TcCkFG3w3CPhW096FcvQWlGH/TmR1FUWpC/Ka/HlnZ6AjZGqW7Eb2btJehYurxy3wcQjJIyi7tj9c34tJg==} + engines: {node: '>=14.16.0'} dependencies: '@nuxt/kit': 3.8.2 - consola: 3.2.3 + consola: 2.15.3 defu: 6.1.3 - h3: 1.9.0 - image-meta: 0.2.0 - node-fetch-native: 1.4.1 - ohash: 1.1.3 - pathe: 1.1.1 - std-env: 3.5.0 - ufo: 1.3.2 + fs-extra: 10.1.0 + h3: 0.7.21 + image-meta: 0.1.1 + node-fetch-native: 0.1.8 + ohash: 0.1.5 + pathe: 0.3.9 + ufo: 0.8.6 optionalDependencies: - ipx: 2.0.2 + ipx: 0.9.11 transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@planetscale/database' - - '@upstash/redis' - - '@vercel/kv' - - idb-keyval - rollup - supports-color dev: true @@ -5832,17 +5815,17 @@ packages: defu: 6.1.3 globby: 13.2.2 hash-sum: 2.0.0 - ignore: 5.2.4 + ignore: 5.3.0 jiti: 1.21.0 knitwork: 1.0.0 lodash.template: 4.5.0 mlly: 1.4.2 pathe: 1.1.1 pkg-types: 1.0.3 - scule: 1.0.0 + scule: 1.1.0 semver: 7.5.4 unctx: 2.3.1 - unimport: 3.4.0 + unimport: 3.5.0(rollup@4.5.0) untyped: 1.4.0 transitivePeerDependencies: - rollup @@ -5885,17 +5868,17 @@ packages: defu: 6.1.3 globby: 13.2.2 hash-sum: 2.0.0 - ignore: 5.2.4 + ignore: 5.3.0 jiti: 1.21.0 knitwork: 1.0.0 mlly: 1.4.2 pathe: 1.1.1 pkg-types: 1.0.3 - scule: 1.0.0 + scule: 1.1.0 semver: 7.5.4 ufo: 1.3.2 unctx: 2.3.1 - unimport: 3.4.0 + unimport: 3.5.0(rollup@4.5.0) untyped: 1.4.0 transitivePeerDependencies: - rollup @@ -5941,10 +5924,10 @@ packages: pathe: 1.1.1 pkg-types: 1.0.3 postcss-import-resolver: 2.0.0 - scule: 1.0.0 + scule: 1.1.0 std-env: 3.5.0 ufo: 1.3.2 - unimport: 3.4.0 + unimport: 3.5.0(rollup@4.5.0) untyped: 1.4.0 transitivePeerDependencies: - rollup @@ -5963,7 +5946,7 @@ packages: postcss-import-resolver: 2.0.0 std-env: 3.5.0 ufo: 1.3.2 - unimport: 3.4.0 + unimport: 3.5.0(rollup@4.5.0) untyped: 1.4.0 transitivePeerDependencies: - rollup @@ -5981,7 +5964,7 @@ packages: pkg-types: 1.0.3 std-env: 3.5.0 ufo: 1.3.2 - unimport: 3.4.0 + unimport: 3.5.0(rollup@4.5.0) untyped: 1.4.0 transitivePeerDependencies: - rollup @@ -6116,7 +6099,7 @@ packages: '@nrwl/devkit': 16.7.4(nx@16.7.4) ejs: 3.1.9 enquirer: 2.3.6 - ignore: 5.2.4 + ignore: 5.3.0 nx: 16.7.4 semver: 7.5.3 tmp: 0.2.1 @@ -8233,8 +8216,8 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest@29.5.9: - resolution: {integrity: sha512-zJeWhqBwVoPm83sP8h1/SVntwWTu5lZbKQGCvBjxQOyEWnKnsaomt2y7SlV4KfwlrHAHHAn00Sh4IAWaIsGOgQ==} + /@types/jest@29.5.10: + resolution: {integrity: sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==} dependencies: expect: 29.6.4 pretty-format: 29.6.3 @@ -8296,8 +8279,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/mocha@10.0.5: - resolution: {integrity: sha512-JUI82qwkRhYJYesuKSeFy46fKbhLaV9RU1gAh2PHmyoEECvlTf5UYeIivYlMszp1WT2CwJ4ziC3zoxsodhsGwg==} + /@types/mocha@10.0.6: + resolution: {integrity: sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==} dev: true /@types/multer@1.4.11: @@ -8313,6 +8296,14 @@ packages: form-data: 3.0.1 dev: false + /@types/node-forge@1.3.10: + resolution: {integrity: sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw==} + requiresBuild: true + dependencies: + '@types/node': 20.3.3 + dev: true + optional: true + /@types/node@10.17.60: resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} dev: true @@ -8342,8 +8333,8 @@ packages: '@types/node': 20.3.3 dev: true - /@types/papaparse@5.3.12: - resolution: {integrity: sha512-b6tFvGgpY6zUjflrhhyFjNCN/okylDH/DKqAuYX2xqzK004H4CoEvnFyfT0ijiC/9h+dCUQYWS1Vl1mliLuMJA==} + /@types/papaparse@5.3.13: + resolution: {integrity: sha512-tYSlZI3tIdBHXea8fZHcmwbsd1mSUikdMUyqpqj0Zzfu2GTGUSHEKmcnBg699WJ8UnxG31rXD4b1mLGPOAxS2w==} dependencies: '@types/node': 20.3.3 dev: true @@ -8428,16 +8419,16 @@ packages: '@types/mime': 3.0.1 '@types/node': 20.3.3 - /@types/showdown@2.0.5: - resolution: {integrity: sha512-fpzpGeXq69n032uOYFEmctcaWftPw4ZZ4saxMaIi6k+aZrTVjME1bT6xWp2JNUJiAM587FGuwW7jMqYixWzgVw==} + /@types/showdown@2.0.6: + resolution: {integrity: sha512-pTvD/0CIeqe4x23+YJWlX2gArHa8G0J0Oh6GKaVXV7TAeickpkkZiNOgFcFcmLQ5lB/K0qBJL1FtRYltBfbGCQ==} dev: true /@types/sortablejs@1.13.0: resolution: {integrity: sha512-C3064MH72iEfeGCYEGCt7FCxXoAXaMPG0QPnstcxvPmbl54erpISu06d++FY37Smja64iWy5L8wOyHHBghWbJQ==} dev: true - /@types/splitpanes@2.2.5: - resolution: {integrity: sha512-6NXCErgbgBsuBmXmD94Vgj/rrefNJqOum1tawqhEKAlF8vlsnK1sGUQ10j/8/5f1/hIu1N5JrTSRckZMaGrt0w==} + /@types/splitpanes@2.2.6: + resolution: {integrity: sha512-3dV5sO1Ht74iER4jJU03mreL3f+Q2h47ZqXS6Sfbqc6hkCvsDrX1GA0NbYWRdNvZemPyTDzUoApWKeoGbALwkQ==} dependencies: vue: 3.3.8 transitivePeerDependencies: @@ -11884,6 +11875,10 @@ packages: /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + /cookie-es@0.5.0: + resolution: {integrity: sha512-RyZrFi6PNpBFbIaQjXDlFIhFVqV42QeKSZX1yQIl6ihImq6vcHNGMtqQ/QzY3RMPuYSkvsRwtnt5M9NeYxKt0g==} + dev: true + /cookie-es@1.0.0: resolution: {integrity: sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==} dev: true @@ -12634,6 +12629,10 @@ packages: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} dev: true + /destr@1.2.2: + resolution: {integrity: sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==} + dev: true + /destr@2.0.2: resolution: {integrity: sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==} @@ -14225,7 +14224,6 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 - dev: true /fast-json-stable-stringify@2.0.0: resolution: {integrity: sha512-eIgZvM9C3P05kg0qxfqaVU6Tma4QedCPIByQOcemV0vju8ot3cS2DpHi4m2G2JvbSMI152rjfLX0p1pkSdyPlQ==} @@ -14603,6 +14601,12 @@ packages: universalify: 2.0.0 dev: true + /fs-memo@1.2.0: + resolution: {integrity: sha512-YEexkCpL4j03jn5SxaMHqcO6IuWuqm8JFUYhyCep7Ao89JIYmB8xoKhK7zXXJ9cCaNXpyNH5L3QtAmoxjoHW2w==} + requiresBuild: true + dev: true + optional: true + /fs-minipass@2.1.0: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} @@ -14807,6 +14811,14 @@ packages: yargs: 16.2.0 dev: true + /get-port-please@2.6.1: + resolution: {integrity: sha512-4PDSrL6+cuMM1xs6w36ZIkaKzzE0xzfVBCfebHIJ3FE8iB9oic/ECwPw3iNiD4h1AoJ5XLLBhEviFAVrZsDC5A==} + requiresBuild: true + dependencies: + fs-memo: 1.2.0 + dev: true + optional: true + /get-port-please@3.1.1: resolution: {integrity: sha512-3UBAyM3u4ZBVYDsxOQfJDxEa6XTbpBDrOjp4mf7ExFRt5BKs/QywQQiJsh2B+hxcZLSapWqCRvElUe8DnKcFHA==} dev: true @@ -15091,7 +15103,7 @@ packages: dependencies: dir-glob: 3.0.1 fast-glob: 3.3.1 - ignore: 5.2.4 + ignore: 5.3.0 merge2: 1.4.1 slash: 4.0.0 @@ -15101,7 +15113,7 @@ packages: dependencies: '@sindresorhus/merge-streams': 1.0.0 fast-glob: 3.3.2 - ignore: 5.2.4 + ignore: 5.3.0 path-type: 5.0.0 slash: 5.1.0 unicorn-magic: 0.1.0 @@ -15254,26 +15266,22 @@ packages: duplexer: 0.1.2 dev: true - /h3@1.8.1: - resolution: {integrity: sha512-m5rFuu+5bpwBBHqqS0zexjK+Q8dhtFRvO9JXQG0RvSPL6QrIT6vv42vuBM22SLOgGMoZYsHk0y7VPidt9s+nkw==} + /h3@0.7.21: + resolution: {integrity: sha512-F/qdr3JKh8zBLiZyiprH5kuzG6vjoTK3nFnIYFUIQPLsw755GI5JezAFc3HJxbgYlzawcGeJlmsw4xu2t/0n/Q==} dependencies: - cookie-es: 1.0.0 - defu: 6.1.3 - destr: 2.0.2 - iron-webcrypto: 0.8.0 - radix3: 1.1.0 - ufo: 1.3.2 - uncrypto: 0.1.3 - unenv: 1.7.4 + cookie-es: 0.5.0 + destr: 1.2.2 + radix3: 0.1.2 + ufo: 0.8.6 dev: true - /h3@1.8.2: - resolution: {integrity: sha512-1Ca0orJJlCaiFY68BvzQtP2lKLk46kcLAxVM8JgYbtm2cUg6IY7pjpYgWMwUvDO9QI30N5JAukOKoT8KD3Q0PQ==} + /h3@1.8.1: + resolution: {integrity: sha512-m5rFuu+5bpwBBHqqS0zexjK+Q8dhtFRvO9JXQG0RvSPL6QrIT6vv42vuBM22SLOgGMoZYsHk0y7VPidt9s+nkw==} dependencies: cookie-es: 1.0.0 defu: 6.1.3 destr: 2.0.2 - iron-webcrypto: 0.10.1 + iron-webcrypto: 0.8.0 radix3: 1.1.0 ufo: 1.3.2 uncrypto: 0.1.3 @@ -15692,6 +15700,10 @@ packages: /ignore@5.3.0: resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} engines: {node: '>= 4'} + + /image-meta@0.1.1: + resolution: {integrity: sha512-+oXiHwOEPr1IE5zY0tcBLED/CYcre15J4nwL50x3o0jxWqEkyjrusiKP3YSU+tr9fvJp33ZcP5Gpj2295g3aEw==} + engines: {node: '>=10.18.0'} dev: true /image-meta@0.2.0: @@ -15905,47 +15917,25 @@ packages: engines: {node: '>= 10'} dev: false - /ipx@2.0.2: - resolution: {integrity: sha512-avedYlD04mN3alN4BYoXtZuMrQP/Fln86uN1hUFRCjzIZxl7Et3oKX+V1YTEodFvPs8tk5NAQJXZeowu0OgOKQ==} + /ipx@0.9.11: + resolution: {integrity: sha512-/wsBt7hV8rvNR6O4kwgOUAhtm0F/M/mXaolXot/Bz7fdOD+W7i9OtWuoASWv1PFwwtOunhZGaoCx8BOpSdG2VQ==} hasBin: true requiresBuild: true dependencies: - '@fastify/accept-negotiator': 1.1.0 - citty: 0.1.4 - consola: 3.2.3 + consola: 2.15.3 defu: 6.1.3 - destr: 2.0.2 + destr: 1.2.2 etag: 1.8.1 - h3: 1.9.0 - image-meta: 0.2.0 - listhen: 1.5.5 - ofetch: 1.3.3 - pathe: 1.1.1 - sharp: 0.32.6 - svgo: 3.0.4 - ufo: 1.3.2 - unstorage: 1.9.0 + image-meta: 0.1.1 + listhen: 0.2.15 + ohmyfetch: 0.4.21 + pathe: 0.3.9 + sharp: 0.30.7 + ufo: 0.8.6 xss: 1.0.14 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@planetscale/database' - - '@upstash/redis' - - '@vercel/kv' - - idb-keyval - - supports-color dev: true optional: true - /iron-webcrypto@0.10.1: - resolution: {integrity: sha512-QGOS8MRMnj/UiOa+aMIgfyHcvkhqNUsUxb1XzskENvbo+rEfp6TOwqd1KPuDzXC4OnGHcMSVxDGRoilqB8ViqA==} - dev: true - /iron-webcrypto@0.8.0: resolution: {integrity: sha512-gScdcWHjTGclCU15CIv2r069NoQrys1UeUFFfaO1hL++ytLHkVw7N5nXJmFf3J2LEDMz1PkrvC0m62JEeu1axQ==} dev: true @@ -17320,7 +17310,7 @@ packages: - supports-color dev: false - /knex@2.4.2(mysql2@3.6.4)(pg@8.10.0)(sqlite3@5.1.6)(tedious@16.6.0): + /knex@2.4.2(mysql2@3.6.5)(pg@8.10.0)(sqlite3@5.1.6)(tedious@16.6.0): resolution: {integrity: sha512-tMI1M7a+xwHhPxjbl/H9K1kHX+VncEYcvCx5K00M16bWvpYPKAZd6QrCu68PtHAdIZNQPWZn0GVhqVBEthGWCg==} engines: {node: '>=12'} hasBin: true @@ -17357,7 +17347,7 @@ packages: getopts: 2.3.0 interpret: 2.2.0 lodash: 4.17.21 - mysql2: 3.6.4 + mysql2: 3.6.5 pg: 8.10.0 pg-connection-string: 2.5.0 rechoir: 0.8.0 @@ -17594,6 +17584,20 @@ packages: - encoding dev: false + /listhen@0.2.15: + resolution: {integrity: sha512-F/IWj/aJLeokHAIVY+l3JoWRUnbRaf2F0cr+Ybc1YyozMA/yP0C2nf3c0Oi7vAbFvtfiwfWWfP7bIrQc/u5L1A==} + requiresBuild: true + dependencies: + clipboardy: 3.0.0 + colorette: 2.0.20 + defu: 6.1.3 + get-port-please: 2.6.1 + http-shutdown: 1.2.2 + selfsigned: 2.4.1 + ufo: 0.8.6 + dev: true + optional: true + /listhen@1.4.3: resolution: {integrity: sha512-qVWeM07q7q5R3jwB+Zm603khFQ3yq5OLmAwLIlE3Ftv1K9yfwx4R6/tbCkkr0/SrIyKnHK9xY1C6j03uGOSnIQ==} hasBin: true @@ -17605,7 +17609,7 @@ packages: consola: 3.2.3 defu: 6.1.3 get-port-please: 3.1.1 - h3: 1.8.2 + h3: 1.9.0 http-shutdown: 1.2.2 jiti: 1.21.0 mlly: 1.4.2 @@ -17702,7 +17706,6 @@ packages: dependencies: mlly: 1.4.2 pkg-types: 1.0.3 - dev: true /locale-codes@1.3.1: resolution: {integrity: sha512-C7fxGkU4jAuHqavtKj4IhSD2yPEzChFMRfNHjzwIAz9JTbYHtBJDcQQgmJDezBogk9/vvgS7chKMhpVEKavk5A==} @@ -18249,6 +18252,7 @@ packages: /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + requiresBuild: true dev: true /mimic-fn@4.0.0: @@ -18679,8 +18683,8 @@ packages: seq-queue: 0.0.5 sqlstring: 2.3.3 - /mysql2@3.6.4: - resolution: {integrity: sha512-x27dKYnowULCLFIdrtYKKNtUIIdfWSx5JR+UE94rJT09XPPnh4w4lJLHo97HAxdZ+3zlklRZOQN68WyLOeXu7w==} + /mysql2@3.6.5: + resolution: {integrity: sha512-pS/KqIb0xlXmtmqEuTvBXTmLoQ5LmAz5NW/r8UyQ1ldvnprNEj3P9GbmuQQ2J0A4LO+ynotGi6TbscPa8OUb+w==} engines: {node: '>= 8.0'} dependencies: denque: 2.1.0 @@ -18771,7 +18775,7 @@ packages: axios: 0.27.2(debug@4.3.4) emittery: 0.13.1 is-docker: 2.2.1 - knex: 2.4.2(mysql2@3.6.4)(pg@8.10.0)(sqlite3@5.1.6)(tedious@16.6.0) + knex: 2.4.2(mysql2@3.6.5)(pg@8.10.0)(sqlite3@5.1.6)(tedious@16.6.0) lodash: 4.17.21 posthog-node: 1.3.0(debug@4.3.4) snowflake-sdk: 1.8.0(asn1.js@5.4.1) @@ -18957,8 +18961,8 @@ packages: /node-addon-api@4.3.0: resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} - /node-addon-api@6.1.0: - resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} + /node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} requiresBuild: true dev: true optional: true @@ -18974,6 +18978,10 @@ packages: lodash: 4.17.21 dev: true + /node-fetch-native@0.1.8: + resolution: {integrity: sha512-ZNaury9r0NxaT2oL65GvdGDy+5PlSaHTovT6JV5tOW07k1TQmgC0olZETa4C9KZg0+6zBr99ctTYa3Utqj9P/Q==} + dev: true + /node-fetch-native@1.4.1: resolution: {integrity: sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==} @@ -19560,7 +19568,7 @@ packages: flat: 5.0.2 fs-extra: 11.1.1 glob: 7.1.4 - ignore: 5.2.4 + ignore: 5.3.0 js-yaml: 4.1.0 jsonc-parser: 3.2.0 lines-and-columns: 2.0.3 @@ -19697,9 +19705,25 @@ packages: ufo: 1.3.2 dev: true + /ohash@0.1.5: + resolution: {integrity: sha512-qynly1AFIpGWEAW88p6DhMNqok/Swb52/KsiU+Toi7er058Ptvno3tkfTML6wYcEgFgp2GsUziW4Nqn62ciuyw==} + dev: true + /ohash@1.1.3: resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} + /ohmyfetch@0.4.21: + resolution: {integrity: sha512-VG7f/JRvqvBOYvL0tHyEIEG7XHWm7OqIfAs6/HqwWwDfjiJ1g0huIpe5sFEmyb+7hpFa1EGNH2aERWR72tlClw==} + deprecated: Package renamed to https://github.com/unjs/ofetch + requiresBuild: true + dependencies: + destr: 1.2.2 + node-fetch-native: 0.1.8 + ufo: 0.8.6 + undici: 5.27.2 + dev: true + optional: true + /on-finished@2.3.0: resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} engines: {node: '>= 0.8'} @@ -20238,6 +20262,10 @@ packages: engines: {node: '>=12'} dev: true + /pathe@0.3.9: + resolution: {integrity: sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==} + dev: true + /pathe@1.1.1: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} @@ -21051,6 +21079,10 @@ packages: engines: {node: '>=8'} dev: true + /radix3@0.1.2: + resolution: {integrity: sha512-Mpfd/OuX0zoJ6ojLD/RTOHvJPg6e6PjINtmYzV87kIXc5iUtDz34i7gg4SV4XjqRJTmSiYO/g9i/mKWGf4z8wg==} + dev: true + /radix3@1.1.0: resolution: {integrity: sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==} dev: true @@ -21754,12 +21786,21 @@ packages: /scule@1.1.0: resolution: {integrity: sha512-vRUjqhyM/YWYzT+jsMk6tnl3NkY4A4soJ8uyh3O6Um+JXEQL9ozUCe7pqrxn3CSKokw0hw3nFStfskzpgYwR0g==} - dev: true /sdp@2.12.0: resolution: {integrity: sha512-jhXqQAQVM+8Xj5EjJGVweuEzgtGWb3tmEEpl3CLP3cStInSbVHSg0QWOGQzNq8pSID4JkpeV2mPqlMDLrm0/Vw==} dev: false + /selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + requiresBuild: true + dependencies: + '@types/node-forge': 1.3.10 + node-forge: 1.3.1 + dev: true + optional: true + /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -21852,18 +21893,18 @@ packages: resolution: {integrity: sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==} dev: false - /sharp@0.32.6: - resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} - engines: {node: '>=14.15.0'} + /sharp@0.30.7: + resolution: {integrity: sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==} + engines: {node: '>=12.13.0'} requiresBuild: true dependencies: color: 4.2.3 detect-libc: 2.0.2 - node-addon-api: 6.1.0 + node-addon-api: 5.1.0 prebuild-install: 7.1.1 semver: 7.5.4 simple-get: 4.0.1 - tar-fs: 3.0.4 + tar-fs: 2.1.1 tunnel-agent: 0.6.0 dev: true optional: true @@ -22847,16 +22888,6 @@ packages: dev: true optional: true - /tar-fs@3.0.4: - resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} - requiresBuild: true - dependencies: - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 3.1.6 - dev: true - optional: true - /tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} @@ -23600,6 +23631,10 @@ packages: hasBin: true dev: true + /ufo@0.8.6: + resolution: {integrity: sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==} + dev: true + /ufo@1.3.2: resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} @@ -23715,24 +23750,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 pkg-types: 1.0.3 - scule: 1.0.0 - strip-literal: 1.3.0 - unplugin: 1.5.0 - transitivePeerDependencies: - - rollup - - /unimport@3.4.0: - resolution: {integrity: sha512-M/lfFEgufIT156QAr/jWHLUn55kEmxBBiQsMxvRSIbquwmeJEyQYgshHDEvQDWlSJrVOOTAgnJ3FvlsrpGkanA==} - dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.5.0) - escape-string-regexp: 5.0.0 - fast-glob: 3.3.1 - local-pkg: 0.4.3 - magic-string: 0.30.5 - mlly: 1.4.2 - pathe: 1.1.1 - pkg-types: 1.0.3 - scule: 1.0.0 + scule: 1.1.0 strip-literal: 1.3.0 unplugin: 1.5.0 transitivePeerDependencies: @@ -23754,7 +23772,6 @@ packages: unplugin: 1.5.1 transitivePeerDependencies: - rollup - dev: true /unique-filename@1.1.1: resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} @@ -23972,7 +23989,6 @@ packages: chokidar: 3.5.3 webpack-sources: 3.2.3 webpack-virtual-modules: 0.6.0 - dev: true /unstorage@1.10.1: resolution: {integrity: sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==} @@ -24030,61 +24046,6 @@ packages: - supports-color dev: true - /unstorage@1.9.0: - resolution: {integrity: sha512-VpD8ZEYc/le8DZCrny3bnqKE4ZjioQxBRnWE+j5sGNvziPjeDlaS1NaFFHzl/kkXaO3r7UaF8MGQrs14+1B4pQ==} - requiresBuild: true - peerDependencies: - '@azure/app-configuration': ^1.4.1 - '@azure/cosmos': ^3.17.3 - '@azure/data-tables': ^13.2.2 - '@azure/identity': ^3.2.3 - '@azure/keyvault-secrets': ^4.7.0 - '@azure/storage-blob': ^12.14.0 - '@capacitor/preferences': ^5.0.0 - '@planetscale/database': ^1.8.0 - '@upstash/redis': ^1.22.0 - '@vercel/kv': ^0.2.2 - idb-keyval: ^6.2.1 - peerDependenciesMeta: - '@azure/app-configuration': - optional: true - '@azure/cosmos': - optional: true - '@azure/data-tables': - optional: true - '@azure/identity': - optional: true - '@azure/keyvault-secrets': - optional: true - '@azure/storage-blob': - optional: true - '@capacitor/preferences': - optional: true - '@planetscale/database': - optional: true - '@upstash/redis': - optional: true - '@vercel/kv': - optional: true - idb-keyval: - optional: true - dependencies: - anymatch: 3.1.3 - chokidar: 3.5.3 - destr: 2.0.2 - h3: 1.9.0 - ioredis: 5.3.2 - listhen: 1.5.5 - lru-cache: 10.0.3 - mri: 1.2.0 - node-fetch-native: 1.4.1 - ofetch: 1.3.3 - ufo: 1.3.2 - transitivePeerDependencies: - - supports-color - dev: true - optional: true - /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} @@ -24110,7 +24071,7 @@ packages: defu: 6.1.3 jiti: 1.21.0 mri: 1.2.0 - scule: 1.0.0 + scule: 1.1.0 transitivePeerDependencies: - supports-color @@ -25016,7 +24977,6 @@ packages: /webpack-virtual-modules@0.6.0: resolution: {integrity: sha512-KnaMTE6EItz/f2q4Gwg5/rmeKVi79OR58NoYnwDJqCk9ywMtTGbBnBcfoBtN4QbYu0lWXvyMoH2Owxuhe4qI6Q==} - dev: true /webpack@5.89.0(esbuild@0.19.7): resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} From 38c50ecfc6ba54481d3b563cc78b8daaa2f98eac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D5=A1=C9=A8=D5=BC=C9=A2=D3=84=D5=A1=D6=85=D5=BC=C9=A2?= Date: Wed, 22 Nov 2023 13:20:53 +0800 Subject: [PATCH 049/279] fix(nc-gui): use 1.1.0-28343355.4312e91 for nuxt/image-edge --- packages/nc-gui/package.json | 2 +- pnpm-lock.yaml | 218 +++++++++++++---------------------- 2 files changed, 84 insertions(+), 136 deletions(-) diff --git a/packages/nc-gui/package.json b/packages/nc-gui/package.json index 8ebd252b7d..9e442adcea 100644 --- a/packages/nc-gui/package.json +++ b/packages/nc-gui/package.json @@ -116,7 +116,7 @@ "@iconify-json/tabler": "^1.1.97", "@iconify-json/vscode-icons": "^1.1.29", "@intlify/unplugin-vue-i18n": "^0.12.3", - "@nuxt/image-edge": "1.0.0-testing", + "@nuxt/image-edge": "1.1.0-28343355.4312e91", "@types/d3-scale": "^4.0.8", "@types/dagre": "^0.7.52", "@types/file-saver": "^2.0.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ae4593fdec..9e29d49b9b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -263,8 +263,8 @@ importers: specifier: ^0.12.3 version: 0.12.3(vue-i18n@9.2.2) '@nuxt/image-edge': - specifier: 1.0.0-testing - version: 1.0.0-testing + specifier: 1.1.0-28343355.4312e91 + version: 1.1.0-28343355.4312e91 '@types/d3-scale': specifier: ^4.0.8 version: 4.0.8 @@ -856,7 +856,7 @@ importers: version: 6.3.3 ts-jest: specifier: 29.0.5 - version: 29.0.5(@babel/core@7.23.3)(jest@29.5.0)(typescript@5.2.2) + version: 29.0.5(@babel/core@7.23.2)(jest@29.5.0)(typescript@5.2.2) ts-loader: specifier: ^9.2.9 version: 9.4.4(typescript@5.2.2)(webpack@5.89.0) @@ -4064,6 +4064,13 @@ packages: - supports-color dev: true + /@fastify/accept-negotiator@1.1.0: + resolution: {integrity: sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + /@fastify/busboy@2.1.0: resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} engines: {node: '>=14'} @@ -5784,23 +5791,35 @@ packages: - xml2js dev: true - /@nuxt/image-edge@1.0.0-testing: - resolution: {integrity: sha512-7cP8TcCkFG3w3CPhW096FcvQWlGH/TmR1FUWpC/Ka/HlnZ6AjZGqW7Eb2btJehYurxy3wcQjJIyi7tj9c34tJg==} - engines: {node: '>=14.16.0'} + /@nuxt/image-edge@1.1.0-28343355.4312e91: + resolution: {integrity: sha512-SE/oHndURbKAQh3auwMpmAZk9Qd93RpI+Iov7Y6oSW1Ee+/PZJhiNYkmirawSzTTG0MMAtim6TJm1sQ51WMIQQ==} + engines: {node: ^14.16.0 || >=16.11.0} dependencies: '@nuxt/kit': 3.8.2 - consola: 2.15.3 + consola: 3.2.3 defu: 6.1.3 - fs-extra: 10.1.0 - h3: 0.7.21 - image-meta: 0.1.1 - node-fetch-native: 0.1.8 - ohash: 0.1.5 - pathe: 0.3.9 - ufo: 0.8.6 + h3: 1.9.0 + image-meta: 0.2.0 + node-fetch-native: 1.4.1 + ohash: 1.1.3 + pathe: 1.1.1 + std-env: 3.5.0 + ufo: 1.3.2 optionalDependencies: - ipx: 0.9.11 + ipx: 2.0.2 transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/kv' + - idb-keyval - rollup - supports-color dev: true @@ -8296,14 +8315,6 @@ packages: form-data: 3.0.1 dev: false - /@types/node-forge@1.3.10: - resolution: {integrity: sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw==} - requiresBuild: true - dependencies: - '@types/node': 20.3.3 - dev: true - optional: true - /@types/node@10.17.60: resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} dev: true @@ -11875,10 +11886,6 @@ packages: /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - /cookie-es@0.5.0: - resolution: {integrity: sha512-RyZrFi6PNpBFbIaQjXDlFIhFVqV42QeKSZX1yQIl6ihImq6vcHNGMtqQ/QzY3RMPuYSkvsRwtnt5M9NeYxKt0g==} - dev: true - /cookie-es@1.0.0: resolution: {integrity: sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==} dev: true @@ -12629,10 +12636,6 @@ packages: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} dev: true - /destr@1.2.2: - resolution: {integrity: sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==} - dev: true - /destr@2.0.2: resolution: {integrity: sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==} @@ -14601,12 +14604,6 @@ packages: universalify: 2.0.0 dev: true - /fs-memo@1.2.0: - resolution: {integrity: sha512-YEexkCpL4j03jn5SxaMHqcO6IuWuqm8JFUYhyCep7Ao89JIYmB8xoKhK7zXXJ9cCaNXpyNH5L3QtAmoxjoHW2w==} - requiresBuild: true - dev: true - optional: true - /fs-minipass@2.1.0: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} @@ -14811,14 +14808,6 @@ packages: yargs: 16.2.0 dev: true - /get-port-please@2.6.1: - resolution: {integrity: sha512-4PDSrL6+cuMM1xs6w36ZIkaKzzE0xzfVBCfebHIJ3FE8iB9oic/ECwPw3iNiD4h1AoJ5XLLBhEviFAVrZsDC5A==} - requiresBuild: true - dependencies: - fs-memo: 1.2.0 - dev: true - optional: true - /get-port-please@3.1.1: resolution: {integrity: sha512-3UBAyM3u4ZBVYDsxOQfJDxEa6XTbpBDrOjp4mf7ExFRt5BKs/QywQQiJsh2B+hxcZLSapWqCRvElUe8DnKcFHA==} dev: true @@ -15266,15 +15255,6 @@ packages: duplexer: 0.1.2 dev: true - /h3@0.7.21: - resolution: {integrity: sha512-F/qdr3JKh8zBLiZyiprH5kuzG6vjoTK3nFnIYFUIQPLsw755GI5JezAFc3HJxbgYlzawcGeJlmsw4xu2t/0n/Q==} - dependencies: - cookie-es: 0.5.0 - destr: 1.2.2 - radix3: 0.1.2 - ufo: 0.8.6 - dev: true - /h3@1.8.1: resolution: {integrity: sha512-m5rFuu+5bpwBBHqqS0zexjK+Q8dhtFRvO9JXQG0RvSPL6QrIT6vv42vuBM22SLOgGMoZYsHk0y7VPidt9s+nkw==} dependencies: @@ -15701,11 +15681,6 @@ packages: resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} engines: {node: '>= 4'} - /image-meta@0.1.1: - resolution: {integrity: sha512-+oXiHwOEPr1IE5zY0tcBLED/CYcre15J4nwL50x3o0jxWqEkyjrusiKP3YSU+tr9fvJp33ZcP5Gpj2295g3aEw==} - engines: {node: '>=10.18.0'} - dev: true - /image-meta@0.2.0: resolution: {integrity: sha512-ZBGjl0ZMEMeOC3Ns0wUF/5UdUmr3qQhBSCniT0LxOgGGIRHiNFOkMtIHB7EOznRU47V2AxPgiVP+s+0/UCU0Hg==} dev: true @@ -15917,22 +15892,41 @@ packages: engines: {node: '>= 10'} dev: false - /ipx@0.9.11: - resolution: {integrity: sha512-/wsBt7hV8rvNR6O4kwgOUAhtm0F/M/mXaolXot/Bz7fdOD+W7i9OtWuoASWv1PFwwtOunhZGaoCx8BOpSdG2VQ==} + /ipx@2.0.2: + resolution: {integrity: sha512-avedYlD04mN3alN4BYoXtZuMrQP/Fln86uN1hUFRCjzIZxl7Et3oKX+V1YTEodFvPs8tk5NAQJXZeowu0OgOKQ==} hasBin: true requiresBuild: true dependencies: - consola: 2.15.3 + '@fastify/accept-negotiator': 1.1.0 + citty: 0.1.5 + consola: 3.2.3 defu: 6.1.3 - destr: 1.2.2 + destr: 2.0.2 etag: 1.8.1 - image-meta: 0.1.1 - listhen: 0.2.15 - ohmyfetch: 0.4.21 - pathe: 0.3.9 - sharp: 0.30.7 - ufo: 0.8.6 + h3: 1.9.0 + image-meta: 0.2.0 + listhen: 1.5.5 + ofetch: 1.3.3 + pathe: 1.1.1 + sharp: 0.32.6 + svgo: 3.0.4 + ufo: 1.3.2 + unstorage: 1.10.1 xss: 1.0.14 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/kv' + - idb-keyval + - supports-color dev: true optional: true @@ -17584,20 +17578,6 @@ packages: - encoding dev: false - /listhen@0.2.15: - resolution: {integrity: sha512-F/IWj/aJLeokHAIVY+l3JoWRUnbRaf2F0cr+Ybc1YyozMA/yP0C2nf3c0Oi7vAbFvtfiwfWWfP7bIrQc/u5L1A==} - requiresBuild: true - dependencies: - clipboardy: 3.0.0 - colorette: 2.0.20 - defu: 6.1.3 - get-port-please: 2.6.1 - http-shutdown: 1.2.2 - selfsigned: 2.4.1 - ufo: 0.8.6 - dev: true - optional: true - /listhen@1.4.3: resolution: {integrity: sha512-qVWeM07q7q5R3jwB+Zm603khFQ3yq5OLmAwLIlE3Ftv1K9yfwx4R6/tbCkkr0/SrIyKnHK9xY1C6j03uGOSnIQ==} hasBin: true @@ -17626,7 +17606,7 @@ packages: dependencies: '@parcel/watcher': 2.3.0 '@parcel/watcher-wasm': 2.3.0 - citty: 0.1.4 + citty: 0.1.5 clipboardy: 3.0.0 consola: 3.2.3 defu: 6.1.3 @@ -18961,8 +18941,8 @@ packages: /node-addon-api@4.3.0: resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} - /node-addon-api@5.1.0: - resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + /node-addon-api@6.1.0: + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} requiresBuild: true dev: true optional: true @@ -18978,10 +18958,6 @@ packages: lodash: 4.17.21 dev: true - /node-fetch-native@0.1.8: - resolution: {integrity: sha512-ZNaury9r0NxaT2oL65GvdGDy+5PlSaHTovT6JV5tOW07k1TQmgC0olZETa4C9KZg0+6zBr99ctTYa3Utqj9P/Q==} - dev: true - /node-fetch-native@1.4.1: resolution: {integrity: sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==} @@ -19705,25 +19681,9 @@ packages: ufo: 1.3.2 dev: true - /ohash@0.1.5: - resolution: {integrity: sha512-qynly1AFIpGWEAW88p6DhMNqok/Swb52/KsiU+Toi7er058Ptvno3tkfTML6wYcEgFgp2GsUziW4Nqn62ciuyw==} - dev: true - /ohash@1.1.3: resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} - /ohmyfetch@0.4.21: - resolution: {integrity: sha512-VG7f/JRvqvBOYvL0tHyEIEG7XHWm7OqIfAs6/HqwWwDfjiJ1g0huIpe5sFEmyb+7hpFa1EGNH2aERWR72tlClw==} - deprecated: Package renamed to https://github.com/unjs/ofetch - requiresBuild: true - dependencies: - destr: 1.2.2 - node-fetch-native: 0.1.8 - ufo: 0.8.6 - undici: 5.27.2 - dev: true - optional: true - /on-finished@2.3.0: resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} engines: {node: '>= 0.8'} @@ -20262,10 +20222,6 @@ packages: engines: {node: '>=12'} dev: true - /pathe@0.3.9: - resolution: {integrity: sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==} - dev: true - /pathe@1.1.1: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} @@ -21079,10 +21035,6 @@ packages: engines: {node: '>=8'} dev: true - /radix3@0.1.2: - resolution: {integrity: sha512-Mpfd/OuX0zoJ6ojLD/RTOHvJPg6e6PjINtmYzV87kIXc5iUtDz34i7gg4SV4XjqRJTmSiYO/g9i/mKWGf4z8wg==} - dev: true - /radix3@1.1.0: resolution: {integrity: sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==} dev: true @@ -21791,16 +21743,6 @@ packages: resolution: {integrity: sha512-jhXqQAQVM+8Xj5EjJGVweuEzgtGWb3tmEEpl3CLP3cStInSbVHSg0QWOGQzNq8pSID4JkpeV2mPqlMDLrm0/Vw==} dev: false - /selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} - requiresBuild: true - dependencies: - '@types/node-forge': 1.3.10 - node-forge: 1.3.1 - dev: true - optional: true - /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -21893,18 +21835,18 @@ packages: resolution: {integrity: sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==} dev: false - /sharp@0.30.7: - resolution: {integrity: sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==} - engines: {node: '>=12.13.0'} + /sharp@0.32.6: + resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} + engines: {node: '>=14.15.0'} requiresBuild: true dependencies: color: 4.2.3 detect-libc: 2.0.2 - node-addon-api: 5.1.0 + node-addon-api: 6.1.0 prebuild-install: 7.1.1 semver: 7.5.4 simple-get: 4.0.1 - tar-fs: 2.1.1 + tar-fs: 3.0.4 tunnel-agent: 0.6.0 dev: true optional: true @@ -22888,6 +22830,16 @@ packages: dev: true optional: true + /tar-fs@3.0.4: + resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} + requiresBuild: true + dependencies: + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 3.1.6 + dev: true + optional: true + /tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} @@ -23282,7 +23234,7 @@ packages: engines: {node: '>=14.0.0'} dev: false - /ts-jest@29.0.5(@babel/core@7.23.3)(jest@29.5.0)(typescript@5.2.2): + /ts-jest@29.0.5(@babel/core@7.23.2)(jest@29.5.0)(typescript@5.2.2): resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -23303,7 +23255,7 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.2 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 jest: 29.5.0(@types/node@20.3.3)(ts-node@10.9.1) @@ -23631,10 +23583,6 @@ packages: hasBin: true dev: true - /ufo@0.8.6: - resolution: {integrity: sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==} - dev: true - /ufo@1.3.2: resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} From f2e6a02195cbd22d0caa07f4eb729f743003773c Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:54 +0000 Subject: [PATCH 050/279] feat: add blank method support --- packages/nocodb/src/db/functionMappings/commonFns.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/nocodb/src/db/functionMappings/commonFns.ts b/packages/nocodb/src/db/functionMappings/commonFns.ts index dfebf64743..006a899bae 100644 --- a/packages/nocodb/src/db/functionMappings/commonFns.ts +++ b/packages/nocodb/src/db/functionMappings/commonFns.ts @@ -112,4 +112,8 @@ export default { builder: (await args.fn(args.pt?.arguments?.[0])).builder.wrap('(', ')'), }; }, + + BLANK: async (args: MapFnArgs) => { + return { builder: args.knex.raw(`?`, ['']) }; + }, }; From d6e986d8faaf5e9018289feffe405f2e9f40a38f Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:54 +0000 Subject: [PATCH 051/279] feat: add regex method support - pg --- packages/nocodb/src/db/functionMappings/pg.ts | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/packages/nocodb/src/db/functionMappings/pg.ts b/packages/nocodb/src/db/functionMappings/pg.ts index 79aafa86a9..7679f86ecf 100644 --- a/packages/nocodb/src/db/functionMappings/pg.ts +++ b/packages/nocodb/src/db/functionMappings/pg.ts @@ -189,6 +189,32 @@ const pg = { builder: knex.raw(`MOD((${x})::NUMERIC, (${y})::NUMERIC) ${colAlias}`), }; }, + REGEX_MATCH: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { + const source = (await fn(pt.arguments[0])).builder; + const pattern = (await fn(pt.arguments[1])).builder; + return { + builder: knex.raw(`${source}::text ~ ${pattern}::text) ${colAlias}`), + }; + }, + REGEX_EXTRACT: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { + const source = (await fn(pt.arguments[0])).builder; + const pattern = (await fn(pt.arguments[1])).builder; + return { + builder: knex.raw( + `regexp_matches(${source}::text, ${pattern}::text) ${colAlias}`, + ), + }; + }, + REGEX_REPLACE: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { + const source = (await fn(pt.arguments[0])).builder; + const pattern = (await fn(pt.arguments[1])).builder; + const replacement = (await fn(pt.arguments[2])).builder; + return { + builder: knex.raw( + `regexp_matches(${source}::text, ${pattern}::text, ${replacement}::text) ${colAlias}`, + ), + }; + }, }; export default pg; From 1579d656228a3fae1fbc20ba46189be7a89f21c6 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:55 +0000 Subject: [PATCH 052/279] feat: add new formulas in ui --- packages/nc-gui/utils/formulaUtils.ts | 59 +++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/packages/nc-gui/utils/formulaUtils.ts b/packages/nc-gui/utils/formulaUtils.ts index 5c1cdf99be..43a6990a31 100644 --- a/packages/nc-gui/utils/formulaUtils.ts +++ b/packages/nc-gui/utils/formulaUtils.ts @@ -416,6 +416,65 @@ const formulas: Record = { syntax: 'WEEKDAY(date, [startDayOfWeek])', examples: ['WEEKDAY("2021-06-09")', 'WEEKDAY(NOW(), "sunday")'], }, + + TRUE: { + type: formulaTypes.NUMERIC, + validation: { + args: { + max: 0, + }, + }, + description: 'Returns 1', + syntax: 'TRUE()', + examples: ['TRUE()'], + }, + + FALSE: { + type: formulaTypes.NUMERIC, + validation: { + args: { + max: 0, + }, + }, + description: 'Returns 0', + syntax: 'FALSE()', + examples: ['FALSE()'], + }, + + REGEX_MATCH: { + type: formulaTypes.NUMERIC, + validation: { + args: { + rqd: 2, + }, + }, + description: 'Returns whether the input text matches a regular expression.', + syntax: 'REGEX_MATCH(string, regex)', + examples: ['REGEX_MATCH({title}, "abc.*")'], + }, + + REGEX_EXTRACT: { + type: formulaTypes.STRING, + validation: { + args: { + rqd: 2, + }, + }, + description: 'Returns the first substring that matches a regular expression.', + syntax: 'REGEX_MATCH(string, regex)', + examples: ['REGEX_EXTRACT({title}, "abc.*")'], + }, + REGEX_REPLACE: { + type: formulaTypes.STRING, + validation: { + args: { + rqd: 3, + }, + }, + description: '"Substitutes all matching substrings with a replacement string value."', + syntax: 'REGEX_MATCH(string, regex, replacement)', + examples: ['REGEX_EXTRACT({title}, "abc.*", "abcd")'], + }, } const formulaList = Object.keys(formulas) From 12bf511c76d93b595fb7b390eb8cc49b86cce1da Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:55 +0000 Subject: [PATCH 053/279] fix: avoid adding curly brace for call expression name --- packages/nocodb-sdk/src/lib/formulaHelpers.ts | 44 ++----------------- 1 file changed, 3 insertions(+), 41 deletions(-) diff --git a/packages/nocodb-sdk/src/lib/formulaHelpers.ts b/packages/nocodb-sdk/src/lib/formulaHelpers.ts index d002977eba..ccd74179cf 100644 --- a/packages/nocodb-sdk/src/lib/formulaHelpers.ts +++ b/packages/nocodb-sdk/src/lib/formulaHelpers.ts @@ -108,7 +108,7 @@ export function substituteColumnIdWithAliasInFormula( return jsepTreeToFormula(parsedFormula); } -export function jsepTreeToFormula(node) { +export function jsepTreeToFormula(node, isCallExpId = false) { if (node.type === 'BinaryExpression' || node.type === 'LogicalExpression') { return ( '(' + @@ -135,45 +135,7 @@ export function jsepTreeToFormula(node) { } if (node.type === 'Identifier') { - const formulas = [ - 'AVG', - 'ADD', - 'DATEADD', - 'DATETIME_DIFF', - 'WEEKDAY', - 'AND', - 'OR', - 'CONCAT', - 'TRIM', - 'UPPER', - 'LOWER', - 'LEN', - 'MIN', - 'MAX', - 'CEILING', - 'FLOOR', - 'ROUND', - 'MOD', - 'REPEAT', - 'LOG', - 'EXP', - 'POWER', - 'SQRT', - 'SQRT', - 'ABS', - 'NOW', - 'REPLACE', - 'SEARCH', - 'INT', - 'RIGHT', - 'LEFT', - 'SUBSTR', - 'MID', - 'IF', - 'SWITCH', - 'URL', - ]; - if (!formulas.includes(node.name.toUpperCase())) return '{' + node.name + '}'; + if (!isCallExpId) return '{' + node.name + '}'; return node.name; } @@ -186,7 +148,7 @@ export function jsepTreeToFormula(node) { if (node.type === 'CallExpression') { return ( - jsepTreeToFormula(node.callee) + + jsepTreeToFormula(node.callee, true) + '(' + node.arguments.map(jsepTreeToFormula).join(', ') + ')' From a836994218134397652b55a59e7ebacd412075a8 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:55 +0000 Subject: [PATCH 054/279] fix: add TRUE/FALSE method support --- packages/nocodb/src/db/functionMappings/commonFns.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/nocodb/src/db/functionMappings/commonFns.ts b/packages/nocodb/src/db/functionMappings/commonFns.ts index 006a899bae..19e2a4be24 100644 --- a/packages/nocodb/src/db/functionMappings/commonFns.ts +++ b/packages/nocodb/src/db/functionMappings/commonFns.ts @@ -53,8 +53,6 @@ export default { } return { builder: args.knex.raw(`CASE ${query}\n END${args.colAlias}`) }; }, - TRUE: 1, - FALSE: 0, AND: async (args: MapFnArgs) => { return { builder: args.knex.raw( @@ -112,8 +110,13 @@ export default { builder: (await args.fn(args.pt?.arguments?.[0])).builder.wrap('(', ')'), }; }, - BLANK: async (args: MapFnArgs) => { return { builder: args.knex.raw(`?`, ['']) }; }, + TRUE: async (args: MapFnArgs) => { + return { builder: args.knex.raw(`?`, [1]) }; + }, + FALSE: async (args: MapFnArgs) => { + return { builder: args.knex.raw(`?`, [0]) }; + }, }; From b0d0d41bf32186b6f7ace082d6c54d29a814e0ef Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:55 +0000 Subject: [PATCH 055/279] fix: regex formula corrections --- packages/nc-gui/utils/formulaUtils.ts | 2 +- packages/nocodb/src/db/functionMappings/pg.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/nc-gui/utils/formulaUtils.ts b/packages/nc-gui/utils/formulaUtils.ts index 43a6990a31..890329bbca 100644 --- a/packages/nc-gui/utils/formulaUtils.ts +++ b/packages/nc-gui/utils/formulaUtils.ts @@ -442,7 +442,7 @@ const formulas: Record = { }, REGEX_MATCH: { - type: formulaTypes.NUMERIC, + type: formulaTypes.STRING, validation: { args: { rqd: 2, diff --git a/packages/nocodb/src/db/functionMappings/pg.ts b/packages/nocodb/src/db/functionMappings/pg.ts index 7679f86ecf..427454d13b 100644 --- a/packages/nocodb/src/db/functionMappings/pg.ts +++ b/packages/nocodb/src/db/functionMappings/pg.ts @@ -193,7 +193,7 @@ const pg = { const source = (await fn(pt.arguments[0])).builder; const pattern = (await fn(pt.arguments[1])).builder; return { - builder: knex.raw(`${source}::text ~ ${pattern}::text) ${colAlias}`), + builder: knex.raw(`(${source}::text ~ ${pattern}::text) ${colAlias}`), }; }, REGEX_EXTRACT: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { @@ -201,7 +201,7 @@ const pg = { const pattern = (await fn(pt.arguments[1])).builder; return { builder: knex.raw( - `regexp_matches(${source}::text, ${pattern}::text) ${colAlias}`, + `REGEXP_MATCHES(${source}::text, ${pattern}::text) ${colAlias}`, ), }; }, @@ -211,7 +211,7 @@ const pg = { const replacement = (await fn(pt.arguments[2])).builder; return { builder: knex.raw( - `regexp_matches(${source}::text, ${pattern}::text, ${replacement}::text) ${colAlias}`, + `REGEXP_REPLACE(${source}::text, ${pattern}::text, ${replacement}::text, 'g') ${colAlias}`, ), }; }, From b1bd6f4435c5c8d20379073d9aa27776a675c335 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:55 +0000 Subject: [PATCH 056/279] fix: include blank method in ui --- packages/nc-gui/utils/formulaUtils.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/nc-gui/utils/formulaUtils.ts b/packages/nc-gui/utils/formulaUtils.ts index 890329bbca..aac7611cf9 100644 --- a/packages/nc-gui/utils/formulaUtils.ts +++ b/packages/nc-gui/utils/formulaUtils.ts @@ -471,10 +471,21 @@ const formulas: Record = { rqd: 3, }, }, - description: '"Substitutes all matching substrings with a replacement string value."', + description: 'Substitutes all matching substrings with a replacement string value.', syntax: 'REGEX_MATCH(string, regex, replacement)', examples: ['REGEX_EXTRACT({title}, "abc.*", "abcd")'], }, + BLANK: { + type: formulaTypes.STRING, + validation: { + args: { + rqd: 0, + }, + }, + description: 'Returns an empty string.', + syntax: 'BLANK()', + examples: ['BLANK()'], + }, } const formulaList = Object.keys(formulas) From 4bcf91fd03fc7e7babdb49d981e4310b233ee3c1 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:55 +0000 Subject: [PATCH 057/279] fix: REGEX_EXTRACT - formula function correction --- packages/nc-gui/utils/formulaUtils.ts | 2 +- packages/nocodb/src/db/functionMappings/pg.ts | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/nc-gui/utils/formulaUtils.ts b/packages/nc-gui/utils/formulaUtils.ts index aac7611cf9..abe03d1d19 100644 --- a/packages/nc-gui/utils/formulaUtils.ts +++ b/packages/nc-gui/utils/formulaUtils.ts @@ -482,7 +482,7 @@ const formulas: Record = { rqd: 0, }, }, - description: 'Returns an empty string.', + description: 'Returns a blank value.', syntax: 'BLANK()', examples: ['BLANK()'], }, diff --git a/packages/nocodb/src/db/functionMappings/pg.ts b/packages/nocodb/src/db/functionMappings/pg.ts index 427454d13b..2105f19dcf 100644 --- a/packages/nocodb/src/db/functionMappings/pg.ts +++ b/packages/nocodb/src/db/functionMappings/pg.ts @@ -201,7 +201,9 @@ const pg = { const pattern = (await fn(pt.arguments[1])).builder; return { builder: knex.raw( - `REGEXP_MATCHES(${source}::text, ${pattern}::text) ${colAlias}`, + // use `SUBSTRING` since REGEXP_MATCH returns array value + // `REGEXP_MATCH(${source}::text, ${pattern}::text) ${colAlias}`, + `SUBSTRING(${source}::text from ${pattern}::text) ${colAlias}`, ), }; }, From e014f02abaa0b4c12ba18035e41398a925be9e7e Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:55 +0000 Subject: [PATCH 058/279] fix: XOR - formula function - WIP --- packages/nc-gui/utils/formulaUtils.ts | 11 ++++++++++ packages/nocodb/src/db/functionMappings/pg.ts | 20 +++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/packages/nc-gui/utils/formulaUtils.ts b/packages/nc-gui/utils/formulaUtils.ts index abe03d1d19..14fe7a5a1c 100644 --- a/packages/nc-gui/utils/formulaUtils.ts +++ b/packages/nc-gui/utils/formulaUtils.ts @@ -486,6 +486,17 @@ const formulas: Record = { syntax: 'BLANK()', examples: ['BLANK()'], }, + XOR: { + type: formulaTypes.NUMERIC, + validation: { + args: { + min: 1, + }, + }, + description: 'Returns true if an odd number of arguments are true.', + syntax: 'XOR(expression, [exp2, ...])', + examples: ['XOR(TRUE(), FALSE(), TRUE())'], + }, } const formulaList = Object.keys(formulas) diff --git a/packages/nocodb/src/db/functionMappings/pg.ts b/packages/nocodb/src/db/functionMappings/pg.ts index 2105f19dcf..cfe2507ae6 100644 --- a/packages/nocodb/src/db/functionMappings/pg.ts +++ b/packages/nocodb/src/db/functionMappings/pg.ts @@ -193,7 +193,7 @@ const pg = { const source = (await fn(pt.arguments[0])).builder; const pattern = (await fn(pt.arguments[1])).builder; return { - builder: knex.raw(`(${source}::text ~ ${pattern}::text) ${colAlias}`), + builder: knex.raw(`(${source}::TEXT ~ ${pattern}::TEXT) ${colAlias}`), }; }, REGEX_EXTRACT: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { @@ -202,8 +202,8 @@ const pg = { return { builder: knex.raw( // use `SUBSTRING` since REGEXP_MATCH returns array value - // `REGEXP_MATCH(${source}::text, ${pattern}::text) ${colAlias}`, - `SUBSTRING(${source}::text from ${pattern}::text) ${colAlias}`, + // `REGEXP_MATCH(${source}::TEXT, ${pattern}::TEXT) ${colAlias}`, + `SUBSTRING(${source}::TEXT from ${pattern}::TEXT) ${colAlias}`, ), }; }, @@ -213,10 +213,22 @@ const pg = { const replacement = (await fn(pt.arguments[2])).builder; return { builder: knex.raw( - `REGEXP_REPLACE(${source}::text, ${pattern}::text, ${replacement}::text, 'g') ${colAlias}`, + `REGEXP_REPLACE(${source}::TEXT, ${pattern}::TEXT, ${replacement}::TEXT, 'g') ${colAlias}`, ), }; }, + XOR: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { + const args = await Promise.all( + pt.arguments.map(async (arg) => { + return knex.raw( + `(${(await fn(pt.arguments[0])).builder} IS NOT NULL)::INTEGER`, + ); + }), + ); + return { + builder: knex.raw(`check (${args.join(' + ')} = 1)`), + }; + }, }; export default pg; From 86ec3678c7e24db49a09aa63ecfc80ece586fb91 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:55 +0000 Subject: [PATCH 059/279] fix: XOR - formula function --- packages/nocodb/src/db/functionMappings/pg.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/nocodb/src/db/functionMappings/pg.ts b/packages/nocodb/src/db/functionMappings/pg.ts index cfe2507ae6..6d373fee0b 100644 --- a/packages/nocodb/src/db/functionMappings/pg.ts +++ b/packages/nocodb/src/db/functionMappings/pg.ts @@ -219,14 +219,10 @@ const pg = { }, XOR: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { const args = await Promise.all( - pt.arguments.map(async (arg) => { - return knex.raw( - `(${(await fn(pt.arguments[0])).builder} IS NOT NULL)::INTEGER`, - ); - }), + pt.arguments.map(async (arg) => `${(await fn(arg)).builder}`), ); return { - builder: knex.raw(`check (${args.join(' + ')} = 1)`), + builder: knex.raw(`${args.join(' # ')} ${colAlias}`), }; }, }; From 3dafbaa0064278985c3e165aeb98ac8ac10276d4 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:56 +0000 Subject: [PATCH 060/279] feat: add `&` as string concatenation shortcut --- .../smartsheet/column/FormulaOptions.vue | 2 +- .../src/db/formulav2/formulaQueryBuilderv2.ts | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/nc-gui/components/smartsheet/column/FormulaOptions.vue b/packages/nc-gui/components/smartsheet/column/FormulaOptions.vue index 8ee16f4731..606968c569 100644 --- a/packages/nc-gui/components/smartsheet/column/FormulaOptions.vue +++ b/packages/nc-gui/components/smartsheet/column/FormulaOptions.vue @@ -74,7 +74,7 @@ const validators = { const availableFunctions = formulaList -const availableBinOps = ['+', '-', '*', '/', '>', '<', '==', '<=', '>=', '!='] +const availableBinOps = ['+', '-', '*', '/', '>', '<', '==', '<=', '>=', '!=', '&'] const autocomplete = ref(false) diff --git a/packages/nocodb/src/db/formulav2/formulaQueryBuilderv2.ts b/packages/nocodb/src/db/formulav2/formulaQueryBuilderv2.ts index b7d1fbac65..a1eedb85a9 100644 --- a/packages/nocodb/src/db/formulav2/formulaQueryBuilderv2.ts +++ b/packages/nocodb/src/db/formulav2/formulaQueryBuilderv2.ts @@ -774,6 +774,25 @@ async function _formulaQueryBuilder( } return { builder: knex.raw(`??${colAlias}`, [builder || pt.name]) }; } else if (pt.type === 'BinaryExpression') { + + if(pt.operator === '&'){ + return fn( + { + type: 'CallExpression', + arguments: [ + pt.left, + pt.right + ], + callee: { + type: 'Identifier', + name: 'CONCAT', + }, + }, + alias, + prevBinaryOp, + ); + } + if (pt.operator === '==') { pt.operator = '='; } From 45ebe18cb871ce1e9562adcbaa4627e4081adc9f Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:56 +0000 Subject: [PATCH 061/279] feat: add even and odd method support --- packages/nc-gui/utils/formulaUtils.ts | 22 +++++++++++++++++++ .../src/db/functionMappings/commonFns.ts | 16 ++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/packages/nc-gui/utils/formulaUtils.ts b/packages/nc-gui/utils/formulaUtils.ts index 14fe7a5a1c..8ed213c5c4 100644 --- a/packages/nc-gui/utils/formulaUtils.ts +++ b/packages/nc-gui/utils/formulaUtils.ts @@ -497,6 +497,28 @@ const formulas: Record = { syntax: 'XOR(expression, [exp2, ...])', examples: ['XOR(TRUE(), FALSE(), TRUE())'], }, + EVEN: { + type: formulaTypes.NUMERIC, + validation: { + args: { + rqd: 1, + }, + }, + description: 'Returns the smallest even integer that is greater than or equal to the specified value.', + syntax: 'EVEN(value)', + examples: ['EVEN({column})'], + }, + ODD: { + type: formulaTypes.NUMERIC, + validation: { + args: { + rqd: 1, + }, + }, + description: 'Rounds positive value up the the nearest odd number and negative value down to the nearest odd number.', + syntax: 'ODD(value)', + examples: ['ODD({column})'], + }, } const formulaList = Object.keys(formulas) diff --git a/packages/nocodb/src/db/functionMappings/commonFns.ts b/packages/nocodb/src/db/functionMappings/commonFns.ts index 19e2a4be24..777264beb8 100644 --- a/packages/nocodb/src/db/functionMappings/commonFns.ts +++ b/packages/nocodb/src/db/functionMappings/commonFns.ts @@ -119,4 +119,20 @@ export default { FALSE: async (args: MapFnArgs) => { return { builder: args.knex.raw(`?`, [0]) }; }, + EVEN: async (args: MapFnArgs) => { + const query = (await args.fn(args.pt.arguments[0])).builder; + return { + builder: args.knex.raw( + `CASE WHEN ${query} % 2 = 0 THEN CEILING(${query})\nELSE CEILING(${query} / 2.0) * 2\n END${args.colAlias}`, + ), + }; + }, + ODD: async (args: MapFnArgs) => { + const query = (await args.fn(args.pt.arguments[0])).builder; + return { + builder: args.knex.raw( + `CASE WHEN ${query} >= 0 THEN CEIL(${query} / 2.0) * 2 + 1 \n ELSE FLOOR(${query} / 2.0) * 2 - 1\n END${args.colAlias}`, + ), + }; + }, }; From 5fbe2c61e3cf70bc37fe68fe7e0103ab74fb0fa1 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:56 +0000 Subject: [PATCH 062/279] feat: formula - odd function logic correction --- packages/nocodb/src/db/functionMappings/commonFns.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nocodb/src/db/functionMappings/commonFns.ts b/packages/nocodb/src/db/functionMappings/commonFns.ts index 777264beb8..66bbbb2aaa 100644 --- a/packages/nocodb/src/db/functionMappings/commonFns.ts +++ b/packages/nocodb/src/db/functionMappings/commonFns.ts @@ -131,7 +131,7 @@ export default { const query = (await args.fn(args.pt.arguments[0])).builder; return { builder: args.knex.raw( - `CASE WHEN ${query} >= 0 THEN CEIL(${query} / 2.0) * 2 + 1 \n ELSE FLOOR(${query} / 2.0) * 2 - 1\n END${args.colAlias}`, + `CASE WHEN ${query} >= 0 THEN CEIL((${query} - 1) / 2.0) * 2 + 1 \n ELSE FLOOR((${query} + 1) / 2.0) * 2 - 1\n END${args.colAlias}`, ), }; }, From 7dff8cf5245be54e28d22df12de449b74b5295b8 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:56 +0000 Subject: [PATCH 063/279] refactor: treat blank as null --- packages/nocodb/src/db/functionMappings/commonFns.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nocodb/src/db/functionMappings/commonFns.ts b/packages/nocodb/src/db/functionMappings/commonFns.ts index 66bbbb2aaa..d88b8cf69e 100644 --- a/packages/nocodb/src/db/functionMappings/commonFns.ts +++ b/packages/nocodb/src/db/functionMappings/commonFns.ts @@ -111,7 +111,7 @@ export default { }; }, BLANK: async (args: MapFnArgs) => { - return { builder: args.knex.raw(`?`, ['']) }; + return { builder: args.knex.raw(`?`, [null]) }; }, TRUE: async (args: MapFnArgs) => { return { builder: args.knex.raw(`?`, [1]) }; From 24980e6a58ddbaadc4837d26e85e1d0d9bef70de Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:56 +0000 Subject: [PATCH 064/279] feat: formula - record_id support --- packages/nc-gui/utils/formulaUtils.ts | 10 +++++++ .../src/db/formulav2/formulaQueryBuilderv2.ts | 28 +++++++++---------- .../src/db/functionMappings/commonFns.ts | 16 +++++++++++ packages/nocodb/src/db/mapFunctionName.ts | 2 ++ 4 files changed, 41 insertions(+), 15 deletions(-) diff --git a/packages/nc-gui/utils/formulaUtils.ts b/packages/nc-gui/utils/formulaUtils.ts index 8ed213c5c4..940f9391ac 100644 --- a/packages/nc-gui/utils/formulaUtils.ts +++ b/packages/nc-gui/utils/formulaUtils.ts @@ -519,6 +519,16 @@ const formulas: Record = { syntax: 'ODD(value)', examples: ['ODD({column})'], }, + RECORD_ID: { + validation: { + args: { + rqd: 0, + }, + }, + description: 'Returns ID of the current record.', + syntax: 'RECORD_ID()', + examples: ['RECORD_ID()'], + }, } const formulaList = Object.keys(formulas) diff --git a/packages/nocodb/src/db/formulav2/formulaQueryBuilderv2.ts b/packages/nocodb/src/db/formulav2/formulaQueryBuilderv2.ts index a1eedb85a9..e2fd850d85 100644 --- a/packages/nocodb/src/db/formulav2/formulaQueryBuilderv2.ts +++ b/packages/nocodb/src/db/formulav2/formulaQueryBuilderv2.ts @@ -724,6 +724,7 @@ async function _formulaQueryBuilder( fn, colAlias, prevBinaryOp, + model, }); if (res) return res; } @@ -774,22 +775,19 @@ async function _formulaQueryBuilder( } return { builder: knex.raw(`??${colAlias}`, [builder || pt.name]) }; } else if (pt.type === 'BinaryExpression') { - - if(pt.operator === '&'){ - return fn( - { - type: 'CallExpression', - arguments: [ - pt.left, - pt.right - ], - callee: { - type: 'Identifier', - name: 'CONCAT', - }, + // treat `&` as shortcut for concat + if (pt.operator === '&') { + return fn( + { + type: 'CallExpression', + arguments: [pt.left, pt.right], + callee: { + type: 'Identifier', + name: 'CONCAT', }, - alias, - prevBinaryOp, + }, + alias, + prevBinaryOp, ); } diff --git a/packages/nocodb/src/db/functionMappings/commonFns.ts b/packages/nocodb/src/db/functionMappings/commonFns.ts index d88b8cf69e..4321cc3e4d 100644 --- a/packages/nocodb/src/db/functionMappings/commonFns.ts +++ b/packages/nocodb/src/db/functionMappings/commonFns.ts @@ -1,4 +1,5 @@ import type { MapFnArgs } from '../mapFunctionName'; +import { NcError } from '~/helpers/catchError'; export default { // todo: handle default case @@ -135,4 +136,19 @@ export default { ), }; }, + RECORD_ID: async (args: MapFnArgs) => { + const pkCol = args.model?.primaryKey; + if (!pkCol) { + NcError.badRequest('Primary key not found'); + } + + return { + builder: args.knex.raw( + `${ + (await args.fn({ type: 'Identifier', name: pkCol.id }, args.a)) + .builder + } ${args.colAlias}`, + ), + }; + }, }; diff --git a/packages/nocodb/src/db/mapFunctionName.ts b/packages/nocodb/src/db/mapFunctionName.ts index 8bfb24c9ed..605f077f1d 100644 --- a/packages/nocodb/src/db/mapFunctionName.ts +++ b/packages/nocodb/src/db/mapFunctionName.ts @@ -1,5 +1,6 @@ import type { XKnex } from '~/db/CustomKnex'; import type { Knex } from 'knex'; +import type { Model } from '~/models'; import mssql from '~/db/functionMappings/mssql'; import mysql from '~/db/functionMappings/mysql'; import pg from '~/db/functionMappings/pg'; @@ -17,6 +18,7 @@ export interface MapFnArgs { fn: (...args: any) => Promise<{ builder: Knex.QueryBuilder | any }>; colAlias: string; prevBinaryOp?: any; + model: Model; } const mapFunctionName = async (args: MapFnArgs): Promise => { From 9ac662c2c44aab37d52cfa9047b32ae54672efb2 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:56 +0000 Subject: [PATCH 065/279] feat: formula - add created_at/updated_at column - WIP --- .../src/db/functionMappings/commonFns.ts | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/packages/nocodb/src/db/functionMappings/commonFns.ts b/packages/nocodb/src/db/functionMappings/commonFns.ts index 4321cc3e4d..512ec5b9a7 100644 --- a/packages/nocodb/src/db/functionMappings/commonFns.ts +++ b/packages/nocodb/src/db/functionMappings/commonFns.ts @@ -151,4 +151,38 @@ export default { ), }; }, + CREATED_AT: async (args: MapFnArgs) => { + const createdAtCol = args.model?.columns?.find( + (col) => col.column_name === 'created_at', + ); + if (!createdAtCol) { + NcError.badRequest('Created at field not found'); + } + + return { + builder: args.knex.raw( + `${ + (await args.fn({ type: 'Identifier', name: createdAtCol.id }, args.a)) + .builder + } ${args.colAlias}`, + ), + }; + }, + UPDATED_AT: async (args: MapFnArgs) => { + const createdAtCol = args.model?.columns?.find( + (col) => col.column_name === 'updated_at', + ); + if (!createdAtCol) { + NcError.badRequest('Created at field not found'); + } + + return { + builder: args.knex.raw( + `${ + (await args.fn({ type: 'Identifier', name: createdAtCol.id }, args.a)) + .builder + } ${args.colAlias}`, + ), + }; + }, }; From 79ae6416b1801cbdb71cc1b186e33776a508b075 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:56 +0000 Subject: [PATCH 066/279] feat: formula - add counta function --- packages/nc-gui/utils/formulaUtils.ts | 20 +++++++++++++ packages/nocodb/src/db/functionMappings/pg.ts | 28 +++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/packages/nc-gui/utils/formulaUtils.ts b/packages/nc-gui/utils/formulaUtils.ts index 940f9391ac..6e4a676857 100644 --- a/packages/nc-gui/utils/formulaUtils.ts +++ b/packages/nc-gui/utils/formulaUtils.ts @@ -529,6 +529,26 @@ const formulas: Record = { syntax: 'RECORD_ID()', examples: ['RECORD_ID()'], }, + COUNTA: { + validation: { + args: { + min:1, + }, + }, + description: '', + syntax: 'COUNTA()', + examples: ['COUNTA()'], + }, + COUNT: { + validation: { + args: { + rqd: 0, + }, + }, + description: '', + syntax: 'COUNT()', + examples: ['COUNT()'], + }, } const formulaList = Object.keys(formulas) diff --git a/packages/nocodb/src/db/functionMappings/pg.ts b/packages/nocodb/src/db/functionMappings/pg.ts index 6d373fee0b..594ba775d3 100644 --- a/packages/nocodb/src/db/functionMappings/pg.ts +++ b/packages/nocodb/src/db/functionMappings/pg.ts @@ -225,6 +225,34 @@ const pg = { builder: knex.raw(`${args.join(' # ')} ${colAlias}`), }; }, + COUNT: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { + return { + builder: knex.raw( + `${( + await Promise.all( + pt.arguments.map(async (arg) => { + const { builder } = await fn(arg); + return `CASE WHEN ${builder} IS NOT NULL AND ${builder}::text != '' THEN 1 ELSE 0 END`; + }), + ) + ).join(' + ')} ${colAlias}`, + ), + }; + }, + COUNTA: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { + return { + builder: knex.raw( + `${( + await Promise.all( + pt.arguments.map(async (arg) => { + const { builder } = await fn(arg); + return `CASE WHEN ${builder} IS NOT NULL AND ${builder}::text != '' THEN 1 ELSE 0 END`; + }), + ) + ).join(' + ')} ${colAlias}`, + ), + }; + }, }; export default pg; From fdfd1b1ded277e31f33658bab7cffdbb80fe1c47 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:56 +0000 Subject: [PATCH 067/279] feat: formula - add countall function --- packages/nc-gui/utils/formulaUtils.ts | 10 ++++++++++ packages/nocodb/src/db/functionMappings/commonFns.ts | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/packages/nc-gui/utils/formulaUtils.ts b/packages/nc-gui/utils/formulaUtils.ts index 6e4a676857..391af7d641 100644 --- a/packages/nc-gui/utils/formulaUtils.ts +++ b/packages/nc-gui/utils/formulaUtils.ts @@ -549,6 +549,16 @@ const formulas: Record = { syntax: 'COUNT()', examples: ['COUNT()'], }, + COUNTALL: { + validation: { + args: { + rqd: 0, + }, + }, + description: '', + syntax: 'COUNTALL()', + examples: ['COUNTALL()'], + }, } const formulaList = Object.keys(formulas) diff --git a/packages/nocodb/src/db/functionMappings/commonFns.ts b/packages/nocodb/src/db/functionMappings/commonFns.ts index 512ec5b9a7..e039793acf 100644 --- a/packages/nocodb/src/db/functionMappings/commonFns.ts +++ b/packages/nocodb/src/db/functionMappings/commonFns.ts @@ -185,4 +185,10 @@ export default { ), }; }, + // todo: verify the behaviour of this function + COUNTALL: async ({ knex, pt,}: MapFnArgs) => { + return { + builder: knex.raw('? ${colAlias}', [pt.arguments.length]), + }; + }, }; From 86702eda64383ff55fc43498eb2abb6ca0c8e9be Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:56 +0000 Subject: [PATCH 068/279] feat: formula - add rounddown and roundup support --- packages/nc-gui/utils/formulaUtils.ts | 26 +++++++++++++++- packages/nocodb/src/db/functionMappings/pg.ts | 30 +++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/packages/nc-gui/utils/formulaUtils.ts b/packages/nc-gui/utils/formulaUtils.ts index 391af7d641..1aa158d64a 100644 --- a/packages/nc-gui/utils/formulaUtils.ts +++ b/packages/nc-gui/utils/formulaUtils.ts @@ -532,7 +532,7 @@ const formulas: Record = { COUNTA: { validation: { args: { - min:1, + min: 1, }, }, description: '', @@ -559,6 +559,30 @@ const formulas: Record = { syntax: 'COUNTALL()', examples: ['COUNTALL()'], }, + ROUNDDOWN: { + type: formulaTypes.NUMERIC, + validation: { + args: { + min: 1, + max: 2, + }, + }, + description: '', + syntax: 'ROUNDDOWN()', + examples: ['ROUNDDOWN()'], + }, + ROUNDUP: { + type: formulaTypes.NUMERIC, + validation: { + args: { + min: 1, + max: 2, + }, + }, + description: '', + syntax: 'ROUNDUP()', + examples: ['ROUNDUP()'], + }, } const formulaList = Object.keys(formulas) diff --git a/packages/nocodb/src/db/functionMappings/pg.ts b/packages/nocodb/src/db/functionMappings/pg.ts index 594ba775d3..de506c6811 100644 --- a/packages/nocodb/src/db/functionMappings/pg.ts +++ b/packages/nocodb/src/db/functionMappings/pg.ts @@ -253,6 +253,36 @@ const pg = { ), }; }, + + // todo: move to common and use existing functions + ROUNDDOWN: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { + const { builder: valueBuilder } = await fn(pt.arguments[0]); + let precisionBuilder = knex.raw('0'); + if (pt.arguments[1]) { + const { builder } = await fn(pt.arguments[1]); + precisionBuilder = builder; + } + + return { + builder: knex.raw( + `ROUND(FLOOR(${valueBuilder} * POWER(10, ${precisionBuilder})) / POWER(10, ${precisionBuilder}))${colAlias}`, + ), + }; + }, + ROUNDUP: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { + const { builder: valueBuilder } = await fn(pt.arguments[0]); + let precisionBuilder = knex.raw('0'); + if (pt.arguments[1]) { + const { builder } = await fn(pt.arguments[1]); + precisionBuilder = builder; + } + + return { + builder: knex.raw( + `ROUND(CEIL(${valueBuilder} * POWER(10, ${precisionBuilder})) / POWER(10, ${precisionBuilder}))${colAlias}`, + ), + }; + }, }; export default pg; From e236880ad8117219d5192b8cff1284b2230ce389 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:56 +0000 Subject: [PATCH 069/279] feat: formula - count method correction --- packages/nc-gui/utils/formulaUtils.ts | 2 +- packages/nocodb/src/db/functionMappings/pg.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/nc-gui/utils/formulaUtils.ts b/packages/nc-gui/utils/formulaUtils.ts index 1aa158d64a..0ece3b6bec 100644 --- a/packages/nc-gui/utils/formulaUtils.ts +++ b/packages/nc-gui/utils/formulaUtils.ts @@ -542,7 +542,7 @@ const formulas: Record = { COUNT: { validation: { args: { - rqd: 0, + min: 1, }, }, description: '', diff --git a/packages/nocodb/src/db/functionMappings/pg.ts b/packages/nocodb/src/db/functionMappings/pg.ts index de506c6811..13386176f5 100644 --- a/packages/nocodb/src/db/functionMappings/pg.ts +++ b/packages/nocodb/src/db/functionMappings/pg.ts @@ -232,7 +232,7 @@ const pg = { await Promise.all( pt.arguments.map(async (arg) => { const { builder } = await fn(arg); - return `CASE WHEN ${builder} IS NOT NULL AND ${builder}::text != '' THEN 1 ELSE 0 END`; + return `CASE WHEN pg_typeof(${builder}) IN ('smallint', 'integer', 'bigint', 'decimal', 'numeric', 'real', 'double precision') AND ${builder} IS NOT NULL THEN 1 ELSE 0 END`; }), ) ).join(' + ')} ${colAlias}`, From 54f228614017afa496f88abd214fd5d839d092d7 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:57 +0000 Subject: [PATCH 070/279] feat: formula - mysql - regex_match --- packages/nocodb/src/db/functionMappings/mysql.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/nocodb/src/db/functionMappings/mysql.ts b/packages/nocodb/src/db/functionMappings/mysql.ts index fef17826e6..1037adff29 100644 --- a/packages/nocodb/src/db/functionMappings/mysql.ts +++ b/packages/nocodb/src/db/functionMappings/mysql.ts @@ -114,6 +114,13 @@ const mysql2 = { ), }; }, + REGEX_MATCH: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { + const source = (await fn(pt.arguments[0])).builder; + const pattern = (await fn(pt.arguments[1])).builder; + return { + builder: knex.raw(`(${source} REGEXP ${pattern}) ${colAlias}`), + }; + }, }; export default mysql2; From ba45602ff5455e72225d5f7b0b51559923dfc0f6 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:57 +0000 Subject: [PATCH 071/279] feat: formula - mysql - regex_extract and replace --- .../nocodb/src/db/functionMappings/mysql.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/packages/nocodb/src/db/functionMappings/mysql.ts b/packages/nocodb/src/db/functionMappings/mysql.ts index 1037adff29..36be83317b 100644 --- a/packages/nocodb/src/db/functionMappings/mysql.ts +++ b/packages/nocodb/src/db/functionMappings/mysql.ts @@ -121,6 +121,23 @@ const mysql2 = { builder: knex.raw(`(${source} REGEXP ${pattern}) ${colAlias}`), }; }, + REGEX_EXTRACT: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { + const source = (await fn(pt.arguments[0])).builder; + const pattern = (await fn(pt.arguments[1])).builder; + return { + builder: knex.raw(`REGEXP_SUBSTR(${source}, ${pattern}) ${colAlias}`), + }; + }, + REGEX_REPLACE: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { + const source = (await fn(pt.arguments[0])).builder; + const pattern = (await fn(pt.arguments[1])).builder; + const replacement = (await fn(pt.arguments[2])).builder; + return { + builder: knex.raw( + `REGEXP_REPLACE(${source}, ${pattern}, ${replacement}) ${colAlias}`, + ), + }; + }, }; export default mysql2; From 7e2e8a143e920eeb979b627cc45681a0531da4e5 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:57 +0000 Subject: [PATCH 072/279] feat: formula - mysql - XOR --- packages/nocodb/src/db/functionMappings/mysql.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/nocodb/src/db/functionMappings/mysql.ts b/packages/nocodb/src/db/functionMappings/mysql.ts index 36be83317b..0e5f33f320 100644 --- a/packages/nocodb/src/db/functionMappings/mysql.ts +++ b/packages/nocodb/src/db/functionMappings/mysql.ts @@ -138,6 +138,14 @@ const mysql2 = { ), }; }, + XOR: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { + const args = await Promise.all( + pt.arguments.map(async (arg) => `${(await fn(arg)).builder}`), + ); + return { + builder: knex.raw(`${args.join(' XOR ')} ${colAlias}`), + }; + }, }; export default mysql2; From ebc01a59d48725f8015df753629a0e70a8bc1055 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:57 +0000 Subject: [PATCH 073/279] feat: formula - pg - value function support --- packages/nc-gui/utils/formulaUtils.ts | 10 ++++++++++ packages/nocodb/src/db/functionMappings/pg.ts | 13 +++++++++++++ 2 files changed, 23 insertions(+) diff --git a/packages/nc-gui/utils/formulaUtils.ts b/packages/nc-gui/utils/formulaUtils.ts index 0ece3b6bec..c216e47399 100644 --- a/packages/nc-gui/utils/formulaUtils.ts +++ b/packages/nc-gui/utils/formulaUtils.ts @@ -583,6 +583,16 @@ const formulas: Record = { syntax: 'ROUNDUP()', examples: ['ROUNDUP()'], }, + VALUE: { + validation: { + args: { + rqd: 1, + }, + }, + description: '', + syntax: 'VALUE()', + examples: ['VALUE()'], + }, } const formulaList = Object.keys(formulas) diff --git a/packages/nocodb/src/db/functionMappings/pg.ts b/packages/nocodb/src/db/functionMappings/pg.ts index 13386176f5..7fea4f8ca7 100644 --- a/packages/nocodb/src/db/functionMappings/pg.ts +++ b/packages/nocodb/src/db/functionMappings/pg.ts @@ -283,6 +283,19 @@ const pg = { ), }; }, + VALUE: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { + const value = (await fn(pt.arguments[0])).builder.toString(); + + return { + builder: knex.raw( + `ROUND(CASE + WHEN ${value} IS NULL OR REGEXP_REPLACE(${value}::TEXT, '[^\\d.]+', '', 'g') IN ('.', '') OR LENGTH(REGEXP_REPLACE(${value}::TEXT, '[^.]+', '', 'g')) > 1 THEN NULL + WHEN LENGTH(REGEXP_REPLACE(${value}::TEXT, '[^%]', '','g')) > 0 THEN POW(-1, LENGTH(REGEXP_REPLACE(${value}::TEXT, '[^-]','', 'g'))) * (REGEXP_REPLACE(${value}::TEXT, '[^\\d.]+', '', 'g'))::NUMERIC / 100 + ELSE POW(-1, LENGTH(REGEXP_REPLACE(${value}::TEXT, '[^-]', '', 'g'))) * (REGEXP_REPLACE(${value}::TEXT, '[^\\d.]+', '', 'g'))::NUMERIC +END) ${colAlias}`, + ), + }; + }, }; export default pg; From cd3f25d0b143f89f669bce6c904d0ac90317357a Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:57 +0000 Subject: [PATCH 074/279] feat: formula - mysql - value function support --- .../nocodb/src/db/functionMappings/commonFns.ts | 2 +- packages/nocodb/src/db/functionMappings/mysql.ts | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/nocodb/src/db/functionMappings/commonFns.ts b/packages/nocodb/src/db/functionMappings/commonFns.ts index e039793acf..abbbf2ea32 100644 --- a/packages/nocodb/src/db/functionMappings/commonFns.ts +++ b/packages/nocodb/src/db/functionMappings/commonFns.ts @@ -186,7 +186,7 @@ export default { }; }, // todo: verify the behaviour of this function - COUNTALL: async ({ knex, pt,}: MapFnArgs) => { + COUNTALL: async ({ knex, pt }: MapFnArgs) => { return { builder: knex.raw('? ${colAlias}', [pt.arguments.length]), }; diff --git a/packages/nocodb/src/db/functionMappings/mysql.ts b/packages/nocodb/src/db/functionMappings/mysql.ts index 0e5f33f320..8026806876 100644 --- a/packages/nocodb/src/db/functionMappings/mysql.ts +++ b/packages/nocodb/src/db/functionMappings/mysql.ts @@ -146,6 +146,20 @@ const mysql2 = { builder: knex.raw(`${args.join(' XOR ')} ${colAlias}`), }; }, + + VALUE: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { + const value = (await fn(pt.arguments[0])).builder.toString(); + + return { + builder: knex.raw( + `ROUND(CASE + WHEN ${value} IS NULL OR REGEXP_REPLACE(${value}, '[^0-9.]+', '') IN ('.', '') OR LENGTH(REGEXP_REPLACE(${value}, '[^.]+', '')) > 1 THEN NULL + WHEN LENGTH(REGEXP_REPLACE(${value}, '[^%]', '')) > 0 THEN POW(-1, LENGTH(REGEXP_REPLACE(${value}, '[^-]',''))) * (REGEXP_REPLACE(${value}, '[^0-9.]+', '')) / 100 + ELSE POW(-1, LENGTH(REGEXP_REPLACE(${value}, '[^-]', ''))) * (REGEXP_REPLACE(${value}, '[^0-9.]+', '')) +END) ${colAlias}`, + ), + }; + }, }; export default mysql2; From 07a552dd56e194ccd4c25362cebc723061f81b07 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:57 +0000 Subject: [PATCH 075/279] fix: exclude unsupported functions --- packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts | 23 ++++++++++--------- packages/nocodb-sdk/src/lib/sqlUi/OracleUi.ts | 4 ++-- .../nocodb-sdk/src/lib/sqlUi/SnowflakeUi.ts | 4 ++-- packages/nocodb-sdk/src/lib/sqlUi/SqliteUi.ts | 12 +++++++++- 4 files changed, 27 insertions(+), 16 deletions(-) diff --git a/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts b/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts index e0db70b9ff..e6199ecf31 100644 --- a/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts +++ b/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts @@ -620,16 +620,17 @@ export class MssqlUi { } { const colProp: any = {}; switch (col.uidt) { - case 'ID': { - const isAutoIncId = idType === 'AI'; - const isAutoGenId = idType === 'AG'; - colProp.dt = isAutoGenId ? 'varchar' : 'int'; - colProp.pk = true; - colProp.un = isAutoIncId; - colProp.ai = isAutoIncId; - colProp.rqd = true; - colProp.meta = isAutoGenId ? {ag: 'nc'} : undefined; - } + case 'ID': + { + const isAutoIncId = idType === 'AI'; + const isAutoGenId = idType === 'AG'; + colProp.dt = isAutoGenId ? 'varchar' : 'int'; + colProp.pk = true; + colProp.un = isAutoIncId; + colProp.ai = isAutoIncId; + colProp.rqd = true; + colProp.meta = isAutoGenId ? { ag: 'nc' } : undefined; + } break; case 'ForeignKey': colProp.dt = 'varchar'; @@ -908,6 +909,6 @@ export class MssqlUi { } static getUnsupportedFnList() { - return []; + return ['XOR', 'REGEX_MATCH', 'REGEX_EXTRACT', 'REGEX_REPLACE', 'VALUE']; } } diff --git a/packages/nocodb-sdk/src/lib/sqlUi/OracleUi.ts b/packages/nocodb-sdk/src/lib/sqlUi/OracleUi.ts index 6f1747fa8c..533fe8208b 100644 --- a/packages/nocodb-sdk/src/lib/sqlUi/OracleUi.ts +++ b/packages/nocodb-sdk/src/lib/sqlUi/OracleUi.ts @@ -1,4 +1,4 @@ -import { NormalColumnRequestType } from '../Api' +import { NormalColumnRequestType } from '../Api'; import UITypes from '../UITypes'; import { IDType } from './index'; @@ -938,7 +938,7 @@ export class OracleUi { } static getUnsupportedFnList() { - return []; + return ['XOR', 'REGEX_MATCH', 'REGEX_EXTRACT', 'REGEX_REPLACE', 'VALUE']; } } diff --git a/packages/nocodb-sdk/src/lib/sqlUi/SnowflakeUi.ts b/packages/nocodb-sdk/src/lib/sqlUi/SnowflakeUi.ts index 66188161e9..e1bad9e137 100644 --- a/packages/nocodb-sdk/src/lib/sqlUi/SnowflakeUi.ts +++ b/packages/nocodb-sdk/src/lib/sqlUi/SnowflakeUi.ts @@ -374,7 +374,7 @@ export class SnowflakeUi { static columnEditable(colObj) { return colObj.tn !== '_evolutions' || colObj.tn !== 'nc_evolutions'; } -/* + /* static extractFunctionName(query) { const reg = @@ -972,7 +972,7 @@ export class SnowflakeUi { } static getUnsupportedFnList() { - return []; + return ['XOR', 'REGEX_MATCH', 'REGEX_EXTRACT', 'REGEX_REPLACE', 'VALUE']; } } diff --git a/packages/nocodb-sdk/src/lib/sqlUi/SqliteUi.ts b/packages/nocodb-sdk/src/lib/sqlUi/SqliteUi.ts index 1dba8c6b42..0e81c1b86a 100644 --- a/packages/nocodb-sdk/src/lib/sqlUi/SqliteUi.ts +++ b/packages/nocodb-sdk/src/lib/sqlUi/SqliteUi.ts @@ -868,6 +868,16 @@ export class SqliteUi { } static getUnsupportedFnList() { - return ['LOG', 'EXP', 'POWER', 'SQRT']; + return [ + 'LOG', + 'EXP', + 'POWER', + 'SQRT', + 'XOR', + 'REGEX_MATCH', + 'REGEX_EXTRACT', + 'REGEX_REPLACE', + 'VALUE', + ]; } } From 22a05c04034a13d731dfee3262f398b1524b8c1c Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:57 +0000 Subject: [PATCH 076/279] test: add playwright tests for formula --- .../src/db/functionMappings/commonFns.ts | 28 +++++++++ packages/nocodb/src/db/functionMappings/pg.ts | 30 --------- tests/playwright/.env.example | 2 +- .../tests/db/columns/columnFormula.spec.ts | 61 ++++++++++++++++++- 4 files changed, 88 insertions(+), 33 deletions(-) diff --git a/packages/nocodb/src/db/functionMappings/commonFns.ts b/packages/nocodb/src/db/functionMappings/commonFns.ts index abbbf2ea32..d7f9461216 100644 --- a/packages/nocodb/src/db/functionMappings/commonFns.ts +++ b/packages/nocodb/src/db/functionMappings/commonFns.ts @@ -191,4 +191,32 @@ export default { builder: knex.raw('? ${colAlias}', [pt.arguments.length]), }; }, + ROUNDDOWN: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { + const { builder: valueBuilder } = await fn(pt.arguments[0]); + let precisionBuilder = knex.raw('0'); + if (pt.arguments[1]) { + const { builder } = await fn(pt.arguments[1]); + precisionBuilder = builder; + } + + return { + builder: knex.raw( + `ROUND(FLOOR((${valueBuilder}) * POWER(10, ${precisionBuilder})) / POWER(10, ${precisionBuilder}))${colAlias}`, + ), + }; + }, + ROUNDUP: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { + const { builder: valueBuilder } = await fn(pt.arguments[0]); + let precisionBuilder = knex.raw('0'); + if (pt.arguments[1]) { + const { builder } = await fn(pt.arguments[1]); + precisionBuilder = builder; + } + + return { + builder: knex.raw( + `ROUND(CEIL((${valueBuilder}) * POWER(10, ${precisionBuilder})) / POWER(10, ${precisionBuilder}))${colAlias}`, + ), + }; + }, }; diff --git a/packages/nocodb/src/db/functionMappings/pg.ts b/packages/nocodb/src/db/functionMappings/pg.ts index 7fea4f8ca7..b09d11d150 100644 --- a/packages/nocodb/src/db/functionMappings/pg.ts +++ b/packages/nocodb/src/db/functionMappings/pg.ts @@ -253,36 +253,6 @@ const pg = { ), }; }, - - // todo: move to common and use existing functions - ROUNDDOWN: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { - const { builder: valueBuilder } = await fn(pt.arguments[0]); - let precisionBuilder = knex.raw('0'); - if (pt.arguments[1]) { - const { builder } = await fn(pt.arguments[1]); - precisionBuilder = builder; - } - - return { - builder: knex.raw( - `ROUND(FLOOR(${valueBuilder} * POWER(10, ${precisionBuilder})) / POWER(10, ${precisionBuilder}))${colAlias}`, - ), - }; - }, - ROUNDUP: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { - const { builder: valueBuilder } = await fn(pt.arguments[0]); - let precisionBuilder = knex.raw('0'); - if (pt.arguments[1]) { - const { builder } = await fn(pt.arguments[1]); - precisionBuilder = builder; - } - - return { - builder: knex.raw( - `ROUND(CEIL(${valueBuilder} * POWER(10, ${precisionBuilder})) / POWER(10, ${precisionBuilder}))${colAlias}`, - ), - }; - }, VALUE: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { const value = (await fn(pt.arguments[0])).builder.toString(); diff --git a/tests/playwright/.env.example b/tests/playwright/.env.example index 000afbdf0a..dfd48effef 100644 --- a/tests/playwright/.env.example +++ b/tests/playwright/.env.example @@ -1 +1 @@ -E2E_DEV_DB_TYPE=sqlite \ No newline at end of file +E2E_DEV_DB_TYPE=sqlite diff --git a/tests/playwright/tests/db/columns/columnFormula.spec.ts b/tests/playwright/tests/db/columns/columnFormula.spec.ts index 262ab24cd6..72a6b77f96 100644 --- a/tests/playwright/tests/db/columns/columnFormula.spec.ts +++ b/tests/playwright/tests/db/columns/columnFormula.spec.ts @@ -14,7 +14,7 @@ import { enableQuickRun, isPg, isSqlite } from '../../../setup/db'; * Adana 2006-02-15 04:45:25 663 Baha Blanca Parkway Turkey */ const formulaDataByDbType = (context: NcContext, index: number) => { - if (index === 0) + if (index === false) return [ { formula: '1 + 1', @@ -76,6 +76,63 @@ const formulaDataByDbType = (context: NcContext, index: number) => { formula: `DATETIME_DIFF("2023/01/12", "2023/10/14", "y")`, result: ['0', '0', '0', '0', '0'], }, + + { + formula: 'IF({CityId} == 1, "TRUE", BLANK())', + result: ['TRUE', '', '', '', ''], + }, + { + formula: 'EVEN({CityId})', + result: ['2', '2', '4', '4', '6'], + }, + { + formula: 'ODD({CityId})', + result: ['1', '3', '3', '5', '5'], + }, + { + formula: 'VALUE("12ab-c345")', + result: ['-12345', '-12345', '-12345', '-12345', '-12345'], + }, + { + formula: 'TRUE()', + result: ['1', '1', '1', '1', '1'], + }, + { + formula: 'FALSE()', + result: ['0', '0', '0', '0', '0'], + }, + { + formula: 'REGEX_MATCH({City}, "a[a-z]a")', + result: ['false', 'false', 'false', 'false', 'true'], + }, + { + formula: 'REGEX_EXTRACT({City}, "a[a-z]a")', + result: ['', '', '', '', 'ana'], + }, + { + formula: 'REGEX_REPLACE({City}, "a[a-z]a","...")', + result: ['A Corua (La Corua)', 'Abha', 'Abu Dhabi', 'Acua', 'Ad...'], + }, + + { + formula: '"City Name: " & {City}', + result: [ + 'City Name: A Corua (La Corua)', + 'City Name: Abha', + 'City Name: Abu Dhabi', + 'City Name: Acua', + 'City Name: Adana', + ], + }, + + { + formula: 'ROUNDDOWN({CityId} + 2.49, 1)', + result: ['3', '4', '5', '6', '7'], + }, + { + formula: 'ROUNDUP({CityId} + 2.49, 1)', + result: ['4', '5', '6', '7', '8'], + }, ]; else return [ @@ -216,7 +273,7 @@ test.describe('Virtual Columns', () => { await dashboard.closeTab({ title: 'City' }); } - test('Formula - suite 0', async () => { + test.only('Formula - suite 0', async () => { await formulaTestSpec(0); }); test('Formula - suite 1', async () => { From 65d0ba23c1823fe38ce41ba66c4ca1abb5dc0f38 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:57 +0000 Subject: [PATCH 077/279] chore: remove only --- tests/playwright/tests/db/columns/columnFormula.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/playwright/tests/db/columns/columnFormula.spec.ts b/tests/playwright/tests/db/columns/columnFormula.spec.ts index 72a6b77f96..52405fa137 100644 --- a/tests/playwright/tests/db/columns/columnFormula.spec.ts +++ b/tests/playwright/tests/db/columns/columnFormula.spec.ts @@ -273,7 +273,7 @@ test.describe('Virtual Columns', () => { await dashboard.closeTab({ title: 'City' }); } - test.only('Formula - suite 0', async () => { + test('Formula - suite 0', async () => { await formulaTestSpec(0); }); test('Formula - suite 1', async () => { From 021b4d59306371b354b9b46a047385b9d9f24ad8 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:57 +0000 Subject: [PATCH 078/279] refactor: REGEX_MATCH - return 0/1 --- packages/nocodb/src/db/functionMappings/pg.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/nocodb/src/db/functionMappings/pg.ts b/packages/nocodb/src/db/functionMappings/pg.ts index b09d11d150..deecfae1fa 100644 --- a/packages/nocodb/src/db/functionMappings/pg.ts +++ b/packages/nocodb/src/db/functionMappings/pg.ts @@ -193,7 +193,9 @@ const pg = { const source = (await fn(pt.arguments[0])).builder; const pattern = (await fn(pt.arguments[1])).builder; return { - builder: knex.raw(`(${source}::TEXT ~ ${pattern}::TEXT) ${colAlias}`), + builder: knex.raw( + `CASE WHEN (${source}::TEXT ~ ${pattern}::TEXT) THEN 1 ELSE 0 END ${colAlias}`, + ), }; }, REGEX_EXTRACT: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { From 71ec783dd17c6405d46836779cd036c5c2608882 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:57 +0000 Subject: [PATCH 079/279] fix: add missing formula mapping and correction --- packages/nc-gui/utils/formulaUtils.ts | 22 ++++++++++++++++++- .../src/db/functionMappings/commonFns.ts | 6 ++--- .../tests/db/columns/columnFormula.spec.ts | 4 ++++ 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/packages/nc-gui/utils/formulaUtils.ts b/packages/nc-gui/utils/formulaUtils.ts index c216e47399..474887457c 100644 --- a/packages/nc-gui/utils/formulaUtils.ts +++ b/packages/nc-gui/utils/formulaUtils.ts @@ -552,7 +552,7 @@ const formulas: Record = { COUNTALL: { validation: { args: { - rqd: 0, + min: 1, }, }, description: '', @@ -593,6 +593,26 @@ const formulas: Record = { syntax: 'VALUE()', examples: ['VALUE()'], }, + CREATED_TIME: { + validation: { + args: { + rqd: 0, + }, + }, + description: '', + syntax: 'CREATED_TIME()', + examples: ['CREATED_TIME()'], + }, + LAST_MODIFIED_TIME: { + validation: { + args: { + rqd: 0, + }, + }, + description: '', + syntax: ' LAST_MODIFIED_TIME()', + examples: [' LAST_MODIFIED_TIME()'], + }, } const formulaList = Object.keys(formulas) diff --git a/packages/nocodb/src/db/functionMappings/commonFns.ts b/packages/nocodb/src/db/functionMappings/commonFns.ts index d7f9461216..2cff3cd6aa 100644 --- a/packages/nocodb/src/db/functionMappings/commonFns.ts +++ b/packages/nocodb/src/db/functionMappings/commonFns.ts @@ -151,7 +151,7 @@ export default { ), }; }, - CREATED_AT: async (args: MapFnArgs) => { + CREATED_TIME: async (args: MapFnArgs) => { const createdAtCol = args.model?.columns?.find( (col) => col.column_name === 'created_at', ); @@ -168,12 +168,12 @@ export default { ), }; }, - UPDATED_AT: async (args: MapFnArgs) => { + LAST_MODIFIED_TIME: async (args: MapFnArgs) => { const createdAtCol = args.model?.columns?.find( (col) => col.column_name === 'updated_at', ); if (!createdAtCol) { - NcError.badRequest('Created at field not found'); + NcError.badRequest('Updated at field not found'); } return { diff --git a/tests/playwright/tests/db/columns/columnFormula.spec.ts b/tests/playwright/tests/db/columns/columnFormula.spec.ts index 52405fa137..4f0bd577a4 100644 --- a/tests/playwright/tests/db/columns/columnFormula.spec.ts +++ b/tests/playwright/tests/db/columns/columnFormula.spec.ts @@ -133,6 +133,10 @@ const formulaDataByDbType = (context: NcContext, index: number) => { formula: 'ROUNDUP({CityId} + 2.49, 1)', result: ['4', '5', '6', '7', '8'], }, + { + formula: 'RECORD_ID()', + result: ['1', '2', '3', '4', '5'], + }, ]; else return [ From 9733c9ca88d89cd86e0fddc4bd34ac84d350a38a Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:58 +0000 Subject: [PATCH 080/279] fix: formula validation correction --- packages/nc-gui/components/smartsheet/column/FormulaOptions.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nc-gui/components/smartsheet/column/FormulaOptions.vue b/packages/nc-gui/components/smartsheet/column/FormulaOptions.vue index 606968c569..b02a5e0b91 100644 --- a/packages/nc-gui/components/smartsheet/column/FormulaOptions.vue +++ b/packages/nc-gui/components/smartsheet/column/FormulaOptions.vue @@ -434,7 +434,7 @@ function validateAgainstType(parsedTree: any, expectedType: string, func: any, t } if (col.uidt === UITypes.Formula) { - const foundType = getRootDataType(jsep((col as any).formula_raw)) + const foundType = getRootDataType(jsep(col.colOptions?.formula_raw)) if (foundType === 'N/A') { typeErrors.add(t('msg.formula.notSupportedToReferenceColumn', { columnName: col.title })) } else if (expectedType !== foundType) { From b346569a26b38c7270a705c625db13b22b1dabf7 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:58 +0000 Subject: [PATCH 081/279] fix: ROUNDUP precision issue --- packages/nocodb/src/db/functionMappings/commonFns.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/nocodb/src/db/functionMappings/commonFns.ts b/packages/nocodb/src/db/functionMappings/commonFns.ts index 2cff3cd6aa..a4f300aab3 100644 --- a/packages/nocodb/src/db/functionMappings/commonFns.ts +++ b/packages/nocodb/src/db/functionMappings/commonFns.ts @@ -201,7 +201,7 @@ export default { return { builder: knex.raw( - `ROUND(FLOOR((${valueBuilder}) * POWER(10, ${precisionBuilder})) / POWER(10, ${precisionBuilder}))${colAlias}`, + `ROUND((FLOOR((${valueBuilder}) * POWER(10, ${precisionBuilder})) / POWER(10, ${precisionBuilder})::numeric(30,${precisionBuilder})))${colAlias}`, ), }; }, @@ -215,7 +215,7 @@ export default { return { builder: knex.raw( - `ROUND(CEIL((${valueBuilder}) * POWER(10, ${precisionBuilder})) / POWER(10, ${precisionBuilder}))${colAlias}`, + `ROUND((CEIL((${valueBuilder}) * POWER(10, ${precisionBuilder})) / POWER(10, ${precisionBuilder}))::numeric(30,${precisionBuilder}))${colAlias}`, ), }; }, From 7f58ce3726dfec71537d8b80474a0f95a48a1574 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:58 +0000 Subject: [PATCH 082/279] fix: sanitise formula text before rendering --- packages/nc-gui/utils/urlUtils.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/nc-gui/utils/urlUtils.ts b/packages/nc-gui/utils/urlUtils.ts index 5fb19860d2..3e792c7a59 100644 --- a/packages/nc-gui/utils/urlUtils.ts +++ b/packages/nc-gui/utils/urlUtils.ts @@ -6,8 +6,15 @@ export const replaceUrlsWithLink = (text: string): boolean | string => { } const rawText = text.toString() + + // create a temporary element to sanitise the string + // by encoding any html code + const tempEl = document.createElement('div') + tempEl.textContent = rawText + const sanitisedText = tempEl.innerHTML + let found = false - const out = rawText.replace(/URI::\((.*?)\)/g, (_, url) => { + const out = sanitisedText.replace(/URI::\((.*?)\)/g, (_, url) => { found = true const a = document.createElement('a') a.textContent = url From 2d1837f200ec8b67c58784b264fde0ef1e4ba7f6 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:58 +0000 Subject: [PATCH 083/279] refactor: add formula description --- packages/nc-gui/utils/formulaUtils.ts | 54 ++++++++++--------- .../tests/db/columns/columnFormula.spec.ts | 2 +- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/packages/nc-gui/utils/formulaUtils.ts b/packages/nc-gui/utils/formulaUtils.ts index 474887457c..e6b03f78b3 100644 --- a/packages/nc-gui/utils/formulaUtils.ts +++ b/packages/nc-gui/utils/formulaUtils.ts @@ -448,7 +448,7 @@ const formulas: Record = { rqd: 2, }, }, - description: 'Returns whether the input text matches a regular expression.', + description: 'Returns 1 if the input text matches a regular expression or 0 if it does not.', syntax: 'REGEX_MATCH(string, regex)', examples: ['REGEX_MATCH({title}, "abc.*")'], }, @@ -460,7 +460,7 @@ const formulas: Record = { rqd: 2, }, }, - description: 'Returns the first substring that matches a regular expression.', + description: 'Returns the first match of a regular expression in a string.', syntax: 'REGEX_MATCH(string, regex)', examples: ['REGEX_EXTRACT({title}, "abc.*")'], }, @@ -471,7 +471,7 @@ const formulas: Record = { rqd: 3, }, }, - description: 'Substitutes all matching substrings with a replacement string value.', + description: 'Replaces all matches of a regular expression in a string with a replacement string', syntax: 'REGEX_MATCH(string, regex, replacement)', examples: ['REGEX_EXTRACT({title}, "abc.*", "abcd")'], }, @@ -482,7 +482,7 @@ const formulas: Record = { rqd: 0, }, }, - description: 'Returns a blank value.', + description: 'Returns a blank value(null)', syntax: 'BLANK()', examples: ['BLANK()'], }, @@ -493,7 +493,7 @@ const formulas: Record = { min: 1, }, }, - description: 'Returns true if an odd number of arguments are true.', + description: 'Returns true if an odd number of arguments are true, and false otherwise.', syntax: 'XOR(expression, [exp2, ...])', examples: ['XOR(TRUE(), FALSE(), TRUE())'], }, @@ -504,7 +504,7 @@ const formulas: Record = { rqd: 1, }, }, - description: 'Returns the smallest even integer that is greater than or equal to the specified value.', + description: 'Returns the nearest even integer that is greater than or equal to the specified value', syntax: 'EVEN(value)', examples: ['EVEN({column})'], }, @@ -515,7 +515,7 @@ const formulas: Record = { rqd: 1, }, }, - description: 'Rounds positive value up the the nearest odd number and negative value down to the nearest odd number.', + description: 'Returns the nearest odd integer that is greater than or equal to the specified value', syntax: 'ODD(value)', examples: ['ODD({column})'], }, @@ -525,7 +525,7 @@ const formulas: Record = { rqd: 0, }, }, - description: 'Returns ID of the current record.', + description: 'Returns the record id of the current record', syntax: 'RECORD_ID()', examples: ['RECORD_ID()'], }, @@ -535,9 +535,9 @@ const formulas: Record = { min: 1, }, }, - description: '', - syntax: 'COUNTA()', - examples: ['COUNTA()'], + description: 'Counts the number of non-empty arguments', + syntax: 'COUNTA(value1, [value2, ...])', + examples: ['COUNTA({field1}, {field2})'], }, COUNT: { validation: { @@ -545,9 +545,9 @@ const formulas: Record = { min: 1, }, }, - description: '', - syntax: 'COUNT()', - examples: ['COUNT()'], + description: 'Count the number of arguments that are numbers', + syntax: 'COUNT(value1, [value2, ...])', + examples: ['COUNT({field1}, {field2})'], }, COUNTALL: { validation: { @@ -555,9 +555,9 @@ const formulas: Record = { min: 1, }, }, - description: '', - syntax: 'COUNTALL()', - examples: ['COUNTALL()'], + description: 'Counts the number of arguments', + syntax: 'COUNTALL(value1, [value2, ...])', + examples: ['COUNTALL({field1}, {field2})'], }, ROUNDDOWN: { type: formulaTypes.NUMERIC, @@ -567,9 +567,10 @@ const formulas: Record = { max: 2, }, }, - description: '', - syntax: 'ROUNDDOWN()', - examples: ['ROUNDDOWN()'], + description: + 'Round down the value after the decimal point to the number of decimal places given by "precision"(default is 0)', + syntax: 'ROUNDDOWN(value, [precision])', + examples: ['ROUNDDOWN({field1})', 'ROUNDDOWN({field1}, 2)'], }, ROUNDUP: { type: formulaTypes.NUMERIC, @@ -579,9 +580,9 @@ const formulas: Record = { max: 2, }, }, - description: '', - syntax: 'ROUNDUP()', - examples: ['ROUNDUP()'], + description: 'Round up the value after the decimal point to the number of decimal places given by "precision"(default is 0)', + syntax: 'ROUNDUP(value, [precision])', + examples: ['ROUNDUP({field1})', 'ROUNDUP({field1}, 2)'], }, VALUE: { validation: { @@ -589,9 +590,10 @@ const formulas: Record = { rqd: 1, }, }, - description: '', - syntax: 'VALUE()', - examples: ['VALUE()'], + description: + 'Extract the numeric value from a string, if `%` or `-` is present, it will handle it accordingly and return the numeric value', + syntax: 'VALUE(value)', + examples: ['VALUE({field})', 'VALUE("abc10000%")', 'VALUE("$10000")'], }, CREATED_TIME: { validation: { diff --git a/tests/playwright/tests/db/columns/columnFormula.spec.ts b/tests/playwright/tests/db/columns/columnFormula.spec.ts index 4f0bd577a4..447c7154ae 100644 --- a/tests/playwright/tests/db/columns/columnFormula.spec.ts +++ b/tests/playwright/tests/db/columns/columnFormula.spec.ts @@ -103,7 +103,7 @@ const formulaDataByDbType = (context: NcContext, index: number) => { }, { formula: 'REGEX_MATCH({City}, "a[a-z]a")', - result: ['false', 'false', 'false', 'false', 'true'], + result: ['0', '0', '0', '0', '1'], }, { formula: 'REGEX_EXTRACT({City}, "a[a-z]a")', From 9a6825a43d9da1a92f123395baef7ba9180501cc Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:58 +0000 Subject: [PATCH 084/279] refactor: update docs and description --- packages/nc-gui/utils/formulaUtils.ts | 6 +++--- .../060.formula/015.operators.md | 8 +++++++- .../060.formula/020.numeric-functions.md | 20 +++++++++++++------ .../060.formula/030.string-functions.md | 4 ++++ 4 files changed, 28 insertions(+), 10 deletions(-) diff --git a/packages/nc-gui/utils/formulaUtils.ts b/packages/nc-gui/utils/formulaUtils.ts index e6b03f78b3..ea4039df1a 100644 --- a/packages/nc-gui/utils/formulaUtils.ts +++ b/packages/nc-gui/utils/formulaUtils.ts @@ -461,7 +461,7 @@ const formulas: Record = { }, }, description: 'Returns the first match of a regular expression in a string.', - syntax: 'REGEX_MATCH(string, regex)', + syntax: 'REGEX_EXTRACT(string, regex)', examples: ['REGEX_EXTRACT({title}, "abc.*")'], }, REGEX_REPLACE: { @@ -601,7 +601,7 @@ const formulas: Record = { rqd: 0, }, }, - description: '', + description: 'Returns the created time of the current record if it exists', syntax: 'CREATED_TIME()', examples: ['CREATED_TIME()'], }, @@ -611,7 +611,7 @@ const formulas: Record = { rqd: 0, }, }, - description: '', + description: 'Returns the last modified time of the current record if it exists', syntax: ' LAST_MODIFIED_TIME()', examples: [' LAST_MODIFIED_TIME()'], }, diff --git a/packages/noco-docs/docs/070.fields/040.field-types/060.formula/015.operators.md b/packages/noco-docs/docs/070.fields/040.field-types/060.formula/015.operators.md index e97b33e583..09e4e409ff 100644 --- a/packages/noco-docs/docs/070.fields/040.field-types/060.formula/015.operators.md +++ b/packages/noco-docs/docs/070.fields/040.field-types/060.formula/015.operators.md @@ -2,7 +2,7 @@ title: 'Numeric and Logical Operators' description: 'This article explains various numeric and logical operators that can be used in formula fields.' tags: ['Fields', 'Field types', 'Formula'] -keywords: ['Fields', 'Field types', 'Formula', 'Create formula field', 'Numeric operators', 'Logical operators'] +keywords: ['Fields', 'Field types', 'Formula', 'Create formula field', 'Numeric operators', 'Logical operators', 'String operators'] --- @@ -32,6 +32,12 @@ Example: `({field1} + ({field2} * {field3}) / (3 - {field4} ))` | `==` | `{field1} == {field2}` | Equal to | | `!=` | `{field1} != {field2}` | Not equal to | +### String operators + +| Operator | Sample | Description | +|----------|--------------------------|--------------------------| +| `&` | `{field1} & {field2}` | String concatenation | + ## Related Articles - [Numeric Functions](020.numeric-functions.md) diff --git a/packages/noco-docs/docs/070.fields/040.field-types/060.formula/020.numeric-functions.md b/packages/noco-docs/docs/070.fields/040.field-types/060.formula/020.numeric-functions.md index 6330989485..b4d49cad0f 100644 --- a/packages/noco-docs/docs/070.fields/040.field-types/060.formula/020.numeric-functions.md +++ b/packages/noco-docs/docs/070.fields/040.field-types/060.formula/020.numeric-functions.md @@ -18,12 +18,20 @@ keywords: ['Fields', 'Field types', 'Formula', 'Create formula field', 'Numeric | **FLOOR** | `FLOOR(value)` | `FLOOR({field})` | Rounded largest integer less than or equal to input parameter | | **INT** | `INT(value)` | `INT({field})` | Integer value of input parameter | | **LOG** | `LOG([base], value)` | `LOG(10, {field})` | Logarithm of input parameter to the base (default = e) specified | -| **MAX** | `MAX(value1,[value2,...])` | `MAX({field1}, {Field2}, {Field3})` | Maximum value amongst input parameters | -| **MIN** | `MIN(value1,[value2,...])` | `MIN({Field1}, {Field2}, {Field3})` | Minimum value amongst input parameters | -| **MOD** | `MOD(value1, value2)` | `MOD({Field}, 2)` | Remainder after integer division of input parameters | -| **POWER** | `POWER(base, exponent)` | `POWER({Field}, 3)` | `base` to the `exponent` power, as in `base ^ exponent` | -| **ROUND** | `ROUND(value, precision)` | `ROUND({Field}, 3)` | Round input `value` to decimal place specified by `precision` (Nearest integer if `precision` not provided) | -| **SQRT** | `SQRT(value)` | `SQRT({Field})` | Square root of the input parameter | +| **MAX** | `MAX(value1,[value2,...])` | `MAX({field1}, {field2}, {field3})` | Maximum value amongst input parameters | +| **MIN** | `MIN(value1,[value2,...])` | `MIN({field1}, {field2}, {field3})` | Minimum value amongst input parameters | +| **MOD** | `MOD(value1, value2)` | `MOD({field}, 2)` | Remainder after integer division of input parameters | +| **POWER** | `POWER(base, exponent)` | `POWER({field}, 3)` | `base` to the `exponent` power, as in `base ^ exponent` | +| **ROUND** | `ROUND(value, precision)` | `ROUND({field}, 3)` | Round input `value` to decimal place specified by `precision` (Nearest integer if `precision` not provided) | +| **SQRT** | `SQRT(value)` | `SQRT({field})` | Square root of the input parameter | +| **COUNT** | `COUNT(value1,[value2,...])`| `COUNT({field1},{field2},{field3})` | Count the number of arguments that are numbers | +| **COUNTA** | `COUNTA(value1,[value2,...])`| `COUNTA({field1},{field2},{field3})`| Counts the number of non-empty arguments | +| **COUNTALL** | `COUNTALL(value1,[value2,...])`|`COUNTALL({field1},{field2},{field3})`| Counts the number of arguments | +| **EVEN** | `EVEN(value)` | `EVEN({field})` | Returns the nearest even integer that is greater than or equal to the specified value | +| **ODD** | `ODD(value)` | `ODD({field})` | Returns the nearest odd integer that is greater than or equal to the specified value | +| **VALUE** | `VALUE(value)` | `VALUE({field})` | Extract the numeric value from a string, if `%` or `-` is present, it will handle it accordingly and return the numeric value| +| **ROUNDDOWN** | `ROUNDDOWN(value, [precision])` | `ROUNDDOWN({field}, 2)` | Round down the value after the decimal point to the number of decimal places given by "precision"(default is 0) | +| **ROUNDUP** | `ROUNDUP(value, [precision])` | `ROUNDUP({field}, 2)` | Round up the value after the decimal point to the number of decimal places given by "precision"(default is 0) | ## Related Articles diff --git a/packages/noco-docs/docs/070.fields/040.field-types/060.formula/030.string-functions.md b/packages/noco-docs/docs/070.fields/040.field-types/060.formula/030.string-functions.md index 8e4d7081a8..9b09898016 100644 --- a/packages/noco-docs/docs/070.fields/040.field-types/060.formula/030.string-functions.md +++ b/packages/noco-docs/docs/070.fields/040.field-types/060.formula/030.string-functions.md @@ -23,6 +23,10 @@ keywords: ['Fields', 'Field types', 'Formula', 'Create formula field', 'String f | **TRIM** | `TRIM(str)` | `TRIM({field})` | Remove trailing and leading whitespaces from input parameter | | **UPPER** | `UPPER(str)` | `UPPER({field})` | Upper case converted string of input parameter | | **URL** | `URL(str)` | `URL({field})` | Convert to a hyperlink if it is a valid URL | +| **REGEX_MATCH** | `REGEX_MATCH(str, pattern)` | `REGEX_MATCH({field}, 'a.*')` | Returns 1 if the input text matches a regular expression or 0 if it does not | +| **REGEX_EXTRACT** | `REGEX_EXTRACT(str, pattern)` | `REGEX_MATCH({field}, 'a.*')` | Returns the first match of a regular expression in a string | +| **REGEX_REPLACE** | `REGEX_REPLACE(str, pattern, replacer)` | `REGEX_MATCH({field}, 'a.*', '---')` | Replaces all matches of a regular expression in a string with a replacement string | + ## Related Articles From f27633d6a8fca6a7df8246d082edb5f024751ade Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:58 +0000 Subject: [PATCH 085/279] fix: pg XOR method correction --- .../src/db/functionMappings/commonFns.ts | 6 ++-- packages/nocodb/src/db/functionMappings/pg.ts | 33 ++++++++++++++++++- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/packages/nocodb/src/db/functionMappings/commonFns.ts b/packages/nocodb/src/db/functionMappings/commonFns.ts index a4f300aab3..de9217f7d2 100644 --- a/packages/nocodb/src/db/functionMappings/commonFns.ts +++ b/packages/nocodb/src/db/functionMappings/commonFns.ts @@ -124,7 +124,7 @@ export default { const query = (await args.fn(args.pt.arguments[0])).builder; return { builder: args.knex.raw( - `CASE WHEN ${query} % 2 = 0 THEN CEILING(${query})\nELSE CEILING(${query} / 2.0) * 2\n END${args.colAlias}`, + `CASE WHEN ${query} % 2 = 0 THEN CEIL(${query})\nELSE CEIL(${query} / 2.0) * 2\n END${args.colAlias}`, ), }; }, @@ -201,7 +201,7 @@ export default { return { builder: knex.raw( - `ROUND((FLOOR((${valueBuilder}) * POWER(10, ${precisionBuilder})) / POWER(10, ${precisionBuilder})::numeric(30,${precisionBuilder})))${colAlias}`, + `ROUND(FLOOR((${valueBuilder}) * POWER(10, ${precisionBuilder})) / POWER(10, ${precisionBuilder})))${colAlias}`, ), }; }, @@ -215,7 +215,7 @@ export default { return { builder: knex.raw( - `ROUND((CEIL((${valueBuilder}) * POWER(10, ${precisionBuilder})) / POWER(10, ${precisionBuilder}))::numeric(30,${precisionBuilder}))${colAlias}`, + `ROUND(CEIL((${valueBuilder}) * POWER(10, ${precisionBuilder})) / POWER(10, ${precisionBuilder}))${colAlias}`, ), }; }, diff --git a/packages/nocodb/src/db/functionMappings/pg.ts b/packages/nocodb/src/db/functionMappings/pg.ts index deecfae1fa..a26180ab34 100644 --- a/packages/nocodb/src/db/functionMappings/pg.ts +++ b/packages/nocodb/src/db/functionMappings/pg.ts @@ -221,7 +221,10 @@ const pg = { }, XOR: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { const args = await Promise.all( - pt.arguments.map(async (arg) => `${(await fn(arg)).builder}`), + pt.arguments.map(async (arg) => { + const query = (await fn(arg)).builder.toString(); + return `CASE WHEN ${query} IS NOT NULL AND ${query}::boolean = true THEN 1 ELSE 0 END`; + }), ); return { builder: knex.raw(`${args.join(' # ')} ${colAlias}`), @@ -268,6 +271,34 @@ END) ${colAlias}`, ), }; }, + ROUNDDOWN: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { + const { builder: valueBuilder } = await fn(pt.arguments[0]); + let precisionBuilder = knex.raw('0'); + if (pt.arguments[1]) { + const { builder } = await fn(pt.arguments[1]); + precisionBuilder = builder; + } + + return { + builder: knex.raw( + `ROUND((FLOOR((${valueBuilder}) * POWER(10, ${precisionBuilder})) / POWER(10, ${precisionBuilder})::numeric(30,${precisionBuilder})))${colAlias}`, + ), + }; + }, + ROUNDUP: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { + const { builder: valueBuilder } = await fn(pt.arguments[0]); + let precisionBuilder = knex.raw('0'); + if (pt.arguments[1]) { + const { builder } = await fn(pt.arguments[1]); + precisionBuilder = builder; + } + + return { + builder: knex.raw( + `ROUND((CEIL((${valueBuilder}) * POWER(10, ${precisionBuilder})) / POWER(10, ${precisionBuilder}))::numeric(30,${precisionBuilder}))${colAlias}`, + ), + }; + }, }; export default pg; From 74823830e9455fe66b0ba7758593eaaedf9d8d47 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:58 +0000 Subject: [PATCH 086/279] refactor: exclude unsupported functions --- packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts | 12 +++++++++++- packages/nocodb-sdk/src/lib/sqlUi/MysqlUi.ts | 2 +- packages/nocodb-sdk/src/lib/sqlUi/OracleUi.ts | 14 ++++++++++++-- packages/nocodb-sdk/src/lib/sqlUi/SnowflakeUi.ts | 10 +++++++++- packages/nocodb-sdk/src/lib/sqlUi/SqliteUi.ts | 5 +++++ 5 files changed, 38 insertions(+), 5 deletions(-) diff --git a/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts b/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts index e6199ecf31..630805770c 100644 --- a/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts +++ b/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts @@ -909,6 +909,16 @@ export class MssqlUi { } static getUnsupportedFnList() { - return ['XOR', 'REGEX_MATCH', 'REGEX_EXTRACT', 'REGEX_REPLACE', 'VALUE']; + return [ + 'XOR', + 'REGEX_MATCH', + 'REGEX_EXTRACT', + 'REGEX_REPLACE', + 'VALUE', + 'COUNTA', + 'COUNT', + 'ROUNDDOWN', + 'ROUNDUP', + ]; } } diff --git a/packages/nocodb-sdk/src/lib/sqlUi/MysqlUi.ts b/packages/nocodb-sdk/src/lib/sqlUi/MysqlUi.ts index 7e5bc77d17..d8ac043d45 100644 --- a/packages/nocodb-sdk/src/lib/sqlUi/MysqlUi.ts +++ b/packages/nocodb-sdk/src/lib/sqlUi/MysqlUi.ts @@ -1289,6 +1289,6 @@ export class MysqlUi { } static getUnsupportedFnList() { - return []; + return ['COUNTA', 'COUNT']; } } diff --git a/packages/nocodb-sdk/src/lib/sqlUi/OracleUi.ts b/packages/nocodb-sdk/src/lib/sqlUi/OracleUi.ts index 533fe8208b..fb4ee5ac1a 100644 --- a/packages/nocodb-sdk/src/lib/sqlUi/OracleUi.ts +++ b/packages/nocodb-sdk/src/lib/sqlUi/OracleUi.ts @@ -183,8 +183,8 @@ export class OracleUi { // return ''; // break; // case "longtext": - // return '' // break; + // return '' // case "binary": // return 255; // break; @@ -938,7 +938,17 @@ export class OracleUi { } static getUnsupportedFnList() { - return ['XOR', 'REGEX_MATCH', 'REGEX_EXTRACT', 'REGEX_REPLACE', 'VALUE']; + return [ + 'XOR', + 'REGEX_MATCH', + 'REGEX_EXTRACT', + 'REGEX_REPLACE', + 'VALUE', + 'COUNTA', + 'COUNT', + 'ROUNDDOWN', + 'ROUNDUP', + ]; } } diff --git a/packages/nocodb-sdk/src/lib/sqlUi/SnowflakeUi.ts b/packages/nocodb-sdk/src/lib/sqlUi/SnowflakeUi.ts index e1bad9e137..676a912274 100644 --- a/packages/nocodb-sdk/src/lib/sqlUi/SnowflakeUi.ts +++ b/packages/nocodb-sdk/src/lib/sqlUi/SnowflakeUi.ts @@ -972,7 +972,15 @@ export class SnowflakeUi { } static getUnsupportedFnList() { - return ['XOR', 'REGEX_MATCH', 'REGEX_EXTRACT', 'REGEX_REPLACE', 'VALUE']; + return [ + 'XOR', + 'REGEX_MATCH', + 'REGEX_EXTRACT', + 'REGEX_REPLACE', + 'VALUE', + 'COUNTA', + 'COUNT', + ]; } } diff --git a/packages/nocodb-sdk/src/lib/sqlUi/SqliteUi.ts b/packages/nocodb-sdk/src/lib/sqlUi/SqliteUi.ts index 0e81c1b86a..bb616eee5d 100644 --- a/packages/nocodb-sdk/src/lib/sqlUi/SqliteUi.ts +++ b/packages/nocodb-sdk/src/lib/sqlUi/SqliteUi.ts @@ -878,6 +878,11 @@ export class SqliteUi { 'REGEX_EXTRACT', 'REGEX_REPLACE', 'VALUE', + 'COUNTA', + 'COUNT', + 'ROUNDDOWN', + 'ROUNDUP', + ]; } } From 982ceb50b25c5a544e4608399616d1db45b262a3 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:58 +0000 Subject: [PATCH 087/279] refactor: corrections --- packages/nocodb-sdk/src/lib/formulaHelpers.ts | 2 ++ tests/playwright/tests/db/columns/columnFormula.spec.ts | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/nocodb-sdk/src/lib/formulaHelpers.ts b/packages/nocodb-sdk/src/lib/formulaHelpers.ts index ccd74179cf..5a28417d84 100644 --- a/packages/nocodb-sdk/src/lib/formulaHelpers.ts +++ b/packages/nocodb-sdk/src/lib/formulaHelpers.ts @@ -108,6 +108,8 @@ export function substituteColumnIdWithAliasInFormula( return jsepTreeToFormula(parsedFormula); } +// isCallExpId - is the identifier part of a call expression +// in case of call expression, we don't want to wrap the identifier in curly brackets export function jsepTreeToFormula(node, isCallExpId = false) { if (node.type === 'BinaryExpression' || node.type === 'LogicalExpression') { return ( diff --git a/tests/playwright/tests/db/columns/columnFormula.spec.ts b/tests/playwright/tests/db/columns/columnFormula.spec.ts index 447c7154ae..6e3105b39a 100644 --- a/tests/playwright/tests/db/columns/columnFormula.spec.ts +++ b/tests/playwright/tests/db/columns/columnFormula.spec.ts @@ -14,7 +14,7 @@ import { enableQuickRun, isPg, isSqlite } from '../../../setup/db'; * Adana 2006-02-15 04:45:25 663 Baha Blanca Parkway Turkey */ const formulaDataByDbType = (context: NcContext, index: number) => { - if (index === false) + if (index === 0) return [ { formula: '1 + 1', From 3d060381d18cc1a561f70e823b2c4da3982e24bd Mon Sep 17 00:00:00 2001 From: Raju Udava <86527202+dstala@users.noreply.github.com> Date: Wed, 22 Nov 2023 07:17:58 +0000 Subject: [PATCH 088/279] formula: remove LAST CREATED & UPDATED formula --- packages/nc-gui/utils/formulaUtils.ts | 43 ++++++++++++++------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/packages/nc-gui/utils/formulaUtils.ts b/packages/nc-gui/utils/formulaUtils.ts index ea4039df1a..8449d27da7 100644 --- a/packages/nc-gui/utils/formulaUtils.ts +++ b/packages/nc-gui/utils/formulaUtils.ts @@ -595,26 +595,29 @@ const formulas: Record = { syntax: 'VALUE(value)', examples: ['VALUE({field})', 'VALUE("abc10000%")', 'VALUE("$10000")'], }, - CREATED_TIME: { - validation: { - args: { - rqd: 0, - }, - }, - description: 'Returns the created time of the current record if it exists', - syntax: 'CREATED_TIME()', - examples: ['CREATED_TIME()'], - }, - LAST_MODIFIED_TIME: { - validation: { - args: { - rqd: 0, - }, - }, - description: 'Returns the last modified time of the current record if it exists', - syntax: ' LAST_MODIFIED_TIME()', - examples: [' LAST_MODIFIED_TIME()'], - }, + // Disabling these functions for now; these act as alias for CreatedAt & UpdatedAt fields; + // Issue: Error noticed if CreatedAt & UpdatedAt fields are removed from the table after creating these formulas + // + // CREATED_TIME: { + // validation: { + // args: { + // rqd: 0, + // }, + // }, + // description: 'Returns the created time of the current record if it exists', + // syntax: 'CREATED_TIME()', + // examples: ['CREATED_TIME()'], + // }, + // LAST_MODIFIED_TIME: { + // validation: { + // args: { + // rqd: 0, + // }, + // }, + // description: 'Returns the last modified time of the current record if it exists', + // syntax: ' LAST_MODIFIED_TIME()', + // examples: [' LAST_MODIFIED_TIME()'], + // }, } const formulaList = Object.keys(formulas) From c524b653eba1f36b0d5527578342356c678f3859 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:59 +0000 Subject: [PATCH 089/279] fix: Rounddown bug --- packages/nocodb/src/db/functionMappings/commonFns.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nocodb/src/db/functionMappings/commonFns.ts b/packages/nocodb/src/db/functionMappings/commonFns.ts index de9217f7d2..36d6389501 100644 --- a/packages/nocodb/src/db/functionMappings/commonFns.ts +++ b/packages/nocodb/src/db/functionMappings/commonFns.ts @@ -201,7 +201,7 @@ export default { return { builder: knex.raw( - `ROUND(FLOOR((${valueBuilder}) * POWER(10, ${precisionBuilder})) / POWER(10, ${precisionBuilder})))${colAlias}`, + `ROUND(FLOOR((${valueBuilder}) * POWER(10, ${precisionBuilder})) / POWER(10, ${precisionBuilder}))${colAlias}`, ), }; }, From 145d809171f44823f65efba1eba26074d486ecfa Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:59 +0000 Subject: [PATCH 090/279] fix: countall --- packages/nocodb/src/db/functionMappings/commonFns.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nocodb/src/db/functionMappings/commonFns.ts b/packages/nocodb/src/db/functionMappings/commonFns.ts index 36d6389501..9af91bcffb 100644 --- a/packages/nocodb/src/db/functionMappings/commonFns.ts +++ b/packages/nocodb/src/db/functionMappings/commonFns.ts @@ -188,7 +188,7 @@ export default { // todo: verify the behaviour of this function COUNTALL: async ({ knex, pt }: MapFnArgs) => { return { - builder: knex.raw('? ${colAlias}', [pt.arguments.length]), + builder: knex.raw(`? ${colAlias}`, [pt.arguments.length]), }; }, ROUNDDOWN: async ({ fn, knex, pt, colAlias }: MapFnArgs) => { From 6e617cec388744c7d7929f66c54fa066f3525f88 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 22 Nov 2023 07:17:59 +0000 Subject: [PATCH 091/279] fix: add missing arg --- packages/nocodb/src/db/functionMappings/commonFns.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nocodb/src/db/functionMappings/commonFns.ts b/packages/nocodb/src/db/functionMappings/commonFns.ts index 9af91bcffb..547f65796e 100644 --- a/packages/nocodb/src/db/functionMappings/commonFns.ts +++ b/packages/nocodb/src/db/functionMappings/commonFns.ts @@ -186,7 +186,7 @@ export default { }; }, // todo: verify the behaviour of this function - COUNTALL: async ({ knex, pt }: MapFnArgs) => { + COUNTALL: async ({ knex, pt, colAlias }: MapFnArgs) => { return { builder: knex.raw(`? ${colAlias}`, [pt.arguments.length]), }; From 7695c23a4dddebf1a4fad9b003c8df209205433e Mon Sep 17 00:00:00 2001 From: Muhammed Mustafa Date: Wed, 22 Nov 2023 07:54:25 +0000 Subject: [PATCH 092/279] fix: Fixed issue with formula not getting updated in expanded form on changes in record via expanded form --- packages/nc-gui/components/smartsheet/expanded-form/index.vue | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/nc-gui/components/smartsheet/expanded-form/index.vue b/packages/nc-gui/components/smartsheet/expanded-form/index.vue index 1996160598..0d871effbf 100644 --- a/packages/nc-gui/components/smartsheet/expanded-form/index.vue +++ b/packages/nc-gui/components/smartsheet/expanded-form/index.vue @@ -200,6 +200,8 @@ const save = async () => { await _save(undefined, undefined, { kanbanClbk, }) + + _loadRow() reloadTrigger?.trigger() } isUnsavedFormExist.value = false From 545ff4a5d23213ea9ef85d7093e61d80d3940913 Mon Sep 17 00:00:00 2001 From: mertmit Date: Wed, 22 Nov 2023 11:13:32 +0300 Subject: [PATCH 093/279] fix: use json as default content type for webhooks Signed-off-by: mertmit --- packages/nocodb/src/helpers/webhookHelpers.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/nocodb/src/helpers/webhookHelpers.ts b/packages/nocodb/src/helpers/webhookHelpers.ts index ad437476aa..44118a8729 100644 --- a/packages/nocodb/src/helpers/webhookHelpers.ts +++ b/packages/nocodb/src/helpers/webhookHelpers.ts @@ -182,6 +182,18 @@ export async function handleHttpWebHook( prevData, newData, ): Promise { + const contentType = apiMeta.headers?.find( + (header) => header.name?.toLowerCase() === 'content-type' && header.enabled, + ); + + if (!contentType) { + apiMeta.headers.push({ + name: 'Content-Type', + enabled: true, + value: 'application/json', + }); + } + const req = axiosRequestMake( apiMeta, user, From 6c6a62133dd212989126a5fd8bee120c0769d57b Mon Sep 17 00:00:00 2001 From: navi Date: Wed, 22 Nov 2023 09:46:30 +0000 Subject: [PATCH 094/279] New translations en.json (Korean) --- packages/nc-gui/lang/ko.json | 546 +++++++++++++++++------------------ 1 file changed, 273 insertions(+), 273 deletions(-) diff --git a/packages/nc-gui/lang/ko.json b/packages/nc-gui/lang/ko.json index e252bb7388..2e0192bad4 100644 --- a/packages/nc-gui/lang/ko.json +++ b/packages/nc-gui/lang/ko.json @@ -1,12 +1,12 @@ { "dashboards": { - "create_new_dashboard_project": "새 인터페이스 만들기", + "create_new_dashboard_project": "새 대시보드 프로젝트 만들기", "connect_data_sources": "데이터소스 연결", "alert": "알림", - "alert-message": "연결된 데이터베이스가 없습니다. 데이터베이스 베이스를 연결하여 인터페이스를 만듭니다. 이 단계를 건너뛰고 나중에 베이스 홈 페이지에서 데이터베이스를 추가합니다.", - "select_database_projects_that_you_want_to_link_to_this_dashboard_projects": "이 인터페이스에 연결할 데이터베이스를 선택합니다.", + "alert-message": "이 대시보드는 데이터베이스에 연결되어 있지 않습니다. 데이터베이스에 연결하려면 대시보드 프로젝트를 편집하십시오.", + "select_database_projects_that_you_want_to_link_to_this_dashboard_projects": "이 대시보드 프로젝트에 연결할 데이터베이스 프로젝트를 선택하십시오.", "create_interface": "새 인터페이스 만들기", - "project_name": "기본 이름", + "project_name": "프로젝트 이름", "connect": "연결", "buttonActionTypes": { "open_external_url": "외부 링크로 이동", @@ -24,13 +24,13 @@ "number": "숫자", "bar_chart": "막대 차트", "line_chart": "꺽은선형 차트", - "area_chart": "면적도", + "area_chart": "영역 차트", "pie_chart": "파이 차트", "donut_chart": "도넛 차트", "scatter_plot": "분포도", "bubble_chart": "버블 차트", - "radar_chart": "막대 차트", - "polar_area_chart": "극지방 차트", + "radar_chart": "레이더 차트", + "polar_area_chart": "극좌표 차트", "radial_bar_chart": "방사형 막대 차트", "heatmap_chart": "히트맵 차트", "treemap_chart": "트리맵 차트", @@ -77,35 +77,35 @@ "whatsappTwilio": "WhatsApp Twilio", "submit": "제출", "create": "생성", - "createEntity": "Create {entity}", - "creating": "Creating", - "creatingEntity": "Creating {entity}", - "details": "Details", - "skip": "Skip", + "createEntity": "{entity} 생성", + "creating": "생성 중", + "creatingEntity": "{entity} 생성 중", + "details": "세부사항", + "skip": "건너뛰기", "duplicate": "복사", - "duplicating": "Duplicating", - "activate": "Activate", - "action": "Action", + "duplicating": "복사 중", + "activate": "활성화", + "action": "동작", "insert": "삽입", "delete": "삭제", - "deleteEntity": "Delete {entity}", - "bulkInsert": "Bulk Insert", - "bulkDelete": "Bulk Delete", - "bulkUpdate": "Bulk Update", - "deleting": "Deleting", + "deleteEntity": "{entity} 삭제", + "bulkInsert": "대량 삽입", + "bulkDelete": "대량 삭제", + "bulkUpdate": "대량 업데이트", + "deleting": "삭제 중", "update": "업데이트", "rename": "이름 바꾸기", "reload": "다시 불러오기", "reset": "초기화", "install": "설치", - "show": "표시", - "access": "Access", - "visibility": "Visibility", + "show": "보기", + "access": "접근", + "visibility": "가시성", "hide": "숨기기", - "deprecated": "Deprecated", + "deprecated": "더 이상 사용되지 않음", "showAll": "모두 표시", "hideAll": "모두 숨기기", - "notFound": "Not found", + "notFound": "찾을 수 없음", "showMore": "자세히 보기", "showOptions": "옵션 표시", "hideOptions": "옵션 숨기기", @@ -116,8 +116,8 @@ "signUp": "가입하기", "signIn": "로그인", "signOut": "로그아웃", - "required": "필수의", - "enableScanner": "Enable Scanner for filling", + "required": "필수", + "enableScanner": "스캐너 사용", "preferred": "우선의", "mandatory": "필수적인", "loading": "불러오는 중 ...", @@ -134,9 +134,9 @@ "after": "후에", "before": "전에", "search": "검색", - "searchIn": "Search In", + "searchIn": "검색", "notification": "알림", - "reference": "참조", + "reference": "출처", "function": "기능", "confirm": "확인", "generate": "생성", @@ -158,31 +158,31 @@ "hideField": "필드 숨기기", "sortAsc": "오름차순 정렬", "sortDesc": "내림차순 정렬", - "move": "Move", + "move": "이동", "geoDataField": "GeoData 필드", - "type": "Type", - "name": "Name", - "changes": "Changes", - "new": "New", - "old": "Old", - "data": "Data", - "source": "Source", - "destination": "Destination", - "active": "Active", - "inactive": "Inactive", - "linked": "linked", - "finish": "Finish", - "min": "Min", - "max": "Max", - "avg": "Avg", - "sum": "Sum", - "count": "Count", - "countDistinct": "Count Distinct", - "sumDistinct": "Sum Distinct", - "avgDistinct": "Avg Distinct", - "join": "Join", - "options": "Options", - "primaryValue": "Primary Value", + "type": "타입", + "name": "이름", + "changes": "변경", + "new": "새로운", + "old": "이전", + "data": "데이터", + "source": "소스", + "destination": "대상", + "active": "활성화", + "inactive": "비활성화", + "linked": "연결됨", + "finish": "완료", + "min": "최소", + "max": "최대", + "avg": "평균", + "sum": "합계", + "count": "수량", + "countDistinct": "중복을 제외한 수량", + "sumDistinct": "중복을 제외한 합계", + "avgDistinct": "중복을 제외한 평균", + "join": "참여", + "options": "옵션", + "primaryValue": "기본 값", "useSurveyMode": "설문 조사 모드 사용", "shift": "Shift", "enter": "Enter", @@ -251,7 +251,7 @@ "Checkbox": "체크 박스", "MultiSelect": "다중 선택", "SingleSelect": "단일 선택", - "Collaborator": "협력자", + "Collaborator": "협업자", "Date": "날짜", "Year": "년도", "Time": "시간", @@ -329,24 +329,24 @@ "renameTable": "테이블 이름 변경", "renamingTable": "테이블 이름 바꾸기", "renamingWs": "작업 공간 이름 바꾸기", - "renameWs": "Rename Workspace", - "deleteWs": "Delete Workspace", - "deletingWs": "Deleting Workspace", - "copyAuthToken": "Copy Auth Token", - "copiedAuthToken": "Copied Auth Token", - "copyInviteToken": "Copy Invite Token", - "showSidebar": "Show Sidebar", - "hideSidebar": "Hide Sidebar", - "creatingTable": "Creating Table", + "renameWs": "작업 공간 이름 변경", + "deleteWs": "작업 공간 삭제", + "deletingWs": "작업 공간 삭제 중", + "copyAuthToken": "인증 토큰 복사", + "copiedAuthToken": "인증 토큰이 복사되었습니다.", + "copyInviteToken": "초대 토큰 복사", + "showSidebar": "사이드바 표시", + "hideSidebar": "사이드바 숨김", + "creatingTable": "테이블 생성 중", "erdView": "ERD View", "newBase": "New Data Source", "newProj": "새 프로젝트", - "createBase": "Create Base", + "createBase": "데이터 소스 생성", "myProject": "내 프로젝트", "formTitle": "양식 제목", - "collaborative": "Collaborative", - "locked": "Locked", - "personal": "Personal", + "collaborative": "협업", + "locked": "잠김", + "personal": "개인", "appStore": "앱 스토어", "teamAndAuth": "팀 및 인증", "rolesUserMgmt": "역할 및 사용자 관리", @@ -374,66 +374,66 @@ "generateToken": "Token 생성", "APIsAndSupport": "API 및 지원", "helpCenter": "도움말 센터", - "noLabels": "No Labels", + "noLabels": "라벨 없음", "swaggerDocumentation": "Swagger 문서", - "quickImportFrom": "Quick Import From", + "quickImportFrom": "빠른 가져오기", "quickImport": "빠른 가져오기", - "quickImportAirtable": "Quick Import - Airtable", - "quickImportCSV": "Quick Import - CSV", - "quickImportExcel": "Quick Import - Excel", - "quickImportJSON": "Quick Import - JSON", + "quickImportAirtable": "빠른 가져오기 - Airtable", + "quickImportCSV": "빠른 가져오기 - CSV", + "quickImportExcel": "빠른 가져오기 - Excel", + "quickImportJSON": "빠른 가져오기 - JSON", "jsonEditor": "JSON Editor", - "comingSoon": "Coming Soon", + "comingSoon": "곧 출시 예정", "advancedSettings": "고급 설정", "codeSnippet": "코드 스니펫", "keyboardShortcut": "키보드 단축키", "generateRandomName": "랜덤 이름 생성", "findRowByScanningCode": "QR 또는 바코드를 스캔하여 행 찾기", - "tokenManagement": "Token Management", - "addNewToken": "Add new token", - "accountSettings": "Account Settings", - "resetPasswordMenu": "Reset Password", - "tokens": "Tokens", - "userManagement": "User Management", - "accountManagement": "Account management", - "licence": "Licence", - "allowAllMimeTypes": "Allow All Mime Types", - "defaultView": "Default View", - "relations": "Relations", - "switchLanguage": "Switch Language", - "renameFile": "Rename File", + "tokenManagement": "토큰 관리", + "addNewToken": "새 토큰 추가", + "accountSettings": "계정 설정", + "resetPasswordMenu": "비밀번호 재설정", + "tokens": "토큰", + "userManagement": "사용자 관리", + "accountManagement": "계정 관리", + "licence": "라이센스", + "allowAllMimeTypes": "모든 MIME 유형 허용", + "defaultView": "기본 뷰", + "relations": "관계", + "switchLanguage": "언어 변경", + "renameFile": "파일 이름 변경", "links": { - "noAction": "No Action", - "cascade": "Cascade", - "restrict": "Restrict", - "setNull": "Set NULL", - "setDefault": "Set Default" + "noAction": "없음", + "cascade": "캐스케이드", + "restrict": "제한", + "setNull": "null 설정", + "setDefault": "기본값 설정" } }, "labels": { - "downloadData": "Download Data", - "noToken": "No Token", - "tokenLimit": "Only one token per user is allowed", - "duplicateAttachment": "File with name {filename} already attached", + "downloadData": "데이터 다운로드", + "noToken": "토큰 없음", + "tokenLimit": "사용자당 하나의 토큰만 허용됩니다", + "duplicateAttachment": "이름이 {filename}인 파일이 이미 연결됨", "viewIdColon": "VIEW ID: {viewId}", - "toAddress": "To Address", - "subject": "Subject", - "body": "Body", - "commaSeparatedMobileNumber": "Comma separated Mobile #", - "headerName": "Header Name", + "toAddress": "받는 사람", + "subject": "제목", + "body": "내용", + "commaSeparatedMobileNumber": "쉼표로 구분된 휴대폰 번호", + "headerName": "헤더 이름", "icon": "아이콘", "max": "최대", - "idColon": "Id:", + "idColon": "ID:", "copiedRecordURL": "레코드 URL을 복사했습니다.", "copyRecordURL": "레코드 URL 복사", "duplicateRecord": "행 복제", "binaryEncodingFormat": "바이너리 인코딩 형식", - "syntax": "Syntax", + "syntax": "구문", "examples": "예제", "durationInfo": "분 또는 초 단위의 시간(예: 1:23)", "addHeader": "헤더 추가", "enterDefaultUrlOptional": "기본 URL 입력(선택 사항)", - "negative": "Negative", + "negative": "음수", "discard": "취소", "default": "기본값", "defaultNumberPercent": "기본 값(%)", @@ -475,16 +475,16 @@ "tableName": "테이블 이름", "dashboardName": "대시보드 이름", "createView": "뷰 생성", - "creatingView": "Creating View", - "duplicateView": "Duplicate View", - "duplicateGridView": "Duplicate Grid View", - "createGridView": "Create Grid View", - "duplicateGalleryView": "Duplicate Gallery View", - "createGalleryView": "Create Gallery View", - "duplicateFormView": "Duplicate Form View", - "createFormView": "Create Form View", - "duplicateKanbanView": "Duplicate Kanban View", - "createKanbanView": "Create Kanban View", + "creatingView": "뷰 생성 중", + "duplicateView": "뷰 복제", + "duplicateGridView": "그리드 뷰 복제", + "createGridView": "그리드 뷰 생성", + "duplicateGalleryView": "갤러리 뷰 복제", + "createGalleryView": "갤러리 뷰 생성", + "duplicateFormView": "폼 뷰 복제", + "createFormView": "폼 뷰 생성", + "duplicateKanbanView": "칸반 뷰 복제", + "createKanbanView": "칸반 뷰 생성", "viewName": "이름 보기", "viewLink": "링크 보기", "columnName": "열 이름", @@ -514,7 +514,7 @@ "where": "위치", "cache": "캐시", "chat": "채팅", - "showOrHide": "Show or Hide", + "showOrHide": "표시/숨기기", "airtable": "Airtable", "csv": "CSV", "csvFile": "CSV File", @@ -530,7 +530,7 @@ "created": "생성", "sqlOutput": "SQL 출력", "addOption": "옵션 추가", - "interfaceColor": "Interface Color", + "interfaceColor": "인터페이스 색상", "qrCodeValueColumn": "QR코드 값", "barcodeValueColumn": "바코드 값", "barcodeFormat": "바코드 형식", @@ -566,9 +566,9 @@ "selectUserRole": "사용자 역할을 선택하세요", "childTable": "자식 테이블", "childColumn": "자식 컬럼", - "childField": "Child field", + "childField": "자식 필드", "linkToAnotherRecord": "다른 레코드에 링크", - "links": "Links", + "links": "링크", "onUpdate": "업데이트 시 ", "onDelete": "삭제 시", "account": "계정", @@ -578,22 +578,22 @@ "customTheme": "사용자 정의 테마", "requestDataSource": "필요한 데이터 소스를 요청하시겠습니까?", "apiKey": "API 키", - "personalAccessToken": "Personal Access Token", - "sharedBaseUrl": "Shared Base URL", + "personalAccessToken": "개인 액세스 토큰", + "sharedBaseUrl": "Base URL 공유", "importData": "데이터 가져오기", "importSecondaryViews": "보조 뷰 가져오기", "importRollupColumns": "롤업 열 가져오기", "importLookupColumns": "조회 열 가져오기", "importAttachmentColumns": "첨부 열 가져오기", "importFormulaColumns": "포뮬러 열 가져오기", - "importUsers": "Import Users (by email)", + "importUsers": "사용자 가져오기(이메일로)", "noData": "데이터 없음", "goToDashboard": "대시보드로 이동", "importing": "가져오는 중", - "formatJson": "Format JSON", - "autoSelectFieldTypes": "Auto-Select Field Types", - "firstRowAsHeaders": "Use First Record as Headers", - "flattenNested": "중첩 테이블 평탄화", + "formatJson": "JSON 형식", + "autoSelectFieldTypes": "자동 선택 필드 유형", + "firstRowAsHeaders": "첫 번째 행을 헤더로 사용", + "flattenNested": "중첩 표준화", "downloadAllowed": "다운로드 허용", "weAreHiring": "채용 중", "primaryKey": "기본 키", @@ -611,29 +611,29 @@ "inviteOnlySignup": "초대 URL을 사용한 가입만 허용", "nextRow": "다음 행", "prevRow": "이전 행", - "addRowGrid": "Manually add data in grid view", - "addRowForm": "Enter record data through a form", - "noAccess": "No access", + "addRowGrid": "그리드에 행 추가", + "addRowForm": "폼에 행 추가", + "noAccess": "접근 권한 없음", "restApis": "Rest APIs", "apis": "APIs", - "includeData": "Include Data", - "includeView": "Include View", - "includeWebhook": "Include Webhook", - "zoomInToViewColumns": "Zoom in to view columns", - "embedInSite": "Embed this view in your site", - "titleRequired": "title is required.", - "sourceNameRequired": "Source name is required", - "changeWsName": "Change Workspace Name", - "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after" + "includeData": "데이터 포함", + "includeView": "뷰 포함", + "includeWebhook": "웹훅 포함", + "zoomInToViewColumns": "열을 보려면 확대하세요", + "embedInSite": "사이트에 삽입", + "titleRequired": "제목이 필요합니다", + "sourceNameRequired": "소스 이름이 필요합니다", + "changeWsName": "작업 공간 이름 변경", + "pressEnter": "Enter를 누르세요", + "newFormLoaded": "새로운 폼이 로드되었습니다." }, "activity": { - "openInANewTab": "Open in a new tab", - "copyIFrameCode": "Copy IFrame code", - "onCondition": "On Condition", - "bulkDownload": "Bulk Download", - "attachFile": "Attach File", - "viewAttachment": "View Attachments", + "openInANewTab": "새 탭에서 열기", + "copyIFrameCode": "IFrame 코드 복사", + "onCondition": "조건에 따라", + "bulkDownload": "대량 다운로드", + "attachFile": "파일 첨부", + "viewAttachment": "첨부 파일 보기", "attachmentDrop": "셀에 파일을 클릭하거나 끌어다 놓습니다.", "addFiles": "파일 추가", "hideInUI": "UI에서 숨기기", @@ -811,20 +811,20 @@ "deleteRecord": "레코드 삭제", "fullWidth": "전체 넓이", "exitFullWidth": "Exit full width", - "markAllAsRead": "Mark all as read", + "markAllAsRead": "모두 읽음으로 표시", "column": { - "delete": "Delete Field", - "addNumber": "Add Number Field", - "addSingleLineText": "Add SingleLineText Field", - "addLongText": "Add LongText Field", - "addOther": "Add Other Field" + "delete": "열 삭제", + "addNumber": "숫자 필드 추가", + "addSingleLineText": "단일 텍스트 필드 추가", + "addLongText": "긴 텍스트 필드 추가", + "addOther": "다른 필드 추가" }, "erd": { "showColumns": "열 표시", "showPkAndFk": "PK 및 FK 표시", "showSqlViews": "SQL 뷰 표시", - "showMMTables": "Show Many to Many tables", - "showJunctionTableNames": "Show Junction Table Names" + "showMMTables": "다대다 테이블 표시", + "showJunctionTableNames": "중간 테이블 이름 표시" }, "kanban": { "collapseStack": "스택 축소", @@ -840,10 +840,10 @@ "openInOpenStreetMap": "OSM" }, "toggleMobileMode": "모바일 모드 전환", - "startCommenting": "Start commenting!" + "startCommenting": "댓글 달기" }, "tooltip": { - "reachedSourceLimit": "Limited to only one data source for the moment", + "reachedSourceLimit": "데이터 소스 제한에 도달했습니다.", "saveChanges": "변경 사항 저장", "xcDB": "새 프로젝트 생성", "extDB": "MySQL, PostgreSQL, SQL Server 및 SQLite 지원", @@ -854,7 +854,7 @@ "light": "다크 테마로 바꿀까요?(^ ⇧b)" }, "addTable": "새 테이블 추가", - "addDashboard": "Add new Dashboard", + "addDashboard": "새 대시보드 추가", "inviteMore": "더 많은 사용자 초대", "toggleNavDraw": "네비게이션 바 토글", "reloadApiToken": "API 토큰 다시 불러오기", @@ -873,19 +873,19 @@ "clientCA": "CA 파일을 선택하십시오" }, "placeholder": { - "selectSlackChannels": "Select Slack channels", - "selectTeamsChannels": "Select Microsoft Teams channels", - "selectDiscordChannels": "Select Discord channels", - "selectMattermostChannels": "Select Mattermost channels", - "webhookTitle": "Webhook Title", - "barcodeColumn": "Select a field for the Barcode value", - "notFoundContent": "No valid field Type can be found.", - "selectBarcodeFormat": "Select a Barcode format", + "selectSlackChannels": "슬랙 채널 선택", + "selectTeamsChannels": "Microsoft Teams 채널 선택", + "selectDiscordChannels": "Discord 채널 선택", + "selectMattermostChannels": "Mattermost 채널 선택", + "webhookTitle": "웹훅 제목", + "barcodeColumn": "바코드 열", + "notFoundContent": "내용을 찾을 수 없습니다", + "selectBarcodeFormat": "바코드 형식 선택", "projName": "프로젝트 이름을 입력하십시오", - "selectGroupField": "Select a Grouping Field", - "selectGroupFieldNotFound": "No Single Select Field can be found. Please create one first.", - "selectGeoField": "Select a GeoData Field", - "selectGeoFieldNotFound": "No GeoData Field can be found. Please create one first.", + "selectGroupField": "그룹화 필드 선택", + "selectGroupFieldNotFound": "단일 선택 필드를 찾을 수 없습니다. 최소한 하나의 단일 선택 필드를 만들어야 합니다.", + "selectGeoField": "GeoField 선택", + "selectGeoFieldNotFound": "GeoField를 찾을 수 없습니다. 최소한 하나의 GeoField를 만들어야 합니다.", "password": { "enter": "비밀번호를 입력하십시오", "current": "현재 비밀번호", @@ -893,11 +893,11 @@ "save": "비밀번호 저장", "confirm": "새 암호를 확인합니다" }, - "selectAColumnForTheQRCodeValue": "Select a field for the QR code value", - "allowNegativeNumbers": "Allow negative numbers", + "selectAColumnForTheQRCodeValue": "QR 코드 값에 대한 열을 선택하십시오", + "allowNegativeNumbers": "음수 허용", "searchProjectTree": "테이블 검색", "searchFields": "필드 검색", - "searchColumn": "{검색} 컬럼 검색", + "searchColumn": "{columnName} 컬럼 검색", "searchApps": "앱 검색", "searchModels": "모델 검색", "noItemsFound": "항목을 찾지 못했습니다", @@ -905,7 +905,7 @@ "filterByEmail": "전자 메일로 필터링", "filterQuery": "쿼리로 필터링", "selectField": "필드 선택", - "precision": "Precision", + "precision": "정밀도", "decimal1": "1.0", "decimal2": "1.00", "decimal3": "1.000", @@ -914,126 +914,126 @@ "decimal6": "1.000000", "decimal7": "1.0000000", "decimal8": "1.00000000", - "value": "Value", - "key": "Key" + "value": "값", + "key": "키" }, "msg": { - "clickToCopyFieldId": "Click to copy Field Id", - "enterPassword": "Enter password", - "bySigningUp": "By signing up, you agree to the", - "subscribeToOurWeeklyNewsletter": "Subscribe to our weekly newsletter", - "verifyingPassword": "Verifying Password", - "thisSharedViewIsProtected": "This shared view is protected", - "successfullySubmittedFormData": "Successfully submitted form data", - "formViewNotSupportedOnMobile": "Form view is not supported on mobile", - "newFormWillBeLoaded": "New form will be loaded after {seconds} seconds", - "optimizedQueryDisabled": "Optimized query is disabled", - "optimizedQueryEnabled": "Optimized query is enabled", - "lookupNonBtWarning": "Lookup field is not supported for non-Belongs to relation", - "invalidTime": "Invalid Time", - "linkColumnClearNotSupportedYet": "You don't have any supported links for Lookup", - "recordCouldNotBeFound": "Record could not be found", - "invalidPhoneNumber": "Invalid phone number", - "pageSizeChanged": "Page size changed", - "errorLoadingData": "Error loading data", + "clickToCopyFieldId": "클릭하여 필드 ID 복사", + "enterPassword": "비밀번호를 입력하십시오", + "bySigningUp": "회원가입시 다음 약관에 동의한 것으로 간주합니다.", + "subscribeToOurWeeklyNewsletter": "주간 뉴스레터 구독", + "verifyingPassword": "비밀번호 확인 중", + "thisSharedViewIsProtected": "이 공유 뷰는 비밀번호로 보호됩니다.", + "successfullySubmittedFormData": "양식 데이터가 성공적으로 제출되었습니다.", + "formViewNotSupportedOnMobile": "모바일에서는 폼 뷰가 지원되지 않습니다.", + "newFormWillBeLoaded": "{seconds}초 후에 새 양식이 로드됩니다.", + "optimizedQueryDisabled": "최적화된 쿼리가 비활성화되었습니다", + "optimizedQueryEnabled": "최적화된 쿼리가 활성화되었습니다", + "lookupNonBtWarning": "Lookup 필드는 Belongs To 관계에서만 사용할 수 있습니다.", + "invalidTime": "유효하지 않은 시간형식입니다.", + "linkColumnClearNotSupportedYet": "링크 열의 내용을 지우는 것은 아직 지원되지 않습니다.", + "recordCouldNotBeFound": "레코드를 찾을 수 없습니다.", + "invalidPhoneNumber": "유효하지 않은 전화번호입니다.", + "pageSizeChanged": "페이지 크기가 변경되었습니다.", + "errorLoadingData": "데이터를 로드하는 중 오류가 발생했습니다.", "webhookBodyMsg1": "Use context variable", "webhookBodyMsg2": "body", "webhookBodyMsg3": "to refer the record under consideration", "formula": { - "hintStart": "Hint: Use {placeholder1} to reference fields, e.g: {placeholder2}. For more, please check out", + "hintStart": "팁:{placeholder1}을(를) 사용하여 필드(예: {placeholder2})를 참조하십시오.", "hintEnd": "Formulas.", - "noSuggestedFormulaFound": "No suggested formula found", - "numericTypeIsExpected": "Numeric type is expected", - "stringTypeIsExpected": "String type is expected", - "operationNotAvailable": "{operation} operation not available", - "cantSaveFieldFormulaInvalid": "Can’t save field because formula is invalid", - "notSupportedToReferenceColumn": "Not supported to reference field {columnName}", - "typeIsExpectedButFound": "Type {type} is expected but found Type {found}", - "requiredArgumentsFormula": "{calleeName} requires {requiredArguments} arguments", - "minRequiredArgumentsFormula": "{calleeName} required minimum {minRequiredArguments} arguments", - "maxRequiredArgumentsFormula": "{calleeName} required maximum {maxRequiredArguments} arguments", - "functionNotAvailable": "{function} function is not available", - "firstParamWeekDayHaveDate": "The first parameter of WEEKDAY() should have date value", - "secondParamWeekDayHaveDate": "The second parameter of WEEKDAY() should have the value either \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\" or \"saturday\"", - "firstParamDateAddHaveDate": "The first parameter of DATEADD() should have date value", - "secondParamDateAddHaveNumber": "The second parameter of DATEADD() should have numeric value", - "thirdParamDateAddHaveDate": "The third parameter of DATEADD() should have the value either \"day\", \"week\", \"month\" or \"year\"", - "firstParamDateDiffHaveDate": "The first parameter of DATEDIFF() should have date value", - "secondParamDateDiffHaveDate": "The second parameter of DATEDIFF() should have date value", - "thirdParamDateDiffHaveDate": "The third parameter of DATETIME_DIFF() should have value either \"milliseconds\", \"ms\", \"seconds\", \"s\", \"minutes\", \"m\", \"hours\", \"h\", \"days\", \"d\", \"weeks\", \"w\", \"months\", \"M\", \"quarters\", \"Q\", \"years\", or \"y\"", - "columnNotAvailable": "Field {columnName} is not available", - "cantSaveCircularReference": "Can’t save field because it causes a circular reference", - "columnWithTypeFoundButExpected": "Field {columnName} with {columnType} type is found but {expectedType} type is expected", - "columnNotMatchedWithType": "{columnName} is not matched with {columnType}" + "noSuggestedFormulaFound": "제안된 공식이 없습니다.", + "numericTypeIsExpected": "숫자 유형이 필요합니다.", + "stringTypeIsExpected": "문자열 유형이 필요합니다.", + "operationNotAvailable": "{operation} 작업을 사용할 수 없습니다.", + "cantSaveFieldFormulaInvalid": "필드를 저장할 수 없습니다. 공식이 유효하지 않습니다.", + "notSupportedToReferenceColumn": "참조 필드 {columnName}에 지원되지 않는 공식입니다.", + "typeIsExpectedButFound": "{type} 유형이 필요하지만 {found} 유형을 찾았습니다.", + "requiredArgumentsFormula": "{callleName}에는 {requiredArguments}개의 인수가 필요합니다,", + "minRequiredArgumentsFormula": "{callleName}에 최소 {minRequiredArguments}개의 인수가 필요합니다.", + "maxRequiredArgumentsFormula": "{callleName}에는 최대 {maxRequiredArguments}개의 인수가 필요합니다.", + "functionNotAvailable": "{function} 기능을 사용할 수 없습니다.", + "firstParamWeekDayHaveDate": "WEEKUNDY()의 첫 번째 매개변수는 날짜 값을 가져야 합니다.", + "secondParamWeekDayHaveDate": "WEEKUND()의 두 번째 매개 변수는 \"일요일\", \"월요일\", \"화요일\", \"수요일\", \"목요일\", \"금요일\" 또는 \"토요일\" 중 하나의 값을 가져야 합니다", + "firstParamDateAddHaveDate": "DATEADD()의 첫 번째 매개변수는 날짜 값을 가져야 합니다.", + "secondParamDateAddHaveNumber": "DATEADD()의 두 번째 매개변수는 숫자 값을 가져야 합니다.", + "thirdParamDateAddHaveDate": "DATEADD()의 세 번째 파라미터는 \"day\", \"week\", \"month\" 또는 \"year\" 값을 가져야 합니다.", + "firstParamDateDiffHaveDate": "DATEDIFF()의 첫 번째 매개변수는 날짜 값을 가져야 합니다.", + "secondParamDateDiffHaveDate": "DATEDIFF()의 두 번째 매개변수는 날짜 값을 가져야 합니다.", + "thirdParamDateDiffHaveDate": "DATEDIFF()의 세 번째 매개변수는 \"밀리 초\", \"초\", \"분\", \"시간\", \"일\", \"주\", \"월\" 또는 \"년\" 값을 가져야 합니다.", + "columnNotAvailable": "열 {columnName}을(를) 사용할 수 없습니다.", + "cantSaveCircularReference": "필드를 저장할 수 없습니다. 순환 참조가 있습니다.", + "columnWithTypeFoundButExpected": "{columnType} 유형의 {columnName} 필드가 있지만 {expectedType} 유형이 필요합니다.", + "columnNotMatchedWithType": "{columnName}이(가) {columnType}과(와) 일치하지 않습니다." }, "selectOption": { - "cantBeNull": "Select options can't be null", - "multiSelectCantHaveCommas": "MultiSelect fields can't have commas(',')", - "cantHaveDuplicates": "Select options can't have duplicates", - "createNewOptionNamed": "Create new option named" + "cantBeNull": "선택 옵션은 null이 될 수 없습니다.", + "multiSelectCantHaveCommas": "다중 선택 옵션에는 쉼표가 포함될 수 없습니다.", + "cantHaveDuplicates": "중복된 선택 옵션을 가질 수 없습니다.", + "createNewOptionNamed": "새 옵션 {optionName} 생성" }, - "plsEnterANumber": "Please enter a number", - "plsInputEmail": "Please input email", - "invalidDate": "Invalid date", - "invalidLocale": "Invalid locale", - "invalidCurrencyCode": "Invalid Currency Code", - "postgresHasItsOwnCurrencySettings": "PostgreSQL 'money' type has own currency settings", - "validColumnsForBarCode": "The valid Field Types for a Barcode Field are: Number, Single Line Text, Long Text, Phone Number, URL, Email, Decimal. Please create one first.", + "plsEnterANumber": "숫자를 입력하세요", + "plsInputEmail": "이메일을 입력하세요", + "invalidDate": "유효하지 않은 날짜입니다.", + "invalidLocale": "유효하지 않은 지역정보입니다.", + "invalidCurrencyCode": "유효하지 않은 통화 코드입니다.", + "postgresHasItsOwnCurrencySettings": "Postgres는 자체 통화 설정을 가지고 있습니다.", + "validColumnsForBarCode": "바코드 필드의 유효한 필드 유형은 번호, 한 줄 텍스트, 긴 텍스트, 전화 번호, URL, 이메일, 십진수입니다. 먼저 하나를 만드십시오.", "hm": { - "title": "Has Many Relation", - "tooltip_desc": "A single record from table ", - "tooltip_desc2": " can be linked with multiple records from table " + "title": "많은 연관 관계", + "tooltip_desc": "테이블의 단일 레코드 ", + "tooltip_desc2": " 테이블의 여러 레코드와 연결될 수 있습니다." }, "mm": { - "title": "Many to Many Relation", - "tooltip_desc": "Multiple records from table ", - "tooltip_desc2": " can be linked with multiple records from table " + "title": "다대다 관계", + "tooltip_desc": "테이블의 단일 레코드 ", + "tooltip_desc2": " 테이블의 여러 레코드와 연결될 수 있습니다." }, "bt": { - "title": "Belongs to Relation", - "tooltip_desc": "A single record from table ", - "tooltip_desc2": " can be linked with a record from table " + "title": "Belongs To 관계", + "tooltip_desc": "테이블의 단일 레코드 ", + "tooltip_desc2": " 테이블의 여러 레코드와 연결될 수 있습니다." }, "oo": { - "title": "One to One Relation", - "tooltip_desc": "A single record from table ", - "tooltip_desc2": " can be linked with a single record from table " + "title": "One To One 관계", + "tooltip_desc": "테이블의 단일 레코드 ", + "tooltip_desc2": " 테이블의 단일 레코드와 연결될 수 있습니다." }, - "noRecordsAreLinkedFromTable": "No records are linked from table", - "noRecordsLinked": "No records linked", - "recordsLinked": "records linked", - "acceptOnlyValid": "Accepts only", - "apiTokenCreate": "Create personal API tokens to use in automation or external apps.", - "selectFieldToSort": "Select Field to Sort", - "thereAreNoRecordsInTable": "There are no records in table", - "createWebhookMsg1": "Get started with web-hooks!", - "createWebhookMsg2": "Create web-hooks to power you automations,", - "createWebhookMsg3": "Get notified as soon as there are changes in your data", - "areYouSureUWantTo": "Are you sure you want to delete the following", - "areYouSureUWantToDeleteLabel": "Are you sure you want to {deleteLabel} the following", - "idColumnRequired": "ID field is required, you can rename this later if required.", - "length59Required": "The length exceeds the max 59 characters", - "noNewNotifications": "You have no new notifications", - "noRecordFound": "Record not found", - "rowDeleted": "Record deleted", - "saveChanges": "Do you want to save the changes?", - "tooLargeFieldEntity": "The field is too large to be converted to {entity}", - "roleRequired": "Role required", + "noRecordsAreLinkedFromTable": "테이블에 연결된 레코드가 없습니다.", + "noRecordsLinked": "레코드가 연결되지 않았습니다.", + "recordsLinked": "레코드가 연결되었습니다.", + "acceptOnlyValid": "유효한 값만 허용", + "apiTokenCreate": "새 API 토큰 생성", + "selectFieldToSort": "정렬할 필드 선택", + "thereAreNoRecordsInTable": "테이블에 레코드가 없습니다.", + "createWebhookMsg1": "웹훅을 생성하여 자동화를 구동하고,", + "createWebhookMsg2": "자동화를 지원하는 웹 후크를 만들고,", + "createWebhookMsg3": "데이터에 변경 사항이 있는 경우 즉시 알림 받기", + "areYouSureUWantTo": "삭제하시겠습니까?", + "areYouSureUWantToDeleteLabel": "{deleteLabel}을 삭제하시겠습니까?", + "idColumnRequired": "ID 필드가 필요합니다. 필요한 경우 나중에 이름을 변경할 수 있습니다.", + "length59Required": "길이는 59자 이하여야 합니다.", + "noNewNotifications": "새 알림 없음", + "noRecordFound": "레코드를 찾을 수 없습니다.", + "rowDeleted": "행이 삭제되었습니다.", + "saveChanges": "변경 사항을 저장하시겠습니까?", + "tooLargeFieldEntity": "{entity}를 저장할 수 없습니다. 필드가 너무 큽니다.", + "roleRequired": "역할이 필요합니다.", "warning": { - "dbValid": "Please make sure database you are trying to connect is valid! This operation can cause schema loss!!", + "dbValid": "연결하려는 데이터베이스가 올바른지 확인하십시오! 이 작업으로 스키마 손실이 발생할 수 있습니다!!", "barcode": { "renderError": "바코드를 렌더링하는 동안 오류가 발생했습니다." }, "nonEditableFields": { "computedFieldUnableToClear": "경고: 계산 필드 - 텍스트를 지울 수 없음", "qrFieldsCannotBeDirectlyChanged": "경고: QR 필드 - 직접 변경할 수 없음", - "barcodeFieldsCannotBeDirectlyChanged": "Warning: Barcode fields cannot be directly changed." + "barcodeFieldsCannotBeDirectlyChanged": "경고: 바코드 필드는 직접 변경할 수 없습니다." }, - "duplicateProject": "Are you sure you want to duplicate the base?", - "duplicateTable": "Are you sure you want to duplicate the table?" + "duplicateProject": "프로젝트를 복제하려고 합니다. 계속하시겠습니까?", + "duplicateTable": "테이블을 복제하려고 합니다. 계속하시겠습니까?" }, "info": { - "basesMigrated": "Bases are migrated. Please try again.", + "basesMigrated": "베이스가 마이그레이션되었습니다. 다시 시도하십시오.", "pasteNotSupported": "활성 셀에서는 붙여넣기 작업이 지원되지 않습니다.", "roles": { "orgCreator": "작성자는 새 프로젝트를 작성하고 초대된 프로젝트에 액세스할 수 있습니다.", @@ -1058,18 +1058,18 @@ "csvURL": "CSV 파일 URL을 입력하십시오", "footMsg": "파싱 ​​할 행의 # DataType을 추론합니다", "excelImport": "시트를 가져올 수 있습니다", - "exportMetadata": "메타 테이블에서 메타 데이터를 내보내려면 원하십니까?", - "importMetadata": "메타 테이블에서 메타 데이터를 가져오고 싶습니까?", - "clearMetadata": "메타 테이블에서 메타 데이터를 지우고 싶습니까?", - "projectEmptyMessage": "새 프로젝트를 생성하여 시작하십시오", - "stopProject": "프로젝트를 멈추고 싶습니까?", + "exportMetadata": "메타 데이터를 다운로드 하시겠습니까?", + "importMetadata": "메타 데이터를 업로드 하시겠습니까?", + "clearMetadata": "메타 데이터를 지우시겠습니까?", + "projectEmptyMessage": "프로젝트가 비어 있습니다. 테이블을 만들거나 프로젝트를 가져오십시오.", + "stopProject": "프로젝트를 중지 하시겠습니까?", "startProject": "프로젝트를 시작 하시겠습니까?", "restartProject": "프로젝트를 다시 시작 하시겠습니까?", "deleteProject": "프로젝트를 삭제 하시겠습니까?", "shareBasePrivate": "공개적으로 공유 할 수있는 ReadOnly Base를 생성합니다", - "shareBasePublic": "이 링크가있는 인터넷의 모든 사람은 볼 수 있습니다", - "userInviteNoSMTP": "아직 메일러를 구성하지 않은 것처럼 보입니다! 초대장 링크를 복사하여 보냅니다.", - "dragDropHide": "여기에서 필드를 드래그 앤 드롭하십시오", + "shareBasePublic": "이 링크를 통해 공개적으로 공유 할 수있는 ReadOnly Base를 생성합니다", + "userInviteNoSMTP": "SMTP가 구성되지 않았습니다. 초대 이메일을 보내려면 SMTP를 구성하십시오.", + "dragDropHide": "드래그 앤 드롭을 숨기려면 여기를 클릭하십시오.", "formInput": "양식 입력 레이블 입력", "formHelpText": "도움말 텍스트 추가", "onlyCreator": "작성자에게만 표시", @@ -1079,8 +1079,8 @@ "privateLink": "비공개 링크로 현재 뷰 공유", "privateLinkAdditionalInfo": "비공개 링크가 있는 사용자는 현재 보기에서 표시되는 셀만 볼 수 있습니다.", "afterFormSubmitted": "양식이 제출 된 후", - "apiOptions": "프로젝트 via에 액세스하십시오", - "submitAnotherForm": "'다른 양식 제출'버튼을 보여줍니다", + "apiOptions": "API 옵션", + "submitAnotherForm": "다른 양식 제출", "showBlankForm": "5 초 후에 빈 양식을 보여줍니다", "emailForm": "이메일로 공유", "showSysFields": "시스템 필드 표시", From 5c4a18499c5611dd439ebdc4f22bc7e84c5f133c Mon Sep 17 00:00:00 2001 From: mertmit Date: Sat, 11 Nov 2023 01:11:13 +0300 Subject: [PATCH 095/279] chore: bump axios version Signed-off-by: mertmit --- packages/nocodb-sdk/package.json | 4 +- packages/nocodb-sdk/src/lib/Api.ts | 76 +++++++++++------ packages/nocodb/package.json | 2 +- pnpm-lock.yaml | 48 +++++------ .../http-clients/axios-http-client.eta | 85 ++++++++++--------- tests/playwright/package.json | 2 +- 6 files changed, 117 insertions(+), 100 deletions(-) diff --git a/packages/nocodb-sdk/package.json b/packages/nocodb-sdk/package.json index 9f931415d2..3919ff04a5 100644 --- a/packages/nocodb-sdk/package.json +++ b/packages/nocodb-sdk/package.json @@ -38,7 +38,7 @@ "preinstall": "npx only-allow pnpm" }, "dependencies": { - "axios": "^0.21.1", + "axios": "^1.6.1", "jsep": "^1.3.8" }, "devDependencies": { @@ -69,4 +69,4 @@ "prettier": { "singleQuote": true } -} \ No newline at end of file +} diff --git a/packages/nocodb-sdk/src/lib/Api.ts b/packages/nocodb-sdk/src/lib/Api.ts index 8ceba0f9b1..0a777d4326 100644 --- a/packages/nocodb-sdk/src/lib/Api.ts +++ b/packages/nocodb-sdk/src/lib/Api.ts @@ -2761,7 +2761,13 @@ export interface NotificationUpdateType { is_read?: boolean; } -import axios, { AxiosInstance, AxiosRequestConfig, ResponseType } from 'axios'; +import type { + AxiosInstance, + AxiosRequestConfig, + HeadersDefaults, + ResponseType, +} from 'axios'; +import axios from 'axios'; export type QueryParamsType = Record; @@ -2783,7 +2789,10 @@ export interface FullRequestParams body?: unknown; } -export type RequestParams = Omit; +export type RequestParams = Omit< + FullRequestParams, + 'body' | 'method' | 'query' | 'path' +>; export interface ApiConfig extends Omit { @@ -2798,6 +2807,7 @@ export enum ContentType { Json = 'application/json', FormData = 'multipart/form-data', UrlEncoded = 'application/x-www-form-urlencoded', + Text = 'text/plain', } export class HttpClient { @@ -2826,43 +2836,50 @@ export class HttpClient { this.securityData = data; }; - private mergeRequestParams( + protected mergeRequestParams( params1: AxiosRequestConfig, params2?: AxiosRequestConfig ): AxiosRequestConfig { + const method = params1.method || (params2 && params2.method); + return { ...this.instance.defaults, ...params1, ...(params2 || {}), headers: { - ...(this.instance.defaults.headers || {}), + ...((method && + this.instance.defaults.headers[ + method.toLowerCase() as keyof HeadersDefaults + ]) || + {}), ...(params1.headers || {}), ...((params2 && params2.headers) || {}), }, }; } - protected createFormData(input: Record): FormData { - if (input instanceof FormData) { - return input; + protected stringifyFormItem(formItem: unknown) { + if (typeof formItem === 'object' && formItem !== null) { + return JSON.stringify(formItem); + } else { + return `${formItem}`; } + } + + protected createFormData(input: Record): FormData { return Object.keys(input || {}).reduce((formData, key) => { const property = input[key]; - - if (property instanceof Blob) { - formData.append(key, property); - } else if (typeof property === 'object' && property !== null) { - if (Array.isArray(property)) { - // eslint-disable-next-line functional/no-loop-statement - for (const prop of property) { - formData.append(`${key}[]`, prop); - } - } else { - formData.append(key, JSON.stringify(property)); - } - } else { - formData.append(key, `${property}`); + const propertyContent: any[] = + property instanceof Array ? property : [property]; + + for (const formItem of propertyContent) { + const isFileType = formItem instanceof Blob || formItem instanceof File; + formData.append( + key, + isFileType ? formItem : this.stringifyFormItem(formItem) + ); } + return formData; }, new FormData()); } @@ -2883,7 +2900,7 @@ export class HttpClient { (await this.securityWorker(this.securityData))) || {}; const requestParams = this.mergeRequestParams(params, secureParams); - const responseFormat = (format && this.format) || void 0; + const responseFormat = format || this.format || undefined; if ( type === ContentType.FormData && @@ -2891,21 +2908,26 @@ export class HttpClient { body !== null && typeof body === 'object' ) { - requestParams.headers.common = { Accept: '*/*' }; - requestParams.headers.post = {}; - requestParams.headers.put = {}; - body = this.createFormData(body as Record); } + if ( + type === ContentType.Text && + body && + body !== null && + typeof body !== 'string' + ) { + body = JSON.stringify(body); + } + return this.instance .request({ ...requestParams, headers: { + ...(requestParams.headers || {}), ...(type && type !== ContentType.FormData ? { 'Content-Type': type } : {}), - ...(requestParams.headers || {}), }, params: query, responseType: responseFormat, diff --git a/packages/nocodb/package.json b/packages/nocodb/package.json index 421e9edc2c..414cea756b 100644 --- a/packages/nocodb/package.json +++ b/packages/nocodb/package.json @@ -76,7 +76,7 @@ "auto-bind": "^4.0.0", "aws-kcl": "^2.2.2", "aws-sdk": "^2.1455.0", - "axios": "^0.21.1", + "axios": "^1.6.1", "bcryptjs": "^2.4.3", "body-parser": "^1.20.2", "boxen": "^5.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9e29d49b9b..9536067e05 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -473,8 +473,8 @@ importers: specifier: ^2.1455.0 version: 2.1455.0 axios: - specifier: ^0.21.1 - version: 0.21.1(debug@4.3.4) + specifier: ^1.6.1 + version: 1.6.2(debug@4.3.4) bcryptjs: specifier: ^2.4.3 version: 2.4.3 @@ -876,8 +876,8 @@ importers: packages/nocodb-sdk: dependencies: axios: - specifier: ^0.21.1 - version: 0.21.1 + specifier: ^1.6.1 + version: 1.6.2 jsep: specifier: ^1.3.8 version: 1.3.8 @@ -927,6 +927,9 @@ importers: tests/playwright: dependencies: + axios: + specifier: ^1.6.1 + version: 1.6.2 body-parser: specifier: ^1.20.1 version: 1.20.1 @@ -958,9 +961,6 @@ importers: '@typescript-eslint/parser': specifier: ^6.1.0 version: 6.1.0(eslint@8.33.0)(typescript@5.2.2) - axios: - specifier: ^0.24.0 - version: 0.24.0 dotenv: specifier: ^16.0.3 version: 16.0.3 @@ -10538,14 +10538,6 @@ packages: is-retry-allowed: 2.2.0 dev: false - /axios@0.21.1: - resolution: {integrity: sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==} - dependencies: - follow-redirects: 1.15.2(debug@3.2.7) - transitivePeerDependencies: - - debug - dev: false - /axios@0.21.1(debug@4.3.4): resolution: {integrity: sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==} dependencies: @@ -10554,14 +10546,6 @@ packages: - debug dev: false - /axios@0.24.0: - resolution: {integrity: sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==} - dependencies: - follow-redirects: 1.15.2(debug@3.2.7) - transitivePeerDependencies: - - debug - dev: true - /axios@0.24.0(debug@4.3.4): resolution: {integrity: sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==} dependencies: @@ -10596,15 +10580,24 @@ packages: - debug dev: false - /axios@1.5.0: - resolution: {integrity: sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==} + /axios@1.6.2: + resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} dependencies: follow-redirects: 1.15.2(debug@3.2.7) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: true + + /axios@1.6.2(debug@4.3.4): + resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} + dependencies: + follow-redirects: 1.15.2(debug@4.3.4) + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false /b4a@1.6.4: resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} @@ -19532,7 +19525,7 @@ packages: '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.6 - axios: 1.5.0 + axios: 1.6.2 chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 @@ -20914,7 +20907,6 @@ packages: /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: true /prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} diff --git a/scripts/sdk/templates/http-clients/axios-http-client.eta b/scripts/sdk/templates/http-clients/axios-http-client.eta index 3bcd3c75f2..5019eed673 100644 --- a/scripts/sdk/templates/http-clients/axios-http-client.eta +++ b/scripts/sdk/templates/http-clients/axios-http-client.eta @@ -2,7 +2,8 @@ const { apiConfig, generateResponses, config } = it; %> -import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, ResponseType } from "axios"; +import type { AxiosInstance, AxiosRequestConfig, HeadersDefaults, ResponseType, AxiosResponse } from "axios"; +import axios from "axios"; export type QueryParamsType = Record; @@ -23,7 +24,7 @@ export interface FullRequestParams extends Omit; +export type RequestParams = Omit; export interface ApiConfig extends Omit { securityWorker?: (securityData: SecurityDataType | null) => Promise | AxiosRequestConfig | void; @@ -35,6 +36,7 @@ export enum ContentType { Json = "application/json", FormData = "multipart/form-data", UrlEncoded = "application/x-www-form-urlencoded", + Text = "text/plain", } export class HttpClient { @@ -55,43 +57,44 @@ export class HttpClient { this.securityData = data } - private mergeRequestParams(params1: AxiosRequestConfig, params2?: AxiosRequestConfig): AxiosRequestConfig { - return { - ...this.instance.defaults, - ...params1, - ...(params2 || {}), - headers: { - ...(this.instance.defaults.headers || {}), - ...(params1.headers || {}), - ...((params2 && params2.headers) || {}), - }, - }; + protected mergeRequestParams(params1: AxiosRequestConfig, params2?: AxiosRequestConfig): AxiosRequestConfig { + const method = params1.method || (params2 && params2.method) + + return { + ...this.instance.defaults, + ...params1, + ...(params2 || {}), + headers: { + ...((method && this.instance.defaults.headers[method.toLowerCase() as keyof HeadersDefaults]) || {}), + ...(params1.headers || {}), + ...((params2 && params2.headers) || {}), + }, + }; } + protected stringifyFormItem(formItem: unknown) { + if (typeof formItem === "object" && formItem !== null) { + return JSON.stringify(formItem); + } else { + return `${formItem}`; + } + } protected createFormData(input: Record): FormData { - if (input instanceof FormData) { - return input; + return Object.keys(input || {}).reduce((formData, key) => { + const property = input[key]; + const propertyContent: any[] = (property instanceof Array) ? property : [property] + + for (const formItem of propertyContent) { + const isFileType = formItem instanceof Blob || formItem instanceof File; + formData.append( + key, + isFileType ? formItem : this.stringifyFormItem(formItem) + ); } - return Object.keys(input || {}).reduce((formData, key) => { - const property = input[key]; - - if (property instanceof Blob) { - formData.append(key, property) - } else if (typeof property === 'object' && property !== null) { - if (Array.isArray(property)) { - // eslint-disable-next-line functional/no-loop-statement - for (const prop of property) { - formData.append(`${key}[]`, prop) - } - } else { - formData.append(key, JSON.stringify(property)) - } - } else { - formData.append(key, `${property}`) - } - return formData; - }, new FormData()); + + return formData; + }, new FormData()); } public request = async ({ @@ -110,21 +113,21 @@ export class HttpClient { <% } %> const secureParams = ((typeof secure === 'boolean' ? secure : this.secure) && this.securityWorker && (await this.securityWorker(this.securityData))) || {}; const requestParams = this.mergeRequestParams(params, secureParams); - const responseFormat = (format && this.format) || void 0; + const responseFormat = (format || this.format) || undefined; if (type === ContentType.FormData && body && body !== null && typeof body === "object") { - requestParams.headers.common = { Accept: "*/*" }; - requestParams.headers.post = {}; - requestParams.headers.put = {}; - body = this.createFormData(body as Record); } + if (type === ContentType.Text && body && body !== null && typeof body !== "string") { + body = JSON.stringify(body); + } + return this.instance.request({ ...requestParams, headers: { - ...(type && type !== ContentType.FormData ? { "Content-Type": type } : {}), ...(requestParams.headers || {}), + ...(type && type !== ContentType.FormData ? { "Content-Type": type } : {}), }, params: query, responseType: responseFormat, @@ -139,4 +142,4 @@ export class HttpClient { }); <% } %> }; -} +} \ No newline at end of file diff --git a/tests/playwright/package.json b/tests/playwright/package.json index 3a2d733b79..0ba77b7f6c 100644 --- a/tests/playwright/package.json +++ b/tests/playwright/package.json @@ -40,6 +40,7 @@ "preinstall": "npx only-allow pnpm" }, "dependencies": { + "axios": "^1.6.1", "body-parser": "^1.20.1", "dayjs": "^1.11.9", "express": "^4.18.1", @@ -52,7 +53,6 @@ "@playwright/test": "1.38.0", "@typescript-eslint/eslint-plugin": "^6.1.0", "@typescript-eslint/parser": "^6.1.0", - "axios": "^0.24.0", "dotenv": "^16.0.3", "eslint": "^8.22.0", "eslint-config-prettier": "^6.15.0", From d9b03d3526c1ed617a56874ec74d13d4c2b41629 Mon Sep 17 00:00:00 2001 From: mertmit Date: Wed, 22 Nov 2023 11:40:44 +0000 Subject: [PATCH 096/279] feat: use id instead of alias on queries --- packages/nocodb-sdk/src/lib/formulaHelpers.ts | 2 +- packages/nocodb/src/db/BaseModelSqlv2.ts | 174 +++++++++++------- 2 files changed, 106 insertions(+), 70 deletions(-) diff --git a/packages/nocodb-sdk/src/lib/formulaHelpers.ts b/packages/nocodb-sdk/src/lib/formulaHelpers.ts index 5a28417d84..a5a15ed532 100644 --- a/packages/nocodb-sdk/src/lib/formulaHelpers.ts +++ b/packages/nocodb-sdk/src/lib/formulaHelpers.ts @@ -93,7 +93,7 @@ export function substituteColumnIdWithAliasInFormula( c.column_name === colNameOrId || c.title === colNameOrId ); - pt.name = column?.title || ptRaw?.name || pt?.name; + pt.name = column?.id || ptRaw?.name || pt?.name; } else if (pt.type === 'BinaryExpression') { substituteId(pt.left, ptRaw?.left); substituteId(pt.right, ptRaw?.right); diff --git a/packages/nocodb/src/db/BaseModelSqlv2.ts b/packages/nocodb/src/db/BaseModelSqlv2.ts index a60d09856d..089d5fc586 100644 --- a/packages/nocodb/src/db/BaseModelSqlv2.ts +++ b/packages/nocodb/src/db/BaseModelSqlv2.ts @@ -167,7 +167,9 @@ class BaseModelSqlv2 { let data; try { - data = await this.execAndParse(qb, null, { first: true }); + data = await this.execAndParse(qb, null, { + first: true, + }); } catch (e) { if (validateFormula || !haveFormulaColumn(await this.model.getColumns())) throw e; @@ -587,9 +589,9 @@ class BaseModelSqlv2 { knex: this.dbDriver, columnOptions: (await column.getColOptions()) as RollupColumn, }) - ).builder.as(sanitize(column.title)), + ).builder.as(sanitize(column.id)), ); - groupBySelectors.push(sanitize(column.title)); + groupBySelectors.push(sanitize(column.id)); break; case UITypes.Formula: { @@ -601,18 +603,18 @@ class BaseModelSqlv2 { selectQb = this.dbDriver.raw(`?? as ??`, [ _selectQb.builder, - sanitize(column.title), + sanitize(column.id), ]); } catch (e) { console.log(e); // return dummy select selectQb = this.dbDriver.raw(`'ERR' as ??`, [ - sanitize(column.title), + sanitize(column.id), ]); } selectors.push(selectQb); - groupBySelectors.push(column.title); + groupBySelectors.push(column.id); } break; case UITypes.Lookup: @@ -628,18 +630,18 @@ class BaseModelSqlv2 { const selectQb = this.dbDriver.raw(`?? as ??`, [ this.dbDriver.raw(_selectQb.builder).wrap('(', ')'), - sanitize(column.title), + sanitize(column.id), ]); selectors.push(selectQb); - groupBySelectors.push(sanitize(column.title)); + groupBySelectors.push(sanitize(column.id)); } break; default: selectors.push( - this.dbDriver.raw('?? as ??', [column.column_name, column.title]), + this.dbDriver.raw('?? as ??', [column.column_name, column.id]), ); - groupBySelectors.push(sanitize(column.title)); + groupBySelectors.push(sanitize(column.id)); break; } }), @@ -704,7 +706,7 @@ class BaseModelSqlv2 { } qb.orderBy( - groupByColumns[sort.fk_column_id].title, + groupByColumns[sort.fk_column_id].id, sort.direction, sort.direction === 'desc' ? 'LAST' : 'FIRST', ); @@ -772,9 +774,9 @@ class BaseModelSqlv2 { columnOptions: (await column.getColOptions()) as RollupColumn, }) - ).builder.as(sanitize(column.title)), + ).builder.as(sanitize(column.id)), ); - groupBySelectors.push(sanitize(column.title)); + groupBySelectors.push(sanitize(column.id)); break; case UITypes.Formula: { let selectQb; @@ -785,18 +787,18 @@ class BaseModelSqlv2 { selectQb = this.dbDriver.raw(`?? as ??`, [ _selectQb.builder, - sanitize(column.title), + sanitize(column.id), ]); } catch (e) { console.log(e); // return dummy select selectQb = this.dbDriver.raw(`'ERR' as ??`, [ - sanitize(column.title), + sanitize(column.id), ]); } selectors.push(selectQb); - groupBySelectors.push(column.title); + groupBySelectors.push(column.id); break; } case UITypes.Lookup: @@ -812,21 +814,18 @@ class BaseModelSqlv2 { const selectQb = this.dbDriver.raw(`?? as ??`, [ this.dbDriver.raw(_selectQb.builder).wrap('(', ')'), - sanitize(column.title), + sanitize(column.id), ]); selectors.push(selectQb); - groupBySelectors.push(sanitize(column.title)); + groupBySelectors.push(sanitize(column.id)); } break; default: selectors.push( - this.dbDriver.raw('?? as ??', [ - column.column_name, - column.title, - ]), + this.dbDriver.raw('?? as ??', [column.column_name, column.id]), ); - groupBySelectors.push(sanitize(column.title)); + groupBySelectors.push(sanitize(column.id)); break; } }), @@ -2099,11 +2098,10 @@ class BaseModelSqlv2 { // the value 2023-01-01 10:00:00 (UTC) would display as 2023-01-01 18:00:00 (UTC+8) // our existing logic is based on UTC, during the query, we need to take the UTC value // hence, we use CONVERT_TZ to convert back to UTC value - res[sanitize(column.title || column.column_name)] = - this.dbDriver.raw( - `CONVERT_TZ(??, @@GLOBAL.time_zone, '+00:00')`, - [`${sanitize(alias || this.tnPath)}.${column.column_name}`], - ); + res[sanitize(column.id || column.column_name)] = this.dbDriver.raw( + `CONVERT_TZ(??, @@GLOBAL.time_zone, '+00:00')`, + [`${sanitize(alias || this.tnPath)}.${column.column_name}`], + ); break; } else if (this.isPg) { // if there is no timezone info, @@ -2113,7 +2111,7 @@ class BaseModelSqlv2 { column.dt !== 'timestamp with time zone' && column.dt !== 'timestamptz' ) { - res[sanitize(column.title || column.column_name)] = this.dbDriver + res[sanitize(column.id || column.column_name)] = this.dbDriver .raw( `?? AT TIME ZONE CURRENT_SETTING('timezone') AT TIME ZONE 'UTC'`, [`${sanitize(alias || this.tnPath)}.${column.column_name}`], @@ -2126,7 +2124,7 @@ class BaseModelSqlv2 { // convert to database timezone, // then convert to UTC if (column.dt !== 'datetimeoffset') { - res[sanitize(column.title || column.column_name)] = + res[sanitize(column.id || column.column_name)] = this.dbDriver.raw( `CONVERT(DATETIMEOFFSET, ?? AT TIME ZONE 'UTC')`, [`${sanitize(alias || this.tnPath)}.${column.column_name}`], @@ -2134,7 +2132,7 @@ class BaseModelSqlv2 { break; } } - res[sanitize(column.title || column.column_name)] = sanitize( + res[sanitize(column.id || column.column_name)] = sanitize( `${alias || this.tnPath}.${column.column_name}`, ); break; @@ -2197,7 +2195,7 @@ class BaseModelSqlv2 { aliasToColumnBuilder, ); qb.select({ - [column.title]: selectQb.builder, + [column.id]: selectQb.builder, }); } catch { continue; @@ -2205,7 +2203,7 @@ class BaseModelSqlv2 { break; default: { qb.select({ - [column.title]: barcodeValueColumn.column_name, + [column.id]: barcodeValueColumn.column_name, }); break; } @@ -2225,14 +2223,14 @@ class BaseModelSqlv2 { qb.select( this.dbDriver.raw(`?? as ??`, [ selectQb.builder, - sanitize(column.title), + sanitize(column.id), ]), ); } catch (e) { console.log(e); // return dummy select qb.select( - this.dbDriver.raw(`'ERR' as ??`, [sanitize(column.title)]), + this.dbDriver.raw(`'ERR' as ??`, [sanitize(column.id)]), ); } } @@ -2249,13 +2247,13 @@ class BaseModelSqlv2 { alias, columnOptions: (await column.getColOptions()) as RollupColumn, }) - ).builder.as(sanitize(column.title)), + ).builder.as(sanitize(column.id)), ); break; default: if (this.isPg) { if (column.dt === 'bytea') { - res[sanitize(column.title || column.column_name)] = + res[sanitize(column.id || column.column_name)] = this.dbDriver.raw( `encode(??.??, '${ column.meta?.format === 'hex' ? 'hex' : 'escape' @@ -2266,7 +2264,7 @@ class BaseModelSqlv2 { } } - res[sanitize(column.title || column.column_name)] = sanitize( + res[sanitize(column.id || column.column_name)] = sanitize( `${alias || this.tnPath}.${column.column_name}`, ); break; @@ -2315,9 +2313,9 @@ class BaseModelSqlv2 { const query = this.dbDriver(this.tnPath).insert(insertObj); if ((this.isPg || this.isMssql) && this.model.primaryKey) { query.returning( - `${this.model.primaryKey.column_name} as ${this.model.primaryKey.title}`, + `${this.model.primaryKey.column_name} as ${this.model.primaryKey.id}`, ); - response = await this.execAndParse(query); + response = await this.execAndParse(query, null, { raw: true }); } const ai = this.model.columns.find((c) => c.ai); @@ -2329,7 +2327,7 @@ class BaseModelSqlv2 { if (ag) { if (!response) await this.execAndParse(query); response = await this.readByPk( - data[ag.title], + insertObj[ag.column_name], false, {}, { ignoreView: true, getHiddenColumn: true }, @@ -2380,8 +2378,8 @@ class BaseModelSqlv2 { } } else if (ai) { const id = Array.isArray(response) - ? response?.[0]?.[ai.title] - : response?.[ai.title]; + ? response?.[0]?.[ai.id] + : response?.[ai.id]; response = await this.readByPk( id, false, @@ -2677,9 +2675,9 @@ class BaseModelSqlv2 { if (this.isPg || this.isMssql) { query.returning( - `${this.model.primaryKey.column_name} as ${this.model.primaryKey.title}`, + `${this.model.primaryKey.column_name} as ${this.model.primaryKey.id}`, ); - response = await this.execAndParse(query); + response = await this.execAndParse(query, null, { raw: true }); } const ai = this.model.columns.find((c) => c.ai); @@ -2691,7 +2689,7 @@ class BaseModelSqlv2 { if (ag) { if (!response) await this.execAndParse(query); response = await this.readByPk( - data[ag.title], + insertObj[ag.column_name], false, {}, { ignoreView: true, getHiddenColumn: true }, @@ -2749,8 +2747,8 @@ class BaseModelSqlv2 { } } else if (ai) { rowId = Array.isArray(response) - ? response?.[0]?.[ai.title] - : response?.[ai.title]; + ? response?.[0]?.[ai.id] + : response?.[ai.id]; } await Promise.all(postInsertOps.map((f) => f(rowId))); @@ -4223,11 +4221,11 @@ class BaseModelSqlv2 { const groupedResult = result.reduce>( (aggObj, row) => { - if (!aggObj.has(row[column.title])) { - aggObj.set(row[column.title], []); + if (!aggObj.has(row[column.id])) { + aggObj.set(row[column.id], []); } - aggObj.get(row[column.title]).push(row); + aggObj.get(row[column.id]).push(row); return aggObj; }, @@ -4324,11 +4322,13 @@ class BaseModelSqlv2 { options: { skipDateConversion?: boolean; skipAttachmentConversion?: boolean; + skipSubstitutingColumnIds?: boolean; raw?: boolean; // alias for skipDateConversion and skipAttachmentConversion first?: boolean; } = { skipDateConversion: false, skipAttachmentConversion: false, + skipSubstitutingColumnIds: false, raw: false, first: false, }, @@ -4336,6 +4336,7 @@ class BaseModelSqlv2 { if (options.raw) { options.skipDateConversion = true; options.skipAttachmentConversion = true; + options.skipSubstitutingColumnIds = true; } if (options.first && typeof qb !== 'string') { @@ -4368,6 +4369,10 @@ class BaseModelSqlv2 { data = this.convertDateFormat(data, childTable); } + if (!options.skipSubstitutingColumnIds) { + data = this.substituteColumnIdsWithColumnTitles(data, childTable); + } + if (options.first) { return data?.[0]; } @@ -4375,6 +4380,35 @@ class BaseModelSqlv2 { return data; } + protected substituteColumnIdsWithColumnTitles( + data: Record[], + childTable?: Model, + ) { + const modelColumns = this.model?.columns.concat(childTable?.columns ?? []); + + if (!modelColumns || !data.length) { + return data; + } + + const idToAliasMap: Record = {}; + + modelColumns.forEach((col) => { + idToAliasMap[col.id] = col.title; + }); + + data.forEach((item) => { + Object.entries(item).forEach(([key, value]) => { + const alias = idToAliasMap[key]; + if (alias) { + item[alias] = value; + delete item[key]; + } + }); + }); + + return data; + } + protected async _convertAttachmentType( attachmentColumns: Record[], d: Record, @@ -4383,12 +4417,12 @@ class BaseModelSqlv2 { if (d) { const promises = []; for (const col of attachmentColumns) { - if (d[col.title] && typeof d[col.title] === 'string') { - d[col.title] = JSON.parse(d[col.title]); + if (d[col.id] && typeof d[col.id] === 'string') { + d[col.id] = JSON.parse(d[col.id]); } - if (d[col.title]?.length) { - for (const attachment of d[col.title]) { + if (d[col.id]?.length) { + for (const attachment of d[col.id]) { // we expect array of array of attachments in case of lookup if (Array.isArray(attachment)) { for (const lookedUpAttachment of attachment) { @@ -4502,24 +4536,24 @@ class BaseModelSqlv2 { ) { if (!d) return d; for (const col of dateTimeColumns) { - if (!d[col.title]) continue; + if (!d[col.id]) continue; if (col.uidt === UITypes.Formula) { - if (!d[col.title] || typeof d[col.title] !== 'string') { + if (!d[col.id] || typeof d[col.id] !== 'string') { continue; } // remove milliseconds if (this.isMySQL) { - d[col.title] = d[col.title].replace(/\.000000/g, ''); + d[col.id] = d[col.id].replace(/\.000000/g, ''); } else if (this.isMssql) { - d[col.title] = d[col.title].replace(/\.0000000 \+00:00/g, ''); + d[col.id] = d[col.id].replace(/\.0000000 \+00:00/g, ''); } - if (/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/g.test(d[col.title])) { + if (/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/g.test(d[col.id])) { // convert ISO string (e.g. in MSSQL) to YYYY-MM-DD hh:mm:ssZ // e.g. 2023-05-18T05:30:00.000Z -> 2023-05-18 11:00:00+05:30 - d[col.title] = d[col.title].replace( + d[col.id] = d[col.id].replace( /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/g, (d: string) => { if (!dayjs(d).isValid()) return d; @@ -4536,7 +4570,7 @@ class BaseModelSqlv2 { // convert all date time values to utc // the datetime is either YYYY-MM-DD hh:mm:ss (xcdb) // or YYYY-MM-DD hh:mm:ss+/-xx:yy (ext) - d[col.title] = d[col.title].replace( + d[col.id] = d[col.id].replace( /\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(?:[+-]\d{2}:\d{2})?/g, (d: string) => { if (!dayjs(d).isValid()) { @@ -4576,15 +4610,15 @@ class BaseModelSqlv2 { if (this.isSqlite) { if (!col.cdf) { if ( - d[col.title].indexOf('-') === -1 && - d[col.title].indexOf('+') === -1 && - d[col.title].slice(-1) !== 'Z' + d[col.id].indexOf('-') === -1 && + d[col.id].indexOf('+') === -1 && + d[col.id].slice(-1) !== 'Z' ) { // if there is no timezone info, // we assume the input is on NocoDB server timezone // then we convert to UTC from server timezone // e.g. 2023-04-27 10:00:00 (IST) -> 2023-04-27 04:30:00+00:00 - d[col.title] = dayjs(d[col.title]) + d[col.id] = dayjs(d[col.id]) .tz(Intl.DateTimeFormat().resolvedOptions().timeZone) .utc() .format('YYYY-MM-DD HH:mm:ssZ'); @@ -4602,14 +4636,14 @@ class BaseModelSqlv2 { keepLocalTime = false; } - if (d[col.title] instanceof Date) { + if (d[col.id] instanceof Date) { // e.g. MSSQL // Wed May 10 2023 17:47:46 GMT+0800 (Hong Kong Standard Time) keepLocalTime = false; } // e.g. 01.01.2022 10:00:00+05:30 -> 2022-01-01 04:30:00+00:00 // e.g. 2023-05-09 11:41:49 -> 2023-05-09 11:41:49+00:00 - d[col.title] = dayjs(d[col.title]) + d[col.id] = dayjs(d[col.id]) // keep the local time .utc(keepLocalTime) // show the timezone even for Mysql @@ -5413,7 +5447,9 @@ export function _wherePk(primaryKeys: Column[], id: unknown | unknown[]) { if (id && typeof id === 'object' && !Array.isArray(id)) { // verify all pk columns are present in id object for (const pk of primaryKeys) { - if (pk.title in id) { + if (pk.id in id) { + where[pk.column_name] = id[pk.id]; + } else if (pk.title in id) { where[pk.column_name] = id[pk.title]; } else if (pk.column_name in id) { where[pk.column_name] = id[pk.column_name]; From 7f01d0ccabd68ff37f043d89f7985d5e5ae9e334 Mon Sep 17 00:00:00 2001 From: mertmit Date: Wed, 22 Nov 2023 11:40:44 +0000 Subject: [PATCH 097/279] fix: bt substitution --- packages/nocodb/src/db/BaseModelSqlv2.ts | 47 ++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/packages/nocodb/src/db/BaseModelSqlv2.ts b/packages/nocodb/src/db/BaseModelSqlv2.ts index 089d5fc586..10e984c5eb 100644 --- a/packages/nocodb/src/db/BaseModelSqlv2.ts +++ b/packages/nocodb/src/db/BaseModelSqlv2.ts @@ -1745,7 +1745,7 @@ class BaseModelSqlv2 { applyPaginate(qb, rest); const proto = await parentModel.getProto(); - const data = await this.execAndParse(qb, childTable); + const data = await this.execAndParse(qb, parentTable); return data.map((c) => { c.__proto__ = proto; @@ -4370,7 +4370,7 @@ class BaseModelSqlv2 { } if (!options.skipSubstitutingColumnIds) { - data = this.substituteColumnIdsWithColumnTitles(data, childTable); + data = await this.substituteColumnIdsWithColumnTitles(data, childTable); } if (options.first) { @@ -4380,7 +4380,7 @@ class BaseModelSqlv2 { return data; } - protected substituteColumnIdsWithColumnTitles( + protected async substituteColumnIdsWithColumnTitles( data: Record[], childTable?: Model, ) { @@ -4391,16 +4391,55 @@ class BaseModelSqlv2 { } const idToAliasMap: Record = {}; + const idToAliasPromiseMap: Record> = {}; + const btMap: Record = {}; modelColumns.forEach((col) => { idToAliasMap[col.id] = col.title; + if (col.colOptions?.type === 'bt') { + btMap[col.id] = true; + const btData = Object.values(data).find( + (d) => d[col.id] && Object.keys(d[col.id]), + ); + if (btData) { + for (const k of Object.keys(btData[col.id])) { + const btAlias = idToAliasMap[k]; + if (!btAlias) { + idToAliasPromiseMap[k] = Column.get({ colId: k }).then((col) => { + return col.title; + }); + } + } + } + } else { + btMap[col.id] = false; + } }); + for (const k of Object.keys(idToAliasPromiseMap)) { + idToAliasMap[k] = await idToAliasPromiseMap[k]; + } + data.forEach((item) => { Object.entries(item).forEach(([key, value]) => { const alias = idToAliasMap[key]; if (alias) { - item[alias] = value; + if (btMap[key]) { + if (value) { + const tempObj = {}; + Object.entries(value).forEach(([k, v]) => { + const btAlias = idToAliasMap[k]; + if (btAlias) { + tempObj[btAlias] = v; + } + }); + item[alias] = tempObj; + } else { + item[alias] = value; + } + } else { + item[alias] = value; + } delete item[key]; } }); From 88720651766006221c020db439bafc4ff720b246 Mon Sep 17 00:00:00 2001 From: mertmit Date: Wed, 22 Nov 2023 11:40:44 +0000 Subject: [PATCH 098/279] fix: groupedList --- packages/nocodb/src/db/BaseModelSqlv2.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/nocodb/src/db/BaseModelSqlv2.ts b/packages/nocodb/src/db/BaseModelSqlv2.ts index 10e984c5eb..727dceb90f 100644 --- a/packages/nocodb/src/db/BaseModelSqlv2.ts +++ b/packages/nocodb/src/db/BaseModelSqlv2.ts @@ -4221,11 +4221,11 @@ class BaseModelSqlv2 { const groupedResult = result.reduce>( (aggObj, row) => { - if (!aggObj.has(row[column.id])) { - aggObj.set(row[column.id], []); + if (!aggObj.has(row[column.title])) { + aggObj.set(row[column.title], []); } - aggObj.get(row[column.id]).push(row); + aggObj.get(row[column.title]).push(row); return aggObj; }, From df2f175d788e7083ee79bb81269674587ce78041 Mon Sep 17 00:00:00 2001 From: mertmit Date: Wed, 22 Nov 2023 11:40:45 +0000 Subject: [PATCH 099/279] fix: btRead --- packages/nocodb/src/db/BaseModelSqlv2.ts | 28 ++++++++++++++++++------ 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/packages/nocodb/src/db/BaseModelSqlv2.ts b/packages/nocodb/src/db/BaseModelSqlv2.ts index 727dceb90f..fd658ff7e5 100644 --- a/packages/nocodb/src/db/BaseModelSqlv2.ts +++ b/packages/nocodb/src/db/BaseModelSqlv2.ts @@ -4804,7 +4804,9 @@ class BaseModelSqlv2 { if (parentTable.primaryKey.column_name !== parentColumn.column_name) childRowsQb.select(parentTable.primaryKey.column_name); - const childRows = await childRowsQb; + const childRows = await this.execAndParse(childRowsQb, null, { + raw: true, + }); if (childRows.length !== childIds.length) { const missingIds = childIds.filter( @@ -4863,7 +4865,9 @@ class BaseModelSqlv2 { ); } - const childRows = await childRowsQb; + const childRows = await this.execAndParse(childRowsQb, null, { + raw: true, + }); if (childRows.length !== childIds.length) { const missingIds = childIds.filter( @@ -4915,7 +4919,10 @@ class BaseModelSqlv2 { .where(_wherePk(parentTable.primaryKeys, childIds[0])) .first(); - const childRow = await childRowsQb; + const childRow = await this.execAndParse(childRowsQb, null, { + first: true, + raw: true, + }); if (!childRow) { NcError.unprocessableEntity( @@ -5034,7 +5041,9 @@ class BaseModelSqlv2 { if (parentTable.primaryKey.column_name !== parentColumn.column_name) childRowsQb.select(parentTable.primaryKey.column_name); - const childRows = await childRowsQb; + const childRows = await this.execAndParse(childRowsQb, null, { + raw: true, + }); if (childRows.length !== childIds.length) { const missingIds = childIds.filter( @@ -5080,7 +5089,9 @@ class BaseModelSqlv2 { .select(childTable.primaryKey.column_name) .whereIn(childTable.primaryKey.column_name, childIds); - const childRows = await childRowsQb; + const childRows = await this.execAndParse(childRowsQb, null, { + raw: true, + }); if (childRows.length !== childIds.length) { const missingIds = childIds.filter( @@ -5136,7 +5147,10 @@ class BaseModelSqlv2 { .where(_wherePk(parentTable.primaryKeys, childIds[0])) .first(); - const childRow = await childRowsQb; + const childRow = await this.execAndParse(childRowsQb, null, { + first: true, + raw: true, + }); if (!childRow) { NcError.unprocessableEntity( @@ -5228,7 +5242,7 @@ class BaseModelSqlv2 { await parentModel.selectObject({ qb, fieldsSet: args.fieldSet }); - const parent = await this.execAndParse(qb, childTable, { + const parent = await this.execAndParse(qb, parentTable, { first: true, }); From 98581b4735b2efe31194449ec7e6b9c7bb380f47 Mon Sep 17 00:00:00 2001 From: mertmit Date: Wed, 22 Nov 2023 11:40:45 +0000 Subject: [PATCH 100/279] fix: qr and barcode columns --- packages/nocodb/src/db/BaseModelSqlv2.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/nocodb/src/db/BaseModelSqlv2.ts b/packages/nocodb/src/db/BaseModelSqlv2.ts index fd658ff7e5..371d8c5e8d 100644 --- a/packages/nocodb/src/db/BaseModelSqlv2.ts +++ b/packages/nocodb/src/db/BaseModelSqlv2.ts @@ -570,6 +570,7 @@ class BaseModelSqlv2 { .getColOptions() .then((col) => col.getValueColumn())), title: column.title, + id: column.id, }); groupByColumns[column.id] = column; @@ -753,6 +754,7 @@ class BaseModelSqlv2 { .getColOptions() .then((col) => col.getValueColumn())), title: column.title, + id: column.id, }); switch (column.uidt) { From 4ad4ac2cd34da66e04cf176e012fbb6d1548daaa Mon Sep 17 00:00:00 2001 From: mertmit Date: Wed, 22 Nov 2023 11:40:45 +0000 Subject: [PATCH 101/279] fix: grouped data list count --- packages/nocodb/src/db/BaseModelSqlv2.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/nocodb/src/db/BaseModelSqlv2.ts b/packages/nocodb/src/db/BaseModelSqlv2.ts index 371d8c5e8d..14aebe9847 100644 --- a/packages/nocodb/src/db/BaseModelSqlv2.ts +++ b/packages/nocodb/src/db/BaseModelSqlv2.ts @@ -4312,7 +4312,8 @@ class BaseModelSqlv2 { await this.selectObject({ qb, - columns: [new Column({ ...column, title: 'key' })], + // replace id with 'key' as we select as id + columns: [new Column({ ...column, title: 'key', id: 'key' })], }); return await this.execAndParse(qb); From 89a8c053d389f7d68aa70630ce18cb559babefaa Mon Sep 17 00:00:00 2001 From: mertmit Date: Wed, 22 Nov 2023 11:40:45 +0000 Subject: [PATCH 102/279] fix: use raw for update query --- packages/nocodb/src/db/BaseModelSqlv2.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nocodb/src/db/BaseModelSqlv2.ts b/packages/nocodb/src/db/BaseModelSqlv2.ts index 14aebe9847..d3e385f9ec 100644 --- a/packages/nocodb/src/db/BaseModelSqlv2.ts +++ b/packages/nocodb/src/db/BaseModelSqlv2.ts @@ -2563,7 +2563,7 @@ class BaseModelSqlv2 { .update(updateObj) .where(await this._wherePk(id)); - await this.execAndParse(query); + await this.execAndParse(query, null, { raw: true }); // const newData = await this.readByPk(id, false, {}, { ignoreView: true , getHiddenColumn: true}); From b23b578f08cec75d7944383888af7c8bc0c76855 Mon Sep 17 00:00:00 2001 From: Raju Udava <86527202+dstala@users.noreply.github.com> Date: Wed, 22 Nov 2023 20:33:45 +0530 Subject: [PATCH 103/279] fix: delete for formula in fields menu Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> --- packages/nc-gui/components/smartsheet/details/Fields.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/nc-gui/components/smartsheet/details/Fields.vue b/packages/nc-gui/components/smartsheet/details/Fields.vue index d8193848dd..489272e0e8 100644 --- a/packages/nc-gui/components/smartsheet/details/Fields.vue +++ b/packages/nc-gui/components/smartsheet/details/Fields.vue @@ -625,7 +625,7 @@ onKeyDown('ArrowUp', () => { }) onKeyDown('Delete', () => { - if (document.activeElement?.tagName === 'INPUT') return + if (document.activeElement?.tagName === 'TEXTAREA') return const isDeletedField = fieldStatus(activeField.value) === 'delete' if (!isDeletedField && activeField.value) { onFieldDelete(activeField.value) @@ -633,7 +633,7 @@ onKeyDown('Delete', () => { }) onKeyDown('Backspace', () => { - if (document.activeElement?.tagName === 'INPUT') return + if (document.activeElement?.tagName === 'TEXTAREA') return const isDeletedField = fieldStatus(activeField.value) === 'delete' if (!isDeletedField && activeField.value) { onFieldDelete(activeField.value) @@ -641,7 +641,7 @@ onKeyDown('Backspace', () => { }) onKeyDown('ArrowRight', () => { - if (document.activeElement?.tagName === 'INPUT') return + if (document.activeElement?.tagName === 'TEXTAREA') return if (activeField.value) { const input = document.querySelector('.nc-fields-input') if (input) { From 2d906e99b58c157f7f213d701f0dfc9a51bcecb1 Mon Sep 17 00:00:00 2001 From: Muhammed Mustafa Date: Wed, 22 Nov 2023 15:17:29 +0000 Subject: [PATCH 104/279] fix: Show skelton loader immediatly when a table is opened --- .../dashboard/TreeView/TableNode.vue | 10 ++- .../components/smartsheet/grid/Table.vue | 13 +++- .../nc-gui/components/tabs/Smartsheet.vue | 14 ++--- packages/nc-gui/composables/useTableNew.ts | 62 ++++++++++++++----- 4 files changed, 73 insertions(+), 26 deletions(-) diff --git a/packages/nc-gui/components/dashboard/TreeView/TableNode.vue b/packages/nc-gui/components/dashboard/TreeView/TableNode.vue index 1e29a1ef5f..577c13977c 100644 --- a/packages/nc-gui/components/dashboard/TreeView/TableNode.vue +++ b/packages/nc-gui/components/dashboard/TreeView/TableNode.vue @@ -9,7 +9,7 @@ import { ProjectRoleInj, TreeViewInj, useNuxtApp, useRoles, useTabs } from '#imp const props = withDefaults( defineProps<{ base: BaseType - table: TableType + table: TableType & { isViewsLoading?: boolean } sourceIndex: number }>(), { sourceIndex: 0 }, @@ -174,7 +174,15 @@ const isTableOpened = computed(() => { class="nc-sidebar-node-btn nc-sidebar-expand" @click.stop="onExpand" > +
diff --git a/packages/nc-gui/composables/useTableNew.ts b/packages/nc-gui/composables/useTableNew.ts index 88f15b6f23..38e150101b 100644 --- a/packages/nc-gui/composables/useTableNew.ts +++ b/packages/nc-gui/composables/useTableNew.ts @@ -58,7 +58,12 @@ export function useTableNew(param: { onTableCreate?: (tableMeta: TableType) => v const tables = computed(() => baseTables.value.get(param.baseId) || []) const base = computed(() => bases.value.get(param.baseId)) - const openTable = async (table: TableType) => { + const openTable = async ( + table: TableType & { + isMetaLoading?: boolean + isViewsLoading?: boolean + }, + ) => { if (!table.base_id) return let base = bases.value.get(table.base_id) @@ -82,24 +87,49 @@ export function useTableNew(param: { onTableCreate?: (tableMeta: TableType) => v baseIdOrBaseId = route.value.params.baseId as string } - await getMeta(table.id as string, (route.value.params?.viewId as string) !== table.id) + const navigateToTable = async () => { + if (openedViewsTab.value === 'view') { + await navigateTo({ + path: `/${workspaceIdOrType}/${baseIdOrBaseId}/${table?.id}`, + query: route.value.query, + }) + } - await loadViews({ tableId: table.id as string }) + table.isViewsLoading = true - const views = viewsByTable.value.get(table.id as string) ?? [] - if (openedViewsTab.value !== 'view' && views.length && views[0].id) { - // find the default view and navigate to it, if not found navigate to the first one - const defaultView = views.find((v) => v.is_default) || views[0] + try { + await loadViews({ tableId: table.id as string }) - await navigateTo({ - path: `/${workspaceIdOrType}/${baseIdOrBaseId}/${table?.id}/${defaultView.id}/${openedViewsTab.value}`, - query: route.value.query, - }) - } else - await navigateTo({ - path: `/${workspaceIdOrType}/${baseIdOrBaseId}/${table?.id}`, - query: route.value.query, - }) + const views = viewsByTable.value.get(table.id as string) ?? [] + if (openedViewsTab.value !== 'view' && views.length && views[0].id) { + // find the default view and navigate to it, if not found navigate to the first one + const defaultView = views.find((v) => v.is_default) || views[0] + + await navigateTo({ + path: `/${workspaceIdOrType}/${baseIdOrBaseId}/${table?.id}/${defaultView.id}/${openedViewsTab.value}`, + query: route.value.query, + }) + } + } catch (e) { + console.error(e) + } finally { + table.isViewsLoading = false + } + } + + const loadTableMeta = async () => { + table.isMetaLoading = true + + try { + await getMeta(table.id as string) + } catch (e) { + console.error(e) + } finally { + table.isMetaLoading = false + } + } + + await Promise.all([navigateToTable(), loadTableMeta()]) } const createTable = async () => { From 3b4b15d57f646fb64d43625e170620ca6e9fdc8a Mon Sep 17 00:00:00 2001 From: Muhammed Mustafa Date: Wed, 22 Nov 2023 15:17:29 +0000 Subject: [PATCH 105/279] fix: Show skelton loader immediatly when a table is opened --- .../dashboard/TreeView/TableNode.vue | 9 ++++--- .../components/smartsheet/Pagination.vue | 8 +++--- .../components/smartsheet/grid/Table.vue | 25 +++---------------- packages/nc-gui/composables/useTableNew.ts | 9 +++---- packages/nc-gui/composables/useViewData.ts | 2 ++ packages/nc-gui/lib/types.ts | 8 +++++- packages/nc-gui/store/tables.ts | 3 ++- packages/nc-gui/store/views.ts | 8 +++--- 8 files changed, 30 insertions(+), 42 deletions(-) diff --git a/packages/nc-gui/components/dashboard/TreeView/TableNode.vue b/packages/nc-gui/components/dashboard/TreeView/TableNode.vue index 577c13977c..95c1380988 100644 --- a/packages/nc-gui/components/dashboard/TreeView/TableNode.vue +++ b/packages/nc-gui/components/dashboard/TreeView/TableNode.vue @@ -5,11 +5,12 @@ import { message } from 'ant-design-vue' import { storeToRefs } from 'pinia' import { ProjectRoleInj, TreeViewInj, useNuxtApp, useRoles, useTabs } from '#imports' +import type { SidebarTableNode } from '~/lib' const props = withDefaults( defineProps<{ base: BaseType - table: TableType & { isViewsLoading?: boolean } + table: SidebarTableNode sourceIndex: number }>(), { sourceIndex: 0 }, @@ -44,7 +45,7 @@ provide(SidebarTableInj, table) const { setMenuContext, openRenameTableDialog, duplicateTable } = inject(TreeViewInj)! const { loadViews: _loadViews } = useViewsStore() -const { activeView } = storeToRefs(useViewsStore()) +const { activeView, activeViewTitleOrId } = storeToRefs(useViewsStore()) const { isLeftSidebarOpen } = storeToRefs(useSidebarStore()) // todo: temp @@ -135,7 +136,7 @@ watch( ) const isTableOpened = computed(() => { - return openedTableId.value === table.value?.id && activeView.value?.is_default + return openedTableId.value === table.value?.id && (activeView.value?.is_default || !activeViewTitleOrId.value) }) @@ -176,7 +177,7 @@ const isTableOpened = computed(() => { > vPaginationData.value?.pageSize ?? 25) const page = computed({ get: () => vPaginationData?.value?.page ?? 1, set: async (p) => { - isViewDataLoading.value = true + isPaginationLoading.value = true try { await changePage?.(p) - isViewDataLoading.value = false + isPaginationLoading.value = false } catch (e) { if (axios.isCancel(e)) { return } - isViewDataLoading.value = false + isPaginationLoading.value = false } }, }) @@ -100,7 +100,7 @@ const renderAltOrOptlKey = () => { 'ml-8': alignLeft, }" > -
+
{ reloadViewDataHook?.on(reloadViewDataHandler) openNewRecordFormHook?.on(openNewRecordHandler) -// TODO: Use CSS animations -const showLoaderAfterDelay = ref(false) -watch([isViewDataLoading, showSkeleton, isPaginationLoading], () => { - if (!isViewDataLoading.value && !showSkeleton.value && !isPaginationLoading.value) { - showLoaderAfterDelay.value = false - - return - } - - showLoaderAfterDelay.value = false - - setTimeout(() => { - showLoaderAfterDelay.value = true - }, 500) -}) - // #Watchers // reset context menu target on hide @@ -1226,7 +1210,7 @@ const handleCellClick = (event: MouseEvent, row: number, col: number) => { } const loaderText = computed(() => { - if (isViewDataLoading.value) { + if (isPaginationLoading.value) { if (paginationDataRef.value?.totalRows && paginationDataRef.value?.pageSize) { return `Loading page
${paginationDataRef.value.page} of ${Math.ceil( paginationDataRef.value?.totalRows / paginationDataRef.value?.pageSize, @@ -1265,10 +1249,7 @@ onKeyStroke('ArrowDown', onDown) >
-
+
@@ -1793,7 +1774,7 @@ onKeyStroke('ArrowDown', onDown) :extra-style="paginationStyleRef?.extraStyle" > @@ -927,7 +955,13 @@ const onFieldOptionUpdate = () => { @click="changeField(displayColumn, $event)" >
- + { :preload="fieldState(activeField)" :table-explorer-columns="fields" embed-mode + :readonly="isLocked" from-table-explorer @update="onFieldUpdate" @add="onFieldAdd" From 0eaec112542b0e6c15378e908173c8089e6d2e45 Mon Sep 17 00:00:00 2001 From: Muhammed Mustafa Date: Thu, 23 Nov 2023 07:02:55 +0000 Subject: [PATCH 110/279] fix: Made share view toggle locked in locked mode --- .../components/dlg/share-and-collaborate/SharePage.vue | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/nc-gui/components/dlg/share-and-collaborate/SharePage.vue b/packages/nc-gui/components/dlg/share-and-collaborate/SharePage.vue index 386c7b9d38..0c609b1742 100644 --- a/packages/nc-gui/components/dlg/share-and-collaborate/SharePage.vue +++ b/packages/nc-gui/components/dlg/share-and-collaborate/SharePage.vue @@ -16,6 +16,8 @@ const { metas } = useMetas() const workspaceStore = useWorkspace() +const isLocked = inject(IsLockedInj, ref(false)) + const isUpdating = ref({ public: false, password: false, @@ -269,10 +271,6 @@ function onChangeTheme(color: string) { const isPublicShared = computed(() => { return !!activeView.value?.uuid }) - -const isPublicShareDisabled = computed(() => { - return false -})