mirror of
https://github.com/hcengineering/platform.git
synced 2026-09-13 21:27:46 +02:00
Merge branch 'develop' into staging-new
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
This commit is contained in:
Generated
+265
@@ -361,6 +361,15 @@ importers:
|
||||
'@rush-temp/love-resources':
|
||||
specifier: file:./projects/love-resources.tgz
|
||||
version: file:projects/love-resources.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@20.11.19)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(postcss-load-config@4.0.2(postcss@8.4.35)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)))(postcss@8.4.35)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))
|
||||
'@rush-temp/mail':
|
||||
specifier: file:./projects/mail.tgz
|
||||
version: file:projects/mail.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@20.11.19)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))
|
||||
'@rush-temp/mail-assets':
|
||||
specifier: file:./projects/mail-assets.tgz
|
||||
version: file:projects/mail-assets.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))
|
||||
'@rush-temp/mail-resources':
|
||||
specifier: file:./projects/mail-resources.tgz
|
||||
version: file:projects/mail-resources.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@20.11.19)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(postcss-load-config@4.0.2(postcss@8.4.35)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)))(postcss@8.4.35)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))
|
||||
'@rush-temp/middleware':
|
||||
specifier: file:./projects/middleware.tgz
|
||||
version: file:projects/middleware.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@20.11.19)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))
|
||||
@@ -439,9 +448,15 @@ importers:
|
||||
'@rush-temp/model-love':
|
||||
specifier: file:./projects/model-love.tgz
|
||||
version: file:projects/model-love.tgz
|
||||
'@rush-temp/model-mail':
|
||||
specifier: file:./projects/model-mail.tgz
|
||||
version: file:projects/model-mail.tgz
|
||||
'@rush-temp/model-notification':
|
||||
specifier: file:./projects/model-notification.tgz
|
||||
version: file:projects/model-notification.tgz
|
||||
'@rush-temp/model-my-space':
|
||||
specifier: file:./projects/model-my-space.tgz
|
||||
version: file:projects/model-my-space.tgz
|
||||
'@rush-temp/model-preference':
|
||||
specifier: file:./projects/model-preference.tgz
|
||||
version: file:projects/model-preference.tgz
|
||||
@@ -634,6 +649,15 @@ importers:
|
||||
'@rush-temp/panel':
|
||||
specifier: file:./projects/panel.tgz
|
||||
version: file:projects/panel.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@20.11.19)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(postcss-load-config@4.0.2(postcss@8.4.35)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)))(postcss@8.4.35)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))
|
||||
'@rush-temp/my-space':
|
||||
specifier: file:./projects/my-space.tgz
|
||||
version: file:projects/my-space.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@20.11.19)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))
|
||||
'@rush-temp/my-space-assets':
|
||||
specifier: file:./projects/my-space-assets.tgz
|
||||
version: file:projects/my-space-assets.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))
|
||||
'@rush-temp/my-space-resources':
|
||||
specifier: file:./projects/my-space-resources.tgz
|
||||
version: file:projects/my-space-resources.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@20.11.19)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(postcss-load-config@4.0.2(postcss@8.4.35)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)))(postcss@8.4.35)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))
|
||||
'@rush-temp/platform':
|
||||
specifier: file:./projects/platform.tgz
|
||||
version: file:projects/platform.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@20.11.19)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))
|
||||
@@ -4318,6 +4342,18 @@ packages:
|
||||
resolution: {integrity: sha512-D9QBf+/PREVaj/zqju1EnET+45ImzmEpqYThK+I2fbGxZ2t128DbfspBi3Lf2pUure8yF2PSTlTJSzKmUtgvpA==, tarball: file:projects/love.tgz}
|
||||
version: 0.0.0
|
||||
|
||||
'@rush-temp/mail-assets@file:projects/mail-assets.tgz':
|
||||
resolution: {integrity: sha512-Lp1APt1DRMNrH2DhlOTTJjjIPhThHuc1+3Jj1fJU1ryH4FcJwCDFRw9InLEhjphf9cGC6z06EpgL3+3FtHOmJg==, tarball: file:projects/mail-assets.tgz}
|
||||
version: 0.0.0
|
||||
|
||||
'@rush-temp/mail-resources@file:projects/mail-resources.tgz':
|
||||
resolution: {integrity: sha512-8PtetoobhgQAiaGjqRf2aOgVY3Xh0KkyWTVLA2GIKaWY0lD0Vt69jDk1jptyXJOfkQLXRTSk7JxTs9lH96q8UQ==, tarball: file:projects/mail-resources.tgz}
|
||||
version: 0.0.0
|
||||
|
||||
'@rush-temp/mail@file:projects/mail.tgz':
|
||||
resolution: {integrity: sha512-khCqnHqt/MDtJv8eTx08ov9GkvC00wPeb1Q+QE5zk7xqbjK/QYJWPmdMRkvOJobCHLh2/g6ST2lgNbV938hrJA==, tarball: file:projects/mail.tgz}
|
||||
version: 0.0.0
|
||||
|
||||
'@rush-temp/middleware@file:projects/middleware.tgz':
|
||||
resolution: {integrity: sha512-d3bnkZYGycgZKQg4veVLwKczJdPhg65urbHhl9FJI3MV2izx8zCRu01frLW6zn61nYGW1fffugXfGoWBv4xxcA==, tarball: file:projects/middleware.tgz}
|
||||
version: 0.0.0
|
||||
@@ -4418,10 +4454,18 @@ packages:
|
||||
resolution: {integrity: sha512-7bncZHfFYZKaCX+Wv+mcOHFU328pUC8qmqDw2V/o4Ee+fZAMCpudJuevAwtjf9uIu3fuyf1E+SLCgz8YXjyQBQ==, tarball: file:projects/model-love.tgz}
|
||||
version: 0.0.0
|
||||
|
||||
'@rush-temp/model-mail@file:projects/model-mail.tgz':
|
||||
resolution: {integrity: sha512-Z2WZ+9IF0119TDZDyODrcI3ptuQLQ/h7WaxvbPIFsUQm+MI5VPV6hCNUBNp8if2XQLmSn0YByejtW1bSBz/WAg==, tarball: file:projects/model-mail.tgz}
|
||||
version: 0.0.0
|
||||
|
||||
'@rush-temp/model-notification@file:projects/model-notification.tgz':
|
||||
resolution: {integrity: sha512-k7valecajKQwOhAeROASPm+RO2/D3xZSkan8Z09kmy+9dNLYBxQT/mr7k+HBdlzU4JD3fDQRP6EStyJBkLFZsQ==, tarball: file:projects/model-notification.tgz}
|
||||
version: 0.0.0
|
||||
|
||||
'@rush-temp/model-my-space@file:projects/model-my-space.tgz':
|
||||
resolution: {integrity: sha512-OxBDKFosN/3hsy9Ot0fDJTpzqFJvNLWxgJXtmculo1ksyKacMGZc4+9Ouxj49NFQ4JPl1UpBLZjaWPQ7xuyo3w==, tarball: file:projects/model-my-space.tgz}
|
||||
version: 0.0.0
|
||||
|
||||
'@rush-temp/model-preference@file:projects/model-preference.tgz':
|
||||
resolution: {integrity: sha512-r2RLrTIRHQ4txZegXOqXQfcPMJmA6HQz5i9EOi8RH7mGB+f6lqnBoYCf+mihfazPXLyF8NXbhPuNX1XHXMqvyg==, tarball: file:projects/model-preference.tgz}
|
||||
version: 0.0.0
|
||||
@@ -4682,6 +4726,18 @@ packages:
|
||||
resolution: {integrity: sha512-cjwk9I0RxeNJQTgtbbcQlwiurbp+/T5MbiRnYTLWvxsMBVWnnxD5nToECUt1QdW/CjSSbPsaYP8hoMgt/AufCw==, tarball: file:projects/panel.tgz}
|
||||
version: 0.0.0
|
||||
|
||||
'@rush-temp/my-space-assets@file:projects/my-space-assets.tgz':
|
||||
resolution: {integrity: sha512-yGiP0aFiYA6RZiY4Ufqhk2egfhWvjEi3GOjcmLZ3eAl3samu/g4b3BcAKzo6SimMwKM2GQF+9oKHn1F/5LmSjA==, tarball: file:projects/my-space-assets.tgz}
|
||||
version: 0.0.0
|
||||
|
||||
'@rush-temp/my-space-resources@file:projects/my-space-resources.tgz':
|
||||
resolution: {integrity: sha512-dE2Jeu1rsu0l18l6oKj0Z+D99sS8fkuAcqoqh9alzavqquUvgGSXtTUB24l6Y6A0tbpshtAMLhmFSFgwPtSGHw==, tarball: file:projects/my-space-resources.tgz}
|
||||
version: 0.0.0
|
||||
|
||||
'@rush-temp/my-space@file:projects/my-space.tgz':
|
||||
resolution: {integrity: sha512-dBx6We9vl3uuETflughn1Q1jmxjzQdxZ0rf+OiZZ6lRM0u304BhlM7459AMcaZ76oxkqZ6ulRYVVxr8k7ZGHaA==, tarball: file:projects/my-space.tgz}
|
||||
version: 0.0.0
|
||||
|
||||
'@rush-temp/platform-rig@file:projects/platform-rig.tgz':
|
||||
resolution: {integrity: sha512-Ex4y6Gru0FdNgfJ8Q/TOIOZLrvmk+4eDiepGH95XOsHgcTQTfhHPfNwYBgC5yOqQrY9O8GDqWUZtV+KySEAQjg==, tarball: file:projects/platform-rig.tgz}
|
||||
version: 0.0.0
|
||||
@@ -19105,6 +19161,96 @@ snapshots:
|
||||
- svelte
|
||||
- ts-node
|
||||
|
||||
'@rush-temp/mail-assets@file:projects/mail-assets.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))':
|
||||
dependencies:
|
||||
'@types/jest': 29.5.12
|
||||
'@types/node': 20.11.19
|
||||
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.6.2)
|
||||
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.6.2)
|
||||
eslint: 8.56.0
|
||||
eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0)(typescript@5.6.2)
|
||||
eslint-plugin-import: 2.29.1(eslint@8.56.0)
|
||||
eslint-plugin-n: 15.7.0(eslint@8.56.0)
|
||||
eslint-plugin-promise: 6.1.1(eslint@8.56.0)
|
||||
jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))
|
||||
prettier: 3.2.5
|
||||
ts-jest: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.11.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)))(typescript@5.6.2)
|
||||
typescript: 5.6.2
|
||||
transitivePeerDependencies:
|
||||
- '@babel/core'
|
||||
- '@jest/types'
|
||||
- babel-jest
|
||||
- babel-plugin-macros
|
||||
- esbuild
|
||||
- node-notifier
|
||||
- supports-color
|
||||
- ts-node
|
||||
|
||||
'@rush-temp/mail-resources@file:projects/mail-resources.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@20.11.19)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(postcss-load-config@4.0.2(postcss@8.4.35)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)))(postcss@8.4.35)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))':
|
||||
dependencies:
|
||||
'@types/jest': 29.5.12
|
||||
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.6.2)
|
||||
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.6.2)
|
||||
eslint: 8.56.0
|
||||
eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0)(typescript@5.6.2)
|
||||
eslint-plugin-import: 2.29.1(eslint@8.56.0)
|
||||
eslint-plugin-n: 15.7.0(eslint@8.56.0)
|
||||
eslint-plugin-promise: 6.1.1(eslint@8.56.0)
|
||||
eslint-plugin-svelte: 2.35.1(eslint@8.56.0)(svelte@4.2.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))
|
||||
jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))
|
||||
prettier: 3.2.5
|
||||
prettier-plugin-svelte: 3.2.2(prettier@3.2.5)(svelte@4.2.19)
|
||||
sass: 1.71.1
|
||||
svelte: 4.2.19
|
||||
svelte-check: 3.6.9(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.35)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)))(postcss@8.4.35)(sass@1.71.1)(svelte@4.2.19)
|
||||
svelte-eslint-parser: 0.33.1(svelte@4.2.19)
|
||||
svelte-loader: 3.2.0(svelte@4.2.19)
|
||||
svelte-preprocess: 5.1.3(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.35)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)))(postcss@8.4.35)(sass@1.71.1)(svelte@4.2.19)(typescript@5.6.2)
|
||||
ts-jest: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.11.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)))(typescript@5.6.2)
|
||||
typescript: 5.6.2
|
||||
transitivePeerDependencies:
|
||||
- '@babel/core'
|
||||
- '@jest/types'
|
||||
- '@types/node'
|
||||
- babel-jest
|
||||
- babel-plugin-macros
|
||||
- coffeescript
|
||||
- esbuild
|
||||
- less
|
||||
- node-notifier
|
||||
- postcss
|
||||
- postcss-load-config
|
||||
- pug
|
||||
- stylus
|
||||
- sugarss
|
||||
- supports-color
|
||||
- ts-node
|
||||
|
||||
'@rush-temp/mail@file:projects/mail.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@20.11.19)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))':
|
||||
dependencies:
|
||||
'@types/jest': 29.5.12
|
||||
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.6.2)
|
||||
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.6.2)
|
||||
eslint: 8.56.0
|
||||
eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0)(typescript@5.6.2)
|
||||
eslint-plugin-import: 2.29.1(eslint@8.56.0)
|
||||
eslint-plugin-n: 15.7.0(eslint@8.56.0)
|
||||
eslint-plugin-promise: 6.1.1(eslint@8.56.0)
|
||||
jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))
|
||||
prettier: 3.2.5
|
||||
ts-jest: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.11.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)))(typescript@5.6.2)
|
||||
typescript: 5.6.2
|
||||
transitivePeerDependencies:
|
||||
- '@babel/core'
|
||||
- '@jest/types'
|
||||
- '@types/node'
|
||||
- babel-jest
|
||||
- babel-plugin-macros
|
||||
- esbuild
|
||||
- node-notifier
|
||||
- supports-color
|
||||
- ts-node
|
||||
|
||||
'@rush-temp/middleware@file:projects/middleware.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@20.11.19)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))':
|
||||
dependencies:
|
||||
'@types/jest': 29.5.12
|
||||
@@ -19488,6 +19634,20 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@rush-temp/model-mail@file:projects/model-mail.tgz':
|
||||
dependencies:
|
||||
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.6.2)
|
||||
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.6.2)
|
||||
eslint: 8.56.0
|
||||
eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0)(typescript@5.6.2)
|
||||
eslint-plugin-import: 2.29.1(eslint@8.56.0)
|
||||
eslint-plugin-n: 15.7.0(eslint@8.56.0)
|
||||
eslint-plugin-promise: 6.1.1(eslint@8.56.0)
|
||||
prettier: 3.2.5
|
||||
typescript: 5.6.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@rush-temp/model-notification@file:projects/model-notification.tgz':
|
||||
dependencies:
|
||||
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)
|
||||
@@ -19502,6 +19662,20 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@rush-temp/model-my-space@file:projects/model-my-space.tgz':
|
||||
dependencies:
|
||||
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.6.2)
|
||||
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.6.2)
|
||||
eslint: 8.56.0
|
||||
eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0)(typescript@5.6.2)
|
||||
eslint-plugin-import: 2.29.1(eslint@8.56.0)
|
||||
eslint-plugin-n: 15.7.0(eslint@8.56.0)
|
||||
eslint-plugin-promise: 6.1.1(eslint@8.56.0)
|
||||
prettier: 3.2.5
|
||||
typescript: 5.6.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@rush-temp/model-preference@file:projects/model-preference.tgz':
|
||||
dependencies:
|
||||
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)
|
||||
@@ -20621,6 +20795,97 @@ snapshots:
|
||||
- supports-color
|
||||
- ts-node
|
||||
|
||||
'@rush-temp/my-space-assets@file:projects/my-space-assets.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))':
|
||||
dependencies:
|
||||
'@types/jest': 29.5.12
|
||||
'@types/node': 20.11.19
|
||||
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.6.2)
|
||||
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.6.2)
|
||||
eslint: 8.56.0
|
||||
eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0)(typescript@5.6.2)
|
||||
eslint-plugin-import: 2.29.1(eslint@8.56.0)
|
||||
eslint-plugin-n: 15.7.0(eslint@8.56.0)
|
||||
eslint-plugin-promise: 6.1.1(eslint@8.56.0)
|
||||
jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))
|
||||
prettier: 3.2.5
|
||||
ts-jest: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.11.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)))(typescript@5.6.2)
|
||||
typescript: 5.6.2
|
||||
transitivePeerDependencies:
|
||||
- '@babel/core'
|
||||
- '@jest/types'
|
||||
- babel-jest
|
||||
- babel-plugin-macros
|
||||
- esbuild
|
||||
- node-notifier
|
||||
- supports-color
|
||||
- ts-node
|
||||
|
||||
'@rush-temp/my-space-resources@file:projects/my-space-resources.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@20.11.19)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(postcss-load-config@4.0.2(postcss@8.4.35)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)))(postcss@8.4.35)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))':
|
||||
dependencies:
|
||||
'@types/jest': 29.5.12
|
||||
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.6.2)
|
||||
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.6.2)
|
||||
eslint: 8.56.0
|
||||
eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0)(typescript@5.6.2)
|
||||
eslint-plugin-import: 2.29.1(eslint@8.56.0)
|
||||
eslint-plugin-n: 15.7.0(eslint@8.56.0)
|
||||
eslint-plugin-promise: 6.1.1(eslint@8.56.0)
|
||||
eslint-plugin-svelte: 2.35.1(eslint@8.56.0)(svelte@4.2.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))
|
||||
fast-equals: 5.2.2
|
||||
jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))
|
||||
prettier: 3.2.5
|
||||
prettier-plugin-svelte: 3.2.2(prettier@3.2.5)(svelte@4.2.19)
|
||||
sass: 1.71.1
|
||||
svelte: 4.2.19
|
||||
svelte-check: 3.6.9(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.35)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)))(postcss@8.4.35)(sass@1.71.1)(svelte@4.2.19)
|
||||
svelte-eslint-parser: 0.33.1(svelte@4.2.19)
|
||||
svelte-loader: 3.2.0(svelte@4.2.19)
|
||||
svelte-preprocess: 5.1.3(@babel/core@7.23.9)(postcss-load-config@4.0.2(postcss@8.4.35)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)))(postcss@8.4.35)(sass@1.71.1)(svelte@4.2.19)(typescript@5.6.2)
|
||||
ts-jest: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.11.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)))(typescript@5.6.2)
|
||||
typescript: 5.6.2
|
||||
transitivePeerDependencies:
|
||||
- '@babel/core'
|
||||
- '@jest/types'
|
||||
- '@types/node'
|
||||
- babel-jest
|
||||
- babel-plugin-macros
|
||||
- coffeescript
|
||||
- esbuild
|
||||
- less
|
||||
- node-notifier
|
||||
- postcss
|
||||
- postcss-load-config
|
||||
- pug
|
||||
- stylus
|
||||
- sugarss
|
||||
- supports-color
|
||||
- ts-node
|
||||
|
||||
'@rush-temp/my-space@file:projects/my-space.tgz(@babel/core@7.23.9)(@jest/types@29.6.3)(@types/node@20.11.19)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))':
|
||||
dependencies:
|
||||
'@types/jest': 29.5.12
|
||||
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.6.2)
|
||||
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.6.2)
|
||||
eslint: 8.56.0
|
||||
eslint-config-standard-with-typescript: 40.0.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(eslint@8.56.0)(typescript@5.6.2)
|
||||
eslint-plugin-import: 2.29.1(eslint@8.56.0)
|
||||
eslint-plugin-n: 15.7.0(eslint@8.56.0)
|
||||
eslint-plugin-promise: 6.1.1(eslint@8.56.0)
|
||||
jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3))
|
||||
prettier: 3.2.5
|
||||
ts-jest: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.11.19)(ts-node@10.9.2(@types/node@20.11.19)(typescript@5.3.3)))(typescript@5.6.2)
|
||||
typescript: 5.6.2
|
||||
transitivePeerDependencies:
|
||||
- '@babel/core'
|
||||
- '@jest/types'
|
||||
- '@types/node'
|
||||
- babel-jest
|
||||
- babel-plugin-macros
|
||||
- esbuild
|
||||
- node-notifier
|
||||
- supports-color
|
||||
- ts-node
|
||||
|
||||
'@rush-temp/platform-rig@file:projects/platform-rig.tgz(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint-plugin-n@15.7.0(eslint@8.56.0))(eslint-plugin-promise@6.1.1(eslint@8.56.0))(svelte@4.2.19)':
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
|
||||
|
||||
@@ -215,6 +215,12 @@
|
||||
"@hcengineering/card": "^0.6.0",
|
||||
"@hcengineering/card-assets": "^0.6.0",
|
||||
"@hcengineering/card-resources": "^0.6.0",
|
||||
"@hcengineering/my-space": "^0.6.0",
|
||||
"@hcengineering/my-space-assets": "^0.6.0",
|
||||
"@hcengineering/my-space-resources": "^0.6.0",
|
||||
"@hcengineering/mail": "^0.6.0",
|
||||
"@hcengineering/mail-assets": "^0.6.0",
|
||||
"@hcengineering/mail-resources": "^0.6.0",
|
||||
"electron-squirrel-startup": "~1.0.0",
|
||||
"dotenv": "~16.0.0",
|
||||
"electron-context-menu": "^4.0.4",
|
||||
|
||||
@@ -58,12 +58,12 @@ window.addEventListener('DOMContentLoaded', () => {
|
||||
})
|
||||
|
||||
ipcMain.on('logout', () => {
|
||||
const tokens = fetchMetadataLocalStorage(login.metadata.LoginTokens)
|
||||
const tokens = fetchMetadataLocalStorage(login.metadata.LoginTokensV2)
|
||||
if (tokens !== null) {
|
||||
const loc = getCurrentLocation()
|
||||
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
||||
delete tokens[loc.path[1]]
|
||||
setMetadataLocalStorage(login.metadata.LoginTokens, tokens)
|
||||
setMetadataLocalStorage(login.metadata.LoginTokensV2, tokens)
|
||||
}
|
||||
setMetadata(presentation.metadata.Token, null)
|
||||
setMetadataLocalStorage(login.metadata.LastToken, null)
|
||||
|
||||
@@ -57,6 +57,8 @@ import { documentsId } from '@hcengineering/controlled-documents'
|
||||
import aiBot, { aiBotId } from '@hcengineering/ai-bot'
|
||||
import { testManagementId } from '@hcengineering/test-management'
|
||||
import { surveyId } from '@hcengineering/survey'
|
||||
import { mySpaceId } from '@hcengineering/my-space'
|
||||
import { mailId } from '@hcengineering/mail'
|
||||
|
||||
import '@hcengineering/activity-assets'
|
||||
import '@hcengineering/attachment-assets'
|
||||
@@ -101,6 +103,7 @@ import '@hcengineering/text-editor-assets'
|
||||
import '@hcengineering/test-management-assets'
|
||||
import '@hcengineering/survey-assets'
|
||||
import '@hcengineering/card-assets'
|
||||
import '@hcengineering/mail-assets'
|
||||
|
||||
import { coreId } from '@hcengineering/core'
|
||||
import presentation, { parsePreviewConfig, parseUploadConfig, presentationId } from '@hcengineering/presentation'
|
||||
@@ -195,6 +198,8 @@ function configureI18n (): void {
|
||||
addStringsLoader(testManagementId, async (lang: string) => await import(`@hcengineering/test-management-assets/lang/${lang}.json`))
|
||||
addStringsLoader(surveyId, async (lang: string) => await import(`@hcengineering/survey-assets/lang/${lang}.json`))
|
||||
addStringsLoader(cardId, async (lang: string) => await import(`@hcengineering/card-assets/lang/${lang}.json`))
|
||||
addStringsLoader(mySpaceId, async (lang: string) => await import(`@hcengineering/my-space-assets/lang/${lang}.json`))
|
||||
addStringsLoader(mailId, async (lang: string) => await import(`@hcengineering/mail-assets/lang/${lang}.json`))
|
||||
}
|
||||
|
||||
export async function configurePlatform (): Promise<void> {
|
||||
@@ -322,6 +327,7 @@ export async function configurePlatform (): Promise<void> {
|
||||
addLocation(testManagementId, () => import(/* webpackChunkName: "test-management" */ '@hcengineering/test-management-resources'))
|
||||
addLocation(surveyId, () => import(/* webpackChunkName: "survey" */ '@hcengineering/survey-resources'))
|
||||
addLocation(cardId, () => import(/* webpackChunkName: "card" */ '@hcengineering/card-resources'))
|
||||
addLocation(mySpaceId, () => import(/* webpackChunkName: "card" */ '@hcengineering/my-space-resources'))
|
||||
|
||||
setMetadata(client.metadata.FilterModel, 'ui')
|
||||
setMetadata(client.metadata.ExtraPlugins, ['preference' as Plugin])
|
||||
|
||||
@@ -73,6 +73,7 @@ services:
|
||||
environment:
|
||||
- ACCOUNT_PORT=3000
|
||||
- SERVER_SECRET=secret
|
||||
- ADMIN_EMAILS=admin
|
||||
- STATS_URL=http://host.docker.internal:4900
|
||||
# - DB_URL=postgresql://root@host.docker.internal:26257/defaultdb?sslmode=disable
|
||||
- DB_URL=${MONGO_URL}
|
||||
|
||||
@@ -209,6 +209,12 @@
|
||||
"@hcengineering/card": "^0.6.0",
|
||||
"@hcengineering/card-assets": "^0.6.0",
|
||||
"@hcengineering/card-resources": "^0.6.0",
|
||||
"@hcengineering/my-space": "^0.6.0",
|
||||
"@hcengineering/my-space-assets": "^0.6.0",
|
||||
"@hcengineering/my-space-resources": "^0.6.0",
|
||||
"@hcengineering/mail": "^0.6.0",
|
||||
"@hcengineering/mail-assets": "^0.6.0",
|
||||
"@hcengineering/mail-resources": "^0.6.0",
|
||||
"@sentry/svelte": "^8.52.1",
|
||||
"posthog-js": "~1.122.0"
|
||||
}
|
||||
|
||||
@@ -26,5 +26,5 @@
|
||||
"TELEGRAM_URL": "https://telegram.hc.engineering",
|
||||
"UPLOAD_CONFIG": "",
|
||||
"UPLOAD_URL": "https://dl.hc.engineering/upload/form-data/:workspace",
|
||||
"TRANSACTOR_OVERRIDE": "wss://transactor00.hc.engineering"
|
||||
"TRANSACTOR_OVERRIDE": "ws://localhost:3335"
|
||||
}
|
||||
@@ -40,6 +40,7 @@ import login, { loginId } from '@hcengineering/login'
|
||||
import love, { loveId } from '@hcengineering/love'
|
||||
import notification, { notificationId } from '@hcengineering/notification'
|
||||
import onboard, { onboardId } from '@hcengineering/onboard'
|
||||
import { mySpaceId } from '@hcengineering/my-space'
|
||||
import presence, { presenceId } from '@hcengineering/presence'
|
||||
import print, { printId } from '@hcengineering/print'
|
||||
import { productsId } from '@hcengineering/products'
|
||||
@@ -64,6 +65,7 @@ import uiPlugin from '@hcengineering/ui'
|
||||
import { uploaderId } from '@hcengineering/uploader'
|
||||
import { viewId } from '@hcengineering/view'
|
||||
import workbench, { workbenchId } from '@hcengineering/workbench'
|
||||
import { mailId } from '@hcengineering/mail'
|
||||
|
||||
import { bitrixId } from '@hcengineering/bitrix'
|
||||
|
||||
@@ -89,6 +91,7 @@ import '@hcengineering/lead-assets'
|
||||
import '@hcengineering/login-assets'
|
||||
import '@hcengineering/love-assets'
|
||||
import '@hcengineering/notification-assets'
|
||||
import '@hcengineering/my-space-assets'
|
||||
import '@hcengineering/preference-assets'
|
||||
import '@hcengineering/print-assets'
|
||||
import '@hcengineering/products-assets'
|
||||
@@ -323,6 +326,8 @@ function configureI18n(): void {
|
||||
)
|
||||
addStringsLoader(surveyId, async (lang: string) => await import(`@hcengineering/survey-assets/lang/${lang}.json`))
|
||||
addStringsLoader(cardId, async (lang: string) => await import(`@hcengineering/card-assets/lang/${lang}.json`))
|
||||
addStringsLoader(mySpaceId, async (lang: string) => await import(`@hcengineering/my-space-assets/lang/${lang}.json`))
|
||||
addStringsLoader(mailId, async (lang: string) => await import(`@hcengineering/mail-assets/lang/${lang}.json`))
|
||||
}
|
||||
|
||||
export async function configurePlatform() {
|
||||
@@ -511,6 +516,8 @@ export async function configurePlatform() {
|
||||
addLocation(surveyId, () => import(/* webpackChunkName: "survey" */ '@hcengineering/survey-resources'))
|
||||
addLocation(presenceId, () => import(/* webpackChunkName: "presence" */ '@hcengineering/presence-resources'))
|
||||
addLocation(cardId, () => import(/* webpackChunkName: "card" */ '@hcengineering/card-resources'))
|
||||
addLocation(mySpaceId, () => import(/* webpackChunkName: "card" */ '@hcengineering/my-space-resources'))
|
||||
addLocation(mailId, () => import(/* webpackChunkName: "card" */ '@hcengineering/mail-resources'))
|
||||
|
||||
setMetadata(client.metadata.FilterModel, 'ui')
|
||||
setMetadata(client.metadata.ExtraPlugins, ['preference' as Plugin])
|
||||
|
||||
@@ -16,7 +16,7 @@ import { activityId, type ActivityMessage, type DocUpdateMessageViewlet } from '
|
||||
import activity from '@hcengineering/activity-resources/src/plugin'
|
||||
import { type IntlString, mergeIds, type Resource } from '@hcengineering/platform'
|
||||
import { type Doc, type Ref } from '@hcengineering/core'
|
||||
import type { Location } from '@hcengineering/ui'
|
||||
import type { Location } from '@hcengineering/ui/src/types'
|
||||
import {
|
||||
type Action,
|
||||
type ActionCategory,
|
||||
|
||||
@@ -115,6 +115,8 @@
|
||||
"@hcengineering/model-test-management": "^0.6.0",
|
||||
"@hcengineering/model-survey": "^0.6.0",
|
||||
"@hcengineering/model-presence": "^0.6.0",
|
||||
"@hcengineering/model-card": "^0.6.0"
|
||||
"@hcengineering/model-card": "^0.6.0",
|
||||
"@hcengineering/model-mail": "^0.6.0",
|
||||
"@hcengineering/model-my-space": "^0.6.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,6 +101,8 @@ import testManagement, {
|
||||
testManagementId,
|
||||
createModel as testManagementModel
|
||||
} from '@hcengineering/model-test-management'
|
||||
import mySpace, { mySpaceId, createModel as mySpaceModel } from '@hcengineering/model-my-space'
|
||||
import { mailId, createModel as mailModel } from '@hcengineering/model-mail'
|
||||
|
||||
import {
|
||||
serverDocumentsId,
|
||||
@@ -430,6 +432,18 @@ export default function buildModel (enabled: string[] = ['*'], disabled: string[
|
||||
],
|
||||
[surveyModel, surveyId],
|
||||
[presenceModel, presenceId],
|
||||
[
|
||||
mySpaceModel,
|
||||
mySpaceId,
|
||||
{
|
||||
label: mySpace.string.ConfigLabel,
|
||||
description: mySpace.string.ConfigDescription,
|
||||
enabled: true,
|
||||
beta: true,
|
||||
classFilter: defaultFilter
|
||||
}
|
||||
],
|
||||
[mailModel, mailId],
|
||||
|
||||
[serverCoreModel, serverCoreId],
|
||||
[serverAttachmentModel, serverAttachmentId],
|
||||
|
||||
@@ -43,7 +43,7 @@ import view, { createAction } from '@hcengineering/model-view'
|
||||
import workbench from '@hcengineering/model-workbench'
|
||||
import { getEmbeddedLabel, type IntlString } from '@hcengineering/platform'
|
||||
import time, { type ToDo } from '@hcengineering/time'
|
||||
import { type AnyComponent } from '@hcengineering/ui'
|
||||
import { type AnyComponent } from '@hcengineering/ui/src/types'
|
||||
import card from './plugin'
|
||||
|
||||
export { cardId } from '@hcengineering/card'
|
||||
|
||||
@@ -19,7 +19,7 @@ import type { Client, Doc, Ref } from '@hcengineering/core'
|
||||
import {} from '@hcengineering/core'
|
||||
import { mergeIds, type Resource } from '@hcengineering/platform'
|
||||
import { type ObjectSearchCategory, type ObjectSearchFactory } from '@hcengineering/model-presentation'
|
||||
import { type Location, type ResolvedLocation } from '@hcengineering/ui'
|
||||
import { type Location, type ResolvedLocation } from '@hcengineering/ui/src/types'
|
||||
import { type LocationData } from '@hcengineering/workbench'
|
||||
import { type Action, type ViewAction } from '@hcengineering/view'
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ import type { Client, Doc, Ref } from '@hcengineering/core'
|
||||
import { type ObjectSearchCategory, type ObjectSearchFactory } from '@hcengineering/model-presentation'
|
||||
import { mergeIds, type Resource } from '@hcengineering/platform'
|
||||
import { type TagCategory } from '@hcengineering/tags'
|
||||
import { type AnyComponent } from '@hcengineering/ui'
|
||||
import { type AnyComponent } from '@hcengineering/ui/src/types'
|
||||
import { type ActionCategory, type ViewAction } from '@hcengineering/view'
|
||||
import { type NotificationType, type NotificationGroup } from '@hcengineering/notification'
|
||||
import { type TextActionVisibleFunction, type TextActionFunction } from '@hcengineering/text-editor'
|
||||
|
||||
@@ -20,7 +20,7 @@ import document from '@hcengineering/document-resources/src/plugin'
|
||||
import { type ObjectSearchCategory, type ObjectSearchFactory } from '@hcengineering/model-presentation'
|
||||
import { type IntlString, mergeIds, type Resource } from '@hcengineering/platform'
|
||||
import { type TagCategory } from '@hcengineering/tags'
|
||||
import { type AnyComponent } from '@hcengineering/ui'
|
||||
import { type AnyComponent } from '@hcengineering/ui/src/types'
|
||||
import type { Action, ActionCategory, ViewAction, Viewlet } from '@hcengineering/view'
|
||||
|
||||
export default mergeIds(documentId, document, {
|
||||
|
||||
@@ -19,7 +19,7 @@ import { driveId } from '@hcengineering/drive'
|
||||
import drive from '@hcengineering/drive-resources/src/plugin'
|
||||
import { type ObjectSearchCategory, type ObjectSearchFactory } from '@hcengineering/model-presentation'
|
||||
import { type IntlString, type Resource, mergeIds } from '@hcengineering/platform'
|
||||
import { type AnyComponent, type Location } from '@hcengineering/ui'
|
||||
import { type AnyComponent, type Location } from '@hcengineering/ui/src/types'
|
||||
import {
|
||||
type Action,
|
||||
type ActionCategory,
|
||||
|
||||
@@ -2,7 +2,7 @@ import { type Class, type IndexingConfiguration, type Doc, type Domain, type Ref
|
||||
import { type PublicLink, type Restrictions } from '@hcengineering/guest'
|
||||
import { type Builder, Model } from '@hcengineering/model'
|
||||
import core, { TDoc } from '@hcengineering/model-core'
|
||||
import { type Location } from '@hcengineering/ui'
|
||||
import { type Location } from '@hcengineering/ui/src/types'
|
||||
import guest from './plugin'
|
||||
|
||||
export const GUEST_DOMAIN = 'guest' as Domain
|
||||
|
||||
@@ -2,7 +2,7 @@ import { type Doc, type Ref } from '@hcengineering/core'
|
||||
import { guestId } from '@hcengineering/guest'
|
||||
import guest from '@hcengineering/guest-resources/src/plugin'
|
||||
import { mergeIds } from '@hcengineering/platform'
|
||||
import { type AnyComponent } from '@hcengineering/ui'
|
||||
import { type AnyComponent } from '@hcengineering/ui/src/types'
|
||||
import { type Action, type ActionCategory } from '@hcengineering/view'
|
||||
|
||||
export default mergeIds(guestId, guest, {
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
import { type Client, type Doc, type Ref } from '@hcengineering/core'
|
||||
import { type NotificationType, type NotificationGroup } from '@hcengineering/notification'
|
||||
import { type Resource, mergeIds } from '@hcengineering/platform'
|
||||
import { type AnyComponent } from '@hcengineering/ui'
|
||||
import { type AnyComponent } from '@hcengineering/ui/src/types'
|
||||
import { type ActionCategory, type ViewAction } from '@hcengineering/view'
|
||||
import { loveId } from '@hcengineering/love'
|
||||
import love from '@hcengineering/love-resources/src/plugin'
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
module.exports = {
|
||||
extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'],
|
||||
parserOptions: {
|
||||
tsconfigRootDir: __dirname,
|
||||
project: './tsconfig.json'
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
*
|
||||
!/lib/**
|
||||
!CHANGELOG.md
|
||||
/lib/**/__tests__/
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json",
|
||||
"rigPackageName": "@hcengineering/platform-rig",
|
||||
"rigProfile": "model"
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"name": "@hcengineering/model-mail",
|
||||
"version": "0.6.0",
|
||||
"main": "lib/index.js",
|
||||
"svelte": "src/index.ts",
|
||||
"types": "types/index.d.ts",
|
||||
"author": "Anticrm Platform Contributors",
|
||||
"template": "@hcengineering/model-package",
|
||||
"license": "EPL-2.0",
|
||||
"scripts": {
|
||||
"build": "compile",
|
||||
"build:watch": "compile",
|
||||
"format": "format src",
|
||||
"_phase:build": "compile transpile src",
|
||||
"_phase:format": "format src",
|
||||
"_phase:validate": "compile validate"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@hcengineering/platform-rig": "^0.6.0",
|
||||
"@typescript-eslint/eslint-plugin": "^6.11.0",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
"eslint-plugin-promise": "^6.1.1",
|
||||
"eslint-plugin-n": "^15.4.0",
|
||||
"eslint": "^8.54.0",
|
||||
"@typescript-eslint/parser": "^6.11.0",
|
||||
"eslint-config-standard-with-typescript": "^40.0.0",
|
||||
"prettier": "^3.1.0",
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hcengineering/activity": "^0.6.0",
|
||||
"@hcengineering/chunter": "^0.6.20",
|
||||
"@hcengineering/model": "^0.6.11",
|
||||
"@hcengineering/model-contact": "^0.6.1",
|
||||
"@hcengineering/model-chunter": "^0.6.0",
|
||||
"@hcengineering/core": "^0.6.32",
|
||||
"@hcengineering/platform": "^0.6.11",
|
||||
"@hcengineering/model-view": "^0.6.0",
|
||||
"@hcengineering/mail": "^0.6.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
//
|
||||
// Copyright © 2025 Hardcore Engineering Inc.
|
||||
//
|
||||
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License. You may
|
||||
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
//
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
import activity from '@hcengineering/activity'
|
||||
import core, { IndexKind } from '@hcengineering/core'
|
||||
import { type Builder, Index, Model, Prop, TypeString, UX } from '@hcengineering/model'
|
||||
import contact from '@hcengineering/model-contact'
|
||||
import view from '@hcengineering/model-view'
|
||||
import { TChunterSpace } from '@hcengineering/model-chunter'
|
||||
|
||||
import chunter from '@hcengineering/chunter'
|
||||
import mail, { type MailThread } from '@hcengineering/mail'
|
||||
|
||||
export { mailId } from '@hcengineering/mail'
|
||||
export { default } from './plugin'
|
||||
|
||||
@Model(mail.class.MailThread, chunter.class.ChunterSpace)
|
||||
@UX(mail.string.MailThread, contact.icon.Person, undefined, undefined, undefined, mail.string.MailThread)
|
||||
export class TMailThread extends TChunterSpace implements MailThread {
|
||||
@Prop(TypeString(), mail.string.Subject)
|
||||
@Index(IndexKind.FullText)
|
||||
subject!: string
|
||||
|
||||
@Prop(TypeString(), mail.string.MailThreadId)
|
||||
@Index(IndexKind.Indexed)
|
||||
mailThreadId!: string
|
||||
|
||||
@Prop(TypeString(), mail.string.From)
|
||||
@Index(IndexKind.FullText)
|
||||
from!: string
|
||||
|
||||
@Prop(TypeString(), mail.string.To)
|
||||
@Index(IndexKind.FullText)
|
||||
to!: string
|
||||
|
||||
@Prop(TypeString(), mail.string.MailPreview)
|
||||
preview!: string
|
||||
}
|
||||
|
||||
export function createModel (builder: Builder): void {
|
||||
builder.createModel(TMailThread)
|
||||
|
||||
builder.mixin(mail.class.MailThread, core.class.Class, activity.mixin.ActivityDoc, {})
|
||||
|
||||
builder.mixin(mail.class.MailThread, core.class.Class, view.mixin.ObjectPresenter, {
|
||||
presenter: mail.component.MailThreadPresenter
|
||||
})
|
||||
|
||||
builder.mixin(mail.class.MailThread, core.class.Class, view.mixin.ObjectEditor, {
|
||||
editor: mail.component.MailThread
|
||||
})
|
||||
|
||||
builder.mixin(mail.class.MailThread, core.class.Class, view.mixin.ObjectPanel, {
|
||||
component: mail.component.MailThread
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
//
|
||||
// Copyright © 2025 Hardcore Engineering Inc.
|
||||
//
|
||||
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License. You may
|
||||
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
//
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
export { default } from '@hcengineering/mail'
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"extends": "./node_modules/@hcengineering/platform-rig/profiles/model/tsconfig.json",
|
||||
|
||||
"compilerOptions": {
|
||||
"rootDir": "./src",
|
||||
"outDir": "./lib",
|
||||
"declarationDir": "./types",
|
||||
"tsBuildInfoFile": ".build/build.tsbuildinfo"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
module.exports = {
|
||||
extends: ['./node_modules/@hcengineering/platform-rig/profiles/model/eslint.config.json'],
|
||||
parserOptions: {
|
||||
tsconfigRootDir: __dirname,
|
||||
project: './tsconfig.json'
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
*
|
||||
!/lib/**
|
||||
!CHANGELOG.md
|
||||
/lib/**/__tests__/
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json",
|
||||
"rigPackageName": "@hcengineering/platform-rig",
|
||||
"rigProfile": "model"
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"name": "@hcengineering/model-my-space",
|
||||
"version": "0.6.0",
|
||||
"main": "lib/index.js",
|
||||
"svelte": "src/index.ts",
|
||||
"types": "types/index.d.ts",
|
||||
"author": "Hardcore Engineering Inc.",
|
||||
"template": "@hcengineering/model-package",
|
||||
"license": "EPL-2.0",
|
||||
"scripts": {
|
||||
"build": "compile",
|
||||
"build:watch": "compile",
|
||||
"format": "format src",
|
||||
"_phase:build": "compile transpile src",
|
||||
"_phase:format": "format src",
|
||||
"_phase:validate": "compile validate"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@hcengineering/platform-rig": "^0.6.0",
|
||||
"@typescript-eslint/eslint-plugin": "^6.11.0",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
"eslint-plugin-promise": "^6.1.1",
|
||||
"eslint-plugin-n": "^15.4.0",
|
||||
"eslint": "^8.54.0",
|
||||
"@typescript-eslint/parser": "^6.11.0",
|
||||
"eslint-config-standard-with-typescript": "^40.0.0",
|
||||
"prettier": "^3.1.0",
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hcengineering/core": "^0.6.32",
|
||||
"@hcengineering/mail": "^0.6.0",
|
||||
"@hcengineering/model": "^0.6.11",
|
||||
"@hcengineering/model-core": "^0.6.0",
|
||||
"@hcengineering/model-presentation": "^0.6.0",
|
||||
"@hcengineering/model-workbench": "^0.6.1",
|
||||
"@hcengineering/model-view": "^0.6.0",
|
||||
"@hcengineering/platform": "^0.6.11",
|
||||
"@hcengineering/ui": "^0.6.15",
|
||||
"@hcengineering/my-space": "^0.6.0",
|
||||
"@hcengineering/my-space-resources": "^0.6.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
//
|
||||
// Copyright © 2025 Hardcore Engineering Inc.
|
||||
//
|
||||
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License. You may
|
||||
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
//
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
import { AccountRole } from '@hcengineering/core'
|
||||
import { type Builder } from '@hcengineering/model'
|
||||
import core from '@hcengineering/model-core'
|
||||
import view, { type Viewlet } from '@hcengineering/model-view'
|
||||
import workbench from '@hcengineering/model-workbench'
|
||||
import mail from '@hcengineering/mail'
|
||||
import { mySpaceId } from '@hcengineering/my-space'
|
||||
|
||||
import mySpace from './plugin'
|
||||
|
||||
export { mySpaceId } from '@hcengineering/my-space'
|
||||
|
||||
export { mySpace as default }
|
||||
|
||||
export function createModel (builder: Builder): void {
|
||||
builder.createDoc(
|
||||
workbench.class.Application,
|
||||
core.space.Model,
|
||||
{
|
||||
label: mySpace.string.MySpace,
|
||||
icon: mySpace.icon.MySpace,
|
||||
alias: mySpaceId,
|
||||
accessLevel: AccountRole.User,
|
||||
hidden: false,
|
||||
locationResolver: mySpace.resolver.Location,
|
||||
navigatorModel: {
|
||||
spaces: [],
|
||||
specials: [
|
||||
{
|
||||
id: 'mail',
|
||||
label: mySpace.string.Mail,
|
||||
icon: mySpace.icon.Mail,
|
||||
component: workbench.component.SpecialView,
|
||||
componentProps: {
|
||||
_class: mail.class.MailThread,
|
||||
icon: mySpace.icon.Mail,
|
||||
label: mySpace.string.Mail,
|
||||
createLabel: mail.string.CreateMail,
|
||||
createComponent: mail.component.CreateMail
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
mySpace.app.MySpace
|
||||
)
|
||||
|
||||
builder.createDoc<Viewlet>(
|
||||
view.class.Viewlet,
|
||||
core.space.Model,
|
||||
{
|
||||
attachTo: mail.class.MailThread,
|
||||
descriptor: view.viewlet.Table,
|
||||
config: [
|
||||
{ key: 'createdBy', label: mail.string.From, displayProps: { fixed: 'left', key: 'app' } },
|
||||
'',
|
||||
{ key: 'modifiedOn', label: mail.string.Date, displayProps: { key: 'modified', fixed: 'right' } }
|
||||
],
|
||||
configOptions: {
|
||||
hiddenKeys: ['name'],
|
||||
sortable: true
|
||||
}
|
||||
},
|
||||
mySpace.viewlet.TableMail
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
//
|
||||
// Copyright © 2025 Hardcore Engineering Inc.
|
||||
//
|
||||
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License. You may
|
||||
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
//
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
import { mergeIds } from '@hcengineering/platform'
|
||||
import { mySpaceId } from '@hcengineering/my-space'
|
||||
import mySpace from '@hcengineering/my-space-resources/src/plugin'
|
||||
|
||||
export default mergeIds(mySpaceId, mySpace, {
|
||||
component: {}
|
||||
})
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"extends": "./node_modules/@hcengineering/platform-rig/profiles/model/tsconfig.json",
|
||||
|
||||
"compilerOptions": {
|
||||
"rootDir": "./src",
|
||||
"outDir": "./lib",
|
||||
"declarationDir": "./types",
|
||||
"tsBuildInfoFile": ".build/build.tsbuildinfo"
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,7 @@
|
||||
//
|
||||
|
||||
import { mergeIds } from '@hcengineering/platform'
|
||||
import { type AnyComponent } from '@hcengineering/ui'
|
||||
import { type AnyComponent } from '@hcengineering/ui/src/types'
|
||||
import { presenceId } from '@hcengineering/presence'
|
||||
import presence from '@hcengineering/presence-resources/src/plugin'
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
import { type Doc, type Ref } from '@hcengineering/core'
|
||||
import { mergeIds } from '@hcengineering/platform'
|
||||
import { type ViewAction, type Action } from '@hcengineering/view'
|
||||
import { type FilePreviewExtension } from '@hcengineering/presentation'
|
||||
import { type FilePreviewExtension } from '@hcengineering/presentation/src/types'
|
||||
import { printId } from '@hcengineering/print'
|
||||
// This import is needed because of similar import in print plugin
|
||||
// Otherwise, TS complains about missing types for resulting merge
|
||||
|
||||
@@ -76,8 +76,8 @@ import {
|
||||
type TaskTypeDescriptor,
|
||||
type TaskTypeKind
|
||||
} from '@hcengineering/task'
|
||||
import type { AnyComponent } from '@hcengineering/ui'
|
||||
import { PaletteColorIndexes } from '@hcengineering/ui/src/colors'
|
||||
import type { AnyComponent } from '@hcengineering/ui/src/types'
|
||||
|
||||
import task from './plugin'
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ import {
|
||||
type TextEditorActionKind
|
||||
} from '@hcengineering/text-editor'
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
import type { EditorKitOptions } from '@hcengineering/text-editor-resources'
|
||||
import type { EditorKitOptions } from '@hcengineering/text-editor-resources/src/kits/editor-kit'
|
||||
import textEditor from './plugin'
|
||||
|
||||
export { textEditorOperation } from './migration'
|
||||
|
||||
@@ -53,7 +53,7 @@ import workbench from '@hcengineering/model-workbench'
|
||||
import notification from '@hcengineering/notification'
|
||||
import recruit from '@hcengineering/recruit'
|
||||
import tags from '@hcengineering/tags'
|
||||
import { type AnyComponent } from '@hcengineering/ui'
|
||||
import { type AnyComponent } from '@hcengineering/ui/src/types'
|
||||
import {
|
||||
type TodoDoneTester,
|
||||
timeId,
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
import { type Client, type Doc, type Ref } from '@hcengineering/core'
|
||||
import { type Application } from '@hcengineering/model-workbench'
|
||||
import { type IntlString, mergeIds, type Resource } from '@hcengineering/platform'
|
||||
import type { AnyComponent } from '@hcengineering/ui'
|
||||
import type { AnyComponent } from '@hcengineering/ui/src/types'
|
||||
import { type Action, type ActionCategory } from '@hcengineering/view'
|
||||
import { timeId } from '@hcengineering/time'
|
||||
import time from '@hcengineering/time-resources/src/plugin'
|
||||
|
||||
@@ -18,7 +18,7 @@ import { trainingId } from '@hcengineering/training'
|
||||
import training from '@hcengineering/training-resources/src/plugin'
|
||||
import { mergeIds, type Resource } from '@hcengineering/platform'
|
||||
import { type Doc, type Ref } from '@hcengineering/core'
|
||||
import { type Location, type ResolvedLocation } from '@hcengineering/ui'
|
||||
import { type Location, type ResolvedLocation } from '@hcengineering/ui/src/types'
|
||||
import { type Application } from '@hcengineering/workbench'
|
||||
import { type ActionCategory } from '@hcengineering/view'
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
//
|
||||
|
||||
import { mergeIds } from '@hcengineering/platform'
|
||||
import { type AnyComponent } from '@hcengineering/ui'
|
||||
import { type AnyComponent } from '@hcengineering/ui/src/types'
|
||||
import { uploaderId } from '@hcengineering/uploader'
|
||||
import uploader from '@hcengineering/uploader-resources/src/plugin'
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
import { type Class, type Data, type Doc, type Ref } from '@hcengineering/core'
|
||||
import { type Builder } from '@hcengineering/model'
|
||||
import core from '@hcengineering/model-core'
|
||||
import { type AnyComponent } from '@hcengineering/ui'
|
||||
import { type AnyComponent } from '@hcengineering/ui/src/types'
|
||||
import { type Action, type AttributeCategory } from '@hcengineering/view'
|
||||
import view from '.'
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ import type {
|
||||
SidebarEvent,
|
||||
WorkbenchTab
|
||||
} from '@hcengineering/workbench'
|
||||
import { type AnyComponent } from '@hcengineering/ui'
|
||||
import { type AnyComponent } from '@hcengineering/ui/src/types'
|
||||
import core, { TClass, TDoc, TTx } from '@hcengineering/model-core'
|
||||
import presentation from '@hcengineering/model-presentation'
|
||||
|
||||
|
||||
@@ -24,7 +24,8 @@ import {
|
||||
type WorkspaceInfoWithStatus,
|
||||
type WorkspaceMemberInfo,
|
||||
WorkspaceMode,
|
||||
concatLink
|
||||
concatLink,
|
||||
type WorkspaceUserOperation
|
||||
} from '@hcengineering/core'
|
||||
import platform, { PlatformError, Severity, Status } from '@hcengineering/platform'
|
||||
import type { LoginInfo, OtpInfo, WorkspaceLoginInfo, RegionInfo, WorkspaceOperation } from './types'
|
||||
@@ -99,7 +100,7 @@ export interface AccountClient {
|
||||
listWorkspaces: (region?: string | null, mode?: WorkspaceMode | null) => Promise<WorkspaceInfoWithStatus[]>
|
||||
performWorkspaceOperation: (
|
||||
workspaceId: string | string[],
|
||||
event: 'archive' | 'migrate-to' | 'unarchive' | 'delete',
|
||||
event: WorkspaceUserOperation,
|
||||
...params: any
|
||||
) => Promise<boolean>
|
||||
assignWorkspace: (email: string, workspaceUuid: string, role: AccountRole) => Promise<void>
|
||||
@@ -517,7 +518,7 @@ class AccountClientImpl implements AccountClient {
|
||||
|
||||
async performWorkspaceOperation (
|
||||
workspaceId: string | string[],
|
||||
event: 'archive' | 'migrate-to' | 'unarchive' | 'delete',
|
||||
event: WorkspaceUserOperation,
|
||||
...params: any
|
||||
): Promise<boolean> {
|
||||
const request = {
|
||||
|
||||
@@ -1,7 +1,16 @@
|
||||
import { WorkspaceDataId, WorkspaceUuid, type AccountRole, type PersonUuid, type Timestamp } from '@hcengineering/core'
|
||||
import {
|
||||
PersonId,
|
||||
WorkspaceDataId,
|
||||
WorkspaceUuid,
|
||||
type AccountRole,
|
||||
type PersonUuid,
|
||||
type Timestamp
|
||||
} from '@hcengineering/core'
|
||||
|
||||
export interface LoginInfo {
|
||||
account: PersonUuid
|
||||
name?: string
|
||||
socialId?: PersonId
|
||||
token?: string
|
||||
}
|
||||
|
||||
|
||||
@@ -737,6 +737,8 @@ export type WorkspaceMode =
|
||||
| 'pending-restore' // -> 'restoring'
|
||||
| 'restoring' // -> 'active'
|
||||
|
||||
export type WorkspaceUserOperation = 'archive' | 'migrate-to' | 'unarchive' | 'delete' | 'reset-attempts'
|
||||
|
||||
export function isActiveMode (mode?: WorkspaceMode): boolean {
|
||||
return mode === 'active'
|
||||
}
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
"dom"
|
||||
],
|
||||
"types": ["node", "jest"],
|
||||
"incremental": true
|
||||
"incremental": true,
|
||||
"isolatedModules": true,
|
||||
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,7 @@
|
||||
"rootDir": "./src",
|
||||
"outDir": "./lib",
|
||||
"incremental": true,
|
||||
"isolatedModules": true
|
||||
"isolatedModules": true,
|
||||
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@
|
||||
"esModuleInterop": true,
|
||||
"incremental": true,
|
||||
"types" : [],
|
||||
"isolatedModules": true
|
||||
"isolatedModules": true,
|
||||
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,7 @@
|
||||
"rootDir": "./src",
|
||||
"outDir": "./lib",
|
||||
"incremental": true,
|
||||
"isolatedModules": true
|
||||
"isolatedModules": true,
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"rootDir": "./src",
|
||||
"outDir": "./lib",
|
||||
"incremental": true,
|
||||
"isolatedModules": true
|
||||
"isolatedModules": true,
|
||||
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,7 @@
|
||||
"lib": ["esnext", "dom"],
|
||||
"incremental": true,
|
||||
"types": ["jest"],
|
||||
"isolatedModules": true
|
||||
"isolatedModules": true,
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { type AnyComponent, type AnySvelteComponent } from '@hcengineering/ui'
|
||||
import { type AnyComponent, type AnySvelteComponent } from '@hcengineering/ui/src/types'
|
||||
|
||||
interface BreadcrumbsProps {
|
||||
readonly color?: number | undefined
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
import { concatLink, type WorkspaceDataId, type Blob as PlatformBlob, type Ref } from '@hcengineering/core'
|
||||
import { concatLink, type Blob as PlatformBlob, type Ref, type WorkspaceUuid } from '@hcengineering/core'
|
||||
import { PlatformError, Severity, Status, getMetadata } from '@hcengineering/platform'
|
||||
import { v4 as uuid } from 'uuid'
|
||||
|
||||
@@ -99,12 +99,9 @@ function getFilesUrl (): string {
|
||||
return filesUrl.includes('://') ? filesUrl : concatLink(frontUrl, filesUrl)
|
||||
}
|
||||
|
||||
export function getCurrentWorkspaceId (): WorkspaceDataId {
|
||||
return (
|
||||
getMetadata(plugin.metadata.WorkspaceDataId) ??
|
||||
(getMetadata(plugin.metadata.WorkspaceUuid) as unknown as WorkspaceDataId) ??
|
||||
('' as WorkspaceDataId)
|
||||
)
|
||||
export function getCurrentWorkspaceUuid (): WorkspaceUuid {
|
||||
const workspaceUuid = getMetadata(plugin.metadata.WorkspaceUuid) ?? ''
|
||||
return workspaceUuid as WorkspaceUuid
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -120,7 +117,7 @@ export function generateFileId (): string {
|
||||
export function getUploadUrl (): string {
|
||||
const template = getMetadata(plugin.metadata.UploadURL) ?? defaultUploadUrl
|
||||
|
||||
return template.replaceAll(':workspace', encodeURIComponent(getCurrentWorkspaceId()))
|
||||
return template.replaceAll(':workspace', encodeURIComponent(getCurrentWorkspaceUuid()))
|
||||
}
|
||||
|
||||
function getUploadConfig (): UploadConfig {
|
||||
@@ -142,7 +139,7 @@ function getFileUploadMethod (blob: Blob): { method: FileUploadMethod, url: stri
|
||||
* @public
|
||||
*/
|
||||
export function getFileUploadParams (blobId: string, blob: Blob): FileUploadParams {
|
||||
const workspaceId = encodeURIComponent(getCurrentWorkspaceId())
|
||||
const workspaceId = encodeURIComponent(getCurrentWorkspaceUuid())
|
||||
const fileId = encodeURIComponent(blobId)
|
||||
|
||||
const { method, url: urlTemplate } = getFileUploadMethod(blob)
|
||||
@@ -170,7 +167,7 @@ export function getFileUrl (file: string, filename?: string): string {
|
||||
const template = getFilesUrl()
|
||||
return template
|
||||
.replaceAll(':filename', encodeURIComponent(filename ?? file))
|
||||
.replaceAll(':workspace', encodeURIComponent(getCurrentWorkspaceId()))
|
||||
.replaceAll(':workspace', encodeURIComponent(getCurrentWorkspaceUuid()))
|
||||
.replaceAll(':blobId', encodeURIComponent(file))
|
||||
}
|
||||
|
||||
@@ -289,12 +286,12 @@ async function uploadFileWithSignedUrl (file: File, uuid: string, uploadUrl: str
|
||||
}
|
||||
}
|
||||
|
||||
export async function getJsonOrEmpty (file: string, name: string): Promise<any> {
|
||||
export async function getJsonOrEmpty<T = any> (file: string, name: string): Promise<T | undefined> {
|
||||
try {
|
||||
const fileUrl = getFileUrl(file, name)
|
||||
const resp = await fetch(fileUrl)
|
||||
return await resp.json()
|
||||
return (await resp.json()) as T
|
||||
} catch {
|
||||
return {}
|
||||
return undefined
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ import {
|
||||
} from '@hcengineering/core'
|
||||
import type { Asset, IntlString, Metadata, Plugin, StatusCode } from '@hcengineering/platform'
|
||||
import { plugin } from '@hcengineering/platform'
|
||||
import { type ComponentExtensionId } from '@hcengineering/ui'
|
||||
import { type ComponentExtensionId } from '@hcengineering/ui/src/types'
|
||||
import { type PresentationMiddlewareFactory } from './pipeline'
|
||||
import type { PreviewConfig } from './preview'
|
||||
import {
|
||||
|
||||
@@ -2,7 +2,7 @@ import type { Blob, Ref } from '@hcengineering/core'
|
||||
import { concatLink } from '@hcengineering/core'
|
||||
import { getMetadata } from '@hcengineering/platform'
|
||||
|
||||
import { getFileUrl, getCurrentWorkspaceId } from './file'
|
||||
import { getFileUrl, getCurrentWorkspaceUuid } from './file'
|
||||
import presentation from './plugin'
|
||||
|
||||
export interface PreviewConfig {
|
||||
@@ -16,7 +16,7 @@ export interface VideoMeta {
|
||||
hls: string
|
||||
}
|
||||
|
||||
const defaultImagePreview = (): string => `/files/${getCurrentWorkspaceId()}?file=:blobId&size=:size`
|
||||
const defaultImagePreview = (): string => `/files/${getCurrentWorkspaceUuid()}?file=:blobId&size=:size`
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -93,7 +93,7 @@ function blobToSrcSet (
|
||||
return ''
|
||||
}
|
||||
|
||||
let url = cfg.image.replaceAll(':workspace', encodeURIComponent(getCurrentWorkspaceId()))
|
||||
let url = cfg.image.replaceAll(':workspace', encodeURIComponent(getCurrentWorkspaceUuid()))
|
||||
const downloadUrl = getFileUrl(blob)
|
||||
|
||||
const frontUrl = getMetadata(presentation.metadata.FrontUrl) ?? window.location.origin
|
||||
@@ -139,7 +139,7 @@ export async function getVideoMeta (file: string, filename?: string): Promise<Vi
|
||||
const cfg = getPreviewConfig()
|
||||
|
||||
let url = cfg.video
|
||||
.replaceAll(':workspace', encodeURIComponent(getCurrentWorkspaceId()))
|
||||
.replaceAll(':workspace', encodeURIComponent(getCurrentWorkspaceUuid()))
|
||||
.replaceAll(':blobId', encodeURIComponent(file))
|
||||
|
||||
if (url === '') {
|
||||
|
||||
@@ -13,7 +13,7 @@ import {
|
||||
type TxOperations
|
||||
} from '@hcengineering/core'
|
||||
import { type Asset, type IntlString, type Resource } from '@hcengineering/platform'
|
||||
import { type AnyComponent, type AnySvelteComponent, type ComponentExtensionId } from '@hcengineering/ui'
|
||||
import { type AnyComponent, type AnySvelteComponent, type ComponentExtensionId } from '@hcengineering/ui/src/types'
|
||||
|
||||
export * from './components/breadcrumbs/types'
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ import core, {
|
||||
type TxResult,
|
||||
type TypeAny,
|
||||
type WithLookup,
|
||||
type WorkspaceDataId
|
||||
type WorkspaceUuid
|
||||
} from '@hcengineering/core'
|
||||
import { getMetadata, getResource } from '@hcengineering/platform'
|
||||
import { LiveQuery as LQ } from '@hcengineering/query'
|
||||
@@ -763,7 +763,7 @@ export function isSpaceClass (_class: Ref<Class<Doc>>): boolean {
|
||||
return client.getHierarchy().isDerived(_class, core.class.Space)
|
||||
}
|
||||
|
||||
export function setPresentationCookie (token: string, workspaceUuid: WorkspaceDataId): void {
|
||||
export function setPresentationCookie (token: string, workspaceUuid: WorkspaceUuid): void {
|
||||
function setToken (path: string): void {
|
||||
const res =
|
||||
encodeURIComponent(plugin.metadata.Token.replaceAll(':', '-')) +
|
||||
|
||||
@@ -123,45 +123,49 @@
|
||||
{#await getJsonOrEmpty(value.file, value.name)}
|
||||
<Spinner size="small" />
|
||||
{:then linkPreviewDetails}
|
||||
<div class="flex-center icon image">
|
||||
{#if linkPreviewDetails.icon !== undefined && !useDefaultIcon}
|
||||
<img
|
||||
src={linkPreviewDetails.icon}
|
||||
class="link-preview-icon"
|
||||
alt="link-preview"
|
||||
on:error={() => {
|
||||
useDefaultIcon = true
|
||||
}}
|
||||
/>
|
||||
{:else}
|
||||
<WebIcon size="medium" />
|
||||
{/if}
|
||||
</div>
|
||||
<div class="flex-col info-container">
|
||||
<div class="name">
|
||||
<a target="_blank" class="no-line" style:flex-shrink={0} href={linkPreviewDetails.url}
|
||||
>{trimFilename(linkPreviewDetails?.title ?? value.name)}</a
|
||||
>
|
||||
</div>
|
||||
<div class="info-content flex-row-center">
|
||||
<span class="actions inline-flex clear-mins gap-1">
|
||||
{#if linkPreviewDetails.description}
|
||||
{trimFilename(linkPreviewDetails.description)}
|
||||
<span>•</span>
|
||||
{/if}
|
||||
<span
|
||||
class="remove-link"
|
||||
on:click={(ev) => {
|
||||
ev.stopPropagation()
|
||||
ev.preventDefault()
|
||||
dispatch('remove', value)
|
||||
{#if linkPreviewDetails !== undefined}
|
||||
<div class="flex-center icon image">
|
||||
{#if linkPreviewDetails.icon !== undefined && !useDefaultIcon}
|
||||
<img
|
||||
src={linkPreviewDetails.icon}
|
||||
class="link-preview-icon"
|
||||
alt="link-preview"
|
||||
on:error={() => {
|
||||
useDefaultIcon = true
|
||||
}}
|
||||
>
|
||||
<Label label={presentation.string.Delete} />
|
||||
</span>
|
||||
</span>
|
||||
/>
|
||||
{:else}
|
||||
<WebIcon size="medium" />
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-col info-container">
|
||||
<div class="name">
|
||||
<a target="_blank" class="no-line" style:flex-shrink={0} href={linkPreviewDetails.url}
|
||||
>{trimFilename(linkPreviewDetails?.title ?? value.name)}</a
|
||||
>
|
||||
</div>
|
||||
<div class="info-content flex-row-center">
|
||||
<span class="actions inline-flex clear-mins gap-1">
|
||||
{#if linkPreviewDetails.description}
|
||||
{trimFilename(linkPreviewDetails.description)}
|
||||
<span>•</span>
|
||||
{/if}
|
||||
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
||||
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
||||
<span
|
||||
class="remove-link"
|
||||
on:click={(ev) => {
|
||||
ev.stopPropagation()
|
||||
ev.preventDefault()
|
||||
dispatch('remove', value)
|
||||
}}
|
||||
>
|
||||
<Label label={presentation.string.Delete} />
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
{/await}
|
||||
{:else}
|
||||
{#await getBlobRef(value.file, value.name, sizeToWidth('large')) then valueRef}
|
||||
|
||||
@@ -29,15 +29,15 @@
|
||||
import { Asset, IntlString, setPlatformStatus, unknownError } from '@hcengineering/platform'
|
||||
import {
|
||||
DraftController,
|
||||
canDisplayLinkPreview,
|
||||
createQuery,
|
||||
deleteFile,
|
||||
draftsStore,
|
||||
fetchLinkPreviewDetails,
|
||||
getClient,
|
||||
getFileMetadata,
|
||||
uploadFile,
|
||||
fetchLinkPreviewDetails,
|
||||
canDisplayLinkPreview,
|
||||
isLinkPreviewEnabled
|
||||
isLinkPreviewEnabled,
|
||||
uploadFile
|
||||
} from '@hcengineering/presentation'
|
||||
import { EmptyMarkup } from '@hcengineering/text'
|
||||
import textEditor, { type RefAction } from '@hcengineering/text-editor'
|
||||
@@ -46,7 +46,6 @@
|
||||
import { createEventDispatcher, onDestroy, tick } from 'svelte'
|
||||
import attachment from '../plugin'
|
||||
import AttachmentPresenter from './AttachmentPresenter.svelte'
|
||||
import { rmSync } from 'fs'
|
||||
|
||||
export let objectId: Ref<Doc>
|
||||
export let space: Ref<Space>
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
let useDefaultIcon = false
|
||||
let retryCount = 0
|
||||
let viewModel: LinkPreviewDetails
|
||||
let viewModel: LinkPreviewDetails | undefined
|
||||
let previewImageSrc: string | undefined
|
||||
|
||||
function refreshPreviewImage (): void {
|
||||
@@ -53,12 +53,13 @@
|
||||
)
|
||||
}
|
||||
onMount(() => {
|
||||
void getJsonOrEmpty(attachment.file, attachment.name)
|
||||
void getJsonOrEmpty<LinkPreviewDetails>(attachment.file, attachment.name)
|
||||
.then((res) => {
|
||||
viewModel = res as LinkPreviewDetails
|
||||
viewModel = res
|
||||
refreshPreviewImage()
|
||||
})
|
||||
.catch((err) => {
|
||||
viewModel = undefined
|
||||
console.error(err)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -18,7 +18,7 @@ import { type IntlString, mergeIds } from '@hcengineering/platform'
|
||||
import bitrix, { bitrixId } from '@hcengineering/bitrix'
|
||||
import { type Ref } from '@hcengineering/core'
|
||||
import { type Handler, type IntegrationType } from '@hcengineering/setting'
|
||||
import { type AnyComponent } from '@hcengineering/ui'
|
||||
import { type AnyComponent } from '@hcengineering/ui/src/types'
|
||||
|
||||
export default mergeIds(bitrixId, bitrix, {
|
||||
string: {
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
import board, { boardId } from '@hcengineering/board'
|
||||
import { type Ref, type StatusCategory } from '@hcengineering/core'
|
||||
import { type IntlString, mergeIds } from '@hcengineering/platform'
|
||||
import type { AnyComponent } from '@hcengineering/ui'
|
||||
import type { AnyComponent } from '@hcengineering/ui/src/types'
|
||||
|
||||
export default mergeIds(boardId, board, {
|
||||
string: {
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
import card, { cardId } from '@hcengineering/card'
|
||||
import { type Ref } from '@hcengineering/core'
|
||||
import { type IntlString, mergeIds } from '@hcengineering/platform'
|
||||
import { type AnyComponent } from '@hcengineering/ui'
|
||||
import { type AnyComponent } from '@hcengineering/ui/src/types'
|
||||
import { type Viewlet } from '@hcengineering/view'
|
||||
|
||||
export default mergeIds(cardId, card, {
|
||||
|
||||
@@ -17,7 +17,7 @@ import chunter, { chunterId } from '@hcengineering/chunter'
|
||||
import type { Client, Doc, Ref, Space } from '@hcengineering/core'
|
||||
import type { IntlString, Resource } from '@hcengineering/platform'
|
||||
import { mergeIds } from '@hcengineering/platform'
|
||||
import type { AnyComponent } from '@hcengineering/ui'
|
||||
import type { AnyComponent } from '@hcengineering/ui/src/types'
|
||||
import { type ViewAction } from '@hcengineering/view'
|
||||
import { type DocNotifyContext, type InboxNotification } from '@hcengineering/notification'
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
import contact, { contactId } from '@hcengineering/contact'
|
||||
import { type Client, type Doc } from '@hcengineering/core'
|
||||
import { type IntlString, mergeIds, type Resource } from '@hcengineering/platform'
|
||||
import { type LabelAndProps, type Location } from '@hcengineering/ui'
|
||||
import { type LabelAndProps, type Location } from '@hcengineering/ui/src/types'
|
||||
import {
|
||||
type CreateAggregationManagerFunc,
|
||||
type GrouppingManagerResource,
|
||||
|
||||
@@ -20,7 +20,7 @@ import documents, {
|
||||
} from '@hcengineering/controlled-documents'
|
||||
import { type Client, type Doc, type Ref, type Space } from '@hcengineering/core'
|
||||
import { type IntlString, mergeIds, type Resource } from '@hcengineering/platform'
|
||||
import { type AnyComponent, type Location } from '@hcengineering/ui'
|
||||
import { type AnyComponent, type Location } from '@hcengineering/ui/src/types'
|
||||
import type { KeyFilter, SortFunc, ViewActionAvailabilityFunction } from '@hcengineering/view'
|
||||
|
||||
export default mergeIds(documentsId, documents, {
|
||||
|
||||
@@ -12,7 +12,7 @@ import {
|
||||
} from '@hcengineering/core'
|
||||
import type { Asset, Plugin, Resource } from '@hcengineering/platform'
|
||||
import { IntlString, plugin } from '@hcengineering/platform'
|
||||
import type { AnyComponent, ResolvedLocation, Location } from '@hcengineering/ui'
|
||||
import type { AnyComponent, ResolvedLocation, Location } from '@hcengineering/ui/src/types'
|
||||
import { Action } from '@hcengineering/view'
|
||||
|
||||
import type {
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
import { type Client, type Doc, type Ref } from '@hcengineering/core'
|
||||
import document, { type Document, documentId } from '@hcengineering/document'
|
||||
import { mergeIds, type IntlString, type Resource } from '@hcengineering/platform'
|
||||
import { type AnyComponent, type Location } from '@hcengineering/ui'
|
||||
import { type AnyComponent, type Location } from '@hcengineering/ui/src/types'
|
||||
|
||||
export default mergeIds(documentId, document, {
|
||||
component: {
|
||||
|
||||
@@ -17,7 +17,7 @@ import type { Class, Doc, Mixin, Ref, SpaceType, SpaceTypeDescriptor } from '@hc
|
||||
import { NotificationGroup, NotificationType } from '@hcengineering/notification'
|
||||
import type { Asset, Plugin, Resource } from '@hcengineering/platform'
|
||||
import { IntlString, plugin } from '@hcengineering/platform'
|
||||
import type { AnyComponent, Location, ResolvedLocation } from '@hcengineering/ui'
|
||||
import type { AnyComponent, Location, ResolvedLocation } from '@hcengineering/ui/src/types'
|
||||
import { Action } from '@hcengineering/view'
|
||||
import { Document, DocumentSnapshot, SavedDocument, Teamspace } from './types'
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
import type { Class, Doc, Mixin, Ref, SpaceType, SpaceTypeDescriptor, Type } from '@hcengineering/core'
|
||||
import type { Asset, IntlString, Plugin, Resource as PlatformResource } from '@hcengineering/platform'
|
||||
import { plugin } from '@hcengineering/platform'
|
||||
import type { Location, ResolvedLocation } from '@hcengineering/ui'
|
||||
import type { Location, ResolvedLocation } from '@hcengineering/ui/src/types'
|
||||
import { Drive, File, FileVersion, Folder, Resource } from './types'
|
||||
|
||||
export * from './types'
|
||||
|
||||
@@ -9,7 +9,6 @@ import core, {
|
||||
type Client,
|
||||
type Version,
|
||||
type Ref,
|
||||
type WorkspaceDataId,
|
||||
type PersonId
|
||||
} from '@hcengineering/core'
|
||||
import { setCurrentEmployee, type Employee } from '@hcengineering/contact'
|
||||
@@ -65,10 +64,7 @@ export async function connect (title: string): Promise<Client | undefined> {
|
||||
return
|
||||
}
|
||||
|
||||
setPresentationCookie(
|
||||
token,
|
||||
workspaceLoginInfo.workspaceDataId ?? (workspaceLoginInfo.workspace as unknown as WorkspaceDataId)
|
||||
)
|
||||
setPresentationCookie(token, workspaceLoginInfo.workspace)
|
||||
|
||||
setMetadata(presentation.metadata.Token, token)
|
||||
setMetadata(presentation.metadata.WorkspaceUuid, workspaceLoginInfo.workspace)
|
||||
@@ -246,16 +242,14 @@ export async function connect (title: string): Promise<Client | undefined> {
|
||||
}
|
||||
|
||||
function clearMetadata (ws: string): void {
|
||||
const tokens = fetchMetadataLocalStorage(login.metadata.LoginTokens)
|
||||
const tokens = fetchMetadataLocalStorage(login.metadata.LoginTokensV2)
|
||||
if (tokens !== null) {
|
||||
const loc = getCurrentLocation()
|
||||
// eslint-disable-next-line
|
||||
delete tokens[loc.path[1]]
|
||||
setMetadataLocalStorage(login.metadata.LoginTokens, tokens)
|
||||
setMetadataLocalStorage(login.metadata.LoginTokensV2, tokens)
|
||||
}
|
||||
const currentWorkspace =
|
||||
getMetadata(presentation.metadata.WorkspaceDataId) ??
|
||||
(getMetadata(presentation.metadata.WorkspaceUuid) as unknown as WorkspaceDataId)
|
||||
const currentWorkspace = getMetadata(presentation.metadata.WorkspaceUuid)
|
||||
if (currentWorkspace !== undefined) {
|
||||
setPresentationCookie('', currentWorkspace)
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import { workbenchId } from '@hcengineering/workbench'
|
||||
export async function checkAccess (doc: Doc): Promise<void> {
|
||||
const loc = getCurrentLocation()
|
||||
const ws = loc.path[1]
|
||||
const tokens: Record<string, string> = fetchMetadataLocalStorage(login.metadata.LoginTokens) ?? {}
|
||||
const tokens: Record<string, string> = fetchMetadataLocalStorage(login.metadata.LoginTokensV2) ?? {}
|
||||
const token = tokens[ws]
|
||||
const endpoint = getMetadata(presentation.metadata.Endpoint)
|
||||
if (token === undefined || endpoint === undefined) return
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
import lead, { leadId } from '@hcengineering/lead'
|
||||
import { type IntlString, mergeIds, type Resource } from '@hcengineering/platform'
|
||||
import { type Client, type Doc, type Ref } from '@hcengineering/core'
|
||||
import { type AnyComponent } from '@hcengineering/ui'
|
||||
import { type AnyComponent } from '@hcengineering/ui/src/types'
|
||||
|
||||
export default mergeIds(leadId, lead, {
|
||||
string: {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<script lang="ts">
|
||||
import { RegionInfo } from '@hcengineering/account-client'
|
||||
import {
|
||||
groupByArray,
|
||||
isActiveMode,
|
||||
@@ -12,13 +13,15 @@
|
||||
type WorkspaceInfoWithStatus
|
||||
} from '@hcengineering/core'
|
||||
import { getEmbeddedLabel } from '@hcengineering/platform'
|
||||
import { isAdminUser, MessageBox } from '@hcengineering/presentation'
|
||||
import { copyTextToClipboard, isAdminUser, MessageBox } from '@hcengineering/presentation'
|
||||
import {
|
||||
Button,
|
||||
ButtonMenu,
|
||||
CheckBox,
|
||||
Expandable,
|
||||
IconArrowRight,
|
||||
IconCopy,
|
||||
IconDownOutline,
|
||||
IconOpen,
|
||||
IconStart,
|
||||
IconStop,
|
||||
@@ -27,13 +30,10 @@
|
||||
Scroller,
|
||||
SearchEdit,
|
||||
showPopup,
|
||||
ticker,
|
||||
Grid
|
||||
ticker
|
||||
} from '@hcengineering/ui'
|
||||
import { workbenchId } from '@hcengineering/workbench'
|
||||
import { getAllWorkspaces, getRegionInfo, performWorkspaceOperation } from '../utils'
|
||||
import { RegionInfo } from '@hcengineering/account-client'
|
||||
import ColStar from '@hcengineering/ui/src/components/icons/ColStar.svelte'
|
||||
|
||||
$: now = $ticker
|
||||
|
||||
@@ -73,6 +73,14 @@
|
||||
|
||||
$: void updateWorkspaces($ticker)
|
||||
|
||||
// Individual filters
|
||||
|
||||
let showActive: boolean = true
|
||||
let showArchived: boolean = false
|
||||
let showDeleted: boolean = false
|
||||
let showOther: boolean = true
|
||||
let showGrAttempts: boolean = true
|
||||
|
||||
$: sortedWorkspaces = workspaces
|
||||
.filter(
|
||||
(it) =>
|
||||
@@ -83,7 +91,8 @@
|
||||
((showActive && isActiveMode(it.mode)) ||
|
||||
(showArchived && isArchivingMode(it.mode)) ||
|
||||
(showDeleted && isDeletingMode(it.mode)) ||
|
||||
(showOther && (isMigrationMode(it.mode) || isRestoringMode(it.mode) || isUpgradingMode(it.mode))))
|
||||
(showOther && (isMigrationMode(it.mode) || isRestoringMode(it.mode) || isUpgradingMode(it.mode))) ||
|
||||
(showGrAttempts && it.processingAttempts > 0))
|
||||
)
|
||||
.sort((a, b) => {
|
||||
switch (sortingRule) {
|
||||
@@ -179,13 +188,6 @@
|
||||
|
||||
let limit = 50
|
||||
|
||||
// Individual filters
|
||||
|
||||
let showActive: boolean = true
|
||||
let showArchived: boolean = false
|
||||
let showDeleted: boolean = false
|
||||
let showOther: boolean = true
|
||||
|
||||
$: groupped = groupByArray(sortedWorkspaces, (it) => {
|
||||
const lastUsageDays = Math.round((now - (it.lastVisit ?? 0)) / (1000 * 3600 * 24))
|
||||
return Object.entries(dayRanges).find(([_k, v]) => lastUsageDays <= v)?.[0] ?? 'Other'
|
||||
@@ -266,6 +268,10 @@
|
||||
<span class="mr-2">Show other workspaces:</span>
|
||||
<CheckBox bind:checked={showOther} />
|
||||
</div>
|
||||
<div class="flex-row-center">
|
||||
<span class="mr-2">Show attempts >=0 workspaces:</span>
|
||||
<CheckBox bind:checked={showGrAttempts} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="fs-title p-3 flex-row-center">
|
||||
@@ -383,139 +389,158 @@
|
||||
{@const bIdx = backupIdx.get(workspace.uuid)}
|
||||
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
||||
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
||||
<div class="flex fs-title cursor-pointer focused-button bordered" id={`${workspace.uuid}`}>
|
||||
<Grid column={10} equalHeight={false} columnGap={0}>
|
||||
<span class="label overflow-label flex-row-center flex-grow flex-shrink">
|
||||
{wsName}
|
||||
<div class="ml-1">
|
||||
<Button icon={IconOpen} size={'small'} on:click={() => select(workspace.url)} />
|
||||
</div>
|
||||
</span>
|
||||
<div class="ml-1">
|
||||
<!-- Retrieve created by-->
|
||||
<!-- {workspace.createdBy} -->
|
||||
<tr class="flex fs-title cursor-pointer focused-button bordered" id={`${workspace.uuid}`}>
|
||||
<div class="label overflow-label p-1 flex flex-row-center" style:width={'15rem'}>
|
||||
{wsName}
|
||||
<div class="ml-1 flex flex-row-center">
|
||||
<Button
|
||||
icon={IconOpen}
|
||||
size={'small'}
|
||||
on:click={() => select(workspace.url)}
|
||||
showTooltip={{ label: getEmbeddedLabel('Open Workspace URL') }}
|
||||
/>
|
||||
<Button
|
||||
icon={IconCopy}
|
||||
size={'small'}
|
||||
on:click={() => copyTextToClipboard(workspace.uuid)}
|
||||
showTooltip={{ label: getEmbeddedLabel('Copy UUID') }}
|
||||
/>
|
||||
</div>
|
||||
<span class="label overflow-label flex-shrink p-1">
|
||||
{workspace.region ?? ''}
|
||||
</span>
|
||||
<span class="label overflow-label flex-shrink p-1">
|
||||
{lastUsageDays} days
|
||||
</span>
|
||||
<span class="label overflow-label p-1">
|
||||
{workspace.mode ?? '-'}
|
||||
</span>
|
||||
<span class="label overflow-label flex-shrink">
|
||||
{workspace.processingAttempts}
|
||||
</span>
|
||||
<span class="flex flex-shrink">
|
||||
{#if workspace.processingProgress !== 100 && workspace.processingProgress !== 0}
|
||||
({workspace.processingProgress}%)
|
||||
</div>
|
||||
<div class="label overflow-label p-1 flex flex-row-center" style:width={'5rem'}>
|
||||
{workspace.region ?? ''}
|
||||
</div>
|
||||
<div class="label overflow-label p-1 flex flex-row-center" style:width={'5rem'}>
|
||||
{lastUsageDays} days
|
||||
</div>
|
||||
<div class="label overflow-label p-1 flex flex-row-center" style:width={'10rem'}>
|
||||
{workspace.mode ?? '-'}
|
||||
</div>
|
||||
<div class="label overflow-label flex flex-row-center" style:width={'5rem'}>
|
||||
{workspace.processingAttempts}
|
||||
{#if workspace.processingAttempts > 0}
|
||||
<Button
|
||||
on:click={() => {
|
||||
showPopup(MessageBox, {
|
||||
label: getEmbeddedLabel(`Reset attempts ${workspace.url}`),
|
||||
message: getEmbeddedLabel('Please confirm'),
|
||||
action: async () => {
|
||||
await performWorkspaceOperation(workspace.uuid, 'reset-attempts')
|
||||
}
|
||||
})
|
||||
}}
|
||||
icon={IconDownOutline}
|
||||
size={'small'}
|
||||
kind={'ghost'}
|
||||
/>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="flex flex-row-center" style:width={'5rem'}>
|
||||
{#if workspace.processingProgress !== 100 && workspace.processingProgress !== 0}
|
||||
({workspace.processingProgress}%)
|
||||
{/if}
|
||||
</div>
|
||||
<div class="flex flex-row-center" style:width={'15rem'}>
|
||||
{#if workspace.backupInfo != null}
|
||||
{@const sz = Math.max(
|
||||
workspace.backupInfo.backupSize,
|
||||
workspace.backupInfo.dataSize + workspace.backupInfo.blobsSize
|
||||
)}
|
||||
{@const szGb = Math.round((sz * 100) / 1024) / 100}
|
||||
{#if szGb > 0}
|
||||
{Math.round((sz * 100) / 1024) / 100}Gb
|
||||
{:else}
|
||||
{Math.round(sz * 100) / 100}Mb
|
||||
{/if}
|
||||
</span>
|
||||
<span class="flex flex-shrink">
|
||||
{#if workspace.backupInfo != null}
|
||||
{@const sz = Math.max(
|
||||
workspace.backupInfo.backupSize,
|
||||
workspace.backupInfo.dataSize + workspace.backupInfo.blobsSize
|
||||
)}
|
||||
{@const szGb = Math.round((sz * 100) / 1024) / 100}
|
||||
{#if szGb > 0}
|
||||
{Math.round((sz * 100) / 1024) / 100}Gb
|
||||
{:else}
|
||||
{Math.round(sz * 100) / 100}Mb
|
||||
{/if}
|
||||
{/if}
|
||||
{#if bIdx != null}
|
||||
[#{bIdx}]
|
||||
{/if}
|
||||
</span>
|
||||
<span class="flex flex-shrink">
|
||||
{#if workspace.backupInfo != null}
|
||||
{@const hours = Math.round((now - workspace.backupInfo.lastBackup) / (1000 * 3600))}
|
||||
{/if}
|
||||
{#if bIdx != null}
|
||||
[#{bIdx}]
|
||||
{/if}
|
||||
</div>
|
||||
<div class="flex flex-row-center" style:width={'15rem'}>
|
||||
{#if workspace.backupInfo != null}
|
||||
{@const hours = Math.round((now - workspace.backupInfo.lastBackup) / (1000 * 3600))}
|
||||
|
||||
{#if hours > 24}
|
||||
{Math.round(hours / 24)} days
|
||||
{:else}
|
||||
{hours} hours
|
||||
{/if}
|
||||
{#if hours > 24}
|
||||
{Math.round(hours / 24)} days
|
||||
{:else}
|
||||
{hours} hours
|
||||
{/if}
|
||||
</span>
|
||||
<div class="flex flex-grow gap-1-5 flex-shrink">
|
||||
<div class="flex flex-row-center gap-1-5">
|
||||
{#if workspace.mode === 'active'}
|
||||
<Button
|
||||
icon={IconStop}
|
||||
size={'small'}
|
||||
label={getEmbeddedLabel('Archive')}
|
||||
kind={'ghost'}
|
||||
on:click={() => {
|
||||
showPopup(MessageBox, {
|
||||
label: getEmbeddedLabel(`Archive ${workspace.url}`),
|
||||
message: getEmbeddedLabel('Please confirm'),
|
||||
action: async () => {
|
||||
await performWorkspaceOperation(workspace.uuid, 'archive')
|
||||
}
|
||||
})
|
||||
}}
|
||||
/>
|
||||
{/if}
|
||||
{/if}
|
||||
</div>
|
||||
<div class="flex flex-row-center p-1">
|
||||
{#if workspace.mode === 'active'}
|
||||
<Button
|
||||
icon={IconStop}
|
||||
size={'small'}
|
||||
label={getEmbeddedLabel('Archive')}
|
||||
kind={'ghost'}
|
||||
on:click={() => {
|
||||
showPopup(MessageBox, {
|
||||
label: getEmbeddedLabel(`Archive ${workspace.url}`),
|
||||
message: getEmbeddedLabel('Please confirm'),
|
||||
action: async () => {
|
||||
await performWorkspaceOperation(workspace.uuid, 'archive')
|
||||
}
|
||||
})
|
||||
}}
|
||||
/>
|
||||
{/if}
|
||||
|
||||
{#if workspace.mode === 'archived'}
|
||||
<Button
|
||||
icon={IconStart}
|
||||
size={'small'}
|
||||
kind={'ghost'}
|
||||
label={getEmbeddedLabel('Unarchive')}
|
||||
on:click={() => {
|
||||
showPopup(MessageBox, {
|
||||
label: getEmbeddedLabel(`Unarchive ${workspace.url}`),
|
||||
message: getEmbeddedLabel('Please confirm'),
|
||||
action: async () => {
|
||||
await performWorkspaceOperation(workspace.uuid, 'unarchive')
|
||||
}
|
||||
})
|
||||
}}
|
||||
/>
|
||||
{/if}
|
||||
{#if regionInfo.length > 0 && workspace.mode === 'active' && (workspace.region ?? '') !== selectedRegionId}
|
||||
<Button
|
||||
icon={IconArrowRight}
|
||||
size={'small'}
|
||||
kind={'positive'}
|
||||
label={getEmbeddedLabel('Migrate')}
|
||||
on:click={() => {
|
||||
showPopup(MessageBox, {
|
||||
label: getEmbeddedLabel(`Migrate ${workspace.url}`),
|
||||
message: getEmbeddedLabel('Please confirm'),
|
||||
action: async () => {
|
||||
await performWorkspaceOperation(workspace.uuid, 'migrate-to', selectedRegionId)
|
||||
}
|
||||
})
|
||||
}}
|
||||
/>
|
||||
{/if}
|
||||
{#if workspace.mode === 'archived'}
|
||||
<Button
|
||||
icon={IconStart}
|
||||
size={'small'}
|
||||
kind={'ghost'}
|
||||
label={getEmbeddedLabel('Unarchive')}
|
||||
on:click={() => {
|
||||
showPopup(MessageBox, {
|
||||
label: getEmbeddedLabel(`Unarchive ${workspace.url}`),
|
||||
message: getEmbeddedLabel('Please confirm'),
|
||||
action: async () => {
|
||||
await performWorkspaceOperation(workspace.uuid, 'unarchive')
|
||||
}
|
||||
})
|
||||
}}
|
||||
/>
|
||||
{/if}
|
||||
{#if regionInfo.length > 0 && workspace.mode === 'active' && (workspace.region ?? '') !== selectedRegionId}
|
||||
<Button
|
||||
icon={IconArrowRight}
|
||||
size={'small'}
|
||||
kind={'positive'}
|
||||
label={getEmbeddedLabel('Migrate')}
|
||||
on:click={() => {
|
||||
showPopup(MessageBox, {
|
||||
label: getEmbeddedLabel(`Migrate ${workspace.url}`),
|
||||
message: getEmbeddedLabel('Please confirm'),
|
||||
action: async () => {
|
||||
await performWorkspaceOperation(workspace.uuid, 'migrate-to', selectedRegionId)
|
||||
}
|
||||
})
|
||||
}}
|
||||
/>
|
||||
{/if}
|
||||
|
||||
{#if superAdminMode && !isDeletingMode(workspace.mode) && !isArchivingMode(workspace.mode)}
|
||||
<Button
|
||||
icon={IconStop}
|
||||
size={'small'}
|
||||
kind={'dangerous'}
|
||||
label={getEmbeddedLabel('Delete')}
|
||||
on:click={() => {
|
||||
showPopup(MessageBox, {
|
||||
label: getEmbeddedLabel(`Delete ${workspace.url}`),
|
||||
message: getEmbeddedLabel('Please confirm'),
|
||||
action: async () => {
|
||||
await performWorkspaceOperation(workspace.uuid, 'delete')
|
||||
}
|
||||
})
|
||||
}}
|
||||
/>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</Grid>
|
||||
</div>
|
||||
{#if superAdminMode && !isDeletingMode(workspace.mode) && !isArchivingMode(workspace.mode)}
|
||||
<Button
|
||||
icon={IconStop}
|
||||
size={'small'}
|
||||
kind={'dangerous'}
|
||||
label={getEmbeddedLabel('Delete')}
|
||||
on:click={() => {
|
||||
showPopup(MessageBox, {
|
||||
label: getEmbeddedLabel(`Delete ${workspace.url}`),
|
||||
message: getEmbeddedLabel('Please confirm'),
|
||||
action: async () => {
|
||||
await performWorkspaceOperation(workspace.uuid, 'delete')
|
||||
}
|
||||
})
|
||||
}}
|
||||
/>
|
||||
{/if}
|
||||
</div>
|
||||
</tr>
|
||||
{/each}
|
||||
</Expandable>
|
||||
{/if}
|
||||
|
||||
@@ -20,7 +20,15 @@
|
||||
import { workbenchId } from '@hcengineering/workbench'
|
||||
import { onMount } from 'svelte'
|
||||
import login from '../plugin'
|
||||
import { createWorkspace, getAccount, getRegionInfo, goTo, setLoginInfo, type RegionInfo } from '../utils'
|
||||
import {
|
||||
createWorkspace,
|
||||
getAccount,
|
||||
getRegionInfo,
|
||||
goTo,
|
||||
setLoginInfo,
|
||||
getAccountDisplayName,
|
||||
type RegionInfo
|
||||
} from '../utils'
|
||||
import Form from './Form.svelte'
|
||||
|
||||
const fields = [
|
||||
@@ -77,7 +85,7 @@
|
||||
{fields}
|
||||
{object}
|
||||
{action}
|
||||
subtitle={loginInfo?.account}
|
||||
subtitle={getAccountDisplayName(loginInfo)}
|
||||
bottomActions={[
|
||||
{
|
||||
caption: login.string.HaveWorkspace,
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
'auth'
|
||||
]
|
||||
if (token === undefined ? !allowedUnauthPages.includes(page) : !pages.includes(page)) {
|
||||
const tokens = fetchMetadataLocalStorage(login.metadata.LoginTokens)
|
||||
const tokens = fetchMetadataLocalStorage(login.metadata.LoginTokensV2)
|
||||
page = tokens != null ? 'login' : 'signup'
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,8 @@
|
||||
getWorkspaces,
|
||||
goTo,
|
||||
navigateToWorkspace,
|
||||
selectWorkspace
|
||||
selectWorkspace,
|
||||
getAccountDisplayName
|
||||
} from '../utils'
|
||||
import StatusControl from './StatusControl.svelte'
|
||||
|
||||
@@ -129,8 +130,8 @@
|
||||
<form class="container" style:padding={$deviceInfo.docWidth <= 480 ? '1.25rem' : '5rem'}>
|
||||
<div class="grow-separator" />
|
||||
<div class="fs-title">
|
||||
{#if account?.account}
|
||||
{account.account}
|
||||
{#if account != null}
|
||||
{getAccountDisplayName(account)}
|
||||
{:else}
|
||||
<Label label={login.string.LoadingAccount} />
|
||||
{/if}
|
||||
|
||||
@@ -20,7 +20,9 @@ import {
|
||||
type Person,
|
||||
type Doc,
|
||||
type Ref,
|
||||
type WorkspaceInfoWithStatus
|
||||
type WorkspaceInfoWithStatus,
|
||||
type WorkspaceUserOperation,
|
||||
parseSocialIdString
|
||||
} from '@hcengineering/core'
|
||||
import type { LoginInfo, OtpInfo, WorkspaceLoginInfo, AccountClient, RegionInfo } from '@hcengineering/account-client'
|
||||
import { getClient as getAccountClientRaw } from '@hcengineering/account-client'
|
||||
@@ -217,7 +219,7 @@ export async function getWorkspaces (): Promise<WorkspaceInfoWithStatus[]> {
|
||||
|
||||
export async function performWorkspaceOperation (
|
||||
workspace: string | string[],
|
||||
operation: 'archive' | 'migrate-to' | 'unarchive' | 'delete',
|
||||
operation: WorkspaceUserOperation,
|
||||
...params: any[]
|
||||
): Promise<boolean> {
|
||||
// TODO: this method requires a special admin token
|
||||
@@ -423,12 +425,12 @@ export async function getPerson (): Promise<[Status, Person | null]> {
|
||||
}
|
||||
|
||||
export function setLoginInfo (loginInfo: WorkspaceLoginInfo): void {
|
||||
const tokens: Record<string, string> = fetchMetadataLocalStorage(login.metadata.LoginTokens) ?? {}
|
||||
const tokens: Record<string, string> = fetchMetadataLocalStorage(login.metadata.LoginTokensV2) ?? {}
|
||||
tokens[loginInfo.workspaceUrl] = loginInfo.token
|
||||
|
||||
setMetadata(presentation.metadata.Token, loginInfo.token)
|
||||
setMetadataLocalStorage(login.metadata.LastToken, loginInfo.token)
|
||||
setMetadataLocalStorage(login.metadata.LoginTokens, tokens)
|
||||
setMetadataLocalStorage(login.metadata.LoginTokensV2, tokens)
|
||||
setMetadataLocalStorage(login.metadata.LoginEndpoint, loginInfo.endpoint)
|
||||
setMetadataLocalStorage(login.metadata.LoginAccount, loginInfo.account)
|
||||
}
|
||||
@@ -471,7 +473,7 @@ export async function checkJoined (inviteId: string): Promise<[Status, Workspace
|
||||
let token = getMetadata(presentation.metadata.Token)
|
||||
|
||||
if (token == null) {
|
||||
const tokens: Record<string, string> = fetchMetadataLocalStorage(login.metadata.LoginTokens) ?? {}
|
||||
const tokens: Record<string, string> = fetchMetadataLocalStorage(login.metadata.LoginTokensV2) ?? {}
|
||||
token = Object.values(tokens)[0]
|
||||
if (token == null) {
|
||||
return [unknownStatus('Please login'), null]
|
||||
@@ -899,3 +901,20 @@ export async function doLoginNavigate (
|
||||
export function isWorkspaceLoginInfo (info: WorkspaceLoginInfo | LoginInfo | null): info is WorkspaceLoginInfo {
|
||||
return (info as any)?.workspace !== undefined
|
||||
}
|
||||
|
||||
export function getAccountDisplayName (loginInfo: LoginInfo | null): string {
|
||||
if (loginInfo == null) {
|
||||
return ''
|
||||
}
|
||||
|
||||
if (loginInfo.name != null) {
|
||||
return loginInfo.name
|
||||
}
|
||||
|
||||
if (loginInfo.socialId != null) {
|
||||
const { value } = parseSocialIdString(loginInfo.socialId)
|
||||
return value
|
||||
}
|
||||
|
||||
return loginInfo.account
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ export const loginId = 'login' as Plugin
|
||||
export default plugin(loginId, {
|
||||
metadata: {
|
||||
AccountsUrl: '' as Asset,
|
||||
LoginTokens: '' as Metadata<Record<string, string>>,
|
||||
LoginTokensV2: '' as Metadata<Record<string, string>>,
|
||||
LastToken: '' as Metadata<string>,
|
||||
LoginEndpoint: '' as Metadata<string>,
|
||||
LoginAccount: '' as Metadata<string>,
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
|
||||
import love, { loveId } from '@hcengineering/love'
|
||||
import { mergeIds, type IntlString, type Resource } from '@hcengineering/platform'
|
||||
import { type DocCreateFunction } from '@hcengineering/presentation'
|
||||
import { type AnyComponent } from '@hcengineering/ui'
|
||||
import { type DocCreateFunction } from '@hcengineering/presentation/src/types'
|
||||
import { type AnyComponent } from '@hcengineering/ui/src/types'
|
||||
import { type ViewActionAvailabilityFunction } from '@hcengineering/view'
|
||||
|
||||
export default mergeIds(loveId, love, {
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
module.exports = {
|
||||
extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'],
|
||||
parserOptions: {
|
||||
tsconfigRootDir: __dirname,
|
||||
project: './tsconfig.json'
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
||||
<symbol id="inbox" viewBox="0 0 32 32">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.2 8.39976C9.38885 8.14795 9.68524 7.99976 10 7.99976H22C22.3148 7.99976 22.6111 8.14795 22.8 8.39976L27 13.9998H19C18.4477 13.9998 18 14.4475 18 14.9998C18 15.2624 17.9483 15.5225 17.8478 15.7651C17.7472 16.0078 17.5999 16.2283 17.4142 16.414C17.2285 16.5997 17.008 16.747 16.7654 16.8475C16.5227 16.948 16.2626 16.9998 16 16.9998C15.7374 16.9998 15.4773 16.948 15.2346 16.8475C14.992 16.747 14.7715 16.5997 14.5858 16.414C14.4001 16.2283 14.2528 16.0078 14.1522 15.7651C14.0517 15.5225 14 15.2624 14 14.9998C14 14.4475 13.5523 13.9998 13 13.9998H5L9.2 8.39976ZM12.127 15.9998H4V21.9998C4 23.1043 4.89543 23.9998 6 23.9998H26C27.1046 23.9998 28 23.1043 28 21.9998V15.9998H19.873C19.8264 16.1802 19.7672 16.3576 19.6955 16.5305C19.4945 17.0158 19.1999 17.4567 18.8284 17.8282C18.457 18.1996 18.016 18.4943 17.5307 18.6953C17.0454 18.8963 16.5253 18.9998 16 18.9998C15.4747 18.9998 14.9546 18.8963 14.4693 18.6953C13.984 18.4943 13.543 18.1996 13.1716 17.8282C12.8001 17.4567 12.5055 17.0158 12.3045 16.5305C12.2329 16.3576 12.1736 16.1802 12.127 15.9998ZM10 5.99976C9.05573 5.99976 8.16656 6.44434 7.6 7.19976L2.2 14.3998C2.07018 14.5729 2 14.7834 2 14.9998V21.9998C2 24.2089 3.79086 25.9998 6 25.9998H26C28.2091 25.9998 30 24.2089 30 21.9998V14.9998C30 14.7834 29.9298 14.5729 29.8 14.3998L24.4 7.19976C23.8334 6.44434 22.9443 5.99976 22 5.99976H10Z" />
|
||||
</symbol>
|
||||
<symbol id="new-mail" viewBox="0 0 24 24">
|
||||
<path d="M22,12.2c-0.4,0-0.8,0.3-0.8,0.8v2c0,4.6-1.6,6.2-6.2,6.2H9c-4.6,0-6.2-1.6-6.2-6.2V9c0-4.6,1.6-6.2,6.2-6.2h2 c0.4,0,0.8-0.3,0.8-0.8S11.4,1.2,11,1.2H9C3.6,1.2,1.2,3.6,1.2,9v6c0,5.4,2.3,7.8,7.8,7.8h6c5.4,0,7.8-2.3,7.8-7.8v-2 C22.8,12.6,22.4,12.2,22,12.2z" />
|
||||
<path d="M14.4,3.6l-6.8,6.8c-0.4,0.4-0.8,1.2-0.9,1.7l-0.4,3c-0.1,0.8,0.1,1.5,0.6,2c0.4,0.4,1,0.6,1.6,0.6c0.1,0,0.2,0,0.4,0 l3-0.4c0.6-0.1,1.3-0.5,1.7-0.9l7.9-7.9c0.9-0.9,1.4-1.8,1.5-2.7c0.1-1.1-0.4-2.2-1.5-3.3c-2-2-4-2-6,0L14.4,3.6 C14.4,3.6,14.4,3.6,14.4,3.6z M12.6,15.3c-0.2,0.2-0.6,0.4-0.9,0.5l-3,0.4c-0.3,0-0.5,0-0.7-0.2c-0.2-0.1-0.2-0.4-0.2-0.7l0.4-3 c0-0.3,0.3-0.7,0.4-0.9l5.9-5.9c0.8,1.7,2.2,3.1,3.9,3.9L12.6,15.3z M20.4,3.5c0.8,0.8,1.1,1.5,1,2.1c0,0.5-0.4,1.1-1,1.8l-0.8,0.8 c-1.8-0.6-3.2-2.1-3.9-3.9l0.8-0.8C17.7,2.4,18.8,1.9,20.4,3.5z" />
|
||||
</symbol>
|
||||
<symbol id="done" viewBox="0 0 20 20" fill="none">
|
||||
<path d="M10 1.24988C8.26942 1.24988 6.57769 1.76306 5.13876 2.72452C3.69983 3.68598 2.57832 5.05254 1.91606 6.6514C1.25379 8.25025 1.08051 10.0096 1.41813 11.7069C1.75575 13.4043 2.58911 14.9634 3.81282 16.1871C5.03653 17.4108 6.59563 18.2441 8.29296 18.5817C9.9903 18.9194 11.7496 18.7461 13.3485 18.0838C14.9473 17.4216 16.3139 16.3 17.2754 14.8611C18.2368 13.4222 18.75 11.7305 18.75 9.99988C18.75 7.67923 17.8281 5.45364 16.1872 3.81269C14.5462 2.17175 12.3206 1.24988 10 1.24988ZM10 17.4999C8.51664 17.4999 7.0666 17.06 5.83323 16.2359C4.59986 15.4118 3.63856 14.2404 3.07091 12.87C2.50325 11.4996 2.35473 9.99156 2.64411 8.5367C2.9335 7.08184 3.64781 5.74547 4.6967 4.69658C5.7456 3.64768 7.08197 2.93338 8.53683 2.64399C9.99168 2.3546 11.4997 2.50312 12.8701 3.07078C14.2406 3.63844 15.4119 4.59973 16.236 5.8331C17.0601 7.06647 17.5 8.51652 17.5 9.99988C17.5 11.989 16.7098 13.8967 15.3033 15.3032C13.8968 16.7097 11.9891 17.4999 10 17.4999Z" fill="currentColor"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.1919 7.05809C14.436 7.30217 14.436 7.6979 14.1919 7.94197L9.19194 12.942C8.94786 13.1861 8.55214 13.1861 8.30806 12.942L5.80806 10.442C5.56398 10.1979 5.56398 9.80217 5.80806 9.55809C6.05214 9.31401 6.44786 9.31401 6.69194 9.55809L8.75 11.6161L13.3081 7.05809C13.5521 6.81401 13.9479 6.81401 14.1919 7.05809Z" fill="currentColor"/>
|
||||
</symbol>
|
||||
<symbol id="sent" viewBox="0 0 12 12">
|
||||
<path d="M10.1,2.9c0.1-0.4-0.3-0.8-0.7-0.6L1.7,5.6c-0.3,0.1-0.3,0.5,0,0.6l1.6,0.5c0.3,0.1,0.6,0,0.9-0.1l3.6-2.5 C7.9,4.1,8,4.3,7.9,4.4L5.3,7C5.1,7.3,5.1,7.7,5.4,7.9l2.9,1.8c0.3,0.2,0.7,0,0.8-0.4L10.1,2.9z"/>
|
||||
</symbol>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.0 KiB |
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json",
|
||||
"rigPackageName": "@hcengineering/platform-rig",
|
||||
"rigProfile": "assets"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
module.exports = {
|
||||
preset: 'ts-jest',
|
||||
testEnvironment: 'node',
|
||||
testMatch: ['**/?(*.)+(spec|test).[jt]s?(x)'],
|
||||
roots: ["./src"],
|
||||
coverageReporters: ["text-summary", "html"]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"string": {
|
||||
"Subject": "Téma",
|
||||
"From": "Od",
|
||||
"To": "Komu",
|
||||
"CreateMail": "Nová zpráva",
|
||||
"MailThread": "Zpráva",
|
||||
"Reply": "Odpovědět",
|
||||
"Date": "Datum"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"string": {
|
||||
"Subject": "Betreff",
|
||||
"From": "Von",
|
||||
"To": "An",
|
||||
"CreateMail": "Neue Nachricht",
|
||||
"MailThread": "Nachricht",
|
||||
"Reply": "Antworten",
|
||||
"Date": "Datum"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"string": {
|
||||
"Subject": "Subject",
|
||||
"From": "From",
|
||||
"To": "To",
|
||||
"CreateMail": "New Mail",
|
||||
"MailThread": "Mail",
|
||||
"Reply": "Reply",
|
||||
"Date": "Date"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"string": {
|
||||
"Subject": "Asunto",
|
||||
"From": "De",
|
||||
"To": "Para",
|
||||
"CreateMail": "Nuevo mensaje",
|
||||
"MailThread": "Mensaje",
|
||||
"Reply": "Responder",
|
||||
"Date": "Fecha"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"string": {
|
||||
"Subject": "Sujet",
|
||||
"From": "De",
|
||||
"To": "À",
|
||||
"CreateMail": "Nouveau message",
|
||||
"MailThread": "Message",
|
||||
"Reply": "Répondre",
|
||||
"Date": "Date"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"string": {
|
||||
"Subject": "Oggetto",
|
||||
"From": "Da",
|
||||
"To": "A",
|
||||
"CreateMail": "Nuovo messaggio",
|
||||
"MailThread": "Messaggio",
|
||||
"Reply": "Rispondi",
|
||||
"Date": "Data"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"string": {
|
||||
"Subject": "Assunto",
|
||||
"From": "De",
|
||||
"To": "Para",
|
||||
"CreateMail": "Nova mensagem",
|
||||
"MailThread": "Mensagem",
|
||||
"Reply": "Responder",
|
||||
"Date": "Data"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"string": {
|
||||
"Subject": "Тема",
|
||||
"From": "От кого",
|
||||
"To": "Кому",
|
||||
"CreateMail": "Новое сообщение",
|
||||
"MailThread": "Сообщение",
|
||||
"Reply": "Ответить",
|
||||
"Date": "Дата"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"string": {
|
||||
"Subject": "主题",
|
||||
"From": "从",
|
||||
"To": "到",
|
||||
"CreateMail": "新邮件",
|
||||
"MailThread": "邮件",
|
||||
"Reply": "回复",
|
||||
"Date": "日期"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"name": "@hcengineering/mail-assets",
|
||||
"version": "0.6.0",
|
||||
"main": "src/index.ts",
|
||||
"author": "Anticrm Platform Contributors",
|
||||
"template": "@hcengineering/assets-package",
|
||||
"license": "EPL-2.0",
|
||||
"scripts": {
|
||||
"build": "compile",
|
||||
"test": "jest --passWithNoTests --silent",
|
||||
"format": "format src",
|
||||
"build:watch": "compile",
|
||||
"build:docs": "",
|
||||
"_phase:build": "compile transpile src",
|
||||
"_phase:test": "jest --passWithNoTests --silent",
|
||||
"_phase:format": "format src",
|
||||
"_phase:validate": "compile validate"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@hcengineering/platform-rig": "^0.6.0",
|
||||
"@typescript-eslint/eslint-plugin": "^6.11.0",
|
||||
"@typescript-eslint/parser": "^6.11.0",
|
||||
"eslint-config-standard-with-typescript": "^40.0.0",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
"eslint-plugin-n": "^15.4.0",
|
||||
"eslint-plugin-promise": "^6.1.1",
|
||||
"eslint": "^8.54.0",
|
||||
"prettier": "^3.1.0",
|
||||
"typescript": "^5.3.3",
|
||||
"@types/node": "~20.11.16",
|
||||
"jest": "^29.7.0",
|
||||
"ts-jest": "^29.1.1",
|
||||
"@types/jest": "^29.5.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hcengineering/platform": "^0.6.11",
|
||||
"@hcengineering/mail": "^0.6.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
import { makeLocalesTest } from '@hcengineering/platform'
|
||||
|
||||
it(
|
||||
'Locales are equale',
|
||||
makeLocalesTest((lang) => import(`../../lang/${lang}.json`))
|
||||
)
|
||||
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// Copyright © 2025 Hardcore Engineering Inc.
|
||||
//
|
||||
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License. You may
|
||||
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
//
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
import { loadMetadata } from '@hcengineering/platform'
|
||||
import mail from '@hcengineering/mail'
|
||||
|
||||
const icons = require('../assets/icons.svg') as string // eslint-disable-line
|
||||
loadMetadata(mail.icon, {
|
||||
NewMail: `${icons}#new-mail`,
|
||||
Inbox: `${icons}#inbox`,
|
||||
Done: `${icons}#done`,
|
||||
Sent: `${icons}#sent`
|
||||
})
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"extends": "./node_modules/@hcengineering/platform-rig/profiles/assets/tsconfig.json",
|
||||
|
||||
"compilerOptions": {
|
||||
"rootDir": "./src",
|
||||
"outDir": "./lib",
|
||||
"declarationDir": "./types",
|
||||
"types": ["node", "jest"],
|
||||
"tsBuildInfoFile": ".build/build.tsbuildinfo"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
module.exports = {
|
||||
extends: ['./node_modules/@hcengineering/platform-rig/profiles/ui/eslint.config.json'],
|
||||
parserOptions: { tsconfigRootDir: __dirname }
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-04/schema#",
|
||||
"trailingComma": "none",
|
||||
"tabWidth": 2,
|
||||
"semi": false,
|
||||
"singleQuote": true,
|
||||
"printWidth": 120,
|
||||
"useTabs": false,
|
||||
"bracketSpacing": true,
|
||||
"proseWrap": "preserve",
|
||||
"plugins": [
|
||||
"prettier-plugin-svelte"
|
||||
],
|
||||
"overrides": [
|
||||
{
|
||||
"files": "*.svelte",
|
||||
"options": {
|
||||
"parser": "svelte"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user