Browse Source

Release v0.84.8 (#1007)

* chore: include develop branch

Signed-off-by: Wing-Kam Wong <wingkwong.code@gmail.com>

* fix: add proper spacing in left navigation drawer (#994)

re #993

Signed-off-by: Pranav C <pranavxc@gmail.com>

* l10n(zh_TW): reviewed and translated all

Extended from #995

Signed-off-by: pan93412 <pan93412@gmail.com>

* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

* fix: save record on enter/shift-enter key press (#1003)

closes #1002

Signed-off-by: Pranav C <pranavxc@gmail.com>

* Hotfix/cell update (#1006)

* fix: save record on enter/shift-enter key press

closes #1002

Signed-off-by: Pranav C <pranavxc@gmail.com>

* fix: update cell value after claering cell using delete key

closes #1005

Signed-off-by: Pranav C <pranavxc@gmail.com>

Co-authored-by: Wing-Kam Wong <wingkwong.code@gmail.com>

* chore(publish): v0.84.8

Signed-off-by: Pranav C <pranavxc@gmail.com>

Co-authored-by: Wing-Kam Wong <wingkwong.code@gmail.com>
Co-authored-by: pan93412 <pan93412@gmail.com>
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
pull/1026/head 0.84.8
Pranav C 3 years ago committed by GitHub
parent
commit
82a71afac4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      .all-contributorsrc
  2. 4
      .github/workflows/ci-cd.yml
  3. 1
      README.md
  4. 2
      packages/nc-gui/components/ProjectTreeView.vue
  5. 4
      packages/nc-gui/components/project/spreadsheet/components/editableCell.vue
  6. 2
      packages/nc-gui/components/project/spreadsheet/views/xcGridView.vue
  7. 134
      packages/nc-gui/lang/zh_TW.json
  8. 2
      packages/nc-lib-gui/package.json
  9. 18
      packages/nocodb/package-lock.json
  10. 4
      packages/nocodb/package.json

9
.all-contributorsrc

@ -603,6 +603,15 @@
"contributions": [ "contributions": [
"code" "code"
] ]
},
{
"login": "pan93412",
"name": "pan93412",
"avatar_url": "https://avatars.githubusercontent.com/u/28441561?v=4",
"profile": "http://blog.pan93.com",
"contributions": [
"code"
]
} }
], ],
"contributorsPerLine": 7, "contributorsPerLine": 7,

4
.github/workflows/ci-cd.yml

@ -4,14 +4,14 @@
name: "CI/CD" name: "CI/CD"
on: on:
push: push:
branches: [master, cypress] branches: [master, develop, cypress]
paths: paths:
- "packages/nc-gui/**" - "packages/nc-gui/**"
- "scripts/cypress/**" - "scripts/cypress/**"
- "packages/nocodb/**" - "packages/nocodb/**"
- ".github/workflows/ci-cd.yml" - ".github/workflows/ci-cd.yml"
pull_request: pull_request:
branches: [master] branches: [master, develop]
paths: paths:
- "packages/nc-gui/**" - "packages/nc-gui/**"
- "scripts/cypress/**" - "scripts/cypress/**"

1
README.md

@ -387,6 +387,7 @@ Our mission is to provide the most powerful no-code interface for databases whic
<td align="center"><a href="https://github.com/dubiao"><img src="https://avatars.githubusercontent.com/u/4001793?v=4?s=100" width="100px;" alt=""/><br /><sub><b></b></sub></a><br /><a href="https://github.com/nocodb/nocodb/commits?author=dubiao" title="Code">💻</a></td> <td align="center"><a href="https://github.com/dubiao"><img src="https://avatars.githubusercontent.com/u/4001793?v=4?s=100" width="100px;" alt=""/><br /><sub><b></b></sub></a><br /><a href="https://github.com/nocodb/nocodb/commits?author=dubiao" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/willnewii"><img src="https://avatars.githubusercontent.com/u/652003?v=4?s=100" width="100px;" alt=""/><br /><sub><b>诗人的咸鱼</b></sub></a><br /><a href="https://github.com/nocodb/nocodb/commits?author=willnewii" title="Code">💻</a></td> <td align="center"><a href="https://github.com/willnewii"><img src="https://avatars.githubusercontent.com/u/652003?v=4?s=100" width="100px;" alt=""/><br /><sub><b>诗人的咸鱼</b></sub></a><br /><a href="https://github.com/nocodb/nocodb/commits?author=willnewii" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/bitbytejoy"><img src="https://avatars.githubusercontent.com/u/11807034?v=4?s=100" width="100px;" alt=""/><br /><sub><b>bitbytejoy</b></sub></a><br /><a href="https://github.com/nocodb/nocodb/commits?author=bitbytejoy" title="Code">💻</a></td> <td align="center"><a href="https://github.com/bitbytejoy"><img src="https://avatars.githubusercontent.com/u/11807034?v=4?s=100" width="100px;" alt=""/><br /><sub><b>bitbytejoy</b></sub></a><br /><a href="https://github.com/nocodb/nocodb/commits?author=bitbytejoy" title="Code">💻</a></td>
<td align="center"><a href="http://blog.pan93.com"><img src="https://avatars.githubusercontent.com/u/28441561?v=4?s=100" width="100px;" alt=""/><br /><sub><b>pan93412</b></sub></a><br /><a href="https://github.com/nocodb/nocodb/commits?author=pan93412" title="Code">💻</a></td>
</tr> </tr>
</table> </table>

2
packages/nc-gui/components/ProjectTreeView.vue

@ -12,7 +12,7 @@
permanent permanent
mini-variant-width="50" mini-variant-width="50"
class="pl-2 nc-nav-drawer" class="pl-2 nc-nav-drawer"
style="min-width: 100%; height: calc(100% - 0px)" style="min-width: 100%; height: calc(100% - 30px)"
> >
<div class="h-100 d-flex flex-column"> <div class="h-100 d-flex flex-column">
<div class="flex-grow-1" style="overflow-y: auto; min-height: 200px"> <div class="flex-grow-1" style="overflow-y: auto; min-height: 200px">

4
packages/nc-gui/components/project/spreadsheet/components/editableCell.vue

@ -5,8 +5,8 @@
@keydown.stop.right @keydown.stop.right
@keydown.stop.up @keydown.stop.up
@keydown.stop.down @keydown.stop.down
@keydown.stop.enter.exact="changed=false,$emit('save'),$emit('navigateToNext')" @keydown.stop.enter.exact="$emit('save'),$emit('navigateToNext')"
@keydown.stop.shift.enter.exact="changed=false,$emit('save'),$emit('navigateToPrev')" @keydown.stop.shift.enter.exact="$emit('save'),$emit('navigateToPrev')"
> >
<editable-attachment-cell <editable-attachment-cell
v-if="isAttachment" v-if="isAttachment"

2
packages/nc-gui/components/project/spreadsheet/views/xcGridView.vue

@ -498,6 +498,8 @@ export default {
} }
this.$set(rowObj, columnObj._cn, null) this.$set(rowObj, columnObj._cn, null)
// update/save cell value
this.onCellValueChange(this.selected.col, this.selected.row, columnObj)
} }
break break
// left // left

134
packages/nc-gui/lang/zh_TW.json

@ -1,15 +1,15 @@
{ {
"projects": { "projects": {
"my_projects": "我的專案", "my_projects": "我的專案",
"reload_projects_tooltip": "重新整理", "reload_projects_tooltip": "重新整理專案",
"create_new_project_button": { "create_new_project_button": {
"text": "建立新專案", "text": "建立新專案",
"subtext_1": "建立", "subtext_1": "建立",
"subtext_1_tooltip": "建立新專案", "subtext_1_tooltip": "建立新專案",
"subtext_2": "連外部資料庫來建立", "subtext_2": "連線至外部資料庫來建立",
"subtext_2_tooltip": "支援 MySQL, PostgreSQL, SQL Server & SQLite", "subtext_2_tooltip": "支援 MySQL、PostgreSQL、SQL Server 和 SQLite",
"from_template": "從範本建立新專案", "from_template": "從模板建立專案",
"from_excel": "從 Excel 建立專案" "from_excel": "從 Excel 建立專案"
}, },
"search_project": "搜尋專案", "search_project": "搜尋專案",
"import_metadata": "匯入中繼資料", "import_metadata": "匯入中繼資料",
@ -17,20 +17,20 @@
"clear_metadata": "清除中繼資料", "clear_metadata": "清除中繼資料",
"stop_project": "停止專案", "stop_project": "停止專案",
"start_project": "啟動專案", "start_project": "啟動專案",
"restart_project": "重專案", "restart_project": "重啟專案",
"delete_project": "刪除專案", "delete_project": "刪除專案",
"project_api_type_tooltip_graphql": "可過 GraphQL API 存取", "project_api_type_tooltip_graphql": "可過 GraphQL API 存取",
"project_api_type_tooltip_rest": "可過 REST API 存取", "project_api_type_tooltip_rest": "可過 REST API 存取",
"project_empty_message": "開始建立新專案", "project_empty_message": "從建立新專案開始",
"import_button": { "import_button": {
"text": "通過上傳中繼資料 zip 檔案以匯入 NocoDB 專案" "text": "透過上傳中繼資料 ZIP 檔案來匯入 NocoDB 專案"
}, },
"show_community_star": "在 Github 上", "show_community_star": "在 Github 上",
"show_community_us_on_Github": "幫我們按讚", "show_community_us_on_Github": "幫我們按讚",
"show_community_book_a_free_demo": "預訂免費 Demo", "show_community_book_a_free_demo": "預訂免費 Demo",
"show_community_get_your_questions_answered": "讓您的問題得到解答", "show_community_get_your_questions_answered": "解惑您的問題",
"show_community_join_discord": "加入 Discord", "show_community_join_discord": "加入 Discord",
"show_community_join_reddit": "加入 /r/NocoDB", "show_community_follow_reddit": "加入 /r/NocoDB",
"show_community_follow_nocodb": "追蹤 NocoDB", "show_community_follow_nocodb": "追蹤 NocoDB",
"search": { "search": {
"your_search_found_no_results": "您的搜尋 {search} 找不到結果" "your_search_found_no_results": "您的搜尋 {search} 找不到結果"
@ -38,10 +38,10 @@
"ext_db": { "ext_db": {
"title": { "title": {
"edit": "編輯專案", "edit": "編輯專案",
"create": "建立專案" "create": "建立專案"
}, },
"project_name": "輸入專案名稱", "project_name": "輸入專案名稱",
"project_type": "透過...存取專案", "project_type": "存取專案方式",
"button": { "button": {
"save_project": "儲存專案", "save_project": "儲存專案",
"update_and_restart": "更新並重新啟動", "update_and_restart": "更新並重新啟動",
@ -52,24 +52,24 @@
"title": "資料庫憑證", "title": "資料庫憑證",
"db_type": "資料庫類型", "db_type": "資料庫類型",
"sqlite_file": "SQLite 檔案", "sqlite_file": "SQLite 檔案",
"host_address": "主機址", "host_address": "主機址",
"port": "通訊埠編號", "port": "連線埠號碼",
"username": "使用者名稱", "username": "使用者名稱",
"password": "密碼", "password": "密碼",
"db_create_if_not_exists": "資料庫:如果不存在則建立", "db_create_if_not_exists": "資料庫:不存在則建立",
"button": { "button": {
"test_db_conn": "測試資料庫連", "test_db_conn": "測試資料庫連",
"remove_db_from_env": "從環境中刪除資料庫" "remove_db_from_env": "從環境除資料庫"
}, },
"advanced": { "advanced": {
"title": "SSL 及進階參數", "title": "SSL 及進階參數",
"ssl": { "ssl": {
"client_key": { "client_key": {
"title": "戶端金鑰", "title": "戶端金鑰",
"toolip": "選擇 .key 檔案" "toolip": "選擇 .key 檔案"
}, },
"client_cert": { "client_cert": {
"title": "戶端憑證", "title": "戶端憑證",
"toolip": "選擇 .cert 檔案" "toolip": "選擇 .cert 檔案"
}, },
"server_ca": { "server_ca": {
@ -78,58 +78,58 @@
}, },
"preferred": "首選", "preferred": "首選",
"usage": { "usage": {
"no": "", "no": "",
"preferred": "首選", "preferred": "首選",
"required": "必填", "required": "必填",
"requried_ca": "必填-CA", "requried_ca": "必填 - CA",
"requried_identity": "必填-IDENTITY" "requried_identity": "必填 - IDENTITY"
} }
}, },
"inflection": { "inflection": {
"table_name": "拐點 - 表名", "table_name": "屈折 - 表格名稱",
"column_name": "拐點 - 列名稱" "column_name": "屈折 - 直行名稱"
}, },
"button": { "button": {
"edit_conn_json": "編輯連 JSON" "edit_conn_json": "編輯連 JSON"
} }
} }
}, },
"error": { "error": {
"invalid_char_in_folder_path": "文件夾路徑中的字符無效。", "invalid_char_in_folder_path": "資料夾路徑有無效字元。",
"invalid_db_credentials": "資料庫憑無效。", "invalid_db_credentials": "資料庫憑無效。",
"unable_to_connect_to_db": "無法連接資料庫,請檢查您的資料庫已啟動。", "unable_to_connect_to_db": "無法連線至資料庫。請檢查您的資料庫是否已經上線。",
"user_doesnt_ve_sufficient_permission": "使用者不存在或具有足夠的權限來創建架構。" "user_doesnt_ve_sufficient_permission": "使用者不存在,或者是無權建立結構。"
}, },
"head": { "head": {
"title": "建立新專案 | NocoDB" "title": "建立新專案NocoDB"
}, },
"dialog": { "dialog": {
"success": "連成功", "success": "連成功",
"failure": "連失敗:" "failure": "連失敗:"
} }
}, },
"notifications": { "notifications": {
"no_new": "沒有新通知", "no_new": "沒有新通知",
"clear": "清除" "clear": "清除"
} }
}, },
"signin": { "signin": {
"title": "登入", "title": "登入",
"enter_your_work_email": "輸入您的工作電子郵件地址", "enter_your_work_email": "輸入您的工作電子信箱地址",
"enter_your_password": "輸入您的密碼", "enter_your_password": "輸入您的密碼",
"forget_password": "忘記密碼?", "forget_password": "忘記密碼?",
"dont_ve_an_account": "沒有帳號?", "dont_ve_an_account": "沒有帳號?",
"sign_up": "註冊", "sign_up": "註冊",
"form": { "form": {
"rules": { "rules": {
"email_is_reqd": "電子郵件地址為必填", "email_is_reqd": "電子信箱地址為必填",
"email_must_be_valid": "電子郵件地址無效", "email_must_be_valid": "電子信箱地址格式錯誤",
"passwd_required": "密碼為必填", "passwd_required": "密碼為必填",
"passwd_must_be_8_chars": "您的密碼必須至少有 8 個字元" "passwd_must_be_8_chars": "您的密碼至少有 8 個字元"
} }
}, },
"head": { "head": {
"title": "登入 | NocoDB", "title": "登入NocoDB",
"meta": { "meta": {
"hid": "登入 NocoDB", "hid": "登入 NocoDB",
"name": "登入 NocoDB", "name": "登入 NocoDB",
@ -138,25 +138,25 @@
}, },
"password": { "password": {
"recovery": { "recovery": {
"title": "重置您的密碼", "title": "重密碼",
"message_1": "請提供您註冊時使用的電子郵件地址。", "message_1": "請填入您註冊時使用的電子信箱位址。",
"message_2": "我們將向您發送一封電子郵件,其中包含重置密碼的連結。", "message_2": "我們將傳給您一封電子郵件,其中包含重設密碼的連結。",
"success": "請檢查您的電子郵件信箱以重置密碼", "success": "請確認您的電子郵件以重設密碼",
"button": "傳送電子郵件" "button": "傳送電子郵件"
} }
} }
}, },
"signup": { "signup": {
"title": "註冊", "title": "註冊",
"you_will_be_the_super_admin": "你將成為「超級管理員」", "you_will_be_the_super_admin": "您將是「超級管理員」",
"already_ve_an_account": "已經有帳號了?" "already_ve_an_account": "已經有帳號了?"
}, },
"treeview": { "treeview": {
"settings": { "settings": {
"title": "設定", "title": "設定",
"tooltip": "僅建立者可見" "tooltip": "僅建立者可見"
}, },
"app_store": "應用商店", "app_store": "應用程式商店",
"team_n_auth": { "team_n_auth": {
"title": "團隊和認證", "title": "團隊和認證",
"tooltip": "角色和使用者管理" "tooltip": "角色和使用者管理"
@ -165,8 +165,12 @@
"title": "專案中繼資料", "title": "專案中繼資料",
"tooltip": "中繼資料管理" "tooltip": "中繼資料管理"
}, },
"preview_as": "預覽為", "audit": {
"reset_review": "重置預覽" "title": "稽核",
"tooltip": "稽核記錄"
},
"preview_as": "預覽方式",
"reset_review": "重設預覽"
}, },
"nav_drawer": { "nav_drawer": {
"title": "檢視表", "title": "檢視表",
@ -180,35 +184,35 @@
"caption": "僅對建立者可見", "caption": "僅對建立者可見",
"grid": { "grid": {
"title": "網格", "title": "網格",
"create": "新增網格檢視表" "create": "加入網格檢視表"
}, },
"gallery": { "gallery": {
"title": "圖庫", "title": "圖庫",
"create": "新增圖庫檢視表" "create": "加入圖庫檢視表"
}, },
"calendar": { "calendar": {
"title": "日曆", "title": "日曆",
"create": "新增日曆檢視表" "create": "加入日曆檢視表"
}, },
"kanban": { "kanban": {
"title": "看板", "title": "看板",
"create": "新增看板檢視表" "create": "加入看板檢視表"
}, },
"form": { "form": {
"title": "表單", "title": "表單",
"create": "新增表單檢視表" "create": "加入表單檢視表"
} }
}, },
"advanced": { "advanced": {
"title1": "分享檢視表", "title1": "分享檢視表",
"views_list": "檢視表", "views_list": "檢視表清單",
"copy_api_url": "複製 API 網址" "copy_api_url": "複製 API 網址"
}, },
"share_view": { "share_view": {
"title": "此檢視表通過私人連結共享", "title": "此檢視表通過私人連結共享",
"body": "具有私有連結的人只能看到此檢視表中可見的欄位", "body": "具有私有連結的人只能看到此檢視表中可見的儲存格",
"toggle": { "toggle": {
"option1": "限制密碼存取權限", "option1": "使用密碼限制存取權限",
"option2": "存取受密碼限制" "option2": "存取受密碼限制"
}, },
"password": { "password": {
@ -226,23 +230,23 @@
"meta": { "meta": {
"title": "中繼資料操作", "title": "中繼資料操作",
"export_to_file": { "export_to_file": {
"title": "匯出檔案", "title": "匯出檔案",
"desc": "將所有中繼資料從中繼資料表匯出至目錄。" "desc": "將所有中繼資料從中繼資料表匯出至中繼目錄。"
}, },
"import": { "import": {
"title": "匯入", "title": "匯入",
"desc": "將所有中繼資料從目錄匯入中繼資料表。" "desc": "將所有中繼資料從中繼目錄匯入中繼資料表。"
}, },
"export_to_zip": { "export_to_zip": {
"title": "匯出 zip", "title": "輸出 ZIP",
"desc": "將專案的中繼資料匯出成 zip 檔並下載。" "desc": "將專案中繼資料匯出為 ZIP 檔案並下載。"
}, },
"import_zip": { "import_zip": {
"title": "匯入 zip", "title": "匯入 ZIP",
"desc": "匯入專案的中繼資料 zip 檔案並重新啟動。" "desc": "匯入專案中繼資料 ZIP 檔案並重新啟動。"
}, },
"reset": { "reset": {
"title": "重", "title": "重",
"desc": "清除中繼資料表中的所有中繼資料。" "desc": "清除中繼資料表中的所有中繼資料。"
} }
} }

2
packages/nc-lib-gui/package.json

@ -1,6 +1,6 @@
{ {
"name": "nc-lib-gui", "name": "nc-lib-gui",
"version": "0.84.7", "version": "0.84.8",
"description": "> TODO: description", "description": "> TODO: description",
"author": "“pranavxc” <pranavxc@gmail.com>", "author": "“pranavxc” <pranavxc@gmail.com>",
"homepage": "https://gitlab.com/xgenecloud-ts/xgenecloud-ts#readme", "homepage": "https://gitlab.com/xgenecloud-ts/xgenecloud-ts#readme",

18
packages/nocodb/package-lock.json generated

@ -1,12 +1,12 @@
{ {
"name": "nocodb", "name": "nocodb",
"version": "0.84.6", "version": "0.84.7",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "nocodb", "name": "nocodb",
"version": "0.84.6", "version": "0.84.7",
"license": "AGPL-3.0-or-later", "license": "AGPL-3.0-or-later",
"dependencies": { "dependencies": {
"@google-cloud/storage": "^5.7.2", "@google-cloud/storage": "^5.7.2",
@ -67,7 +67,7 @@
"nanoid": "^3.1.20", "nanoid": "^3.1.20",
"nc-common": "0.0.6", "nc-common": "0.0.6",
"nc-help": "^0.2.30", "nc-help": "^0.2.30",
"nc-lib-gui": "0.84.7", "nc-lib-gui": "0.84.8",
"nc-plugin": "^0.1.1", "nc-plugin": "^0.1.1",
"ncp": "^2.0.0", "ncp": "^2.0.0",
"nodemailer": "^6.4.10", "nodemailer": "^6.4.10",
@ -15943,9 +15943,9 @@
} }
}, },
"node_modules/nc-lib-gui": { "node_modules/nc-lib-gui": {
"version": "0.84.7", "version": "0.84.8",
"resolved": "https://registry.npmjs.org/nc-lib-gui/-/nc-lib-gui-0.84.7.tgz", "resolved": "https://registry.npmjs.org/nc-lib-gui/-/nc-lib-gui-0.84.8.tgz",
"integrity": "sha512-ldUWySnI29nQ5bkDGI6Ru+lXwd/QJlQmHJp4RA/OX9cVZyyOpObvYCpu83MWXYmiaQBASvNsLKwNSooUeAmGng==", "integrity": "sha512-eaKH8oryxOv/gY/O57yE4THOtlU0NMFYlHskSBLlPUCjf1pQhYRE91jIt8bZtJl5N7IHWiQo3eeTbLPOkBxo9g==",
"dependencies": { "dependencies": {
"axios": "^0.19.2", "axios": "^0.19.2",
"body-parser": "^1.19.0", "body-parser": "^1.19.0",
@ -37219,9 +37219,9 @@
} }
}, },
"nc-lib-gui": { "nc-lib-gui": {
"version": "0.84.7", "version": "0.84.8",
"resolved": "https://registry.npmjs.org/nc-lib-gui/-/nc-lib-gui-0.84.7.tgz", "resolved": "https://registry.npmjs.org/nc-lib-gui/-/nc-lib-gui-0.84.8.tgz",
"integrity": "sha512-ldUWySnI29nQ5bkDGI6Ru+lXwd/QJlQmHJp4RA/OX9cVZyyOpObvYCpu83MWXYmiaQBASvNsLKwNSooUeAmGng==", "integrity": "sha512-eaKH8oryxOv/gY/O57yE4THOtlU0NMFYlHskSBLlPUCjf1pQhYRE91jIt8bZtJl5N7IHWiQo3eeTbLPOkBxo9g==",
"requires": { "requires": {
"axios": "^0.19.2", "axios": "^0.19.2",
"body-parser": "^1.19.0", "body-parser": "^1.19.0",

4
packages/nocodb/package.json

@ -1,6 +1,6 @@
{ {
"name": "nocodb", "name": "nocodb",
"version": "0.84.7", "version": "0.84.8",
"description": "NocoDB", "description": "NocoDB",
"main": "dist/bundle.js", "main": "dist/bundle.js",
"repository": "https://github.com/nocodb/nocodb", "repository": "https://github.com/nocodb/nocodb",
@ -148,7 +148,7 @@
"nanoid": "^3.1.20", "nanoid": "^3.1.20",
"nc-common": "0.0.6", "nc-common": "0.0.6",
"nc-help": "^0.2.30", "nc-help": "^0.2.30",
"nc-lib-gui": "0.84.7", "nc-lib-gui": "0.84.8",
"nc-plugin": "^0.1.1", "nc-plugin": "^0.1.1",
"ncp": "^2.0.0", "ncp": "^2.0.0",
"nodemailer": "^6.4.10", "nodemailer": "^6.4.10",

Loading…
Cancel
Save