diff --git a/package.json b/package.json index c288ead..0e5c707 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@sapphire/docusaurus-plugin-npm2yarn2pnpm": "^1.1.4", "ajv": "^8.12.0", "clsx": "^1.2.1", - "krog": "^1.2.0", + "krog": "^1.3.0", "prism-react-renderer": "^1.3.5", "react": "^17.0.2", "react-dom": "^17.0.2", diff --git a/packages/client/src/lib/client.plugins.spec.ts b/packages/client/src/lib/client.plugins.spec.ts index f82828b..6751359 100644 --- a/packages/client/src/lib/client.plugins.spec.ts +++ b/packages/client/src/lib/client.plugins.spec.ts @@ -40,3 +40,35 @@ test('allow providing hooks via plugins', (done) => { client.get('players').get('1').get('name').set('Patrick', { owner: 'test' }); }); + +test('allow providing hooks via the intercept function', (done) => { + // does the same as the previous test, but uses the intercept function instead of plugins + + const socketClient: SocketClient = { + onConnect(connect) { + setTimeout(connect); + }, + onDisconnect() {}, + off() {}, + on() {}, + send() {}, + close() {}, + }; + const store = createStore(); + const client = SocketDBClient({ socketClient, store }); + + client.intercept('client:firstConnect', () => { + expect(true); + }); + + client.intercept('client:set', ({ path, value, meta }) => { + // note: errors here will not throw, + // because they are catched by the hooks system + expect(path).toEqual('players/1/name'); + expect(value).toEqual('Patrick'); + expect(meta).toEqual({ owner: 'test' }); + done(); + }); + + client.get('players').get('1').get('name').set('Patrick', { owner: 'test' }); +}); diff --git a/packages/client/src/lib/client.ts b/packages/client/src/lib/client.ts index d8be88a..28a85dd 100644 --- a/packages/client/src/lib/client.ts +++ b/packages/client/src/lib/client.ts @@ -30,6 +30,10 @@ import { createWebsocketClient } from './socket-implementation/websocketClient'; export type SocketDBClientAPI = { disconnect: () => void; + intercept: ( + hook: Hook, + callback: ClientHooks[Hook] + ) => () => void; } & ChainReference; type Unsubscriber = () => void; @@ -359,6 +363,7 @@ export function SocketDBClient({ return { ...get(''), + intercept: hooks.register, disconnect() { connection.close(); }, diff --git a/packages/server/src/lib/server.plugins.spec.ts b/packages/server/src/lib/server.plugins.spec.ts index 7ed39ac..30de194 100644 --- a/packages/server/src/lib/server.plugins.spec.ts +++ b/packages/server/src/lib/server.plugins.spec.ts @@ -46,3 +46,44 @@ test('allows providing hooks via plugins', (done) => { done(); }, 10); }); + +test('allows providing hooks via the intercept function', (done) => { + // does the same as the previous test, but uses the intercept function instead of plugins + + const store = createStore(); + const time = new Date().getTime(); + const server = SocketDBServer({ + store, + socketServer: { + listen() {}, + onConnection() {}, + }, + }); + + server.intercept('server:update', ({ data }, { client }) => { + // when update is called manually, client has no id + expect(client.id).toBe(null); + return { + data: { + value: data.value, + meta: { + ...data.meta, + updated: time, + }, + }, + }; + }); + + server.update( + nodeify({ + players: { 1: { name: 'Arnold' } }, + }) + ); + + setTimeout(() => { + // Note: jest errors are catched by socketdb and prevent the store from being updated + expect(store.get('players/1/name')).toEqual({ value: 'Arnold' }); + expect(store.get()?.meta).toEqual({ updated: time }); + done(); + }, 10); +}); diff --git a/packages/server/src/lib/server.ts b/packages/server/src/lib/server.ts index f2dfb6a..6974ca4 100644 --- a/packages/server/src/lib/server.ts +++ b/packages/server/src/lib/server.ts @@ -42,6 +42,10 @@ export type SocketDBServerDataAPI = { export type SocketDBServerAPI = SocketDBServerDataAPI & { listen: (port?: number, callback?: () => void) => void; + intercept: >( + hook: Hook, + callback: ServerHooks[Hook] + ) => () => void; }; /** @@ -429,6 +433,7 @@ export function SocketDBServer({ listen(port); return { ...api, + intercept: hooks.register, listen() { console.warn('No-op. Turn off autoListen to use the listen() method.'); }, @@ -437,6 +442,7 @@ export function SocketDBServer({ return { listen, + intercept: hooks.register, ...api, }; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c80fc8e..f918194 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,7 +39,7 @@ specifiers: is-ci: ^3.0.1 jest: 28.1.1 jest-environment-jsdom: 28.1.1 - krog: ^1.2.0 + krog: ^1.3.0 lint-staged: ^13.1.0 nx: 15.5.3 prettier: ^2.8.3 @@ -54,14 +54,14 @@ specifiers: dependencies: '@docusaurus/core': 2.0.0-rc.1_er5cmp5kqoo57sb6filwdh3vee - '@docusaurus/preset-classic': 2.0.0-rc.1_jmit3tp35efqsvbg4mwpwspzga - '@emotion/react': 11.10.5_64k6h7xsf5jw26ymy7ush5uuyi - '@emotion/styled': 11.10.5_ix4t66qa52ydagavywmj5pxy2q + '@docusaurus/preset-classic': 2.0.0-rc.1_gnhoevaoajy2wxrdnf3t4pkgzm + '@emotion/react': 11.10.5_ytirubcwu546rxdhhbvujjk4cm + '@emotion/styled': 11.10.5_2w5ykr5ckbd2qg2tjqzxx5xlv4 '@mdx-js/react': 1.6.22_react@17.0.2 '@sapphire/docusaurus-plugin-npm2yarn2pnpm': 1.1.4 ajv: 8.12.0 clsx: 1.2.1 - krog: 1.2.0 + krog: 1.3.0 prism-react-renderer: 1.3.5_react@17.0.2 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 @@ -79,7 +79,7 @@ devDependencies: '@nrwl/jest': 15.5.3_tkto5kg5un3dj2ad2m3ozofpky '@nrwl/js': 15.5.3_3f376xxrrncrbascgjk7g37s3i '@nrwl/linter': 15.5.3_mnamunwjp3xbec6gzpco2jsp4e - '@nrwl/rollup': 15.5.3_pae3h7cy7p4tb3y4ygquf7mvjy + '@nrwl/rollup': 15.5.3_3g62fp6dubzpxctgvuhqkvfl7m '@nrwl/workspace': 15.5.3_ru3a6u6i5jfe3w3i7orrmgwxwa '@nx-plus/docusaurus': 15.0.0-rc.0_d2grojlgdhpbyad3iy5j2fvepi '@types/jest': 28.1.1 @@ -98,7 +98,7 @@ devDependencies: lint-staged: 13.1.0 nx: 15.5.3 prettier: 2.8.3 - ts-jest: 28.0.5_7fcfng4b65nlbamylqx3bgeyaq + ts-jest: 28.0.5_gubetjn2vfh5vkfgj32ydodlv4 ts-node: 10.9.1_rhpwi32gjip3gggyfzgffz3q2q typescript: 4.8.4 @@ -112,7 +112,7 @@ packages: '@algolia/autocomplete-shared': 1.7.4 dev: false - /@algolia/autocomplete-preset-algolia/1.7.4_dk4ct527ug5whbfokpeal2wzha: + /@algolia/autocomplete-preset-algolia/1.7.4_uytuezmmdeeyz3ivurw7ma5nbe: resolution: { integrity: sha512-s37hrvLEIfcmKY8VU9LsAXgm2yfmkdHT3DnA3SgHaY93yjZ2qL57wzb5QweVkYuEBZkT2PIREvRoLXC2sxTbpQ==, @@ -122,7 +122,7 @@ packages: algoliasearch: '>= 4.9.1 < 6' dependencies: '@algolia/autocomplete-shared': 1.7.4 - '@algolia/client-search': 4.14.3 + '@algolia/client-search': 4.16.0 algoliasearch: 4.14.3 dev: false @@ -149,6 +149,13 @@ packages: } dev: false + /@algolia/cache-common/4.16.0: + resolution: + { + integrity: sha512-4iHjkSYQYw46pITrNQgXXhvUmcekI8INz1m+SzmqLX8jexSSy4Ky4zfGhZzhhhLHXUP3+x/PK/c0qPjxEvRwKQ==, + } + dev: false + /@algolia/cache-in-memory/4.14.3: resolution: { @@ -191,6 +198,16 @@ packages: '@algolia/transporter': 4.14.3 dev: false + /@algolia/client-common/4.16.0: + resolution: + { + integrity: sha512-QVdR4019ukBH6f5lFr27W60trRxQF1SfS1qo0IP6gjsKhXhUVJuHxOCA6ArF87jrNkeuHEoRoDU+GlvaecNo8g==, + } + dependencies: + '@algolia/requester-common': 4.16.0 + '@algolia/transporter': 4.16.0 + dev: false + /@algolia/client-personalization/4.14.3: resolution: { @@ -213,6 +230,17 @@ packages: '@algolia/transporter': 4.14.3 dev: false + /@algolia/client-search/4.16.0: + resolution: + { + integrity: sha512-xsfrAE1jO/JDh1wFrRz+alVyW+aA6qnkzmbWWWZWEgVF3EaFqzIf9r1l/aDtDdBtNTNhX9H3Lg31+BRtd5izQA==, + } + dependencies: + '@algolia/client-common': 4.16.0 + '@algolia/requester-common': 4.16.0 + '@algolia/transporter': 4.16.0 + dev: false + /@algolia/events/4.0.1: resolution: { @@ -227,6 +255,13 @@ packages: } dev: false + /@algolia/logger-common/4.16.0: + resolution: + { + integrity: sha512-U9H8uCzSDuePJmbnjjTX21aPDRU6x74Tdq3dJmdYu2+pISx02UeBJm4kSgc9RW5jcR5j35G9gnjHY9Q3ngWbyQ==, + } + dev: false + /@algolia/logger-console/4.14.3: resolution: { @@ -252,6 +287,13 @@ packages: } dev: false + /@algolia/requester-common/4.16.0: + resolution: + { + integrity: sha512-3Zmcs/iMubcm4zqZ3vZG6Zum8t+hMWxGMzo0/uY2BD8o9q5vMxIYI0c4ocdgQjkXcix189WtZNkgjSOBzSbkdw==, + } + dev: false + /@algolia/requester-node-http/4.14.3: resolution: { @@ -272,6 +314,17 @@ packages: '@algolia/requester-common': 4.14.3 dev: false + /@algolia/transporter/4.16.0: + resolution: + { + integrity: sha512-H9BVB2EAjT65w7XGBNf5drpsW39x2aSZ942j4boSAAJPPlLmjtj5IpAP7UAtsV8g9Beslonh0bLa1XGmE/P0BA==, + } + dependencies: + '@algolia/cache-common': 4.16.0 + '@algolia/logger-common': 4.16.0 + '@algolia/requester-common': 4.16.0 + dev: false + /@ampproject/remapping/2.2.0: resolution: { @@ -291,6 +344,15 @@ packages: dependencies: '@babel/highlight': 7.18.6 + /@babel/code-frame/7.21.4: + resolution: + { + integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/highlight': 7.18.6 + /@babel/compat-data/7.20.10: resolution: { @@ -298,6 +360,13 @@ packages: } engines: { node: '>=6.9.0' } + /@babel/compat-data/7.21.4: + resolution: + { + integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==, + } + engines: { node: '>=6.9.0' } + /@babel/core/7.12.9: resolution: { @@ -350,6 +419,31 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core/7.21.4: + resolution: + { + integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@ampproject/remapping': 2.2.0 + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.4 + '@babel/helper-compilation-targets': 7.21.4_@babel+core@7.21.4 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helpers': 7.21.0 + '@babel/parser': 7.21.4 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.4 + '@babel/types': 7.21.4 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + /@babel/generator/7.20.7: resolution: { @@ -361,6 +455,18 @@ packages: '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 + /@babel/generator/7.21.4: + resolution: + { + integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/types': 7.21.4 + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 + jsesc: 2.5.2 + /@babel/helper-annotate-as-pure/7.18.6: resolution: { @@ -398,6 +504,22 @@ packages: lru-cache: 5.1.1 semver: 6.3.0 + /@babel/helper-compilation-targets/7.21.4_@babel+core@7.21.4: + resolution: + { + integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.21.4 + '@babel/core': 7.21.4 + '@babel/helper-validator-option': 7.21.0 + browserslist: 4.21.5 + lru-cache: 5.1.1 + semver: 6.3.0 + /@babel/helper-create-class-features-plugin/7.20.12_@babel+core@7.20.12: resolution: { @@ -480,6 +602,16 @@ packages: '@babel/template': 7.20.7 '@babel/types': 7.20.7 + /@babel/helper-function-name/7.21.0: + resolution: + { + integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.21.4 + /@babel/helper-hoist-variables/7.18.6: resolution: { @@ -508,6 +640,15 @@ packages: dependencies: '@babel/types': 7.20.7 + /@babel/helper-module-imports/7.21.4: + resolution: + { + integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/types': 7.21.4 + /@babel/helper-module-transforms/7.20.11: resolution: { @@ -526,6 +667,24 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-module-transforms/7.21.2: + resolution: + { + integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-module-imports': 7.21.4 + '@babel/helper-simple-access': 7.20.2 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.4 + '@babel/types': 7.21.4 + transitivePeerDependencies: + - supports-color + /@babel/helper-optimise-call-expression/7.18.6: resolution: { @@ -634,6 +793,13 @@ packages: } engines: { node: '>=6.9.0' } + /@babel/helper-validator-option/7.21.0: + resolution: + { + integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==, + } + engines: { node: '>=6.9.0' } + /@babel/helper-wrap-function/7.20.5: resolution: { @@ -662,6 +828,19 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helpers/7.21.0: + resolution: + { + integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.4 + '@babel/types': 7.21.4 + transitivePeerDependencies: + - supports-color + /@babel/highlight/7.18.6: resolution: { @@ -683,6 +862,16 @@ packages: dependencies: '@babel/types': 7.20.7 + /@babel/parser/7.21.4: + resolution: + { + integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==, + } + engines: { node: '>=6.0.0' } + hasBin: true + dependencies: + '@babel/types': 7.21.4 + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.20.12: resolution: { @@ -1086,6 +1275,19 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: false + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.21.4: + resolution: + { + integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.12: resolution: { @@ -1969,6 +2171,26 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse/7.21.4: + resolution: + { + integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.4 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.21.4 + '@babel/types': 7.21.4 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + /@babel/types/7.20.7: resolution: { @@ -1980,6 +2202,17 @@ packages: '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 + /@babel/types/7.21.4: + resolution: + { + integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==, + } + engines: { node: '>=6.9.0' } + dependencies: + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + /@bcoe/v8-coverage/0.2.3: resolution: { @@ -2233,7 +2466,7 @@ packages: } dev: false - /@docsearch/react/3.3.2_p2wvewccyj6enzdqwvxe7poqlq: + /@docsearch/react/3.3.2_nyp5c3gpsxwleozexl6x3cat34: resolution: { integrity: sha512-ugILab2TYKSh6IEHf6Z9xZbOovsYbsdfo60PBj+Bw+oMJ1MHJ7pBt1TTcmPki1hSgg8mysgKy2hDiVdPm7XWSQ==, @@ -2251,7 +2484,7 @@ packages: optional: true dependencies: '@algolia/autocomplete-core': 1.7.4 - '@algolia/autocomplete-preset-algolia': 1.7.4_dk4ct527ug5whbfokpeal2wzha + '@algolia/autocomplete-preset-algolia': 1.7.4_uytuezmmdeeyz3ivurw7ma5nbe '@docsearch/css': 3.3.2 algoliasearch: 4.14.3 react: 17.0.2 @@ -2744,7 +2977,7 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic/2.0.0-rc.1_jmit3tp35efqsvbg4mwpwspzga: + /@docusaurus/preset-classic/2.0.0-rc.1_gnhoevaoajy2wxrdnf3t4pkgzm: resolution: { integrity: sha512-5jjTVZkhArjyoNHwCI9x4PSG0zPmBJILjZLVrxPcHpm/K0ltkYcp6J3GxYpf5EbMuOh5+yCWM63cSshGcNOo3Q==, @@ -2764,7 +2997,7 @@ packages: '@docusaurus/plugin-sitemap': 2.0.0-rc.1_tnqb536qlio3jyiqw4lwieffna '@docusaurus/theme-classic': 2.0.0-rc.1_tnqb536qlio3jyiqw4lwieffna '@docusaurus/theme-common': 2.0.0-rc.1_er5cmp5kqoo57sb6filwdh3vee - '@docusaurus/theme-search-algolia': 2.0.0-rc.1_e4asmpyk5qzxabqwxadheba3na + '@docusaurus/theme-search-algolia': 2.0.0-rc.1_wgqc7d4gso7qsszjqg3rwpeh44 '@docusaurus/types': 2.0.0-rc.1_sfoxds7t5ydpegc3knd667wn6m react: 17.0.2 react-dom: 17.0.2_react@17.0.2 @@ -2797,7 +3030,7 @@ packages: peerDependencies: react: '*' dependencies: - '@types/react': 18.0.27 + '@types/react': 18.0.32 prop-types: 15.8.1 react: 17.0.2 dev: false @@ -2902,7 +3135,7 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia/2.0.0-rc.1_e4asmpyk5qzxabqwxadheba3na: + /@docusaurus/theme-search-algolia/2.0.0-rc.1_wgqc7d4gso7qsszjqg3rwpeh44: resolution: { integrity: sha512-H5yq6V/B4qo6GZrDKMbeSpk3T9e9K2MliDzLonRu0w3QHW9orVGe0c/lZvRbGlDZjnsOo7XGddhXXIDWGwnpaA==, @@ -2912,7 +3145,7 @@ packages: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docsearch/react': 3.3.2_p2wvewccyj6enzdqwvxe7poqlq + '@docsearch/react': 3.3.2_nyp5c3gpsxwleozexl6x3cat34 '@docusaurus/core': 2.0.0-rc.1_er5cmp5kqoo57sb6filwdh3vee '@docusaurus/logger': 2.0.0-rc.1 '@docusaurus/plugin-content-docs': 2.0.0-rc.1_tnqb536qlio3jyiqw4lwieffna @@ -3079,7 +3312,7 @@ packages: - webpack-cli dev: false - /@emotion/babel-plugin/11.10.5_@babel+core@7.20.12: + /@emotion/babel-plugin/11.10.5_@babel+core@7.21.4: resolution: { integrity: sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==, @@ -3087,9 +3320,9 @@ packages: peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.4 '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.4 '@babel/runtime': 7.20.7 '@emotion/hash': 0.9.0 '@emotion/memoize': 0.8.0 @@ -3138,7 +3371,7 @@ packages: } dev: false - /@emotion/react/11.10.5_64k6h7xsf5jw26ymy7ush5uuyi: + /@emotion/react/11.10.5_ytirubcwu546rxdhhbvujjk4cm: resolution: { integrity: sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==, @@ -3153,9 +3386,9 @@ packages: '@types/react': optional: true dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.4 '@babel/runtime': 7.20.7 - '@emotion/babel-plugin': 11.10.5_@babel+core@7.20.12 + '@emotion/babel-plugin': 11.10.5_@babel+core@7.21.4 '@emotion/cache': 11.10.5 '@emotion/serialize': 1.1.1 '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@17.0.2 @@ -3185,7 +3418,7 @@ packages: } dev: false - /@emotion/styled/11.10.5_ix4t66qa52ydagavywmj5pxy2q: + /@emotion/styled/11.10.5_2w5ykr5ckbd2qg2tjqzxx5xlv4: resolution: { integrity: sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==, @@ -3201,11 +3434,11 @@ packages: '@types/react': optional: true dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.4 '@babel/runtime': 7.20.7 - '@emotion/babel-plugin': 11.10.5_@babel+core@7.20.12 + '@emotion/babel-plugin': 11.10.5_@babel+core@7.21.4 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.5_64k6h7xsf5jw26ymy7ush5uuyi + '@emotion/react': 11.10.5_ytirubcwu546rxdhhbvujjk4cm '@emotion/serialize': 1.1.1 '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@17.0.2 '@emotion/utils': 1.2.0 @@ -3936,7 +4169,7 @@ packages: - typescript dev: true - /@nrwl/rollup/15.5.3_pae3h7cy7p4tb3y4ygquf7mvjy: + /@nrwl/rollup/15.5.3_3g62fp6dubzpxctgvuhqkvfl7m: resolution: { integrity: sha512-fARI4ecPQkfwOS3nYa9F1ybmIr4zwig32OBOdBUgtNP7pi3jD17mRiRveJ7aiBFZhRwhZWxl8wku1OH9qhu84w==, @@ -3945,7 +4178,7 @@ packages: '@nrwl/devkit': 15.5.3_nx@15.5.3+typescript@4.8.4 '@nrwl/js': 15.5.3_3f376xxrrncrbascgjk7g37s3i '@nrwl/workspace': 15.5.3_ru3a6u6i5jfe3w3i7orrmgwxwa - '@rollup/plugin-babel': 5.3.1_3dsfpkpoyvuuxyfgdbpn4j4uzm + '@rollup/plugin-babel': 5.3.1_b6cdhqm2xsfe2bpl424qdsl4ei '@rollup/plugin-commonjs': 20.0.0_rollup@2.79.1 '@rollup/plugin-image': 2.1.1_rollup@2.79.1 '@rollup/plugin-json': 4.1.0_rollup@2.79.1 @@ -4081,7 +4314,7 @@ packages: } dev: false - /@rollup/plugin-babel/5.3.1_3dsfpkpoyvuuxyfgdbpn4j4uzm: + /@rollup/plugin-babel/5.3.1_b6cdhqm2xsfe2bpl424qdsl4ei: resolution: { integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==, @@ -4095,7 +4328,7 @@ packages: '@types/babel__core': optional: true dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.4 '@babel/helper-module-imports': 7.18.6 '@rollup/pluginutils': 3.1.0_rollup@2.79.1 rollup: 2.79.1 @@ -4913,6 +5146,17 @@ packages: '@types/scheduler': 0.16.2 csstype: 3.1.1 + /@types/react/18.0.32: + resolution: + { + integrity: sha512-gYGXdtPQ9Cj0w2Fwqg5/ak6BcK3Z15YgjSqtyDizWUfx7mQ8drs0NBUzRRsAdoFVTO8kJ8L2TL8Skm7OFPnLUw==, + } + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.3 + csstype: 3.1.2 + dev: false + /@types/resolve/1.17.1: resolution: { @@ -4944,6 +5188,13 @@ packages: integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==, } + /@types/scheduler/0.16.3: + resolution: + { + integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==, + } + dev: false + /@types/semver/7.3.13: resolution: { @@ -6181,6 +6432,19 @@ packages: node-releases: 2.0.8 update-browserslist-db: 1.0.10_browserslist@4.21.4 + /browserslist/4.21.5: + resolution: + { + integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==, + } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true + dependencies: + caniuse-lite: 1.0.30001473 + electron-to-chromium: 1.4.348 + node-releases: 2.0.10 + update-browserslist-db: 1.0.10_browserslist@4.21.5 + /bs-logger/0.2.6: resolution: { @@ -6343,6 +6607,12 @@ packages: integrity: sha512-fEoga4PrImGcwUUGEol/PoFCSBnSkA9drgdkxXkJLsUBOnJ8rs3zDv6ApqYXGQFOyMPsjh79naWhF4DAxbF8rw==, } + /caniuse-lite/1.0.30001473: + resolution: + { + integrity: sha512-ewDad7+D2vlyy+E4UJuVfiBsU69IL+8oVmTuZnH5Q6CIUbxNfI50uVpRHbUPDD6SUaN2o0Lh4DhTrvLG/Tn1yg==, + } + /ccount/1.1.0: resolution: { @@ -7322,6 +7592,13 @@ packages: integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==, } + /csstype/3.1.2: + resolution: + { + integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==, + } + dev: false + /cz-git/1.4.1: resolution: { @@ -7782,6 +8059,12 @@ packages: integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==, } + /electron-to-chromium/1.4.348: + resolution: + { + integrity: sha512-gM7TdwuG3amns/1rlgxMbeeyNoBFPa+4Uu0c7FeROWh4qWmvSOnvcslKmWy51ggLKZ2n/F/4i2HJ+PVNxH9uCQ==, + } + /emittery/0.10.2: resolution: { @@ -11027,10 +11310,10 @@ packages: engines: { node: '>= 8' } dev: false - /krog/1.2.0: + /krog/1.3.0: resolution: { - integrity: sha512-bQZkkwCbRuxaR4BTLVU8kS3VtB8iR7TUseB5TxFbKGmQUWMD9B0uNi5vNiBPHpWWoHI915IW8numwNseNtDJCg==, + integrity: sha512-1oa9zhQnG0cigGIZkAAwq8oSlPe89zbCWMRGkna2YvPcqrXtLVy8CgwdHvejji2W5/rcB2l8UrzVFNUvfpkEVA==, } dev: false @@ -11827,6 +12110,12 @@ packages: } dev: true + /node-releases/2.0.10: + resolution: + { + integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==, + } + /node-releases/2.0.8: resolution: { @@ -15315,7 +15604,7 @@ packages: } dev: false - /ts-jest/28.0.5_7fcfng4b65nlbamylqx3bgeyaq: + /ts-jest/28.0.5_gubetjn2vfh5vkfgj32ydodlv4: resolution: { integrity: sha512-Sx9FyP9pCY7pUzQpy4FgRZf2bhHY3za576HMKJFs+OnQ9jS96Du5vNsDKkyedQkik+sEabbKAnCliv9BEsHZgQ==, @@ -15336,7 +15625,7 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.4 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 jest: 28.1.1_lpnbhgxso4u2juc7wocetwmymy @@ -15735,6 +16024,19 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 + /update-browserslist-db/1.0.10_browserslist@4.21.5: + resolution: + { + integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==, + } + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.5 + escalade: 3.1.1 + picocolors: 1.0.0 + /update-notifier/5.1.0: resolution: {