diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index b6b4d329828..8c07a0fe509 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -732,7 +732,7 @@ importers: version: 9.1.0(typescript@5.9.3)(webpack@5.102.1) html-webpack-plugin: specifier: ^5.5.0 - version: 5.6.4(webpack@5.102.1) + version: 5.6.4(@rspack/core@1.7.6)(webpack@5.102.1) jest: specifier: ^29.7.0 version: 29.7.0(@types/node@22.19.0)(ts-node@10.9.2(@types/node@22.19.0)(typescript@5.9.3)) @@ -762,7 +762,7 @@ importers: version: 1.93.3 sass-loader: specifier: ^14.0.0 - version: 14.2.1(sass@1.93.3)(webpack@5.102.1) + version: 14.2.1(@rspack/core@1.7.6)(sass@1.93.3)(webpack@5.102.1) style-loader: specifier: ^3.3.1 version: 3.3.4(webpack@5.102.1) @@ -1796,6 +1796,12 @@ importers: '@hcengineering/platform-rig': specifier: workspace:^0.7.19 version: link:../../foundations/utils/packages/platform-rig + '@rspack/cli': + specifier: ^1.2.0 + version: 1.7.6(@rspack/core@1.7.6)(@types/express@4.17.25)(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack-cli@5.1.4)(webpack@5.102.1) + '@rspack/core': + specifier: ^1.2.0 + version: 1.7.6 '@types/node': specifier: ^22.18.1 version: 22.19.0 @@ -1831,7 +1837,7 @@ importers: version: 9.1.0(typescript@5.9.3)(webpack@5.102.1) html-webpack-plugin: specifier: ^5.5.0 - version: 5.6.4(webpack@5.102.1) + version: 5.6.4(@rspack/core@1.7.6)(webpack@5.102.1) mini-css-extract-plugin: specifier: ^2.2.0 version: 2.9.4(webpack@5.102.1) @@ -1849,7 +1855,7 @@ importers: version: 1.93.3 sass-loader: specifier: ^14.0.0 - version: 14.2.1(sass@1.93.3)(webpack@5.102.1) + version: 14.2.1(@rspack/core@1.7.6)(sass@1.93.3)(webpack@5.102.1) style-loader: specifier: ^3.3.1 version: 3.3.4(webpack@5.102.1) @@ -1865,6 +1871,9 @@ importers: ts-loader: specifier: ^9.2.5 version: 9.5.4(typescript@5.9.3)(webpack@5.102.1) + tsconfig-paths-webpack-plugin: + specifier: ^4.1.0 + version: 4.2.0 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -42994,6 +43003,126 @@ packages: '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + '@jsonjoy.com/base64@1.1.2': + resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/base64@17.67.0': + resolution: {integrity: sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/buffers@1.2.1': + resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/buffers@17.67.0': + resolution: {integrity: sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/codegen@1.0.0': + resolution: {integrity: sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/codegen@17.67.0': + resolution: {integrity: sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-core@4.56.10': + resolution: {integrity: sha512-PyAEA/3cnHhsGcdY+AmIU+ZPqTuZkDhCXQ2wkXypdLitSpd6d5Ivxhnq4wa2ETRWFVJGabYynBWxIijOswSmOw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-fsa@4.56.10': + resolution: {integrity: sha512-/FVK63ysNzTPOnCCcPoPHt77TOmachdMS422txM4KhxddLdbW1fIbFMYH0AM0ow/YchCyS5gqEjKLNyv71j/5Q==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-builtins@4.56.10': + resolution: {integrity: sha512-uUnKz8R0YJyKq5jXpZtkGV9U0pJDt8hmYcLRrPjROheIfjMXsz82kXMgAA/qNg0wrZ1Kv+hrg7azqEZx6XZCVw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-to-fsa@4.56.10': + resolution: {integrity: sha512-oH+O6Y4lhn9NyG6aEoFwIBNKZeYy66toP5LJcDOMBgL99BKQMUf/zWJspdRhMdn/3hbzQsZ8EHHsuekbFLGUWw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-utils@4.56.10': + resolution: {integrity: sha512-8EuPBgVI2aDPwFdaNQeNpHsyqPi3rr+85tMNG/lHvQLiVjzoZsvxA//Xd8aB567LUhy4QS03ptT+unkD/DIsNg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node@4.56.10': + resolution: {integrity: sha512-7R4Gv3tkUdW3dXfXiOkqxkElxKNVdd8BDOWC0/dbERd0pXpPY+s2s1Mino+aTvkGrFPiY+mmVxA7zhskm4Ue4Q==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-print@4.56.10': + resolution: {integrity: sha512-JW4fp5mAYepzFsSGrQ48ep8FXxpg4niFWHdF78wDrFGof7F3tKDJln72QFDEn/27M1yHd4v7sKHHVPh78aWcEw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-snapshot@4.56.10': + resolution: {integrity: sha512-DkR6l5fj7+qj0+fVKm/OOXMGfDFCGXLfyHkORH3DF8hxkpDgIHbhf/DwncBMs2igu/ST7OEkexn1gIqoU6Y+9g==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pack@1.21.0': + resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pack@17.67.0': + resolution: {integrity: sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pointer@1.0.2': + resolution: {integrity: sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pointer@17.67.0': + resolution: {integrity: sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/util@1.9.0': + resolution: {integrity: sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/util@17.67.0': + resolution: {integrity: sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + '@koa/cors@5.0.0': resolution: {integrity: sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw==} engines: {node: '>= 14.0.0'} @@ -43046,6 +43175,24 @@ packages: '@mixmark-io/domino@2.2.0': resolution: {integrity: sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==} + '@module-federation/error-codes@0.22.0': + resolution: {integrity: sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==} + + '@module-federation/runtime-core@0.22.0': + resolution: {integrity: sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==} + + '@module-federation/runtime-tools@0.22.0': + resolution: {integrity: sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==} + + '@module-federation/runtime@0.22.0': + resolution: {integrity: sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==} + + '@module-federation/sdk@0.22.0': + resolution: {integrity: sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==} + + '@module-federation/webpack-bundler-runtime@0.22.0': + resolution: {integrity: sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==} + '@mongodb-js/saslprep@1.3.2': resolution: {integrity: sha512-QgA5AySqB27cGTXBFmnpifAi7HxoGUeezwo6p9dI03MuDB6Pp33zgclqVb6oVK3j6I9Vesg0+oojW2XxB59SGg==} @@ -43971,6 +44118,82 @@ packages: '@remirror/core-constants@3.0.0': resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==} + '@rspack/binding-darwin-arm64@1.7.6': + resolution: {integrity: sha512-NZ9AWtB1COLUX1tA9HQQvWpTy07NSFfKBU8A6ylWd5KH8AePZztpNgLLAVPTuNO4CZXYpwcoclf8jG/luJcQdQ==} + cpu: [arm64] + os: [darwin] + + '@rspack/binding-darwin-x64@1.7.6': + resolution: {integrity: sha512-J2g6xk8ZS7uc024dNTGTHxoFzFovAZIRixUG7PiciLKTMP78svbSSWrmW6N8oAsAkzYfJWwQpVgWfFNRHvYxSw==} + cpu: [x64] + os: [darwin] + + '@rspack/binding-linux-arm64-gnu@1.7.6': + resolution: {integrity: sha512-eQfcsaxhFrv5FmtaA7+O1F9/2yFDNIoPZzV/ZvqvFz5bBXVc4FAm/1fVpBg8Po/kX1h0chBc7Xkpry3cabFW8w==} + cpu: [arm64] + os: [linux] + + '@rspack/binding-linux-arm64-musl@1.7.6': + resolution: {integrity: sha512-DfQXKiyPIl7i1yECHy4eAkSmlUzzsSAbOjgMuKn7pudsWf483jg0UUYutNgXSlBjc/QSUp7906Cg8oty9OfwPA==} + cpu: [arm64] + os: [linux] + + '@rspack/binding-linux-x64-gnu@1.7.6': + resolution: {integrity: sha512-NdA+2X3lk2GGrMMnTGyYTzM3pn+zNjaqXqlgKmFBXvjfZqzSsKq3pdD1KHZCd5QHN+Fwvoszj0JFsquEVhE1og==} + cpu: [x64] + os: [linux] + + '@rspack/binding-linux-x64-musl@1.7.6': + resolution: {integrity: sha512-rEy6MHKob02t/77YNgr6dREyJ0e0tv1X6Xsg8Z5E7rPXead06zefUbfazj4RELYySWnM38ovZyJAkPx/gOn3VA==} + cpu: [x64] + os: [linux] + + '@rspack/binding-wasm32-wasi@1.7.6': + resolution: {integrity: sha512-YupOrz0daSG+YBbCIgpDgzfMM38YpChv+afZpaxx5Ml7xPeAZIIdgWmLHnQ2rts73N2M1NspAiBwV00Xx0N4Vg==} + cpu: [wasm32] + + '@rspack/binding-win32-arm64-msvc@1.7.6': + resolution: {integrity: sha512-INj7aVXjBvlZ84kEhSK4kJ484ub0i+BzgnjDWOWM1K+eFYDZjLdAsQSS3fGGXwVc3qKbPIssFfnftATDMTEJHQ==} + cpu: [arm64] + os: [win32] + + '@rspack/binding-win32-ia32-msvc@1.7.6': + resolution: {integrity: sha512-lXGvC+z67UMcw58In12h8zCa9IyYRmuptUBMItQJzu+M278aMuD1nETyGLL7e4+OZ2lvrnnBIcjXN1hfw2yRzw==} + cpu: [ia32] + os: [win32] + + '@rspack/binding-win32-x64-msvc@1.7.6': + resolution: {integrity: sha512-zeUxEc0ZaPpmaYlCeWcjSJUPuRRySiSHN23oJ2Xyw0jsQ01Qm4OScPdr0RhEOFuK/UE+ANyRtDo4zJsY52Hadw==} + cpu: [x64] + os: [win32] + + '@rspack/binding@1.7.6': + resolution: {integrity: sha512-/NrEcfo8Gx22hLGysanrV6gHMuqZSxToSci/3M4kzEQtF5cPjfOv5pqeLK/+B6cr56ul/OmE96cCdWcXeVnFjQ==} + + '@rspack/cli@1.7.6': + resolution: {integrity: sha512-oIC8F3es8EIZfme5jy/MCf9KJPhYlR9pBzKr8vzLal1H/aheGobNhiV0tYRl22I2gx9XAQItiea36g04byiEOw==} + hasBin: true + peerDependencies: + '@rspack/core': ^1.0.0-alpha || ^1.x + + '@rspack/core@1.7.6': + resolution: {integrity: sha512-Iax6UhrfZqJajA778c1d5DBFbSIqPOSrI34kpNIiNpWd8Jq7mFIa+Z60SQb5ZQDZuUxcCZikjz5BxinFjTkg7Q==} + engines: {node: '>=18.12.0'} + peerDependencies: + '@swc/helpers': '>=0.5.1' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@rspack/dev-server@1.1.5': + resolution: {integrity: sha512-cwz0qc6iqqoJhyWqxP7ZqE2wyYNHkBMQUXxoQ0tNoZ4YNRkDyQ4HVJ/3oPSmMKbvJk/iJ16u7xZmwG6sK47q/A==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': '*' + + '@rspack/lite-tapable@1.1.0': + resolution: {integrity: sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==} + '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} @@ -44939,6 +45162,9 @@ packages: '@types/retry@0.12.0': resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + '@types/retry@0.12.2': + resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} + '@types/sanitize-html@2.16.0': resolution: {integrity: sha512-l6rX1MUXje5ztPT0cAFtUayXF06DqPhRyfVXareEN5gGCFaP/iwsxIyKODr9XDhfxPpN6vXUFNfo5kZMXCxBtw==} @@ -45747,6 +45973,10 @@ packages: builtins@5.1.0: resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -46529,6 +46759,14 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + engines: {node: '>=18'} + default-gateway@6.0.3: resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} engines: {node: '>= 10'} @@ -46548,6 +46786,10 @@ packages: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -47234,6 +47476,10 @@ packages: exif-parser@0.1.12: resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} + exit-hook@4.0.0: + resolution: {integrity: sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ==} + engines: {node: '>=18'} + exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} @@ -47623,6 +47869,12 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob-to-regex.js@1.2.0: + resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} @@ -47936,6 +48188,10 @@ packages: humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + hyperdyperid@1.2.0: + resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} + engines: {node: '>=10.18'} + iconv-corefoundation@1.1.7: resolution: {integrity: sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==} engines: {node: ^8.11.2 || >=10} @@ -48112,6 +48368,11 @@ packages: engines: {node: '>=8'} hasBin: true + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -48151,6 +48412,11 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} @@ -48166,6 +48432,10 @@ packages: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} + is-network-error@1.3.1: + resolution: {integrity: sha512-6QCxa49rQbmUWLfk0nuGqzql9U8uaV2H6279bRErPBHe/109hCzsLUBUHfbEtvLIHBd6hyXbgedBSHevm43Edw==} + engines: {node: '>=16'} + is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} @@ -48269,6 +48539,10 @@ packages: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} + isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -49020,6 +49294,9 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} + memfs@4.56.10: + resolution: {integrity: sha512-eLvzyrwqLHnLYalJP7YZ3wBe79MXktMdfQbvMrVD80K+NhrIukCVBvgP30zTJYEEDh9hZ/ep9z0KOdD7FSHo7w==} + memory-pager@1.5.0: resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} @@ -49056,6 +49333,10 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} + mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} @@ -49504,6 +49785,10 @@ packages: only@0.0.2: resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} + open@10.2.0: + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} + engines: {node: '>=18'} + open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -49601,6 +49886,10 @@ packages: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} + p-retry@6.2.1: + resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} + engines: {node: '>=16.17'} + p-timeout@4.1.0: resolution: {integrity: sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw==} engines: {node: '>=10'} @@ -50395,6 +50684,10 @@ packages: rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -51119,6 +51412,12 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + thingies@2.5.0: + resolution: {integrity: sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==} + engines: {node: '>=10.18'} + peerDependencies: + tslib: ^2 + through2@4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} @@ -51196,6 +51495,12 @@ packages: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} + tree-dump@1.1.0: + resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -51294,9 +51599,17 @@ packages: engines: {node: '>=4.2.0'} hasBin: true + tsconfig-paths-webpack-plugin@4.2.0: + resolution: {integrity: sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==} + engines: {node: '>=10.13.0'} + tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + tsconfig@7.0.0: resolution: {integrity: sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==} @@ -51641,6 +51954,15 @@ packages: peerDependencies: webpack: ^4.0.0 || ^5.0.0 + webpack-dev-middleware@7.4.5: + resolution: {integrity: sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + webpack-dev-server@4.15.2: resolution: {integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==} engines: {node: '>= 12.13.0'} @@ -51654,6 +51976,19 @@ packages: webpack-cli: optional: true + webpack-dev-server@5.2.2: + resolution: {integrity: sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==} + engines: {node: '>= 18.12.0'} + hasBin: true + peerDependencies: + webpack: ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + webpack-merge@5.10.0: resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} engines: {node: '>=10.0.0'} @@ -51808,6 +52143,10 @@ packages: utf-8-validate: optional: true + wsl-utils@0.1.0: + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} + engines: {node: '>=18'} + xhr@2.6.0: resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==} @@ -53699,6 +54038,133 @@ snapshots: '@js-sdsl/ordered-map@4.4.2': {} + '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/base64@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/buffers@1.2.1(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/buffers@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/codegen@1.0.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/codegen@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-core@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-fsa@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-core': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-builtins@4.56.10(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-to-fsa@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-fsa': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-utils@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-core': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.56.10(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-print@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-snapshot@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/json-pack': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@1.21.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pointer@1.0.2(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pointer@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/util@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + '@koa/cors@5.0.0': dependencies: vary: 1.1.2 @@ -53761,6 +54227,31 @@ snapshots: '@mixmark-io/domino@2.2.0': {} + '@module-federation/error-codes@0.22.0': {} + + '@module-federation/runtime-core@0.22.0': + dependencies: + '@module-federation/error-codes': 0.22.0 + '@module-federation/sdk': 0.22.0 + + '@module-federation/runtime-tools@0.22.0': + dependencies: + '@module-federation/runtime': 0.22.0 + '@module-federation/webpack-bundler-runtime': 0.22.0 + + '@module-federation/runtime@0.22.0': + dependencies: + '@module-federation/error-codes': 0.22.0 + '@module-federation/runtime-core': 0.22.0 + '@module-federation/sdk': 0.22.0 + + '@module-federation/sdk@0.22.0': {} + + '@module-federation/webpack-bundler-runtime@0.22.0': + dependencies: + '@module-federation/runtime': 0.22.0 + '@module-federation/sdk': 0.22.0 + '@mongodb-js/saslprep@1.3.2': dependencies: sparse-bitfield: 3.0.3 @@ -54871,6 +55362,92 @@ snapshots: '@remirror/core-constants@3.0.0': {} + '@rspack/binding-darwin-arm64@1.7.6': + optional: true + + '@rspack/binding-darwin-x64@1.7.6': + optional: true + + '@rspack/binding-linux-arm64-gnu@1.7.6': + optional: true + + '@rspack/binding-linux-arm64-musl@1.7.6': + optional: true + + '@rspack/binding-linux-x64-gnu@1.7.6': + optional: true + + '@rspack/binding-linux-x64-musl@1.7.6': + optional: true + + '@rspack/binding-wasm32-wasi@1.7.6': + dependencies: + '@napi-rs/wasm-runtime': 1.0.7 + optional: true + + '@rspack/binding-win32-arm64-msvc@1.7.6': + optional: true + + '@rspack/binding-win32-ia32-msvc@1.7.6': + optional: true + + '@rspack/binding-win32-x64-msvc@1.7.6': + optional: true + + '@rspack/binding@1.7.6': + optionalDependencies: + '@rspack/binding-darwin-arm64': 1.7.6 + '@rspack/binding-darwin-x64': 1.7.6 + '@rspack/binding-linux-arm64-gnu': 1.7.6 + '@rspack/binding-linux-arm64-musl': 1.7.6 + '@rspack/binding-linux-x64-gnu': 1.7.6 + '@rspack/binding-linux-x64-musl': 1.7.6 + '@rspack/binding-wasm32-wasi': 1.7.6 + '@rspack/binding-win32-arm64-msvc': 1.7.6 + '@rspack/binding-win32-ia32-msvc': 1.7.6 + '@rspack/binding-win32-x64-msvc': 1.7.6 + + '@rspack/cli@1.7.6(@rspack/core@1.7.6)(@types/express@4.17.25)(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack-cli@5.1.4)(webpack@5.102.1)': + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@rspack/core': 1.7.6 + '@rspack/dev-server': 1.1.5(@rspack/core@1.7.6)(@types/express@4.17.25)(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack-cli@5.1.4)(webpack@5.102.1) + exit-hook: 4.0.0 + webpack-bundle-analyzer: 4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - '@types/express' + - bufferutil + - debug + - supports-color + - utf-8-validate + - webpack + - webpack-cli + + '@rspack/core@1.7.6': + dependencies: + '@module-federation/runtime-tools': 0.22.0 + '@rspack/binding': 1.7.6 + '@rspack/lite-tapable': 1.1.0 + + '@rspack/dev-server@1.1.5(@rspack/core@1.7.6)(@types/express@4.17.25)(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack-cli@5.1.4)(webpack@5.102.1)': + dependencies: + '@rspack/core': 1.7.6 + chokidar: 3.6.0 + http-proxy-middleware: 2.0.9(@types/express@4.17.25) + p-retry: 6.2.1 + webpack-dev-server: 5.2.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack-cli@5.1.4)(webpack@5.102.1) + ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - '@types/express' + - bufferutil + - debug + - supports-color + - utf-8-validate + - webpack + - webpack-cli + + '@rspack/lite-tapable@1.1.0': {} + '@rtsao/scc@1.1.0': {} '@selderee/plugin-htmlparser2@0.11.0': @@ -56074,6 +56651,8 @@ snapshots: '@types/retry@0.12.0': {} + '@types/retry@0.12.2': {} + '@types/sanitize-html@2.16.0': dependencies: htmlparser2: 8.0.2 @@ -57025,6 +57604,10 @@ snapshots: dependencies: semver: 7.7.3 + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + busboy@1.6.0: dependencies: streamsearch: 1.1.0 @@ -57900,6 +58483,13 @@ snapshots: deepmerge@4.3.1: {} + default-browser-id@5.0.1: {} + + default-browser@5.5.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + default-gateway@6.0.3: dependencies: execa: 5.1.1 @@ -57918,6 +58508,8 @@ snapshots: define-lazy-prop@2.0.0: {} + define-lazy-prop@3.0.0: {} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 @@ -58777,6 +59369,8 @@ snapshots: exif-parser@0.1.12: {} + exit-hook@4.0.0: {} + exit@0.1.2: {} expect@29.7.0: @@ -59263,6 +59857,10 @@ snapshots: dependencies: is-glob: 4.0.3 + glob-to-regex.js@1.2.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + glob-to-regexp@0.4.1: {} glob@10.4.5: @@ -59536,7 +60134,7 @@ snapshots: htmlparser2: 8.0.2 selderee: 0.11.0 - html-webpack-plugin@5.6.4(webpack@5.102.1): + html-webpack-plugin@5.6.4(@rspack/core@1.7.6)(webpack@5.102.1): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -59544,6 +60142,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.3.0 optionalDependencies: + '@rspack/core': 1.7.6 webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) htmlparser2@10.0.0: @@ -59687,6 +60286,8 @@ snapshots: dependencies: ms: 2.1.3 + hyperdyperid@1.2.0: {} + iconv-corefoundation@1.1.7: dependencies: cli-truncate: 2.1.0 @@ -59847,6 +60448,8 @@ snapshots: is-docker@2.2.1: {} + is-docker@3.0.0: {} + is-extglob@2.1.1: {} is-finalizationregistry@1.1.1: @@ -59879,6 +60482,10 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + is-interactive@1.0.0: {} is-lambda@1.0.1: {} @@ -59887,6 +60494,8 @@ snapshots: is-negative-zero@2.0.3: {} + is-network-error@1.3.1: {} + is-number-object@1.1.1: dependencies: call-bound: 1.0.4 @@ -59977,6 +60586,10 @@ snapshots: dependencies: is-docker: 2.2.1 + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 + isarray@1.0.0: {} isarray@2.0.5: {} @@ -61056,6 +61669,23 @@ snapshots: dependencies: fs-monkey: 1.1.0 + memfs@4.56.10: + dependencies: + '@jsonjoy.com/fs-core': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-fsa': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-to-fsa': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + memory-pager@1.5.0: {} merge-descriptors@1.0.3: {} @@ -61104,6 +61734,10 @@ snapshots: dependencies: mime-db: 1.52.0 + mime-types@3.0.2: + dependencies: + mime-db: 1.54.0 + mime@1.6.0: {} mime@2.6.0: {} @@ -61377,7 +62011,7 @@ snapshots: node-loader@2.0.0(webpack@5.102.1): dependencies: loader-utils: 2.0.4 - webpack: 5.102.1 + webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) node-localstorage@2.2.1: dependencies: @@ -61528,6 +62162,13 @@ snapshots: only@0.0.2: {} + open@10.2.0: + dependencies: + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + wsl-utils: 0.1.0 + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 @@ -61639,6 +62280,12 @@ snapshots: '@types/retry': 0.12.0 retry: 0.13.1 + p-retry@6.2.1: + dependencies: + '@types/retry': 0.12.2 + is-network-error: 1.3.1 + retry: 0.13.1 + p-timeout@4.1.0: {} p-timeout@5.1.0: {} @@ -62493,6 +63140,8 @@ snapshots: rrweb-cssom@0.8.0: {} + run-applescript@7.1.0: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -62561,10 +63210,11 @@ snapshots: parse-srcset: 1.0.2 postcss: 8.5.6 - sass-loader@14.2.1(sass@1.93.3)(webpack@5.102.1): + sass-loader@14.2.1(@rspack/core@1.7.6)(sass@1.93.3)(webpack@5.102.1): dependencies: neo-async: 2.6.2 optionalDependencies: + '@rspack/core': 1.7.6 sass: 1.93.3 webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) @@ -63436,6 +64086,10 @@ snapshots: dependencies: any-promise: 1.3.0 + thingies@2.5.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + through2@4.0.2: dependencies: readable-stream: 3.6.2 @@ -63497,6 +64151,10 @@ snapshots: dependencies: punycode: 2.3.1 + tree-dump@1.1.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + tree-kill@1.2.2: {} triple-beam@1.4.1: {} @@ -63640,6 +64298,13 @@ snapshots: source-map-support: 0.5.21 yn: 2.0.0 + tsconfig-paths-webpack-plugin@4.2.0: + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.18.3 + tapable: 2.3.0 + tsconfig-paths: 4.2.0 + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 @@ -63647,6 +64312,12 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + tsconfig@7.0.0: dependencies: '@types/strip-bom': 3.0.0 @@ -64005,6 +64676,17 @@ snapshots: schema-utils: 4.3.3 webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + webpack-dev-middleware@7.4.5(webpack@5.102.1): + dependencies: + colorette: 2.0.20 + memfs: 4.56.10 + mime-types: 3.0.2 + on-finished: 2.4.1 + range-parser: 1.2.1 + schema-utils: 4.3.3 + optionalDependencies: + webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + webpack-dev-server@4.15.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack-cli@5.1.4)(webpack@5.102.1): dependencies: '@types/bonjour': 3.5.13 @@ -64046,6 +64728,45 @@ snapshots: - supports-color - utf-8-validate + webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack-cli@5.1.4)(webpack@5.102.1): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.25 + '@types/express-serve-static-core': 4.19.7 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.10 + '@types/sockjs': 0.3.36 + '@types/ws': 8.18.1 + ansi-html-community: 0.0.8 + bonjour-service: 1.3.0 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.8.1 + connect-history-api-fallback: 2.0.0 + express: 4.21.2 + graceful-fs: 4.2.11 + http-proxy-middleware: 2.0.9(@types/express@4.17.25) + ipaddr.js: 2.2.0 + launch-editor: 2.12.0 + open: 10.2.0 + p-retry: 6.2.1 + schema-utils: 4.3.3 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 7.4.5(webpack@5.102.1) + ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + optionalDependencies: + webpack: 5.102.1(esbuild@0.25.12)(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2(bufferutil@4.0.9)(utf-8-validate@5.0.10))(webpack-dev-server@4.15.2)(webpack@5.102.1) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + webpack-merge@5.10.0: dependencies: clone-deep: 4.0.1 @@ -64328,6 +65049,10 @@ snapshots: bufferutil: 4.0.9 utf-8-validate: 6.0.5 + wsl-utils@0.1.0: + dependencies: + is-wsl: 3.1.1 + xhr@2.6.0: dependencies: global: 4.4.0 diff --git a/common/scripts/docker_patch.sh b/common/scripts/docker_patch.sh index 6b694ab07c9..05b4dc1fb76 100755 --- a/common/scripts/docker_patch.sh +++ b/common/scripts/docker_patch.sh @@ -35,6 +35,10 @@ fi export DOCKER_VERSION="$VERSION" export DOCKER_EXTRA="--platform=$PLATFORM" +export SKIP_VALIDATE="true" +export USE_CACHE="true" +export FAST_BUILD="true" + echo "Starting docker build and push for version: $DOCKER_VERSION ($PLATFORM)" # We use 'node common/scripts/install-run-rush.js' to ensure we use the right rush version diff --git a/desktop/src/ui/platform.ts b/desktop/src/ui/platform.ts index b4a2bbd8e8b..ff91427840d 100644 --- a/desktop/src/ui/platform.ts +++ b/desktop/src/ui/platform.ts @@ -172,7 +172,7 @@ function configureI18n (): void { async (lang: string) => await import( /* webpackInclude: /\.json$/ */ - /* webpackMode: "lazy" */ + /* webpackMode: "eager" */ /* webpackChunkName: "lang-[request]" */ `@hcengineering/platform/lang/${lang}.json` ) @@ -182,132 +182,132 @@ function configureI18n (): void { async (lang: string) => await import( /* webpackInclude: /\.json$/ */ - /* webpackMode: "lazy" */ + /* webpackMode: "eager" */ /* webpackChunkName: "lang-[request]" */ `@hcengineering/core/lang/${lang}.json` ) ) addStringsLoader( presentationId, - async (lang: string) => await import(`@hcengineering/presentation/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/presentation/lang/${lang}.json`) ) addStringsLoader( textEditorId, - async (lang: string) => await import(`@hcengineering/text-editor-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/text-editor-assets/lang/${lang}.json`) ) - addStringsLoader(uiId, async (lang: string) => await import(`@hcengineering/ui/lang/${lang}.json`)) - addStringsLoader(mediaId, async (lang: string) => await import(`@hcengineering/media-assets/lang/${lang}.json`)) - addStringsLoader(uploaderId, async (lang: string) => await import(`@hcengineering/uploader-assets/lang/${lang}.json`)) - addStringsLoader(recorderId, async (lang: string) => await import(`@hcengineering/recorder-assets/lang/${lang}.json`)) - addStringsLoader(activityId, async (lang: string) => await import(`@hcengineering/activity-assets/lang/${lang}.json`)) + addStringsLoader(uiId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/ui/lang/${lang}.json`)) + addStringsLoader(mediaId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/media-assets/lang/${lang}.json`)) + addStringsLoader(uploaderId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/uploader-assets/lang/${lang}.json`)) + addStringsLoader(recorderId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/recorder-assets/lang/${lang}.json`)) + addStringsLoader(activityId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/activity-assets/lang/${lang}.json`)) addStringsLoader( attachmentId, - async (lang: string) => await import(`@hcengineering/attachment-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/attachment-assets/lang/${lang}.json`) ) - addStringsLoader(bitrixId, async (lang: string) => await import(`@hcengineering/bitrix-assets/lang/${lang}.json`)) - addStringsLoader(boardId, async (lang: string) => await import(`@hcengineering/board-assets/lang/${lang}.json`)) - addStringsLoader(calendarId, async (lang: string) => await import(`@hcengineering/calendar-assets/lang/${lang}.json`)) - addStringsLoader(chunterId, async (lang: string) => await import(`@hcengineering/chunter-assets/lang/${lang}.json`)) - addStringsLoader(contactId, async (lang: string) => await import(`@hcengineering/contact-assets/lang/${lang}.json`)) - addStringsLoader(driveId, async (lang: string) => await import(`@hcengineering/drive-assets/lang/${lang}.json`)) - addStringsLoader(gmailId, async (lang: string) => await import(`@hcengineering/gmail-assets/lang/${lang}.json`)) - addStringsLoader(hrId, async (lang: string) => await import(`@hcengineering/hr-assets/lang/${lang}.json`)) + addStringsLoader(bitrixId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/bitrix-assets/lang/${lang}.json`)) + addStringsLoader(boardId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/board-assets/lang/${lang}.json`)) + addStringsLoader(calendarId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/calendar-assets/lang/${lang}.json`)) + addStringsLoader(chunterId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/chunter-assets/lang/${lang}.json`)) + addStringsLoader(contactId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/contact-assets/lang/${lang}.json`)) + addStringsLoader(driveId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/drive-assets/lang/${lang}.json`)) + addStringsLoader(gmailId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/gmail-assets/lang/${lang}.json`)) + addStringsLoader(hrId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/hr-assets/lang/${lang}.json`)) addStringsLoader( inventoryId, - async (lang: string) => await import(`@hcengineering/inventory-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/inventory-assets/lang/${lang}.json`) ) - addStringsLoader(leadId, async (lang: string) => await import(`@hcengineering/lead-assets/lang/${lang}.json`)) - addStringsLoader(loginId, async (lang: string) => await import(`@hcengineering/login-assets/lang/${lang}.json`)) + addStringsLoader(leadId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/lead-assets/lang/${lang}.json`)) + addStringsLoader(loginId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/login-assets/lang/${lang}.json`)) addStringsLoader( notificationId, - async (lang: string) => await import(`@hcengineering/notification-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/notification-assets/lang/${lang}.json`) ) - addStringsLoader(onboardId, async (lang: string) => await import(`@hcengineering/onboard-assets/lang/${lang}.json`)) + addStringsLoader(onboardId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/onboard-assets/lang/${lang}.json`)) addStringsLoader( preferenceId, - async (lang: string) => await import(`@hcengineering/preference-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/preference-assets/lang/${lang}.json`) ) - addStringsLoader(recruitId, async (lang: string) => await import(`@hcengineering/recruit-assets/lang/${lang}.json`)) - addStringsLoader(requestId, async (lang: string) => await import(`@hcengineering/request-assets/lang/${lang}.json`)) - addStringsLoader(settingId, async (lang: string) => await import(`@hcengineering/setting-assets/lang/${lang}.json`)) - addStringsLoader(supportId, async (lang: string) => await import(`@hcengineering/support-assets/lang/${lang}.json`)) - addStringsLoader(tagsId, async (lang: string) => await import(`@hcengineering/tags-assets/lang/${lang}.json`)) - addStringsLoader(taskId, async (lang: string) => await import(`@hcengineering/task-assets/lang/${lang}.json`)) - addStringsLoader(telegramId, async (lang: string) => await import(`@hcengineering/telegram-assets/lang/${lang}.json`)) + addStringsLoader(recruitId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/recruit-assets/lang/${lang}.json`)) + addStringsLoader(requestId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/request-assets/lang/${lang}.json`)) + addStringsLoader(settingId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/setting-assets/lang/${lang}.json`)) + addStringsLoader(supportId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/support-assets/lang/${lang}.json`)) + addStringsLoader(tagsId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/tags-assets/lang/${lang}.json`)) + addStringsLoader(taskId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/task-assets/lang/${lang}.json`)) + addStringsLoader(telegramId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/telegram-assets/lang/${lang}.json`)) addStringsLoader( templatesId, - async (lang: string) => await import(`@hcengineering/templates-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/templates-assets/lang/${lang}.json`) ) - addStringsLoader(trackerId, async (lang: string) => await import(`@hcengineering/tracker-assets/lang/${lang}.json`)) - addStringsLoader(viewId, async (lang: string) => await import(`@hcengineering/view-assets/lang/${lang}.json`)) + addStringsLoader(trackerId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/tracker-assets/lang/${lang}.json`)) + addStringsLoader(viewId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/view-assets/lang/${lang}.json`)) addStringsLoader( workbenchId, - async (lang: string) => await import(`@hcengineering/workbench-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/workbench-assets/lang/${lang}.json`) ) addStringsLoader( desktopPreferencesId, - async (lang: string) => await import(`@hcengineering/desktop-preferences-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/desktop-preferences-assets/lang/${lang}.json`) ) addStringsLoader( desktopDownloadsId, - async (lang: string) => await import(`@hcengineering/desktop-downloads-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/desktop-downloads-assets/lang/${lang}.json`) ) - addStringsLoader(diffviewId, async (lang: string) => await import(`@hcengineering/diffview-assets/lang/${lang}.json`)) - addStringsLoader(documentId, async (lang: string) => await import(`@hcengineering/document-assets/lang/${lang}.json`)) - addStringsLoader(timeId, async (lang: string) => await import(`@hcengineering/time-assets/lang/${lang}.json`)) - addStringsLoader(githubId, async (lang: string) => await import(`@hcengineering/github-assets/lang/${lang}.json`)) + addStringsLoader(diffviewId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/diffview-assets/lang/${lang}.json`)) + addStringsLoader(documentId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/document-assets/lang/${lang}.json`)) + addStringsLoader(timeId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/time-assets/lang/${lang}.json`)) + addStringsLoader(githubId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/github-assets/lang/${lang}.json`)) addStringsLoader( documentsId, - async (lang: string) => await import(`@hcengineering/controlled-documents-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/controlled-documents-assets/lang/${lang}.json`) ) - addStringsLoader(productsId, async (lang: string) => await import(`@hcengineering/products-assets/lang/${lang}.json`)) + addStringsLoader(productsId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/products-assets/lang/${lang}.json`)) addStringsLoader( questionsId, - async (lang: string) => await import(`@hcengineering/questions-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/questions-assets/lang/${lang}.json`) ) - addStringsLoader(trainingId, async (lang: string) => await import(`@hcengineering/training-assets/lang/${lang}.json`)) - addStringsLoader(guestId, async (lang: string) => await import(`@hcengineering/guest-assets/lang/${lang}.json`)) + addStringsLoader(trainingId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/training-assets/lang/${lang}.json`)) + addStringsLoader(guestId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/guest-assets/lang/${lang}.json`)) addStringsLoader( globalProfileId, - async (lang: string) => await import(`@hcengineering/global-profile-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/global-profile-assets/lang/${lang}.json`) ) - addStringsLoader(loveId, async (lang: string) => await import(`@hcengineering/love-assets/lang/${lang}.json`)) - addStringsLoader(printId, async (lang: string) => await import(`@hcengineering/print-assets/lang/${lang}.json`)) - addStringsLoader(exportId, async (lang: string) => await import(`@hcengineering/export-assets/lang/${lang}.json`)) + addStringsLoader(loveId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/love-assets/lang/${lang}.json`)) + addStringsLoader(printId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/print-assets/lang/${lang}.json`)) + addStringsLoader(exportId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/export-assets/lang/${lang}.json`)) addStringsLoader( analyticsCollectorId, - async (lang: string) => await import(`@hcengineering/analytics-collector-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/analytics-collector-assets/lang/${lang}.json`) ) addStringsLoader( testManagementId, - async (lang: string) => await import(`@hcengineering/test-management-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@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(mailId, async (lang: string) => await import(`@hcengineering/mail-assets/lang/${lang}.json`)) - addStringsLoader(chatId, async (lang: string) => await import(`@hcengineering/chat-assets/lang/${lang}.json`)) - addStringsLoader(inboxId, async (lang: string) => await import(`@hcengineering/inbox-assets/lang/${lang}.json`)) - addStringsLoader(processId, async (lang: string) => await import(`@hcengineering/process-assets/lang/${lang}.json`)) + addStringsLoader(surveyId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/survey-assets/lang/${lang}.json`)) + addStringsLoader(cardId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/card-assets/lang/${lang}.json`)) + addStringsLoader(mailId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/mail-assets/lang/${lang}.json`)) + addStringsLoader(chatId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/chat-assets/lang/${lang}.json`)) + addStringsLoader(inboxId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/inbox-assets/lang/${lang}.json`)) + addStringsLoader(processId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/process-assets/lang/${lang}.json`)) addStringsLoader( achievementId, - async (lang: string) => await import(`@hcengineering/achievement-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/achievement-assets/lang/${lang}.json`) ) addStringsLoader( communicationId, - async (lang: string) => await import(`@hcengineering/communication-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/communication-assets/lang/${lang}.json`) ) - addStringsLoader(emojiId, async (lang: string) => await import(`@hcengineering/emoji-assets/lang/${lang}.json`)) - addStringsLoader(billingId, async (lang: string) => await import(`@hcengineering/billing-assets/lang/${lang}.json`)) + addStringsLoader(emojiId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/emoji-assets/lang/${lang}.json`)) + addStringsLoader(billingId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/billing-assets/lang/${lang}.json`)) addStringsLoader( hulyMailId, - async (lang: string) => await import(`@hcengineering/huly-mail-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/huly-mail-assets/lang/${lang}.json`) ) addStringsLoader( aiAssistantId, - async (lang: string) => await import(`@hcengineering/ai-assistant-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/ai-assistant-assets/lang/${lang}.json`) ) - addStringsLoader(ratingId, async (lang: string) => await import(`@hcengineering/rating-assets/lang/${lang}.json`)) + addStringsLoader(ratingId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/rating-assets/lang/${lang}.json`)) } export class PlatformBranding { @@ -431,92 +431,92 @@ export async function configurePlatform (onWorkbenchConnect?: () => Promise ({ default: async () => ({}) })) addLocation(presentationId, async () => ({ default: async () => ({}) })) - addLocation(clientId, async () => await import('@hcengineering/client-resources')) - addLocation(loginId, async () => await import('@hcengineering/login-resources')) - addLocation(onboardId, async () => await import('@hcengineering/onboard-resources')) - addLocation(workbenchId, async () => await import('@hcengineering/workbench-resources')) - addLocation(viewId, async () => await import('@hcengineering/view-resources')) - addLocation(converterId, async () => await import('@hcengineering/converter-resources')) - addLocation(taskId, async () => await import('@hcengineering/task-resources')) - addLocation(contactId, async () => await import('@hcengineering/contact-resources')) - addLocation(chunterId, async () => await import('@hcengineering/chunter-resources')) - addLocation(recruitId, async () => await import('@hcengineering/recruit-resources')) - addLocation(activityId, async () => await import('@hcengineering/activity-resources')) - addLocation(settingId, async () => await import('@hcengineering/setting-resources')) - addLocation(leadId, async () => await import('@hcengineering/lead-resources')) - addLocation(telegramId, async () => await import('@hcengineering/telegram-resources')) - addLocation(attachmentId, async () => await import('@hcengineering/attachment-resources')) - addLocation(gmailId, async () => await import('@hcengineering/gmail-resources')) - addLocation(imageCropperId, async () => await import('@hcengineering/image-cropper-resources')) - addLocation(inventoryId, async () => await import('@hcengineering/inventory-resources')) - addLocation(templatesId, async () => await import('@hcengineering/templates-resources')) - addLocation(notificationId, async () => await import('@hcengineering/notification-resources')) - addLocation(tagsId, async () => await import('@hcengineering/tags-resources')) - addLocation(calendarId, async () => await import('@hcengineering/calendar-resources')) - addLocation(analyticsCollectorId, async () => await import('@hcengineering/analytics-collector-resources')) - addLocation(aiBotId, async () => await import('@hcengineering/ai-bot-resources')) - - addLocation(trackerId, async () => await import('@hcengineering/tracker-resources')) - addLocation(boardId, async () => await import('@hcengineering/board-resources')) - addLocation(hrId, async () => await import('@hcengineering/hr-resources')) - addLocation(bitrixId, async () => await import('@hcengineering/bitrix-resources')) - addLocation(requestId, async () => await import('@hcengineering/request-resources')) - addLocation(driveId, async () => await import('@hcengineering/drive-resources')) - addLocation(supportId, async () => await import('@hcengineering/support-resources')) - addLocation(diffviewId, async () => await import('@hcengineering/diffview-resources')) - addLocation(documentId, async () => await import('@hcengineering/document-resources')) - addLocation(timeId, async () => await import('@hcengineering/time-resources')) - addLocation(questionsId, async () => await import('@hcengineering/questions-resources')) - addLocation(trainingId, async () => await import('@hcengineering/training-resources')) - addLocation(productsId, async () => await import('@hcengineering/products-resources')) - addLocation(documentsId, async () => await import('@hcengineering/controlled-documents-resources')) - addLocation(mediaId, async () => await import('@hcengineering/media-resources')) - addLocation(uploaderId, async () => await import('@hcengineering/uploader-resources')) - addLocation(recorderId, async () => await import('@hcengineering/recorder-resources')) - addLocation(presenceId, async () => await import('@hcengineering/presence-resources')) - addLocation(githubId, async () => await import(/* webpackChunkName: "github" */ '@hcengineering/github-resources')) + addLocation(clientId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/client-resources')) + addLocation(loginId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/login-resources')) + addLocation(onboardId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/onboard-resources')) + addLocation(workbenchId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/workbench-resources')) + addLocation(viewId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/view-resources')) + addLocation(converterId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/converter-resources')) + addLocation(taskId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/task-resources')) + addLocation(contactId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/contact-resources')) + addLocation(chunterId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/chunter-resources')) + addLocation(recruitId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/recruit-resources')) + addLocation(activityId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/activity-resources')) + addLocation(settingId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/setting-resources')) + addLocation(leadId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/lead-resources')) + addLocation(telegramId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/telegram-resources')) + addLocation(attachmentId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/attachment-resources')) + addLocation(gmailId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/gmail-resources')) + addLocation(imageCropperId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/image-cropper-resources')) + addLocation(inventoryId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/inventory-resources')) + addLocation(templatesId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/templates-resources')) + addLocation(notificationId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/notification-resources')) + addLocation(tagsId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/tags-resources')) + addLocation(calendarId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/calendar-resources')) + addLocation(analyticsCollectorId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/analytics-collector-resources')) + addLocation(aiBotId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/ai-bot-resources')) + + addLocation(trackerId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/tracker-resources')) + addLocation(boardId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/board-resources')) + addLocation(hrId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/hr-resources')) + addLocation(bitrixId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/bitrix-resources')) + addLocation(requestId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/request-resources')) + addLocation(driveId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/drive-resources')) + addLocation(supportId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/support-resources')) + addLocation(diffviewId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/diffview-resources')) + addLocation(documentId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/document-resources')) + addLocation(timeId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/time-resources')) + addLocation(questionsId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/questions-resources')) + addLocation(trainingId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/training-resources')) + addLocation(productsId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/products-resources')) + addLocation(documentsId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/controlled-documents-resources')) + addLocation(mediaId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/media-resources')) + addLocation(uploaderId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/uploader-resources')) + addLocation(recorderId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/recorder-resources')) + addLocation(presenceId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/presence-resources')) + addLocation(githubId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "github" */ '@hcengineering/github-resources')) addLocation( desktopPreferencesId, async () => - await import(/* webpackChunkName: "desktop-preferences" */ '@hcengineering/desktop-preferences-resources') + await import(/* webpackMode: "eager" */ /* webpackChunkName: "desktop-preferences" */ '@hcengineering/desktop-preferences-resources') ) addLocation( desktopDownloadsId, - async () => await import(/* webpackChunkName: "desktop-downloads" */ '@hcengineering/desktop-downloads-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "desktop-downloads" */ '@hcengineering/desktop-downloads-resources') ) - addLocation(guestId, () => import(/* webpackChunkName: "guest" */ '@hcengineering/guest-resources')) + addLocation(guestId, () => import(/* webpackMode: "eager" */ /* webpackChunkName: "guest" */ '@hcengineering/guest-resources')) addLocation( globalProfileId, - () => import(/* webpackChunkName: "global-profile" */ '@hcengineering/global-profile-resources') + () => import(/* webpackMode: "eager" */ /* webpackChunkName: "global-profile" */ '@hcengineering/global-profile-resources') ) - addLocation(loveId, () => import(/* webpackChunkName: "love" */ '@hcengineering/love-resources')) - addLocation(printId, () => import(/* webpackChunkName: "print" */ '@hcengineering/print-resources')) - addLocation(exportId, () => import(/* webpackChunkName: "export" */ '@hcengineering/export-resources')) - addLocation(textEditorId, () => import(/* webpackChunkName: "text-editor" */ '@hcengineering/text-editor-resources')) + addLocation(loveId, () => import(/* webpackMode: "eager" */ /* webpackChunkName: "love" */ '@hcengineering/love-resources')) + addLocation(printId, () => import(/* webpackMode: "eager" */ /* webpackChunkName: "print" */ '@hcengineering/print-resources')) + addLocation(exportId, () => import(/* webpackMode: "eager" */ /* webpackChunkName: "export" */ '@hcengineering/export-resources')) + addLocation(textEditorId, () => import(/* webpackMode: "eager" */ /* webpackChunkName: "text-editor" */ '@hcengineering/text-editor-resources')) addLocation( testManagementId, - () => import(/* webpackChunkName: "test-management" */ '@hcengineering/test-management-resources') + () => import(/* webpackMode: "eager" */ /* webpackChunkName: "test-management" */ '@hcengineering/test-management-resources') ) - addLocation(surveyId, () => import(/* webpackChunkName: "survey" */ '@hcengineering/survey-resources')) - addLocation(cardId, () => import(/* webpackChunkName: "card" */ '@hcengineering/card-resources')) - addLocation(chatId, () => import(/* webpackChunkName: "chat" */ '@hcengineering/chat-resources')) - addLocation(inboxId, () => import(/* webpackChunkName: "inbox" */ '@hcengineering/inbox-resources')) - addLocation(processId, () => import(/* webpackChunkName: "process" */ '@hcengineering/process-resources')) - addLocation(achievementId, () => import(/* webpackChunkName: "achievement" */ '@hcengineering/achievement-resources')) + addLocation(surveyId, () => import(/* webpackMode: "eager" */ /* webpackChunkName: "survey" */ '@hcengineering/survey-resources')) + addLocation(cardId, () => import(/* webpackMode: "eager" */ /* webpackChunkName: "card" */ '@hcengineering/card-resources')) + addLocation(chatId, () => import(/* webpackMode: "eager" */ /* webpackChunkName: "chat" */ '@hcengineering/chat-resources')) + addLocation(inboxId, () => import(/* webpackMode: "eager" */ /* webpackChunkName: "inbox" */ '@hcengineering/inbox-resources')) + addLocation(processId, () => import(/* webpackMode: "eager" */ /* webpackChunkName: "process" */ '@hcengineering/process-resources')) + addLocation(achievementId, () => import(/* webpackMode: "eager" */ /* webpackChunkName: "achievement" */ '@hcengineering/achievement-resources')) addLocation( communicationId, - () => import(/* webpackChunkName: "communication" */ '@hcengineering/communication-resources') + () => import(/* webpackMode: "eager" */ /* webpackChunkName: "communication" */ '@hcengineering/communication-resources') ) - addLocation(emojiId, () => import(/* webpackChunkName: "achievement" */ '@hcengineering/emoji-resources')) + addLocation(emojiId, () => import(/* webpackMode: "eager" */ /* webpackChunkName: "achievement" */ '@hcengineering/emoji-resources')) if ((config.BILLING_URL ?? '') !== '') { - addLocation(billingId, () => import(/* webpackChunkName: "billing" */ '@hcengineering/billing-resources')) + addLocation(billingId, () => import(/* webpackMode: "eager" */ /* webpackChunkName: "billing" */ '@hcengineering/billing-resources')) } - addLocation(hulyMailId, () => import(/* webpackChunkName: "huly-mail" */ '@hcengineering/huly-mail-resources')) + addLocation(hulyMailId, () => import(/* webpackMode: "eager" */ /* webpackChunkName: "huly-mail" */ '@hcengineering/huly-mail-resources')) addLocation( aiAssistantId, - () => import(/* webpackChunkName: "ai-assistant" */ '@hcengineering/ai-assistant-resources') + () => import(/* webpackMode: "eager" */ /* webpackChunkName: "ai-assistant" */ '@hcengineering/ai-assistant-resources') ) - addLocation(ratingId, async () => await import(/* webpackChunkName: "rating" */ '@hcengineering/rating-resources')) + addLocation(ratingId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "rating" */ '@hcengineering/rating-resources')) setMetadata(client.metadata.FilterModel, 'ui') setMetadata(client.metadata.ExtraFilter, disabledFeatures) diff --git a/dev/prod/benchmarks.md b/dev/prod/benchmarks.md new file mode 100644 index 00000000000..4e2f462fca2 --- /dev/null +++ b/dev/prod/benchmarks.md @@ -0,0 +1,22 @@ +# Webpack vs Rspack Benchmarks (Huly Monorepo) + +This file tracks the performance metrics for the transition from Webpack to Rspack. + +## 1. Full Builds & Initial Startup + +| Metric | Webpack (Original) | Rspack (New) | Improvement | +| :--- | :--- | :--- | :--- | +| **Production Build** (`package` vs `rs:build`) | 2m 50s (170s) | **47s** | **~3.6x** | +| **Dev Server Cold Start** | 1m 00s (60s) | **43s** | **~1.4x** | + +> [!NOTE] +> Cold start improvement is lower because Rspack is now correctly bundling **all** dynamic resources upfront to prevent the "refresh waterfall." + +## 2. Hot Module Replacement (HMR) + +| Metric | Webpack | Rspack | Improvement | +| :--- | :--- | :--- | :--- | +| **Single Component Recompile** | 16.2s | **0.8s** | **~20x** | + +--- +*Last updated: 2026-03-01* diff --git a/dev/prod/package.json b/dev/prod/package.json index be3d41825c1..5a6bba34cf1 100644 --- a/dev/prod/package.json +++ b/dev/prod/package.json @@ -6,19 +6,19 @@ "scripts": { "_phase:package": "rushx package", "_phase:validate": "rm -rf ./types && compile validate", - "package": "rm -rf ./dist && cross-env NODE_ENV=production webpack --stats-error-details && echo 'done'", - "analyze": "rm -rf ./dist && cross-env NODE_ENV=production webpack --profile --json > stats.json", + "package": "rm -rf ./dist && cross-env NODE_ENV=production rspack build --config rspack.config.ts && echo 'done'", + "analyze": "rm -rf ./dist && cross-env NODE_ENV=production rspack build --config rspack.config.ts --profile --json > stats.json", "show": "webpack-bundle-analyzer stats.json dist", - "dev-server": "cross-env USE_CACHE=false CLIENT_TYPE=dev-server webpack serve", - "dev-server-test": "cross-env USE_CACHE=false CLIENT_TYPE=dev-server-test webpack serve", - "dev-worker": "cross-env USE_CACHE=false CLIENT_TYPE=dev-worker webpack serve", - "dev-worker-local": "cross-env USE_CACHE=false CLIENT_TYPE=dev-worker-local webpack serve", - "dev-server-cache": "cross-env USE_CACHE=true CLIENT_TYPE=dev-server webpack serve", + "dev-server": "cross-env USE_CACHE=false CLIENT_TYPE=dev-server rspack serve --config rspack.config.ts", + "dev-server-test": "cross-env USE_CACHE=false CLIENT_TYPE=dev-server-test rspack serve --config rspack.config.ts", + "dev-worker": "cross-env USE_CACHE=false CLIENT_TYPE=dev-worker rspack serve --config rspack.config.ts", + "dev-worker-local": "cross-env USE_CACHE=false CLIENT_TYPE=dev-worker-local rspack serve --config rspack.config.ts", + "dev-server-cache": "cross-env USE_CACHE=true CLIENT_TYPE=dev-server rspack serve --config rspack.config.ts", "tunnel-qms": "socat tcp-listen:8081,reuseaddr,fork,bind=localhost tcp:localhost:8080", - "dev-production": "cross-env CLIENT_TYPE=dev-production webpack serve", - "dev-huly": "cross-env CLIENT_TYPE=dev-huly webpack serve", - "dev-bold": "cross-env CLIENT_TYPE=dev-bold webpack serve", - "start": "cross-env NODE_ENV=production webpack serve", + "dev-production": "cross-env CLIENT_TYPE=dev-production rspack serve --config rspack.config.ts", + "dev-huly": "cross-env CLIENT_TYPE=dev-huly rspack serve --config rspack.config.ts", + "dev-bold": "cross-env CLIENT_TYPE=dev-bold rspack serve --config rspack.config.ts", + "start": "cross-env NODE_ENV=production rspack serve --config rspack.config.ts", "deploy": "cp -p public/* dist && aws s3 sync dist s3://anticrm-platform --delete --acl public-read", "format": "echo 'no format yet'" }, @@ -52,7 +52,10 @@ "webpack": "^5.97.1", "webpack-bundle-analyzer": "^4.10.2", "webpack-cli": "^5.1.4", - "webpack-dev-server": "^4.11.1" + "webpack-dev-server": "^4.11.1", + "@rspack/core": "^1.2.0", + "@rspack/cli": "^1.2.0", + "tsconfig-paths-webpack-plugin": "^4.1.0" }, "dependencies": { "@hcengineering/achievement": "workspace:^0.7.0", diff --git a/dev/prod/rspack.config.ts b/dev/prod/rspack.config.ts new file mode 100644 index 00000000000..4a09e66f6e9 --- /dev/null +++ b/dev/prod/rspack.config.ts @@ -0,0 +1,208 @@ +import { defineConfig } from '@rspack/cli'; +import { rspack } from '@rspack/core'; +import path from 'path'; + +const mode = process.env.NODE_ENV || 'development'; +const prod = mode === 'production'; + +const clientType = process.env.CLIENT_TYPE || ''; +const dev = mode === 'development' || clientType === 'dev'; + +const devProxy = [ + { + context: ['/account'], + target: 'http://huly.local:3000', + changeOrigin: true, + pathRewrite: { '^/account': '' }, + }, + { + context: ['/api/v1', '/files', '/import'], + target: 'http://huly.local:8087', + changeOrigin: true, + }, + { + context: ['/rekoni/recognize'], + target: 'http://huly.local:4004', + changeOrigin: true, + pathRewrite: { '^/rekoni/recognize': '/recognize' }, + } +]; + +const devProxyTest = [ + { + context: ['/account'], + target: 'http://huly.local:3003', + changeOrigin: true, + pathRewrite: { '^/account': '' }, + }, + { + context: ['/api/v1', '/files', '/import'], + target: 'http://huly.local:8083', + changeOrigin: true, + }, + { + context: ['/rekoni/recognize'], + target: 'http://huly.local:4004', + changeOrigin: true, + pathRewrite: { '^/rekoni/recognize': '/recognize' }, + } +]; + +const proxies: Record = { + 'dev-worker': devProxy, + 'dev-worker-local': devProxy, + 'dev-server': devProxy, + 'dev-server-test': devProxyTest, +}; + +export default defineConfig({ + mode: prod ? 'production' : 'development', + context: __dirname, + entry: { + main: [ + '@hcengineering/theme/styles/global.scss', + './src/eager-bundle.ts', + dev && (clientType === 'dev-server' || clientType === 'dev') ? './src/main-dev.ts' : './src/main.ts' + ], + }, + output: { + path: path.resolve(__dirname, 'dist'), + filename: '[name].[contenthash].js', + publicPath: '/', + clean: true, + }, + resolve: { + extensions: ['.mjs', '.js', '.svelte', '.ts'], + mainFields: ['svelte', 'browser', 'module', 'main'], + conditionNames: ['svelte', 'browser', 'import'], + alias: { + '@hcengineering/platform-rig/profiles/ui/svelte$': path.resolve(__dirname, 'node_modules/svelte/src/runtime/index.js'), + }, + fallback: { + crypto: false, + fs: false, + path: false, + os: false, + net: false, + tls: false, + child_process: false, + http: false, + https: false, + stream: false, + constants: false, + dns: false, + }, + symlinks: true, + }, + module: { + rules: [ + { + test: /\.svelte$/, + use: [ + { + loader: 'svelte-loader', + options: { + preprocess: require('svelte-preprocess')({ + postcss: true, + scss: { + silenceDeprecations: ['legacy-js-api'] + } + }), + onwarn: (warning: any, handler: any) => { + if (warning.code === 'css-unused-selector' || warning.code === 'a11y-missing-attribute') return; + handler(warning); + } + }, + }, + ], + }, + { + test: /\.ts$/, + exclude: [/node_modules/], + loader: 'builtin:swc-loader', + options: { + jsc: { + parser: { + syntax: 'typescript', + }, + preserveAllComments: true, + }, + }, + type: 'javascript/auto', + }, + { + test: /\.scss$/, + use: [ + 'style-loader', + 'css-loader', + { + loader: 'sass-loader', + options: { + api: 'modern', + sassOptions: { + quietDeps: true, + }, + }, + }, + ], + type: 'javascript/auto', + }, + { + test: /\.css$/, + use: [ + 'style-loader', + 'css-loader', + ], + type: 'javascript/auto', + }, + { + test: /\.(png|svg|jpg|webp|avif|ico|wav|mp3|ogg|aac|woff|woff2|ttf|otf)$/, + type: 'asset/resource', + }, + ], + }, + optimization: { + splitChunks: false, + }, + lazyCompilation: false, + stats: 'errors-only', + infrastructureLogging: { + level: 'none', + }, + plugins: [ + new rspack.HtmlRspackPlugin({ + meta: { + viewport: 'width=device-width, initial-scale=1.0', + }, + }), + new rspack.DefinePlugin({ + 'process.env.NODE_ENV': JSON.stringify(mode), + 'process.env.CLIENT_TYPE': JSON.stringify(clientType), + }), + ], + devServer: { + port: 8080, + host: '0.0.0.0', + allowedHosts: 'all', + historyApiFallback: { + disableDotRule: true, + }, + devMiddleware: { + publicPath: '/', + }, + client: { + overlay: false, + logging: 'none', + }, + proxy: proxies[clientType] || devProxy, + static: { + directory: path.resolve(__dirname, 'public'), + publicPath: '/', + }, + hot: true, + }, + watchOptions: { + ignored: /node_modules/, + poll: 1000, + }, +}); diff --git a/dev/prod/src/eager-bundle.ts b/dev/prod/src/eager-bundle.ts new file mode 100644 index 00000000000..1301aa1840d --- /dev/null +++ b/dev/prod/src/eager-bundle.ts @@ -0,0 +1,125 @@ +import '@hcengineering/achievement-assets'; +import '@hcengineering/achievement-resources'; +import '@hcengineering/activity-assets'; +import '@hcengineering/activity-resources'; +import '@hcengineering/ai-bot-resources'; +import '@hcengineering/analytics-collector-assets'; +import '@hcengineering/analytics-collector-resources'; +import '@hcengineering/attachment-assets'; +import '@hcengineering/attachment-resources'; +import '@hcengineering/bitrix-assets'; +import '@hcengineering/bitrix-resources'; +import '@hcengineering/board-assets'; +import '@hcengineering/board-resources'; +import '@hcengineering/calendar-assets'; +import '@hcengineering/calendar-resources'; +import '@hcengineering/card-assets'; +import '@hcengineering/card-resources'; +import '@hcengineering/chat-assets'; +import '@hcengineering/chat-resources'; +import '@hcengineering/chunter-assets'; +import '@hcengineering/chunter-resources'; +import '@hcengineering/client-resources'; +import '@hcengineering/contact-assets'; +import '@hcengineering/contact-resources'; +import '@hcengineering/controlled-documents-assets'; +import '@hcengineering/controlled-documents-resources'; +import '@hcengineering/desktop-preferences-assets'; +import '@hcengineering/desktop-preferences-resources'; +import '@hcengineering/devmodel-resources'; +import '@hcengineering/diffview-assets'; +import '@hcengineering/diffview-resources'; +import '@hcengineering/document-assets'; +import '@hcengineering/document-resources'; +import '@hcengineering/drive-assets'; +import '@hcengineering/drive-resources'; +import '@hcengineering/export-assets'; +import '@hcengineering/export-resources'; +import '@hcengineering/github-assets'; +import '@hcengineering/github-resources'; +import '@hcengineering/gmail-assets'; +import '@hcengineering/gmail-resources'; +import '@hcengineering/guest-assets'; +import '@hcengineering/guest-resources'; +import '@hcengineering/global-profile-assets'; +import '@hcengineering/global-profile-resources'; +import '@hcengineering/hr-assets'; +import '@hcengineering/hr-resources'; +import '@hcengineering/image-cropper-resources'; +import '@hcengineering/inventory-assets'; +import '@hcengineering/inventory-resources'; +import '@hcengineering/lead-assets'; +import '@hcengineering/lead-resources'; +import '@hcengineering/login-assets'; +import '@hcengineering/login-resources'; +import '@hcengineering/love-assets'; +import '@hcengineering/love-resources'; +import '@hcengineering/mail-assets'; +import '@hcengineering/notification-assets'; +import '@hcengineering/notification-resources'; +import '@hcengineering/onboard-assets'; +import '@hcengineering/onboard-resources'; +import '@hcengineering/preference-assets'; +import '@hcengineering/presence-resources'; +import '@hcengineering/print-assets'; +import '@hcengineering/print-resources'; +import '@hcengineering/products-assets'; +import '@hcengineering/products-resources'; +import '@hcengineering/questions-assets'; +import '@hcengineering/questions-resources'; +import '@hcengineering/recorder-assets'; +import '@hcengineering/recorder-resources'; +import '@hcengineering/recruit-assets'; +import '@hcengineering/recruit-resources'; +import '@hcengineering/request-assets'; +import '@hcengineering/request-resources'; +import '@hcengineering/setting-assets'; +import '@hcengineering/setting-resources'; +import '@hcengineering/support-assets'; +import '@hcengineering/support-resources'; +import '@hcengineering/survey-assets'; +import '@hcengineering/survey-resources'; +import '@hcengineering/tags-assets'; +import '@hcengineering/tags-resources'; +import '@hcengineering/task-assets'; +import '@hcengineering/task-resources'; +import '@hcengineering/telegram-assets'; +import '@hcengineering/telegram-resources'; +import '@hcengineering/templates-assets'; +import '@hcengineering/templates-resources'; +import '@hcengineering/test-management-assets'; +import '@hcengineering/test-management-resources'; +import '@hcengineering/text-editor-assets'; +import '@hcengineering/text-editor-resources'; +import '@hcengineering/time-assets'; +import '@hcengineering/time-resources'; +import '@hcengineering/tracker-assets'; +import '@hcengineering/tracker-resources'; +import '@hcengineering/training-assets'; +import '@hcengineering/training-resources'; +import '@hcengineering/media-assets'; +import '@hcengineering/media-resources'; +import '@hcengineering/uploader-assets'; +import '@hcengineering/uploader-resources'; +import '@hcengineering/view-assets'; +import '@hcengineering/view-resources'; +import '@hcengineering/converter-resources'; +import '@hcengineering/workbench-assets'; +import '@hcengineering/workbench-resources'; +import '@hcengineering/process-assets'; +import '@hcengineering/process-resources'; +import '@hcengineering/communication-assets'; +import '@hcengineering/communication-resources'; +import '@hcengineering/emoji-assets'; +import '@hcengineering/emoji-resources'; +import '@hcengineering/billing-assets'; +import '@hcengineering/billing-resources'; +import '@hcengineering/huly-mail-assets'; +import '@hcengineering/huly-mail-resources'; +import '@hcengineering/ai-assistant-assets'; +import '@hcengineering/ai-assistant-resources'; +import '@hcengineering/inbox-assets'; +import '@hcengineering/inbox-resources'; +import '@hcengineering/rating-assets'; +import '@hcengineering/rating-resources'; +import '@hcengineering/platform/lang/en.json'; diff --git a/dev/prod/src/platform-dev.ts b/dev/prod/src/platform-dev.ts index fea8893f268..18843859439 100644 --- a/dev/prod/src/platform-dev.ts +++ b/dev/prod/src/platform-dev.ts @@ -28,6 +28,6 @@ function enableDevModel () { setMetadata(presentation.metadata.ClientHook, new PresentationClientHook()) addLocation( devModelId, - async () => await import(/* webpackChunkName: "devmodel" */ '@hcengineering/devmodel-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "devmodel" */ '@hcengineering/devmodel-resources') ) } diff --git a/dev/prod/src/platform.ts b/dev/prod/src/platform.ts index 59d7f0adff7..cf2635de975 100644 --- a/dev/prod/src/platform.ts +++ b/dev/prod/src/platform.ts @@ -278,9 +278,9 @@ function configureI18n(): void { addStringsLoader( platformId, async (lang: string) => - await import( + await import(/* webpackMode: "eager" */ /* webpackInclude: /\.json$/ */ - /* webpackMode: "lazy" */ + /* webpackMode: "eager" */ /* webpackChunkName: "lang-[request]" */ `@hcengineering/platform/lang/${lang}.json` ) @@ -288,143 +288,152 @@ function configureI18n(): void { addStringsLoader( coreId, async (lang: string) => - await import( + await import(/* webpackMode: "eager" */ /* webpackInclude: /\.json$/ */ - /* webpackMode: "lazy" */ + /* webpackMode: "eager" */ /* webpackChunkName: "lang-[request]" */ `@hcengineering/core/lang/${lang}.json` ) ) addStringsLoader( presentationId, - async (lang: string) => await import(`@hcengineering/presentation/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/presentation/lang/${lang}.json`) ) addStringsLoader( textEditorId, - async (lang: string) => await import(`@hcengineering/text-editor-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/text-editor-assets/lang/${lang}.json`) ) - addStringsLoader(uiId, async (lang: string) => await import(`@hcengineering/ui/lang/${lang}.json`)) - addStringsLoader(uploaderId, async (lang: string) => await import(`@hcengineering/uploader-assets/lang/${lang}.json`)) - addStringsLoader(recorderId, async (lang: string) => await import(`@hcengineering/recorder-assets/lang/${lang}.json`)) - addStringsLoader(mediaId, async (lang: string) => await import(`@hcengineering/media-assets/lang/${lang}.json`)) - addStringsLoader(activityId, async (lang: string) => await import(`@hcengineering/activity-assets/lang/${lang}.json`)) + addStringsLoader(uiId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/ui/lang/${lang}.json`)) + addStringsLoader(uploaderId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/uploader-assets/lang/${lang}.json`)) + addStringsLoader(recorderId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/recorder-assets/lang/${lang}.json`)) + addStringsLoader(mediaId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/media-assets/lang/${lang}.json`)) + addStringsLoader(activityId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/activity-assets/lang/${lang}.json`)) addStringsLoader( attachmentId, - async (lang: string) => await import(`@hcengineering/attachment-assets/lang/${lang}.json`) - ) - addStringsLoader(bitrixId, async (lang: string) => await import(`@hcengineering/bitrix-assets/lang/${lang}.json`)) - addStringsLoader(boardId, async (lang: string) => await import(`@hcengineering/board-assets/lang/${lang}.json`)) - addStringsLoader(calendarId, async (lang: string) => await import(`@hcengineering/calendar-assets/lang/${lang}.json`)) - addStringsLoader(chunterId, async (lang: string) => await import(`@hcengineering/chunter-assets/lang/${lang}.json`)) - addStringsLoader(contactId, async (lang: string) => await import(`@hcengineering/contact-assets/lang/${lang}.json`)) - addStringsLoader(driveId, async (lang: string) => await import(`@hcengineering/drive-assets/lang/${lang}.json`)) - addStringsLoader(gmailId, async (lang: string) => await import(`@hcengineering/gmail-assets/lang/${lang}.json`)) - addStringsLoader(hrId, async (lang: string) => await import(`@hcengineering/hr-assets/lang/${lang}.json`)) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/attachment-assets/lang/${lang}.json`) + ) + addStringsLoader(bitrixId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/bitrix-assets/lang/${lang}.json`)) + addStringsLoader(boardId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/board-assets/lang/${lang}.json`)) + addStringsLoader(calendarId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/calendar-assets/lang/${lang}.json`)) + addStringsLoader(chunterId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/chunter-assets/lang/${lang}.json`)) + addStringsLoader(contactId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/contact-assets/lang/${lang}.json`)) + addStringsLoader(driveId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/drive-assets/lang/${lang}.json`)) + addStringsLoader(gmailId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/gmail-assets/lang/${lang}.json`)) + addStringsLoader(hrId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/hr-assets/lang/${lang}.json`)) addStringsLoader( inventoryId, - async (lang: string) => await import(`@hcengineering/inventory-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/inventory-assets/lang/${lang}.json`) ) - addStringsLoader(leadId, async (lang: string) => await import(`@hcengineering/lead-assets/lang/${lang}.json`)) - addStringsLoader(loginId, async (lang: string) => await import(`@hcengineering/login-assets/lang/${lang}.json`)) + addStringsLoader(leadId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/lead-assets/lang/${lang}.json`)) + addStringsLoader(loginId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/login-assets/lang/${lang}.json`)) addStringsLoader( notificationId, - async (lang: string) => await import(`@hcengineering/notification-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/notification-assets/lang/${lang}.json`) ) - addStringsLoader(onboardId, async (lang: string) => await import(`@hcengineering/onboard-assets/lang/${lang}.json`)) + addStringsLoader(onboardId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/onboard-assets/lang/${lang}.json`)) addStringsLoader( preferenceId, - async (lang: string) => await import(`@hcengineering/preference-assets/lang/${lang}.json`) - ) - addStringsLoader(recruitId, async (lang: string) => await import(`@hcengineering/recruit-assets/lang/${lang}.json`)) - addStringsLoader(requestId, async (lang: string) => await import(`@hcengineering/request-assets/lang/${lang}.json`)) - addStringsLoader(settingId, async (lang: string) => await import(`@hcengineering/setting-assets/lang/${lang}.json`)) - addStringsLoader(supportId, async (lang: string) => await import(`@hcengineering/support-assets/lang/${lang}.json`)) - addStringsLoader(tagsId, async (lang: string) => await import(`@hcengineering/tags-assets/lang/${lang}.json`)) - addStringsLoader(taskId, async (lang: string) => await import(`@hcengineering/task-assets/lang/${lang}.json`)) - addStringsLoader(telegramId, async (lang: string) => await import(`@hcengineering/telegram-assets/lang/${lang}.json`)) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/preference-assets/lang/${lang}.json`) + ) + addStringsLoader(recruitId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/recruit-assets/lang/${lang}.json`)) + addStringsLoader(requestId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/request-assets/lang/${lang}.json`)) + addStringsLoader(settingId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/setting-assets/lang/${lang}.json`)) + addStringsLoader(supportId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/support-assets/lang/${lang}.json`)) + addStringsLoader(tagsId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/tags-assets/lang/${lang}.json`)) + addStringsLoader(taskId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/task-assets/lang/${lang}.json`)) + addStringsLoader(telegramId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/telegram-assets/lang/${lang}.json`)) addStringsLoader( templatesId, - async (lang: string) => await import(`@hcengineering/templates-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/templates-assets/lang/${lang}.json`) ) - addStringsLoader(trackerId, async (lang: string) => await import(`@hcengineering/tracker-assets/lang/${lang}.json`)) - addStringsLoader(viewId, async (lang: string) => await import(`@hcengineering/view-assets/lang/${lang}.json`)) + addStringsLoader(trackerId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/tracker-assets/lang/${lang}.json`)) + addStringsLoader(viewId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/view-assets/lang/${lang}.json`)) addStringsLoader( workbenchId, - async (lang: string) => await import(`@hcengineering/workbench-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/workbench-assets/lang/${lang}.json`) ) addStringsLoader( desktopPreferencesId, - async (lang: string) => await import(`@hcengineering/desktop-preferences-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/desktop-preferences-assets/lang/${lang}.json`) ) - addStringsLoader(diffviewId, async (lang: string) => await import(`@hcengineering/diffview-assets/lang/${lang}.json`)) - addStringsLoader(documentId, async (lang: string) => await import(`@hcengineering/document-assets/lang/${lang}.json`)) - addStringsLoader(timeId, async (lang: string) => await import(`@hcengineering/time-assets/lang/${lang}.json`)) - addStringsLoader(githubId, async (lang: string) => await import(`@hcengineering/github-assets/lang/${lang}.json`)) + addStringsLoader(diffviewId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/diffview-assets/lang/${lang}.json`)) + addStringsLoader(documentId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/document-assets/lang/${lang}.json`)) + addStringsLoader(timeId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/time-assets/lang/${lang}.json`)) + addStringsLoader(githubId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/github-assets/lang/${lang}.json`)) addStringsLoader( documentsId, - async (lang: string) => await import(`@hcengineering/controlled-documents-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/controlled-documents-assets/lang/${lang}.json`) ) - addStringsLoader(productsId, async (lang: string) => await import(`@hcengineering/products-assets/lang/${lang}.json`)) + addStringsLoader(productsId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/products-assets/lang/${lang}.json`)) addStringsLoader( questionsId, - async (lang: string) => await import(`@hcengineering/questions-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/questions-assets/lang/${lang}.json`) ) - addStringsLoader(trainingId, async (lang: string) => await import(`@hcengineering/training-assets/lang/${lang}.json`)) - addStringsLoader(guestId, async (lang: string) => await import(`@hcengineering/guest-assets/lang/${lang}.json`)) + addStringsLoader(trainingId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/training-assets/lang/${lang}.json`)) + addStringsLoader(guestId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/guest-assets/lang/${lang}.json`)) addStringsLoader( globalProfileId, - async (lang: string) => await import(`@hcengineering/global-profile-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/global-profile-assets/lang/${lang}.json`) ) - addStringsLoader(loveId, async (lang: string) => await import(`@hcengineering/love-assets/lang/${lang}.json`)) - addStringsLoader(printId, async (lang: string) => await import(`@hcengineering/print-assets/lang/${lang}.json`)) - addStringsLoader(exportId, async (lang: string) => await import(`@hcengineering/export-assets/lang/${lang}.json`)) + addStringsLoader(loveId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/love-assets/lang/${lang}.json`)) + addStringsLoader(printId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/print-assets/lang/${lang}.json`)) + addStringsLoader(exportId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/export-assets/lang/${lang}.json`)) addStringsLoader( analyticsCollectorId, - async (lang: string) => await import(`@hcengineering/analytics-collector-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/analytics-collector-assets/lang/${lang}.json`) ) addStringsLoader( testManagementId, - async (lang: string) => await import(`@hcengineering/test-management-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@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(mailId, async (lang: string) => await import(`@hcengineering/mail-assets/lang/${lang}.json`)) - addStringsLoader(chatId, async (lang: string) => await import(`@hcengineering/chat-assets/lang/${lang}.json`)) - addStringsLoader(processId, async (lang: string) => await import(`@hcengineering/process-assets/lang/${lang}.json`)) + addStringsLoader(surveyId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/survey-assets/lang/${lang}.json`)) + addStringsLoader(cardId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/card-assets/lang/${lang}.json`)) + addStringsLoader(mailId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/mail-assets/lang/${lang}.json`)) + addStringsLoader(chatId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/chat-assets/lang/${lang}.json`)) + addStringsLoader(processId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/process-assets/lang/${lang}.json`)) addStringsLoader( achievementId, - async (lang: string) => await import(`@hcengineering/achievement-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/achievement-assets/lang/${lang}.json`) ) addStringsLoader( communicationId, - async (lang: string) => await import(`@hcengineering/communication-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/communication-assets/lang/${lang}.json`) ) - addStringsLoader(inboxId, async (lang: string) => await import(`@hcengineering/inbox-assets/lang/${lang}.json`)) - addStringsLoader(emojiId, async (lang: string) => await import(`@hcengineering/emoji-assets/lang/${lang}.json`)) - addStringsLoader(billingId, async (lang: string) => await import(`@hcengineering/billing-assets/lang/${lang}.json`)) + addStringsLoader(inboxId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/inbox-assets/lang/${lang}.json`)) + addStringsLoader(emojiId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/emoji-assets/lang/${lang}.json`)) + addStringsLoader(billingId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/billing-assets/lang/${lang}.json`)) addStringsLoader( hulyMailId, - async (lang: string) => await import(`@hcengineering/huly-mail-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/huly-mail-assets/lang/${lang}.json`) ) addStringsLoader( aiAssistantId, - async (lang: string) => await import(`@hcengineering/ai-assistant-assets/lang/${lang}.json`) + async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/ai-assistant-assets/lang/${lang}.json`) ) - addStringsLoader(ratingId, async (lang: string) => await import(`@hcengineering/rating-assets/lang/${lang}.json`)) + addStringsLoader(ratingId, async (lang: string) => await import(/* webpackMode: "eager" */ `@hcengineering/rating-assets/lang/${lang}.json`)) } export async function configurePlatform() { + const dev = process.env.NODE_ENV === 'development'; setMetadata(platform.metadata.LoadHelper, async (loader) => { - for (let i = 0; i < 5; i++) { + for (let i = 0; i < (dev ? 30 : 5); i++) { try { + console.log(`[Rspack] Chunk loading`); return await loader() } catch (err: any) { - if (err.message.includes('Loading chunk') && i != 4) { - continue + if (err.message.includes('Loading chunk') || err.message.includes('Loading hot update')) { + if (dev) { + console.log(`[Rspack] Chunk loading failed, retrying in 1s (${i + 1}/30)...`); + await new Promise(resolve => setTimeout(resolve, 1000)); + continue; + } + if (i < 4) continue; + } + console.error('Platform load error:', err) + if (!dev) { + location.reload() } - console.log('reload due to loading error') - location.reload() } } }) @@ -563,156 +572,156 @@ export async function configurePlatform() { addLocation(coreId, async () => ({ default: async () => ({}) })) addLocation(presentationId, async () => ({ default: async () => ({}) })) - addLocation(clientId, async () => await import(/* webpackChunkName: "client" */ '@hcengineering/client-resources')) - addLocation(loginId, async () => await import(/* webpackChunkName: "login" */ '@hcengineering/login-resources')) - addLocation(onboardId, async () => await import(/* webpackChunkName: "onboard" */ '@hcengineering/onboard-resources')) + addLocation(clientId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "client" */ '@hcengineering/client-resources')) + addLocation(loginId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "login" */ '@hcengineering/login-resources')) + addLocation(onboardId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "onboard" */ '@hcengineering/onboard-resources')) addLocation( workbenchId, - async () => await import(/* webpackChunkName: "workbench" */ '@hcengineering/workbench-resources') - ) - addLocation(viewId, async () => await import(/* webpackChunkName: "view" */ '@hcengineering/view-resources')) - addLocation(converterId, async () => await import(/* webpackChunkName: "converter" */ '@hcengineering/converter-resources')) - addLocation(taskId, async () => await import(/* webpackChunkName: "task" */ '@hcengineering/task-resources')) - addLocation(contactId, async () => await import(/* webpackChunkName: "contact" */ '@hcengineering/contact-resources')) - addLocation(chunterId, async () => await import(/* webpackChunkName: "chunter" */ '@hcengineering/chunter-resources')) - addLocation(recruitId, async () => await import(/* webpackChunkName: "recruit" */ '@hcengineering/recruit-resources')) + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "workbench" */ '@hcengineering/workbench-resources') + ) + addLocation(viewId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "view" */ '@hcengineering/view-resources')) + addLocation(converterId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "converter" */ '@hcengineering/converter-resources')) + addLocation(taskId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "task" */ '@hcengineering/task-resources')) + addLocation(contactId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "contact" */ '@hcengineering/contact-resources')) + addLocation(chunterId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "chunter" */ '@hcengineering/chunter-resources')) + addLocation(recruitId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "recruit" */ '@hcengineering/recruit-resources')) addLocation( activityId, - async () => await import(/* webpackChunkName: "activity" */ '@hcengineering/activity-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "activity" */ '@hcengineering/activity-resources') ) - addLocation(settingId, async () => await import(/* webpackChunkName: "setting" */ '@hcengineering/setting-resources')) - addLocation(leadId, async () => await import(/* webpackChunkName: "lead" */ '@hcengineering/lead-resources')) + addLocation(settingId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "setting" */ '@hcengineering/setting-resources')) + addLocation(leadId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "lead" */ '@hcengineering/lead-resources')) addLocation( telegramId, - async () => await import(/* webpackChunkName: "telegram" */ '@hcengineering/telegram-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "telegram" */ '@hcengineering/telegram-resources') ) addLocation( attachmentId, - async () => await import(/* webpackChunkName: "attachment" */ '@hcengineering/attachment-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "attachment" */ '@hcengineering/attachment-resources') ) - addLocation(gmailId, async () => await import(/* webpackChunkName: "gmail" */ '@hcengineering/gmail-resources')) + addLocation(gmailId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "gmail" */ '@hcengineering/gmail-resources')) addLocation( imageCropperId, - async () => await import(/* webpackChunkName: "image-cropper" */ '@hcengineering/image-cropper-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "image-cropper" */ '@hcengineering/image-cropper-resources') ) addLocation( inventoryId, - async () => await import(/* webpackChunkName: "inventory" */ '@hcengineering/inventory-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "inventory" */ '@hcengineering/inventory-resources') ) addLocation( templatesId, - async () => await import(/* webpackChunkName: "templates" */ '@hcengineering/templates-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "templates" */ '@hcengineering/templates-resources') ) addLocation( notificationId, - async () => await import(/* webpackChunkName: "notification" */ '@hcengineering/notification-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "notification" */ '@hcengineering/notification-resources') ) - addLocation(tagsId, async () => await import(/* webpackChunkName: "tags" */ '@hcengineering/tags-resources')) + addLocation(tagsId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "tags" */ '@hcengineering/tags-resources')) addLocation( calendarId, - async () => await import(/* webpackChunkName: "calendar" */ '@hcengineering/calendar-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "calendar" */ '@hcengineering/calendar-resources') ) addLocation( diffviewId, - async () => await import(/* webpackChunkName: "diffview" */ '@hcengineering/diffview-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "diffview" */ '@hcengineering/diffview-resources') ) - addLocation(timeId, async () => await import(/* webpackChunkName: "time" */ '@hcengineering/time-resources')) + addLocation(timeId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "time" */ '@hcengineering/time-resources')) addLocation( desktopPreferencesId, async () => - await import(/* webpackChunkName: "desktop-preferences" */ '@hcengineering/desktop-preferences-resources') + await import(/* webpackMode: "eager" */ /* webpackChunkName: "desktop-preferences" */ '@hcengineering/desktop-preferences-resources') ) - addLocation(analyticsCollectorId, async () => await import('@hcengineering/analytics-collector-resources')) - addLocation(aiBotId, async () => await import('@hcengineering/ai-bot-resources')) + addLocation(analyticsCollectorId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/analytics-collector-resources')) + addLocation(aiBotId, async () => await import(/* webpackMode: "eager" */ '@hcengineering/ai-bot-resources')) - addLocation(trackerId, async () => await import(/* webpackChunkName: "tracker" */ '@hcengineering/tracker-resources')) - addLocation(boardId, async () => await import(/* webpackChunkName: "board" */ '@hcengineering/board-resources')) - addLocation(hrId, async () => await import(/* webpackChunkName: "hr" */ '@hcengineering/hr-resources')) - addLocation(bitrixId, async () => await import(/* webpackChunkName: "bitrix" */ '@hcengineering/bitrix-resources')) - addLocation(requestId, async () => await import(/* webpackChunkName: "request" */ '@hcengineering/request-resources')) - addLocation(driveId, async () => await import(/* webpackChunkName: "drive" */ '@hcengineering/drive-resources')) - addLocation(supportId, async () => await import(/* webpackChunkName: "support" */ '@hcengineering/support-resources')) + addLocation(trackerId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "tracker" */ '@hcengineering/tracker-resources')) + addLocation(boardId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "board" */ '@hcengineering/board-resources')) + addLocation(hrId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "hr" */ '@hcengineering/hr-resources')) + addLocation(bitrixId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "bitrix" */ '@hcengineering/bitrix-resources')) + addLocation(requestId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "request" */ '@hcengineering/request-resources')) + addLocation(driveId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "drive" */ '@hcengineering/drive-resources')) + addLocation(supportId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "support" */ '@hcengineering/support-resources')) addLocation( documentId, - async () => await import(/* webpackChunkName: "document" */ '@hcengineering/document-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "document" */ '@hcengineering/document-resources') ) - addLocation(githubId, async () => await import(/* webpackChunkName: "github" */ '@hcengineering/github-resources')) + addLocation(githubId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "github" */ '@hcengineering/github-resources')) addLocation( questionsId, - async () => await import(/* webpackChunkName: "training" */ '@hcengineering/questions-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "training" */ '@hcengineering/questions-resources') ) addLocation( trainingId, - async () => await import(/* webpackChunkName: "training" */ '@hcengineering/training-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "training" */ '@hcengineering/training-resources') ) addLocation( productsId, - async () => await import(/* webpackChunkName: "products" */ '@hcengineering/products-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "products" */ '@hcengineering/products-resources') ) addLocation( documentsId, - async () => await import(/* webpackChunkName: "documents" */ '@hcengineering/controlled-documents-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "documents" */ '@hcengineering/controlled-documents-resources') ) - addLocation(guestId, async () => await import(/* webpackChunkName: "guest" */ '@hcengineering/guest-resources')) + addLocation(guestId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "guest" */ '@hcengineering/guest-resources')) addLocation( globalProfileId, - async () => await import(/* webpackChunkName: "global-profile" */ '@hcengineering/global-profile-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "global-profile" */ '@hcengineering/global-profile-resources') ) - addLocation(loveId, async () => await import(/* webpackChunkName: "love" */ '@hcengineering/love-resources')) - addLocation(printId, async () => await import(/* webpackChunkName: "print" */ '@hcengineering/print-resources')) - addLocation(exportId, async () => await import(/* webpackChunkName: "export" */ '@hcengineering/export-resources')) + addLocation(loveId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "love" */ '@hcengineering/love-resources')) + addLocation(printId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "print" */ '@hcengineering/print-resources')) + addLocation(exportId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "export" */ '@hcengineering/export-resources')) addLocation( textEditorId, - async () => await import(/* webpackChunkName: "text-editor" */ '@hcengineering/text-editor-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "text-editor" */ '@hcengineering/text-editor-resources') ) addLocation( uploaderId, - async () => await import(/* webpackChunkName: "uploader" */ '@hcengineering/uploader-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "uploader" */ '@hcengineering/uploader-resources') ) addLocation( recorderId, - async () => await import(/* webpackChunkName: "recorder" */ '@hcengineering/recorder-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "recorder" */ '@hcengineering/recorder-resources') ) - addLocation(mediaId, async () => await import(/* webpackChunkName: "media" */ '@hcengineering/media-resources')) + addLocation(mediaId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "media" */ '@hcengineering/media-resources')) addLocation( testManagementId, - async () => await import(/* webpackChunkName: "test-management" */ '@hcengineering/test-management-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "test-management" */ '@hcengineering/test-management-resources') ) - addLocation(surveyId, async () => await import(/* webpackChunkName: "survey" */ '@hcengineering/survey-resources')) + addLocation(surveyId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "survey" */ '@hcengineering/survey-resources')) addLocation( presenceId, - async () => await import(/* webpackChunkName: "presence" */ '@hcengineering/presence-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "presence" */ '@hcengineering/presence-resources') ) - addLocation(cardId, async () => await import(/* webpackChunkName: "card" */ '@hcengineering/card-resources')) - addLocation(chatId, async () => await import(/* webpackChunkName: "chat" */ '@hcengineering/chat-resources')) - addLocation(processId, async () => await import(/* webpackChunkName: "process" */ '@hcengineering/process-resources')) + addLocation(cardId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "card" */ '@hcengineering/card-resources')) + addLocation(chatId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "chat" */ '@hcengineering/chat-resources')) + addLocation(processId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "process" */ '@hcengineering/process-resources')) addLocation( achievementId, - async () => await import(/* webpackChunkName: "achievement" */ '@hcengineering/achievement-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "achievement" */ '@hcengineering/achievement-resources') ) addLocation( communicationId, - async () => await import(/* webpackChunkName: "communication" */ '@hcengineering/communication-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "communication" */ '@hcengineering/communication-resources') ) - addLocation(emojiId, async () => await import(/* webpackChunkName: "emoji" */ '@hcengineering/emoji-resources')) + addLocation(emojiId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "emoji" */ '@hcengineering/emoji-resources')) if ((config.BILLING_URL ?? '') !== '') { addLocation( billingId, - async () => await import(/* webpackChunkName: "billing" */ '@hcengineering/billing-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "billing" */ '@hcengineering/billing-resources') ) } addLocation( hulyMailId, - async () => await import(/* webpackChunkName: "hulyMail" */ '@hcengineering/huly-mail-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "hulyMail" */ '@hcengineering/huly-mail-resources') ) addLocation( aiAssistantId, - async () => await import(/* webpackChunkName: "ai-assistant" */ '@hcengineering/ai-assistant-resources') + async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "ai-assistant" */ '@hcengineering/ai-assistant-resources') ) - addLocation(inboxId, async () => await import(/* webpackChunkName: "inbox" */ '@hcengineering/inbox-resources')) - addLocation(ratingId, async () => await import(/* webpackChunkName: "rating" */ '@hcengineering/rating-resources')) + addLocation(inboxId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "inbox" */ '@hcengineering/inbox-resources')) + addLocation(ratingId, async () => await import(/* webpackMode: "eager" */ /* webpackChunkName: "rating" */ '@hcengineering/rating-resources')) setMetadata(client.metadata.FilterModel, 'ui') setMetadata(client.metadata.ExtraFilter, disabledFeatures) diff --git a/foundations/utils/packages/platform-rig/bin/compile.js b/foundations/utils/packages/platform-rig/bin/compile.js index 2136c3620bb..2bf924b0b7a 100755 --- a/foundations/utils/packages/platform-rig/bin/compile.js +++ b/foundations/utils/packages/platform-rig/bin/compile.js @@ -168,7 +168,16 @@ switch (args[0]) { default: { let st = performance.now() const filesToTranspile = collectFiles(join(process.cwd(), 'src')) - Promise.all([performESBuild(filesToTranspile), validateTSC()]).then(() => { + const skipValidate = process.env.SKIP_VALIDATE === 'true' || args.includes('--fast') + + const tasks = [performESBuild(filesToTranspile)] + if (!skipValidate) { + tasks.push(validateTSC()) + } else { + console.log('Skipping TSC validation...') + } + + Promise.all(tasks).then(() => { console.log('Full build time: ', Math.round((performance.now() - st) * 100) / 100) }) break