diff --git a/.github/workflows/beta_pull_request.yml b/.github/workflows/beta_pull_request.yml index 84ba2a644..448f8d90e 100644 --- a/.github/workflows/beta_pull_request.yml +++ b/.github/workflows/beta_pull_request.yml @@ -40,12 +40,12 @@ jobs: DOTENV_CONFIG_PATH: .env.beta run: yarn ycai build - - name: Deploy YCAI Dashboard - uses: burnett01/rsync-deployments@5.1 - with: - switches: -avzr --delete - path: ./YCAI/build/dashboard/ - remote_path: ~/beta-studio/ - remote_host: ${{ secrets.YCAI_BETA_DEPLOY_HOST }} - remote_user: ${{ secrets.YCAI_DEPLOY_USER }} - remote_key: ${{ secrets.YCAI_DEPLOY_KEY }} + # - name: Deploy YCAI Dashboard + # uses: burnett01/rsync-deployments@5.1 + # with: + # switches: -avzr --delete + # path: ./YCAI/build/dashboard/ + # remote_path: ~/beta-studio/ + # remote_host: ${{ secrets.YCAI_BETA_DEPLOY_HOST }} + # remote_user: ${{ secrets.YCAI_DEPLOY_USER }} + # remote_key: ${{ secrets.YCAI_DEPLOY_KEY }} diff --git a/.github/workflows/build_from_zip.yml b/.github/workflows/build_from_zip.yml new file mode 100644 index 000000000..9cba694dd --- /dev/null +++ b/.github/workflows/build_from_zip.yml @@ -0,0 +1,47 @@ +name: TrEx - Build from ZIP + +on: + push: + branches: + - daily + - fix/* + - feat/* + +jobs: + release: + name: Release + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [16.x] + services: + mongo-db: + image: mongo:4.2 + ports: + - 27017:27017 + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Setup Node.js + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node-version }} + cache: 'yarn' + cache-dependency-path: yarn.lock + + - name: Install dependencies + run: yarn + + - name: Build ZIP for Firefox + run: ./scripts/shrink.sh + + - name: Log in to registry + # This is where you will update the personal access token to GITHUB_TOKEN + run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin + + - name: Test ZIP with docker + run: | + docker build -f from-zip.Dockerfile -t build-from-zip . diff --git a/.github/workflows/daily_release.yml b/.github/workflows/daily_release.yml index 5fbcef9b0..dc80dccb2 100644 --- a/.github/workflows/daily_release.yml +++ b/.github/workflows/daily_release.yml @@ -47,12 +47,12 @@ jobs: - name: Release Version run: yarn release-it --no-github.release --release-version - - name: Deploy YCAI Dashboard - uses: burnett01/rsync-deployments@5.1 - with: - switches: -avzr --delete - path: ./platforms/ycai/studio/build/dashboard/ - remote_path: ~/staging-studio/ - remote_host: ${{ secrets.YCAI_DAILY_DEPLOY_HOST }} - remote_user: ${{ secrets.YCAI_DEPLOY_USER }} - remote_key: ${{ secrets.YCAI_DEPLOY_KEY }} + # - name: Deploy YCAI Dashboard + # uses: burnett01/rsync-deployments@5.1 + # with: + # switches: -avzr --delete + # path: ./platforms/ycai/studio/build/dashboard/ + # remote_path: ~/staging-studio/ + # remote_host: ${{ secrets.YCAI_DAILY_DEPLOY_HOST }} + # remote_user: ${{ secrets.YCAI_DEPLOY_USER }} + # remote_key: ${{ secrets.YCAI_DEPLOY_KEY }} diff --git a/.github/workflows/docs_pull_request.yml b/.github/workflows/docs_pull_request.yml index 12e6f1c0a..180f86612 100644 --- a/.github/workflows/docs_pull_request.yml +++ b/.github/workflows/docs_pull_request.yml @@ -1,18 +1,17 @@ -name: TRex - Release "daily" +name: TRex - Docs on: push: branches: - daily - docs/** + - feat/** - fix/** - refactor/** paths: - "docs/**" - - "platforms/guardoni/docs/**" - - "platforms/tktrex/docs/**" - - "platforms/yttrex/docs/**" - - "platforms/ycai/docs/**" + - "packages/**" + - "platforms/**" jobs: release: @@ -38,9 +37,6 @@ jobs: - name: Install dependencies run: yarn - # - name: Test project - # run: yarn test - - name: Build Docs env: DEBUG: "@trex*,@YCAI*" diff --git a/.github/workflows/master_release.yml b/.github/workflows/master_release.yml index b9334c4ac..81845e8bc 100644 --- a/.github/workflows/master_release.yml +++ b/.github/workflows/master_release.yml @@ -155,17 +155,17 @@ jobs: git config --global user.name "Team - Tracking Exposed" yarn release-it --ci - - name: Build Dashboard - env: - DOTENV_CONFIG_PATH: .env - run: yarn ycai build - - - name: Deploy YCAI Dashboard - uses: burnett01/rsync-deployments@5.1 - with: - switches: -avzr --delete - path: ./platforms/ycai/studio/build/dashboard/ - remote_path: ~/studio-website/ - remote_host: ${{ secrets.YCAI_DEPLOY_HOST }} - remote_user: ${{ secrets.YCAI_DEPLOY_USER }} - remote_key: ${{ secrets.YCAI_DEPLOY_KEY }} + # - name: Build Dashboard + # env: + # DOTENV_CONFIG_PATH: .env + # run: yarn ycai build + + # - name: Deploy YCAI Dashboard + # uses: burnett01/rsync-deployments@5.1 + # with: + # switches: -avzr --delete + # path: ./platforms/ycai/studio/build/dashboard/ + # remote_path: ~/studio-website/ + # remote_host: ${{ secrets.YCAI_DEPLOY_HOST }} + # remote_user: ${{ secrets.YCAI_DEPLOY_USER }} + # remote_key: ${{ secrets.YCAI_DEPLOY_KEY }} diff --git a/.gitignore b/.gitignore index 3e7f92b9d..59352084a 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,6 @@ coverage # let everyone use their own workspace config *.code-workspace + +# auto generated docs +typedoc diff --git a/.yarn/cache/@docusaurus-core-npm-2.1.0-ee70472f68-c8f12d87d0.zip b/.yarn/cache/@docusaurus-core-npm-2.2.0-7ed3f550ad-ff47e6cf85.zip similarity index 81% rename from .yarn/cache/@docusaurus-core-npm-2.1.0-ee70472f68-c8f12d87d0.zip rename to .yarn/cache/@docusaurus-core-npm-2.2.0-7ed3f550ad-ff47e6cf85.zip index be9e5f6a4..3869b1470 100644 Binary files a/.yarn/cache/@docusaurus-core-npm-2.1.0-ee70472f68-c8f12d87d0.zip and b/.yarn/cache/@docusaurus-core-npm-2.2.0-7ed3f550ad-ff47e6cf85.zip differ diff --git a/.yarn/cache/@docusaurus-cssnano-preset-npm-2.1.0-a1a0dadc88-3589dcd8dc.zip b/.yarn/cache/@docusaurus-cssnano-preset-npm-2.2.0-9c364c3f55-eff9707414.zip similarity index 91% rename from .yarn/cache/@docusaurus-cssnano-preset-npm-2.1.0-a1a0dadc88-3589dcd8dc.zip rename to .yarn/cache/@docusaurus-cssnano-preset-npm-2.2.0-9c364c3f55-eff9707414.zip index 274201ce2..66e421eea 100644 Binary files a/.yarn/cache/@docusaurus-cssnano-preset-npm-2.1.0-a1a0dadc88-3589dcd8dc.zip and b/.yarn/cache/@docusaurus-cssnano-preset-npm-2.2.0-9c364c3f55-eff9707414.zip differ diff --git a/.yarn/cache/@docusaurus-logger-npm-2.1.0-56726a5a69-af13df70b6.zip b/.yarn/cache/@docusaurus-logger-npm-2.2.0-a09ed94856-b3ce6e1872.zip similarity index 84% rename from .yarn/cache/@docusaurus-logger-npm-2.1.0-56726a5a69-af13df70b6.zip rename to .yarn/cache/@docusaurus-logger-npm-2.2.0-a09ed94856-b3ce6e1872.zip index fe9bf2085..6dec6a112 100644 Binary files a/.yarn/cache/@docusaurus-logger-npm-2.1.0-56726a5a69-af13df70b6.zip and b/.yarn/cache/@docusaurus-logger-npm-2.2.0-a09ed94856-b3ce6e1872.zip differ diff --git a/.yarn/cache/@docusaurus-mdx-loader-npm-2.1.0-8a33968e6f-799982ad50.zip b/.yarn/cache/@docusaurus-mdx-loader-npm-2.2.0-3ea95fbe1a-fee586498f.zip similarity index 60% rename from .yarn/cache/@docusaurus-mdx-loader-npm-2.1.0-8a33968e6f-799982ad50.zip rename to .yarn/cache/@docusaurus-mdx-loader-npm-2.2.0-3ea95fbe1a-fee586498f.zip index 4d2e0b266..3f6ab1ab6 100644 Binary files a/.yarn/cache/@docusaurus-mdx-loader-npm-2.1.0-8a33968e6f-799982ad50.zip and b/.yarn/cache/@docusaurus-mdx-loader-npm-2.2.0-3ea95fbe1a-fee586498f.zip differ diff --git a/.yarn/cache/@docusaurus-module-type-aliases-npm-2.1.0-1477f1425a-229e792fbc.zip b/.yarn/cache/@docusaurus-module-type-aliases-npm-2.2.0-980617a691-ebcb9dff2f.zip similarity index 69% rename from .yarn/cache/@docusaurus-module-type-aliases-npm-2.1.0-1477f1425a-229e792fbc.zip rename to .yarn/cache/@docusaurus-module-type-aliases-npm-2.2.0-980617a691-ebcb9dff2f.zip index 999d35ffe..bf6091c30 100644 Binary files a/.yarn/cache/@docusaurus-module-type-aliases-npm-2.1.0-1477f1425a-229e792fbc.zip and b/.yarn/cache/@docusaurus-module-type-aliases-npm-2.2.0-980617a691-ebcb9dff2f.zip differ diff --git a/.yarn/cache/@docusaurus-plugin-content-blog-npm-2.1.0-0ad5c1d031-9cc47886f9.zip b/.yarn/cache/@docusaurus-plugin-content-blog-npm-2.2.0-45a3ff32b8-6d51e3b17b.zip similarity index 91% rename from .yarn/cache/@docusaurus-plugin-content-blog-npm-2.1.0-0ad5c1d031-9cc47886f9.zip rename to .yarn/cache/@docusaurus-plugin-content-blog-npm-2.2.0-45a3ff32b8-6d51e3b17b.zip index 1dd139b3d..e9a868d40 100644 Binary files a/.yarn/cache/@docusaurus-plugin-content-blog-npm-2.1.0-0ad5c1d031-9cc47886f9.zip and b/.yarn/cache/@docusaurus-plugin-content-blog-npm-2.2.0-45a3ff32b8-6d51e3b17b.zip differ diff --git a/.yarn/cache/@docusaurus-plugin-content-docs-npm-2.1.0-e33a6bac60-40100821e0.zip b/.yarn/cache/@docusaurus-plugin-content-docs-npm-2.2.0-34ac512661-3a262b49dd.zip similarity index 84% rename from .yarn/cache/@docusaurus-plugin-content-docs-npm-2.1.0-e33a6bac60-40100821e0.zip rename to .yarn/cache/@docusaurus-plugin-content-docs-npm-2.2.0-34ac512661-3a262b49dd.zip index 8de68696b..2d68d4162 100644 Binary files a/.yarn/cache/@docusaurus-plugin-content-docs-npm-2.1.0-e33a6bac60-40100821e0.zip and b/.yarn/cache/@docusaurus-plugin-content-docs-npm-2.2.0-34ac512661-3a262b49dd.zip differ diff --git a/.yarn/cache/@docusaurus-plugin-content-pages-npm-2.1.0-389ce890c5-c2fc027ce6.zip b/.yarn/cache/@docusaurus-plugin-content-pages-npm-2.1.0-389ce890c5-c2fc027ce6.zip deleted file mode 100644 index 0a6e9d8cf..000000000 Binary files a/.yarn/cache/@docusaurus-plugin-content-pages-npm-2.1.0-389ce890c5-c2fc027ce6.zip and /dev/null differ diff --git a/.yarn/cache/@docusaurus-plugin-content-pages-npm-2.2.0-c28bbe1d5e-1e22fb8deb.zip b/.yarn/cache/@docusaurus-plugin-content-pages-npm-2.2.0-c28bbe1d5e-1e22fb8deb.zip new file mode 100644 index 000000000..2ff815df9 Binary files /dev/null and b/.yarn/cache/@docusaurus-plugin-content-pages-npm-2.2.0-c28bbe1d5e-1e22fb8deb.zip differ diff --git a/.yarn/cache/@docusaurus-plugin-debug-npm-2.1.0-e919772018-e5fd1e90d8.zip b/.yarn/cache/@docusaurus-plugin-debug-npm-2.2.0-f7e34921fd-edf2a416b7.zip similarity index 92% rename from .yarn/cache/@docusaurus-plugin-debug-npm-2.1.0-e919772018-e5fd1e90d8.zip rename to .yarn/cache/@docusaurus-plugin-debug-npm-2.2.0-f7e34921fd-edf2a416b7.zip index 933c1aecb..fbce75aa4 100644 Binary files a/.yarn/cache/@docusaurus-plugin-debug-npm-2.1.0-e919772018-e5fd1e90d8.zip and b/.yarn/cache/@docusaurus-plugin-debug-npm-2.2.0-f7e34921fd-edf2a416b7.zip differ diff --git a/.yarn/cache/@docusaurus-plugin-google-analytics-npm-2.1.0-c002527eca-38949208ad.zip b/.yarn/cache/@docusaurus-plugin-google-analytics-npm-2.2.0-08f7268d9d-44ad3a6c1b.zip similarity index 77% rename from .yarn/cache/@docusaurus-plugin-google-analytics-npm-2.1.0-c002527eca-38949208ad.zip rename to .yarn/cache/@docusaurus-plugin-google-analytics-npm-2.2.0-08f7268d9d-44ad3a6c1b.zip index f255ac5ae..d32f49a96 100644 Binary files a/.yarn/cache/@docusaurus-plugin-google-analytics-npm-2.1.0-c002527eca-38949208ad.zip and b/.yarn/cache/@docusaurus-plugin-google-analytics-npm-2.2.0-08f7268d9d-44ad3a6c1b.zip differ diff --git a/.yarn/cache/@docusaurus-plugin-google-gtag-npm-2.1.0-f47ba6eddf-fdfffc37e1.zip b/.yarn/cache/@docusaurus-plugin-google-gtag-npm-2.2.0-ea719722e2-4e7d6fcc3f.zip similarity index 86% rename from .yarn/cache/@docusaurus-plugin-google-gtag-npm-2.1.0-f47ba6eddf-fdfffc37e1.zip rename to .yarn/cache/@docusaurus-plugin-google-gtag-npm-2.2.0-ea719722e2-4e7d6fcc3f.zip index a3236dbf8..db7338bd2 100644 Binary files a/.yarn/cache/@docusaurus-plugin-google-gtag-npm-2.1.0-f47ba6eddf-fdfffc37e1.zip and b/.yarn/cache/@docusaurus-plugin-google-gtag-npm-2.2.0-ea719722e2-4e7d6fcc3f.zip differ diff --git a/.yarn/cache/@docusaurus-plugin-sitemap-npm-2.1.0-a6ece1f04d-c3b8dccd86.zip b/.yarn/cache/@docusaurus-plugin-sitemap-npm-2.2.0-888eb91ae8-8ae78093d1.zip similarity index 83% rename from .yarn/cache/@docusaurus-plugin-sitemap-npm-2.1.0-a6ece1f04d-c3b8dccd86.zip rename to .yarn/cache/@docusaurus-plugin-sitemap-npm-2.2.0-888eb91ae8-8ae78093d1.zip index 410e9d4fd..e83285256 100644 Binary files a/.yarn/cache/@docusaurus-plugin-sitemap-npm-2.1.0-a6ece1f04d-c3b8dccd86.zip and b/.yarn/cache/@docusaurus-plugin-sitemap-npm-2.2.0-888eb91ae8-8ae78093d1.zip differ diff --git a/.yarn/cache/@docusaurus-preset-classic-npm-2.1.0-d002eafd42-9a7507dfc3.zip b/.yarn/cache/@docusaurus-preset-classic-npm-2.2.0-7cb6bd68bf-70214f1776.zip similarity index 84% rename from .yarn/cache/@docusaurus-preset-classic-npm-2.1.0-d002eafd42-9a7507dfc3.zip rename to .yarn/cache/@docusaurus-preset-classic-npm-2.2.0-7cb6bd68bf-70214f1776.zip index b8d37ffc9..c975deb9d 100644 Binary files a/.yarn/cache/@docusaurus-preset-classic-npm-2.1.0-d002eafd42-9a7507dfc3.zip and b/.yarn/cache/@docusaurus-preset-classic-npm-2.2.0-7cb6bd68bf-70214f1776.zip differ diff --git a/.yarn/cache/@docusaurus-theme-classic-npm-2.1.0-93bff6d503-e6c57a187e.zip b/.yarn/cache/@docusaurus-theme-classic-npm-2.2.0-e81038b103-ccfb0bef12.zip similarity index 75% rename from .yarn/cache/@docusaurus-theme-classic-npm-2.1.0-93bff6d503-e6c57a187e.zip rename to .yarn/cache/@docusaurus-theme-classic-npm-2.2.0-e81038b103-ccfb0bef12.zip index 0fb18d312..1b0e4f492 100644 Binary files a/.yarn/cache/@docusaurus-theme-classic-npm-2.1.0-93bff6d503-e6c57a187e.zip and b/.yarn/cache/@docusaurus-theme-classic-npm-2.2.0-e81038b103-ccfb0bef12.zip differ diff --git a/.yarn/cache/@docusaurus-theme-common-npm-2.1.0-d5ae2a9539-8620309cf8.zip b/.yarn/cache/@docusaurus-theme-common-npm-2.2.0-99cfc9ba27-23cbba8e7e.zip similarity index 78% rename from .yarn/cache/@docusaurus-theme-common-npm-2.1.0-d5ae2a9539-8620309cf8.zip rename to .yarn/cache/@docusaurus-theme-common-npm-2.2.0-99cfc9ba27-23cbba8e7e.zip index 62905c00c..83b743692 100644 Binary files a/.yarn/cache/@docusaurus-theme-common-npm-2.1.0-d5ae2a9539-8620309cf8.zip and b/.yarn/cache/@docusaurus-theme-common-npm-2.2.0-99cfc9ba27-23cbba8e7e.zip differ diff --git a/.yarn/cache/@docusaurus-theme-search-algolia-npm-2.1.0-ea962f25ef-cfe851c748.zip b/.yarn/cache/@docusaurus-theme-search-algolia-npm-2.2.0-13e5d8d184-42b6cb0322.zip similarity index 94% rename from .yarn/cache/@docusaurus-theme-search-algolia-npm-2.1.0-ea962f25ef-cfe851c748.zip rename to .yarn/cache/@docusaurus-theme-search-algolia-npm-2.2.0-13e5d8d184-42b6cb0322.zip index 1a722cc9b..cde6c8df5 100644 Binary files a/.yarn/cache/@docusaurus-theme-search-algolia-npm-2.1.0-ea962f25ef-cfe851c748.zip and b/.yarn/cache/@docusaurus-theme-search-algolia-npm-2.2.0-13e5d8d184-42b6cb0322.zip differ diff --git a/.yarn/cache/@docusaurus-theme-translations-npm-2.1.0-208fa00f22-26d9f2889d.zip b/.yarn/cache/@docusaurus-theme-translations-npm-2.1.0-208fa00f22-26d9f2889d.zip deleted file mode 100644 index 6e1e602cf..000000000 Binary files a/.yarn/cache/@docusaurus-theme-translations-npm-2.1.0-208fa00f22-26d9f2889d.zip and /dev/null differ diff --git a/.yarn/cache/@docusaurus-theme-translations-npm-2.2.0-8211e4b63d-7fe7d104fd.zip b/.yarn/cache/@docusaurus-theme-translations-npm-2.2.0-8211e4b63d-7fe7d104fd.zip new file mode 100644 index 000000000..6e4ec642f Binary files /dev/null and b/.yarn/cache/@docusaurus-theme-translations-npm-2.2.0-8211e4b63d-7fe7d104fd.zip differ diff --git a/.yarn/cache/@docusaurus-types-npm-2.1.0-d21f3381d8-e6112cd682.zip b/.yarn/cache/@docusaurus-types-npm-2.2.0-aeaf5e0f85-5166ca49bb.zip similarity index 59% rename from .yarn/cache/@docusaurus-types-npm-2.1.0-d21f3381d8-e6112cd682.zip rename to .yarn/cache/@docusaurus-types-npm-2.2.0-aeaf5e0f85-5166ca49bb.zip index f4090b364..88dd6658e 100644 Binary files a/.yarn/cache/@docusaurus-types-npm-2.1.0-d21f3381d8-e6112cd682.zip and b/.yarn/cache/@docusaurus-types-npm-2.2.0-aeaf5e0f85-5166ca49bb.zip differ diff --git a/.yarn/cache/@docusaurus-utils-common-npm-2.1.0-7c83c53819-b4a9282f55.zip b/.yarn/cache/@docusaurus-utils-common-npm-2.2.0-6f4e340253-05d23a2f82.zip similarity index 72% rename from .yarn/cache/@docusaurus-utils-common-npm-2.1.0-7c83c53819-b4a9282f55.zip rename to .yarn/cache/@docusaurus-utils-common-npm-2.2.0-6f4e340253-05d23a2f82.zip index 82c1fa529..1bcec38f4 100644 Binary files a/.yarn/cache/@docusaurus-utils-common-npm-2.1.0-7c83c53819-b4a9282f55.zip and b/.yarn/cache/@docusaurus-utils-common-npm-2.2.0-6f4e340253-05d23a2f82.zip differ diff --git a/.yarn/cache/@docusaurus-utils-npm-2.1.0-aff6efc19a-970c8b2716.zip b/.yarn/cache/@docusaurus-utils-npm-2.2.0-dc72b69b60-d027a6d241.zip similarity index 82% rename from .yarn/cache/@docusaurus-utils-npm-2.1.0-aff6efc19a-970c8b2716.zip rename to .yarn/cache/@docusaurus-utils-npm-2.2.0-dc72b69b60-d027a6d241.zip index 86784ab27..9fb067248 100644 Binary files a/.yarn/cache/@docusaurus-utils-npm-2.1.0-aff6efc19a-970c8b2716.zip and b/.yarn/cache/@docusaurus-utils-npm-2.2.0-dc72b69b60-d027a6d241.zip differ diff --git a/.yarn/cache/@docusaurus-utils-validation-npm-2.1.0-4f80534005-63fa924768.zip b/.yarn/cache/@docusaurus-utils-validation-npm-2.2.0-61a9a17253-a30e47cf84.zip similarity index 58% rename from .yarn/cache/@docusaurus-utils-validation-npm-2.1.0-4f80534005-63fa924768.zip rename to .yarn/cache/@docusaurus-utils-validation-npm-2.2.0-61a9a17253-a30e47cf84.zip index 6de7d33ce..15593cdc8 100644 Binary files a/.yarn/cache/@docusaurus-utils-validation-npm-2.1.0-4f80534005-63fa924768.zip and b/.yarn/cache/@docusaurus-utils-validation-npm-2.2.0-61a9a17253-a30e47cf84.zip differ diff --git a/.yarn/cache/@mxssfd-typedoc-theme-npm-1.0.3-3c5d0d44ad-a77553d759.zip b/.yarn/cache/@mxssfd-typedoc-theme-npm-1.0.3-3c5d0d44ad-a77553d759.zip new file mode 100644 index 000000000..652a01972 Binary files /dev/null and b/.yarn/cache/@mxssfd-typedoc-theme-npm-1.0.3-3c5d0d44ad-a77553d759.zip differ diff --git a/.yarn/cache/@types-dompurify-npm-2.4.0-b6ea286bda-b48cd81e99.zip b/.yarn/cache/@types-dompurify-npm-2.4.0-b6ea286bda-b48cd81e99.zip new file mode 100644 index 000000000..aeba10f97 Binary files /dev/null and b/.yarn/cache/@types-dompurify-npm-2.4.0-b6ea286bda-b48cd81e99.zip differ diff --git a/.yarn/cache/@types-trusted-types-npm-2.0.2-035cb17c5e-3371eef5f1.zip b/.yarn/cache/@types-trusted-types-npm-2.0.2-035cb17c5e-3371eef5f1.zip new file mode 100644 index 000000000..2a3bf632e Binary files /dev/null and b/.yarn/cache/@types-trusted-types-npm-2.0.2-035cb17c5e-3371eef5f1.zip differ diff --git a/.yarn/cache/acorn-globals-npm-7.0.1-97c48c0140-2a2998a547.zip b/.yarn/cache/acorn-globals-npm-7.0.1-97c48c0140-2a2998a547.zip new file mode 100644 index 000000000..f18c3d9ca Binary files /dev/null and b/.yarn/cache/acorn-globals-npm-7.0.1-97c48c0140-2a2998a547.zip differ diff --git a/.yarn/cache/acorn-npm-8.8.0-9ef399ab45-7270ca82b2.zip b/.yarn/cache/acorn-npm-8.8.1-20e4aea981-4079b67283.zip similarity index 93% rename from .yarn/cache/acorn-npm-8.8.0-9ef399ab45-7270ca82b2.zip rename to .yarn/cache/acorn-npm-8.8.1-20e4aea981-4079b67283.zip index b5376b139..5a3978125 100644 Binary files a/.yarn/cache/acorn-npm-8.8.0-9ef399ab45-7270ca82b2.zip and b/.yarn/cache/acorn-npm-8.8.1-20e4aea981-4079b67283.zip differ diff --git a/.yarn/cache/data-urls-npm-3.0.2-c8b2050319-033fc3dd0f.zip b/.yarn/cache/data-urls-npm-3.0.2-c8b2050319-033fc3dd0f.zip new file mode 100644 index 000000000..015df7be6 Binary files /dev/null and b/.yarn/cache/data-urls-npm-3.0.2-c8b2050319-033fc3dd0f.zip differ diff --git a/.yarn/cache/decimal.js-npm-10.3.1-797c736b6c-0351ac9f05.zip b/.yarn/cache/decimal.js-npm-10.3.1-797c736b6c-0351ac9f05.zip deleted file mode 100644 index 585ed75c0..000000000 Binary files a/.yarn/cache/decimal.js-npm-10.3.1-797c736b6c-0351ac9f05.zip and /dev/null differ diff --git a/.yarn/cache/decimal.js-npm-10.4.3-e7d483387c-796404dcfa.zip b/.yarn/cache/decimal.js-npm-10.4.3-e7d483387c-796404dcfa.zip new file mode 100644 index 000000000..62560bef0 Binary files /dev/null and b/.yarn/cache/decimal.js-npm-10.4.3-e7d483387c-796404dcfa.zip differ diff --git a/.yarn/cache/docusaurus-plugin-openapi-npm-0.6.2-32fef164b5-3975ee34d1.zip b/.yarn/cache/docusaurus-plugin-openapi-npm-0.6.2-32fef164b5-3975ee34d1.zip deleted file mode 100644 index 2556278e4..000000000 Binary files a/.yarn/cache/docusaurus-plugin-openapi-npm-0.6.2-32fef164b5-3975ee34d1.zip and /dev/null differ diff --git a/.yarn/cache/docusaurus-plugin-openapi-npm-0.6.3-9b5692af23-55664e5a2c.zip b/.yarn/cache/docusaurus-plugin-openapi-npm-0.6.3-9b5692af23-55664e5a2c.zip new file mode 100644 index 000000000..d56ad937f Binary files /dev/null and b/.yarn/cache/docusaurus-plugin-openapi-npm-0.6.3-9b5692af23-55664e5a2c.zip differ diff --git a/.yarn/cache/docusaurus-plugin-proxy-npm-0.6.2-f70f2ed4fe-061214bb39.zip b/.yarn/cache/docusaurus-plugin-proxy-npm-0.6.3-04c5000269-294f4281a2.zip similarity index 63% rename from .yarn/cache/docusaurus-plugin-proxy-npm-0.6.2-f70f2ed4fe-061214bb39.zip rename to .yarn/cache/docusaurus-plugin-proxy-npm-0.6.3-04c5000269-294f4281a2.zip index 262fe3c6f..3405e47ed 100644 Binary files a/.yarn/cache/docusaurus-plugin-proxy-npm-0.6.2-f70f2ed4fe-061214bb39.zip and b/.yarn/cache/docusaurus-plugin-proxy-npm-0.6.3-04c5000269-294f4281a2.zip differ diff --git a/.yarn/cache/docusaurus-plugin-typedoc-npm-0.18.0-d57a6a87e4-e5e8780888.zip b/.yarn/cache/docusaurus-plugin-typedoc-npm-0.18.0-d57a6a87e4-e5e8780888.zip new file mode 100644 index 000000000..cbd294826 Binary files /dev/null and b/.yarn/cache/docusaurus-plugin-typedoc-npm-0.18.0-d57a6a87e4-e5e8780888.zip differ diff --git a/.yarn/cache/docusaurus-preset-openapi-npm-0.6.2-3ef87c5cca-20ee248ee6.zip b/.yarn/cache/docusaurus-preset-openapi-npm-0.6.3-30383edec2-bbfb0b5bde.zip similarity index 84% rename from .yarn/cache/docusaurus-preset-openapi-npm-0.6.2-3ef87c5cca-20ee248ee6.zip rename to .yarn/cache/docusaurus-preset-openapi-npm-0.6.3-30383edec2-bbfb0b5bde.zip index 6cd59223e..9d4fd0642 100644 Binary files a/.yarn/cache/docusaurus-preset-openapi-npm-0.6.2-3ef87c5cca-20ee248ee6.zip and b/.yarn/cache/docusaurus-preset-openapi-npm-0.6.3-30383edec2-bbfb0b5bde.zip differ diff --git a/.yarn/cache/docusaurus-theme-openapi-npm-0.6.2-0ba68d42b3-56b8583e44.zip b/.yarn/cache/docusaurus-theme-openapi-npm-0.6.3-64bdd5a0c1-e02a6d2ea8.zip similarity index 73% rename from .yarn/cache/docusaurus-theme-openapi-npm-0.6.2-0ba68d42b3-56b8583e44.zip rename to .yarn/cache/docusaurus-theme-openapi-npm-0.6.3-64bdd5a0c1-e02a6d2ea8.zip index 425cccd49..8f8a56db3 100644 Binary files a/.yarn/cache/docusaurus-theme-openapi-npm-0.6.2-0ba68d42b3-56b8583e44.zip and b/.yarn/cache/docusaurus-theme-openapi-npm-0.6.3-64bdd5a0c1-e02a6d2ea8.zip differ diff --git a/.yarn/cache/domexception-npm-4.0.0-5093673f9b-ddbc1268ed.zip b/.yarn/cache/domexception-npm-4.0.0-5093673f9b-ddbc1268ed.zip new file mode 100644 index 000000000..4253de44a Binary files /dev/null and b/.yarn/cache/domexception-npm-4.0.0-5093673f9b-ddbc1268ed.zip differ diff --git a/.yarn/cache/dompurify-npm-2.4.1-1c79f22057-1169177465.zip b/.yarn/cache/dompurify-npm-2.4.1-1c79f22057-1169177465.zip new file mode 100644 index 000000000..bfe10d157 Binary files /dev/null and b/.yarn/cache/dompurify-npm-2.4.1-1c79f22057-1169177465.zip differ diff --git a/.yarn/cache/html-encoding-sniffer-npm-3.0.0-daac3dfe41-8d806aa004.zip b/.yarn/cache/html-encoding-sniffer-npm-3.0.0-daac3dfe41-8d806aa004.zip new file mode 100644 index 000000000..1fbdcc51d Binary files /dev/null and b/.yarn/cache/html-encoding-sniffer-npm-3.0.0-daac3dfe41-8d806aa004.zip differ diff --git a/.yarn/cache/isomorphic-dompurify-npm-0.20.0-04d660dfd4-90a2e76fed.zip b/.yarn/cache/isomorphic-dompurify-npm-0.20.0-04d660dfd4-90a2e76fed.zip new file mode 100644 index 000000000..eaf623bab Binary files /dev/null and b/.yarn/cache/isomorphic-dompurify-npm-0.20.0-04d660dfd4-90a2e76fed.zip differ diff --git a/.yarn/cache/jsdom-npm-20.0.3-906a2f7005-6e2ae21db3.zip b/.yarn/cache/jsdom-npm-20.0.3-906a2f7005-6e2ae21db3.zip new file mode 100644 index 000000000..af675bfee Binary files /dev/null and b/.yarn/cache/jsdom-npm-20.0.3-906a2f7005-6e2ae21db3.zip differ diff --git a/.yarn/cache/jsonc-parser-npm-3.2.0-1896ece3b7-946dd9a5f3.zip b/.yarn/cache/jsonc-parser-npm-3.2.0-1896ece3b7-946dd9a5f3.zip new file mode 100644 index 000000000..82b3a9da0 Binary files /dev/null and b/.yarn/cache/jsonc-parser-npm-3.2.0-1896ece3b7-946dd9a5f3.zip differ diff --git a/.yarn/cache/lunr-npm-2.3.9-fa3aa9c2d6-176719e24f.zip b/.yarn/cache/lunr-npm-2.3.9-fa3aa9c2d6-176719e24f.zip new file mode 100644 index 000000000..6c28307c3 Binary files /dev/null and b/.yarn/cache/lunr-npm-2.3.9-fa3aa9c2d6-176719e24f.zip differ diff --git a/.yarn/cache/marked-npm-4.2.4-27c37fa825-5eb5bfa6ee.zip b/.yarn/cache/marked-npm-4.2.4-27c37fa825-5eb5bfa6ee.zip new file mode 100644 index 000000000..e5f4f192e Binary files /dev/null and b/.yarn/cache/marked-npm-4.2.4-27c37fa825-5eb5bfa6ee.zip differ diff --git a/.yarn/cache/minimatch-npm-5.1.0-34f6240621-15ce53d31a.zip b/.yarn/cache/minimatch-npm-5.1.0-34f6240621-15ce53d31a.zip deleted file mode 100644 index 2a360f542..000000000 Binary files a/.yarn/cache/minimatch-npm-5.1.0-34f6240621-15ce53d31a.zip and /dev/null differ diff --git a/.yarn/cache/minimatch-npm-5.1.1-521233e3d2-215edd0978.zip b/.yarn/cache/minimatch-npm-5.1.1-521233e3d2-215edd0978.zip new file mode 100644 index 000000000..2d4f4edab Binary files /dev/null and b/.yarn/cache/minimatch-npm-5.1.1-521233e3d2-215edd0978.zip differ diff --git a/.yarn/cache/nwsapi-npm-2.2.1-a1537f87af-6c21fcb695.zip b/.yarn/cache/nwsapi-npm-2.2.1-a1537f87af-6c21fcb695.zip deleted file mode 100644 index c39f4f90e..000000000 Binary files a/.yarn/cache/nwsapi-npm-2.2.1-a1537f87af-6c21fcb695.zip and /dev/null differ diff --git a/.yarn/cache/nwsapi-npm-2.2.2-b77040326c-4376910629.zip b/.yarn/cache/nwsapi-npm-2.2.2-b77040326c-4376910629.zip new file mode 100644 index 000000000..c44e18d97 Binary files /dev/null and b/.yarn/cache/nwsapi-npm-2.2.2-b77040326c-4376910629.zip differ diff --git a/.yarn/cache/parse5-npm-7.1.1-27fa6524c4-8f72fbfa6d.zip b/.yarn/cache/parse5-npm-7.1.2-aa9a92c270-59465dd05e.zip similarity index 51% rename from .yarn/cache/parse5-npm-7.1.1-27fa6524c4-8f72fbfa6d.zip rename to .yarn/cache/parse5-npm-7.1.2-aa9a92c270-59465dd05e.zip index 480cbdc8e..d6319d936 100644 Binary files a/.yarn/cache/parse5-npm-7.1.1-27fa6524c4-8f72fbfa6d.zip and b/.yarn/cache/parse5-npm-7.1.2-aa9a92c270-59465dd05e.zip differ diff --git a/.yarn/cache/saxes-npm-6.0.0-31558949f5-d3fa3e2aaf.zip b/.yarn/cache/saxes-npm-6.0.0-31558949f5-d3fa3e2aaf.zip new file mode 100644 index 000000000..487af08ad Binary files /dev/null and b/.yarn/cache/saxes-npm-6.0.0-31558949f5-d3fa3e2aaf.zip differ diff --git a/.yarn/cache/shiki-npm-0.11.1-b9c0a01cc1-2a4ebc3b46.zip b/.yarn/cache/shiki-npm-0.11.1-b9c0a01cc1-2a4ebc3b46.zip new file mode 100644 index 000000000..a399fc3e8 Binary files /dev/null and b/.yarn/cache/shiki-npm-0.11.1-b9c0a01cc1-2a4ebc3b46.zip differ diff --git a/.yarn/cache/tough-cookie-npm-4.0.0-7c5f3086af-0891b37eb7.zip b/.yarn/cache/tough-cookie-npm-4.0.0-7c5f3086af-0891b37eb7.zip deleted file mode 100644 index dd3687b57..000000000 Binary files a/.yarn/cache/tough-cookie-npm-4.0.0-7c5f3086af-0891b37eb7.zip and /dev/null differ diff --git a/.yarn/cache/tough-cookie-npm-4.1.2-09068826e1-a7359e9a3e.zip b/.yarn/cache/tough-cookie-npm-4.1.2-09068826e1-a7359e9a3e.zip new file mode 100644 index 000000000..474ee1853 Binary files /dev/null and b/.yarn/cache/tough-cookie-npm-4.1.2-09068826e1-a7359e9a3e.zip differ diff --git a/.yarn/cache/ts-loader-npm-9.4.1-379dc021ff-b8947f6d39.zip b/.yarn/cache/ts-loader-npm-9.4.1-379dc021ff-b8947f6d39.zip deleted file mode 100644 index 3bf330293..000000000 Binary files a/.yarn/cache/ts-loader-npm-9.4.1-379dc021ff-b8947f6d39.zip and /dev/null differ diff --git a/.yarn/cache/ts-loader-npm-9.4.2-ad41a3f9dc-6f306ee4c6.zip b/.yarn/cache/ts-loader-npm-9.4.2-ad41a3f9dc-6f306ee4c6.zip new file mode 100644 index 000000000..1beb491fd Binary files /dev/null and b/.yarn/cache/ts-loader-npm-9.4.2-ad41a3f9dc-6f306ee4c6.zip differ diff --git a/.yarn/cache/typedoc-npm-0.23.23-b8cec47ccf-2b64f9c9dc.zip b/.yarn/cache/typedoc-npm-0.23.23-b8cec47ccf-2b64f9c9dc.zip new file mode 100644 index 000000000..4536016f3 Binary files /dev/null and b/.yarn/cache/typedoc-npm-0.23.23-b8cec47ccf-2b64f9c9dc.zip differ diff --git a/.yarn/cache/typedoc-plugin-dompurify-npm-1.0.0-e871931f73-b934db9667.zip b/.yarn/cache/typedoc-plugin-dompurify-npm-1.0.0-e871931f73-b934db9667.zip new file mode 100644 index 000000000..77b4b21d0 Binary files /dev/null and b/.yarn/cache/typedoc-plugin-dompurify-npm-1.0.0-e871931f73-b934db9667.zip differ diff --git a/.yarn/cache/typedoc-plugin-markdown-npm-3.14.0-868829fa20-6205600052.zip b/.yarn/cache/typedoc-plugin-markdown-npm-3.14.0-868829fa20-6205600052.zip new file mode 100644 index 000000000..edf6ec340 Binary files /dev/null and b/.yarn/cache/typedoc-plugin-markdown-npm-3.14.0-868829fa20-6205600052.zip differ diff --git a/.yarn/cache/typedoc-plugin-missing-exports-npm-1.0.0-da44643695-11ef3ba347.zip b/.yarn/cache/typedoc-plugin-missing-exports-npm-1.0.0-da44643695-11ef3ba347.zip new file mode 100644 index 000000000..97b5c8d2e Binary files /dev/null and b/.yarn/cache/typedoc-plugin-missing-exports-npm-1.0.0-da44643695-11ef3ba347.zip differ diff --git a/.yarn/cache/typescript-npm-4.8.4-9c0a335511-3e4f061658.zip b/.yarn/cache/typescript-npm-4.9.4-51bdca3293-e782fb9e00.zip similarity index 50% rename from .yarn/cache/typescript-npm-4.8.4-9c0a335511-3e4f061658.zip rename to .yarn/cache/typescript-npm-4.9.4-51bdca3293-e782fb9e00.zip index ffe3d5cfb..2379b0d84 100644 Binary files a/.yarn/cache/typescript-npm-4.8.4-9c0a335511-3e4f061658.zip and b/.yarn/cache/typescript-npm-4.9.4-51bdca3293-e782fb9e00.zip differ diff --git a/.yarn/cache/typescript-patch-5b3c915f01-563a0ef47a.zip b/.yarn/cache/typescript-patch-6c15aba1e8-37f6e2c3c5.zip similarity index 50% rename from .yarn/cache/typescript-patch-5b3c915f01-563a0ef47a.zip rename to .yarn/cache/typescript-patch-6c15aba1e8-37f6e2c3c5.zip index 902a50c7f..3b477be46 100644 Binary files a/.yarn/cache/typescript-patch-5b3c915f01-563a0ef47a.zip and b/.yarn/cache/typescript-patch-6c15aba1e8-37f6e2c3c5.zip differ diff --git a/.yarn/cache/universalify-npm-0.2.0-9984e61c10-e86134cb12.zip b/.yarn/cache/universalify-npm-0.2.0-9984e61c10-e86134cb12.zip new file mode 100644 index 000000000..7f1d80c19 Binary files /dev/null and b/.yarn/cache/universalify-npm-0.2.0-9984e61c10-e86134cb12.zip differ diff --git a/.yarn/cache/vscode-oniguruma-npm-1.7.0-07cc55fbcc-53519d91d9.zip b/.yarn/cache/vscode-oniguruma-npm-1.7.0-07cc55fbcc-53519d91d9.zip new file mode 100644 index 000000000..e13937b28 Binary files /dev/null and b/.yarn/cache/vscode-oniguruma-npm-1.7.0-07cc55fbcc-53519d91d9.zip differ diff --git a/.yarn/cache/vscode-textmate-npm-6.0.0-7ba9c4bb0b-ff6f17a406.zip b/.yarn/cache/vscode-textmate-npm-6.0.0-7ba9c4bb0b-ff6f17a406.zip new file mode 100644 index 000000000..1b874219a Binary files /dev/null and b/.yarn/cache/vscode-textmate-npm-6.0.0-7ba9c4bb0b-ff6f17a406.zip differ diff --git a/.yarn/cache/w3c-xmlserializer-npm-4.0.0-f09d0ec3fc-eba070e78d.zip b/.yarn/cache/w3c-xmlserializer-npm-4.0.0-f09d0ec3fc-eba070e78d.zip new file mode 100644 index 000000000..ae61bb6f0 Binary files /dev/null and b/.yarn/cache/w3c-xmlserializer-npm-4.0.0-f09d0ec3fc-eba070e78d.zip differ diff --git a/.yarn/cache/webpack-bundle-analyzer-npm-4.6.1-04a8f1486c-4bc97ac6a1.zip b/.yarn/cache/webpack-bundle-analyzer-npm-4.6.1-04a8f1486c-4bc97ac6a1.zip deleted file mode 100644 index 18c17e93d..000000000 Binary files a/.yarn/cache/webpack-bundle-analyzer-npm-4.6.1-04a8f1486c-4bc97ac6a1.zip and /dev/null differ diff --git a/.yarn/cache/webpack-bundle-analyzer-npm-4.7.0-493ca27caa-4ce3b379c6.zip b/.yarn/cache/webpack-bundle-analyzer-npm-4.7.0-493ca27caa-4ce3b379c6.zip new file mode 100644 index 000000000..c4c5b7dcb Binary files /dev/null and b/.yarn/cache/webpack-bundle-analyzer-npm-4.7.0-493ca27caa-4ce3b379c6.zip differ diff --git a/.yarn/cache/webpack-npm-5.74.0-f5b838a00d-320c41369a.zip b/.yarn/cache/webpack-npm-5.75.0-ebca50e2e7-2bcc5f3c19.zip similarity index 83% rename from .yarn/cache/webpack-npm-5.74.0-f5b838a00d-320c41369a.zip rename to .yarn/cache/webpack-npm-5.75.0-ebca50e2e7-2bcc5f3c19.zip index 6f3a50ac5..ec1021aa4 100644 Binary files a/.yarn/cache/webpack-npm-5.74.0-f5b838a00d-320c41369a.zip and b/.yarn/cache/webpack-npm-5.75.0-ebca50e2e7-2bcc5f3c19.zip differ diff --git a/.yarn/cache/whatwg-encoding-npm-2.0.0-d7451f51b4-7087810c41.zip b/.yarn/cache/whatwg-encoding-npm-2.0.0-d7451f51b4-7087810c41.zip new file mode 100644 index 000000000..182445510 Binary files /dev/null and b/.yarn/cache/whatwg-encoding-npm-2.0.0-d7451f51b4-7087810c41.zip differ diff --git a/.yarn/cache/whatwg-mimetype-npm-3.0.0-5b617710c1-ce08bbb36b.zip b/.yarn/cache/whatwg-mimetype-npm-3.0.0-5b617710c1-ce08bbb36b.zip new file mode 100644 index 000000000..aa91c250d Binary files /dev/null and b/.yarn/cache/whatwg-mimetype-npm-3.0.0-5b617710c1-ce08bbb36b.zip differ diff --git a/.yarn/cache/ws-npm-8.9.0-d620434feb-23aa0f021b.zip b/.yarn/cache/ws-npm-8.11.0-ab72116a01-316b33aba3.zip similarity index 89% rename from .yarn/cache/ws-npm-8.9.0-d620434feb-23aa0f021b.zip rename to .yarn/cache/ws-npm-8.11.0-ab72116a01-316b33aba3.zip index fede246f8..dbd70f152 100644 Binary files a/.yarn/cache/ws-npm-8.9.0-d620434feb-23aa0f021b.zip and b/.yarn/cache/ws-npm-8.11.0-ab72116a01-316b33aba3.zip differ diff --git a/.yarn/cache/xml-name-validator-npm-4.0.0-0857c21729-af100b79c2.zip b/.yarn/cache/xml-name-validator-npm-4.0.0-0857c21729-af100b79c2.zip new file mode 100644 index 000000000..abb3efef2 Binary files /dev/null and b/.yarn/cache/xml-name-validator-npm-4.0.0-0857c21729-af100b79c2.zip differ diff --git a/platforms/ycai/studio/__mocks__/fileMock.js b/__mocks__/fileMock.js similarity index 100% rename from platforms/ycai/studio/__mocks__/fileMock.js rename to __mocks__/fileMock.js diff --git a/platforms/ycai/studio/__mocks__/styleMock.js b/__mocks__/styleMock.js similarity index 100% rename from platforms/ycai/studio/__mocks__/styleMock.js rename to __mocks__/styleMock.js diff --git a/docker-compose.yml b/docker-compose.yml index f38961ade..6eb9a7318 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -59,6 +59,7 @@ services: dockerfile: from-zip.Dockerfile context: . target: unzip + entrypoint: /bin/sh container_name: build-from-zip stdin_open: true # docker run -i tty: true # docker run -t diff --git a/docs/blog/2019-05-28-first-blog-post.md b/docs/blog/2019-05-28-first-blog-post.md deleted file mode 100644 index 02f3f81bd..000000000 --- a/docs/blog/2019-05-28-first-blog-post.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -slug: first-blog-post -title: First Blog Post -authors: - name: Gao Wei - title: Docusaurus Core Team - url: https://github.com/wgao19 - image_url: https://github.com/wgao19.png -tags: [hola, docusaurus] ---- - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet diff --git a/docs/blog/2019-05-29-long-blog-post.md b/docs/blog/2019-05-29-long-blog-post.md deleted file mode 100644 index 26ffb1b1f..000000000 --- a/docs/blog/2019-05-29-long-blog-post.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -slug: long-blog-post -title: Long Blog Post -authors: endi -tags: [hello, docusaurus] ---- - -This is the summary of a very long blog post, - -Use a `` comment to limit blog post size in the list view. - - - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet diff --git a/docs/blog/2021-08-01-mdx-blog-post.mdx b/docs/blog/2021-08-01-mdx-blog-post.mdx deleted file mode 100644 index c04ebe323..000000000 --- a/docs/blog/2021-08-01-mdx-blog-post.mdx +++ /dev/null @@ -1,20 +0,0 @@ ---- -slug: mdx-blog-post -title: MDX Blog Post -authors: [slorber] -tags: [docusaurus] ---- - -Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/). - -:::tip - -Use the power of React to create interactive blog posts. - -```js - -``` - - - -::: diff --git a/docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg b/docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg deleted file mode 100644 index 11bda0928..000000000 Binary files a/docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg and /dev/null differ diff --git a/docs/blog/2021-08-26-welcome/index.md b/docs/blog/2021-08-26-welcome/index.md deleted file mode 100644 index 9455168f1..000000000 --- a/docs/blog/2021-08-26-welcome/index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -slug: welcome -title: Welcome -authors: [slorber, yangshun] -tags: [facebook, hello, docusaurus] ---- - -[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog). - -Simply add Markdown files (or folders) to the `blog` directory. - -Regular blog authors can be added to `authors.yml`. - -The blog post date can be extracted from filenames, such as: - -- `2019-05-30-welcome.md` -- `2019-05-30-welcome/index.md` - -A blog post folder can be convenient to co-locate blog post images: - -![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg) - -The blog supports tags as well! - -**And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config. diff --git a/docs/blog/authors.yml b/docs/blog/authors.yml deleted file mode 100644 index bcb299156..000000000 --- a/docs/blog/authors.yml +++ /dev/null @@ -1,17 +0,0 @@ -endi: - name: Endilie Yacop Sucipto - title: Maintainer of Docusaurus - url: https://github.com/endiliey - image_url: https://github.com/endiliey.png - -yangshun: - name: Yangshun Tay - title: Front End Engineer @ Facebook - url: https://github.com/yangshun - image_url: https://github.com/yangshun.png - -slorber: - name: Sébastien Lorber - title: Docusaurus maintainer - url: https://sebastienlorber.com - image_url: https://github.com/slorber.png diff --git a/docs/docs/partials/extension/_development.mdx b/docs/docs/partials/extension/_development.mdx index 6af464916..e3e7538a7 100644 --- a/docs/docs/partials/extension/_development.mdx +++ b/docs/docs/partials/extension/_development.mdx @@ -6,14 +6,7 @@ import CodeBlock from '@theme/CodeBlock'; ### Prerequisites - - +* @{props.platformPrefix}trex/backend up and running ### Run "watch" mode @@ -23,4 +16,7 @@ To start developing the extension you need to compile the source code with `webp yarn {props.platformPrefix}:ext watch -

then, you can open your browser's development panel and load the extension from the output folder {props.platformPrefix}.

+### Load the extension + +In your browser's development panel or in your extension manager, load the extension from the {props.platformPrefix} output folder. To do that, you will need to navigate to `platforms/yttrex/extension/build` and load the extension from that folder. + diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index e7377766e..808af3225 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -17,7 +17,7 @@ const config = { 'We develop tools to uncover how tracking and profiling have an impact on society', url: 'https://docs.tracking.exposed', baseUrl: '/', - onBrokenLinks: 'throw', + onBrokenLinks: 'warn', onBrokenMarkdownLinks: 'warn', favicon: 'img/trex128.png', organizationName: 'tracking-exposed', // Usually your GitHub org/user name. @@ -83,7 +83,157 @@ const config = { id: 'guardoni-docs', path: path.resolve(__dirname, '../platforms/guardoni/docs'), routeBasePath: 'guardoni', - sidebarPath: require.resolve('./sidebars.js'), + sidebarPath: require.resolve( + path.resolve(__dirname, '../platforms/guardoni/docs/sidebars.js') + ), + }, + ], + [ + 'docusaurus-plugin-typedoc', + { + id: 'docs-guardoni-api', + entryPoints: [ + '../platforms/guardoni/src/guardoni/cli.ts', + '../platforms/guardoni/src/guardoni/guardoni.ts', + ], + tsconfig: '../platforms/guardoni/tsconfig.json', + out: 'typedoc/guardoni', + excludeInternal: true, + watch: false, + }, + ], + [ + 'docusaurus-plugin-typedoc', + { + id: 'shared-typedoc', + entryPoints: ['../packages/shared/src/index.ts'], + tsconfig: '../packages/shared/tsconfig.json', + out: 'typedoc/shared', + watch: false, + sidebar: { + categoryLabel: '@trex/shared', + }, + }, + ], + [ + 'docusaurus-plugin-typedoc', + { + id: 'taboule-typedoc', + entryPoints: ['../packages/taboule/src/index.tsx'], + tsconfig: '../packages/taboule/tsconfig.json', + out: 'typedoc/taboule', + watch: false, + sidebar: { + categoryLabel: '@taboule', + }, + }, + ], + // typedoc for @tktrex + [ + 'docusaurus-plugin-typedoc', + { + id: 'tk-shared-typedoc', + entryPoints: ['../platforms/tktrex/shared/src/index.ts'], + tsconfig: '../platforms/tktrex/shared/tsconfig.json', + out: path.resolve( + process.cwd(), + '../platforms/tktrex/docs/docs/typedoc/shared' + ), + watch: false, + sidebar: { + categoryLabel: '@tktrex/shared', + }, + }, + ], + [ + 'docusaurus-plugin-typedoc', + { + id: 'tk-ext-typedoc', + entryPoints: [ + '../platforms/tktrex/extension/src/app/index.ts', + '../platforms/tktrex/extension/src/background/index.ts', + ], + tsconfig: '../platforms/tktrex/extension/tsconfig.json', + out: path.resolve( + process.cwd(), + '../platforms/tktrex/docs/docs/typedoc/extension' + ), + watch: process.env.TYPEDOC_WATCH, + sidebar: { + categoryLabel: '@tktrex/extension', + }, + }, + ], + + [ + 'docusaurus-plugin-typedoc', + { + id: 'tk-backend-typedoc', + entryPoints: ['../platforms/tktrex/backend/bin/server.ts'], + tsconfig: '../platforms/tktrex/backend/tsconfig.json', + out: path.resolve( + process.cwd(), + '../platforms/tktrex/docs/docs/typedoc/backend' + ), + watch: process.env.TYPEDOC_WATCH, + sidebar: { + categoryLabel: '@tktrex/backend', + }, + }, + ], + // typedoc for @yttrex + [ + 'docusaurus-plugin-typedoc', + { + id: 'yt-shared-typedoc', + entryPoints: ['../platforms/yttrex/shared/src/index.ts'], + tsconfig: '../platforms/yttrex/shared/tsconfig.json', + out: path.resolve( + process.cwd(), + '../platforms/yttrex/docs/docs/typedoc/shared' + ), + watch: process.env.TYPEDOC_WATCH, + sidebar: { + categoryLabel: '@yttrex/shared', + }, + }, + ], + [ + 'docusaurus-plugin-typedoc', + { + id: 'yt-ext-typedoc', + entryPoints: [ + '../platforms/yttrex/extension/src/app/index.ts', + '../platforms/yttrex/extension/src/background/index.ts', + ], + tsconfig: '../platforms/yttrex/extension/tsconfig.json', + out: path.resolve( + process.cwd(), + '../platforms/yttrex/docs/docs/typedoc/extension' + ), + watch: process.env.TYPEDOC_WATCH, + sidebar: { + categoryLabel: '@yttrex/extension', + }, + }, + ], + [ + 'docusaurus-plugin-typedoc', + { + id: 'yt-backend-typedoc', + entryPoints: [ + '../platforms/yttrex/backend/bin/server.ts', + '../platforms/yttrex/backend/bin/parser.ts', + ], + tsconfig: '../platforms/yttrex/backend/tsconfig.json', + out: path.resolve( + process.cwd(), + '../platforms/yttrex/docs/docs/typedoc/backend' + ), + watch: process.env.TYPEDOC_WATCH, + sidebar: { + categoryLabel: '@yttrex/backend', + }, }, ], ], @@ -94,9 +244,9 @@ const config = { ({ docs: { sidebarPath: require.resolve('./sidebars.js'), + breadcrumbs: false, // Please change this to your repo. - editUrl: - 'https://github.com/cloud-annotations/docusaurus-openapi/edit/main/demo/', + editUrl: 'https://github.com/tracking-exposed/trex/', }, blog: false, theme: { @@ -135,6 +285,14 @@ const config = { docsPluginId: 'yttrex-docs', label: 'Youtube Scraper', }, + { + href: '/docs/typedoc/taboule', + label: 'Taboule', + }, + { + href: '/docs/typedoc/shared', + label: 'Shared', + }, { type: 'dropdown', label: 'API', @@ -144,6 +302,45 @@ const config = { { to: '/ycai/api', label: '@ycai' }, ], }, + { + type: 'dropdown', + label: 'Source', + position: 'right', + items: [ + { + to: 'docs/typedoc/shared', + label: '@trex/shared', + }, + { + to: 'docs/typedoc/taboule', + label: '@taboule', + }, + { + to: '/tktrex/docs/typedoc/shared/', + label: '@tktrex/shared', + }, + { + to: '/tktrex/docs/typedoc/extension/', + label: '@tktrex/extension', + }, + { + to: '/tktrex/docs/typedoc/backend/', + label: '@tktrex/backend', + }, + { + to: '/yttrex/docs/typedoc/shared/', + label: '@yttrex/shared', + }, + { + to: '/yttrex/docs/typedoc/extension/', + label: '@yttrex/extension', + }, + { + to: '/yttrex/docs/typedoc/backend/', + label: '@yttrex/backend', + }, + ], + }, // { to: '/blog', label: 'Blog', position: 'left' }, { href: 'https://github.com/facebook/docusaurus', diff --git a/docs/package.json b/docs/package.json index c139ea99a..e54116eb8 100644 --- a/docs/package.json +++ b/docs/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "docusaurus": "docusaurus", - "start": "docusaurus start", + "start": "TYPEDOC_WATCH=true docusaurus start", "build": "docusaurus build", "swizzle": "docusaurus swizzle", "deploy": "docusaurus deploy", @@ -15,18 +15,24 @@ "typecheck": "tsc" }, "dependencies": { - "@docusaurus/core": "2.1.0", - "@mdx-js/react": "^1.6.21", + "@docusaurus/core": "2.2.0", + "@mdx-js/react": "^1.6.22", "clsx": "^1.1.1", "prism-react-renderer": "^1.3.5", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@docusaurus/module-type-aliases": "2.1.0", + "@docusaurus/module-type-aliases": "2.2.0", + "@mxssfd/typedoc-theme": "^1.0.3", "@tsconfig/docusaurus": "^1.0.6", - "docusaurus-plugin-openapi": "^0.6.2", - "docusaurus-preset-openapi": "^0.6.2", + "docusaurus-plugin-openapi": "^0.6.3", + "docusaurus-plugin-typedoc": "^0.18.0", + "docusaurus-preset-openapi": "^0.6.3", + "typedoc": "^0.23.23", + "typedoc-plugin-dompurify": "^1.0.0", + "typedoc-plugin-markdown": "^3.14.0", + "typedoc-plugin-missing-exports": "^1.0.0", "typescript": "^4.8.4" }, "browserslist": { diff --git a/docs/sidebars.js b/docs/sidebars.js index b98db4c8b..3cf63d796 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -17,12 +17,18 @@ const sidebars = { // By default, Docusaurus generates a sidebar from the docs folder structure tutorialSidebar: [{ type: 'autogenerated', dirName: '.' }], - // { - // type: 'link', - // label: '@ycai', - // href: '/ycai/intro', - // }, - + '@shared': [ + { + type: 'autogenerated', + dirName: 'typedoc/shared', + }, + ], + '@taboule': [ + { + type: 'autogenerated', + dirName: 'typedoc/taboule', + }, + ], // But you can create a sidebar manually /* tutorialSidebar: [ diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css index 9114e0f62..bf6242370 100644 --- a/docs/src/css/custom.css +++ b/docs/src/css/custom.css @@ -24,7 +24,7 @@ --ifm-color-primary-light: #67c8bf; --ifm-color-primary-lighter: #71ccc3; --ifm-color-primary-lightest: #90d7d0; - --ifm-code-font-size: 95%; + --ifm-code-font-size: 75%; --ifm-footer-background-color: #53c1b6; --ifm-footer-color: var(--white); --ifm-footer-title-color: var(--black); @@ -101,4 +101,10 @@ h1{ } h2 { padding-top: 4%; +} + +@media (min-width: 997px) { + .docItemCol_---node_modules-\@docusaurus-theme-classic-lib-theme-DocItem-Layout-styles-module { + max-width: 80% !important; + } } \ No newline at end of file diff --git a/from-zip.Dockerfile b/from-zip.Dockerfile index bbb09a463..d849a90e5 100644 --- a/from-zip.Dockerfile +++ b/from-zip.Dockerfile @@ -1,5 +1,5 @@ -FROM alpine:3.5 as unzip +FROM node:16.14-alpine as unzip WORKDIR /app @@ -16,6 +16,7 @@ WORKDIR /app COPY --from=unzip /app ./ RUN yarn install -RUN yarn why canvas +RUN yarn shared build +# RUN yarn taboule build RUN yarn yt:ext dist RUN yarn tk:ext dist diff --git a/package.json b/package.json index a6014af3f..526dfe726 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,8 @@ "postinstall": "husky install", "release-it-after-bump": "scripts/release-it-after-bump.sh", "tsc-diagnostics": "scripts/tsc-diagnostics.sh", - "pm2": "pm2" + "pm2": "pm2", + "typedoc": "typedoc" }, "devDependencies": { "@apidevtools/swagger-cli": "^4.0.4", @@ -67,8 +68,9 @@ "release-it": "^15.5.0", "ts-jest": "^27.1.5", "ts-node-dev": "^2.0.0", + "typedoc": "^0.23.23", "typescript": "^4.8.4", - "webpack": "^5.74.0", + "webpack": "^5.75.0", "zx": "^6.2.5" }, "lint-staged": { diff --git a/packages/shared/README.md b/packages/shared/README.md new file mode 100644 index 000000000..bbfc503c9 --- /dev/null +++ b/packages/shared/README.md @@ -0,0 +1,3 @@ +# TrEx - Shared + +This package contains all the modules _shared_ by possibly any other package. diff --git a/packages/shared/jest.config.js b/packages/shared/jest.config.js index bae50ef7e..3fffb5d71 100644 --- a/packages/shared/jest.config.js +++ b/packages/shared/jest.config.js @@ -3,9 +3,11 @@ const jestBaseConfig = require('../../jest.config.base'); /** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ module.exports = { ...jestBaseConfig, - rootDir: __dirname, testEnvironment: 'jsdom', displayName: '@shared', + moduleNameMapper: { + '\\.(css)$': '/../../__mocks__/styleMock.js', + }, modulePathIgnorePatterns: [ ...jestBaseConfig.modulePathIgnorePatterns, 'profiles', diff --git a/packages/shared/package.json b/packages/shared/package.json index 7c4da95ac..7b7f0c4ff 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -86,8 +86,14 @@ "style-loader": "^3.3.1", "tsconfig-paths-webpack-plugin": "^4.0.0", "type-fest": "^2.11.1", - "webpack": "^5.74.0", - "webpack-bundle-analyzer": "^4.6.1", + "webpack": "^5.75.0", + "webpack-bundle-analyzer": "^4.7.0", "webpack-cli": "^4.10.0" + }, + "typedoc": { + "entryPoint": "./src/index.ts", + "readmeFile": "./README.md", + "displayName": "@trex/shared", + "tsconfig": "./tsconfig.json" } } diff --git a/packages/shared/src/components/ErrorModal/errorModal.css b/packages/shared/src/components/ErrorModal/errorModal.css index 01145870a..c7f876fe1 100644 --- a/packages/shared/src/components/ErrorModal/errorModal.css +++ b/packages/shared/src/components/ErrorModal/errorModal.css @@ -1,7 +1,8 @@ -.ErrorModal{ +.ErrorModal { width: 100%; max-width: 500px; overflow: hidden; + background: white; border: 2px solid #de605f; border-radius: 3px; justify-content: space-between; diff --git a/packages/shared/src/components/ErrorModal/index.tsx b/packages/shared/src/components/ErrorModal/index.tsx index 44c4f794b..afc141760 100644 --- a/packages/shared/src/components/ErrorModal/index.tsx +++ b/packages/shared/src/components/ErrorModal/index.tsx @@ -10,11 +10,12 @@ export interface ErrorModalProps { message: string; details: string[]; position?: string[]; + style?: React.CSSProperties; onClick: (action: string) => void; } const ErrorModal = (props: ErrorModalProps): JSX.Element => { - const { name, message, details, position, onClick } = props; + const { name, message, details, position, style, onClick } = props; const [detailsShown, setDetailsShown] = React.useState(false); const handleDetailsClick = (): void => { @@ -25,7 +26,7 @@ const ErrorModal = (props: ErrorModalProps): JSX.Element => { }; return ( - +
{ })} >
    - {details.map((d) => ( -
  • + {details.map((d, i) => ( +
  • {d}
  • ))} diff --git a/packages/shared/src/endpoints/DocumentedEndpoint.ts b/packages/shared/src/endpoints/DocumentedEndpoint.ts index 1ed4d35ad..a3e5d1838 100644 --- a/packages/shared/src/endpoints/DocumentedEndpoint.ts +++ b/packages/shared/src/endpoints/DocumentedEndpoint.ts @@ -12,6 +12,11 @@ export interface DocsOpts { tags: string[]; } +/** + * Endpoint with documentation + * + * @typeParam M - The {@link HTTPMethod} + */ export type DocumentedEndpoint< M extends HTTPMethod, O extends Codec, @@ -56,6 +61,13 @@ export type MinimalEndpoint = export type DocumentedEndpointInstance = EndpointInstance & DocsOpts; +/** + * Create an endpoint for documentation + * + * @typeParam M - The {@link HTTPMethod} + * @param param0 + * @returns + */ export const DocumentedEndpoint = < M extends HTTPMethod, O extends Codec, diff --git a/packages/shared/src/errors/AppError.ts b/packages/shared/src/errors/AppError.ts index bc5b7a621..dab2f8f7e 100644 --- a/packages/shared/src/errors/AppError.ts +++ b/packages/shared/src/errors/AppError.ts @@ -6,7 +6,6 @@ export class AppError extends IOError { } export const toAppError = (e: unknown): AppError => { - if (isAPIError(e)) { return { ...e, @@ -34,3 +33,11 @@ export const toAppError = (e: unknown): AppError => { }, }; }; + +export const appErrorDetailsToString = (e: AppError): string[] => { + if (e.details.kind === 'DecodingError') { + return e.details.errors as string[]; + } + + return [e.details.kind, e.details.status, JSON.stringify(e.details.meta)]; +}; diff --git a/packages/shared/src/extension/app.ts b/packages/shared/src/extension/app.ts index bca52db29..8f18a4308 100644 --- a/packages/shared/src/extension/app.ts +++ b/packages/shared/src/extension/app.ts @@ -20,6 +20,7 @@ import log from './logger'; import HubEvent from './models/HubEvent'; import { ServerLookup } from './models/Message'; import UserSettings from './models/UserSettings'; +import { addCommonPageUI } from './ui'; import { bo } from './utils/browser.utils'; // instantiate a proper logger @@ -88,6 +89,12 @@ export interface BootOpts { onRegister: (h: Hub, config: UserSettings) => void; }; onAuthenticated: (res: any) => void; + ui?: { + common: { + id?: string; + errors?: boolean; + }; + }; } /** @@ -107,7 +114,7 @@ let oldHref: string; */ function setupObserver( { handlers: _handlers, platformMatch, onLocationChange }: SetupObserverOpts, - config: UserSettings + settings: UserSettings ): MutationObserver { // group handlers by type and `ObserverHandler.observe?` // to subscribe them to proper DOM and location changes @@ -147,7 +154,7 @@ function setupObserver( appLog.debug('handler listen for mutation %O', handler); dom.on(handler.match.selector, (node) => handle(node, handler, h, { - ...config, + ...settings, href: window.location.toString(), } as any) ); @@ -171,7 +178,7 @@ function setupObserver( // appLog.debug('Mutation target %s', (r.target as Element).id); if (`#${(r.target as any).id}` === handler.match.selector) { // appLog.debug('Target match %O', (r.target as any).id); - handle(r.target as any, handler, h, config); + handle(r.target as any, handler, h, settings); } }); } @@ -205,7 +212,7 @@ function setupObserver( ); handle(window.document.body, routeHandlerOpts, routeHandler[0], { - ...config, + ...settings, href: window.location.toString(), } as any); } @@ -225,9 +232,9 @@ function setupObserver( window.addEventListener('unload', () => { appLog.debug('Window unloading, disconnect the observer...'); - if (observer) { - observer.disconnect(); - } + observer?.disconnect(); + // TODO: maybe destroy the app? + // app?.destroy(); }); if (body) { @@ -249,8 +256,6 @@ export interface App { destroy: () => void; } -let config: any; - /** * Transform functions that send messages to background * to promises for better code flow. @@ -269,6 +274,8 @@ const serverHandshakeP = ( let loading = false; let app: App | undefined; +let config: any; + export async function boot(opts: BootOpts): Promise { if (app) { appLog.debug('App already booted!'); @@ -326,8 +333,8 @@ export async function boot(opts: BootOpts): Promise { // merge settings taken from db with ones defined in settings.json, giving the precedence to the latter const settings: UserSettings = { - ...localSettings.result, ...jsonSettings.result, + ...localSettings.result, } as any; if (!settings.publicKey || !settings.secretKey) { @@ -374,6 +381,14 @@ export async function boot(opts: BootOpts): Promise { // register platform specific event handlers opts.hub.onRegister(opts.hub.hub, config); + // enable the ui + + addCommonPageUI( + opts.ui?.common.id ?? 'trex-extension-common-ui', + opts.hub.hub, + { errors: true } + ); + // emergency button should be used when a supported with // UX hack in place didn't see any UX change, so they // can report the problem and we can handle it. @@ -401,22 +416,27 @@ export async function boot(opts: BootOpts): Promise { const handshakeResponse = await serverHandshakeP(config); appLog.info('Server lookup cb %O', handshakeResponse); + let observer: MutationObserver | undefined; if (handshakeResponse.type === 'Error') { - throw handshakeResponse.error; - } - - // setup the dom mutation observer - let observer = setupObserver(opts.observe, config); + opts.hub.hub.dispatch({ + type: 'ErrorEvent', + payload: handshakeResponse.error, + }); + // throw handshakeResponse.error; + } else { + // invoke callback for successful authentication + opts.onAuthenticated(handshakeResponse.result); - // invoke callback for successful authentication - opts.onAuthenticated(handshakeResponse.result); + // setup the dom mutation observer + observer = setupObserver(opts.observe, config); + } // define the app context to return app = { config, reload: (c) => { appLog.debug('Reloading app with config %O', c); - observer.disconnect(); + observer?.disconnect(); opts.hub.hub.dispatch({ type: 'WindowUnload', }); @@ -426,7 +446,7 @@ export async function boot(opts: BootOpts): Promise { observer = setupObserver(opts.observe, c); }, destroy: () => { - observer.disconnect(); + observer?.disconnect(); opts.hub.hub.clear(); app = undefined; }, diff --git a/packages/shared/src/extension/background/account.ts b/packages/shared/src/extension/background/account.ts index 04b5ad257..40e0d6d3d 100644 --- a/packages/shared/src/extension/background/account.ts +++ b/packages/shared/src/extension/background/account.ts @@ -87,11 +87,13 @@ export async function handleSettingsLookup( log.info( 'Loaded experiment info from file experiment.json: %j', - settingsJson + experimentInfo ); const settings = { ...DEFAULT_SETTINGS, ...settingsJson, ...experimentInfo }; + log.info('Final settings: %j', settings); + return sendResponse(settings); } diff --git a/packages/shared/src/extension/background/sendMessage.ts b/packages/shared/src/extension/background/sendMessage.ts index 9d43b4921..80c52a828 100644 --- a/packages/shared/src/extension/background/sendMessage.ts +++ b/packages/shared/src/extension/background/sendMessage.ts @@ -1,12 +1,13 @@ /* eslint-disable node/no-callback-literal */ -import { isLeft } from 'fp-ts/lib/Either'; import * as t from 'io-ts'; -import { PathReporter } from 'io-ts/lib/PathReporter'; +import { isAPIError } from '../../errors/APIError'; import { HandshakeResponse } from '../../models/HandshakeBody'; import log from '../logger'; import { Message, ServerLookup } from '../models/Message'; import { UserSettings } from '../models/UserSettings'; import { bo } from '../utils/browser.utils'; +import * as E from 'fp-ts/Either'; +import { toValidationError } from '../../errors/ValidationError'; interface ErrorResponse { type: 'Error'; @@ -26,25 +27,26 @@ const ifValid = (m: Message['type'], cb: SendResponse>) => (x: unknown): void => { log.debug('Check response is valid %O', x); + if (isAPIError(x)) { + // eslint-disable-next-line n/no-callback-literal + cb({ type: 'Error', error: x }); + return; + } + const v = codec.decode(x); - if (isLeft(v)) { - const msg = `Error decoding backend response:\n${PathReporter.report( - v - ).join('\n')}`; - log.error(msg); + if (E.isLeft(v)) { // eslint-disable-next-line n/no-callback-literal cb({ type: 'Error', - error: new Error( - `Error during '${m}' on codec ${codec.name} validation \n\n`.concat( - PathReporter.report(v).join('\n') - ) + error: toValidationError( + `Error decoding ${m} output with ${codec.name}`, + v.left ), }); } else { // eslint-disable-next-line n/no-callback-literal - cb({ type: 'Success', result: v.right }); + cb({ type: 'Success', result: x }); } }; diff --git a/packages/shared/src/extension/models/HubEvent.ts b/packages/shared/src/extension/models/HubEvent.ts index 52d447bbd..4c58ed090 100644 --- a/packages/shared/src/extension/models/HubEvent.ts +++ b/packages/shared/src/extension/models/HubEvent.ts @@ -3,6 +3,11 @@ export interface HubEventBase { payload?: unknown; } +export interface ErrorEvent extends HubEventBase { + type: 'ErrorEvent'; + payload: unknown; +} + export interface APIEvent extends HubEventBase { type: 'APIEvent'; payload: { @@ -57,8 +62,9 @@ export interface WindowUnloadEvent extends HubEventBase { } export type HubEvent = + | ErrorEvent | WindowUnloadEvent -/* | FullSaveEvent -- issue #444 */ + /* | FullSaveEvent -- issue #444 */ | SyncResponseEvent | APISyncResponseEvent | APIEvent; diff --git a/packages/shared/src/extension/models/UserSettings.ts b/packages/shared/src/extension/models/UserSettings.ts index 363ab08a5..ecfc4d49f 100644 --- a/packages/shared/src/extension/models/UserSettings.ts +++ b/packages/shared/src/extension/models/UserSettings.ts @@ -5,7 +5,7 @@ export const UserSettings = t.type( active: t.boolean, publicKey: t.string, secretKey: t.string, - ux: t.boolean, + ux: t.union([t.boolean, t.partial({ errors: t.boolean })]), researchTag: t.union([t.string, t.undefined]), experimentId: t.union([t.string, t.undefined]), }, diff --git a/packages/shared/src/extension/popup/components/Popup.tsx b/packages/shared/src/extension/popup/components/Popup.tsx index 5f38ea127..5f8a498a8 100644 --- a/packages/shared/src/extension/popup/components/Popup.tsx +++ b/packages/shared/src/extension/popup/components/Popup.tsx @@ -10,6 +10,8 @@ import Settings, { SettingsProps } from './Settings'; import UserSettings from '../../models/UserSettings'; import * as React from 'react'; import moment from 'moment'; +import { Hub } from '../../hub'; +import HubEvent from '../../models/HubEvent'; const styles = { width: '400px', @@ -21,6 +23,7 @@ export interface PopupProps { logo: string; getLinks: (opts: { publicKey: string }) => DashboardLink[]; settings: Pick; + hub: Hub; } type PopupState = @@ -39,6 +42,7 @@ type PopupState = let localLookupInterval: any; const Popup: React.FC = ({ + hub, platform, platformURL, settings, @@ -50,13 +54,14 @@ const Popup: React.FC = ({ }); const handleLocalLookup = (): void => { - localLookup(true, (response) => { - if (response.type === 'Error') { + localLookup(true, (r) => { + if (r.type === 'Error') { + hub.dispatch({ type: 'ErrorEvent', payload: r.error }); setUserSettingsState({ status: 'error', - error: response.error, + error: r.error, }); - log.error('could not get user settings %O', response.error); + log.error('could not get user settings %O', r.error); // localLookupInterval = setTimeout(() => { // log.info('Refetching settings...'); @@ -70,7 +75,7 @@ const Popup: React.FC = ({ localLookupInterval = undefined; } - setUserSettingsState({ status: 'done', payload: response.result }); + setUserSettingsState({ status: 'done', payload: r.result }); }); }; @@ -81,6 +86,7 @@ const Popup: React.FC = ({ status: 'error', error: r.error, }); + hub.dispatch({ type: 'ErrorEvent', payload: r.error }); } else { setUserSettingsState({ status: 'done', diff --git a/packages/shared/src/extension/popup/components/Settings.tsx b/packages/shared/src/extension/popup/components/Settings.tsx index 2e098bba0..3fa1947a7 100644 --- a/packages/shared/src/extension/popup/components/Settings.tsx +++ b/packages/shared/src/extension/popup/components/Settings.tsx @@ -142,7 +142,7 @@ export const Settings: React.FC = ({ diff --git a/packages/shared/src/extension/popup/index.tsx b/packages/shared/src/extension/popup/index.tsx index 4a91c44f6..87b3e0eb8 100644 --- a/packages/shared/src/extension/popup/index.tsx +++ b/packages/shared/src/extension/popup/index.tsx @@ -1,15 +1,9 @@ import '../../../public/font.css'; import React from 'react'; import ReactDOM from 'react-dom'; -import { createTheme, ThemeProvider } from '@material-ui/core/styles'; +import { ThemeProvider } from '@material-ui/core/styles'; import Popup, { PopupProps } from './components/Popup'; - -// define @mui theme for popup -const theme = createTheme({ - typography: { - fontFamily: 'Trex-Regular', - }, -}); +import { theme } from '../theme'; /** * This function is responsible to render the extension popup in the proper DOM node. diff --git a/packages/shared/src/extension/theme.ts b/packages/shared/src/extension/theme.ts new file mode 100644 index 000000000..2bc72f10b --- /dev/null +++ b/packages/shared/src/extension/theme.ts @@ -0,0 +1,8 @@ +import { createTheme } from '@material-ui/core/styles'; + +// define @mui theme for popup +export const theme = createTheme({ + typography: { + fontFamily: 'Trex-Regular', + }, +}); diff --git a/packages/shared/src/extension/tooltip/index.tsx b/packages/shared/src/extension/tooltip/index.tsx index a460f19de..667806199 100644 --- a/packages/shared/src/extension/tooltip/index.tsx +++ b/packages/shared/src/extension/tooltip/index.tsx @@ -1,16 +1,9 @@ +import { ThemeProvider } from '@material-ui/core/styles'; import React from 'react'; import ReactDOM from 'react-dom'; - -import { createTheme, ThemeProvider } from '@material-ui/core/styles'; - +import { theme } from '../theme'; import Tooltip from './components/tooltip'; -const theme = createTheme({ - typography: { - fontFamily: 'Trex-Regular', - }, -}); - function main(): void { ReactDOM.render( diff --git a/packages/shared/src/extension/ui/ErrorSnackbars.tsx b/packages/shared/src/extension/ui/ErrorSnackbars.tsx new file mode 100644 index 000000000..6d4d23aec --- /dev/null +++ b/packages/shared/src/extension/ui/ErrorSnackbars.tsx @@ -0,0 +1,60 @@ +import * as React from 'react'; +import { v4 as uuid } from 'uuid'; +import ErrorModal from '../../components/ErrorModal'; +import { appErrorDetailsToString } from '../../errors/AppError'; +import { Hub } from '../hub'; +import HubEvent from '../models/HubEvent'; + +interface ErrorSnackbarsProps { + hub: Hub; +} +export const ErrorSnackbars: React.FC = ({ hub }) => { + // const [show, setShow] = React.useState(false); + const [data, setData] = React.useState([]); + + const updateData = (d: any): void => { + setData((data) => [...data, d]); + }; + + React.useEffect(() => { + hub.on('ErrorEvent', (e) => { + if (e.payload) { + updateData({ ...e.payload, id: uuid() }); + } + }); + + return () => {}; + }, []); + + return ( +
    0 ? 200 : 0, + width: data.length > 0 ? 500 : 0, + zIndex: 9900, + boxSizing: 'content-box', + }} + > +
    + {data.map((d, i) => { + const details = appErrorDetailsToString(d); + return ( + { + setData((data) => data.filter((dd) => dd.id !== d.id)); + }} + /> + ); + })} +
    +
    + ); +}; diff --git a/packages/shared/src/extension/ui/index.tsx b/packages/shared/src/extension/ui/index.tsx new file mode 100644 index 000000000..af2a08a10 --- /dev/null +++ b/packages/shared/src/extension/ui/index.tsx @@ -0,0 +1,55 @@ +import { Box, ThemeProvider } from '@material-ui/core'; +import * as React from 'react'; +import * as ReactDOM from 'react-dom'; +import { Hub } from '../hub'; +import HubEvent from '../models/HubEvent'; +import { theme } from '../theme'; +import { ErrorSnackbars } from './ErrorSnackbars'; +import logger from '../logger'; + +/** + * Render a ReactNode in a container created by the given id + * + * @param id The container id + * @param children the ReactNode to render in the container + */ +export const addPageUI = (id: string, children: React.ReactNode): void => { + const nodeId = `#${id}`; + let node = window.document.querySelector(nodeId); + if (node && document.body.contains(node)) { + ReactDOM.unmountComponentAtNode(node); + } + + node = node ?? document.createElement('div'); + node.id = id; + + document.body.append(node); + + ReactDOM.render( + + {children} + , + node + ); +}; + +interface CommonPageUIOptions { + errors?: boolean; +} + +/** + * Add the common UI (error handler) to the page dom + * + * @param id The container node id + * @param hub The instance of the {@link Hub} + * @param opts The common ui options {@link CommonPageUIOptions} + */ +export const addCommonPageUI = ( + id: string, + hub: Hub, + opts: CommonPageUIOptions +): void => { + logger.debug('Adding common page ui %s (%j)', id, opts); + + addPageUI(id, {opts.errors ? : null}); +}; diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index 336ce12bb..762a0bdab 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts @@ -1 +1,4 @@ -export {} +export * as endpoints from './endpoints'; +export * as providers from './providers'; +export * as webpack from './webpack'; +export * as utils from './utils'; diff --git a/packages/shared/src/providers/api.provider.ts b/packages/shared/src/providers/api.provider.ts index 5caa4d702..70cb4067b 100644 --- a/packages/shared/src/providers/api.provider.ts +++ b/packages/shared/src/providers/api.provider.ts @@ -1,3 +1,6 @@ +/** + * @module apiProvider + */ import { command } from 'avenger'; import axios, { AxiosError, diff --git a/packages/shared/src/providers/index.ts b/packages/shared/src/providers/index.ts new file mode 100644 index 000000000..b75a7ea8c --- /dev/null +++ b/packages/shared/src/providers/index.ts @@ -0,0 +1,2 @@ +export * from './api.provider'; +export * from './parser.provider'; diff --git a/packages/shared/src/providers/parser.provider.ts b/packages/shared/src/providers/parser.provider.ts index 7546bddc5..7c7d8dccb 100644 --- a/packages/shared/src/providers/parser.provider.ts +++ b/packages/shared/src/providers/parser.provider.ts @@ -1,3 +1,6 @@ +/** + * @module parser + */ import { formatDistance } from 'date-fns'; import differenceInMinutes from 'date-fns/differenceInMinutes'; import subMinutes from 'date-fns/subMinutes'; @@ -18,9 +21,9 @@ export interface ParserConfiguration { /** * The parser function * - * @typeParam S - The source - * @typeParam M - The metadata - * @typeParam C - The configuration + * @typeParam S - the io-ts codec type for source + * @typeParam M - the io-ts codec type for metadata + * @typeParam C - the parser configuration type */ export type ParserFn = ( entry: ContributionWithDOM, @@ -46,9 +49,8 @@ export interface LastContributions { /** * The input given to the pipeline * - * @typeParam S - The source - * @typeParam M - The metadata - * @typeParam PP - The parser functions map + * @typeParam S - the io-ts codec type for source + * @typeParam PP - the typeof of the map of string => parser */ export interface PipelineInput< S, @@ -99,6 +101,13 @@ export interface ExecuteParams { htmlAmount: number; } +/** + * The execution success output + * + * @typeParam S - the io-ts codec type for source + * @typeParam M - the io-ts codec type for metadata + * @typeParam PP - the typeof of the map of string => parser + */ interface ExecutionOutputSuccess< S, M, @@ -108,6 +117,10 @@ interface ExecutionOutputSuccess< payload: Array>; } +/** + * The execution success output + * + */ interface ExecutionOutputError { type: 'Error'; payload: any; @@ -116,9 +129,9 @@ interface ExecutionOutputError { /** * The output of the execution * - * @typeParam S - The source - * @typeParam M - The metadata - * @typeParam PP - The parsers map + * @typeParam S - the io-ts codec type for source + * @typeParam M - the io-ts codec type for metadata + * @typeParam PP - the typeof of the map of string => parser * * @return An object where `type` can be `Success` or `Error` and the payload contains the real result */ @@ -143,6 +156,10 @@ export interface ParserProviderOpts extends ExecuteParams { /** * The parser provider interface * + * @typeParam S - the io-ts codec type for source + * @typeParam M - the io-ts codec type for metadata + * @typeParam PP - the typeof of the map of string => parser + * */ export interface ParserProvider< S, @@ -191,13 +208,20 @@ export type GetContributionsFn = ( /** * Get metadata function * - * @typeParam S - Source + * @typeParam S - the io-ts codec type for source + * @typeParam M - the io-ts codec type for metadata + * @param S - the source + * @returns a Promise of M */ export type GetMetadataFn = (e: S) => Promise; /** * Build metadata function * + * @typeParam S - the io-ts codec type for source + * @typeParam M - the io-ts codec type for metadata + * @typeParam PP - the typeof of the map of string => parser + * * @param e The payload produced by the pipeline * @param metadata - The metadata already present in the DB, if any */ @@ -717,10 +741,16 @@ let lastExecution: Date; let computedFrequency = 10; /** + * Create a parser instance + * + * @typeParam S - the io-ts codec type for source + * @typeParam M - the io-ts codec type for metadata + * @typeParam C - the parser configuration type + * @typeParam PP - the typeof of the map of string => parser * - * @param name + * @param name - The parser name * @param ctx - The parser context {@link ParserProviderContext} - * @returns + * @returns a {@link ParserProvider} instance */ export const GetParserProvider = < S extends t.Mixed, diff --git a/packages/shared/src/utils/arbitrary.utils.ts b/packages/shared/src/utils/arbitrary.utils.ts index 7772796d7..0deb18074 100644 --- a/packages/shared/src/utils/arbitrary.utils.ts +++ b/packages/shared/src/utils/arbitrary.utils.ts @@ -3,20 +3,24 @@ import * as R from 'fp-ts/lib/Record'; import { pipe } from 'fp-ts/lib/function'; import * as t from 'io-ts'; -export const propsOmit =

    >( - codec: t.ExactC>, - props: PP -): Omit => - pipe( - codec.type.props, - R.filterMapWithIndex((k, p) => - pipe( - p, - O.fromPredicate(() => !props.includes(k)) - ) - ) as any - ); - +/** + * + * Strip io-ts t.type codec props from a given array of keys + * + * * ```ts + * const codec = t.type({ id: t.string, name: t.string }); + * const onlyIdCodec = propsOmitType(codec, ['name']); + * // onlyIdCodec = { id: t.string } + * ``` + * + * @typeParam P - the codec props + * @typeParam PP - the array of codec prop keys + * + * @param codec A io-ts codec + * @param props A list of codec property key + * @returns A new map of codecs for the remaining properties + * + */ export const propsOmitType =

    >( codec: t.TypeC

    , props: PP @@ -30,3 +34,25 @@ export const propsOmitType =

    >( ) ) as any ); + +/** + * Strip io-ts t.strict codec props from a given array of keys + * + * ```ts + * const codec = t.strict({ id: t.string, name: t.string }); + * const onlyIdCodec = propsOmit(codec, ['name']); + * // onlyIdCodec = { id: t.string } + * ``` + * + * @typeParam P - the codec props + * @typeParam PP - the array of codec prop keys + * + * @param codec A io-ts codec + * @param props A list of codec property key + * @returns A new map of codecs for the remaining properties + * + */ +export const propsOmit =

    >( + codec: t.ExactC>, + props: PP +): Omit => propsOmitType(codec.type, props); diff --git a/packages/shared/src/utils/index.ts b/packages/shared/src/utils/index.ts new file mode 100644 index 000000000..d2fbd0f70 --- /dev/null +++ b/packages/shared/src/utils/index.ts @@ -0,0 +1,13 @@ +export * as arbitrary from './arbitrary.utils'; +export * as csv from './csv.utils'; +export * as date from './date.utils'; +export * as decode from './decode.utils'; +export * as encode from './encode.utils'; +export * as endpoint from './endpoint.utils'; +export * as food from './food.utils'; +export * as fp from './fp.utils'; +export * as html from './html.utils'; +export * as ip from './ip.utils'; +export * as number from './number.utils'; +export * as promise from './promise.utils'; +export * as task from './task.utils'; diff --git a/packages/shared/src/utils/promise.utils.ts b/packages/shared/src/utils/promise.utils.ts index bcb73718f..55ae62aff 100644 --- a/packages/shared/src/utils/promise.utils.ts +++ b/packages/shared/src/utils/promise.utils.ts @@ -1,4 +1,8 @@ - +/** + * Wrap setTimeout in a promise for async timeout + * + * @param ms the time to sleep in milliseconds + */ export async function sleep(ms: number): Promise { return new Promise((resolve) => { setTimeout(resolve, ms); diff --git a/packages/shared/src/webpack/index.ts b/packages/shared/src/webpack/index.ts new file mode 100644 index 000000000..511d958e7 --- /dev/null +++ b/packages/shared/src/webpack/index.ts @@ -0,0 +1,2 @@ +export * from './config'; +export * from './extension.config'; diff --git a/packages/taboule/package.json b/packages/taboule/package.json index aaa92c789..5ceb910ab 100644 --- a/packages/taboule/package.json +++ b/packages/taboule/package.json @@ -54,11 +54,17 @@ "eslint-plugin-promise": "^6.1.0", "eslint-plugin-react": "^7.31.10", "prettier": "^2.7.1", - "ts-loader": "^9.4.1", + "ts-loader": "^9.4.2", "typelevel-ts": "^0.4.0", - "webpack": "^5.74.0", - "webpack-bundle-analyzer": "^4.6.1", + "webpack": "^5.75.0", + "webpack-bundle-analyzer": "^4.7.0", "webpack-cli": "^4.10.0", "webpack-dev-server": "^4.11.1" + }, + "typedoc": { + "entryPoint": "./src/index.tsx", + "readmeFile": "./README.md", + "displayName": "Taboule", + "tsconfig": "./tsconfig.json" } } diff --git a/packages/taboule/src/config/params.ts b/packages/taboule/src/config/params.ts index 8c3197418..5bb3ddbee 100644 --- a/packages/taboule/src/config/params.ts +++ b/packages/taboule/src/config/params.ts @@ -1,14 +1,19 @@ +/** + * @module config!params + */ import { TabouleQueryKey } from '../state/types'; type TabouleDefaultParams = { [K in TabouleQueryKey]: any }; +/** + * Default query params + */ export const defaultParams: TabouleDefaultParams = { ccRelatedUsers: {}, getExperimentById: {}, getExperimentList: { type: 'comparison', - key: 'fuffa', - // this is the default as per 'yarn backend watch' + key: 'fuffa', // this is the default as per 'yarn backend watch' }, personalHomes: {}, personalSearches: {}, diff --git a/packages/taboule/src/index.tsx b/packages/taboule/src/index.tsx index 3e40281c2..1447dd46e 100644 --- a/packages/taboule/src/index.tsx +++ b/packages/taboule/src/index.tsx @@ -5,7 +5,11 @@ import * as ReactDOM from 'react-dom'; import { Taboule, TabouleProps } from './components/Taboule'; import { TabouleQueries } from './state/queries'; -interface DataTableProps +/** + * Table data props + * @typeParam Q - key of {@link TabouleQueries} + */ +export interface DataTableProps extends TabouleProps { node: HTMLDivElement; } diff --git a/packages/taboule/src/state/commands.ts b/packages/taboule/src/state/commands.ts index 0b34d8b25..dc1e9d937 100644 --- a/packages/taboule/src/state/commands.ts +++ b/packages/taboule/src/state/commands.ts @@ -1,3 +1,6 @@ +/** + * @module state!commands + */ import { MakeAPIClient, TERequest } from '@shared/providers/api.provider'; import { command } from 'avenger'; import * as Endpoints from '@yttrex/shared/endpoints'; diff --git a/packages/taboule/src/state/index.ts b/packages/taboule/src/state/index.ts index 6c853fec8..6a3ce0307 100644 --- a/packages/taboule/src/state/index.ts +++ b/packages/taboule/src/state/index.ts @@ -1,10 +1,8 @@ -import { GetTabouleCommands, TabouleCommands } from './commands'; -import { GetTabouleQueries, TabouleQueries } from './queries'; +/** + * @module state + */ -export const TabouleDataProvider = ( - baseURL: string -): { queries: TabouleQueries; commands: TabouleCommands } => { - const queries = GetTabouleQueries({ baseURL }); - const commands = GetTabouleCommands({ baseURL }, queries); - return { queries, commands }; -}; +export * from './types'; +export * from './queries'; +export * from './commands'; +export { TabouleDataProvider } from './state.provider'; diff --git a/packages/taboule/src/state/queries.ts b/packages/taboule/src/state/queries.ts index 410ccdc8b..6d5b432f7 100644 --- a/packages/taboule/src/state/queries.ts +++ b/packages/taboule/src/state/queries.ts @@ -1,3 +1,7 @@ +/** + * @module state!queries + */ + import * as endpoints from '@yttrex/shared/endpoints'; import * as tkEndpoints from '@tktrex/shared/endpoints'; import { APIError } from '@shared/errors/APIError'; @@ -31,8 +35,20 @@ export interface Results { content: T[]; } -type EndpointQuery = CachedQuery>; +/** + * A cached query for endpoint + * + * @typeParam C - The output + */ +export type EndpointQuery = CachedQuery< + SearchRequestInput, + APIError, + Results +>; +/** + * Taboule queries + */ export interface TabouleQueries { ccRelatedUsers: EndpointQuery; getExperimentById: EndpointQuery; @@ -47,7 +63,7 @@ export interface TabouleQueries { tikTokSearches: EndpointQuery; } -interface GetTabouleQueriesProps { +export interface GetTabouleQueriesProps { baseURL: string; accessToken?: string; } diff --git a/packages/taboule/src/state/state.provider.ts b/packages/taboule/src/state/state.provider.ts new file mode 100644 index 000000000..60c19f4cb --- /dev/null +++ b/packages/taboule/src/state/state.provider.ts @@ -0,0 +1,17 @@ +import { GetTabouleCommands, TabouleCommands } from './commands'; +import { GetTabouleQueries, TabouleQueries } from './queries'; +/** + * Taboule Data Provider + * + * @module state!TabouleDataProvider + * + * @param baseURL + * @returns type safe queries and commands + */ +export const TabouleDataProvider = ( + baseURL: string +): { queries: TabouleQueries; commands: TabouleCommands } => { + const queries = GetTabouleQueries({ baseURL }); + const commands = GetTabouleCommands({ baseURL }, queries); + return { queries, commands }; +}; diff --git a/packages/taboule/src/state/types.ts b/packages/taboule/src/state/types.ts index 07e5fb2b8..3f51164d2 100644 --- a/packages/taboule/src/state/types.ts +++ b/packages/taboule/src/state/types.ts @@ -1,3 +1,6 @@ +/** + * @module state!types + */ import * as t from 'io-ts'; export const TabouleQueryKey = t.union( diff --git a/platforms/guardoni/sidebars.js b/platforms/guardoni/docs/sidebars.js similarity index 59% rename from platforms/guardoni/sidebars.js rename to platforms/guardoni/docs/sidebars.js index c81f3a70e..6e509aafa 100644 --- a/platforms/guardoni/sidebars.js +++ b/platforms/guardoni/docs/sidebars.js @@ -16,24 +16,14 @@ /** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ const sidebars = { // By default, Docusaurus generates a sidebar from the docs folder structure - tutorialSidebar: [{ type: 'autogenerated', dirName: '.' }], guardoniSidebar: [ - { type: 'autogenerated', dirName: '../../platforms/guardoni/docs' }, - ], - tkTrexSidebar: [ - { type: 'autogenerated', dirName: '../../platforms/tktrex/docs/docs' }, - ], - - // But you can create a sidebar manually - /* - tutorialSidebar: [ + { type: 'autogenerated', dirName: '.' }, { - type: 'category', - label: 'Tutorial', - items: ['hello'], + label: 'Code', + type: 'link', + href: '/docs/guardoni/API', }, ], - */ }; module.exports = sidebars; diff --git a/platforms/guardoni/package.json b/platforms/guardoni/package.json index ccc100b24..4b17acd2a 100644 --- a/platforms/guardoni/package.json +++ b/platforms/guardoni/package.json @@ -26,7 +26,8 @@ "tdd": "jest --watch --verbose", "cli-yt-test-videos": "ts-node ./scripts/cli-yt-test-videos.mjs", "cli-yt-test-home": "ts-node ./scripts/cli-yt-test-home-fixures.mjs", - "cli-yt-test-from-fixtures": "ts-node ./scripts/cli-yt-test-home-fixures.mjs" + "cli-yt-test-from-fixtures": "ts-node ./scripts/cli-yt-test-home-fixures.mjs", + "typedoc": "typedoc" }, "bin": { "cli": "./bin/guardoni-cli.js" @@ -123,14 +124,14 @@ "string-replace-loader": "^3.1.0", "style-loader": "^3.3.1", "ts-jest": "^27.1.5", - "ts-loader": "^9.4.1", + "ts-loader": "^9.4.2", "ts-node": "^10.9.1", "tsconfig-paths": "^4.1.0", "typescript": "^4.8.4", "unlazy-loader": "^0.1.3", "utf-8-validate": "^5.0.9", - "webpack": "^5.74.0", - "webpack-bundle-analyzer": "^4.6.1", + "webpack": "^5.75.0", + "webpack-bundle-analyzer": "^4.7.0", "webpack-cli": "^4.10.0", "webpack-node-externals": "^3.0.0" }, diff --git a/platforms/guardoni/src/guardoni/extension.ts b/platforms/guardoni/src/guardoni/extension.ts index ee2fcf560..666bbc9e1 100644 --- a/platforms/guardoni/src/guardoni/extension.ts +++ b/platforms/guardoni/src/guardoni/extension.ts @@ -153,8 +153,6 @@ export const downloadExtension = ( /** * Clean extension directory * - * @param ctx - * @returns */ export const cleanExtension = diff --git a/platforms/guardoni/typedoc.json b/platforms/guardoni/typedoc.json new file mode 100644 index 000000000..2306edc38 --- /dev/null +++ b/platforms/guardoni/typedoc.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "entryPoints": [ + "./src/guardoni/cli.ts", + "../../packages/shared/src/endpoints/*" + ], + "out": "docs/api", + "exclude": ["build", "**/build"], + "plugin": [ + "typedoc-plugin-missing-exports", + "typedoc-plugin-resolve-crossmodule-references", + "typedoc-plugin-markdown" + ], + "validation": { + "notExported": true, + "invalidLink": true, + "notDocumented": false + } +} diff --git a/platforms/storybook/package.json b/platforms/storybook/package.json index c76b00816..c36cb081f 100644 --- a/platforms/storybook/package.json +++ b/platforms/storybook/package.json @@ -36,7 +36,7 @@ "eslint-plugin-react": "^7.31.10", "prop-types": "^15.8.1", "typescript": "^4.8.4", - "webpack": "^5.74.0" + "webpack": "^5.75.0" }, "browserslist": { "production": [ diff --git a/platforms/tktrex/backend/README.md b/platforms/tktrex/backend/README.md index 1c0471ddf..5c0e21db6 100644 --- a/platforms/tktrex/backend/README.md +++ b/platforms/tktrex/backend/README.md @@ -1,3 +1,4 @@ +# TK - Backend Requirements: @@ -6,4 +7,19 @@ Requirements: - npm install - npm run watch -This is only the backend system, as for the frontend, you should check: https://github.com/tracking-exposed/tiktok.tracking.exposed +This is only the backend system, as for the frontend, you should check: [tracking-exposed/tiktok.tracking.exposed](https://github.com/tracking-exposed/tiktok.tracking.exposed) + +### How to use count-o-clock from crontab + +```sh +1 * * * * cd platforms/tktrex/backend/; DEBUG=* node bin/count-o-clock.js --hoursago 1 2>&1| tee -a /tmp/count-o-clock.log +``` + +How to repeat executions that have been missed + +```sh +cd platforms/tktrex/backend$ +$ for x in `seq 0 400`; do node bin/count-o-clock.js --hoursago $x ; done +``` + +this for example go back in the last 400 hours to recompute stats. It is necessary to run it every time config/trexstats.json get updated with new instruction diff --git a/platforms/tktrex/backend/bin/README.md b/platforms/tktrex/backend/bin/README.md deleted file mode 100644 index fcdc2acfe..000000000 --- a/platforms/tktrex/backend/bin/README.md +++ /dev/null @@ -1,15 +0,0 @@ - -###How to use count-o-clock from crontab - -``` -1 * * * * cd platforms/tktrex/backend/; DEBUG=* node bin/count-o-clock.js --hoursago 1 2>&1| tee -a /tmp/count-o-clock.log -``` - -How to repeat executions that have been missed - -``` -cd platforms/tktrex/backend$ -$ for x in `seq 0 400`; do node bin/count-o-clock.js --hoursago $x ; done -``` - -this for example go back in the last 400 hours to recompute stats. It is necessary to run it every time config/trexstats.json get updated with new instruction diff --git a/platforms/tktrex/backend/package.json b/platforms/tktrex/backend/package.json index 81c399c84..63bc0162a 100644 --- a/platforms/tktrex/backend/package.json +++ b/platforms/tktrex/backend/package.json @@ -59,10 +59,17 @@ "eslint": "^8.25.0", "ts-node": "^10.9.1", "ts-node-dev": "^2.0.0", + "typedoc": "^0.23.23", "typescript": "^4.8.4" }, "_moduleAliases": { "@shared": "../../../packages/shared/build", "@tktrex/shared": "../shared/build" + }, + "typedoc": { + "entryPoint": "./bin/server.ts", + "readmeFile": "./README.md", + "displayName": "TK TrEx - Backend", + "tsconfig": "./tsconfig.json" } } diff --git a/platforms/tktrex/docs/package.json b/platforms/tktrex/docs/package.json index 14eb501c2..0ee74db05 100644 --- a/platforms/tktrex/docs/package.json +++ b/platforms/tktrex/docs/package.json @@ -15,16 +15,16 @@ "typecheck": "tsc" }, "dependencies": { - "@docusaurus/core": "2.1.0", - "@docusaurus/preset-classic": "2.1.0", - "@mdx-js/react": "^1.6.21", + "@docusaurus/core": "2.2.0", + "@docusaurus/preset-classic": "2.2.0", + "@mdx-js/react": "^1.6.22", "clsx": "^1.1.1", "prism-react-renderer": "^1.3.5", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@docusaurus/module-type-aliases": "2.1.0", + "@docusaurus/module-type-aliases": "2.2.0", "@tsconfig/docusaurus": "^1.0.6", "typescript": "^4.8.4" }, diff --git a/platforms/tktrex/docs/sidebars.js b/platforms/tktrex/docs/sidebars.js index 54ba60940..f6fffeb5e 100644 --- a/platforms/tktrex/docs/sidebars.js +++ b/platforms/tktrex/docs/sidebars.js @@ -15,17 +15,20 @@ const sidebars = { // By default, Docusaurus generates a sidebar from the docs folder structure tutorialSidebar: [{ type: 'autogenerated', dirName: '.' }], - // But you can create a sidebar manually - /* - tutorialSidebar: [ + + '@tktrex/shared': [ + { + type: 'autogenerated', + dirName: 'typedoc/shared', + }, + ], + '@tktrex/backend': [ { - type: 'category', - label: 'Tutorial', - items: ['hello'], + type: 'autogenerated', + dirName: 'typedoc/backend', }, ], - */ }; module.exports = sidebars; diff --git a/platforms/tktrex/extension/__tests__/app.spec.ts b/platforms/tktrex/extension/__tests__/app.spec.ts index 595f66cdc..4db77274c 100644 --- a/platforms/tktrex/extension/__tests__/app.spec.ts +++ b/platforms/tktrex/extension/__tests__/app.spec.ts @@ -254,7 +254,7 @@ describe('TK App', () => { // video handler should be invoked as the url includes `watch` const { handle: _handle, ...videoOpts } = videoMatcher; - expect(handleVideoSpy).toHaveBeenCalledTimes(3); + expect(handleVideoSpy).toHaveBeenCalledTimes(4); expect(handleSearchSpy).toHaveBeenCalledTimes(48); expect(hubDispatchSpy).toHaveBeenCalledTimes(2); diff --git a/platforms/tktrex/extension/jest.config.js b/platforms/tktrex/extension/jest.config.js index 4292374e3..ef24a52a7 100644 --- a/platforms/tktrex/extension/jest.config.js +++ b/platforms/tktrex/extension/jest.config.js @@ -9,7 +9,7 @@ const tsPaths = pathsToModuleNameMapper(tsConfig.compilerOptions.paths, { const moduleNameMapper = { ...tsPaths, '\\.(svg|ttf)$': '/__mocks__/fileMock.js', - '\\.(css)$': '/__mocks__/styleMock.js', + '\\.(css)$': '../../../__mocks__/styleMock.js', }; /** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ diff --git a/platforms/tktrex/extension/package.json b/platforms/tktrex/extension/package.json index 0461e983b..06c04e078 100644 --- a/platforms/tktrex/extension/package.json +++ b/platforms/tktrex/extension/package.json @@ -44,6 +44,12 @@ "jest-environment-jsdom-global": "^3.1.2", "jest-fetch-mock": "^3.0.3", "typescript": "^4.8.4", - "webpack": "^5.74.0" + "webpack": "^5.75.0" + }, + "typedoc": { + "entryPoint": "./src/app/index.ts", + "readmeFile": "./README.md", + "displayName": "TK TrEx - Extension", + "tsconfig": "./tsconfig.json" } } diff --git a/platforms/tktrex/extension/src/app/app.ts b/platforms/tktrex/extension/src/app/app.ts index 6302fd7c3..35654121e 100644 --- a/platforms/tktrex/extension/src/app/app.ts +++ b/platforms/tktrex/extension/src/app/app.ts @@ -10,7 +10,7 @@ import { HTMLSize } from '@shared/extension/utils/HTMLSize.utils'; import _ from 'lodash'; import tkHub from './hub'; import { INTERCEPTOR_CONTAINER_ID } from '../interceptor/constants'; -import { addAppUI } from './components'; +import { addTKAppUI } from './components'; export const appLog = log.extend('app'); const searchSize = HTMLSize(); @@ -25,9 +25,7 @@ export function tkTrexActions(remoteInfo: unknown): void { appLog.info('initialize watchers, remoteInfo available:', remoteInfo); // initialize ui - - const apiInterceptorUI = document.createElement('div'); - addAppUI(apiInterceptorUI); + addTKAppUI(); // initializeEmergencyButton(); diff --git a/platforms/tktrex/extension/src/app/components/APIInterceptedSnackbar.tsx b/platforms/tktrex/extension/src/app/components/APIInterceptedSnackbar.tsx index 2479cf202..7d928e055 100644 --- a/platforms/tktrex/extension/src/app/components/APIInterceptedSnackbar.tsx +++ b/platforms/tktrex/extension/src/app/components/APIInterceptedSnackbar.tsx @@ -1,7 +1,6 @@ import Snackbar from '@mui/material/Snackbar'; -import tkHub from '../hub'; -import _ from 'lodash'; import * as React from 'react'; +import tkHub from '../hub'; export const APIInterceptedSnackbar: React.FC = () => { // const [show, setShow] = React.useState(false); @@ -10,15 +9,12 @@ export const APIInterceptedSnackbar: React.FC = () => { }); React.useEffect(() => { - tkHub.on( - 'APIRequestEvent', - _.debounce((e) => { - const payload: any = e.payload; - if (!data.intercepted.some((ee) => ee.id === payload.id)) { - setData({ intercepted: [...data.intercepted, payload] }); - } - }, 400), - ); + tkHub.on('APIRequestEvent', (e) => { + const payload: any = e.payload; + if (!data.intercepted.some((ee) => ee.id === payload.id)) { + setData((data) => ({ intercepted: [...data.intercepted, payload] })); + } + }); }, [data.intercepted]); const handleDump = (): void => { diff --git a/platforms/tktrex/extension/src/app/components/SigiStateSnackbar.tsx b/platforms/tktrex/extension/src/app/components/SigiStateSnackbar.tsx index 70965891e..a34238348 100644 --- a/platforms/tktrex/extension/src/app/components/SigiStateSnackbar.tsx +++ b/platforms/tktrex/extension/src/app/components/SigiStateSnackbar.tsx @@ -1,20 +1,17 @@ -import tkHub from '../hub'; -import * as React from 'react'; import { Snackbar } from '@material-ui/core'; -import _ from 'lodash'; +import * as React from 'react'; +import tkHub from '../hub'; export const SigiStateSnackbar: React.FC = () => { // const [show, setShow] = React.useState(false); const [data, setData] = React.useState([]); React.useEffect(() => { - tkHub.on( - 'SigiState', - _.debounce((e) => { - const payload: any = e.payload; - setData([...data, payload]); - }, 400), - ); + tkHub.on('SigiState', (e) => { + const payload: any = e.payload; + + setData((data) => [...data, payload]); + }); }, [data]); const handleDump = (): void => { diff --git a/platforms/tktrex/extension/src/app/components/index.tsx b/platforms/tktrex/extension/src/app/components/index.tsx index b73dce6cb..6295ca87a 100644 --- a/platforms/tktrex/extension/src/app/components/index.tsx +++ b/platforms/tktrex/extension/src/app/components/index.tsx @@ -1,25 +1,15 @@ import { Box } from '@material-ui/core'; import * as React from 'react'; -import * as ReactDOM from 'react-dom'; import { APIInterceptedSnackbar } from './APIInterceptedSnackbar'; import { SigiStateSnackbar } from './SigiStateSnackbar'; - -export const addAppUI = (node: Element): void => { - if (document.body.contains(node)) { - ReactDOM.unmountComponentAtNode(node); - } - - node.id = 'tktrex-app-ui'; - - document.body.append(node); - - ReactDOM.render( - - - - - - , - node, +import { addPageUI } from '@shared/extension/ui'; + +export const addTKAppUI = (): void => { + return addPageUI( + 'tktrex-app-ui', + + + + , ); }; diff --git a/platforms/tktrex/extension/src/app/hub/index.ts b/platforms/tktrex/extension/src/app/hub/index.ts index c84eb93c9..e8fee1115 100644 --- a/platforms/tktrex/extension/src/app/hub/index.ts +++ b/platforms/tktrex/extension/src/app/hub/index.ts @@ -52,14 +52,20 @@ function sync(hub: Hub, config: UserSettings): void { userId: 'local', }, (response) => { - hub.dispatch({ - type: 'SyncResponse', - payload: response, - }); + if (response.type === 'Error') { + hub.dispatch({ + type: 'ErrorEvent', + payload: response.error, + }); + } else { + state.content = []; + hub.dispatch({ + type: 'SyncResponse', + payload: response, + }); + } }, ); - - state.content = []; } } diff --git a/platforms/tktrex/extension/src/app/index.ts b/platforms/tktrex/extension/src/app/index.ts index f75498299..907d38305 100644 --- a/platforms/tktrex/extension/src/app/index.ts +++ b/platforms/tktrex/extension/src/app/index.ts @@ -22,4 +22,9 @@ void boot({ onLocationChange, }, onAuthenticated: tkTrexActions, + ui: { + common: { + errors: true, + }, + }, }); diff --git a/platforms/tktrex/extension/src/popup.tsx b/platforms/tktrex/extension/src/popup.tsx index ba7b9feb3..5b0dde2aa 100644 --- a/platforms/tktrex/extension/src/popup.tsx +++ b/platforms/tktrex/extension/src/popup.tsx @@ -6,11 +6,13 @@ import { AccountBox as AccountBoxIcon, } from '@material-ui/icons'; import * as React from 'react'; +import hub from './app/hub'; renderPopup({ platform: 'TikTok', platformURL: 'https://tiktok.com', logo: '/tktrex-logo.png', + hub, settings: { enabled: { researchTag: true, diff --git a/platforms/tktrex/shared/package.json b/platforms/tktrex/shared/package.json index 0d589afb2..036175f85 100644 --- a/platforms/tktrex/shared/package.json +++ b/platforms/tktrex/shared/package.json @@ -1,6 +1,7 @@ { "name": "@tktrex/shared", - "packageManager": "yarn@3.1.1", + "version": "2.8.1", + "packageManager": "yarn@3.2.3", "scripts": { "clean": "rm -rf ./build", "lint": "eslint ./src", @@ -35,5 +36,10 @@ "mongodb": "^4.12.1", "ts-endpoint": "^2.0.0" }, - "version": "2.8.1" + "typedoc": { + "entryPoint": "./src/index.ts", + "readmeFile": "./README.md", + "displayName": "TK TrEx - Shared", + "tsconfig": "./tsconfig.json" + } } diff --git a/platforms/tktrex/shared/src/index.ts b/platforms/tktrex/shared/src/index.ts new file mode 100644 index 000000000..f10cd8388 --- /dev/null +++ b/platforms/tktrex/shared/src/index.ts @@ -0,0 +1,2 @@ +export * from './models'; +export * from './providers'; diff --git a/platforms/tktrex/shared/src/models/metadata/MetadataBase.ts b/platforms/tktrex/shared/src/models/metadata/MetadataBase.ts index ea56f0293..4d113ed16 100644 --- a/platforms/tktrex/shared/src/models/metadata/MetadataBase.ts +++ b/platforms/tktrex/shared/src/models/metadata/MetadataBase.ts @@ -6,7 +6,7 @@ export const TKMetadataBase = t.type( ...MetadataBase.props, timelineId: t.string, }, - 'TKMetadataBase' + 'TKMetadataBase', ); export type TKMetadataBase = t.TypeOf; diff --git a/platforms/tktrex/shared/src/parser/metadata.ts b/platforms/tktrex/shared/src/parser/metadata.ts index 8d0de5e5e..411f39389 100644 --- a/platforms/tktrex/shared/src/parser/metadata.ts +++ b/platforms/tktrex/shared/src/parser/metadata.ts @@ -16,7 +16,7 @@ export const toMetadata: BuildMetadataFn = ( clientTime: entry.source.html.clientTime, href: entry.source.html.href, thumbnails: [], - blang: entry.source.html.blang ?? null + blang: entry.source.html.blang ?? null, }; switch (entry.findings.nature.type) { diff --git a/platforms/tktrex/shared/src/providers/index.ts b/platforms/tktrex/shared/src/providers/index.ts new file mode 100644 index 000000000..51cfdacbf --- /dev/null +++ b/platforms/tktrex/shared/src/providers/index.ts @@ -0,0 +1 @@ +export * from './api.provider'; diff --git a/platforms/ycai/studio/jest.config.js b/platforms/ycai/studio/jest.config.js index ad2ed12f5..dd5d56e53 100644 --- a/platforms/ycai/studio/jest.config.js +++ b/platforms/ycai/studio/jest.config.js @@ -8,8 +8,8 @@ const tsPaths = pathsToModuleNameMapper(tsConfig.compilerOptions.paths, { const moduleNameMapper = { ...tsPaths, - '\\.(svg|ttf)$': '/__mocks__/fileMock.js', - '\\.(css)$': '/__mocks__/styleMock.js', + '\\.(svg|ttf)$': '/../../../__mocks__/fileMock.js', + '\\.(css)$': '/../../../__mocks__/styleMock.js', }; /** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ diff --git a/platforms/ycai/studio/package.json b/platforms/ycai/studio/package.json index 047f262fc..df4b611cd 100644 --- a/platforms/ycai/studio/package.json +++ b/platforms/ycai/studio/package.json @@ -58,11 +58,11 @@ "style-loader": "^3.3.1", "svgdom": "^0.1.10", "ts-jest": "^27.1.5", - "ts-loader": "^9.4.1", + "ts-loader": "^9.4.2", "ts-node": "^10.9.1", "typescript": "^4.8.4", - "webpack": "^5.74.0", - "webpack-bundle-analyzer": "^4.6.1", + "webpack": "^5.75.0", + "webpack-bundle-analyzer": "^4.7.0", "webpack-cli": "^4.10.0", "webpack-dev-server": "^4.11.1" }, diff --git a/platforms/yttrex/backend/config/settings.json b/platforms/yttrex/backend/config/settings.json index 39672a513..a761a030d 100644 --- a/platforms/yttrex/backend/config/settings.json +++ b/platforms/yttrex/backend/config/settings.json @@ -1,19 +1,19 @@ { "schema": { - "supporters": "supporters", - "htmls": "htmls", - "metadata": "metadata", - "stats": "trexstats", - "leaves": "leaves", - "errors": "errors", - "answers": "answers", - "recommendations": "recommendations", - "ytvids": "ytvids", - "experiments": "experiments2", - "emails": "emails", - "tokens": "tokens", - "creators": "creators", - "ads": "ads" + "supporters": "supporters", + "htmls": "htmls", + "metadata": "metadata", + "stats": "trexstats", + "leaves": "leaves", + "errors": "errors", + "answers": "answers", + "recommendations": "recommendations", + "ytvids": "ytvids", + "experiments": "experiments", + "emails": "emails", + "tokens": "tokens", + "creators": "creators", + "ads": "ads" }, "mongoHost": "localhost", "mongoPort": 27017, diff --git a/platforms/yttrex/backend/config/trexstats.json b/platforms/yttrex/backend/config/trexstats.json index db230ddf3..ed46c143c 100644 --- a/platforms/yttrex/backend/config/trexstats.json +++ b/platforms/yttrex/backend/config/trexstats.json @@ -151,7 +151,7 @@ }, { "name": "experiments", - "column": "experiments2", + "column": "experiments", "timevar": "when", "variables": [{ "name": "total", "selector": {} }] }, diff --git a/platforms/yttrex/backend/package.json b/platforms/yttrex/backend/package.json index 2e42f3d20..ff016a463 100644 --- a/platforms/yttrex/backend/package.json +++ b/platforms/yttrex/backend/package.json @@ -88,5 +88,11 @@ "_moduleAliases": { "@shared": "../../../packages/shared/build", "@yttrex/shared": "../shared/build" + }, + "typedoc": { + "entryPoint": "./bin/server.ts", + "readmeFile": "./README.md", + "displayName": "YT TrEx - Backend", + "tsconfig": "./tsconfig.json" } } diff --git a/platforms/yttrex/backend/routes/__tests__/experiments.e2e.ts b/platforms/yttrex/backend/routes/__tests__/experiments.e2e.ts new file mode 100644 index 000000000..2ded3f764 --- /dev/null +++ b/platforms/yttrex/backend/routes/__tests__/experiments.e2e.ts @@ -0,0 +1,50 @@ +/* eslint-disable import/first */ +// mock curly module +jest.mock('fetch-opengraph'); + +// import test utils +import { CommonStepArb } from '@shared/arbitraries/Step.arb'; +import { fc } from '@shared/test'; +import { GetTest, Test } from '../../tests/Test'; + +describe('Experiments API', () => { + let test: Test; + + beforeAll(async () => { + test = await GetTest(); + }); + + afterAll(async () => { + await test.mongo.close(); + }); + + describe('POST /v2/directives', () => { + it('fails with an incorrect experiment', async () => { + const { body } = await test.app + .post(`/api/v2/directives`) + .send({}) + .expect(500); + + expect(body).toMatchObject({}); + }); + + it('succeeds with a correct experiment', async () => { + const steps = fc.sample(CommonStepArb, 10); + + const { body } = await test.app + .post(`/api/v2/directives`) + .send(steps) + .expect(200); + + expect(body).toMatchObject({ + status: 'created', + }); + + await test.mongo3.deleteMany( + test.mongo, + test.config.get('schema').experiments, + { experimentId: body.experimentId } + ); + }); + }); +}); diff --git a/platforms/yttrex/backend/scripts/build-indexes.js b/platforms/yttrex/backend/scripts/build-indexes.js index 89fcbcecb..9347ce51b 100644 --- a/platforms/yttrex/backend/scripts/build-indexes.js +++ b/platforms/yttrex/backend/scripts/build-indexes.js @@ -68,10 +68,10 @@ checkret('ads savingTime', ret); ret = db.ads.createIndex({ id: 1 }, { unique: true }); checkret('ads id', ret); -ret = db.experiments2.createIndex({ experimentId: -1, unique: true }); -checkret('experiments2 experimentId', ret); -ret = db.experiments2.createIndex({ when: -1 }); -checkret('experiments2 when', ret); +ret = db.experiments.createIndex({ experimentId: -1 }, { unique: true }); +checkret('experiments experimentId', ret); +ret = db.experiments.createIndex({ when: -1 }); +checkret('experiments when', ret); /* below this the collections are for youchoose */ ret = db.recommendations.createIndex({ urlId: 1 }, { unique: true }); diff --git a/platforms/yttrex/docs/docs/backend.md b/platforms/yttrex/docs/docs/backend.md index 2cf45a6fe..96434e76d 100644 --- a/platforms/yttrex/docs/docs/backend.md +++ b/platforms/yttrex/docs/docs/backend.md @@ -1,6 +1,28 @@ --- -title: Backend sidebar_position: 3 +title: Backend +id: backend --- -The `@tktrex/shared` module contains `endpoints`, `models` and other definitions needed by `@tktrex` ecosystem. +import CodeBlock from '@theme/CodeBlock'; + +**Build the backend for development:** + +- Start the mongoDB container: + + docker-compose up -d mongodb + + +- Start the mongo-indexes container: + + docker-compose up -d mongo-yt-indexes + +- Start the backend: + + yarn pm2 start platforms/yttrex/backend/ecosystem.dev.config.js + + +- [Optional] Set the watcher for the logs: + + yarn pm2 logs yt:backend:watch + diff --git a/platforms/yttrex/docs/docs/enviroment.mdx b/platforms/yttrex/docs/docs/enviroment.mdx new file mode 100644 index 000000000..2e65b50c9 --- /dev/null +++ b/platforms/yttrex/docs/docs/enviroment.mdx @@ -0,0 +1,218 @@ +--- +sidebar_position: 4 +title: Enviroment Variables +id: api +--- + +import style from './markdown-styles.module.css'; + +

    Shared enviroment variables

    + +

    + API_ROOT +

    + Points to the top level API URL. +
    + Default: +
      +
    • + Production: + + https://youtube.tracking.exposed/api + +
    • +
    • + Development: + + http://localhost:9000/api + +
    • +
    +
    +
    +

    +

    + WEB_ROOT + +

    + Poins to the tracking exposed YT page. +
    + Default: +
      +
    • + Production: + + https://youtube.tracking.exposed + +
    • +
    • + Development: + + http://localhost:1313 + +
    • +
    +
    +
    +

    +

    + DATA_CONTRIBUTION_ENABLED +

    + Dictates if the extension should send data to the server. +
    + Default: +
      +
    • + Production: + + false + +
    • +
    • + Development: + + true + +
    • +
    +
    +
    +

    +

    + FLUSH_INTERVAL +

    + How often the extension sends data to the server, measured in ms. +
    + Default: +
      +
    • + Production: + + 10000 + +
    • +
    • + Development: + + 4000 + +
    • +
    +
    +
    +

    +

    + DEBUG +

    + Allows you to toggle the debug output for different parts of your module as well as the module as a whole. +
    + Default: +
      +
    • + Production: + + @trex\* + +
    • +
    • + Development: + + @trex\* + +
    • +
    +
    +
    +

    + +

    Development enviroment variables

    + +

    + BUNDLE_TARGET +

    + Allows you to configure the extension output depending on the browser. +
    + Default: +
      +
    • + Development: + + firefox + +
    • +
    +
    +
    +

    +

    + BUILD_TRANSPILE_ONLY +

    + Avoids typescript type cheking on build. +
    + Default: +
      +
    • + Development: + + true + +
    • +
    +
    +
    +

    +

    + NODE_ENV +

    + Used by Express to alter its own default behavior. +
    + Default: +
      +
    • + Development: + + development + +
    • +
    +
    +
    +

    + +

    Guardoni enviroment variables

    + +

    + PUBLIC_KEY +

    + Guardoni Public Key +
    + Default: +
      +
    • + + H7AsuUszehN4qKTj2GYYwNNzkJVqUQBRo2wgKevzeUwx + +
    • +
    +
    +
    +

    + +

    + SECRET_KEY +

    + Guardoni Secret Key +
    + Default: +
      +
    • + + v6pyCC8TzKd1uq7LnGaLQDaZ4qmJwKCne7moXwr1EJthxne4sqBWPkHwqyH8QH5n9pNQGAGBeA9hZ1jwy4hUyeW + + +
    • +
    +
    +
    +

    + diff --git a/platforms/yttrex/docs/docs/intro.md b/platforms/yttrex/docs/docs/intro.md index 26279482e..4e564712e 100644 --- a/platforms/yttrex/docs/docs/intro.md +++ b/platforms/yttrex/docs/docs/intro.md @@ -5,3 +5,5 @@ id: yttrex-intro --- # Introduction + +Welcome to the Youtube Scraper guide. diff --git a/platforms/yttrex/docs/docs/markdown-styles.module.css b/platforms/yttrex/docs/docs/markdown-styles.module.css new file mode 100644 index 000000000..2043393e5 --- /dev/null +++ b/platforms/yttrex/docs/docs/markdown-styles.module.css @@ -0,0 +1,18 @@ +.env_var{ + margin-bottom: 40px !important; +} +.env_var > span{ + background: #25c2a0; + color: #1b1b1b; + padding: 2px 5px; + border-radius: 3px; + font-weight: bold; +} + +.env_var code{ + margin-left: 5px; +} + +.env_var li{ + list-style: none; +} \ No newline at end of file diff --git a/platforms/yttrex/docs/package.json b/platforms/yttrex/docs/package.json index 62cfc6d3c..ceac66927 100644 --- a/platforms/yttrex/docs/package.json +++ b/platforms/yttrex/docs/package.json @@ -15,8 +15,8 @@ "typecheck": "tsc" }, "dependencies": { - "@docusaurus/core": "2.1.0", - "@docusaurus/preset-classic": "2.1.0", + "@docusaurus/core": "2.2.0", + "@docusaurus/preset-classic": "2.2.0", "@mdx-js/react": "^1.6.21", "clsx": "^1.1.1", "prism-react-renderer": "^1.3.5", @@ -24,7 +24,7 @@ "react-dom": "^17.0.2" }, "devDependencies": { - "@docusaurus/module-type-aliases": "2.1.0", + "@docusaurus/module-type-aliases": "2.2.0", "@tsconfig/docusaurus": "^1.0.6", "typescript": "^4.8.4" }, diff --git a/platforms/yttrex/extension/jest.config.js b/platforms/yttrex/extension/jest.config.js index cf246548d..793059f85 100644 --- a/platforms/yttrex/extension/jest.config.js +++ b/platforms/yttrex/extension/jest.config.js @@ -9,7 +9,7 @@ const tsPaths = pathsToModuleNameMapper(tsConfig.compilerOptions.paths, { const moduleNameMapper = { ...tsPaths, '\\.(svg|ttf)$': '/__mocks__/fileMock.js', - '\\.(css)$': '/__mocks__/styleMock.js', + '\\.(css)$': '../../../__mocks__/styleMock.js', }; /** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ diff --git a/platforms/yttrex/extension/package.json b/platforms/yttrex/extension/package.json index 3e0ee5d0d..ee9543735 100644 --- a/platforms/yttrex/extension/package.json +++ b/platforms/yttrex/extension/package.json @@ -44,11 +44,11 @@ "mini-css-extract-plugin": "^2.6.1", "sass-loader": "^12.6.0", "style-loader": "^3.3.1", - "ts-loader": "^9.4.1", + "ts-loader": "^9.4.2", "ts-node": "^10.9.1", "typescript": "^4.8.4", "uglifyjs-webpack-plugin": "^2.2.0", - "webpack": "^5.74.0", + "webpack": "^5.75.0", "webpack-combine-loaders": "^2.0.4", "webpack-dev-server": "^4.11.1", "webpack-notifier": "^1.15.0" @@ -69,5 +69,11 @@ "tweetnacl": "^0.14.5", "tweetnacl-util": "^0.13.5", "uuid": "^9.0.0" + }, + "typedoc": { + "entryPoint": "./src/app/index.ts", + "readmeFile": "./README.md", + "displayName": "YT TrEx - Extension", + "tsconfig": "./tsconfig.json" } } diff --git a/platforms/yttrex/extension/src/popup.tsx b/platforms/yttrex/extension/src/popup.tsx index f35af724d..fcdf9e19f 100644 --- a/platforms/yttrex/extension/src/popup.tsx +++ b/platforms/yttrex/extension/src/popup.tsx @@ -1,17 +1,19 @@ -import { renderPopup } from '@shared/extension/popup'; -import config from '@shared/extension/config'; -import * as React from 'react'; import { - StayCurrentLandscape as StayCurrentLandscapeIcon, - OndemandVideo as OndemandVideoIcon, AccountBox as AccountBoxIcon, + OndemandVideo as OndemandVideoIcon, SearchOutlined, + StayCurrentLandscape as StayCurrentLandscapeIcon, } from '@material-ui/icons'; +import config from '@shared/extension/config'; +import { renderPopup } from '@shared/extension/popup'; +import * as React from 'react'; +import ytHub from './handlers/hub'; renderPopup({ platform: 'YouTube', platformURL: 'https://youtube.com', logo: '/yttrex-logo.png', + hub: ytHub, settings: { enabled: { researchTag: true, diff --git a/platforms/yttrex/shared/package.json b/platforms/yttrex/shared/package.json index 3c93432bc..8acd2de04 100644 --- a/platforms/yttrex/shared/package.json +++ b/platforms/yttrex/shared/package.json @@ -42,5 +42,11 @@ "ts-node": "^10.9.1", "tsconfig-paths": "^4.1.0", "typescript": "^4.8.4" + }, + "typedoc": { + "entryPoint": "./src/index.ts", + "readmeFile": "./README.md", + "displayName": "YT TrEx - Shared", + "tsconfig": "./tsconfig.json" } } diff --git a/platforms/yttrex/shared/src/index.ts b/platforms/yttrex/shared/src/index.ts new file mode 100644 index 000000000..254ec8d9f --- /dev/null +++ b/platforms/yttrex/shared/src/index.ts @@ -0,0 +1 @@ +export * from './providers'; diff --git a/platforms/yttrex/shared/src/providers/api.provider.ts b/platforms/yttrex/shared/src/providers/api.provider.ts index 196fd8bae..a1dcaac6f 100644 --- a/platforms/yttrex/shared/src/providers/api.provider.ts +++ b/platforms/yttrex/shared/src/providers/api.provider.ts @@ -6,8 +6,18 @@ import { } from '@shared/providers/api.provider'; import * as Endpoints from '../endpoints'; +/** + * The API client for YT endpoints + */ type YTAPIClient = APIClient; +/** + * + * @param opts - {@link GetAPIOptions} + * + * @returns An object with {@link YTAPIClient} to communicate with + * YT endpoints and with {@link HTTPClient} for plain HTTP requests + */ export const GetAPIClient = ( opts: GetAPIOptions ): { diff --git a/platforms/yttrex/shared/src/providers/index.ts b/platforms/yttrex/shared/src/providers/index.ts new file mode 100644 index 000000000..51cfdacbf --- /dev/null +++ b/platforms/yttrex/shared/src/providers/index.ts @@ -0,0 +1 @@ +export * from './api.provider'; diff --git a/scripts/build.sh b/scripts/build.sh index 5cdee4a9e..34d0f4748 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -12,8 +12,7 @@ yarn workspaces foreach run clean # build shared yarn shared build -# TODO: docs fail to build at the moment -# ./docs/scripts/build.sh +./docs/scripts/build.sh # build yttrex extension diff --git a/scripts/shrink.sh b/scripts/shrink.sh index 58842d3d3..16cdcf780 100755 --- a/scripts/shrink.sh +++ b/scripts/shrink.sh @@ -57,7 +57,6 @@ mv TODO.md README.md zip $fileout -r ./* \ .npmrc .nvmrc .yarn .yarnrc.yml \ - -x "yarn.lock" \ -x ".yarn/unplugged/**" \ -x ".yarn/cache/**" \ -x ".vscode/**" \ diff --git a/tsconfig.docs.json b/tsconfig.docs.json index c26023f9d..5ef480ad5 100644 --- a/tsconfig.docs.json +++ b/tsconfig.docs.json @@ -7,6 +7,8 @@ "isolatedModules": true, "esModuleInterop": true, "jsx": "react", + "module": "esnext", + "target": "es5", "rootDir": "./", "resolveJsonModule": true, "skipDefaultLibCheck": true, diff --git a/typedoc.js b/typedoc.js new file mode 100644 index 000000000..d51c5756a --- /dev/null +++ b/typedoc.js @@ -0,0 +1,32 @@ +/** + * @type {import('typedoc').TypeDocOptions} + */ +module.exports = { + name: 'TRex', + tsconfig: './tsconfig.docs.json', + entryPointStrategy: 'packages', + entryPoints: [ + './packages/shared', + './packages/taboule', + './platforms/tktrex/shared', + './platforms/tktrex/extension', + './platforms/tktrex/backend', + './platforms/yttrex/shared', + './platforms/yttrex/extension', + './platforms/yttrex/backend', + ], + exclude: ['**/*+(index|.spec|.e2e).ts', '**/build/**', '**/node_modules/**'], + // excludeNotDocumented: true, + excludeInternal: true, + excludeExternals: true, + disableSources: true, + skipErrorChecking: true, + validation: { + invalidLink: false, + notDocumented: true, + notExported: false, + }, + out: 'build/docs', + theme: 'my-theme', + logLevel: 'Verbose', +}; diff --git a/typedoc.json b/typedoc.json deleted file mode 100644 index 59f70dadd..000000000 --- a/typedoc.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "TRex", - "tsconfig": "./tsconfig.docs.json", - "entryPointStrategy": "expand", - "entryPoints": [ - "./packages/shared/src", - "./packages/taboule/src", - "./backend", - "./extension/src", - "./guardoni/src", - "./YCAI/src" - ], - "external-modulemap": [ - ".*/packages/([\\w\\-_]+)/", - ".*/yttrex/([\\w\\-_]+)/" - ], - "exclude": [ - "**/*+(index|.spec|.e2e).ts", - "**/build/**", - "**/node_modules/**" - ], - "out": "docs", - "theme": "default", - "excludeExternals": false, - "logLevel": "Verbose" -} diff --git a/yarn.lock b/yarn.lock index 7bc445acd..dc9c1ade5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3462,9 +3462,9 @@ __metadata: languageName: node linkType: hard -"@docusaurus/core@npm:2.1.0": - version: 2.1.0 - resolution: "@docusaurus/core@npm:2.1.0" +"@docusaurus/core@npm:2.2.0": + version: 2.2.0 + resolution: "@docusaurus/core@npm:2.2.0" dependencies: "@babel/core": ^7.18.6 "@babel/generator": ^7.18.7 @@ -3476,13 +3476,13 @@ __metadata: "@babel/runtime": ^7.18.6 "@babel/runtime-corejs3": ^7.18.6 "@babel/traverse": ^7.18.8 - "@docusaurus/cssnano-preset": 2.1.0 - "@docusaurus/logger": 2.1.0 - "@docusaurus/mdx-loader": 2.1.0 + "@docusaurus/cssnano-preset": 2.2.0 + "@docusaurus/logger": 2.2.0 + "@docusaurus/mdx-loader": 2.2.0 "@docusaurus/react-loadable": 5.5.2 - "@docusaurus/utils": 2.1.0 - "@docusaurus/utils-common": 2.1.0 - "@docusaurus/utils-validation": 2.1.0 + "@docusaurus/utils": 2.2.0 + "@docusaurus/utils-common": 2.2.0 + "@docusaurus/utils-validation": 2.2.0 "@slorber/static-site-generator-webpack-plugin": ^4.0.7 "@svgr/webpack": ^6.2.1 autoprefixer: ^10.4.7 @@ -3542,40 +3542,40 @@ __metadata: react-dom: ^16.8.4 || ^17.0.0 bin: docusaurus: bin/docusaurus.mjs - checksum: c8f12d87d0e456784a28f2d55bdd31c0ea65f2cf35446f3faa063fc0651e5037553de84b051b1a264799dfdff35d337fb4656574a50269554b07ebe6a64eb2e5 + checksum: ff47e6cf85b0f7dc0a9e5b9b0d26e33a6f7385f067566ff4f9b026d044839e4dfb4c3bc9476cfab7a7e95a0065478a534cda403dac3bb7bac9987406f1978a11 languageName: node linkType: hard -"@docusaurus/cssnano-preset@npm:2.1.0": - version: 2.1.0 - resolution: "@docusaurus/cssnano-preset@npm:2.1.0" +"@docusaurus/cssnano-preset@npm:2.2.0": + version: 2.2.0 + resolution: "@docusaurus/cssnano-preset@npm:2.2.0" dependencies: cssnano-preset-advanced: ^5.3.8 postcss: ^8.4.14 postcss-sort-media-queries: ^4.2.1 tslib: ^2.4.0 - checksum: 3589dcd8dc24e13598bdc9194470bbe3633dadf758db7860b9782df0e82adab5b4661167eeba2d49cce2f6a1e84b6126b1e9186c0d2bc3495f013f7fd25864e1 + checksum: eff9707414867bf844ef5d84bde1c843593b9b7f542dd1a0a7acc88798b0c5ddb721124229912c234bd88b93cb18d8d69c6115cbf706c2a790497f7d9dd23757 languageName: node linkType: hard -"@docusaurus/logger@npm:2.1.0": - version: 2.1.0 - resolution: "@docusaurus/logger@npm:2.1.0" +"@docusaurus/logger@npm:2.2.0": + version: 2.2.0 + resolution: "@docusaurus/logger@npm:2.2.0" dependencies: chalk: ^4.1.2 tslib: ^2.4.0 - checksum: af13df70b65b5ffedb3faafc9b9a1a26380ff33967e306bf0f3c7cf168efcec8d488712cbfefe5e60a1b416bde6e451b800a978477508bbae2a19c38250e86a5 + checksum: b3ce6e18721a34793a892221485c941d5f7112ae96d569f7918d12c1f50bde9c99bc4195f4d225e874b2bd5800a35413bfeaf78b63c6fbae5f3015d44d118eee languageName: node linkType: hard -"@docusaurus/mdx-loader@npm:2.1.0, @docusaurus/mdx-loader@npm:^2.0.0": - version: 2.1.0 - resolution: "@docusaurus/mdx-loader@npm:2.1.0" +"@docusaurus/mdx-loader@npm:2.2.0, @docusaurus/mdx-loader@npm:^2.0.0": + version: 2.2.0 + resolution: "@docusaurus/mdx-loader@npm:2.2.0" dependencies: "@babel/parser": ^7.18.8 "@babel/traverse": ^7.18.8 - "@docusaurus/logger": 2.1.0 - "@docusaurus/utils": 2.1.0 + "@docusaurus/logger": 2.2.0 + "@docusaurus/utils": 2.2.0 "@mdx-js/mdx": ^1.6.22 escape-html: ^1.0.3 file-loader: ^6.2.0 @@ -3592,16 +3592,16 @@ __metadata: peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 799982ad50e182f4428d13a52c2790eba5b3cb84744220bd55fd64672a5388305f07cac078581dc66047775e3ccb30c4e49d8c1b285a2ebe38670859896cfe5c + checksum: fee586498f43c46581062e681424c4637e75d505d813d8bf25f5315c912560f6600cd925bc5b07a93d5d5966741439578e7e72f30030b4c58a5cfdf72e0d8928 languageName: node linkType: hard -"@docusaurus/module-type-aliases@npm:2.1.0": - version: 2.1.0 - resolution: "@docusaurus/module-type-aliases@npm:2.1.0" +"@docusaurus/module-type-aliases@npm:2.2.0": + version: 2.2.0 + resolution: "@docusaurus/module-type-aliases@npm:2.2.0" dependencies: "@docusaurus/react-loadable": 5.5.2 - "@docusaurus/types": 2.1.0 + "@docusaurus/types": 2.2.0 "@types/history": ^4.7.11 "@types/react": "*" "@types/react-router-config": "*" @@ -3611,21 +3611,21 @@ __metadata: peerDependencies: react: "*" react-dom: "*" - checksum: 229e792fbc6b272944d1d61d3375256ff9dde61344bc32d60ccfa35be8ee535cb32b0ac697f997a10cae984000f56ad9c246a14bf111b4b45e71bc8f9f4dd1d6 + checksum: ebcb9dff2f88b5962cd34aaa78b1a48531da4776229ef507665e3f053cccb185aadcc16c3703f21031e14ccb6c8312662a6eec1a2a06bc0a423221ad200e1e9e languageName: node linkType: hard -"@docusaurus/plugin-content-blog@npm:2.1.0": - version: 2.1.0 - resolution: "@docusaurus/plugin-content-blog@npm:2.1.0" - dependencies: - "@docusaurus/core": 2.1.0 - "@docusaurus/logger": 2.1.0 - "@docusaurus/mdx-loader": 2.1.0 - "@docusaurus/types": 2.1.0 - "@docusaurus/utils": 2.1.0 - "@docusaurus/utils-common": 2.1.0 - "@docusaurus/utils-validation": 2.1.0 +"@docusaurus/plugin-content-blog@npm:2.2.0": + version: 2.2.0 + resolution: "@docusaurus/plugin-content-blog@npm:2.2.0" + dependencies: + "@docusaurus/core": 2.2.0 + "@docusaurus/logger": 2.2.0 + "@docusaurus/mdx-loader": 2.2.0 + "@docusaurus/types": 2.2.0 + "@docusaurus/utils": 2.2.0 + "@docusaurus/utils-common": 2.2.0 + "@docusaurus/utils-validation": 2.2.0 cheerio: ^1.0.0-rc.12 feed: ^4.2.2 fs-extra: ^10.1.0 @@ -3638,21 +3638,21 @@ __metadata: peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 9cc47886f9be8eb2088034e4caa0e7e6579246bc7a4169dc1beffcc80dcf46c8d210aa85d5df759dba95dbe615247399f434cc71e32b0441e091480a855c013f + checksum: 6d51e3b17b6fdeb4e04ddebe4d4ba8c7cc830bdc066c2b7898e4dee185e408f0d28ea873d18b5ee4406a568a9b05f70d17c986a9ed16b16b1450d34ca190fd06 languageName: node linkType: hard -"@docusaurus/plugin-content-docs@npm:2.1.0, @docusaurus/plugin-content-docs@npm:^2.0.0": - version: 2.1.0 - resolution: "@docusaurus/plugin-content-docs@npm:2.1.0" - dependencies: - "@docusaurus/core": 2.1.0 - "@docusaurus/logger": 2.1.0 - "@docusaurus/mdx-loader": 2.1.0 - "@docusaurus/module-type-aliases": 2.1.0 - "@docusaurus/types": 2.1.0 - "@docusaurus/utils": 2.1.0 - "@docusaurus/utils-validation": 2.1.0 +"@docusaurus/plugin-content-docs@npm:2.2.0, @docusaurus/plugin-content-docs@npm:^2.0.0": + version: 2.2.0 + resolution: "@docusaurus/plugin-content-docs@npm:2.2.0" + dependencies: + "@docusaurus/core": 2.2.0 + "@docusaurus/logger": 2.2.0 + "@docusaurus/mdx-loader": 2.2.0 + "@docusaurus/module-type-aliases": 2.2.0 + "@docusaurus/types": 2.2.0 + "@docusaurus/utils": 2.2.0 + "@docusaurus/utils-validation": 2.2.0 "@types/react-router-config": ^5.0.6 combine-promises: ^1.1.0 fs-extra: ^10.1.0 @@ -3665,116 +3665,116 @@ __metadata: peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 40100821e07dcb37192f1b93b84f22ced932054c21342a45019241d13eb13b1663465db123aef2494c2f73c018e41400b6694008b0c9e09d4ec84c96ad7974fe + checksum: 3a262b49dd6f9d59f4e10dd25185bb4280dbf77b62e28a1dd658d5db0861ae8c82dd025f24212f0d8fec0a46a37f6ef0f2cde25ac736d445247e8727177da660 languageName: node linkType: hard -"@docusaurus/plugin-content-pages@npm:2.1.0": - version: 2.1.0 - resolution: "@docusaurus/plugin-content-pages@npm:2.1.0" +"@docusaurus/plugin-content-pages@npm:2.2.0": + version: 2.2.0 + resolution: "@docusaurus/plugin-content-pages@npm:2.2.0" dependencies: - "@docusaurus/core": 2.1.0 - "@docusaurus/mdx-loader": 2.1.0 - "@docusaurus/types": 2.1.0 - "@docusaurus/utils": 2.1.0 - "@docusaurus/utils-validation": 2.1.0 + "@docusaurus/core": 2.2.0 + "@docusaurus/mdx-loader": 2.2.0 + "@docusaurus/types": 2.2.0 + "@docusaurus/utils": 2.2.0 + "@docusaurus/utils-validation": 2.2.0 fs-extra: ^10.1.0 tslib: ^2.4.0 webpack: ^5.73.0 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: c2fc027ce6b0b1cdbe5c6d1c2d9289cde80f263bb34297425783b7687cdfae1d4c045736b94f45735d6f4275978f2890f39c7ed383a558b48e84582cc67ab39b + checksum: 1e22fb8deb9b8f612ebe1ea6f8b1ce76acfc6eb8cbc0d5fc9b99b99d64e2f356d0fb136247e9f72cd84b2788eaf953a640d23ff7e2a5d650de6ec06468181a94 languageName: node linkType: hard -"@docusaurus/plugin-debug@npm:2.1.0": - version: 2.1.0 - resolution: "@docusaurus/plugin-debug@npm:2.1.0" +"@docusaurus/plugin-debug@npm:2.2.0": + version: 2.2.0 + resolution: "@docusaurus/plugin-debug@npm:2.2.0" dependencies: - "@docusaurus/core": 2.1.0 - "@docusaurus/types": 2.1.0 - "@docusaurus/utils": 2.1.0 + "@docusaurus/core": 2.2.0 + "@docusaurus/types": 2.2.0 + "@docusaurus/utils": 2.2.0 fs-extra: ^10.1.0 react-json-view: ^1.21.3 tslib: ^2.4.0 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: e5fd1e90d8cb34cdfeae17b147514f78ea258f2629df55d2cb8bc09389e63da08285b630950c21cb0108094abadfcc2ba601e07c84cb02d48757b4a47c87f4d3 + checksum: edf2a416b790591c66ffa8ca1fd4ed15ab2d2dc15cd67c5253714502a6828739a7a47996c3664731c6b24da1da5862ddfef60defb84bd3b8273313267db0cb54 languageName: node linkType: hard -"@docusaurus/plugin-google-analytics@npm:2.1.0": - version: 2.1.0 - resolution: "@docusaurus/plugin-google-analytics@npm:2.1.0" +"@docusaurus/plugin-google-analytics@npm:2.2.0": + version: 2.2.0 + resolution: "@docusaurus/plugin-google-analytics@npm:2.2.0" dependencies: - "@docusaurus/core": 2.1.0 - "@docusaurus/types": 2.1.0 - "@docusaurus/utils-validation": 2.1.0 + "@docusaurus/core": 2.2.0 + "@docusaurus/types": 2.2.0 + "@docusaurus/utils-validation": 2.2.0 tslib: ^2.4.0 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 38949208ade800c3dc5f4e9d8d270364b7b5ce4e747aed6d4ad384ce1fb810e96c198c8e9db615ccbc5cb1f15f7f923dc0f82f9975898649549565c2985b10ac + checksum: 44ad3a6c1b661516cb87553103565af64a6f145d823b16882d5c7d23b99e091b7c4ba8323c5f6fe756e70fbb0f9f31d56c74512dc17da6d3c16dfabd17d719ac languageName: node linkType: hard -"@docusaurus/plugin-google-gtag@npm:2.1.0": - version: 2.1.0 - resolution: "@docusaurus/plugin-google-gtag@npm:2.1.0" +"@docusaurus/plugin-google-gtag@npm:2.2.0": + version: 2.2.0 + resolution: "@docusaurus/plugin-google-gtag@npm:2.2.0" dependencies: - "@docusaurus/core": 2.1.0 - "@docusaurus/types": 2.1.0 - "@docusaurus/utils-validation": 2.1.0 + "@docusaurus/core": 2.2.0 + "@docusaurus/types": 2.2.0 + "@docusaurus/utils-validation": 2.2.0 tslib: ^2.4.0 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: fdfffc37e1880aa3b6fcc515152a2f7e746feb290ef3010f2d04ddfcf5c596fa0416e43f968a15d10010f7979d27bd36187c55d44df67c0f0584c86afd7d164a + checksum: 4e7d6fcc3f30f1d54933fdeb59d3065989596e91940304965635867808d89c7b864a394f5fab2bcde98037539bf6840efc692e856fb7a4ae32ce8b5f8a4e191a languageName: node linkType: hard -"@docusaurus/plugin-sitemap@npm:2.1.0": - version: 2.1.0 - resolution: "@docusaurus/plugin-sitemap@npm:2.1.0" - dependencies: - "@docusaurus/core": 2.1.0 - "@docusaurus/logger": 2.1.0 - "@docusaurus/types": 2.1.0 - "@docusaurus/utils": 2.1.0 - "@docusaurus/utils-common": 2.1.0 - "@docusaurus/utils-validation": 2.1.0 +"@docusaurus/plugin-sitemap@npm:2.2.0": + version: 2.2.0 + resolution: "@docusaurus/plugin-sitemap@npm:2.2.0" + dependencies: + "@docusaurus/core": 2.2.0 + "@docusaurus/logger": 2.2.0 + "@docusaurus/types": 2.2.0 + "@docusaurus/utils": 2.2.0 + "@docusaurus/utils-common": 2.2.0 + "@docusaurus/utils-validation": 2.2.0 fs-extra: ^10.1.0 sitemap: ^7.1.1 tslib: ^2.4.0 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: c3b8dccd86ba2474d1a25c3bb336fdf45bfc04f41663348c4449e98ee809bee02713677814a7fa457a91edee5a13c41be4fd3699d37562cd94ade0fded7be022 + checksum: 8ae78093d17a96fc2c6f3829d425731dae3af19b0eec29c61a6465342462a8c24da4c5a10f1a1b1813630d2408f2e11fa17af652b74b4e8fda975d4a00bf1389 languageName: node linkType: hard -"@docusaurus/preset-classic@npm:2.1.0, @docusaurus/preset-classic@npm:^2.0.0": - version: 2.1.0 - resolution: "@docusaurus/preset-classic@npm:2.1.0" - dependencies: - "@docusaurus/core": 2.1.0 - "@docusaurus/plugin-content-blog": 2.1.0 - "@docusaurus/plugin-content-docs": 2.1.0 - "@docusaurus/plugin-content-pages": 2.1.0 - "@docusaurus/plugin-debug": 2.1.0 - "@docusaurus/plugin-google-analytics": 2.1.0 - "@docusaurus/plugin-google-gtag": 2.1.0 - "@docusaurus/plugin-sitemap": 2.1.0 - "@docusaurus/theme-classic": 2.1.0 - "@docusaurus/theme-common": 2.1.0 - "@docusaurus/theme-search-algolia": 2.1.0 - "@docusaurus/types": 2.1.0 +"@docusaurus/preset-classic@npm:2.2.0, @docusaurus/preset-classic@npm:^2.0.0": + version: 2.2.0 + resolution: "@docusaurus/preset-classic@npm:2.2.0" + dependencies: + "@docusaurus/core": 2.2.0 + "@docusaurus/plugin-content-blog": 2.2.0 + "@docusaurus/plugin-content-docs": 2.2.0 + "@docusaurus/plugin-content-pages": 2.2.0 + "@docusaurus/plugin-debug": 2.2.0 + "@docusaurus/plugin-google-analytics": 2.2.0 + "@docusaurus/plugin-google-gtag": 2.2.0 + "@docusaurus/plugin-sitemap": 2.2.0 + "@docusaurus/theme-classic": 2.2.0 + "@docusaurus/theme-common": 2.2.0 + "@docusaurus/theme-search-algolia": 2.2.0 + "@docusaurus/types": 2.2.0 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 9a7507dfc3f3905c034d1b01765a358455586b23986d0db3e18a530b2aa74398e9021b1663c85cf41c64438b9e5670ae685f31730af69846455ea4792e03edf5 + checksum: 70214f17766097a2e9c4b21a343bf323f7ed3d2e23c6169577cd14333a074fa15aabff6532c1774ec17c54f50c1616dbd8625c41a115d2fe799b2b7fa830c2c9 languageName: node linkType: hard @@ -3790,22 +3790,22 @@ __metadata: languageName: node linkType: hard -"@docusaurus/theme-classic@npm:2.1.0": - version: 2.1.0 - resolution: "@docusaurus/theme-classic@npm:2.1.0" - dependencies: - "@docusaurus/core": 2.1.0 - "@docusaurus/mdx-loader": 2.1.0 - "@docusaurus/module-type-aliases": 2.1.0 - "@docusaurus/plugin-content-blog": 2.1.0 - "@docusaurus/plugin-content-docs": 2.1.0 - "@docusaurus/plugin-content-pages": 2.1.0 - "@docusaurus/theme-common": 2.1.0 - "@docusaurus/theme-translations": 2.1.0 - "@docusaurus/types": 2.1.0 - "@docusaurus/utils": 2.1.0 - "@docusaurus/utils-common": 2.1.0 - "@docusaurus/utils-validation": 2.1.0 +"@docusaurus/theme-classic@npm:2.2.0": + version: 2.2.0 + resolution: "@docusaurus/theme-classic@npm:2.2.0" + dependencies: + "@docusaurus/core": 2.2.0 + "@docusaurus/mdx-loader": 2.2.0 + "@docusaurus/module-type-aliases": 2.2.0 + "@docusaurus/plugin-content-blog": 2.2.0 + "@docusaurus/plugin-content-docs": 2.2.0 + "@docusaurus/plugin-content-pages": 2.2.0 + "@docusaurus/theme-common": 2.2.0 + "@docusaurus/theme-translations": 2.2.0 + "@docusaurus/types": 2.2.0 + "@docusaurus/utils": 2.2.0 + "@docusaurus/utils-common": 2.2.0 + "@docusaurus/utils-validation": 2.2.0 "@mdx-js/react": ^1.6.22 clsx: ^1.2.1 copy-text-to-clipboard: ^3.0.1 @@ -3822,20 +3822,20 @@ __metadata: peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: e6c57a187ef8fa5af322f5e39ab8f36c3e0fb0e4d01b4d85f951e1f3edec18c73f7c51ae8f9ba7c8c7d106c723ff0d7b393e781d88dfc7f604e2bcc865fe47ba + checksum: ccfb0bef12178d0fbe3329a3238cd6bf7223ee03d890594676c06490eabfd59908bb1872c1a007f605db4edf402bc49cdf14aa7116550e95844d5135a92c2969 languageName: node linkType: hard -"@docusaurus/theme-common@npm:2.1.0, @docusaurus/theme-common@npm:^2.0.0": - version: 2.1.0 - resolution: "@docusaurus/theme-common@npm:2.1.0" - dependencies: - "@docusaurus/mdx-loader": 2.1.0 - "@docusaurus/module-type-aliases": 2.1.0 - "@docusaurus/plugin-content-blog": 2.1.0 - "@docusaurus/plugin-content-docs": 2.1.0 - "@docusaurus/plugin-content-pages": 2.1.0 - "@docusaurus/utils": 2.1.0 +"@docusaurus/theme-common@npm:2.2.0, @docusaurus/theme-common@npm:^2.0.0": + version: 2.2.0 + resolution: "@docusaurus/theme-common@npm:2.2.0" + dependencies: + "@docusaurus/mdx-loader": 2.2.0 + "@docusaurus/module-type-aliases": 2.2.0 + "@docusaurus/plugin-content-blog": 2.2.0 + "@docusaurus/plugin-content-docs": 2.2.0 + "@docusaurus/plugin-content-pages": 2.2.0 + "@docusaurus/utils": 2.2.0 "@types/history": ^4.7.11 "@types/react": "*" "@types/react-router-config": "*" @@ -3847,22 +3847,22 @@ __metadata: peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 8620309cf8610aa2b2c577ec0e14deb2b6b2465ff847b666eacab2c79d3dbee0883070dc390495de3be9b33fdd0e667285e13ca99670460757064bec979983c5 + checksum: 23cbba8e7e24494c6d106ce3d0b90ef461580bfacef9f27dfbc4f0b33fcb349394faf2bedf0a44db8c455535e50e828e82270c8f159c3d8d60f0e0980170be4e languageName: node linkType: hard -"@docusaurus/theme-search-algolia@npm:2.1.0": - version: 2.1.0 - resolution: "@docusaurus/theme-search-algolia@npm:2.1.0" +"@docusaurus/theme-search-algolia@npm:2.2.0": + version: 2.2.0 + resolution: "@docusaurus/theme-search-algolia@npm:2.2.0" dependencies: "@docsearch/react": ^3.1.1 - "@docusaurus/core": 2.1.0 - "@docusaurus/logger": 2.1.0 - "@docusaurus/plugin-content-docs": 2.1.0 - "@docusaurus/theme-common": 2.1.0 - "@docusaurus/theme-translations": 2.1.0 - "@docusaurus/utils": 2.1.0 - "@docusaurus/utils-validation": 2.1.0 + "@docusaurus/core": 2.2.0 + "@docusaurus/logger": 2.2.0 + "@docusaurus/plugin-content-docs": 2.2.0 + "@docusaurus/theme-common": 2.2.0 + "@docusaurus/theme-translations": 2.2.0 + "@docusaurus/utils": 2.2.0 + "@docusaurus/utils-validation": 2.2.0 algoliasearch: ^4.13.1 algoliasearch-helper: ^3.10.0 clsx: ^1.2.1 @@ -3874,23 +3874,23 @@ __metadata: peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: cfe851c748b71e5f8b531ab77d4d1a1bed82e3311b93117538d4dba8128f99d86316192c25933b28e00ccc4a1991c10c0aa86c90e26097fea49ae38e39642806 + checksum: 42b6cb0322d6c772b7796ea6e9693d596554ebd087792ad71238cebedf3b632bfa8005138d521bce1ff118f49aea7d72e5dc97a03f236b4728a2dc7576870071 languageName: node linkType: hard -"@docusaurus/theme-translations@npm:2.1.0": - version: 2.1.0 - resolution: "@docusaurus/theme-translations@npm:2.1.0" +"@docusaurus/theme-translations@npm:2.2.0": + version: 2.2.0 + resolution: "@docusaurus/theme-translations@npm:2.2.0" dependencies: fs-extra: ^10.1.0 tslib: ^2.4.0 - checksum: 26d9f2889d44097c5a4e343d48cbd5d849fe7dbc9489402a9d71f35cca5e254fc6d9ffc360409eeea2c70a1dda92f6ee95630c6cb69b20688ce351505bbe18cc + checksum: 7fe7d104fd094f2af2321986a86edef1eb8ab25415ea94ab1b242d08aec7627b3d5790001631621cd80c57c710714308aad5adfbf570cb74e0f01fda93b610be languageName: node linkType: hard -"@docusaurus/types@npm:2.1.0": - version: 2.1.0 - resolution: "@docusaurus/types@npm:2.1.0" +"@docusaurus/types@npm:2.2.0": + version: 2.2.0 + resolution: "@docusaurus/types@npm:2.2.0" dependencies: "@types/history": ^4.7.11 "@types/react": "*" @@ -3903,13 +3903,13 @@ __metadata: peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: e6112cd682410e6979862ddd5763b14f4d5becb6b0be147c9745bb00b56845c491a62279a9dde7af54819a4a09aa0bb7a8b7cc9609414aee554e3d996a6992b8 + checksum: 5166ca49bb9333e4d733e4bf8d49d65e11ea6b39e4d8eecc24e1de24d61d2459c52dd8bd27362b66b03e41df96acf1a449145211b3bf0c5a59a987c77102e8f1 languageName: node linkType: hard -"@docusaurus/utils-common@npm:2.1.0": - version: 2.1.0 - resolution: "@docusaurus/utils-common@npm:2.1.0" +"@docusaurus/utils-common@npm:2.2.0": + version: 2.2.0 + resolution: "@docusaurus/utils-common@npm:2.2.0" dependencies: tslib: ^2.4.0 peerDependencies: @@ -3917,28 +3917,28 @@ __metadata: peerDependenciesMeta: "@docusaurus/types": optional: true - checksum: b4a9282f5595285a8e7d957a1d10ad46b2244875cd955fd5d4799ccc908f06ecd27283679ecdbe4394f3e326a74ceacd1c624c01158d5bcfdcb6be62c15fc6f0 + checksum: 05d23a2f82a1bc119e3ad6b37481c9bc984f62efd3a79046567216784b78fb20fe7452252d610bb4c063e4ded8a7ab7efa1dc9f9f228357c20b9f4729c7a0576 languageName: node linkType: hard -"@docusaurus/utils-validation@npm:2.1.0, @docusaurus/utils-validation@npm:^2.0.0": - version: 2.1.0 - resolution: "@docusaurus/utils-validation@npm:2.1.0" +"@docusaurus/utils-validation@npm:2.2.0, @docusaurus/utils-validation@npm:^2.0.0": + version: 2.2.0 + resolution: "@docusaurus/utils-validation@npm:2.2.0" dependencies: - "@docusaurus/logger": 2.1.0 - "@docusaurus/utils": 2.1.0 + "@docusaurus/logger": 2.2.0 + "@docusaurus/utils": 2.2.0 joi: ^17.6.0 js-yaml: ^4.1.0 tslib: ^2.4.0 - checksum: 63fa924768a7e7af99d5a84765429849f604f4e90ce4f60de7747b3fab8cd365315a1bcb1ad99bc56e92179e30eb54bd3526dc397283a522802b0cc71037d7ed + checksum: a30e47cf84628950176cc02a121f31b200b46cdccf02e80d76f24b51b9d33fccee35c43047f507b8fb48deb38f863580ecbcdc1393718c6f3a14fcd40d5d1ab6 languageName: node linkType: hard -"@docusaurus/utils@npm:2.1.0, @docusaurus/utils@npm:^2.0.0": - version: 2.1.0 - resolution: "@docusaurus/utils@npm:2.1.0" +"@docusaurus/utils@npm:2.2.0, @docusaurus/utils@npm:^2.0.0": + version: 2.2.0 + resolution: "@docusaurus/utils@npm:2.2.0" dependencies: - "@docusaurus/logger": 2.1.0 + "@docusaurus/logger": 2.2.0 "@svgr/webpack": ^6.2.1 file-loader: ^6.2.0 fs-extra: ^10.1.0 @@ -3958,7 +3958,7 @@ __metadata: peerDependenciesMeta: "@docusaurus/types": optional: true - checksum: 970c8b2716e3c3030b7ce6c460bf74cbf7612d1f155f345a2f59c681c60f5d11b09d156c0e159923b85b47c3dc02efe447fd1ad5457213ca5e91f98e4c697f90 + checksum: d027a6d2417e043ac463402aadca22f1101f942daaf02330d9bb4743dcbe3bd2fd46d27dedf316fcf2b6698713fede974ba59eb5d4bc92c8959e23bc25e7a03a languageName: node linkType: hard @@ -5096,6 +5096,15 @@ __metadata: languageName: node linkType: hard +"@mxssfd/typedoc-theme@npm:^1.0.3": + version: 1.0.3 + resolution: "@mxssfd/typedoc-theme@npm:1.0.3" + peerDependencies: + typedoc: ^0.23.21 + checksum: a77553d759532dae628bf2f65f49d17a2cd8a95a825535f44400411a56741651f0604f66ae19d2f629cd74202971537a77ad69b6312cc7296e553fa8ebab9e17 + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -7300,6 +7309,7 @@ __metadata: ts-node: ^10.9.1 ts-node-dev: ^2.0.0 tweetnacl: ^0.14.5 + typedoc: ^0.23.23 typescript: ^4.8.4 languageName: unknown linkType: soft @@ -7308,10 +7318,10 @@ __metadata: version: 0.0.0-use.local resolution: "@tktrex/docs@workspace:platforms/tktrex/docs" dependencies: - "@docusaurus/core": 2.1.0 - "@docusaurus/module-type-aliases": 2.1.0 - "@docusaurus/preset-classic": 2.1.0 - "@mdx-js/react": ^1.6.21 + "@docusaurus/core": 2.2.0 + "@docusaurus/module-type-aliases": 2.2.0 + "@docusaurus/preset-classic": 2.2.0 + "@mdx-js/react": ^1.6.22 "@tsconfig/docusaurus": ^1.0.6 clsx: ^1.1.1 prism-react-renderer: ^1.3.5 @@ -7353,7 +7363,7 @@ __metadata: react: ^17.0.2 react-dom: ^17.0.2 typescript: ^4.8.4 - webpack: ^5.74.0 + webpack: ^5.75.0 languageName: unknown linkType: soft @@ -7403,16 +7413,22 @@ __metadata: version: 0.0.0-use.local resolution: "@trex/docs@workspace:docs" dependencies: - "@docusaurus/core": 2.1.0 - "@docusaurus/module-type-aliases": 2.1.0 - "@mdx-js/react": ^1.6.21 + "@docusaurus/core": 2.2.0 + "@docusaurus/module-type-aliases": 2.2.0 + "@mdx-js/react": ^1.6.22 + "@mxssfd/typedoc-theme": ^1.0.3 "@tsconfig/docusaurus": ^1.0.6 clsx: ^1.1.1 - docusaurus-plugin-openapi: ^0.6.2 - docusaurus-preset-openapi: ^0.6.2 + docusaurus-plugin-openapi: ^0.6.3 + docusaurus-plugin-typedoc: ^0.18.0 + docusaurus-preset-openapi: ^0.6.3 prism-react-renderer: ^1.3.5 react: ^17.0.2 react-dom: ^17.0.2 + typedoc: ^0.23.23 + typedoc-plugin-dompurify: ^1.0.0 + typedoc-plugin-markdown: ^3.14.0 + typedoc-plugin-missing-exports: ^1.0.0 typescript: ^4.8.4 languageName: unknown linkType: soft @@ -7493,8 +7509,8 @@ __metadata: type-fest: ^2.11.1 typelevel-ts: ^0.4.0 typescript: ^4.8.4 - webpack: ^5.74.0 - webpack-bundle-analyzer: ^4.6.1 + webpack: ^5.75.0 + webpack-bundle-analyzer: ^4.7.0 webpack-cli: ^4.10.0 languageName: unknown linkType: soft @@ -7529,7 +7545,7 @@ __metadata: react: ^17.0.2 react-dom: ^17.0.2 typescript: ^4.8.4 - webpack: ^5.74.0 + webpack: ^5.75.0 languageName: unknown linkType: soft @@ -7574,11 +7590,11 @@ __metadata: react-dom: ^17.0.2 ts-endpoint: ^2.0.0 ts-io-error: ^2.0.0 - ts-loader: ^9.4.1 + ts-loader: ^9.4.2 typelevel-ts: ^0.4.0 typescript: ^4.8.4 - webpack: ^5.74.0 - webpack-bundle-analyzer: ^4.6.1 + webpack: ^5.75.0 + webpack-bundle-analyzer: ^4.7.0 webpack-cli: ^4.10.0 webpack-dev-server: ^4.11.1 languageName: unknown @@ -7657,15 +7673,15 @@ __metadata: swagger-ui: ^4.14.3 ts-endpoint: ^2.0.0 ts-jest: ^27.1.5 - ts-loader: ^9.4.1 + ts-loader: ^9.4.2 ts-node: ^10.9.1 tweetnacl: ^1.0.3 tweetnacl-util: ^0.13.5 typescript: ^4.8.4 uuid: ^9.0.0 web-vitals: ^2.1.4 - webpack: ^5.74.0 - webpack-bundle-analyzer: ^4.6.1 + webpack: ^5.75.0 + webpack-bundle-analyzer: ^4.7.0 webpack-cli: ^4.10.0 webpack-dev-server: ^4.11.1 languageName: unknown @@ -8165,6 +8181,15 @@ __metadata: languageName: node linkType: hard +"@types/dompurify@npm:^2.3.3": + version: 2.4.0 + resolution: "@types/dompurify@npm:2.4.0" + dependencies: + "@types/trusted-types": "*" + checksum: b48cd81e997794ebc390c7c5bef1a67ec14a6f2f0521973e07e06af186c7583abe114d94d24868c0632b9573f5bd77131a4b76f3fffdf089ba99a4e53dd46c39 + languageName: node + linkType: hard + "@types/dotenv-webpack@npm:^7.0.3": version: 7.0.3 resolution: "@types/dotenv-webpack@npm:7.0.3" @@ -8873,6 +8898,13 @@ __metadata: languageName: node linkType: hard +"@types/trusted-types@npm:*": + version: 2.0.2 + resolution: "@types/trusted-types@npm:2.0.2" + checksum: 3371eef5f1c50e1c3c07a127c1207b262ba65b83dd167a1c460fc1b135a3fb0c97b9f508efebd383f239cc5dd5b7169093686a692a501fde9c3f7208657d9b0d + languageName: node + linkType: hard + "@types/uglify-js@npm:*": version: 3.17.0 resolution: "@types/uglify-js@npm:3.17.0" @@ -9743,9 +9775,9 @@ __metadata: version: 0.0.0-use.local resolution: "@yttrex/docs@workspace:platforms/yttrex/docs" dependencies: - "@docusaurus/core": 2.1.0 - "@docusaurus/module-type-aliases": 2.1.0 - "@docusaurus/preset-classic": 2.1.0 + "@docusaurus/core": 2.2.0 + "@docusaurus/module-type-aliases": 2.2.0 + "@docusaurus/preset-classic": 2.2.0 "@mdx-js/react": ^1.6.21 "@tsconfig/docusaurus": ^1.0.6 clsx: ^1.1.1 @@ -9792,14 +9824,14 @@ __metadata: react-dom: ^17.0.2 sass-loader: ^12.6.0 style-loader: ^3.3.1 - ts-loader: ^9.4.1 + ts-loader: ^9.4.2 ts-node: ^10.9.1 tweetnacl: ^0.14.5 tweetnacl-util: ^0.13.5 typescript: ^4.8.4 uglifyjs-webpack-plugin: ^2.2.0 uuid: ^9.0.0 - webpack: ^5.74.0 + webpack: ^5.75.0 webpack-combine-loaders: ^2.0.4 webpack-dev-server: ^4.11.1 webpack-notifier: ^1.15.0 @@ -9851,7 +9883,7 @@ __metadata: languageName: node linkType: hard -"abab@npm:^2.0.3, abab@npm:^2.0.5": +"abab@npm:^2.0.3, abab@npm:^2.0.5, abab@npm:^2.0.6": version: 2.0.6 resolution: "abab@npm:2.0.6" checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e @@ -9894,6 +9926,16 @@ __metadata: languageName: node linkType: hard +"acorn-globals@npm:^7.0.0": + version: 7.0.1 + resolution: "acorn-globals@npm:7.0.1" + dependencies: + acorn: ^8.1.0 + acorn-walk: ^8.0.2 + checksum: 2a2998a547af6d0db5f0cdb90acaa7c3cbca6709010e02121fb8b8617c0fbd8bab0b869579903fde358ac78454356a14fadcc1a672ecb97b04b1c2ccba955ce8 + languageName: node + linkType: hard + "acorn-import-assertions@npm:^1.7.6": version: 1.8.0 resolution: "acorn-import-assertions@npm:1.8.0" @@ -9919,7 +9961,7 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.1.1, acorn-walk@npm:^8.2.0": +"acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1, acorn-walk@npm:^8.2.0": version: 8.2.0 resolution: "acorn-walk@npm:8.2.0" checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 @@ -9944,12 +9986,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.4, acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0": - version: 8.8.0 - resolution: "acorn@npm:8.8.0" +"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0, acorn@npm:^8.8.1": + version: 8.8.1 + resolution: "acorn@npm:8.8.1" bin: acorn: bin/acorn - checksum: 7270ca82b242eafe5687a11fea6e088c960af712683756abf0791b68855ea9cace3057bd5e998ffcef50c944810c1e0ca1da526d02b32110e13c722aa959afdc + checksum: 4079b67283b94935157698831967642f24a075c52ce3feaaaafe095776dfbe15d86a1b33b1e53860fc0d062ed6c83f4284a5c87c85b9ad51853a01173da6097f languageName: node linkType: hard @@ -14548,6 +14590,17 @@ __metadata: languageName: node linkType: hard +"data-urls@npm:^3.0.2": + version: 3.0.2 + resolution: "data-urls@npm:3.0.2" + dependencies: + abab: ^2.0.6 + whatwg-mimetype: ^3.0.0 + whatwg-url: ^11.0.0 + checksum: 033fc3dd0fba6d24bc9a024ddcf9923691dd24f90a3d26f6545d6a2f71ec6956f93462f2cdf2183cc46f10dc01ed3bcb36731a8208456eb1a08147e571fe2a76 + languageName: node + linkType: hard + "date-fns@npm:^2.28.0": version: 2.28.0 resolution: "date-fns@npm:2.28.0" @@ -14648,10 +14701,10 @@ __metadata: languageName: node linkType: hard -"decimal.js@npm:^10.2.1": - version: 10.3.1 - resolution: "decimal.js@npm:10.3.1" - checksum: 0351ac9f05fe050f23227aa6a4573bee2d58fa7378fcf28d969a8c789525032effb488a90320fd3fe86a66e17b4bc507d811b15eada5b7f0e7ec5d2af4c24a59 +"decimal.js@npm:^10.2.1, decimal.js@npm:^10.4.2": + version: 10.4.3 + resolution: "decimal.js@npm:10.4.3" + checksum: 796404dcfa9d1dbfdc48870229d57f788b48c21c603c3f6554a1c17c10195fc1024de338b0cf9e1efe0c7c167eeb18f04548979bcc5fdfabebb7cc0ae3287bae languageName: node linkType: hard @@ -15170,9 +15223,9 @@ __metadata: languageName: node linkType: hard -"docusaurus-plugin-openapi@npm:^0.6.2": - version: 0.6.2 - resolution: "docusaurus-plugin-openapi@npm:0.6.2" +"docusaurus-plugin-openapi@npm:^0.6.3": + version: 0.6.3 + resolution: "docusaurus-plugin-openapi@npm:0.6.3" dependencies: "@docusaurus/mdx-loader": ^2.0.0 "@docusaurus/plugin-content-docs": ^2.0.0 @@ -15193,35 +15246,45 @@ __metadata: peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 3975ee34d16777885e3d9a88a445f2e5d9cb5044a8dadb0a4a29115afe166449d577f0586b9dfb5a981f29a0d69425408a6669907b786d59b7d64fac82022b12 + checksum: 55664e5a2c65c99bffc0ceb19a5c7ff2c10d1373a5721e614feadf0a449bc76a283568dacc4ce4d2548f70fba01493e0a203c201500fa4ed35f52f981d04e287 languageName: node linkType: hard -"docusaurus-plugin-proxy@npm:^0.6.2": - version: 0.6.2 - resolution: "docusaurus-plugin-proxy@npm:0.6.2" - checksum: 061214bb39eebf323bbd7ca0bb263650231efe93e46936065d860277387d568f103d102a93dd8de0cea82d3e47ffb83f43ed2f7d850d8f0eb674a4d837a77095 +"docusaurus-plugin-proxy@npm:^0.6.3": + version: 0.6.3 + resolution: "docusaurus-plugin-proxy@npm:0.6.3" + checksum: 294f4281a2ab300d0ee8bf6763f9ac29366066bdcf3c5e57bd0a80f5b6fe0fc51f0b538cabecdec03e79a52d1af6da90be34a4a8a63812fd0df7700401d3da96 languageName: node linkType: hard -"docusaurus-preset-openapi@npm:^0.6.2": - version: 0.6.2 - resolution: "docusaurus-preset-openapi@npm:0.6.2" +"docusaurus-plugin-typedoc@npm:^0.18.0": + version: 0.18.0 + resolution: "docusaurus-plugin-typedoc@npm:0.18.0" + peerDependencies: + typedoc: ">=0.23.0" + typedoc-plugin-markdown: ">=3.13.0" + checksum: e5e8780888ad07e71e9c0a98024f4bee6e3e520c7a3417d6b4951aa91c0fb63caa19d1cd5e0712b75d0add7c1fabe2df36b910e3ecb6e4a914c679c0ff75fc16 + languageName: node + linkType: hard + +"docusaurus-preset-openapi@npm:^0.6.3": + version: 0.6.3 + resolution: "docusaurus-preset-openapi@npm:0.6.3" dependencies: "@docusaurus/preset-classic": ^2.0.0 - docusaurus-plugin-openapi: ^0.6.2 - docusaurus-plugin-proxy: ^0.6.2 - docusaurus-theme-openapi: ^0.6.2 + docusaurus-plugin-openapi: ^0.6.3 + docusaurus-plugin-proxy: ^0.6.3 + docusaurus-theme-openapi: ^0.6.3 peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 20ee248ee60b505ba2df1f2fcc3abee9b765d3ef4b193e34c372d15f95c8c1864192fb6fa11fd6d92aa6d57e67a73ca393d69e06121f391f868efa5af773b15e + checksum: bbfb0b5bdece7c602f990e7fb941e01f256bc9fb995b123d1c78aed57d922f1c554c096df6ae0267f1563201093864d4b9d8139c4e9cbeda575d5b981dd9e16b languageName: node linkType: hard -"docusaurus-theme-openapi@npm:^0.6.2": - version: 0.6.2 - resolution: "docusaurus-theme-openapi@npm:0.6.2" +"docusaurus-theme-openapi@npm:^0.6.3": + version: 0.6.3 + resolution: "docusaurus-theme-openapi@npm:0.6.3" dependencies: "@docusaurus/theme-common": ^2.0.0 "@mdx-js/react": ^1.6.22 @@ -15230,7 +15293,7 @@ __metadata: buffer: ^6.0.3 clsx: ^1.1.1 crypto-js: ^4.1.1 - docusaurus-plugin-openapi: ^0.6.2 + docusaurus-plugin-openapi: ^0.6.3 immer: ^9.0.7 lodash: ^4.17.20 monaco-editor: ^0.31.1 @@ -15245,7 +15308,7 @@ __metadata: peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 - checksum: 56b8583e4402116a8efa9e4863193c0a3898ec3638510436495070a57a95c3bc14d59cbf44d8a8de08e68a1ab4de0fdcd7a97309eb8977c2f31e1e30e0beaa7f + checksum: e02a6d2ea82b7a4f49ae88ca3054f7207c5dc9fae7413a57af35ab5228b88ec7c3532450b1d14bff55eceed14cf331c11236a713a6bdfbc4a1f6ac017bb7553d languageName: node linkType: hard @@ -15351,6 +15414,15 @@ __metadata: languageName: node linkType: hard +"domexception@npm:^4.0.0": + version: 4.0.0 + resolution: "domexception@npm:4.0.0" + dependencies: + webidl-conversions: ^7.0.0 + checksum: ddbc1268edf33a8ba02ccc596735ede80375ee0cf124b30d2f05df5b464ba78ef4f49889b6391df4a04954e63d42d5631c7fcf8b1c4f12bc531252977a5f13d5 + languageName: node + linkType: hard + "domhandler@npm:^2.3.0": version: 2.4.2 resolution: "domhandler@npm:2.4.2" @@ -15385,6 +15457,13 @@ __metadata: languageName: node linkType: hard +"dompurify@npm:^2.3.8": + version: 2.4.1 + resolution: "dompurify@npm:2.4.1" + checksum: 1169177465b3cbb25a44322937fba549f6c4e1a91b83245d144471be26619c835cccf0f8e20aa78c25ac11a06efd17cc1b9db9cacadceb78a4c08a1029eafee5 + languageName: node + linkType: hard + "domutils@npm:^1.5.1": version: 1.7.0 resolution: "domutils@npm:1.7.0" @@ -18656,15 +18735,15 @@ __metadata: string-replace-loader: ^3.1.0 style-loader: ^3.3.1 ts-jest: ^27.1.5 - ts-loader: ^9.4.1 + ts-loader: ^9.4.2 ts-node: ^10.9.1 tsconfig-paths: ^4.1.0 typescript: ^4.8.4 unlazy-loader: ^0.1.3 unzipper: ^0.10.11 utf-8-validate: ^5.0.9 - webpack: ^5.74.0 - webpack-bundle-analyzer: ^4.6.1 + webpack: ^5.75.0 + webpack-bundle-analyzer: ^4.7.0 webpack-cli: ^4.10.0 webpack-node-externals: ^3.0.0 ws: ^8.5.0 @@ -19114,6 +19193,15 @@ __metadata: languageName: node linkType: hard +"html-encoding-sniffer@npm:^3.0.0": + version: 3.0.0 + resolution: "html-encoding-sniffer@npm:3.0.0" + dependencies: + whatwg-encoding: ^2.0.0 + checksum: 8d806aa00487e279e5ccb573366a951a9f68f65c90298eac9c3a2b440a7ffe46615aff2995a2f61c6746c639234e6179a97e18ca5ccbbf93d3725ef2099a4502 + languageName: node + linkType: hard + "html-entities@npm:^2.1.0, html-entities@npm:^2.3.2": version: 2.3.3 resolution: "html-entities@npm:2.3.3" @@ -19413,7 +19501,7 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:5, https-proxy-agent@npm:5.0.1, https-proxy-agent@npm:^5.0.0": +"https-proxy-agent@npm:5, https-proxy-agent@npm:5.0.1, https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" dependencies: @@ -20682,6 +20770,17 @@ __metadata: languageName: node linkType: hard +"isomorphic-dompurify@npm:^0.20.0": + version: 0.20.0 + resolution: "isomorphic-dompurify@npm:0.20.0" + dependencies: + "@types/dompurify": ^2.3.3 + dompurify: ^2.3.8 + jsdom: ^20.0.0 + checksum: 90a2e76fed821b9f03d5072a9b477adc757abe71661e8f7d0678a99644be434d32e88b020f11eba7a3c00568814acd1ed5d67a0fc913cb6b6ea009bf26e4c939 + languageName: node + linkType: hard + "isomorphic-unfetch@npm:^3.1.0": version: 3.1.0 resolution: "isomorphic-unfetch@npm:3.1.0" @@ -21555,6 +21654,45 @@ __metadata: languageName: node linkType: hard +"jsdom@npm:^20.0.0": + version: 20.0.3 + resolution: "jsdom@npm:20.0.3" + dependencies: + abab: ^2.0.6 + acorn: ^8.8.1 + acorn-globals: ^7.0.0 + cssom: ^0.5.0 + cssstyle: ^2.3.0 + data-urls: ^3.0.2 + decimal.js: ^10.4.2 + domexception: ^4.0.0 + escodegen: ^2.0.0 + form-data: ^4.0.0 + html-encoding-sniffer: ^3.0.0 + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.1 + is-potential-custom-element-name: ^1.0.1 + nwsapi: ^2.2.2 + parse5: ^7.1.1 + saxes: ^6.0.0 + symbol-tree: ^3.2.4 + tough-cookie: ^4.1.2 + w3c-xmlserializer: ^4.0.0 + webidl-conversions: ^7.0.0 + whatwg-encoding: ^2.0.0 + whatwg-mimetype: ^3.0.0 + whatwg-url: ^11.0.0 + ws: ^8.11.0 + xml-name-validator: ^4.0.0 + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 6e2ae21db397133a061b270c26d2dbc0b9051733ea3b896a7ece78d79f475ff0974f766a413c1198a79c793159119169f2335ddb23150348fbfdcfa6f3105536 + languageName: node + linkType: hard + "jsesc@npm:^2.5.1": version: 2.5.2 resolution: "jsesc@npm:2.5.2" @@ -21693,6 +21831,13 @@ __metadata: languageName: node linkType: hard +"jsonc-parser@npm:^3.0.0": + version: 3.2.0 + resolution: "jsonc-parser@npm:3.2.0" + checksum: 946dd9a5f326b745aa326d48a7257e3f4a4b62c5e98ec8e49fa2bdd8d96cef7e6febf1399f5c7016114fd1f68a1c62c6138826d5d90bc650448e3cf0951c53c7 + languageName: node + linkType: hard + "jsonfile@npm:^4.0.0": version: 4.0.0 resolution: "jsonfile@npm:4.0.0" @@ -22497,6 +22642,13 @@ __metadata: languageName: node linkType: hard +"lunr@npm:^2.3.9": + version: 2.3.9 + resolution: "lunr@npm:2.3.9" + checksum: 176719e24fcce7d3cf1baccce9dd5633cd8bdc1f41ebe6a180112e5ee99d80373fe2454f5d4624d437e5a8319698ca6837b9950566e15d2cae5f2a543a3db4b8 + languageName: node + linkType: hard + "lz-string@npm:^1.4.4": version: 1.4.4 resolution: "lz-string@npm:1.4.4" @@ -22681,6 +22833,15 @@ __metadata: languageName: node linkType: hard +"marked@npm:^4.2.4": + version: 4.2.4 + resolution: "marked@npm:4.2.4" + bin: + marked: bin/marked.js + checksum: 5eb5bfa6ee4cf85712a3ccbe2a549c397e8886f5d18312a02696c7e3817625a6b91a8ad27a6ed43b06ddbdfb812f471b1270517c4b8fb068a6a9e5b4d555a5aa + languageName: node + linkType: hard + "matcher-collection@npm:^2.0.0": version: 2.0.1 resolution: "matcher-collection@npm:2.0.1" @@ -23249,12 +23410,12 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^5.0.1": - version: 5.1.0 - resolution: "minimatch@npm:5.1.0" +"minimatch@npm:^5.0.1, minimatch@npm:^5.1.1": + version: 5.1.1 + resolution: "minimatch@npm:5.1.1" dependencies: brace-expansion: ^2.0.1 - checksum: 15ce53d31a06361e8b7a629501b5c75491bc2b59712d53e802b1987121d91b433d73fcc5be92974fde66b2b51d8fb28d75a9ae900d249feb792bb1ba2a4f0a90 + checksum: 215edd0978320a3354188f84a537d45841f2449af4df4379f79b9b777e71aa4f5722cc9d1717eabd2a70d38ef76ab7b708d24d83ea6a6c909dfd8833de98b437 languageName: node linkType: hard @@ -24242,10 +24403,10 @@ __metadata: languageName: node linkType: hard -"nwsapi@npm:^2.2.0": - version: 2.2.1 - resolution: "nwsapi@npm:2.2.1" - checksum: 6c21fcb6950538012516b39137ed9b53ed56843e521362e977282c781169f229e7bca8ec6e207165b19912550f360806b222f77b6c9202bb8d66818456875c3d +"nwsapi@npm:^2.2.0, nwsapi@npm:^2.2.2": + version: 2.2.2 + resolution: "nwsapi@npm:2.2.2" + checksum: 43769106292bc95f776756ca2f3513dab7b4d506a97c67baec32406447841a35f65f29c1f95ab5d42785210fd41668beed33ca16fa058780be43b101ad73e205 languageName: node linkType: hard @@ -25002,12 +25163,12 @@ __metadata: languageName: node linkType: hard -"parse5@npm:^7.0.0": - version: 7.1.1 - resolution: "parse5@npm:7.1.1" +"parse5@npm:^7.0.0, parse5@npm:^7.1.1": + version: 7.1.2 + resolution: "parse5@npm:7.1.2" dependencies: entities: ^4.4.0 - checksum: 8f72fbfa6df83a3f29f58e1818f7bd46b47ff3e26d79c74e10b8fc7ef7ee76163f205113f1b2f6a5b8dc4e31e726f490444f04890cead6e974dbcbe8172b1321 + checksum: 59465dd05eb4c5ec87b76173d1c596e152a10e290b7abcda1aecf0f33be49646ea74840c69af975d7887543ea45564801736356c568d6b5e71792fd0f4055713 languageName: node linkType: hard @@ -28635,8 +28796,9 @@ __metadata: release-it: ^15.5.0 ts-jest: ^27.1.5 ts-node-dev: ^2.0.0 + typedoc: ^0.23.23 typescript: ^4.8.4 - webpack: ^5.74.0 + webpack: ^5.75.0 zx: ^6.2.5 languageName: unknown linkType: soft @@ -28898,6 +29060,15 @@ __metadata: languageName: node linkType: hard +"saxes@npm:^6.0.0": + version: 6.0.0 + resolution: "saxes@npm:6.0.0" + dependencies: + xmlchars: ^2.2.0 + checksum: d3fa3e2aaf6c65ed52ee993aff1891fc47d5e47d515164b5449cbf5da2cbdc396137e55590472e64c5c436c14ae64a8a03c29b9e7389fc6f14035cf4e982ef3b + languageName: node + linkType: hard + "scheduler@npm:^0.20.2": version: 0.20.2 resolution: "scheduler@npm:0.20.2" @@ -29396,6 +29567,17 @@ __metadata: languageName: node linkType: hard +"shiki@npm:^0.11.1": + version: 0.11.1 + resolution: "shiki@npm:0.11.1" + dependencies: + jsonc-parser: ^3.0.0 + vscode-oniguruma: ^1.6.1 + vscode-textmate: ^6.0.0 + checksum: 2a4ebc3b466816263fc244ae4f67a4ff96aa74d863b9c5e7e4affc50f37fd6d1a781405de0dbf763b777bc33e49a0d441de7ff3fededb8b01e3b8dbb37e2927d + languageName: node + linkType: hard + "shimmer@npm:^1.1.0, shimmer@npm:^1.2.0": version: 1.2.1 resolution: "shimmer@npm:1.2.1" @@ -31129,14 +31311,15 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:^4.0.0": - version: 4.0.0 - resolution: "tough-cookie@npm:4.0.0" +"tough-cookie@npm:^4.0.0, tough-cookie@npm:^4.1.2": + version: 4.1.2 + resolution: "tough-cookie@npm:4.1.2" dependencies: psl: ^1.1.33 punycode: ^2.1.1 - universalify: ^0.1.2 - checksum: 0891b37eb7d17faa3479d47f0dce2e3007f2583094ad272f2670d120fbcc3df3b0b0a631ba96ecad49f9e2297d93ff8995ce0d3292d08dd7eabe162f5b224d69 + universalify: ^0.2.0 + url-parse: ^1.5.3 + checksum: a7359e9a3e875121a84d6ba40cc184dec5784af84f67f3a56d1d2ae39b87c0e004e6ba7c7331f9622a7d2c88609032473488b28fe9f59a1fec115674589de39a languageName: node linkType: hard @@ -31323,9 +31506,9 @@ __metadata: languageName: node linkType: hard -"ts-loader@npm:^9.4.1": - version: 9.4.1 - resolution: "ts-loader@npm:9.4.1" +"ts-loader@npm:^9.4.2": + version: 9.4.2 + resolution: "ts-loader@npm:9.4.2" dependencies: chalk: ^4.1.0 enhanced-resolve: ^5.0.0 @@ -31334,7 +31517,7 @@ __metadata: peerDependencies: typescript: "*" webpack: ^5.0.0 - checksum: b8947f6d396621cc3f6ba8d4c14fa09eba03c4b7eeabbc429481e923a973c244fb80feb44e900f03fc1010755a6bf14fc561c574fb79e324f39b5b6ef1dcca6c + checksum: 6f306ee4c615c2a159fb177561e3fb86ca2cbd6c641e710d408a64b4978e1ff3f2c9733df07bff27d3f82efbfa7c287523d4306049510c7485ac2669a9c37eb0 languageName: node linkType: hard @@ -31672,6 +31855,53 @@ __metadata: languageName: node linkType: hard +"typedoc-plugin-dompurify@npm:^1.0.0": + version: 1.0.0 + resolution: "typedoc-plugin-dompurify@npm:1.0.0" + dependencies: + isomorphic-dompurify: ^0.20.0 + peerDependencies: + typedoc: 0.23.x + checksum: b934db9667adbce5b404a9f293aea1a4e339d12260975a5139c929860b006924896f17ae480d1a4d498c5832a5089e05cc55886462bf0f91b600aade02f936f6 + languageName: node + linkType: hard + +"typedoc-plugin-markdown@npm:^3.14.0": + version: 3.14.0 + resolution: "typedoc-plugin-markdown@npm:3.14.0" + dependencies: + handlebars: ^4.7.7 + peerDependencies: + typedoc: ">=0.23.0" + checksum: 6205600052185b4b193ab8a253d9df5ccbc95002c948a07f9024bcd26f0f23fbcc089fda4d6b4c8f4172f4eaca2bf9c32129989f6baaace7261cf4a0e41c976b + languageName: node + linkType: hard + +"typedoc-plugin-missing-exports@npm:^1.0.0": + version: 1.0.0 + resolution: "typedoc-plugin-missing-exports@npm:1.0.0" + peerDependencies: + typedoc: 0.22.x || 0.23.x + checksum: 11ef3ba347a88924397f2f2f84216e5d41f9714baba671e4f9a86dd4de22d5e5e47477a295776c4f489be91065a152fedcbfa9aa6cba90499894e6670441ce31 + languageName: node + linkType: hard + +"typedoc@npm:^0.23.23": + version: 0.23.23 + resolution: "typedoc@npm:0.23.23" + dependencies: + lunr: ^2.3.9 + marked: ^4.2.4 + minimatch: ^5.1.1 + shiki: ^0.11.1 + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x + bin: + typedoc: bin/typedoc + checksum: 2b64f9c9dc1992ec1bbcc688f6cfc8161481872c485ba9226d1797f572469d02f7798ebe96e3626587a6952af685fa1f4aaa0d9a6137fe9fb3d37f677cb41161 + languageName: node + linkType: hard + "typelevel-ts@npm:^0.4.0": version: 0.4.0 resolution: "typelevel-ts@npm:0.4.0" @@ -31680,22 +31910,22 @@ __metadata: linkType: hard "typescript@npm:^4.6.4, typescript@npm:^4.8.4": - version: 4.8.4 - resolution: "typescript@npm:4.8.4" + version: 4.9.4 + resolution: "typescript@npm:4.9.4" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 3e4f061658e0c8f36c820802fa809e0fd812b85687a9a2f5430bc3d0368e37d1c9605c3ce9b39df9a05af2ece67b1d844f9f6ea8ff42819f13bcb80f85629af0 + checksum: e782fb9e0031cb258a80000f6c13530288c6d63f1177ed43f770533fdc15740d271554cdae86701c1dd2c83b082cea808b07e97fd68b38a172a83dbf9e0d0ef9 languageName: node linkType: hard "typescript@patch:typescript@^4.6.4#~builtin, typescript@patch:typescript@^4.8.4#~builtin": - version: 4.8.4 - resolution: "typescript@patch:typescript@npm%3A4.8.4#~builtin::version=4.8.4&hash=a1c5e5" + version: 4.9.4 + resolution: "typescript@patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=a1c5e5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 563a0ef47abae6df27a9a3ab38f75fc681f633ccf1a3502b1108e252e187787893de689220f4544aaf95a371a4eb3141e4a337deb9895de5ac3c1ca76430e5f0 + checksum: 37f6e2c3c5e2aa5934b85b0fddbf32eeac8b1bacf3a5b51d01946936d03f5377fe86255d4e5a4ae628fd0cd553386355ad362c57f13b4635064400f3e8e05b9d languageName: node linkType: hard @@ -32010,13 +32240,20 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^0.1.0, universalify@npm:^0.1.2": +"universalify@npm:^0.1.0": version: 0.1.2 resolution: "universalify@npm:0.1.2" checksum: 40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff languageName: node linkType: hard +"universalify@npm:^0.2.0": + version: 0.2.0 + resolution: "universalify@npm:0.2.0" + checksum: e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 + languageName: node + linkType: hard + "universalify@npm:^2.0.0": version: 2.0.0 resolution: "universalify@npm:2.0.0" @@ -32208,7 +32445,7 @@ __metadata: languageName: node linkType: hard -"url-parse@npm:^1.5.8": +"url-parse@npm:^1.5.3, url-parse@npm:^1.5.8": version: 1.5.10 resolution: "url-parse@npm:1.5.10" dependencies: @@ -32561,6 +32798,20 @@ __metadata: languageName: node linkType: hard +"vscode-oniguruma@npm:^1.6.1": + version: 1.7.0 + resolution: "vscode-oniguruma@npm:1.7.0" + checksum: 53519d91d90593e6fb080260892e87d447e9b200c4964d766772b5053f5699066539d92100f77f1302c91e8fc5d9c772fbe40fe4c90f3d411a96d5a9b1e63f42 + languageName: node + linkType: hard + +"vscode-textmate@npm:^6.0.0": + version: 6.0.0 + resolution: "vscode-textmate@npm:6.0.0" + checksum: ff6f17a406c2906586afc14ef01cb122e33acd35312e815abb5c924347a777c6783ce3fe7db8b83f1760ebf843c669843b9390f905b69c433b3395af28e4b483 + languageName: node + linkType: hard + "w3c-hr-time@npm:^1.0.2": version: 1.0.2 resolution: "w3c-hr-time@npm:1.0.2" @@ -32586,6 +32837,15 @@ __metadata: languageName: node linkType: hard +"w3c-xmlserializer@npm:^4.0.0": + version: 4.0.0 + resolution: "w3c-xmlserializer@npm:4.0.0" + dependencies: + xml-name-validator: ^4.0.0 + checksum: eba070e78deb408ae8defa4d36b429f084b2b47a4741c4a9be3f27a0a3d1845e277e3072b04391a138f7e43776842627d1334e448ff13ff90ad9fb1214ee7091 + languageName: node + linkType: hard + "wait-on@npm:^6.0.1": version: 6.0.1 resolution: "wait-on@npm:6.0.1" @@ -32750,9 +33010,9 @@ __metadata: languageName: node linkType: hard -"webpack-bundle-analyzer@npm:^4.5.0, webpack-bundle-analyzer@npm:^4.6.1": - version: 4.6.1 - resolution: "webpack-bundle-analyzer@npm:4.6.1" +"webpack-bundle-analyzer@npm:^4.5.0, webpack-bundle-analyzer@npm:^4.7.0": + version: 4.7.0 + resolution: "webpack-bundle-analyzer@npm:4.7.0" dependencies: acorn: ^8.0.4 acorn-walk: ^8.0.0 @@ -32765,7 +33025,7 @@ __metadata: ws: ^7.3.1 bin: webpack-bundle-analyzer: lib/bin/analyzer.js - checksum: 4bc97ac6a1d9cd1f133444b0fc9d9091c97f4bd8388f97636ce27abd1ebffaa7dd45d29f6693661a666e77bcc08dff43ab7c2f5e2600a3101b956c94c1d038d0 + checksum: 4ce3b379c61ce16b2219756843407cc99f2b82cd191f653043f1b705a3e32b3af03834af0dfded98ab852313a892a148bed1a8effaacd6440f028c19f41581f3 languageName: node linkType: hard @@ -33034,9 +33294,9 @@ __metadata: languageName: node linkType: hard -"webpack@npm:>=4.43.0 <6.0.0, webpack@npm:^5, webpack@npm:^5.73.0, webpack@npm:^5.74.0, webpack@npm:^5.9.0": - version: 5.74.0 - resolution: "webpack@npm:5.74.0" +"webpack@npm:>=4.43.0 <6.0.0, webpack@npm:^5, webpack@npm:^5.73.0, webpack@npm:^5.75.0, webpack@npm:^5.9.0": + version: 5.75.0 + resolution: "webpack@npm:5.75.0" dependencies: "@types/eslint-scope": ^3.7.3 "@types/estree": ^0.0.51 @@ -33067,7 +33327,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 320c41369a75051b19e18c63f408b3dcc481852e992f83d311771c5ec0f05f2946385e8ebef62030cf3587f0a3d2f12779ffdb191569a966847289ba7313f946 + checksum: 2bcc5f3c195f375944e8af2f00bf2feea39cb9fda5f763b0d1b00077f1c51783db25c94d3fae96a07dead9fa085e6ae7474417e5ab31719c9776ea5969ceb83a languageName: node linkType: hard @@ -33112,6 +33372,15 @@ __metadata: languageName: node linkType: hard +"whatwg-encoding@npm:^2.0.0": + version: 2.0.0 + resolution: "whatwg-encoding@npm:2.0.0" + dependencies: + iconv-lite: 0.6.3 + checksum: 7087810c410aa9b689cbd6af8773341a53cdc1f3aae2a882c163bd5522ec8ca4cdfc269aef417a5792f411807d5d77d50df4c24e3abb00bb60192858a40cc675 + languageName: node + linkType: hard + "whatwg-mimetype@npm:^2.3.0": version: 2.3.0 resolution: "whatwg-mimetype@npm:2.3.0" @@ -33119,6 +33388,13 @@ __metadata: languageName: node linkType: hard +"whatwg-mimetype@npm:^3.0.0": + version: 3.0.0 + resolution: "whatwg-mimetype@npm:3.0.0" + checksum: ce08bbb36b6aaf64f3a84da89707e3e6a31e5ab1c1a2379fd68df79ba712a4ab090904f0b50e6693b0dafc8e6343a6157e40bf18fdffd26e513cf95ee2a59824 + languageName: node + linkType: hard + "whatwg-url@npm:^11.0.0": version: 11.0.0 resolution: "whatwg-url@npm:11.0.0" @@ -33382,9 +33658,9 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.2.3, ws@npm:^8.4.2, ws@npm:^8.5.0": - version: 8.9.0 - resolution: "ws@npm:8.9.0" +"ws@npm:^8.11.0, ws@npm:^8.2.3, ws@npm:^8.4.2, ws@npm:^8.5.0": + version: 8.11.0 + resolution: "ws@npm:8.11.0" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -33393,7 +33669,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 23aa0f021b2eb65c108ec4c3e08c0d81ba01f82b500432dfe327fd6be36079c1d81fdb0eac6464d2a0eb49904d34a9ab8c59619d673fa07b8346f83aeb0cbf12 + checksum: 316b33aba32f317cd217df66dbfc5b281a2f09ff36815de222bc859e3424d83766d9eb2bd4d667de658b6ab7be151f258318fb1da812416b30be13103e5b5c67 languageName: node linkType: hard @@ -33483,6 +33759,13 @@ __metadata: languageName: node linkType: hard +"xml-name-validator@npm:^4.0.0": + version: 4.0.0 + resolution: "xml-name-validator@npm:4.0.0" + checksum: af100b79c29804f05fa35aa3683e29a321db9b9685d5e5febda3fa1e40f13f85abc40f45a6b2bf7bee33f68a1dc5e8eaef4cec100a304a9db565e6061d4cb5ad + languageName: node + linkType: hard + "xml-reader@npm:2.4.3": version: 2.4.3 resolution: "xml-reader@npm:2.4.3"