From de76f93a2a0e9e09749d1da0949d1ee658030d21 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 10 Mar 2025 22:17:17 +0800 Subject: [PATCH 1/8] Update dependencies --- package.json | 12 +- pnpm-lock.yaml | 4539 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 4545 insertions(+), 6 deletions(-) create mode 100644 pnpm-lock.yaml diff --git a/package.json b/package.json index 3d6f4064..311edcd5 100644 --- a/package.json +++ b/package.json @@ -15,15 +15,15 @@ "service-worker" ], "dependencies": { - "babel-loader": "^8.2.5", + "babel-loader": "^10.0.0", "clean-webpack-plugin": "^4.0.0", - "globby": "^11.0.4", - "terser-webpack-plugin": "^5.3.3", - "workbox-webpack-plugin": "^6.5.4", - "workbox-window": "^6.5.4" + "globby": "^14.1.0", + "terser-webpack-plugin": "^5.3.14", + "workbox-webpack-plugin": "^7.3.0", + "workbox-window": "^7.3.0" }, "devDependencies": { - "webpack": "^5.74.0" + "webpack": "^5.98.0" }, "peerDependencies": { "next": ">=9.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..9408bd33 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,4539 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +overrides: + '@typescript-eslint/eslint-plugin': 5.18.0 + +importers: + + .: + dependencies: + babel-loader: + specifier: ^10.0.0 + version: 10.0.0(@babel/core@7.26.9)(webpack@5.98.0) + clean-webpack-plugin: + specifier: ^4.0.0 + version: 4.0.0(webpack@5.98.0) + globby: + specifier: ^14.1.0 + version: 14.1.0 + next: + specifier: '>=9.0.0' + version: 15.2.1(@babel/core@7.26.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + terser-webpack-plugin: + specifier: ^5.3.14 + version: 5.3.14(webpack@5.98.0) + workbox-webpack-plugin: + specifier: ^7.3.0 + version: 7.3.0(webpack@5.98.0) + workbox-window: + specifier: ^7.3.0 + version: 7.3.0 + devDependencies: + webpack: + specifier: ^5.98.0 + version: 5.98.0 + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@apideck/better-ajv-errors@0.3.6': + resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} + engines: {node: '>=10'} + peerDependencies: + ajv: '>=8' + + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.26.8': + resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.26.9': + resolution: {integrity: sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.26.9': + resolution: {integrity: sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.26.5': + resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.26.9': + resolution: {integrity: sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.26.3': + resolution: {integrity: sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.3': + resolution: {integrity: sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.26.5': + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.25.9': + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.26.5': + resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.25.9': + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.26.9': + resolution: {integrity: sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.26.9': + resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.26.0': + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.25.9': + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.26.8': + resolution: {integrity: sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.25.9': + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.26.5': + resolution: {integrity: sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.25.9': + resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.25.9': + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.26.0': + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.25.9': + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.25.9': + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.25.9': + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.25.9': + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.25.9': + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.25.9': + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.26.3': + resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.25.9': + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.26.9': + resolution: {integrity: sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.25.9': + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.25.9': + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.25.9': + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9': + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.25.9': + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.25.9': + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.26.3': + resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.25.9': + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.25.9': + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.25.9': + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.26.6': + resolution: {integrity: sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.25.9': + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.25.9': + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.25.9': + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.25.9': + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.25.9': + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.25.9': + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.25.9': + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.25.9': + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.25.9': + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.25.9': + resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.26.0': + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.25.9': + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.25.9': + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.25.9': + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.25.9': + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.26.8': + resolution: {integrity: sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.26.7': + resolution: {integrity: sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.25.9': + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.25.9': + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.25.9': + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9': + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.26.9': + resolution: {integrity: sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/runtime@7.26.9': + resolution: {integrity: sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.26.9': + resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.26.9': + resolution: {integrity: sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.26.9': + resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==} + engines: {node: '>=6.9.0'} + + '@emnapi/runtime@1.3.1': + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@next/env@15.2.1': + resolution: {integrity: sha512-JmY0qvnPuS2NCWOz2bbby3Pe0VzdAQ7XpEB6uLIHmtXNfAsAO0KLQLkuAoc42Bxbo3/jMC3dcn9cdf+piCcG2Q==} + + '@next/swc-darwin-arm64@15.2.1': + resolution: {integrity: sha512-aWXT+5KEREoy3K5AKtiKwioeblmOvFFjd+F3dVleLvvLiQ/mD//jOOuUcx5hzcO9ISSw4lrqtUPntTpK32uXXQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@15.2.1': + resolution: {integrity: sha512-E/w8ervu4fcG5SkLhvn1NE/2POuDCDEy5gFbfhmnYXkyONZR68qbUlJlZwuN82o7BrBVAw+tkR8nTIjGiMW1jQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@15.2.1': + resolution: {integrity: sha512-gXDX5lIboebbjhiMT6kFgu4svQyjoSed6dHyjx5uZsjlvTwOAnZpn13w9XDaIMFFHw7K8CpBK7HfDKw0VZvUXQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@next/swc-linux-arm64-musl@15.2.1': + resolution: {integrity: sha512-3v0pF/adKZkBWfUffmB/ROa+QcNTrnmYG4/SS+r52HPwAK479XcWoES2I+7F7lcbqc7mTeVXrIvb4h6rR/iDKg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@next/swc-linux-x64-gnu@15.2.1': + resolution: {integrity: sha512-RbsVq2iB6KFJRZ2cHrU67jLVLKeuOIhnQB05ygu5fCNgg8oTewxweJE8XlLV+Ii6Y6u4EHwETdUiRNXIAfpBww==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@next/swc-linux-x64-musl@15.2.1': + resolution: {integrity: sha512-QHsMLAyAIu6/fWjHmkN/F78EFPKmhQlyX5C8pRIS2RwVA7z+t9cTb0IaYWC3EHLOTjsU7MNQW+n2xGXr11QPpg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@next/swc-win32-arm64-msvc@15.2.1': + resolution: {integrity: sha512-Gk42XZXo1cE89i3hPLa/9KZ8OuupTjkDmhLaMKFohjf9brOeZVEa3BQy1J9s9TWUqPhgAEbwv6B2+ciGfe54Vw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-x64-msvc@15.2.1': + resolution: {integrity: sha512-YjqXCl8QGhVlMR8uBftWk0iTmvtntr41PhG1kvzGp0sUP/5ehTM+cwx25hKE54J0CRnHYjSGjSH3gkHEaHIN9g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@rollup/plugin-babel@5.3.1': + resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} + engines: {node: '>= 10.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + + '@rollup/plugin-node-resolve@15.3.1': + resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-replace@2.4.2': + resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + + '@rollup/plugin-terser@0.4.4': + resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@3.1.0': + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + + '@rollup/pluginutils@5.1.4': + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + + '@surma/rollup-plugin-off-main-thread@2.2.3': + resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree@0.0.39': + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + + '@types/node@22.13.10': + resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==} + + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} + + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} + + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} + + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} + + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} + + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} + + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} + + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-union@1.0.2: + resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} + engines: {node: '>=0.10.0'} + + array-uniq@1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + babel-loader@10.0.0: + resolution: {integrity: sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==} + engines: {node: ^18.20.0 || ^20.10.0 || >=22.0.0} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5.61.0' + + babel-plugin-polyfill-corejs2@0.4.12: + resolution: {integrity: sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.11.1: + resolution: {integrity: sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.3: + resolution: {integrity: sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + caniuse-lite@1.0.30001703: + resolution: {integrity: sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + clean-webpack-plugin@4.0.0: + resolution: {integrity: sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==} + engines: {node: '>=10.0.0'} + peerDependencies: + webpack: '>=4.0.0 <6.0.0' + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + core-js-compat@3.41.0: + resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} + + crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + del@4.1.1: + resolution: {integrity: sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==} + engines: {node: '>=6'} + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.5.114: + resolution: {integrity: sha512-DFptFef3iktoKlFQK/afbo274/XNWD00Am0xa7M8FZUepHlHT8PEuiNBoRfFHbH1okqN58AlhbJ4QTkcnXorjA==} + + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + + es-abstract@1.23.9: + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-own-enumerable-property-symbols@3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@14.1.0: + resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} + engines: {node: '>=18'} + + globby@6.1.0: + resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} + engines: {node: '>=0.10.0'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + idb@7.1.1: + resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + + ignore@7.0.3: + resolution: {integrity: sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==} + engines: {node: '>= 4'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + + is-path-cwd@2.2.0: + resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + engines: {node: '>=6'} + + is-path-in-cwd@2.1.0: + resolution: {integrity: sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==} + engines: {node: '>=6'} + + is-path-inside@2.1.0: + resolution: {integrity: sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==} + engines: {node: '>=6'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-regexp@1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.9: + resolution: {integrity: sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + next@15.2.1: + resolution: {integrity: sha512-zxbsdQv3OqWXybK5tMkPCBKyhIz63RstJ+NvlfkaLMc/m5MwXgz2e92k+hSKcyBpyADhMk2C31RIiaDjUZae7g==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-type@6.0.0: + resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} + engines: {node: '>=18'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pinkie-promise@2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + + pinkie@2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + react-dom@19.0.0: + resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} + peerDependencies: + react: ^19.0.0 + + react@19.0.0: + resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} + engines: {node: '>=0.10.0'} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + regexpu-core@6.2.0: + resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + hasBin: true + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup@2.79.2: + resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==} + engines: {node: '>=10.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + scheduler@0.25.0: + resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} + + schema-utils@4.3.0: + resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} + engines: {node: '>= 10.13.0'} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + + smob@1.5.0: + resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==} + + source-list-map@2.0.1: + resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + + sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + stringify-object@3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + + strip-comments@2.0.1: + resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} + engines: {node: '>=10'} + + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + + tempy@0.6.0: + resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} + engines: {node: '>=10'} + + terser-webpack-plugin@5.3.14: + resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.39.0: + resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} + engines: {node: '>=10'} + hasBin: true + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-fest@0.16.0: + resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} + engines: {node: '>=10'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.0: + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + + unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + upath@1.2.0: + resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} + engines: {node: '>=4'} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + watchpack@2.4.2: + resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + engines: {node: '>=10.13.0'} + + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + + webpack-sources@1.4.3: + resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack@5.98.0: + resolution: {integrity: sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + + workbox-background-sync@7.3.0: + resolution: {integrity: sha512-PCSk3eK7Mxeuyatb22pcSx9dlgWNv3+M8PqPaYDokks8Y5/FX4soaOqj3yhAZr5k6Q5JWTOMYgaJBpbw11G9Eg==} + + workbox-broadcast-update@7.3.0: + resolution: {integrity: sha512-T9/F5VEdJVhwmrIAE+E/kq5at2OY6+OXXgOWQevnubal6sO92Gjo24v6dCVwQiclAF5NS3hlmsifRrpQzZCdUA==} + + workbox-build@7.3.0: + resolution: {integrity: sha512-JGL6vZTPlxnlqZRhR/K/msqg3wKP+m0wfEUVosK7gsYzSgeIxvZLi1ViJJzVL7CEeI8r7rGFV973RiEqkP3lWQ==} + engines: {node: '>=16.0.0'} + + workbox-cacheable-response@7.3.0: + resolution: {integrity: sha512-eAFERIg6J2LuyELhLlmeRcJFa5e16Mj8kL2yCDbhWE+HUun9skRQrGIFVUagqWj4DMaaPSMWfAolM7XZZxNmxA==} + + workbox-core@7.3.0: + resolution: {integrity: sha512-Z+mYrErfh4t3zi7NVTvOuACB0A/jA3bgxUN3PwtAVHvfEsZxV9Iju580VEETug3zYJRc0Dmii/aixI/Uxj8fmw==} + + workbox-expiration@7.3.0: + resolution: {integrity: sha512-lpnSSLp2BM+K6bgFCWc5bS1LR5pAwDWbcKt1iL87/eTSJRdLdAwGQznZE+1czLgn/X05YChsrEegTNxjM067vQ==} + + workbox-google-analytics@7.3.0: + resolution: {integrity: sha512-ii/tSfFdhjLHZ2BrYgFNTrb/yk04pw2hasgbM70jpZfLk0vdJAXgaiMAWsoE+wfJDNWoZmBYY0hMVI0v5wWDbg==} + + workbox-navigation-preload@7.3.0: + resolution: {integrity: sha512-fTJzogmFaTv4bShZ6aA7Bfj4Cewaq5rp30qcxl2iYM45YD79rKIhvzNHiFj1P+u5ZZldroqhASXwwoyusnr2cg==} + + workbox-precaching@7.3.0: + resolution: {integrity: sha512-ckp/3t0msgXclVAYaNndAGeAoWQUv7Rwc4fdhWL69CCAb2UHo3Cef0KIUctqfQj1p8h6aGyz3w8Cy3Ihq9OmIw==} + + workbox-range-requests@7.3.0: + resolution: {integrity: sha512-EyFmM1KpDzzAouNF3+EWa15yDEenwxoeXu9bgxOEYnFfCxns7eAxA9WSSaVd8kujFFt3eIbShNqa4hLQNFvmVQ==} + + workbox-recipes@7.3.0: + resolution: {integrity: sha512-BJro/MpuW35I/zjZQBcoxsctgeB+kyb2JAP5EB3EYzePg8wDGoQuUdyYQS+CheTb+GhqJeWmVs3QxLI8EBP1sg==} + + workbox-routing@7.3.0: + resolution: {integrity: sha512-ZUlysUVn5ZUzMOmQN3bqu+gK98vNfgX/gSTZ127izJg/pMMy4LryAthnYtjuqcjkN4HEAx1mdgxNiKJMZQM76A==} + + workbox-strategies@7.3.0: + resolution: {integrity: sha512-tmZydug+qzDFATwX7QiEL5Hdf7FrkhjaF9db1CbB39sDmEZJg3l9ayDvPxy8Y18C3Y66Nrr9kkN1f/RlkDgllg==} + + workbox-streams@7.3.0: + resolution: {integrity: sha512-SZnXucyg8x2Y61VGtDjKPO5EgPUG5NDn/v86WYHX+9ZqvAsGOytP0Jxp1bl663YUuMoXSAtsGLL+byHzEuMRpw==} + + workbox-sw@7.3.0: + resolution: {integrity: sha512-aCUyoAZU9IZtH05mn0ACUpyHzPs0lMeJimAYkQkBsOWiqaJLgusfDCR+yllkPkFRxWpZKF8vSvgHYeG7LwhlmA==} + + workbox-webpack-plugin@7.3.0: + resolution: {integrity: sha512-EC8lmSAuNmPli04+a5r5lTgv8ab+f5l+XjdYuYpbGnxDT15kH6DBeBazVslpffqTDHt+wkdBMnBCu8GdkKrTSA==} + engines: {node: '>=16.0.0'} + peerDependencies: + webpack: ^4.4.0 || ^5.91.0 + + workbox-window@7.3.0: + resolution: {integrity: sha512-qW8PDy16OV1UBaUNGlTVcepzrlzyzNW/ZJvFQQs2j2TzGsg6IKjcpZC1RSquqQnTOafl5pCj5bGfAHlCjOOjdA==} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@apideck/better-ajv-errors@0.3.6(ajv@8.17.1)': + dependencies: + ajv: 8.17.1 + json-schema: 0.4.0 + jsonpointer: 5.0.1 + leven: 3.1.0 + + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.26.8': {} + + '@babel/core@7.26.9': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) + '@babel/helpers': 7.26.9 + '@babel/parser': 7.26.9 + '@babel/template': 7.26.9 + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.26.9': + dependencies: + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.25.9': + dependencies: + '@babel/types': 7.26.9 + + '@babel/helper-compilation-targets@7.26.5': + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.4 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.26.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.9) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.26.9 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.26.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 6.2.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + debug: 4.4.0 + lodash.debounce: 4.0.8 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.25.9': + dependencies: + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.25.9': + dependencies: + '@babel/types': 7.26.9 + + '@babel/helper-plugin-utils@7.26.5': {} + + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + dependencies: + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helper-wrap-function@7.25.9': + dependencies: + '@babel/template': 7.26.9 + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.26.9': + dependencies: + '@babel/template': 7.26.9 + '@babel/types': 7.26.9 + + '@babel/parser@7.26.9': + dependencies: + '@babel/types': 7.26.9 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.9) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-async-generator-functions@7.26.8(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.9) + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.9) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.26.5(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.9) + '@babel/traverse': 7.26.9 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/template': 7.26.9 + + '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-for-of@7.26.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-nullish-coalescing-operator@7.26.6(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.9) + + '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.9) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-template-literals@7.26.8(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-typeof-symbol@7.26.7(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.9) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/preset-env@7.26.9(@babel/core@7.26.9)': + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/core': 7.26.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.9) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.9) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.9) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.9) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.26.9) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-block-scoped-functions': 7.26.5(@babel/core@7.26.9) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.9) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.26.9) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-for-of': 7.26.9(@babel/core@7.26.9) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.9) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.9) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.9) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-template-literals': 7.26.8(@babel/core@7.26.9) + '@babel/plugin-transform-typeof-symbol': 7.26.7(@babel/core@7.26.9) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.9) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.9) + babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.9) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.9) + babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.9) + core-js-compat: 3.41.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/types': 7.26.9 + esutils: 2.0.3 + + '@babel/runtime@7.26.9': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.26.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 + + '@babel/traverse@7.26.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.9 + '@babel/parser': 7.26.9 + '@babel/template': 7.26.9 + '@babel/types': 7.26.9 + debug: 4.4.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.26.9': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@emnapi/runtime@1.3.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.3.1 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@next/env@15.2.1': {} + + '@next/swc-darwin-arm64@15.2.1': + optional: true + + '@next/swc-darwin-x64@15.2.1': + optional: true + + '@next/swc-linux-arm64-gnu@15.2.1': + optional: true + + '@next/swc-linux-arm64-musl@15.2.1': + optional: true + + '@next/swc-linux-x64-gnu@15.2.1': + optional: true + + '@next/swc-linux-x64-musl@15.2.1': + optional: true + + '@next/swc-win32-arm64-msvc@15.2.1': + optional: true + + '@next/swc-win32-x64-msvc@15.2.1': + optional: true + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@rollup/plugin-babel@5.3.1(@babel/core@7.26.9)(rollup@2.79.2)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-imports': 7.25.9 + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) + rollup: 2.79.2 + transitivePeerDependencies: + - supports-color + + '@rollup/plugin-node-resolve@15.3.1(rollup@2.79.2)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@2.79.2) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.10 + optionalDependencies: + rollup: 2.79.2 + + '@rollup/plugin-replace@2.4.2(rollup@2.79.2)': + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) + magic-string: 0.25.9 + rollup: 2.79.2 + + '@rollup/plugin-terser@0.4.4(rollup@2.79.2)': + dependencies: + serialize-javascript: 6.0.2 + smob: 1.5.0 + terser: 5.39.0 + optionalDependencies: + rollup: 2.79.2 + + '@rollup/pluginutils@3.1.0(rollup@2.79.2)': + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 2.79.2 + + '@rollup/pluginutils@5.1.4(rollup@2.79.2)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 2.79.2 + + '@sindresorhus/merge-streams@2.3.0': {} + + '@surma/rollup-plugin-off-main-thread@2.2.3': + dependencies: + ejs: 3.1.10 + json5: 2.2.3 + magic-string: 0.25.9 + string.prototype.matchall: 4.0.12 + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.6 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + + '@types/estree@0.0.39': {} + + '@types/estree@1.0.6': {} + + '@types/glob@7.2.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 22.13.10 + + '@types/json-schema@7.0.15': {} + + '@types/minimatch@5.1.2': {} + + '@types/node@22.13.10': + dependencies: + undici-types: 6.20.0 + + '@types/resolve@1.20.2': {} + + '@types/trusted-types@2.0.7': {} + + '@webassemblyjs/ast@1.14.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + + '@webassemblyjs/helper-api-error@1.13.2': {} + + '@webassemblyjs/helper-buffer@1.14.1': {} + + '@webassemblyjs/helper-numbers@1.13.2': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + + '@webassemblyjs/helper-wasm-section@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 + + '@webassemblyjs/ieee754@1.13.2': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.13.2': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.13.2': {} + + '@webassemblyjs/wasm-edit@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 + + '@webassemblyjs/wasm-gen@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wasm-opt@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + + '@webassemblyjs/wasm-parser@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wast-printer@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@xtuc/long': 4.2.2 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + acorn@8.14.1: {} + + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-keywords@5.1.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-union@1.0.2: + dependencies: + array-uniq: 1.0.3 + + array-uniq@1.0.3: {} + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + async-function@1.0.0: {} + + async@3.2.6: {} + + at-least-node@1.0.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + babel-loader@10.0.0(@babel/core@7.26.9)(webpack@5.98.0): + dependencies: + '@babel/core': 7.26.9 + find-up: 5.0.0 + webpack: 5.98.0 + + babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.9): + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/core': 7.26.9 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.9) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.26.9): + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.9) + core-js-compat: 3.41.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.3(@babel/core@7.26.9): + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.9) + transitivePeerDependencies: + - supports-color + + balanced-match@1.0.2: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001703 + electron-to-chromium: 1.5.114 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.4) + + buffer-from@1.1.2: {} + + busboy@1.6.0: + dependencies: + streamsearch: 1.1.0 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + caniuse-lite@1.0.30001703: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chrome-trace-event@1.0.4: {} + + clean-webpack-plugin@4.0.0(webpack@5.98.0): + dependencies: + del: 4.1.1 + webpack: 5.98.0 + + client-only@0.0.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + optional: true + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + optional: true + + commander@2.20.3: {} + + common-tags@1.8.2: {} + + concat-map@0.0.1: {} + + convert-source-map@2.0.0: {} + + core-js-compat@3.41.0: + dependencies: + browserslist: 4.24.4 + + crypto-random-string@2.0.0: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + deepmerge@4.3.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + del@4.1.1: + dependencies: + '@types/glob': 7.2.0 + globby: 6.1.0 + is-path-cwd: 2.2.0 + is-path-in-cwd: 2.1.0 + p-map: 2.1.0 + pify: 4.0.1 + rimraf: 2.7.1 + + detect-libc@2.0.3: + optional: true + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + ejs@3.1.10: + dependencies: + jake: 10.9.2 + + electron-to-chromium@1.5.114: {} + + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + es-abstract@1.23.9: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.6.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + escalade@3.2.0: {} + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-walker@1.0.1: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + events@3.3.0: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-uri@3.0.6: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + gensync@1.0.0-beta.2: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-own-enumerable-property-symbols@3.0.2: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@11.12.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + globby@14.1.0: + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.3 + ignore: 7.0.3 + path-type: 6.0.0 + slash: 5.1.0 + unicorn-magic: 0.3.0 + + globby@6.1.0: + dependencies: + array-union: 1.0.2 + glob: 7.2.3 + object-assign: 4.1.1 + pify: 2.3.0 + pinkie-promise: 2.0.1 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + has-bigints@1.1.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + idb@7.1.1: {} + + ignore@7.0.3: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-arrayish@0.3.2: + optional: true + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-map@2.0.3: {} + + is-module@1.0.0: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-obj@1.0.1: {} + + is-path-cwd@2.2.0: {} + + is-path-in-cwd@2.1.0: + dependencies: + is-path-inside: 2.1.0 + + is-path-inside@2.1.0: + dependencies: + path-is-inside: 1.0.2 + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-regexp@1.0.0: {} + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-stream@2.0.1: {} + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + isarray@2.0.5: {} + + jake@10.9.2: + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + + jest-worker@27.5.1: + dependencies: + '@types/node': 22.13.10 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + js-tokens@4.0.0: {} + + jsesc@3.0.2: {} + + jsesc@3.1.0: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@1.0.0: {} + + json-schema@0.4.0: {} + + json5@2.2.3: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonpointer@5.0.1: {} + + leven@3.1.0: {} + + loader-runner@4.3.0: {} + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.debounce@4.0.8: {} + + lodash.sortby@4.7.0: {} + + lodash@4.17.21: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.25.9: + dependencies: + sourcemap-codec: 1.4.8 + + math-intrinsics@1.1.0: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + ms@2.1.3: {} + + nanoid@3.3.9: {} + + neo-async@2.6.2: {} + + next@15.2.1(@babel/core@7.26.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@next/env': 15.2.1 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.15 + busboy: 1.6.0 + caniuse-lite: 1.0.30001703 + postcss: 8.4.31 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + styled-jsx: 5.1.6(@babel/core@7.26.9)(react@19.0.0) + optionalDependencies: + '@next/swc-darwin-arm64': 15.2.1 + '@next/swc-darwin-x64': 15.2.1 + '@next/swc-linux-arm64-gnu': 15.2.1 + '@next/swc-linux-arm64-musl': 15.2.1 + '@next/swc-linux-x64-gnu': 15.2.1 + '@next/swc-linux-x64-musl': 15.2.1 + '@next/swc-win32-arm64-msvc': 15.2.1 + '@next/swc-win32-x64-msvc': 15.2.1 + sharp: 0.33.5 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + node-releases@2.0.19: {} + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@2.1.0: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-is-inside@1.0.2: {} + + path-parse@1.0.7: {} + + path-type@6.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pify@2.3.0: {} + + pify@4.0.1: {} + + pinkie-promise@2.0.1: + dependencies: + pinkie: 2.0.4 + + pinkie@2.0.4: {} + + possible-typed-array-names@1.1.0: {} + + postcss@8.4.31: + dependencies: + nanoid: 3.3.9 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + pretty-bytes@5.6.0: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + react-dom@19.0.0(react@19.0.0): + dependencies: + react: 19.0.0 + scheduler: 0.25.0 + + react@19.0.0: {} + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regenerate-unicode-properties@10.2.0: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.14.1: {} + + regenerator-transform@0.15.2: + dependencies: + '@babel/runtime': 7.26.9 + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + regexpu-core@6.2.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.12.0 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.0 + + regjsgen@0.8.0: {} + + regjsparser@0.12.0: + dependencies: + jsesc: 3.0.2 + + require-from-string@2.0.2: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.1.0: {} + + rimraf@2.7.1: + dependencies: + glob: 7.2.3 + + rollup@2.79.2: + optionalDependencies: + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.2.1: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + scheduler@0.25.0: {} + + schema-utils@4.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + + semver@6.3.1: {} + + semver@7.7.1: + optional: true + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.7.1 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + optional: true + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + optional: true + + slash@5.1.0: {} + + smob@1.5.0: {} + + source-list-map@2.0.1: {} + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.8.0-beta.0: + dependencies: + whatwg-url: 7.1.0 + + sourcemap-codec@1.4.8: {} + + streamsearch@1.1.0: {} + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + stringify-object@3.3.0: + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + + strip-comments@2.0.1: {} + + styled-jsx@5.1.6(@babel/core@7.26.9)(react@19.0.0): + dependencies: + client-only: 0.0.1 + react: 19.0.0 + optionalDependencies: + '@babel/core': 7.26.9 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tapable@2.2.1: {} + + temp-dir@2.0.0: {} + + tempy@0.6.0: + dependencies: + is-stream: 2.0.1 + temp-dir: 2.0.0 + type-fest: 0.16.0 + unique-string: 2.0.0 + + terser-webpack-plugin@5.3.14(webpack@5.98.0): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 4.3.0 + serialize-javascript: 6.0.2 + terser: 5.39.0 + webpack: 5.98.0 + + terser@5.39.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.1 + commander: 2.20.3 + source-map-support: 0.5.21 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + tr46@1.0.1: + dependencies: + punycode: 2.3.1 + + tslib@2.8.1: {} + + type-fest@0.16.0: {} + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + undici-types@6.20.0: {} + + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.1.0 + + unicode-match-property-value-ecmascript@2.2.0: {} + + unicode-property-aliases-ecmascript@2.1.0: {} + + unicorn-magic@0.3.0: {} + + unique-string@2.0.0: + dependencies: + crypto-random-string: 2.0.0 + + universalify@2.0.1: {} + + upath@1.2.0: {} + + update-browserslist-db@1.1.3(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + watchpack@2.4.2: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + webidl-conversions@4.0.2: {} + + webpack-sources@1.4.3: + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + + webpack-sources@3.2.3: {} + + webpack@5.98.0: + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.6 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.14.1 + browserslist: 4.24.4 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.1 + es-module-lexer: 1.6.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.14(webpack@5.98.0) + watchpack: 2.4.2 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + whatwg-url@7.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + workbox-background-sync@7.3.0: + dependencies: + idb: 7.1.1 + workbox-core: 7.3.0 + + workbox-broadcast-update@7.3.0: + dependencies: + workbox-core: 7.3.0 + + workbox-build@7.3.0: + dependencies: + '@apideck/better-ajv-errors': 0.3.6(ajv@8.17.1) + '@babel/core': 7.26.9 + '@babel/preset-env': 7.26.9(@babel/core@7.26.9) + '@babel/runtime': 7.26.9 + '@rollup/plugin-babel': 5.3.1(@babel/core@7.26.9)(rollup@2.79.2) + '@rollup/plugin-node-resolve': 15.3.1(rollup@2.79.2) + '@rollup/plugin-replace': 2.4.2(rollup@2.79.2) + '@rollup/plugin-terser': 0.4.4(rollup@2.79.2) + '@surma/rollup-plugin-off-main-thread': 2.2.3 + ajv: 8.17.1 + common-tags: 1.8.2 + fast-json-stable-stringify: 2.1.0 + fs-extra: 9.1.0 + glob: 7.2.3 + lodash: 4.17.21 + pretty-bytes: 5.6.0 + rollup: 2.79.2 + source-map: 0.8.0-beta.0 + stringify-object: 3.3.0 + strip-comments: 2.0.1 + tempy: 0.6.0 + upath: 1.2.0 + workbox-background-sync: 7.3.0 + workbox-broadcast-update: 7.3.0 + workbox-cacheable-response: 7.3.0 + workbox-core: 7.3.0 + workbox-expiration: 7.3.0 + workbox-google-analytics: 7.3.0 + workbox-navigation-preload: 7.3.0 + workbox-precaching: 7.3.0 + workbox-range-requests: 7.3.0 + workbox-recipes: 7.3.0 + workbox-routing: 7.3.0 + workbox-strategies: 7.3.0 + workbox-streams: 7.3.0 + workbox-sw: 7.3.0 + workbox-window: 7.3.0 + transitivePeerDependencies: + - '@types/babel__core' + - supports-color + + workbox-cacheable-response@7.3.0: + dependencies: + workbox-core: 7.3.0 + + workbox-core@7.3.0: {} + + workbox-expiration@7.3.0: + dependencies: + idb: 7.1.1 + workbox-core: 7.3.0 + + workbox-google-analytics@7.3.0: + dependencies: + workbox-background-sync: 7.3.0 + workbox-core: 7.3.0 + workbox-routing: 7.3.0 + workbox-strategies: 7.3.0 + + workbox-navigation-preload@7.3.0: + dependencies: + workbox-core: 7.3.0 + + workbox-precaching@7.3.0: + dependencies: + workbox-core: 7.3.0 + workbox-routing: 7.3.0 + workbox-strategies: 7.3.0 + + workbox-range-requests@7.3.0: + dependencies: + workbox-core: 7.3.0 + + workbox-recipes@7.3.0: + dependencies: + workbox-cacheable-response: 7.3.0 + workbox-core: 7.3.0 + workbox-expiration: 7.3.0 + workbox-precaching: 7.3.0 + workbox-routing: 7.3.0 + workbox-strategies: 7.3.0 + + workbox-routing@7.3.0: + dependencies: + workbox-core: 7.3.0 + + workbox-strategies@7.3.0: + dependencies: + workbox-core: 7.3.0 + + workbox-streams@7.3.0: + dependencies: + workbox-core: 7.3.0 + workbox-routing: 7.3.0 + + workbox-sw@7.3.0: {} + + workbox-webpack-plugin@7.3.0(webpack@5.98.0): + dependencies: + fast-json-stable-stringify: 2.1.0 + pretty-bytes: 5.6.0 + upath: 1.2.0 + webpack: 5.98.0 + webpack-sources: 1.4.3 + workbox-build: 7.3.0 + transitivePeerDependencies: + - '@types/babel__core' + - supports-color + + workbox-window@7.3.0: + dependencies: + '@types/trusted-types': 2.0.7 + workbox-core: 7.3.0 + + wrappy@1.0.2: {} + + yallist@3.1.1: {} + + yocto-queue@0.1.0: {} From b41aab19e34907734f491bb23c90097a3366fce7 Mon Sep 17 00:00:00 2001 From: C-Jeril <34131400+C-Jeril@users.noreply.github.com> Date: Tue, 11 Mar 2025 09:43:28 +0800 Subject: [PATCH 2/8] Update License --- LICENSE | 2 +- package-lock.json | 4 ++-- package.json | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/LICENSE b/LICENSE index ae0d9c4c..3ea96e0c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 ShadowWalker w@weiw.io https://weiw.io +Copyright (c) 2024 AlexJesus Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/package-lock.json b/package-lock.json index 5d1d325e..48ca42e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "next-pwa", + "name": "nextjs-pwa", "version": "5.5.4", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "next-pwa", + "name": "nextjs-pwa", "version": "5.5.4", "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 311edcd5..441a17db 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { - "name": "next-pwa", - "version": "5.6.0", + "name": "nextjs-pwa", + "version": "6.0.0", "description": "Next.js with PWA, powered by workbox.", "main": "index.js", - "repository": "https://github.com/shadowwalker/next-pwa", - "author": "ShadowWalker ", + "repository": "https://github.com/C-Jeril/nextjs-pwa", + "author": "AlexJesus ", "license": "MIT", "private": false, "keywords": [ From a8db153e61dc919d1f79926bf5ee0124bbf5db7a Mon Sep 17 00:00:00 2001 From: C-Jeril <34131400+C-Jeril@users.noreply.github.com> Date: Tue, 11 Mar 2025 09:53:34 +0800 Subject: [PATCH 3/8] Update name for NPM --- package-lock.json | 4 ++-- package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 48ca42e4..0c8bc86c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "nextjs-pwa", + "name": "next-pwa-new", "version": "5.5.4", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "nextjs-pwa", + "name": "next-pwa-new", "version": "5.5.4", "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 441a17db..17bd51db 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,9 @@ { - "name": "nextjs-pwa", + "name": "next-pwa-new", "version": "6.0.0", "description": "Next.js with PWA, powered by workbox.", "main": "index.js", - "repository": "https://github.com/C-Jeril/nextjs-pwa", + "repository": "https://github.com/C-Jeril/next-pwa", "author": "AlexJesus ", "license": "MIT", "private": false, From 7155858c42acfc9f3dd28e1c5977e8291ca700c7 Mon Sep 17 00:00:00 2001 From: C-Jeril <34131400+C-Jeril@users.noreply.github.com> Date: Tue, 11 Mar 2025 10:54:16 +0800 Subject: [PATCH 4/8] Update require to import --- CHANGELOG.md | 17 + README.md | 366 ++++++------------ build-custom-worker.js | 13 +- build-fallback-worker.js | 13 +- cache.js | 2 + .../cache-on-front-end-nav/.eslintrc.json | 3 - examples/cache-on-front-end-nav/README.md | 41 -- .../cache-on-front-end-nav/next.config.js | 5 - examples/cache-on-front-end-nav/package.json | 22 -- examples/cache-on-front-end-nav/pages/_app.js | 38 -- .../cache-on-front-end-nav/pages/_document.js | 50 --- examples/cache-on-front-end-nav/pages/a.js | 22 -- examples/cache-on-front-end-nav/pages/b.js | 22 -- .../cache-on-front-end-nav/pages/index.js | 22 -- .../cache-on-front-end-nav/public/favicon.ico | Bin 15086 -> 0 bytes .../public/icons/android-chrome-192x192.png | Bin 5629 -> 0 bytes .../public/icons/apple-touch-icon.png | Bin 3996 -> 0 bytes .../public/icons/icon-512x512.png | Bin 14584 -> 0 bytes .../public/manifest.json | 22 -- .../cache-on-front-end-nav/worker/index.js | 13 - examples/cookie/.eslintrc.json | 3 - examples/cookie/README.md | 26 -- examples/cookie/next.config.js | 7 - examples/cookie/package.json | 24 -- examples/cookie/pages/_document.js | 50 --- examples/cookie/pages/index.js | 54 --- examples/cookie/pages/login.js | 24 -- examples/cookie/public/favicon.ico | Bin 15086 -> 0 bytes .../public/icons/android-chrome-192x192.png | Bin 5629 -> 0 bytes .../cookie/public/icons/apple-touch-icon.png | Bin 3996 -> 0 bytes examples/cookie/public/icons/icon-512x512.png | Bin 14584 -> 0 bytes examples/cookie/public/manifest.json | 22 -- examples/custom-ts-worker/.eslintrc.json | 3 - examples/custom-ts-worker/README.md | 66 ---- examples/custom-ts-worker/next-env.d.ts | 5 - examples/custom-ts-worker/next.config.js | 5 - examples/custom-ts-worker/package.json | 25 -- examples/custom-ts-worker/pages/_document.tsx | 50 --- examples/custom-ts-worker/pages/index.tsx | 12 - examples/custom-ts-worker/public/favicon.ico | Bin 15086 -> 0 bytes .../public/icons/android-chrome-192x192.png | Bin 5629 -> 0 bytes .../public/icons/apple-touch-icon.png | Bin 3996 -> 0 bytes .../public/icons/icon-512x512.png | Bin 14584 -> 0 bytes .../custom-ts-worker/public/manifest.json | 22 -- examples/custom-ts-worker/tsconfig.json | 32 -- .../types/service-worker.d.ts | 131 ------- examples/custom-ts-worker/worker/index.ts | 48 --- examples/custom-ts-worker/worker/util.ts | 6 - examples/custom-worker/.eslintrc.json | 3 - examples/custom-worker/README.md | 68 ---- examples/custom-worker/next.config.js | 5 - examples/custom-worker/package.json | 23 -- examples/custom-worker/pages/_document.js | 50 --- examples/custom-worker/pages/index.js | 12 - examples/custom-worker/public/favicon.ico | Bin 15086 -> 0 bytes .../public/icons/android-chrome-192x192.png | Bin 5629 -> 0 bytes .../public/icons/apple-touch-icon.png | Bin 3996 -> 0 bytes .../public/icons/icon-512x512.png | Bin 14584 -> 0 bytes examples/custom-worker/public/manifest.json | 22 -- examples/custom-worker/worker/index.js | 20 - examples/custom-worker/worker/util.js | 8 - examples/lifecycle/.eslintrc.json | 3 - examples/lifecycle/README.md | 29 -- examples/lifecycle/next.config.js | 7 - examples/lifecycle/package.json | 22 -- examples/lifecycle/pages/_document.js | 50 --- examples/lifecycle/pages/index.js | 89 ----- examples/lifecycle/public/favicon.ico | Bin 15086 -> 0 bytes .../public/icons/android-chrome-192x192.png | Bin 5629 -> 0 bytes .../public/icons/apple-touch-icon.png | Bin 3996 -> 0 bytes .../lifecycle/public/icons/icon-512x512.png | Bin 14584 -> 0 bytes examples/lifecycle/public/manifest.json | 22 -- examples/minimal/.eslintrc.json | 3 - examples/minimal/README.md | 21 - examples/minimal/index.js | 54 --- examples/minimal/lighthouse.pdf | Bin 170673 -> 0 bytes examples/minimal/next.config.js | 9 - examples/minimal/package.json | 25 -- examples/minimal/pages/_document.js | 50 --- examples/minimal/pages/index.js | 12 - examples/minimal/public/favicon.ico | Bin 15086 -> 0 bytes .../public/icons/android-chrome-192x192.png | Bin 5629 -> 0 bytes .../minimal/public/icons/apple-touch-icon.png | Bin 3996 -> 0 bytes .../minimal/public/icons/icon-512x512.png | Bin 14584 -> 0 bytes examples/minimal/public/manifest.json | 22 -- examples/next-9/.eslintrc.json | 3 - examples/next-9/README.md | 30 -- examples/next-9/lighthouse.pdf | Bin 137073 -> 0 bytes examples/next-9/next.config.js | 5 - examples/next-9/package.json | 22 -- examples/next-9/pages/_document.js | 50 --- examples/next-9/pages/about.js | 14 - examples/next-9/pages/index.js | 14 - examples/next-9/public/favicon.ico | Bin 15086 -> 0 bytes .../public/icons/android-chrome-192x192.png | Bin 5629 -> 0 bytes .../next-9/public/icons/apple-touch-icon.png | Bin 3996 -> 0 bytes examples/next-9/public/icons/icon-512x512.png | Bin 14584 -> 0 bytes examples/next-9/public/manifest.json | 22 -- examples/next-i18next/.eslintrc.json | 3 - examples/next-i18next/README.md | 31 -- examples/next-i18next/i18n.js | 9 - examples/next-i18next/index.js | 42 -- examples/next-i18next/next.config.js | 3 - examples/next-i18next/package.json | 26 -- examples/next-i18next/pages/_app.js | 10 - examples/next-i18next/pages/_document.js | 50 --- examples/next-i18next/pages/index.js | 17 - examples/next-i18next/public/favicon.ico | Bin 15086 -> 0 bytes .../public/icons/android-chrome-192x192.png | Bin 5629 -> 0 bytes .../public/icons/apple-touch-icon.png | Bin 3996 -> 0 bytes .../public/icons/icon-512x512.png | Bin 14584 -> 0 bytes examples/next-i18next/public/manifest.json | 22 -- .../public/static/locales/en/common.json | 3 - .../public/static/locales/zh/common.json | 3 - examples/next-image/.eslintrc.json | 3 - examples/next-image/README.md | 25 -- examples/next-image/images/nextjs-dark.svg | 5 - examples/next-image/next.config.js | 5 - examples/next-image/package.json | 22 -- examples/next-image/pages/_document.js | 50 --- examples/next-image/pages/about.js | 14 - examples/next-image/pages/index.js | 18 - examples/next-image/public/favicon.ico | Bin 15086 -> 0 bytes .../public/icons/android-chrome-192x192.png | Bin 5629 -> 0 bytes .../public/icons/apple-touch-icon.png | Bin 3996 -> 0 bytes .../next-image/public/icons/icon-512x512.png | Bin 14584 -> 0 bytes examples/next-image/public/manifest.json | 22 -- examples/offline-fallback-v2/.eslintrc.json | 3 - examples/offline-fallback-v2/README.md | 45 --- examples/offline-fallback-v2/next.config.js | 16 - examples/offline-fallback-v2/package.json | 23 -- .../offline-fallback-v2/pages/_document.js | 50 --- .../offline-fallback-v2/pages/_offline.js | 13 - examples/offline-fallback-v2/pages/index.js | 16 - .../offline-fallback-v2/public/favicon.ico | Bin 15086 -> 0 bytes .../public/icons/android-chrome-192x192.png | Bin 5629 -> 0 bytes .../public/icons/apple-touch-icon.png | Bin 3996 -> 0 bytes .../public/icons/icon-512x512.png | Bin 14584 -> 0 bytes .../offline-fallback-v2/public/manifest.json | 22 -- .../public/static/images/fallback.png | Bin 2335 -> 0 bytes examples/offline-fallback/.eslintrc.json | 3 - examples/offline-fallback/README.md | 36 -- examples/offline-fallback/next.config.js | 10 - examples/offline-fallback/package.json | 23 -- examples/offline-fallback/pages/_document.js | 50 --- examples/offline-fallback/pages/fallback.js | 13 - examples/offline-fallback/pages/index.js | 16 - examples/offline-fallback/public/favicon.ico | Bin 15086 -> 0 bytes .../public/icons/android-chrome-192x192.png | Bin 5629 -> 0 bytes .../public/icons/apple-touch-icon.png | Bin 3996 -> 0 bytes .../public/icons/icon-512x512.png | Bin 14584 -> 0 bytes .../offline-fallback/public/manifest.json | 22 -- .../public/static/images/fallback.png | Bin 2335 -> 0 bytes examples/offline-fallback/service-worker.js | 136 ------- examples/web-push/.eslintrc.json | 3 - examples/web-push/README.md | 44 --- examples/web-push/next.config.js | 5 - examples/web-push/package.json | 24 -- examples/web-push/pages/_document.js | 50 --- examples/web-push/pages/api/notification.js | 36 -- examples/web-push/pages/index.js | 96 ----- examples/web-push/public/favicon.ico | Bin 15086 -> 0 bytes .../public/icons/android-chrome-192x192.png | Bin 5629 -> 0 bytes .../public/icons/apple-touch-icon.png | Bin 3996 -> 0 bytes .../web-push/public/icons/icon-512x512.png | Bin 14584 -> 0 bytes examples/web-push/public/manifest.json | 22 -- examples/web-push/worker/index.js | 39 -- fallback.js | 1 + index.js | 32 +- package.json | 9 +- pnpm-lock.yaml | 2 +- register.js | 141 ++++--- 172 files changed, 266 insertions(+), 3193 deletions(-) delete mode 100644 examples/cache-on-front-end-nav/.eslintrc.json delete mode 100644 examples/cache-on-front-end-nav/README.md delete mode 100644 examples/cache-on-front-end-nav/next.config.js delete mode 100644 examples/cache-on-front-end-nav/package.json delete mode 100644 examples/cache-on-front-end-nav/pages/_app.js delete mode 100644 examples/cache-on-front-end-nav/pages/_document.js delete mode 100644 examples/cache-on-front-end-nav/pages/a.js delete mode 100644 examples/cache-on-front-end-nav/pages/b.js delete mode 100644 examples/cache-on-front-end-nav/pages/index.js delete mode 100644 examples/cache-on-front-end-nav/public/favicon.ico delete mode 100644 examples/cache-on-front-end-nav/public/icons/android-chrome-192x192.png delete mode 100644 examples/cache-on-front-end-nav/public/icons/apple-touch-icon.png delete mode 100644 examples/cache-on-front-end-nav/public/icons/icon-512x512.png delete mode 100644 examples/cache-on-front-end-nav/public/manifest.json delete mode 100644 examples/cache-on-front-end-nav/worker/index.js delete mode 100644 examples/cookie/.eslintrc.json delete mode 100644 examples/cookie/README.md delete mode 100644 examples/cookie/next.config.js delete mode 100644 examples/cookie/package.json delete mode 100644 examples/cookie/pages/_document.js delete mode 100644 examples/cookie/pages/index.js delete mode 100644 examples/cookie/pages/login.js delete mode 100644 examples/cookie/public/favicon.ico delete mode 100644 examples/cookie/public/icons/android-chrome-192x192.png delete mode 100644 examples/cookie/public/icons/apple-touch-icon.png delete mode 100644 examples/cookie/public/icons/icon-512x512.png delete mode 100644 examples/cookie/public/manifest.json delete mode 100644 examples/custom-ts-worker/.eslintrc.json delete mode 100644 examples/custom-ts-worker/README.md delete mode 100644 examples/custom-ts-worker/next-env.d.ts delete mode 100644 examples/custom-ts-worker/next.config.js delete mode 100644 examples/custom-ts-worker/package.json delete mode 100644 examples/custom-ts-worker/pages/_document.tsx delete mode 100644 examples/custom-ts-worker/pages/index.tsx delete mode 100644 examples/custom-ts-worker/public/favicon.ico delete mode 100644 examples/custom-ts-worker/public/icons/android-chrome-192x192.png delete mode 100644 examples/custom-ts-worker/public/icons/apple-touch-icon.png delete mode 100644 examples/custom-ts-worker/public/icons/icon-512x512.png delete mode 100644 examples/custom-ts-worker/public/manifest.json delete mode 100644 examples/custom-ts-worker/tsconfig.json delete mode 100644 examples/custom-ts-worker/types/service-worker.d.ts delete mode 100644 examples/custom-ts-worker/worker/index.ts delete mode 100644 examples/custom-ts-worker/worker/util.ts delete mode 100644 examples/custom-worker/.eslintrc.json delete mode 100644 examples/custom-worker/README.md delete mode 100644 examples/custom-worker/next.config.js delete mode 100644 examples/custom-worker/package.json delete mode 100644 examples/custom-worker/pages/_document.js delete mode 100644 examples/custom-worker/pages/index.js delete mode 100644 examples/custom-worker/public/favicon.ico delete mode 100644 examples/custom-worker/public/icons/android-chrome-192x192.png delete mode 100644 examples/custom-worker/public/icons/apple-touch-icon.png delete mode 100644 examples/custom-worker/public/icons/icon-512x512.png delete mode 100644 examples/custom-worker/public/manifest.json delete mode 100644 examples/custom-worker/worker/index.js delete mode 100644 examples/custom-worker/worker/util.js delete mode 100644 examples/lifecycle/.eslintrc.json delete mode 100644 examples/lifecycle/README.md delete mode 100644 examples/lifecycle/next.config.js delete mode 100644 examples/lifecycle/package.json delete mode 100644 examples/lifecycle/pages/_document.js delete mode 100644 examples/lifecycle/pages/index.js delete mode 100644 examples/lifecycle/public/favicon.ico delete mode 100644 examples/lifecycle/public/icons/android-chrome-192x192.png delete mode 100644 examples/lifecycle/public/icons/apple-touch-icon.png delete mode 100644 examples/lifecycle/public/icons/icon-512x512.png delete mode 100644 examples/lifecycle/public/manifest.json delete mode 100644 examples/minimal/.eslintrc.json delete mode 100644 examples/minimal/README.md delete mode 100644 examples/minimal/index.js delete mode 100644 examples/minimal/lighthouse.pdf delete mode 100644 examples/minimal/next.config.js delete mode 100644 examples/minimal/package.json delete mode 100644 examples/minimal/pages/_document.js delete mode 100644 examples/minimal/pages/index.js delete mode 100644 examples/minimal/public/favicon.ico delete mode 100644 examples/minimal/public/icons/android-chrome-192x192.png delete mode 100644 examples/minimal/public/icons/apple-touch-icon.png delete mode 100644 examples/minimal/public/icons/icon-512x512.png delete mode 100644 examples/minimal/public/manifest.json delete mode 100644 examples/next-9/.eslintrc.json delete mode 100644 examples/next-9/README.md delete mode 100644 examples/next-9/lighthouse.pdf delete mode 100644 examples/next-9/next.config.js delete mode 100644 examples/next-9/package.json delete mode 100644 examples/next-9/pages/_document.js delete mode 100644 examples/next-9/pages/about.js delete mode 100644 examples/next-9/pages/index.js delete mode 100644 examples/next-9/public/favicon.ico delete mode 100644 examples/next-9/public/icons/android-chrome-192x192.png delete mode 100644 examples/next-9/public/icons/apple-touch-icon.png delete mode 100644 examples/next-9/public/icons/icon-512x512.png delete mode 100644 examples/next-9/public/manifest.json delete mode 100644 examples/next-i18next/.eslintrc.json delete mode 100644 examples/next-i18next/README.md delete mode 100644 examples/next-i18next/i18n.js delete mode 100644 examples/next-i18next/index.js delete mode 100644 examples/next-i18next/next.config.js delete mode 100644 examples/next-i18next/package.json delete mode 100644 examples/next-i18next/pages/_app.js delete mode 100644 examples/next-i18next/pages/_document.js delete mode 100644 examples/next-i18next/pages/index.js delete mode 100644 examples/next-i18next/public/favicon.ico delete mode 100644 examples/next-i18next/public/icons/android-chrome-192x192.png delete mode 100644 examples/next-i18next/public/icons/apple-touch-icon.png delete mode 100644 examples/next-i18next/public/icons/icon-512x512.png delete mode 100644 examples/next-i18next/public/manifest.json delete mode 100644 examples/next-i18next/public/static/locales/en/common.json delete mode 100644 examples/next-i18next/public/static/locales/zh/common.json delete mode 100644 examples/next-image/.eslintrc.json delete mode 100644 examples/next-image/README.md delete mode 100644 examples/next-image/images/nextjs-dark.svg delete mode 100644 examples/next-image/next.config.js delete mode 100644 examples/next-image/package.json delete mode 100644 examples/next-image/pages/_document.js delete mode 100644 examples/next-image/pages/about.js delete mode 100644 examples/next-image/pages/index.js delete mode 100644 examples/next-image/public/favicon.ico delete mode 100644 examples/next-image/public/icons/android-chrome-192x192.png delete mode 100644 examples/next-image/public/icons/apple-touch-icon.png delete mode 100644 examples/next-image/public/icons/icon-512x512.png delete mode 100644 examples/next-image/public/manifest.json delete mode 100644 examples/offline-fallback-v2/.eslintrc.json delete mode 100644 examples/offline-fallback-v2/README.md delete mode 100644 examples/offline-fallback-v2/next.config.js delete mode 100644 examples/offline-fallback-v2/package.json delete mode 100644 examples/offline-fallback-v2/pages/_document.js delete mode 100644 examples/offline-fallback-v2/pages/_offline.js delete mode 100644 examples/offline-fallback-v2/pages/index.js delete mode 100644 examples/offline-fallback-v2/public/favicon.ico delete mode 100644 examples/offline-fallback-v2/public/icons/android-chrome-192x192.png delete mode 100644 examples/offline-fallback-v2/public/icons/apple-touch-icon.png delete mode 100644 examples/offline-fallback-v2/public/icons/icon-512x512.png delete mode 100644 examples/offline-fallback-v2/public/manifest.json delete mode 100644 examples/offline-fallback-v2/public/static/images/fallback.png delete mode 100644 examples/offline-fallback/.eslintrc.json delete mode 100644 examples/offline-fallback/README.md delete mode 100644 examples/offline-fallback/next.config.js delete mode 100644 examples/offline-fallback/package.json delete mode 100644 examples/offline-fallback/pages/_document.js delete mode 100644 examples/offline-fallback/pages/fallback.js delete mode 100644 examples/offline-fallback/pages/index.js delete mode 100644 examples/offline-fallback/public/favicon.ico delete mode 100644 examples/offline-fallback/public/icons/android-chrome-192x192.png delete mode 100644 examples/offline-fallback/public/icons/apple-touch-icon.png delete mode 100644 examples/offline-fallback/public/icons/icon-512x512.png delete mode 100644 examples/offline-fallback/public/manifest.json delete mode 100644 examples/offline-fallback/public/static/images/fallback.png delete mode 100644 examples/offline-fallback/service-worker.js delete mode 100644 examples/web-push/.eslintrc.json delete mode 100644 examples/web-push/README.md delete mode 100644 examples/web-push/next.config.js delete mode 100644 examples/web-push/package.json delete mode 100644 examples/web-push/pages/_document.js delete mode 100644 examples/web-push/pages/api/notification.js delete mode 100644 examples/web-push/pages/index.js delete mode 100644 examples/web-push/public/favicon.ico delete mode 100644 examples/web-push/public/icons/android-chrome-192x192.png delete mode 100644 examples/web-push/public/icons/apple-touch-icon.png delete mode 100644 examples/web-push/public/icons/icon-512x512.png delete mode 100644 examples/web-push/public/manifest.json delete mode 100644 examples/web-push/worker/index.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 71a06a76..64de19c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,23 @@ **NOTE: for newer changelog, go to [release page](https://github.com/shadowwalker/next-pwa/releases) instead.** +## 6.0.0 + +### Fix + +1. dependency upgrades +2. Update require to import + +## 5.6.0 + +Summary +BREAKING CHANGE +Start from version 5.6.0. This plugin function signature has been changed to follow the recommended pattern from next.js. Mainly extracting pwa config from mixing into rest of the next.js config. This is also less intrusive. See following commit for details. + +## 5.5.6 + +Version 5.5.5 included a broken change which prevent pwa config to be effective. This release will fix that. + ## 5.5.0 ### Fix diff --git a/README.md b/README.md index 5fa5c72c..c51d8500 100644 --- a/README.md +++ b/README.md @@ -1,115 +1,50 @@ -# Zero Config [PWA](https://web.dev/learn/pwa/) Plugin for [Next.js](https://nextjs.org/) +# Zero Config PWA Plugin for Next.js -This plugin is powered by [workbox](https://developer.chrome.com/docs/workbox/) and other good stuff. +This plugin simplifies adding PWA capabilities to your Next.js application using Workbox and other optimized tools. -![size](https://img.shields.io/bundlephobia/minzip/next-pwa.svg) ![dependencies](https://img.shields.io/librariesio/release/npm/next-pwa) ![downloads](https://img.shields.io/npm/dw/next-pwa.svg) ![license](https://img.shields.io/npm/l/next-pwa.svg) +![size](https://img.shields.io/bundlephobia/minzip/next-pwa.svg) +![dependencies](https://img.shields.io/librariesio/release/npm/next-pwa) +![downloads](https://img.shields.io/npm/dw/next-pwa.svg) +![license](https://img.shields.io/npm/l/next-pwa.svg) -👋 Share your awesome PWA project 👉 [here](https://github.com/shadowwalker/next-pwa/discussions/206) +Share your PWA project [here](https://github.com/shadowwalker/next-pwa/discussions/206). -**Features** +## Features -- 0️⃣ Zero config for registering and generating service worker -- ✨ Optimized precache and runtime cache -- 💯 Maximize lighthouse score -- 🎈 Easy to understand examples -- 📴 Completely offline support with fallbacks [example](https://github.com/shadowwalker/next-pwa/tree/master/examples/offline-fallback-v2) 🆕 -- 📦 Use [workbox](https://developer.chrome.com/docs/workbox/) and [workbox-window](https://developer.chrome.com/docs/workbox/modules/workbox-window) v6 -- 🍪 Work with cookies out of the box -- 🔉 Default range requests for audios and videos -- ☕ No custom server needed for Next.js 9+ [example](https://github.com/shadowwalker/next-pwa/tree/master/examples/next-9) -- 🔧 Handle PWA lifecycle events opt-in [example](https://github.com/shadowwalker/next-pwa/tree/master/examples/lifecycle) -- 📐 Custom worker to run extra code with code splitting and **typescript** support [example](https://github.com/shadowwalker/next-pwa/tree/master/examples/custom-ts-worker) -- 📜 [Public environment variables](https://nextjs.org/docs/basic-features/environment-variables#exposing-environment-variables-to-the-browser) available in custom worker as usual -- 🐞 Debug service worker with confidence in development mode without caching -- 🌏 Internationalization (a.k.a I18N) with `next-i18next` [example](https://github.com/shadowwalker/next-pwa/tree/master/examples/next-i18next) -- 🛠 Configurable by the same [workbox configuration options](https://developer.chrome.com/docs/workbox/modules/workbox-webpack-plugin) for [GenerateSW](https://developer.chrome.com/docs/workbox/modules/workbox-webpack-plugin/#generatesw-plugin) and [InjectManifest](https://developer.chrome.com/docs/workbox/modules/workbox-webpack-plugin/#injectmanifest-plugin) -- 🚀 Spin up a [GitPod](https://gitpod.io/#https://github.com/shadowwalker/next-pwa/) and try out examples in rocket speed -- ⚡ Support [blitz.js](https://blitzjs.com/) (simply add to `blitz.config.js`) -- 🔩 (Experimental) precaching `.module.js` when `next.config.js` has `experimental.modern` set to `true` +- Zero configuration for registering and generating service workers +- Optimized precaching and runtime caching +- Maximize Lighthouse score +- Comprehensive offline support with fallbacks +- Works with Workbox v6 +- Supports custom workers for additional functionality +- Debug service workers in development mode without caching +- Configurable using Workbox options -> **NOTE 1** - `next-pwa` version 2.0.0+ should only work with `next.js` 9.1+, and static files should only be served through `public` directory. This will make things simpler. -> -> **NOTE 2** - If you encounter error `TypeError: Cannot read property **'javascript' of undefined**` during build, [please consider upgrade to webpack5 in `next.config.js`](https://github.com/shadowwalker/next-pwa/issues/198#issuecomment-817205700). - ---- - -[![Open in Gitpod](https://img.shields.io/badge/Open%20In-Gitpod.io-%231966D2?style=for-the-badge&logo=gitpod)](https://gitpod.io/#https://github.com/shadowwalker/next-pwa/) - -## Install - -> If you are new to `next.js` or `react.js` at all, you may want to first checkout [learn next.js](https://nextjs.org/learn/basics/create-nextjs-app) or [next.js document](https://nextjs.org/docs/getting-started). Then start from [a simple example](https://github.com/shadowwalker/next-pwa/tree/master/examples/next-9) or [progressive-web-app example in next.js repository](https://github.com/vercel/next.js/tree/canary/examples/progressive-web-app). +## Installation ```bash -yarn add next-pwa +npm install next-pwa ``` ## Basic Usage -### Step 1: withPWA - -Update or create `next.config.js` with +### Step 1: Configure `next.config.js` ```javascript -const withPWA = require('next-pwa')({ - dest: 'public' -}) +const withPWA = require("next-pwa")({ + dest: "public", +}); module.exports = withPWA({ - // next.js config -}) + // Next.js configuration +}); ``` -After running `next build`, this will generate two files in your `public`: `workbox-*.js` and `sw.js`, which will automatically be served statically. - -If you are using Next.js version 9 or newer, then skip the options below and move on to Step 2. - -If you are using Next.js older than version 9, you'll need to pick an option below before continuing to Step 2. - -### Option 1: Host Static Files - -Copy files to your static file hosting server, so that they are accessible from the following paths: `https://yourdomain.com/sw.js` and `https://yourdomain.com/workbox-*.js`. - -One example is using Firebase hosting service to host those files statically. You can automate the copy step using scripts in your deployment workflow. - -> For security reasons, you must host these files directly from your domain. If the content is delivered using a redirect, the browser will refuse to run the service worker. +After running `next build`, the plugin will generate `sw.js` and other necessary files in your `public` directory. -### Option 2: Use Custom Server +### Step 2: Add Manifest File -When an HTTP request is received, test if those files are requested, then return those static files. - -Example `server.js` - -```javascript -const { createServer } = require('http') -const { join } = require('path') -const { parse } = require('url') -const next = require('next') - -const app = next({ dev: process.env.NODE_ENV !== 'production' }) -const handle = app.getRequestHandler() - -app.prepare().then(() => { - createServer((req, res) => { - const parsedUrl = parse(req.url, true) - const { pathname } = parsedUrl - - if (pathname === '/sw.js' || /^\/(workbox|worker|fallback)-\w+\.js$/.test(pathname)) { - const filePath = join(__dirname, '.next', pathname) - app.serveStatic(req, res, filePath) - } else { - handle(req, res, parsedUrl) - } - }).listen(3000, () => { - console.log(`> Ready on http://localhost:${3000}`) - }) -}) -``` - -> The following setup has nothing to do with `next-pwa` plugin, and you probably have already set them up. If not, go ahead and set them up. - -### Step 2: Add Manifest File (Example) - -Create a `manifest.json` file in your `public` folder: +Create a `manifest.json` in your `public` folder: ```json { @@ -141,9 +76,9 @@ Create a `manifest.json` file in your `public` folder: } ``` -### Step 3: Add Head Meta (Example) +### Step 3: Add Head Meta Tags -Add the following into `_document.jsx` or `_app.tsx`, in ``: +Add these tags in your `_document.js` or `_app.js`: ```html @@ -159,179 +94,120 @@ Add the following into `_document.jsx` or `_app.tsx`, in ``: - - - + + + - - + + - - - - - - - - - - - - - - - - - -``` - -> Tip: Put the `viewport` head meta tag into `_app.js` rather than in `_document.js` if you need it. - -```typescript - ``` ## Offline Fallbacks -Offline fallbacks are useful when the fetch failed from both cache and network, a precached resource is served instead of present an error from browser. - -To get started simply add a `/_offline` page such as `pages/_offline.js` or `pages/_offline.jsx` or `pages/_offline.ts` or `pages/_offline.tsx`. Then you are all set! When the user is offline, all pages which are not cached will fallback to '/\_offline'. - -**[Use this example to see it in action](https://github.com/shadowwalker/next-pwa/tree/master/examples/offline-fallback-v2)** - -`next-pwa` helps you precache those resources on the first load, then inject a fallback handler to `handlerDidError` plugin to all `runtimeCaching` configs, so that precached resources are served when fetch failed. - -You can also setup `precacheFallback.fallbackURL` in your [runtimeCaching config entry](https://developer.chrome.com/docs/workbox/reference/workbox-build/#type-RuntimeCaching) to implement similar functionality. The difference is that above method is based on the resource type, this method is based matched url pattern. If this config is set in the runtimeCaching config entry, resource type based fallback will be disabled automatically for this particular url pattern to avoid conflict. +To handle offline scenarios, add an `/_offline` page (e.g., `pages/_offline.js`). This page will be served when network requests fail. ## Configuration -There are options you can use to customize the behavior of this plugin by adding `pwa` object in the next config in `next.config.js`: +Customize the plugin behavior by adding a `pwa` object to your `next.config.js`: ```javascript -const withPWA = require('next-pwa')({ - dest: 'public' - // disable: process.env.NODE_ENV === 'development', - // register: true, - // scope: '/app', - // sw: 'service-worker.js', - //... -}) +const withPWA = require("next-pwa")({ + dest: "public", + disable: process.env.NODE_ENV === "development", + register: true, + scope: "/", + sw: "sw.js", + runtimeCaching: [ + { + urlPattern: ({ request }) => request.destination === "image", + handler: "CacheFirst", + options: { + cacheName: "images-cache", + expiration: { + maxEntries: 50, + }, + }, + }, + ], + publicExcludes: ["!noprecache/**/*"], + buildExcludes: [/chunks\/images\/.*$/], + cacheStartUrl: true, + dynamicStartUrl: true, + fallbacks: { + document: "/_offline", + image: "/static/images/fallback.png", + }, + cacheOnFrontEndNav: false, + reloadOnOnline: true, + customWorkerDir: "worker", +}); module.exports = withPWA({ - // next.js config -}) + // Next.js configuration +}); ``` ### Available Options -- disable: boolean - whether to disable pwa feature as a whole - - default: `false` - - set `disable: false`, so that it will generate service worker in both `dev` and `prod` - - set `disable: true` to completely disable PWA - - if you don't need to debug service worker in `dev`, you can set `disable: process.env.NODE_ENV === 'development'` -- register: boolean - whether to let this plugin register service worker for you - - default to `true` - - set to `false` when you want to handle register service worker yourself, this could be done in `componentDidMount` of your root app. you can consider the [register.js](https://github.com/shadowwalker/next-pwa/blob/master/register.js) as an example. -- scope: string - url scope for pwa - - default: [`basePath`](https://nextjs.org/docs/api-reference/next.config.js/basepath) in `next.config.js` or `/` - - set to `/app` so that path under `/app` will be PWA while others are not -- sw: string - service worker script file name - - default: `/sw.js` - - set to another file name if you want to customize the output file name -- runtimeCaching - caching strategies (array or callback function) - - default: see the **Runtime Caching** section for the default configuration - - accepts an array of cache entry objects, [please follow the structure here](https://developer.chrome.com/docs/workbox/reference/workbox-build/#type-RuntimeCaching) - - Note: the order of the array matters. The first rule that matches is effective. Therefore, please **ALWAYS** put rules with larger scope behind the rules with a smaller and specific scope. -- publicExcludes - an array of glob pattern strings to exclude files in the `public` folder from being precached. - - default: `['!noprecache/**/*']` - this means that the default behavior will precache all the files inside your `public` folder but files inside `/public/noprecache` folder. You can simply put files inside that folder to not precache them without config this. - - example: `['!img/super-large-image.jpg', '!fonts/not-used-fonts.otf']` -- buildExcludes - an array of extra pattern or function to exclude files from being precached in `.next/static` (or your custom build) folder - - default: `[]` - - example: `[/chunks\/images\/.*$/]` - Don't precache files under `.next/static/chunks/images` (Highly recommend this to work with `next-optimized-images` plugin) - - doc: Array of (string, RegExp, or function()). One or more specifiers used to exclude assets from the precache manifest. This is interpreted following the same rules as Webpack's standard exclude option. -- cacheStartUrl - whether to cache start url - - default: `true` - - [discussion of use case to not cache start url at all](https://github.com/shadowwalker/next-pwa/pull/296#issuecomment-1094167025) -- dynamicStartUrl - if your start url returns different HTML document under different state (such as logged in vs. not logged in), this should be set to true. - - default: `true` - - effective when `cacheStartUrl` set to `true` - - recommend: set to **false** if your start url always returns same HTML document, then start url will be precached, this will help to speed up first load. -- dynamicStartUrlRedirect - if your start url redirect to another route such as `/login`, it's recommended to setup this redirected url for the best user experience. - - default: `undefined` - - effective when `dynamicStartUrlRedirect` set to `true` -- fallbacks - config precached routes to fallback when both cache and network not available to serve resources. - - **if you just need a offline fallback page, simply create a `/_offline` page such as `pages/_offline.js` and you are all set, no configuration necessary** - - default: `object` - - `fallbacks.document` - fallback route for document (page), default to `/_offline` if you created that page - - `fallbacks.image` - fallback route for image, default to none - - `fallbacks.audio` - fallback route for audio, default to none - - `fallbacks.video` - fallback route for video, default to none - - `fallbacks.font` - fallback route for font, default to none -- cacheOnFrontEndNav - enable additional route cache when navigate between pages with `next/link` on front end. Checkout this [example](https://github.com/shadowwalker/next-pwa/tree/master/examples/cache-on-front-end-nav) for some context about why this is implemented. - - default: `false` - - note: this improve user experience on special use cases but it also adds some overhead because additional network call, I suggest you consider this as a trade off. -- ~~subdomainPrefix: string - url prefix to allow hosting static files on a subdomain~~ - - ~~default: `""` - i.e. default with no prefix~~ - - ~~example: `/subdomain` if the app is hosted on `example.com/subdomain`~~ - - deprecated, use [basePath](https://nextjs.org/docs/api-reference/next.config.js/basepath) instead -- reloadOnOnline - changes the behaviour of the app when the device detects that it has gone back "online" and has a network connection. Indicate if the app should call `location.reload()` to refresh the app. - - default: `true` -- customWorkerDir - customize the directory where `next-pwa` looks for a custom worker implementation to add to the service worker generated by workbox. For more information, check out the [custom worker example](https://github.com/shadowwalker/next-pwa/tree/master/examples/custom-ts-worker). - - default: `worker` - -### Other Options - -`next-pwa` uses `workbox-webpack-plugin`, other options which could also be put in `pwa` object can be found [**ON THE DOCUMENTATION**](https://developer.chrome.com/docs/workbox/modules/workbox-webpack-plugin) for [GenerateSW](https://developer.chrome.com/docs/workbox/modules/workbox-webpack-plugin/#generatesw-plugin) and [InjectManifest](https://developer.chrome.com/docs/workbox/modules/workbox-webpack-plugin/#injectmanifest-plugin). If you specify `swSrc`, `InjectManifest` plugin will be used, otherwise `GenerateSW` will be used to generate service worker. - -### Runtime Caching - -`next-pwa` uses a default runtime [cache.js](https://github.com/shadowwalker/next-pwa/blob/master/cache.js) - -There is a great chance you may want to customize your own runtime caching rules. Please feel free to copy the default `cache.js` file and customize the rules as you like. Don't forget to inject the configurations into your `pwa` config in `next.config.js`. - -Here is the [document on how to write runtime caching configurations](https://developer.chrome.com/docs/workbox/reference/workbox-build/#type-RuntimeCaching), including background sync and broadcast update features and more! - -## Tips - -1. [Common UX pattern to ask user to reload when new service worker is installed](https://github.com/shadowwalker/next-pwa/blob/master/examples/lifecycle/pages/index.js#L26-L38) -2. Use a convention like `{command: 'doSomething', message: ''}` object when `postMessage` to service worker. So that on the listener, it could do multiple different tasks using `if...else...`. -3. When you are debugging service worker, constantly `clean application cache` to reduce some flaky errors. -4. If you are redirecting the user to another route, please note [workbox by default only cache response with 200 HTTP status](https://developer.chrome.com/docs/workbox/modules/workbox-cacheable-response#what_are_the_defaults), if you really want to cache redirected page for the route, you can specify it in `runtimeCaching` such as `options.cacheableResponse.statuses=[200,302]`. -5. When debugging issues, you may want to format your generated `sw.js` file to figure out what's really going on. -6. Force `next-pwa` to generate worker box production build by specify the option `mode: 'production'` in your `pwa` section of `next.config.js`. Though `next-pwa` automatically generate the worker box development build during development (by running `next`) and worker box production build during production (by running `next build` and `next start`). You may still want to force it to production build even during development of your web app for following reason: - 1. Reduce logging noise due to production build doesn't include logging. - 2. Improve performance a bit due to production build is optimized and minified. -7. If you just want to disable worker box logging while keeping development build during development, [simply put `self.__WB_DISABLE_DEV_LOGS = true` in your `worker/index.js` (create one if you don't have one)](https://github.com/shadowwalker/next-pwa/blob/c48ef110360d0138ad2dacd82ab96964e3da2daf/examples/custom-worker/worker/index.js#L6). -8. It is common developers have to use `userAgent` string to determine if users are using Safari/iOS/MacOS or some other platform, [ua-parser-js](https://www.npmjs.com/package/ua-parser-js) library is a good friend for that purpose. +- `dest`: Directory to output service worker files (default: `public`) +- `disable`: Disable PWA features (default: `false`) +- `register`: Automatically register the service worker (default: `true`) +- `scope`: URL scope for the PWA (default: `/`) +- `sw`: Service worker file name (default: `sw.js`) +- `runtimeCaching`: Custom caching strategies +- `publicExcludes`: Exclude files from precaching in the `public` directory +- `buildExcludes`: Exclude files from precaching in the build directory +- `cacheStartUrl`: Cache the start URL (default: `true`) +- `dynamicStartUrl`: Handle dynamic start URLs (default: `true`) +- `fallbacks`: Configure fallback routes for different resource types +- `cacheOnFrontEndNav`: Enable additional caching during front-end navigation +- `reloadOnOnline`: Reload the page when network connection is restored (default: `true`) +- `customWorkerDir`: Directory for custom worker implementations -## Reference +## Advanced Usage -1. [Google Workbox](https://developer.chrome.com/docs/workbox/what-is-workbox/) -2. [ServiceWorker, MessageChannel, & postMessage](https://ponyfoo.com/articles/serviceworker-messagechannel-postmessage) by [Nicolás Bevacqua](https://ponyfoo.com/contributors/ponyfoo) -3. [The Service Worker Lifecycle](https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle) -4. [6 Tips to make your iOS PWA feel like a native app](https://www.netguru.com/codestories/pwa-ios) -5. [Make Your PWA Available on Google Play Store](https://www.netguru.com/codestories/make-your-pwa-available-on-google-play-store) +### Custom Workers -## Fun PWA Projects +For additional functionality, create a custom worker in the specified directory (default: `worker`): -1. [Experience SAMSUNG on an iPhone - must open on an iPhone to start](https://itest.nz/) -2. [App Scope - like an app store for PWA](https://appsco.pe/) -3. [PWA Directory](https://pwa-directory.appspot.com/) -4. [PWA Builder - Alternative way to build awesome PWA](https://www.pwabuilder.com/) +``` +your-project/ + worker/ + index.js +``` + +### Debugging -## License +- Clean application cache frequently to avoid flaky errors. +- Format the generated `sw.js` for easier debugging. +- Use `self.__WB_DISABLE_DEV_LOGS = true` to disable Workbox logs. + +## Reference -MIT +- [Google Workbox Documentation](https://developer.chrome.com/docs/workbox/) +- [Service Worker Lifecycle](https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle) diff --git a/build-custom-worker.js b/build-custom-worker.js index 8d90ff6e..7fd4adc0 100644 --- a/build-custom-worker.js +++ b/build-custom-worker.js @@ -1,10 +1,11 @@ +// build-custom-worker.js 'use strict' -const path = require('path') -const fs = require('fs') -const webpack = require('webpack') -const { CleanWebpackPlugin } = require('clean-webpack-plugin') -const TerserPlugin = require('terser-webpack-plugin') +import path from 'path' +import fs from 'fs' +import webpack from 'webpack' +import { CleanWebpackPlugin } from 'clean-webpack-plugin' +import TerserPlugin from 'terser-webpack-plugin' const buildCustomWorker = ({ id, basedir, customWorkerDir, destdir, plugins, minify }) => { let workerDir = undefined @@ -117,4 +118,4 @@ const buildCustomWorker = ({ id, basedir, customWorkerDir, destdir, plugins, min return name } -module.exports = buildCustomWorker +module.exports = buildCustomWorker \ No newline at end of file diff --git a/build-fallback-worker.js b/build-fallback-worker.js index 8ea09e16..4eac8620 100644 --- a/build-fallback-worker.js +++ b/build-fallback-worker.js @@ -1,10 +1,11 @@ +// build-fallback-worker.js 'use strict' -const path = require('path') -const fs = require('fs') -const webpack = require('webpack') -const { CleanWebpackPlugin } = require('clean-webpack-plugin') -const TerserPlugin = require('terser-webpack-plugin') +import path from 'path' +import fs from 'fs' +import webpack from 'webpack' +import { CleanWebpackPlugin } from 'clean-webpack-plugin' +import TerserPlugin from 'terser-webpack-plugin' const getFallbackEnvs = ({ fallbacks, basedir, id, pageExtensions }) => { let { document, data } = fallbacks @@ -143,4 +144,4 @@ const buildFallbackWorker = ({ id, fallbacks, basedir, destdir, minify, pageExte return { fallbacks, name, precaches: Object.values(envs).filter(v => !!v) } } -module.exports = buildFallbackWorker +module.exports = buildFallbackWorker \ No newline at end of file diff --git a/cache.js b/cache.js index 4f604529..847b2e18 100644 --- a/cache.js +++ b/cache.js @@ -1,3 +1,5 @@ +// cache.js + 'use strict' // Workbox RuntimeCaching config: https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-build#.RuntimeCachingEntry diff --git a/examples/cache-on-front-end-nav/.eslintrc.json b/examples/cache-on-front-end-nav/.eslintrc.json deleted file mode 100644 index bffb357a..00000000 --- a/examples/cache-on-front-end-nav/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "next/core-web-vitals" -} diff --git a/examples/cache-on-front-end-nav/README.md b/examples/cache-on-front-end-nav/README.md deleted file mode 100644 index 228fc4a9..00000000 --- a/examples/cache-on-front-end-nav/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# next-pwa - cache on front end navigation example - -[TOC] - -> **Since `next-pwa@5.2.1`, you can set `cacheOnFrontEndNav: true` in your `pwa` config to achieve the same result in this example, no other code needed.** - -This example demonstrates how to use `next-pwa` plugin to solve the issue when users refresh on a front end navigated route while offline and saw browser's connection lost page. This is an edge case which should not happen very often in normal network connectivity areas, however, this example should help you improve the users experience. - -For context, `next.js` embraces both SSR and front end routing (typical SPA) to deliver smooth users experience. However, when a user navigate on the web app through `next/router` or `next/link` (Link component), the navigation is made through front end routing. Which means there is no HTTP GET request made to the server for that route, it only swap the react component to the new page and change the url showed on the url bar. This "fake" navigation is usually desired because it means users do not have to wait for network delay. - -However the problem appears when it comes to caching, because there is not request that service worker could intercept, nothing is cached. Users may landing on your home page and navigate to different pages without doing any caching. When the network is lost and users reload these pages using refresh button or re-open the browser, a network lost page from the browser is present, bummer! This behavior could leave users very confused as they could navigated the web app without problem in online and offline, when it come back offline, the web app stopped working. - -So we have to enforce a cache for each front-end caching. Yes, it adds additional network traffic which seems conflict of what we are trying to achieve with front end routing. But since the cache happens in service worker, it should have trivial impact on user experience or more specifically, page load. - -I personally feel it's a trade off for you to decide whether you want to improve this user experience. - -## Related Issue - -[A fix for errored offline refreshes #95](https://github.com/shadowwalker/next-pwa/issues/95) (this example idea is based on what @bahumbert suggested) - -## Usage - -[![Open in Gitpod](https://img.shields.io/badge/Open%20In-Gitpod.io-%231966D2?style=for-the-badge&logo=gitpod)](https://gitpod.io/#https://github.com/shadowwalker/next-pwa/) - -``` bash -cd examples/cache-on-front-end-nav -yarn install -yarn build -yarn start -``` - -## Recommend `.gitignore` - -``` -**/public/workbox-*.js -**/public/sw.js -**/public/worker-*.js -``` - - - diff --git a/examples/cache-on-front-end-nav/next.config.js b/examples/cache-on-front-end-nav/next.config.js deleted file mode 100644 index 5d6a902e..00000000 --- a/examples/cache-on-front-end-nav/next.config.js +++ /dev/null @@ -1,5 +0,0 @@ -const withPWA = require('next-pwa')({ - dest: 'public' -}) - -module.exports = withPWA() diff --git a/examples/cache-on-front-end-nav/package.json b/examples/cache-on-front-end-nav/package.json deleted file mode 100644 index 9a87802b..00000000 --- a/examples/cache-on-front-end-nav/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "next-pwa-example", - "version": "1.0.0", - "main": "index.js", - "license": "MIT", - "private": true, - "scripts": { - "dev": "next", - "build": "next build", - "start": "next start" - }, - "dependencies": { - "next": "^12.2.5", - "next-pwa": "latest", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "eslint": "^8.22.0", - "eslint-config-next": "12.2.5" - } -} diff --git a/examples/cache-on-front-end-nav/pages/_app.js b/examples/cache-on-front-end-nav/pages/_app.js deleted file mode 100644 index af2aed1e..00000000 --- a/examples/cache-on-front-end-nav/pages/_app.js +++ /dev/null @@ -1,38 +0,0 @@ -import React, { useEffect, useState } from 'react' -import { useRouter } from 'next/router' - -const _App = ({ Component, pageProps }) => { - const [isOnline, setIsOnline] = useState(true) - useEffect(() => { - if (typeof window !== 'undefined' && 'ononline' in window && 'onoffline' in window) { - setIsOnline(window.navigator.onLine) - if (!window.ononline) { - window.addEventListener('online', () => { - setIsOnline(true) - }) - } - if (!window.onoffline) { - window.addEventListener('offline', () => { - setIsOnline(false) - }) - } - } - }, []) - - const router = useRouter() - useEffect(() => { - if (typeof window !== 'undefined' && 'serviceWorker' in navigator && window.workbox !== undefined && isOnline) { - // skip index route, because it's already cached under `start-url` caching object - if (router.route !== '/') { - const wb = window.workbox - wb.active.then(worker => { - wb.messageSW({ action: 'CACHE_NEW_ROUTE' }) - }) - } - } - }, [isOnline, router.route]) - - return -} - -export default _App diff --git a/examples/cache-on-front-end-nav/pages/_document.js b/examples/cache-on-front-end-nav/pages/_document.js deleted file mode 100644 index 5b3d1c9f..00000000 --- a/examples/cache-on-front-end-nav/pages/_document.js +++ /dev/null @@ -1,50 +0,0 @@ -import Document, { Html, Head, Main, NextScript } from 'next/document' - -const APP_NAME = 'next-pwa example' -const APP_DESCRIPTION = 'This is an example of using next-pwa plugin' - -class _Document extends Document { - static async getInitialProps(ctx) { - return await Document.getInitialProps(ctx) - } - - render() { - return ( - - - - - - - - - - - {/* TIP: set viewport head meta tag in _app.js, otherwise it will show a warning */} - {/* */} - - - - - - - -
- - - - ) - } -} - -export default _Document diff --git a/examples/cache-on-front-end-nav/pages/a.js b/examples/cache-on-front-end-nav/pages/a.js deleted file mode 100644 index 62f3735f..00000000 --- a/examples/cache-on-front-end-nav/pages/a.js +++ /dev/null @@ -1,22 +0,0 @@ -import Head from 'next/head' -import Link from 'next/link' - -const A = () => ( - <> - - next-pwa example | Route a - -

This is route /a

-

- Go to Home -

-

- Go to route /a -

-

- Go to route /b -

- -) - -export default A diff --git a/examples/cache-on-front-end-nav/pages/b.js b/examples/cache-on-front-end-nav/pages/b.js deleted file mode 100644 index 73741058..00000000 --- a/examples/cache-on-front-end-nav/pages/b.js +++ /dev/null @@ -1,22 +0,0 @@ -import Head from 'next/head' -import Link from 'next/link' - -const B = () => ( - <> - - next-pwa example | Route b - -

This is route /b

-

- Go to Home -

-

- Go to route /a -

-

- Go to route /b -

- -) - -export default B diff --git a/examples/cache-on-front-end-nav/pages/index.js b/examples/cache-on-front-end-nav/pages/index.js deleted file mode 100644 index 5371b5b9..00000000 --- a/examples/cache-on-front-end-nav/pages/index.js +++ /dev/null @@ -1,22 +0,0 @@ -import Head from 'next/head' -import Link from 'next/link' - -const Index = () => ( - <> - - next-pwa example | Home - -

Next.js + PWA = AWESOME!

-

- Go to Home -

-

- Go to route /a -

-

- Go to route /b -

- -) - -export default Index diff --git a/examples/cache-on-front-end-nav/public/favicon.ico b/examples/cache-on-front-end-nav/public/favicon.ico deleted file mode 100644 index e69327b54edb5d248e99df79c6dbeb77be3d2958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmeHOYiu0V6~5!O*MY>vKujF+*yWMn5D=-6`lCNckmw(zKAp4okN5Cv=CUgjWqViaV@GPDr*=ALk1Tr)C9r0t(z)~z#lNyk`}ny* zeWG^+*h1QHQ%LEm4au!iNNy_=gnOlH8QwLAP$mfcpg=Hl*;?KXwF%h_sz=xR<+k$O zvbWNm9hLoC^_BW^rStMFa{ER7z&EM*stxVTpA7IafXUECUNpeZ0A5gSf|eO--+KOz z$^d`%vZzn(P@7t)#ZY>#Hsn?om)jg4pdY`Gz2$Qn5B1oFa>ZA*SN2w%MLWQGqY*u| z+t5e791q9!X&2`W*&2{{f^biG@J?VS{GeRQe%fh7-`i`b$8Iv9lLlm_pdSaof7X3a zeBZkp_0B@}M&zx#A)CXHQQs7HE>|I2A!m|xDkX3y%jH;>#&)#Lh`e*ZA$L@neYnqF zTc%1t7gj<4pfe65a$-wDmZmOP;mY?j!7K9b2NL7p_z+mGoSvEp2$Ry#kJj={JTN-;bU7 z<5D~P6wgphKz^0?p{V1K;^RB77*>v4y2=he#T^vSkp1CvxY+n%M+ggSXb}F`WsARk zk(**Mif1ky{Iz8Nf#31%$G^b!N6g=4p_wso0c}pw&ZW-Z8qD8n+xdGT+fVJxA8hR> z{MLo*zb5Sc*Fwj?(Di4b&)<^&&8MA({p9gO$^WM1LX!R^pR%@U%ania@!LX=pD$$l znalcRq5CiB`NCemr{zzM6n_nm91ht~ZTQe}E$CTdxBiNrK7jnyHOODp^4yWgd0N?q z0z5-5G^=LDIqWoKVWzH0%CR zq8#>=s6N>RLD*+X%aNI}0>x@f2j5fRe<${@=7c@9FW3iJO>-J{she`s(2)^Pj{A4C zch}7K^e8Vzxg}0KN0!*TLtE6QHvHmg@bH1(L+InI^gR`Cru*orT~5lcCw!cXVhxIy zAge6mh_2KO z{>16}G-EnlH%?t6^uLR-Z_9Oh|IB_v1Y8bDxdan(%2BR#PRkA21WKOM!db4;Z}t*E ztS-d{o|M$?T1o99s*xgZ+%DfA1Cs}5D;k08 zSE#cdzOXD8Jc@snQ|`EU2V%3J+PfC(n*HW%4pklPnMf|x{!9KXZRh8hz*%$SwJueP6Gor<{f2E>@lGoH6V40uo*`TI1P&!Nwj>p?&EeP6pEwGArn5l#;yJAyYWuTef3e~p8~C+EbBy$SzW7ty(RY7&(2Bp>y;`EV zO><1>@-*z{EfYVVzu@sQ^l-);P`g(p_-~p={+kTgClBV>O#WRfBw^QXnLqxpTXGBd zdz~}*NB;F=iEOH{Yx$PFXphtE65 zUyVN&P{aGWb87jW_4tzNiuy9tDl6ed`c2As$2AVjX`AT->j~xAE8<@dJ-x zP>13z#C$k&UOtT2`ys^DIpwev-z8-ze?92~bh44+vW)8w_$>09mPxX=GcYY!EIK-fYSOwqy&wVVFeD0XE09Ntv!FGwRi`hQ7nBPyHp#IoWn#L)l5J zN4A>vg{=0WehzCilp)!`jy0I|qXYXJke7((iXUYsv2U|EU-i!y|M|*KjGuQlp+wXQCYLz{{hkr({ca+ diff --git a/examples/cache-on-front-end-nav/public/icons/android-chrome-192x192.png b/examples/cache-on-front-end-nav/public/icons/android-chrome-192x192.png deleted file mode 100644 index a78d2e98d2ea5ac252591c57407d7e3db0966f0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5629 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

kyw!2WQ_VNtN7=}Pg8_k2NNPh!_ zgn`Ct$-acA{Kvr+p3`+x@5*}S-ev6iS@I??;L4SS50vZu?3LPamflVKDA${Qr?uua zw~$>IjvU*#a(BPFonWUlG_}O+1)cK|OSO}08@xbe-pQLp&pUZ#E6Iz`GF#Hmwr>>9 zR}$}RRCSN@fnVACg!yb!s82O9rz)q72B>OhB-~PB2E)0es z$9?VlK)F-4zI|kFu8`gmUeV|mdMOyBwUYU`71xKOFzmZ6`OsTnUtRD)fhalgqEFF< z>a$ugFY~i6a%4k!^WL*Hcf-mBgMPGnOAoEBW+-`Pjfo;+NSQP20&S#>e*hP@ZkTt@ zc-o0y8;=3(8Na2CD7m+dCawq*qcc?mz||7^dvgunT@qqtvFSFiNgQjV_3yq0|Ix!A zHNbO3pbf^iIb*AK{eJ9F2WmP+tG�P)Sc{gw1CXPTo}G^OTr>@g0vzALOxl&o!SG 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 GpZ_mIwxnbL diff --git a/examples/cache-on-front-end-nav/public/manifest.json b/examples/cache-on-front-end-nav/public/manifest.json deleted file mode 100644 index 81851325..00000000 --- a/examples/cache-on-front-end-nav/public/manifest.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "next-pwa", - "short_name": "next-pwa", - "display": "standalone", - "orientation": "portrait", - "theme_color": "#FFFFFF", - "background_color": "#FFFFFF", - "start_url": "/", - "icons": [ - { - "src": "/icons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "/icons/icon-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ] -} diff --git a/examples/cache-on-front-end-nav/worker/index.js b/examples/cache-on-front-end-nav/worker/index.js deleted file mode 100644 index 18778da0..00000000 --- a/examples/cache-on-front-end-nav/worker/index.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict' - -self.addEventListener('message', async event => { - if (event.data && event.data.action === 'CACHE_NEW_ROUTE') { - caches.open('others').then(cache => - cache.match(event.source.url).then(res => { - if (res === undefined) { - return cache.add(event.source.url) - } - }) - ) - } -}) diff --git a/examples/cookie/.eslintrc.json b/examples/cookie/.eslintrc.json deleted file mode 100644 index bffb357a..00000000 --- a/examples/cookie/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "next/core-web-vitals" -} diff --git a/examples/cookie/README.md b/examples/cookie/README.md deleted file mode 100644 index 7fcc3749..00000000 --- a/examples/cookie/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# next-pwa - cookie example - -[TOC] - -This example demonstrates how to use `next-pwa` with cookies. No special configuration needed with version 3+, enjoy🎉. - -## Usage - -[![Open in Gitpod](https://img.shields.io/badge/Open%20In-Gitpod.io-%231966D2?style=for-the-badge&logo=gitpod)](https://gitpod.io/#https://github.com/shadowwalker/next-pwa/) - -``` bash -cd examples/cookie -yarn install -yarn build -yarn start -``` - -## Recommend `.gitignore` - -``` -**/public/workbox-*.js -**/public/sw.js -``` - - - diff --git a/examples/cookie/next.config.js b/examples/cookie/next.config.js deleted file mode 100644 index 3723323a..00000000 --- a/examples/cookie/next.config.js +++ /dev/null @@ -1,7 +0,0 @@ -const withPWA = require('next-pwa')({ - dest: 'public', - dynamicStartUrl: true, // this is same as default value - dynamicStartUrlRedirect: '/login' // recommend to config this for best user experience if your start-url redirects on first load -}) - -module.exports = withPWA() diff --git a/examples/cookie/package.json b/examples/cookie/package.json deleted file mode 100644 index 54a98475..00000000 --- a/examples/cookie/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "next-pwa-example", - "version": "1.0.0", - "main": "index.js", - "license": "MIT", - "private": true, - "scripts": { - "dev": "next", - "build": "next build", - "start": "next start" - }, - "dependencies": { - "js-cookie": "^3.0.1", - "next": "^12.2.5", - "next-cookies": "^2.0.3", - "next-pwa": "latest", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "eslint": "^8.22.0", - "eslint-config-next": "12.2.5" - } -} diff --git a/examples/cookie/pages/_document.js b/examples/cookie/pages/_document.js deleted file mode 100644 index 5b3d1c9f..00000000 --- a/examples/cookie/pages/_document.js +++ /dev/null @@ -1,50 +0,0 @@ -import Document, { Html, Head, Main, NextScript } from 'next/document' - -const APP_NAME = 'next-pwa example' -const APP_DESCRIPTION = 'This is an example of using next-pwa plugin' - -class _Document extends Document { - static async getInitialProps(ctx) { - return await Document.getInitialProps(ctx) - } - - render() { - return ( - - - - - - - - - - - {/* TIP: set viewport head meta tag in _app.js, otherwise it will show a warning */} - {/* */} - - - - - - - -

- - - - ) - } -} - -export default _Document diff --git a/examples/cookie/pages/index.js b/examples/cookie/pages/index.js deleted file mode 100644 index 00607e05..00000000 --- a/examples/cookie/pages/index.js +++ /dev/null @@ -1,54 +0,0 @@ -import Head from 'next/head' -import { useRouter } from 'next/router' -import Cookies from 'js-cookie' -import nextCookies from 'next-cookies' - -const Index = ({ user }) => { - const router = useRouter() - - const handleLogoutClick = () => { - Cookies.remove('user') - router.replace('/login') - } - - const handleLoginClick = () => { - router.replace('/login') - } - - return ( - <> - - next-pwa example - -

Next.js + PWA = AWESOME!

- {user ? ( - <> -

User ID: {user}

- - - ) : ( - - )} - - ) -} - -export const getServerSideProps = context => { - const { user } = nextCookies(context) - if (!user) { - console.log('❌ User Not Login, Redirect To Login Page') - context.res.setHeader('location', '/login') - context.res.statusCode = 302 - context.res.end() - return { props: {} } - } else { - console.log(`✅ User (id=${user}) Already Login, Show Home Page.`) - return { - props: { - user - } - } - } -} - -export default Index diff --git a/examples/cookie/pages/login.js b/examples/cookie/pages/login.js deleted file mode 100644 index 7a6ab34a..00000000 --- a/examples/cookie/pages/login.js +++ /dev/null @@ -1,24 +0,0 @@ -import Head from 'next/head' -import { useRouter } from 'next/router' -import Cookies from 'js-cookie' - -const Login = () => { - const router = useRouter() - - const handleLoginClick = () => { - Cookies.set('user', 'FakeUserID-0527VND927SDF', { expires: 30 }) - router.replace('/') - } - - return ( - <> - - Login | next-pwa example - -

Login Page

- - - ) -} - -export default Login diff --git a/examples/cookie/public/favicon.ico b/examples/cookie/public/favicon.ico deleted file mode 100644 index e69327b54edb5d248e99df79c6dbeb77be3d2958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmeHOYiu0V6~5!O*MY>vKujF+*yWMn5D=-6`lCNckmw(zKAp4okN5Cv=CUgjWqViaV@GPDr*=ALk1Tr)C9r0t(z)~z#lNyk`}ny* zeWG^+*h1QHQ%LEm4au!iNNy_=gnOlH8QwLAP$mfcpg=Hl*;?KXwF%h_sz=xR<+k$O zvbWNm9hLoC^_BW^rStMFa{ER7z&EM*stxVTpA7IafXUECUNpeZ0A5gSf|eO--+KOz z$^d`%vZzn(P@7t)#ZY>#Hsn?om)jg4pdY`Gz2$Qn5B1oFa>ZA*SN2w%MLWQGqY*u| z+t5e791q9!X&2`W*&2{{f^biG@J?VS{GeRQe%fh7-`i`b$8Iv9lLlm_pdSaof7X3a zeBZkp_0B@}M&zx#A)CXHQQs7HE>|I2A!m|xDkX3y%jH;>#&)#Lh`e*ZA$L@neYnqF zTc%1t7gj<4pfe65a$-wDmZmOP;mY?j!7K9b2NL7p_z+mGoSvEp2$Ry#kJj={JTN-;bU7 z<5D~P6wgphKz^0?p{V1K;^RB77*>v4y2=he#T^vSkp1CvxY+n%M+ggSXb}F`WsARk zk(**Mif1ky{Iz8Nf#31%$G^b!N6g=4p_wso0c}pw&ZW-Z8qD8n+xdGT+fVJxA8hR> z{MLo*zb5Sc*Fwj?(Di4b&)<^&&8MA({p9gO$^WM1LX!R^pR%@U%ania@!LX=pD$$l znalcRq5CiB`NCemr{zzM6n_nm91ht~ZTQe}E$CTdxBiNrK7jnyHOODp^4yWgd0N?q z0z5-5G^=LDIqWoKVWzH0%CR zq8#>=s6N>RLD*+X%aNI}0>x@f2j5fRe<${@=7c@9FW3iJO>-J{she`s(2)^Pj{A4C zch}7K^e8Vzxg}0KN0!*TLtE6QHvHmg@bH1(L+InI^gR`Cru*orT~5lcCw!cXVhxIy zAge6mh_2KO z{>16}G-EnlH%?t6^uLR-Z_9Oh|IB_v1Y8bDxdan(%2BR#PRkA21WKOM!db4;Z}t*E ztS-d{o|M$?T1o99s*xgZ+%DfA1Cs}5D;k08 zSE#cdzOXD8Jc@snQ|`EU2V%3J+PfC(n*HW%4pklPnMf|x{!9KXZRh8hz*%$SwJueP6Gor<{f2E>@lGoH6V40uo*`TI1P&!Nwj>p?&EeP6pEwGArn5l#;yJAyYWuTef3e~p8~C+EbBy$SzW7ty(RY7&(2Bp>y;`EV zO><1>@-*z{EfYVVzu@sQ^l-);P`g(p_-~p={+kTgClBV>O#WRfBw^QXnLqxpTXGBd zdz~}*NB;F=iEOH{Yx$PFXphtE65 zUyVN&P{aGWb87jW_4tzNiuy9tDl6ed`c2As$2AVjX`AT->j~xAE8<@dJ-x zP>13z#C$k&UOtT2`ys^DIpwev-z8-ze?92~bh44+vW)8w_$>09mPxX=GcYY!EIK-fYSOwqy&wVVFeD0XE09Ntv!FGwRi`hQ7nBPyHp#IoWn#L)l5J zN4A>vg{=0WehzCilp)!`jy0I|qXYXJke7((iXUYsv2U|EU-i!y|M|*KjGuQlp+wXQCYLz{{hkr({ca+ diff --git a/examples/cookie/public/icons/android-chrome-192x192.png b/examples/cookie/public/icons/android-chrome-192x192.png deleted file mode 100644 index a78d2e98d2ea5ac252591c57407d7e3db0966f0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5629 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
Mq2Dh{rkQ`&%l=VwKPcWILbZ;n(+! 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

kyw!2WQ_VNtN7=}Pg8_k2NNPh!_ zgn`Ct$-acA{Kvr+p3`+x@5*}S-ev6iS@I??;L4SS50vZu?3LPamflVKDA${Qr?uua zw~$>IjvU*#a(BPFonWUlG_}O+1)cK|OSO}08@xbe-pQLp&pUZ#E6Iz`GF#Hmwr>>9 zR}$}RRCSN@fnVACg!yb!s82O9rz)q72B>OhB-~PB2E)0es z$9?VlK)F-4zI|kFu8`gmUeV|mdMOyBwUYU`71xKOFzmZ6`OsTnUtRD)fhalgqEFF< z>a$ugFY~i6a%4k!^WL*Hcf-mBgMPGnOAoEBW+-`Pjfo;+NSQP20&S#>e*hP@ZkTt@ zc-o0y8;=3(8Na2CD7m+dCawq*qcc?mz||7^dvgunT@qqtvFSFiNgQjV_3yq0|Ix!A zHNbO3pbf^iIb*AK{eJ9F2WmP+tG�P)Sc{gw1CXPTo}G^OTr>@g0vzALOxl&o!SG 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 GpZ_mIwxnbL diff --git a/examples/cookie/public/manifest.json b/examples/cookie/public/manifest.json deleted file mode 100644 index 81851325..00000000 --- a/examples/cookie/public/manifest.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "next-pwa", - "short_name": "next-pwa", - "display": "standalone", - "orientation": "portrait", - "theme_color": "#FFFFFF", - "background_color": "#FFFFFF", - "start_url": "/", - "icons": [ - { - "src": "/icons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "/icons/icon-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ] -} diff --git a/examples/custom-ts-worker/.eslintrc.json b/examples/custom-ts-worker/.eslintrc.json deleted file mode 100644 index bffb357a..00000000 --- a/examples/custom-ts-worker/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "next/core-web-vitals" -} diff --git a/examples/custom-ts-worker/README.md b/examples/custom-ts-worker/README.md deleted file mode 100644 index 2f382cb0..00000000 --- a/examples/custom-ts-worker/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# next-pwa - custom worker example - -[TOC] - -This example demonstrates how to use `next-pwa` plugin to turn a `next.js` based web application into a progressive web application easily. It demonstrates how to add custom worker code to the service worker generated by workbox. - -## New Method - -Simply create a `worker/index.ts` and start implementing your service worker. `next-pwa` will detect this file automatically, and bundle the file into `dest` as `worker-*.js` using `webpack`. It's also automatically injected into `sw.js` generated. - -In this way, you get benefit of code splitting and size minimization automatically. Yes! `require` modules works! Yes! you can share codes between web app and the service worker! - -> - In dev mode, `worker/index.ts` is not watched, so it will not hot reload. - -### Custom Worker Directory - -You can customize the directory of your custom worker file by setting the `customWorkerDir` relative to the `basedir` in the `pwa` section of your `next.config.js`: - -```javascript -const withPWA = require('next-pwa')({ - customWorkerDir: 'serviceworker' - // ... -}) - -module.exports = withPWA({ - // next.js config -}) -``` - -In this example, `next-pwa` would look for `serviceworker/index.ts`. - -## Old Method (Still Works) - -Basically you need to create a file such as `worker.js` in `public` folder, then add an option `importScripts` to `pwa` object in `next.config.js`: - -```javascript -const withPWA = require('next-pwa')({ - dest: 'public', - importScripts: ['/worker.js'] -}) - -module.exports = withPWA({ - // next.js config -}) -``` - -Then service worker generated will automatically import your code and run it before other workbox code. - -## Usage - -[![Open in Gitpod](https://img.shields.io/badge/Open%20In-Gitpod.io-%231966D2?style=for-the-badge&logo=gitpod)](https://gitpod.io/#https://github.com/shadowwalker/next-pwa/) - -```bash -cd examples/custom-ts-server -yarn install -yarn build -yarn start -``` - -## Recommend `.gitignore` - -``` -**/public/workbox-*.js -**/public/sw.js -**/public/worker-*.js -``` diff --git a/examples/custom-ts-worker/next-env.d.ts b/examples/custom-ts-worker/next-env.d.ts deleted file mode 100644 index 4f11a03d..00000000 --- a/examples/custom-ts-worker/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/examples/custom-ts-worker/next.config.js b/examples/custom-ts-worker/next.config.js deleted file mode 100644 index 5d6a902e..00000000 --- a/examples/custom-ts-worker/next.config.js +++ /dev/null @@ -1,5 +0,0 @@ -const withPWA = require('next-pwa')({ - dest: 'public' -}) - -module.exports = withPWA() diff --git a/examples/custom-ts-worker/package.json b/examples/custom-ts-worker/package.json deleted file mode 100644 index 772ab16c..00000000 --- a/examples/custom-ts-worker/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "next-pwa-example", - "version": "1.0.0", - "main": "index.js", - "license": "MIT", - "private": true, - "scripts": { - "dev": "next", - "build": "next build", - "start": "next start" - }, - "dependencies": { - "babel-loader": "^8.2.5", - "next": "^12.2.5", - "next-pwa": "latest", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@types/react": "^18.0.17", - "eslint": "^8.22.0", - "eslint-config-next": "12.2.5", - "typescript": "^4.7.4" - } -} diff --git a/examples/custom-ts-worker/pages/_document.tsx b/examples/custom-ts-worker/pages/_document.tsx deleted file mode 100644 index bbeea7b8..00000000 --- a/examples/custom-ts-worker/pages/_document.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import Document, { DocumentContext, Head, Html, Main, NextScript } from 'next/document' - -const APP_NAME = 'next-pwa example' -const APP_DESCRIPTION = 'This is an example of using next-pwa plugin' - -class _Document extends Document { - static async getInitialProps(ctx: DocumentContext) { - return await Document.getInitialProps(ctx) - } - - render() { - return ( - - - - - - - - - - - {/* TIP: set viewport head meta tag in _app.js, otherwise it will show a warning */} - {/* */} - - - - - - - -

- - - - ) - } -} - -export default _Document diff --git a/examples/custom-ts-worker/pages/index.tsx b/examples/custom-ts-worker/pages/index.tsx deleted file mode 100644 index b70feea0..00000000 --- a/examples/custom-ts-worker/pages/index.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import Head from 'next/head' - -const Index = () => ( - <> - - next-pwa example - -

Next.js + PWA = AWESOME!

- -) - -export default Index diff --git a/examples/custom-ts-worker/public/favicon.ico b/examples/custom-ts-worker/public/favicon.ico deleted file mode 100644 index e69327b54edb5d248e99df79c6dbeb77be3d2958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmeHOYiu0V6~5!O*MY>vKujF+*yWMn5D=-6`lCNckmw(zKAp4okN5Cv=CUgjWqViaV@GPDr*=ALk1Tr)C9r0t(z)~z#lNyk`}ny* zeWG^+*h1QHQ%LEm4au!iNNy_=gnOlH8QwLAP$mfcpg=Hl*;?KXwF%h_sz=xR<+k$O zvbWNm9hLoC^_BW^rStMFa{ER7z&EM*stxVTpA7IafXUECUNpeZ0A5gSf|eO--+KOz z$^d`%vZzn(P@7t)#ZY>#Hsn?om)jg4pdY`Gz2$Qn5B1oFa>ZA*SN2w%MLWQGqY*u| z+t5e791q9!X&2`W*&2{{f^biG@J?VS{GeRQe%fh7-`i`b$8Iv9lLlm_pdSaof7X3a zeBZkp_0B@}M&zx#A)CXHQQs7HE>|I2A!m|xDkX3y%jH;>#&)#Lh`e*ZA$L@neYnqF zTc%1t7gj<4pfe65a$-wDmZmOP;mY?j!7K9b2NL7p_z+mGoSvEp2$Ry#kJj={JTN-;bU7 z<5D~P6wgphKz^0?p{V1K;^RB77*>v4y2=he#T^vSkp1CvxY+n%M+ggSXb}F`WsARk zk(**Mif1ky{Iz8Nf#31%$G^b!N6g=4p_wso0c}pw&ZW-Z8qD8n+xdGT+fVJxA8hR> z{MLo*zb5Sc*Fwj?(Di4b&)<^&&8MA({p9gO$^WM1LX!R^pR%@U%ania@!LX=pD$$l znalcRq5CiB`NCemr{zzM6n_nm91ht~ZTQe}E$CTdxBiNrK7jnyHOODp^4yWgd0N?q z0z5-5G^=LDIqWoKVWzH0%CR zq8#>=s6N>RLD*+X%aNI}0>x@f2j5fRe<${@=7c@9FW3iJO>-J{she`s(2)^Pj{A4C zch}7K^e8Vzxg}0KN0!*TLtE6QHvHmg@bH1(L+InI^gR`Cru*orT~5lcCw!cXVhxIy zAge6mh_2KO z{>16}G-EnlH%?t6^uLR-Z_9Oh|IB_v1Y8bDxdan(%2BR#PRkA21WKOM!db4;Z}t*E ztS-d{o|M$?T1o99s*xgZ+%DfA1Cs}5D;k08 zSE#cdzOXD8Jc@snQ|`EU2V%3J+PfC(n*HW%4pklPnMf|x{!9KXZRh8hz*%$SwJueP6Gor<{f2E>@lGoH6V40uo*`TI1P&!Nwj>p?&EeP6pEwGArn5l#;yJAyYWuTef3e~p8~C+EbBy$SzW7ty(RY7&(2Bp>y;`EV zO><1>@-*z{EfYVVzu@sQ^l-);P`g(p_-~p={+kTgClBV>O#WRfBw^QXnLqxpTXGBd zdz~}*NB;F=iEOH{Yx$PFXphtE65 zUyVN&P{aGWb87jW_4tzNiuy9tDl6ed`c2As$2AVjX`AT->j~xAE8<@dJ-x zP>13z#C$k&UOtT2`ys^DIpwev-z8-ze?92~bh44+vW)8w_$>09mPxX=GcYY!EIK-fYSOwqy&wVVFeD0XE09Ntv!FGwRi`hQ7nBPyHp#IoWn#L)l5J zN4A>vg{=0WehzCilp)!`jy0I|qXYXJke7((iXUYsv2U|EU-i!y|M|*KjGuQlp+wXQCYLz{{hkr({ca+ diff --git a/examples/custom-ts-worker/public/icons/android-chrome-192x192.png b/examples/custom-ts-worker/public/icons/android-chrome-192x192.png deleted file mode 100644 index a78d2e98d2ea5ac252591c57407d7e3db0966f0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5629 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
Mq2Dh{rkQ`&%l=VwKPcWILbZ;n(+! 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

kyw!2WQ_VNtN7=}Pg8_k2NNPh!_ zgn`Ct$-acA{Kvr+p3`+x@5*}S-ev6iS@I??;L4SS50vZu?3LPamflVKDA${Qr?uua zw~$>IjvU*#a(BPFonWUlG_}O+1)cK|OSO}08@xbe-pQLp&pUZ#E6Iz`GF#Hmwr>>9 zR}$}RRCSN@fnVACg!yb!s82O9rz)q72B>OhB-~PB2E)0es z$9?VlK)F-4zI|kFu8`gmUeV|mdMOyBwUYU`71xKOFzmZ6`OsTnUtRD)fhalgqEFF< z>a$ugFY~i6a%4k!^WL*Hcf-mBgMPGnOAoEBW+-`Pjfo;+NSQP20&S#>e*hP@ZkTt@ zc-o0y8;=3(8Na2CD7m+dCawq*qcc?mz||7^dvgunT@qqtvFSFiNgQjV_3yq0|Ix!A zHNbO3pbf^iIb*AK{eJ9F2WmP+tG�P)Sc{gw1CXPTo}G^OTr>@g0vzALOxl&o!SG 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 GpZ_mIwxnbL diff --git a/examples/custom-ts-worker/public/manifest.json b/examples/custom-ts-worker/public/manifest.json deleted file mode 100644 index 81851325..00000000 --- a/examples/custom-ts-worker/public/manifest.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "next-pwa", - "short_name": "next-pwa", - "display": "standalone", - "orientation": "portrait", - "theme_color": "#FFFFFF", - "background_color": "#FFFFFF", - "start_url": "/", - "icons": [ - { - "src": "/icons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "/icons/icon-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ] -} diff --git a/examples/custom-ts-worker/tsconfig.json b/examples/custom-ts-worker/tsconfig.json deleted file mode 100644 index 33a86b8e..00000000 --- a/examples/custom-ts-worker/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "compilerOptions": { - "allowJs": true, - "alwaysStrict": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "isolatedModules": true, - "jsx": "preserve", - "lib": [ - "dom", - "es2017" - ], - "module": "esnext", - "moduleResolution": "node", - "noEmit": true, - "noFallthroughCasesInSwitch": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "strict": true, - "target": "esnext", - "incremental": true - }, - "exclude": [ - "node_modules" - ], - "include": [ - "**/*.ts", - "**/*.tsx" - ] -} diff --git a/examples/custom-ts-worker/types/service-worker.d.ts b/examples/custom-ts-worker/types/service-worker.d.ts deleted file mode 100644 index 6b6eb6aa..00000000 --- a/examples/custom-ts-worker/types/service-worker.d.ts +++ /dev/null @@ -1,131 +0,0 @@ -// tslint:disable:file-header -/** - * Copyright (c) 2016, Tiernan Cridland - * - * Permission to use, copy, modify, and/or distribute this software for any purpose with or without - * fee is hereby - * granted, provided that the above copyright notice and this permission notice appear in all - * copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * SPECIAL, DIRECT, - * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER - * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION - * WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - * - * Typings for Service Worker - * @author Tiernan Cridland - * @email tiernanc@gmail.com - * @license: ISC - */ -interface ExtendableEvent extends Event { - waitUntil(fn: Promise): void; -} - -interface PushSubscriptionChangeEvent extends ExtendableEvent { - readonly newSubscription?: PushSubscription; - readonly oldSubscription?: PushSubscription; -} - -// Client API - -declare class Client { - frameType: ClientFrameType; - id: string; - url: string; - focused: boolean; - focus(): void; - postMessage(message: any): void; -} - -interface Clients { - claim(): Promise; - get(id: string): Promise; - matchAll(options?: ClientMatchOptions): Promise>; - openWindow(url: string): Promise; -} - -interface ClientMatchOptions { - includeUncontrolled?: boolean; - type?: ClientMatchTypes; -} - -interface WindowClient { - focused: boolean; - visibilityState: WindowClientState; - focus(): Promise; - navigate(url: string): Promise; -} - -type ClientFrameType = 'auxiliary' | 'top-level' | 'nested' | 'none'; -type ClientMatchTypes = 'window' | 'worker' | 'sharedworker' | 'all'; -type WindowClientState = 'hidden' | 'visible' | 'prerender' | 'unloaded'; - -// Fetch API - -interface FetchEvent extends ExtendableEvent { - clientId: string | null; - request: Request; - respondWith(response: Promise | Response): Promise; -} - -interface InstallEvent extends ExtendableEvent { - activeWorker: ServiceWorker; -} - -interface ActivateEvent extends ExtendableEvent {} - -// Notification API - -interface NotificationEvent extends ExtendableEvent { - action: string; - notification: Notification; -} - -// Push API - -interface PushEvent extends ExtendableEvent { - data: PushMessageData; -} - -interface PushMessageData { - arrayBuffer(): ArrayBuffer; - blob(): Blob; - json(): any; - text(): string; -} - -// Sync API - -interface SyncEvent extends ExtendableEvent { - lastChance: boolean; - tag: string; -} - -interface ExtendableMessageEvent extends ExtendableEvent { - data: any; - source: Client | Object; -} - -// ServiceWorkerGlobalScope - -interface ServiceWorkerGlobalScope { - caches: CacheStorage; - clients: Clients; - registration: ServiceWorkerRegistration; - - addEventListener(event: 'activate', fn: (event?: ExtendableEvent) => any): void; - addEventListener(event: 'message', fn: (event?: ExtendableMessageEvent) => any): void; - addEventListener(event: 'fetch', fn: (event?: FetchEvent) => any): void; - addEventListener(event: 'install', fn: (event?: ExtendableEvent) => any): void; - addEventListener(event: 'push', fn: (event?: PushEvent) => any): void; - addEventListener(event: 'notificationclick', fn: (event?: NotificationEvent) => any): void; - addEventListener(event: 'sync', fn: (event?: SyncEvent) => any): void; - - fetch(request: Request | string): Promise; - skipWaiting(): Promise; -} diff --git a/examples/custom-ts-worker/worker/index.ts b/examples/custom-ts-worker/worker/index.ts deleted file mode 100644 index 7cdbb27c..00000000 --- a/examples/custom-ts-worker/worker/index.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { util } from './util'; - -declare let self: ServiceWorkerGlobalScope - -// To disable all workbox logging during development, you can set self.__WB_DISABLE_DEV_LOGS to true -// https://developers.google.com/web/tools/workbox/guides/configure-workbox#disable_logging -// -// self.__WB_DISABLE_DEV_LOGS = true - -util(); - -// listen to message event from window -self.addEventListener('message', event => { - // HOW TO TEST THIS? - // Run this in your browser console: - // window.navigator.serviceWorker.controller.postMessage({command: 'log', message: 'hello world'}) - // OR use next-pwa injected workbox object - // window.workbox.messageSW({command: 'log', message: 'hello world'}) - console.log(event?.data); -}); - -self.addEventListener('push', (event) => { - const data = JSON.parse(event?.data.text() || '{}') - event?.waitUntil( - self.registration.showNotification(data.title, { - body: data.message, - icon: '/icons/android-chrome-192x192.png' - }) - ) -}) - -self.addEventListener('notificationclick', (event) => { - event?.notification.close() - event?.waitUntil( - self.clients.matchAll({ type: 'window', includeUncontrolled: true }).then(function (clientList) { - if (clientList.length > 0) { - let client = clientList[0] - for (let i = 0; i < clientList.length; i++) { - if (clientList[i].focused) { - client = clientList[i] - } - } - return client.focus() - } - return self.clients.openWindow('/') - }) - ) -}) diff --git a/examples/custom-ts-worker/worker/util.ts b/examples/custom-ts-worker/worker/util.ts deleted file mode 100644 index 44c9895a..00000000 --- a/examples/custom-ts-worker/worker/util.ts +++ /dev/null @@ -1,6 +0,0 @@ -export function util() { - console.log('Hello from util.'); - console.log('es6+ syntax test:'); - let foo = { message: 'working' }; - console.log(foo?.message); -} diff --git a/examples/custom-worker/.eslintrc.json b/examples/custom-worker/.eslintrc.json deleted file mode 100644 index bffb357a..00000000 --- a/examples/custom-worker/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "next/core-web-vitals" -} diff --git a/examples/custom-worker/README.md b/examples/custom-worker/README.md deleted file mode 100644 index d52dea2e..00000000 --- a/examples/custom-worker/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# next-pwa - custom worker example - -[TOC] - -This example demonstrates how to use `next-pwa` plugin to turn a `next.js` based web application into a progressive web application easily. It demonstrates how to add custom worker code to the service worker generated by workbox. - -## New Method - -Simply create a `worker/index.js` and start implementing your service worker. `next-pwa` will detect this file automatically, and bundle the file into `dest` as `worker-*.js` using `webpack`. It's also automatically injected into `sw.js` generated. - -In this way, you get benefit of code splitting and size minimization automatically. Yes! `require` modules works! Yes! you can share codes between web app and the service worker! - -> - Typescript support for `worker/index.ts` current not supported. -> -> - In dev mode, `worker/index.js` is not watch, so it will not hot reload. - -### Custom Worker Directory - -You can customize the directory of your custom worker file by setting the `customWorkerDir` relative to the `basedir` in the `pwa` section of your `next.config.js`: - -```javascript -const withPWA = require('next-pwa')({ - customWorkerDir: 'serviceworker' - ... -}) - -module.exports = withPWA({ - // next.js config -}) -``` - -In this example, `next-pwa` would look for `serviceworker/index.js`. - -## Old Method (Still Works) - -Basically you need to create a file such as `worker.js` in `public` folder, then add an option `importScripts` to `pwa` object in `next.config.js`: - -```javascript -const withPWA = require('next-pwa')({ - dest: 'public', - importScripts: ['/worker.js'] -}) - -module.exports = withPWA({ - // next.js config -}) -``` - -Then service worker generated will automatically import your code and run it before other workbox code. - -## Usage - -[![Open in Gitpod](https://img.shields.io/badge/Open%20In-Gitpod.io-%231966D2?style=for-the-badge&logo=gitpod)](https://gitpod.io/#https://github.com/shadowwalker/next-pwa/) - -```bash -cd examples/custom-server -yarn install -yarn build -yarn start -``` - -## Recommend `.gitignore` - -``` -**/public/workbox-*.js -**/public/sw.js -**/public/worker-*.js -``` diff --git a/examples/custom-worker/next.config.js b/examples/custom-worker/next.config.js deleted file mode 100644 index 5d6a902e..00000000 --- a/examples/custom-worker/next.config.js +++ /dev/null @@ -1,5 +0,0 @@ -const withPWA = require('next-pwa')({ - dest: 'public' -}) - -module.exports = withPWA() diff --git a/examples/custom-worker/package.json b/examples/custom-worker/package.json deleted file mode 100644 index bc9d6d14..00000000 --- a/examples/custom-worker/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "next-pwa-example", - "version": "1.0.0", - "main": "index.js", - "license": "MIT", - "private": true, - "scripts": { - "dev": "next", - "build": "next build", - "start": "next start" - }, - "dependencies": { - "babel-loader": "^8.2.5", - "next": "^12.2.5", - "next-pwa": "latest", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "eslint": "^8.22.0", - "eslint-config-next": "12.2.5" - } -} diff --git a/examples/custom-worker/pages/_document.js b/examples/custom-worker/pages/_document.js deleted file mode 100644 index 5b3d1c9f..00000000 --- a/examples/custom-worker/pages/_document.js +++ /dev/null @@ -1,50 +0,0 @@ -import Document, { Html, Head, Main, NextScript } from 'next/document' - -const APP_NAME = 'next-pwa example' -const APP_DESCRIPTION = 'This is an example of using next-pwa plugin' - -class _Document extends Document { - static async getInitialProps(ctx) { - return await Document.getInitialProps(ctx) - } - - render() { - return ( - - - - - - - - - - - {/* TIP: set viewport head meta tag in _app.js, otherwise it will show a warning */} - {/* */} - - - - - - - -

- - - - ) - } -} - -export default _Document diff --git a/examples/custom-worker/pages/index.js b/examples/custom-worker/pages/index.js deleted file mode 100644 index b70feea0..00000000 --- a/examples/custom-worker/pages/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import Head from 'next/head' - -const Index = () => ( - <> - - next-pwa example - -

Next.js + PWA = AWESOME!

- -) - -export default Index diff --git a/examples/custom-worker/public/favicon.ico b/examples/custom-worker/public/favicon.ico deleted file mode 100644 index e69327b54edb5d248e99df79c6dbeb77be3d2958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmeHOYiu0V6~5!O*MY>vKujF+*yWMn5D=-6`lCNckmw(zKAp4okN5Cv=CUgjWqViaV@GPDr*=ALk1Tr)C9r0t(z)~z#lNyk`}ny* zeWG^+*h1QHQ%LEm4au!iNNy_=gnOlH8QwLAP$mfcpg=Hl*;?KXwF%h_sz=xR<+k$O zvbWNm9hLoC^_BW^rStMFa{ER7z&EM*stxVTpA7IafXUECUNpeZ0A5gSf|eO--+KOz z$^d`%vZzn(P@7t)#ZY>#Hsn?om)jg4pdY`Gz2$Qn5B1oFa>ZA*SN2w%MLWQGqY*u| z+t5e791q9!X&2`W*&2{{f^biG@J?VS{GeRQe%fh7-`i`b$8Iv9lLlm_pdSaof7X3a zeBZkp_0B@}M&zx#A)CXHQQs7HE>|I2A!m|xDkX3y%jH;>#&)#Lh`e*ZA$L@neYnqF zTc%1t7gj<4pfe65a$-wDmZmOP;mY?j!7K9b2NL7p_z+mGoSvEp2$Ry#kJj={JTN-;bU7 z<5D~P6wgphKz^0?p{V1K;^RB77*>v4y2=he#T^vSkp1CvxY+n%M+ggSXb}F`WsARk zk(**Mif1ky{Iz8Nf#31%$G^b!N6g=4p_wso0c}pw&ZW-Z8qD8n+xdGT+fVJxA8hR> z{MLo*zb5Sc*Fwj?(Di4b&)<^&&8MA({p9gO$^WM1LX!R^pR%@U%ania@!LX=pD$$l znalcRq5CiB`NCemr{zzM6n_nm91ht~ZTQe}E$CTdxBiNrK7jnyHOODp^4yWgd0N?q z0z5-5G^=LDIqWoKVWzH0%CR zq8#>=s6N>RLD*+X%aNI}0>x@f2j5fRe<${@=7c@9FW3iJO>-J{she`s(2)^Pj{A4C zch}7K^e8Vzxg}0KN0!*TLtE6QHvHmg@bH1(L+InI^gR`Cru*orT~5lcCw!cXVhxIy zAge6mh_2KO z{>16}G-EnlH%?t6^uLR-Z_9Oh|IB_v1Y8bDxdan(%2BR#PRkA21WKOM!db4;Z}t*E ztS-d{o|M$?T1o99s*xgZ+%DfA1Cs}5D;k08 zSE#cdzOXD8Jc@snQ|`EU2V%3J+PfC(n*HW%4pklPnMf|x{!9KXZRh8hz*%$SwJueP6Gor<{f2E>@lGoH6V40uo*`TI1P&!Nwj>p?&EeP6pEwGArn5l#;yJAyYWuTef3e~p8~C+EbBy$SzW7ty(RY7&(2Bp>y;`EV zO><1>@-*z{EfYVVzu@sQ^l-);P`g(p_-~p={+kTgClBV>O#WRfBw^QXnLqxpTXGBd zdz~}*NB;F=iEOH{Yx$PFXphtE65 zUyVN&P{aGWb87jW_4tzNiuy9tDl6ed`c2As$2AVjX`AT->j~xAE8<@dJ-x zP>13z#C$k&UOtT2`ys^DIpwev-z8-ze?92~bh44+vW)8w_$>09mPxX=GcYY!EIK-fYSOwqy&wVVFeD0XE09Ntv!FGwRi`hQ7nBPyHp#IoWn#L)l5J zN4A>vg{=0WehzCilp)!`jy0I|qXYXJke7((iXUYsv2U|EU-i!y|M|*KjGuQlp+wXQCYLz{{hkr({ca+ diff --git a/examples/custom-worker/public/icons/android-chrome-192x192.png b/examples/custom-worker/public/icons/android-chrome-192x192.png deleted file mode 100644 index a78d2e98d2ea5ac252591c57407d7e3db0966f0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5629 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
Mq2Dh{rkQ`&%l=VwKPcWILbZ;n(+! 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

kyw!2WQ_VNtN7=}Pg8_k2NNPh!_ zgn`Ct$-acA{Kvr+p3`+x@5*}S-ev6iS@I??;L4SS50vZu?3LPamflVKDA${Qr?uua zw~$>IjvU*#a(BPFonWUlG_}O+1)cK|OSO}08@xbe-pQLp&pUZ#E6Iz`GF#Hmwr>>9 zR}$}RRCSN@fnVACg!yb!s82O9rz)q72B>OhB-~PB2E)0es z$9?VlK)F-4zI|kFu8`gmUeV|mdMOyBwUYU`71xKOFzmZ6`OsTnUtRD)fhalgqEFF< z>a$ugFY~i6a%4k!^WL*Hcf-mBgMPGnOAoEBW+-`Pjfo;+NSQP20&S#>e*hP@ZkTt@ zc-o0y8;=3(8Na2CD7m+dCawq*qcc?mz||7^dvgunT@qqtvFSFiNgQjV_3yq0|Ix!A zHNbO3pbf^iIb*AK{eJ9F2WmP+tG�P)Sc{gw1CXPTo}G^OTr>@g0vzALOxl&o!SG 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 GpZ_mIwxnbL diff --git a/examples/custom-worker/public/manifest.json b/examples/custom-worker/public/manifest.json deleted file mode 100644 index 81851325..00000000 --- a/examples/custom-worker/public/manifest.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "next-pwa", - "short_name": "next-pwa", - "display": "standalone", - "orientation": "portrait", - "theme_color": "#FFFFFF", - "background_color": "#FFFFFF", - "start_url": "/", - "icons": [ - { - "src": "/icons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "/icons/icon-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ] -} diff --git a/examples/custom-worker/worker/index.js b/examples/custom-worker/worker/index.js deleted file mode 100644 index cb4633cf..00000000 --- a/examples/custom-worker/worker/index.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict' - -// To disable all workbox logging during development, you can set self.__WB_DISABLE_DEV_LOGS to true -// https://developers.google.com/web/tools/workbox/guides/configure-workbox#disable_logging -// -// self.__WB_DISABLE_DEV_LOGS = true - -const util = require('./util') - -util() - -// listen to message event from window -self.addEventListener('message', event => { - // HOW TO TEST THIS? - // Run this in your browser console: - // window.navigator.serviceWorker.controller.postMessage({command: 'log', message: 'hello world'}) - // OR use next-pwa injected workbox object - // window.workbox.messageSW({command: 'log', message: 'hello world'}) - console.log(event.data) -}) diff --git a/examples/custom-worker/worker/util.js b/examples/custom-worker/worker/util.js deleted file mode 100644 index 4e0103e0..00000000 --- a/examples/custom-worker/worker/util.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict' - -module.exports = () => { - console.log('Hello from util.') - console.log('es6+ syntax test:') - let foo = { message: "working" } - console.log(foo?.message) -} diff --git a/examples/lifecycle/.eslintrc.json b/examples/lifecycle/.eslintrc.json deleted file mode 100644 index bffb357a..00000000 --- a/examples/lifecycle/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "next/core-web-vitals" -} diff --git a/examples/lifecycle/README.md b/examples/lifecycle/README.md deleted file mode 100644 index 0a6a6463..00000000 --- a/examples/lifecycle/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# next-pwa - lifecycle and register workflow control example - -[TOC] - -This example demonstrates how to use the `next-pwa` plugin to turn a `next.js` based web application into a progressive web application (PWA) painlessly. - -This example demonstrates how to control the service worker registration workflow (instead of automatically registering the service worker) and add an event listener to handle the lifecycle events. It gives you more control through the PWA lifecycle. The key here is to set the `register` option in `next.config.js` to `false` then call `window.workbox.register()` to register the service worker on your own. - -**UPDATE** - -This example also demonstrates how to [prompt the user to reload the page when a new version is available](https://developers.google.com/web/tools/workbox/guides/advanced-recipes#offer_a_page_reload_for_users). - -## Usage - -[![Open in Gitpod](https://img.shields.io/badge/Open%20In-Gitpod.io-%231966D2?style=for-the-badge&logo=gitpod)](https://gitpod.io/#https://github.com/shadowwalker/next-pwa/) - -``` bash -cd examples/lifecycle -yarn install -yarn build -yarn start -``` - -## Recommended `.gitignore` - -``` -**/public/precache.*.js -**/public/sw.js -``` diff --git a/examples/lifecycle/next.config.js b/examples/lifecycle/next.config.js deleted file mode 100644 index d0264a39..00000000 --- a/examples/lifecycle/next.config.js +++ /dev/null @@ -1,7 +0,0 @@ -const withPWA = require('next-pwa')({ - dest: 'public', - register: false, - skipWaiting: false -}) - -module.exports = withPWA() diff --git a/examples/lifecycle/package.json b/examples/lifecycle/package.json deleted file mode 100644 index 9a87802b..00000000 --- a/examples/lifecycle/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "next-pwa-example", - "version": "1.0.0", - "main": "index.js", - "license": "MIT", - "private": true, - "scripts": { - "dev": "next", - "build": "next build", - "start": "next start" - }, - "dependencies": { - "next": "^12.2.5", - "next-pwa": "latest", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "eslint": "^8.22.0", - "eslint-config-next": "12.2.5" - } -} diff --git a/examples/lifecycle/pages/_document.js b/examples/lifecycle/pages/_document.js deleted file mode 100644 index 5b3d1c9f..00000000 --- a/examples/lifecycle/pages/_document.js +++ /dev/null @@ -1,50 +0,0 @@ -import Document, { Html, Head, Main, NextScript } from 'next/document' - -const APP_NAME = 'next-pwa example' -const APP_DESCRIPTION = 'This is an example of using next-pwa plugin' - -class _Document extends Document { - static async getInitialProps(ctx) { - return await Document.getInitialProps(ctx) - } - - render() { - return ( - - - - - - - - - - - {/* TIP: set viewport head meta tag in _app.js, otherwise it will show a warning */} - {/* */} - - - - - - - -

- - - - ) - } -} - -export default _Document diff --git a/examples/lifecycle/pages/index.js b/examples/lifecycle/pages/index.js deleted file mode 100644 index f2b193c3..00000000 --- a/examples/lifecycle/pages/index.js +++ /dev/null @@ -1,89 +0,0 @@ -import { useEffect } from 'react' -import Head from 'next/head' - -const Index = () => { - // This hook only run once in browser after the component is rendered for the first time. - // It has same effect as the old componentDidMount lifecycle callback. - useEffect(() => { - if (typeof window !== 'undefined' && 'serviceWorker' in navigator && window.workbox !== undefined) { - const wb = window.workbox - // add event listeners to handle any of PWA lifecycle event - // https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-window.Workbox#events - wb.addEventListener('installed', event => { - console.log(`Event ${event.type} is triggered.`) - console.log(event) - }) - - wb.addEventListener('controlling', event => { - console.log(`Event ${event.type} is triggered.`) - console.log(event) - }) - - wb.addEventListener('activated', event => { - console.log(`Event ${event.type} is triggered.`) - console.log(event) - }) - - // A common UX pattern for progressive web apps is to show a banner when a service worker has updated and waiting to install. - // NOTE: MUST set skipWaiting to false in next.config.js pwa object - // https://developers.google.com/web/tools/workbox/guides/advanced-recipes#offer_a_page_reload_for_users - const promptNewVersionAvailable = event => { - // `event.wasWaitingBeforeRegister` will be false if this is the first time the updated service worker is waiting. - // When `event.wasWaitingBeforeRegister` is true, a previously updated service worker is still waiting. - // You may want to customize the UI prompt accordingly. - if (confirm('A newer version of this web app is available, reload to update?')) { - wb.addEventListener('controlling', event => { - window.location.reload() - }) - - // Send a message to the waiting service worker, instructing it to activate. - wb.messageSkipWaiting() - } else { - console.log( - 'User rejected to reload the web app, keep using old version. New version will be automatically load when user open the app next time.' - ) - } - } - - wb.addEventListener('waiting', promptNewVersionAvailable) - - // ISSUE - this is not working as expected, why? - // I could only make message event listenser work when I manually add this listenser into sw.js file - wb.addEventListener('message', event => { - console.log(`Event ${event.type} is triggered.`) - console.log(event) - }) - - /* - wb.addEventListener('redundant', event => { - console.log(`Event ${event.type} is triggered.`) - console.log(event) - }) - - wb.addEventListener('externalinstalled', event => { - console.log(`Event ${event.type} is triggered.`) - console.log(event) - }) - - wb.addEventListener('externalactivated', event => { - console.log(`Event ${event.type} is triggered.`) - console.log(event) - }) - */ - - // never forget to call register as auto register is turned off in next.config.js - wb.register() - } - }, []) - - return ( - <> - - next-pwa example - -

Next.js + PWA = AWESOME!!

- - ) -} - -export default Index diff --git a/examples/lifecycle/public/favicon.ico b/examples/lifecycle/public/favicon.ico deleted file mode 100644 index e69327b54edb5d248e99df79c6dbeb77be3d2958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmeHOYiu0V6~5!O*MY>vKujF+*yWMn5D=-6`lCNckmw(zKAp4okN5Cv=CUgjWqViaV@GPDr*=ALk1Tr)C9r0t(z)~z#lNyk`}ny* zeWG^+*h1QHQ%LEm4au!iNNy_=gnOlH8QwLAP$mfcpg=Hl*;?KXwF%h_sz=xR<+k$O zvbWNm9hLoC^_BW^rStMFa{ER7z&EM*stxVTpA7IafXUECUNpeZ0A5gSf|eO--+KOz z$^d`%vZzn(P@7t)#ZY>#Hsn?om)jg4pdY`Gz2$Qn5B1oFa>ZA*SN2w%MLWQGqY*u| z+t5e791q9!X&2`W*&2{{f^biG@J?VS{GeRQe%fh7-`i`b$8Iv9lLlm_pdSaof7X3a zeBZkp_0B@}M&zx#A)CXHQQs7HE>|I2A!m|xDkX3y%jH;>#&)#Lh`e*ZA$L@neYnqF zTc%1t7gj<4pfe65a$-wDmZmOP;mY?j!7K9b2NL7p_z+mGoSvEp2$Ry#kJj={JTN-;bU7 z<5D~P6wgphKz^0?p{V1K;^RB77*>v4y2=he#T^vSkp1CvxY+n%M+ggSXb}F`WsARk zk(**Mif1ky{Iz8Nf#31%$G^b!N6g=4p_wso0c}pw&ZW-Z8qD8n+xdGT+fVJxA8hR> z{MLo*zb5Sc*Fwj?(Di4b&)<^&&8MA({p9gO$^WM1LX!R^pR%@U%ania@!LX=pD$$l znalcRq5CiB`NCemr{zzM6n_nm91ht~ZTQe}E$CTdxBiNrK7jnyHOODp^4yWgd0N?q z0z5-5G^=LDIqWoKVWzH0%CR zq8#>=s6N>RLD*+X%aNI}0>x@f2j5fRe<${@=7c@9FW3iJO>-J{she`s(2)^Pj{A4C zch}7K^e8Vzxg}0KN0!*TLtE6QHvHmg@bH1(L+InI^gR`Cru*orT~5lcCw!cXVhxIy zAge6mh_2KO z{>16}G-EnlH%?t6^uLR-Z_9Oh|IB_v1Y8bDxdan(%2BR#PRkA21WKOM!db4;Z}t*E ztS-d{o|M$?T1o99s*xgZ+%DfA1Cs}5D;k08 zSE#cdzOXD8Jc@snQ|`EU2V%3J+PfC(n*HW%4pklPnMf|x{!9KXZRh8hz*%$SwJueP6Gor<{f2E>@lGoH6V40uo*`TI1P&!Nwj>p?&EeP6pEwGArn5l#;yJAyYWuTef3e~p8~C+EbBy$SzW7ty(RY7&(2Bp>y;`EV zO><1>@-*z{EfYVVzu@sQ^l-);P`g(p_-~p={+kTgClBV>O#WRfBw^QXnLqxpTXGBd zdz~}*NB;F=iEOH{Yx$PFXphtE65 zUyVN&P{aGWb87jW_4tzNiuy9tDl6ed`c2As$2AVjX`AT->j~xAE8<@dJ-x zP>13z#C$k&UOtT2`ys^DIpwev-z8-ze?92~bh44+vW)8w_$>09mPxX=GcYY!EIK-fYSOwqy&wVVFeD0XE09Ntv!FGwRi`hQ7nBPyHp#IoWn#L)l5J zN4A>vg{=0WehzCilp)!`jy0I|qXYXJke7((iXUYsv2U|EU-i!y|M|*KjGuQlp+wXQCYLz{{hkr({ca+ diff --git a/examples/lifecycle/public/icons/android-chrome-192x192.png b/examples/lifecycle/public/icons/android-chrome-192x192.png deleted file mode 100644 index a78d2e98d2ea5ac252591c57407d7e3db0966f0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5629 zcmb_=WmMEbxc(2229Z`^Nl}oLmT*ZaS#UwRmylR;i6s|B5L7?`L0W31L6oIa>F(}k z>0at`Ki+%KKR(7eZG;%1uBAe}M0$sa;R$G5;sF5ArKu|`==n}=&-f>rdIh%a zpPr^vVZ|{sJ*j`?)$s4UBxB%z;$xCyIxJtMjHE%msd$)`-M_yz*T=^eb^ce?#E;M(Ox>Nl z(#PRk@qS{Z)}fioD}9q&Dm>6nn}+F1R(i)O@+8Y4X81EpZpq;+1wxmvgWx8UCZ2jV znBz#oJXzFVbNH2501z}|wtOlx$d9zCTq;Qy;NKxX`W>R9%}VxNl0$3kyY8i4LBnoW zG@T-`d3UfVI>&amtJ5IfmB~`j(Ro74@xU) z!Yo5U$&3mK;>WjIGWRCT3!KBXzf)ANfU1xwMFZ`Y_a68{;@eFZshLwCXQS6jN4 z?AduW8J^w@UXaNpxvlW*wR5w7j~_{Pz|({5&Vmh&UYO_~y}%8$i0+ptQ!ohvZL`Vf zj@aR(kTK2~HbP{iZ}+g{o>p`24oOks6p!ya3? z$uh(1z?H$rPsB#Z%_}G8d5nj#AdSA8%Ot zht(hGX;O2%FIMf5Dk~WFVuax#$%f z)HrNNdL&_@0oU0zQ1`QBK5mBr?R*(z7T}8h8hhEp3F5?%bCI9A>%2UCI2I~+wBgJyPm~Bred!}EkBN+- zaG8J~_8sFO(pG-J3`6x4Bf#CaO$Ih~!}Sbc&r=l*V%>}r`gmgl?JDB#jxi09=0+Gi zqo~1ODPwJ$F;N_)+He9Fv@+`3$)2mdLIyxP%eDi>Pd}H9nEIrGL7Cd|j}{8wF3mX} zpVO<6rwng+UQ?u3!PB<4sW?~IoqPCvTu7^KMn3!~JsDu0T+{bAP*EF7R54x&R zg3+MdF_eqshn^gm;p)jHI_dJ}uPp(P^ps3)Tgn^D6;e9TWxmW}TS=&Mms8KZvu14( z)^s;D3m1xNMK7wxBN?I&-@%GNLsxz&!QvBhv@lw$5&=oVK=$qx7I>EONtQC=Ky$&* zmUHk7#P8t$5W0jX?*`3P6F;uEMK8)9ep4Ta11pH4spg|uCFZ?BNlRf_Jf z_}MkO)e8Rr50@maDY>l!mbWR*)bQrEXtk$kEywqk8rgpF@~S7JP1U2XF+j@Rq3l|Z z#<>!8!uu$~5sB_$yM?T9v{Ytm*i&Ljw3|&$TaM=-V)X0)8b8EoXspBSzoj$dm~R3| z++uGbc@1Fc+CG)b1=C2qzg@hchhgN)r;#75xr^SV0QhdXEOv8ojSOe#mQ*^`ktw!x_lc}nKq_Jg!2d!QzqXC%-W+7<|QZFva`gpsY z85p!n>l%1Jt4rmzpv7OG%j#G?X;#l~)IKN+3M#}iEYm$ds59Gs_an^|ey=Sv;yLI- z>cc-4W4(nveJeZ75m4styjc(LezNuR2T|fce&=d!vfOF)Og07B2CH}l^t4gW&T4iMgN1ry8EXVO0-CkEcHrmTtK9hOPzwNBNon)zg zi-Z$t&nLRGMxRRMW9QJMFNyss{+&&f5zPmRLJ>B$P2Y8|^m2&O4oYJ!4y7Rrq3X|7 zD-3pGu=VPKlzV0O!7>#9{}j_NEly*uU>B#)uSQ4DdYE(S28VtZ+$Vk+bwPAJj?aEK zH)1X`2Q9{2KIVwMFWPuid78FwZX_U=9t^GJW+I4l;Ygx6rDoqLVG#MWs7}?2%_4Od z65au_GY%RVVJEt}FrN^OaNZis#IUCH4mr;;3F@gA2m5DM0Jh0{!ne)<#J>6O*qpY$K?3SD4xUIJ71`?|PoSB1)eo>Dp@KOdR)3wyhyE!1)CUWZgbvao60D82X*x-UOJO5;GylFk4ii*P zS=Ty6XH;_+_k9)sWXN(JrGC_VOKoR{F!md9YL@ie`$$*87-tZ!ny4y|_d|t;GBQFF zy9PA3i-!1GpQWaBCkCb${g~AEkg&fe1T87hO*x0W=c~~(Z%Fh=?ZQw__u>3J^0+{nHG0_m}9Y8@lSM|F0{f>e0RJ%i+p=1p3o!JENi@Y6V_Rs=0+s=zHNP1kEZDj3SZh3eonMl_?ZJs9i@pz(? z5%4nee*+V;O}RhxQXU)PIm{#9)_C{rNSeaaEd3wFkh1R!FSNHXYAM zJmPRpvxK$A5H>zc`k!DCqqA;c$6aV+*~>6RXSr%mRCuEYMZ=i?KJ1FBWV~;|sAgHtwt|8yZn)HI2*F-J zvt~l;|4Pc(7&)t=JkdFo?r?d*0-+VI{wHRC_8mCjW9i+jaf4!cKbX(g?s~|CdCdzH z?e8eUQaui$1USr$jE>*<(4B;5zj*Q*rMa5zYmnfoo6D3j{K%Uj-nIDdc+wcPke76h z0OLmUXxud0ntdA+%1D5&WEpT?$F0YU+glCWC2dQempJ>!Nka};A)A-z=Q8U3``ea9f)(L=M z?-kenw6_c}4vNp$$$MN1H$(;{d<+gPf3{B2ud9=`QFMN_LHprCV6agY1rF2E--aD9LDRbW~oOJj)4oJhp}X zqhj>sMo(7{R4b};;zuJ?`Gds^y=5YDd+#N|37ko33h0F@r$G`E>4sG(|$6{ZQP<>%Mq~{i-+S zNjc@0wq{1>3Pr^_!9S;KIhK2iI8+#K&a_2OIx!-(rCs}};&^?hBhHt=DcN-Bt{BeJ zX=baS#)rReD9sut8n_cKL*{4q$0Z8ih^jYf@i3$Xim>~)!z8DM#8)A{!Eh~p`^+)r z=;IHV-w~uSq+Vf?v)w&PjctU(BqQy!I%9Ep|Tsc)0{?VF3$W?RdT0$qkXW zAHjjpIZdMImnXugioDN#-hkoBsXu@lHZ@M@OZ`EmxfVHQ&#RZb`9ln8#wksWX zq~NF1Z{dz!(cgEADbKp9cp;TSH`fV7$1?AJ^!_}SS*duQqb^l7v<6CLEjO0^6|`|9 zKtcQsTOat0t=aW3s?A55bt__ADqA@V?6G#Im|nZYAl};7DzNxG+VIBEwX_c`-hJF= zxBNFetS{I>$90^39XoJoUX`ldO`;locvcs|dN?VUD?$4GYQ0@u4x3`qQOFU}K?qeB;=gM&P^rYbf48-CKVi(OJ8dH*zMK~4&Ufw(3$XBnFoT^g`5$VUOFA%CnVtQ0 z*j|M|?r)3K*3B)|LbCgH^(q(_8y=JdtURfxJKnL~=I5CT-_k8<@K0tRhWGM?$cNU* zotYRn+h;Y2y_dGwDp^HEYX+Yk*{yy)G_SL>TK(9jeIWRKgfrUiv`DpltTSON|FgyH z*w}U0p_aGny)V+Ed?h!9;}}e76K$~uDVsWJAGDpNzmS0u19Kz#U+c$UCoC|c4tz?PIr0MGn;g#J{BK21Ammo;$}WS zPp8pG%k8KmJ^Tww8hBqor~QKR25#2n8PAC*8BxEeSia%8nH;)o|337uzuMl7x>*>i za~a4@Nvjqw*}dJRuar1q11E00bUxp-*7${$f7$Hu3oYWUHVH7=C6Bg~V|{ai^ysh& zzL1;ZG;{AAHy@ibxz%`nIrQY1Pui~zp!2ElsOEkPI-7~E+ZBQO&s`m23Gc4r524iM zWnu^i^}t>_@&QfS$o)CrO;T+Ah4_=;(I7!6-u|Xxi9wY)A-;wum;#UqDIyc*+&o8mdflDe`BD=sl-dJg!19ZWal4fL<1F+@%j5Xwe8q_}z%#}G#m zqxixri0grNc1QHhLz9qCLhLJ5N{bVByo$#B;TM}Eu5R)lbmZI7(1B9jqp*JyW3wJ6 z-Qo}apQ2yuec+m{>V_z|2pyeqD_(LVR16U|RtQ^Zn1}7H14M+MJ`)hWtzvq@64D|f z(qbZf!Xnbb!pV(A{QrdjceQb_L;jx$o2m4-X9FYFMohXQO5F!}qy(7Iv3`IahK!hkFNC)Y?H-S*4nV?2O zZ$fC&BRxPk@!$Ps?ma*5IrEmCcXyuIcV>6?*?n#JP@934lNJB~FzD)NKuNOU@3~A) zy6dVFok@byRTZKN0Mx#vJF~w;dUHGKKp_A?umAuM5d{DcNUDf60N|-40I+Tc0NhCh z0N8vpTOTQr3{(z!+8Th1zbhA6oJ7)4!*n5<)HoVSs_Vj07}tCNfKgdjL)8dAwUrg* zX*KYCptCcrnOY*zBKvA73aZf;=W+5*L;>o6YGh%9Y)!qIEzpXSRh{A#V&Y??EjTG> z_#p!Mp{U8(OcU4d#WfhaAx~vBQCcAzC@T0~VzSPu@2W2T>Xk>=hGvgk!pC z>wOdFC*EV)rxxDoP}td9IUe?LiB03VTxi(X0kA*e^}qa3gR%SdAdez5m{O28=9k72 zQ)VnMk|j~y_dho38g9^~Qd6aNM|f!ZI3?C5iyrZ-sU_wG5!0Ltyk618;o`^#rnLcN zdto77<_Lc@2mLVKEINZcT`sfsvY4phS(NO;ua=;FBcttJ$6S7`E8ef4-uivjUASiu z7`_KrZW zJ(~=BBB9pTH>KL+QFGwB@|L^aOWKqeev}#_5lmdjog4=t6az;_6Dk(SH8@VMlC- zc;ea^;@4XRYS7vbxlnC)ff)NukW~1A3)~J{VA_72ZBX9kF;6yoZ1xSg&U$h96OWq4 zQu#=%7GmgKr=Mu(v6*bT&1Q!hS~8xtU&N*RqOk7!DpYx`E_HC1&nHF&?AQT&y1Bib zOPC$y9Q1QY@7#A^!4rl2KX6f)P3+m(d2!877NVZh(#uj|nb3P@sTihTO%Ij1l2t6o z#>Oye67lwW37#DA^NREQkJ3K+c-JPXatC9sQ)u!LWyn^=c~XumV|@Di&S6>%Q?7_^ z$kf5?Y_}RO87tca`OeJ7s*EqZr$f@kCa3OYJ#gx0_uGhFd_uQr82?;KNjAth8P`~U zI6^%lf%v%QU>420kHvg5dEV>Z_~`}b{uy(b2!*C(JpONdj^3v8J(l-+Ae0wzI!W2AcC7u%+bz6~oJKp15G|+ui$yyxm4PXYs*B7l6GzH9QvNCcL z{)Nkk?3`rwDSdDXhwT=k9iKny{>~9Avgti?v`@LQK|@!yUTstt7mvoXP+%_T zGt3{aY2QDdX`1-hJWwwAr7{|rf@jl~4iCE}%Fb=3rI)#F3!0fLO=^A5+?`BI#*CX} z-a{r~;OTVfsYMY)BH@_g2J(tP8P9-B@5&3dpO^AYP)`hg7Rz5!Xm+!}vua71gKXIA z=kGBi(5wV}w${PKDa*L*X{B=eI0VN*+)(Hxmtoi8UmG#)3#){vqlGjBd4o;M2}{PR zdhNbCp`KI3EsXD&(cvUrUmNh0FdV=aq|kjIiaV00Y_mvy;^)TR^4WO4Q#`i3$8?SQ zeC0P!XW((NBOGyYqLC_`Uf+@bcxS8Rpy8)8Ia%|w-^yOCU5MYYod%`SFj?Kzw&c7|XJ4s2YxM zww3Smua-K1SwA7THD8Ynrsqme#2J0S7sY6UZL%6vxKJL~#Bl4z?ye6|Qa4#^+N__k z8Q-M-mYTmBI=S!&L6Pqw-KiNb99pBUK=m{C0|NyYO>1dmO@3f-O1RQ`x#hYZ0{n7S z3sSX`Qd@+m@-l&X8AbEX)L6(}Lt1=KAbd^w!$0r?2uiDq_FK3j(^L&DjoO#L9mTP+ zQ7WQ4#@lRXo89on;EnL>YNk!I=#X{e+u6@BZ5E9JG)bm9^3=`-ZQh8eK z5;HU!T_(!VSI@L0$iAhC7+fr*8BqwpTylYpV?x{;lDk;@F~WBxQJ>Z5hfBp0+=o_0 z+6NPB&wK>)b0AjnQ5^j~6&TBmTeG3HOuL)0Ckwel#tZ$U>vK1eOCGz=WNvvMbSu{1~`clHyVT|yo-45KRqOLE~e3+gc4~ekPz6LnCI3=EHLgzT7eUB zw5sc|v{LOIty1`$!5B6uXrt_d`fX93zT$zPuiuj~asP(9IwI{fUWIHuh=P^o<}rZ9 zi_gKLq?~v5?qgxm3=lcsL_+i~G;Nl2EQv9=g@w$KSy5cm!}HS{6s1bnX~-_XcG(>A zpIP@9%10A~M_aIabEFXV8x7*X#cCG)CpuruIKOEtWe?qrhD$qvWX$IXK+V-~oi}wx zhTrCG694Vr{u%85LAs?-M&S@tfYl2plzcN>8M$b)6e~hli?(|fvcTcz%WJBAIGbC!DXPRLoJIR_BjVPsnO$3qyl`=D~wbdvg_wS)5UU+ zAISwC>AEc9#7FGexct=$EHGKM%Pjq^zWG-%8mh2&Hjr___s_$Q4jTZ=1&@Q5#FP{@Q=nhn&Ft7H%CAV!^ zoOCjOKPo3vDn_8-j}Qg9*2vjXgleHs+&VvGt3xuLDSBq6 z@x|>y5`*teJ7nCTIDqOCxZ9}-q<_{p{l*)7dy|tl|B@WsY)hMIP;0$b| z*m?@1b@i%BPx0b<C-u!~1e*3`6&wi$0+WJzfkZORRoeR?5oU(MSNcFy4v4_W4?NFbXXt+aHY z8wOn#BZf$FrY`$~5SIcQN@l%Um)Mwn-TOPF-Rec`^aRv}d$Ozv64ePlmd2x$ZSE*C zQWqTFq}+r|>+ru7>iBgE8sj7CyQ|jq+dRyD(C7!CaB+VlEBI-ss* z_FQ~a&$j$3eeCV0i2_BD4 zFA$k!SWT)1S)&E^yfZxZ{Wv#LbR|B0fRG1DnCLdYf&Us8 zXw_m$&PlOpR=K@J6IOoL%+wYK+vG$g7V>n(jIT}KIjD6DvBQ!&;TXXnfkoE$Wj9T+ zj}4HJhH_(4qKsFXpqAK&-LE*asr5U+5vMLK!c;B=V!U*Z-QQe=C@Om2RAx;MVWDsM zveqqDi?}6LAd|sxsN&D7WD>?$;XE@{x?>T7chcv5!fmJ{gr)u<1r(~N%;#5`^Gg)f z2Kz5OGY|>1c6LfE6*AL`ipqPX^1Gs_DQ}VX8tcB$@7a>IKR-X^#-@A*sxc%QzxnTs zP5=8e_UFQVNim~s7o|^{E%{-ZW-upvnDZS+e`k^aNJ~nA#Ux2v)<{zRjA*O}YR7v=~6 zz%y}w=r8-32nl^PK%sS)p#Ta#I&nuj7Csieq-zu`+!_(Gy-pN-^+w#N3GCn(^cUb4 gYE*Xdc2mq|$Eh})81H5bm_cOrDk*9a`?f^hV64(A?cJQ-^qn4o_0ECJIK;#Pm_?skh z4ge5x05ES40IF#K!0(eqcytT=fx|)Pp(eom`^qC?(cm|n0WiJ$oRi1c&q&IzR3AbC zKzSdgdB-?-c##^EC1w^rd$3$o9OgZnlaq5xz!mc-hk}~t~<9)re(kV!{G07$NczBTR$44_bdE<-2^DFyp z=c1=X^&m5ijVdyu4I{G!KZ!<$m);!w`KPYK>Q%I;Ur{(D3zLC~(-p@OraDl`qIx%7 zNu4d(?C(*FaMq^EoT;re<2r}?9OI|=H6N95MGkGxjS)m&#^U|-sX~tnO;Cv+6UC*) zxI5X^vJpim8Do>#w9!wT((@ZQRQ7%f zAH(>0bbL50a(M`k2)vw;`tIXD@(oV07)`@23;|uzZlPzWg3r6a0fUitHb>An6j5~c zM#o;Nz7UVH49)Ke%&+VKYUd)usu5G!($%(DYR-J++O+jj5;1)ob#JDaJ{rKMFsIi?Oim0@9#=9XW z%IH)N)F9j3pm)sV;0xE_(!avD3T1=+$~__>$q}QCalxz{|Hc z{po0~oLtg%S$_0~D$STMS6{J5UQ#zq_*|W98)Y-B^izP0R$YOT^g>5=)T?{g-)}Pp zyFYL2q~-2x3kB{ze?G!k&!vU#dMo!YH~8y6+f&IE6sm&SX`P!pc_dP0LC{Ldaukc;MY{$|wPZw_I=HlEB2J@VU6BD@k`xAb`b*fpXi^nzE1#nWPMjIdsK_85ynSS|vbY#Q zg{@N;m6yt>Dz@ag7}F^$8;=I~k;og{oxI8Y{H|a4CMo`QQuCwQ4%o2DN%8sl;t+vw zpmLJ(*uKp80c)`YQmwC}>
Mq2Dh{rkQ`&%l=VwKPcWILbZ;n(+! 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

kyw!2WQ_VNtN7=}Pg8_k2NNPh!_ zgn`Ct$-acA{Kvr+p3`+x@5*}S-ev6iS@I??;L4SS50vZu?3LPamflVKDA${Qr?uua zw~$>IjvU*#a(BPFonWUlG_}O+1)cK|OSO}08@xbe-pQLp&pUZ#E6Iz`GF#Hmwr>>9 zR}$}RRCSN@fnVACg!yb!s82O9rz)q72B>OhB-~PB2E)0es z$9?VlK)F-4zI|kFu8`gmUeV|mdMOyBwUYU`71xKOFzmZ6`OsTnUtRD)fhalgqEFF< z>a$ugFY~i6a%4k!^WL*Hcf-mBgMPGnOAoEBW+-`Pjfo;+NSQP20&S#>e*hP@ZkTt@ zc-o0y8;=3(8Na2CD7m+dCawq*qcc?mz||7^dvgunT@qqtvFSFiNgQjV_3yq0|Ix!A zHNbO3pbf^iIb*AK{eJ9F2WmP+tG�P)Sc{gw1CXPTo}G^OTr>@g0vzALOxl&o!SG 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 GpZ_mIwxnbL diff --git a/examples/lifecycle/public/manifest.json b/examples/lifecycle/public/manifest.json deleted file mode 100644 index 81851325..00000000 --- a/examples/lifecycle/public/manifest.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "next-pwa", - "short_name": "next-pwa", - "display": "standalone", - "orientation": "portrait", - "theme_color": "#FFFFFF", - "background_color": "#FFFFFF", - "start_url": "/", - "icons": [ - { - "src": "/icons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "/icons/icon-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ] -} diff --git a/examples/minimal/.eslintrc.json b/examples/minimal/.eslintrc.json deleted file mode 100644 index bffb357a..00000000 --- a/examples/minimal/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "next/core-web-vitals" -} diff --git a/examples/minimal/README.md b/examples/minimal/README.md deleted file mode 100644 index c4337885..00000000 --- a/examples/minimal/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# next-pwa - minimal example - -[TOC] - -This example demonstrates how to use `next-pwa` plugin to turn a `next.js` based web application into a progressive web application easily. - -It uses `fastify` as a custom server in order to serve `sw.js` and `precache` script statically, and it contains minimal icon set and a `manifest.json` in static folder. The example also features full offline support and full (all 100) scores on lighthouse report. - -> [Check out the lighthouse summary](https://github.com/shadowwalker/next-pwa/blob/master/examples/minimal/lighthouse.pdf), or run the test your self. - -## Usage - -[![Open in Gitpod](https://img.shields.io/badge/Open%20In-Gitpod.io-%231966D2?style=for-the-badge&logo=gitpod)](https://gitpod.io/#https://github.com/shadowwalker/next-pwa/) - -``` bash -cd examples/minimal -yarn install -yarn build -yarn start -``` - diff --git a/examples/minimal/index.js b/examples/minimal/index.js deleted file mode 100644 index 89ab5a33..00000000 --- a/examples/minimal/index.js +++ /dev/null @@ -1,54 +0,0 @@ -const { join } = require('path') -const { parse } = require('url') -const fs = require('fs') -const fastify = require('fastify')({ - logger: false -}) -const Next = require('next') -const nextConfig = require('./next.config') - -const port = parseInt(process.env.PORT, 10) || 3000 -const dev = process.env.NODE_ENV !== 'production' - -const swJs = fs.readFileSync(join(__dirname, '.next', 'sw.js')) -let workboxJs - -fastify.register(require('fastify-compress')) - -fastify.register((fastify, options, next) => { - const app = Next({ dev, conf: nextConfig }) - const handle = app.getRequestHandler() - app - .prepare() - .then(() => { - fastify.get('/sw.js', (request, reply) => { - reply.type('application/javascript').send(swJs) - }) - - fastify.get('/workbox-*.js', (request, reply) => { - const { pathname } = parse(request.raw.url, true) - if (!workboxJs) workboxJs = fs.readFileSync(join(__dirname, '.next', pathname)) - reply.type('application/javascript').send(workboxJs) - }) - - fastify.all('/*', (request, reply) => { - return handle(request.raw, reply.raw).then(() => { - reply.sent = true - }) - }) - - fastify.setNotFoundHandler((request, reply) => { - return app.render404(request.raw, reply.raw).then(() => { - reply.sent = true - }) - }) - - next() - }) - .catch(err => next(err)) -}) - -fastify.listen(port, err => { - if (err) throw err - console.log(`> Ready on http://localhost:${port}`) -}) diff --git a/examples/minimal/lighthouse.pdf b/examples/minimal/lighthouse.pdf deleted file mode 100644 index d34b4b6e9d0155a4301b92727638b858b7bc5c3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170673 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

*R0ns?GeEXS#v6QiR-3k? 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

?)LYx@Vgs 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%0D#Hk{hGo>Q?E9QtDJzq`Q?yWgh8QUU% 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 MQI?)wOkVu|0l4_a%>V!Z diff --git a/examples/minimal/next.config.js b/examples/minimal/next.config.js deleted file mode 100644 index 27b8be85..00000000 --- a/examples/minimal/next.config.js +++ /dev/null @@ -1,9 +0,0 @@ -const withPWA = require('next-pwa')({ - // pwa output folder - // dest: '.next/pwa' - // - // Other configurations: - // ... -}) - -module.exports = withPWA() diff --git a/examples/minimal/package.json b/examples/minimal/package.json deleted file mode 100644 index cdc2abee..00000000 --- a/examples/minimal/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "next-pwa-example", - "version": "1.0.0", - "main": "index.js", - "license": "MIT", - "private": true, - "scripts": { - "dev": "node ./index.js", - "build": "next build", - "start": "cross-env NODE_ENV=production node ./index.js" - }, - "dependencies": { - "cross-env": "^7.0.3", - "fastify": "^4.5.2", - "fastify-compress": "^4.1.0", - "next": "^12.2.5", - "next-pwa": "latest", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "eslint": "^8.22.0", - "eslint-config-next": "12.2.5" - } -} diff --git a/examples/minimal/pages/_document.js b/examples/minimal/pages/_document.js deleted file mode 100644 index 5b3d1c9f..00000000 --- a/examples/minimal/pages/_document.js +++ /dev/null @@ -1,50 +0,0 @@ -import Document, { Html, Head, Main, NextScript } from 'next/document' - -const APP_NAME = 'next-pwa example' -const APP_DESCRIPTION = 'This is an example of using next-pwa plugin' - -class _Document extends Document { - static async getInitialProps(ctx) { - return await Document.getInitialProps(ctx) - } - - render() { - return ( - - - - - - - - - - - {/* TIP: set viewport head meta tag in _app.js, otherwise it will show a warning */} - {/* */} - - - - - - - -

- - - - ) - } -} - -export default _Document diff --git a/examples/minimal/pages/index.js b/examples/minimal/pages/index.js deleted file mode 100644 index b70feea0..00000000 --- a/examples/minimal/pages/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import Head from 'next/head' - -const Index = () => ( - <> - - next-pwa example - -

Next.js + PWA = AWESOME!

- -) - -export default Index diff --git a/examples/minimal/public/favicon.ico b/examples/minimal/public/favicon.ico deleted file mode 100644 index e69327b54edb5d248e99df79c6dbeb77be3d2958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmeHOYiu0V6~5!O*MY>vKujF+*yWMn5D=-6`lCNckmw(zKAp4okN5Cv=CUgjWqViaV@GPDr*=ALk1Tr)C9r0t(z)~z#lNyk`}ny* zeWG^+*h1QHQ%LEm4au!iNNy_=gnOlH8QwLAP$mfcpg=Hl*;?KXwF%h_sz=xR<+k$O zvbWNm9hLoC^_BW^rStMFa{ER7z&EM*stxVTpA7IafXUECUNpeZ0A5gSf|eO--+KOz z$^d`%vZzn(P@7t)#ZY>#Hsn?om)jg4pdY`Gz2$Qn5B1oFa>ZA*SN2w%MLWQGqY*u| z+t5e791q9!X&2`W*&2{{f^biG@J?VS{GeRQe%fh7-`i`b$8Iv9lLlm_pdSaof7X3a zeBZkp_0B@}M&zx#A)CXHQQs7HE>|I2A!m|xDkX3y%jH;>#&)#Lh`e*ZA$L@neYnqF zTc%1t7gj<4pfe65a$-wDmZmOP;mY?j!7K9b2NL7p_z+mGoSvEp2$Ry#kJj={JTN-;bU7 z<5D~P6wgphKz^0?p{V1K;^RB77*>v4y2=he#T^vSkp1CvxY+n%M+ggSXb}F`WsARk zk(**Mif1ky{Iz8Nf#31%$G^b!N6g=4p_wso0c}pw&ZW-Z8qD8n+xdGT+fVJxA8hR> z{MLo*zb5Sc*Fwj?(Di4b&)<^&&8MA({p9gO$^WM1LX!R^pR%@U%ania@!LX=pD$$l znalcRq5CiB`NCemr{zzM6n_nm91ht~ZTQe}E$CTdxBiNrK7jnyHOODp^4yWgd0N?q z0z5-5G^=LDIqWoKVWzH0%CR zq8#>=s6N>RLD*+X%aNI}0>x@f2j5fRe<${@=7c@9FW3iJO>-J{she`s(2)^Pj{A4C zch}7K^e8Vzxg}0KN0!*TLtE6QHvHmg@bH1(L+InI^gR`Cru*orT~5lcCw!cXVhxIy zAge6mh_2KO z{>16}G-EnlH%?t6^uLR-Z_9Oh|IB_v1Y8bDxdan(%2BR#PRkA21WKOM!db4;Z}t*E ztS-d{o|M$?T1o99s*xgZ+%DfA1Cs}5D;k08 zSE#cdzOXD8Jc@snQ|`EU2V%3J+PfC(n*HW%4pklPnMf|x{!9KXZRh8hz*%$SwJueP6Gor<{f2E>@lGoH6V40uo*`TI1P&!Nwj>p?&EeP6pEwGArn5l#;yJAyYWuTef3e~p8~C+EbBy$SzW7ty(RY7&(2Bp>y;`EV zO><1>@-*z{EfYVVzu@sQ^l-);P`g(p_-~p={+kTgClBV>O#WRfBw^QXnLqxpTXGBd zdz~}*NB;F=iEOH{Yx$PFXphtE65 zUyVN&P{aGWb87jW_4tzNiuy9tDl6ed`c2As$2AVjX`AT->j~xAE8<@dJ-x zP>13z#C$k&UOtT2`ys^DIpwev-z8-ze?92~bh44+vW)8w_$>09mPxX=GcYY!EIK-fYSOwqy&wVVFeD0XE09Ntv!FGwRi`hQ7nBPyHp#IoWn#L)l5J zN4A>vg{=0WehzCilp)!`jy0I|qXYXJke7((iXUYsv2U|EU-i!y|M|*KjGuQlp+wXQCYLz{{hkr({ca+ diff --git a/examples/minimal/public/icons/android-chrome-192x192.png b/examples/minimal/public/icons/android-chrome-192x192.png deleted file mode 100644 index a78d2e98d2ea5ac252591c57407d7e3db0966f0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5629 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
Mq2Dh{rkQ`&%l=VwKPcWILbZ;n(+! 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

kyw!2WQ_VNtN7=}Pg8_k2NNPh!_ zgn`Ct$-acA{Kvr+p3`+x@5*}S-ev6iS@I??;L4SS50vZu?3LPamflVKDA${Qr?uua zw~$>IjvU*#a(BPFonWUlG_}O+1)cK|OSO}08@xbe-pQLp&pUZ#E6Iz`GF#Hmwr>>9 zR}$}RRCSN@fnVACg!yb!s82O9rz)q72B>OhB-~PB2E)0es z$9?VlK)F-4zI|kFu8`gmUeV|mdMOyBwUYU`71xKOFzmZ6`OsTnUtRD)fhalgqEFF< z>a$ugFY~i6a%4k!^WL*Hcf-mBgMPGnOAoEBW+-`Pjfo;+NSQP20&S#>e*hP@ZkTt@ zc-o0y8;=3(8Na2CD7m+dCawq*qcc?mz||7^dvgunT@qqtvFSFiNgQjV_3yq0|Ix!A zHNbO3pbf^iIb*AK{eJ9F2WmP+tG�P)Sc{gw1CXPTo}G^OTr>@g0vzALOxl&o!SG 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 GpZ_mIwxnbL diff --git a/examples/minimal/public/manifest.json b/examples/minimal/public/manifest.json deleted file mode 100644 index 81851325..00000000 --- a/examples/minimal/public/manifest.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "next-pwa", - "short_name": "next-pwa", - "display": "standalone", - "orientation": "portrait", - "theme_color": "#FFFFFF", - "background_color": "#FFFFFF", - "start_url": "/", - "icons": [ - { - "src": "/icons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "/icons/icon-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ] -} diff --git a/examples/next-9/.eslintrc.json b/examples/next-9/.eslintrc.json deleted file mode 100644 index bffb357a..00000000 --- a/examples/next-9/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "next/core-web-vitals" -} diff --git a/examples/next-9/README.md b/examples/next-9/README.md deleted file mode 100644 index 7c6e194b..00000000 --- a/examples/next-9/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# next-pwa - next.js 9+ example - -[TOC] - -This example demonstrates how to use `next-pwa` plugin to turn a `next.js` based web application into a progressive web application easily. - -Thanks to **Next.js 9+**, we can use `public` folder to serve static files from root url path. It cuts the need to write custom server only to serve those files. Therefore the setup is more easy and concise. We can use `next.config.js` to config `next-pwa` to generates service worker and precache files into `public` folder. - -> [Check out the lighthouse summary](https://github.com/shadowwalker/next-pwa/blob/master/examples/next-9/lighthouse.pdf), or run the test your self. - -## Usage - -[![Open in Gitpod](https://img.shields.io/badge/Open%20In-Gitpod.io-%231966D2?style=for-the-badge&logo=gitpod)](https://gitpod.io/#https://github.com/shadowwalker/next-pwa/) - -``` bash -cd examples/next-9 -yarn install -yarn build -yarn start -``` - -## Recommend `.gitignore` - -``` -**/public/workbox-*.js -**/public/sw.js -``` - - - diff --git a/examples/next-9/lighthouse.pdf b/examples/next-9/lighthouse.pdf deleted file mode 100644 index 2038a9881975caedd963028b1d73507f21d34501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137073 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 - - - - - - - - - - {/* TIP: set viewport head meta tag in _app.js, otherwise it will show a warning */} - {/* */} - - - - - - - -

- - - - ) - } -} - -export default _Document diff --git a/examples/next-9/pages/about.js b/examples/next-9/pages/about.js deleted file mode 100644 index 9fc2e47c..00000000 --- a/examples/next-9/pages/about.js +++ /dev/null @@ -1,14 +0,0 @@ -import Head from 'next/head' -import Link from 'next/link' - -const About = () => ( - <> - - next-pwa example - -

About

- Home - -) - -export default About \ No newline at end of file diff --git a/examples/next-9/pages/index.js b/examples/next-9/pages/index.js deleted file mode 100644 index ce58af40..00000000 --- a/examples/next-9/pages/index.js +++ /dev/null @@ -1,14 +0,0 @@ -import Head from 'next/head' -import Link from 'next/link' - -const Index = () => ( - <> - - next-pwa example - -

Next.js + PWA = AWESOME!

- About - -) - -export default Index diff --git a/examples/next-9/public/favicon.ico b/examples/next-9/public/favicon.ico deleted file mode 100644 index e69327b54edb5d248e99df79c6dbeb77be3d2958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmeHOYiu0V6~5!O*MY>vKujF+*yWMn5D=-6`lCNckmw(zKAp4okN5Cv=CUgjWqViaV@GPDr*=ALk1Tr)C9r0t(z)~z#lNyk`}ny* zeWG^+*h1QHQ%LEm4au!iNNy_=gnOlH8QwLAP$mfcpg=Hl*;?KXwF%h_sz=xR<+k$O zvbWNm9hLoC^_BW^rStMFa{ER7z&EM*stxVTpA7IafXUECUNpeZ0A5gSf|eO--+KOz z$^d`%vZzn(P@7t)#ZY>#Hsn?om)jg4pdY`Gz2$Qn5B1oFa>ZA*SN2w%MLWQGqY*u| z+t5e791q9!X&2`W*&2{{f^biG@J?VS{GeRQe%fh7-`i`b$8Iv9lLlm_pdSaof7X3a zeBZkp_0B@}M&zx#A)CXHQQs7HE>|I2A!m|xDkX3y%jH;>#&)#Lh`e*ZA$L@neYnqF zTc%1t7gj<4pfe65a$-wDmZmOP;mY?j!7K9b2NL7p_z+mGoSvEp2$Ry#kJj={JTN-;bU7 z<5D~P6wgphKz^0?p{V1K;^RB77*>v4y2=he#T^vSkp1CvxY+n%M+ggSXb}F`WsARk zk(**Mif1ky{Iz8Nf#31%$G^b!N6g=4p_wso0c}pw&ZW-Z8qD8n+xdGT+fVJxA8hR> z{MLo*zb5Sc*Fwj?(Di4b&)<^&&8MA({p9gO$^WM1LX!R^pR%@U%ania@!LX=pD$$l znalcRq5CiB`NCemr{zzM6n_nm91ht~ZTQe}E$CTdxBiNrK7jnyHOODp^4yWgd0N?q z0z5-5G^=LDIqWoKVWzH0%CR zq8#>=s6N>RLD*+X%aNI}0>x@f2j5fRe<${@=7c@9FW3iJO>-J{she`s(2)^Pj{A4C zch}7K^e8Vzxg}0KN0!*TLtE6QHvHmg@bH1(L+InI^gR`Cru*orT~5lcCw!cXVhxIy zAge6mh_2KO z{>16}G-EnlH%?t6^uLR-Z_9Oh|IB_v1Y8bDxdan(%2BR#PRkA21WKOM!db4;Z}t*E ztS-d{o|M$?T1o99s*xgZ+%DfA1Cs}5D;k08 zSE#cdzOXD8Jc@snQ|`EU2V%3J+PfC(n*HW%4pklPnMf|x{!9KXZRh8hz*%$SwJueP6Gor<{f2E>@lGoH6V40uo*`TI1P&!Nwj>p?&EeP6pEwGArn5l#;yJAyYWuTef3e~p8~C+EbBy$SzW7ty(RY7&(2Bp>y;`EV zO><1>@-*z{EfYVVzu@sQ^l-);P`g(p_-~p={+kTgClBV>O#WRfBw^QXnLqxpTXGBd zdz~}*NB;F=iEOH{Yx$PFXphtE65 zUyVN&P{aGWb87jW_4tzNiuy9tDl6ed`c2As$2AVjX`AT->j~xAE8<@dJ-x zP>13z#C$k&UOtT2`ys^DIpwev-z8-ze?92~bh44+vW)8w_$>09mPxX=GcYY!EIK-fYSOwqy&wVVFeD0XE09Ntv!FGwRi`hQ7nBPyHp#IoWn#L)l5J zN4A>vg{=0WehzCilp)!`jy0I|qXYXJke7((iXUYsv2U|EU-i!y|M|*KjGuQlp+wXQCYLz{{hkr({ca+ diff --git a/examples/next-9/public/icons/android-chrome-192x192.png b/examples/next-9/public/icons/android-chrome-192x192.png deleted file mode 100644 index a78d2e98d2ea5ac252591c57407d7e3db0966f0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5629 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
Mq2Dh{rkQ`&%l=VwKPcWILbZ;n(+! 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

kyw!2WQ_VNtN7=}Pg8_k2NNPh!_ zgn`Ct$-acA{Kvr+p3`+x@5*}S-ev6iS@I??;L4SS50vZu?3LPamflVKDA${Qr?uua zw~$>IjvU*#a(BPFonWUlG_}O+1)cK|OSO}08@xbe-pQLp&pUZ#E6Iz`GF#Hmwr>>9 zR}$}RRCSN@fnVACg!yb!s82O9rz)q72B>OhB-~PB2E)0es z$9?VlK)F-4zI|kFu8`gmUeV|mdMOyBwUYU`71xKOFzmZ6`OsTnUtRD)fhalgqEFF< z>a$ugFY~i6a%4k!^WL*Hcf-mBgMPGnOAoEBW+-`Pjfo;+NSQP20&S#>e*hP@ZkTt@ zc-o0y8;=3(8Na2CD7m+dCawq*qcc?mz||7^dvgunT@qqtvFSFiNgQjV_3yq0|Ix!A zHNbO3pbf^iIb*AK{eJ9F2WmP+tG�P)Sc{gw1CXPTo}G^OTr>@g0vzALOxl&o!SG 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 GpZ_mIwxnbL diff --git a/examples/next-9/public/manifest.json b/examples/next-9/public/manifest.json deleted file mode 100644 index 81851325..00000000 --- a/examples/next-9/public/manifest.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "next-pwa", - "short_name": "next-pwa", - "display": "standalone", - "orientation": "portrait", - "theme_color": "#FFFFFF", - "background_color": "#FFFFFF", - "start_url": "/", - "icons": [ - { - "src": "/icons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "/icons/icon-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ] -} diff --git a/examples/next-i18next/.eslintrc.json b/examples/next-i18next/.eslintrc.json deleted file mode 100644 index bffb357a..00000000 --- a/examples/next-i18next/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "next/core-web-vitals" -} diff --git a/examples/next-i18next/README.md b/examples/next-i18next/README.md deleted file mode 100644 index f59366e6..00000000 --- a/examples/next-i18next/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# next-pwa - i18n example (TODO: broken, need fix) - -[TOC] - -This example demonstrates how to use `next-pwa` plugin to turn a `next.js` based web application into a progressive web application easily. - -It uses `express` to build a custom server and use [`next-i18next`](https://github.com/isaachinman/next-i18next) as a i18n solution. - -> The express middleware `i18next-express-middleware` is not compatible with `fastify` right not unfortunately. - -Because service worker `sw.js` must be served directly without any redirection, make sure it's route is excluded from the i18n middleware is a bit tricky. Please see `index.js` for more details. - -## Usage - -[![Open in Gitpod](https://img.shields.io/badge/Open%20In-Gitpod.io-%231966D2?style=for-the-badge&logo=gitpod)](https://gitpod.io/#https://github.com/shadowwalker/next-pwa/) - -``` bash -cd examples/next-i18next -yarn install -yarn build -yarn start -``` - -Then try out following path: - -``` -https://localhost:3000/ -https://localhost:3000/en -https://localhost:3000/zh -``` - diff --git a/examples/next-i18next/i18n.js b/examples/next-i18next/i18n.js deleted file mode 100644 index 9c58e386..00000000 --- a/examples/next-i18next/i18n.js +++ /dev/null @@ -1,9 +0,0 @@ -const NextI18Next = require('next-i18next').default - -module.exports = new NextI18Next({ - otherLanguages: ['zh'], - localeSubpaths: { - en: 'en', - zh: 'zh' - } -}) diff --git a/examples/next-i18next/index.js b/examples/next-i18next/index.js deleted file mode 100644 index e9075dbd..00000000 --- a/examples/next-i18next/index.js +++ /dev/null @@ -1,42 +0,0 @@ -const { join } = require('path') -const { parse } = require('url') -const express = require('express') -const Next = require('next') -const nextI18NextMiddleware = require('next-i18next/middleware').default -const nextI18next = require('./i18n') -const nextConfig = require('./next.config') - -const port = parseInt(process.env.PORT, 10) || 3000 -const dev = process.env.NODE_ENV !== 'production' -const app = Next({ dev, conf: nextConfig }) -const handle = app.getRequestHandler() -const server = express() - -app.prepare().then(async () => { - server.get('/sw.js', (req, res) => { - return app.serveStatic(req, res, join(__dirname, '.next', 'sw.js')) - }) - - server.get('/workbox-*.js', (req, res) => { - const { pathname } = parse(req.path, true) - return app.serveStatic(req, res, join(__dirname, '.next', pathname)) - }) - - // static resources should not be redirected by i18n middleware to same network trip - // highly recommend add any extension of static resources here, though it would still work if you don't - server.all(/\.(js|json|png|jpg|ico)$/i, (req, res) => { - return handle(req, res) - }) - - // make sure nextI18next is initiated - await nextI18next.initPromise - // use the i18n middleware for any other routes - server.all('*', nextI18NextMiddleware(nextI18next), (req, res) => { - return handle(req, res) - }) - - server.listen(port, err => { - if (err) throw err - console.log(`> Ready on http://localhost:${port}`) - }) -}) diff --git a/examples/next-i18next/next.config.js b/examples/next-i18next/next.config.js deleted file mode 100644 index 2d102a3e..00000000 --- a/examples/next-i18next/next.config.js +++ /dev/null @@ -1,3 +0,0 @@ -const withPWA = require('next-pwa')() - -module.exports = withPWA() diff --git a/examples/next-i18next/package.json b/examples/next-i18next/package.json deleted file mode 100644 index 194cfac2..00000000 --- a/examples/next-i18next/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "next-pwa-example", - "version": "1.0.0", - "main": "index.js", - "license": "MIT", - "private": true, - "scripts": { - "dev": "node ./index.js", - "build": "next build", - "start": "cross-env NODE_ENV=production node ./index.js" - }, - "dependencies": { - "cross-env": "^7.0.3", - "express": "^4.18.1", - "fastify-compress": "^4.1.0", - "next": "^12.2.5", - "next-i18next": "^12.0.0", - "next-pwa": "latest", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "eslint": "^8.22.0", - "eslint-config-next": "12.2.5" - } -} diff --git a/examples/next-i18next/pages/_app.js b/examples/next-i18next/pages/_app.js deleted file mode 100644 index 85e72028..00000000 --- a/examples/next-i18next/pages/_app.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import { appWithTranslation } from '../i18n' - -const App = ({ Component, pageProps }) => { - return -} - -const AppWithTranslation = appWithTranslation(App) - -export default AppWithTranslation diff --git a/examples/next-i18next/pages/_document.js b/examples/next-i18next/pages/_document.js deleted file mode 100644 index 5b3d1c9f..00000000 --- a/examples/next-i18next/pages/_document.js +++ /dev/null @@ -1,50 +0,0 @@ -import Document, { Html, Head, Main, NextScript } from 'next/document' - -const APP_NAME = 'next-pwa example' -const APP_DESCRIPTION = 'This is an example of using next-pwa plugin' - -class _Document extends Document { - static async getInitialProps(ctx) { - return await Document.getInitialProps(ctx) - } - - render() { - return ( - - - - - - - - - - - {/* TIP: set viewport head meta tag in _app.js, otherwise it will show a warning */} - {/* */} - - - - - - - -

- - - - ) - } -} - -export default _Document diff --git a/examples/next-i18next/pages/index.js b/examples/next-i18next/pages/index.js deleted file mode 100644 index 553e7aac..00000000 --- a/examples/next-i18next/pages/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import Head from 'next/head' -import { i18n, Link, withTranslation } from '../i18n' - -const Index = ({t}) => ( - <> - - next-pwa example - -

Next.js + PWA = {t('awesome').toLocaleUpperCase()}!

- -) - -Index.getInitialProps = async () => ({ - namespacesRequired: ['common'], -}) - -export default withTranslation('common')(Index) diff --git a/examples/next-i18next/public/favicon.ico b/examples/next-i18next/public/favicon.ico deleted file mode 100644 index e69327b54edb5d248e99df79c6dbeb77be3d2958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmeHOYiu0V6~5!O*MY>vKujF+*yWMn5D=-6`lCNckmw(zKAp4okN5Cv=CUgjWqViaV@GPDr*=ALk1Tr)C9r0t(z)~z#lNyk`}ny* zeWG^+*h1QHQ%LEm4au!iNNy_=gnOlH8QwLAP$mfcpg=Hl*;?KXwF%h_sz=xR<+k$O zvbWNm9hLoC^_BW^rStMFa{ER7z&EM*stxVTpA7IafXUECUNpeZ0A5gSf|eO--+KOz z$^d`%vZzn(P@7t)#ZY>#Hsn?om)jg4pdY`Gz2$Qn5B1oFa>ZA*SN2w%MLWQGqY*u| z+t5e791q9!X&2`W*&2{{f^biG@J?VS{GeRQe%fh7-`i`b$8Iv9lLlm_pdSaof7X3a zeBZkp_0B@}M&zx#A)CXHQQs7HE>|I2A!m|xDkX3y%jH;>#&)#Lh`e*ZA$L@neYnqF zTc%1t7gj<4pfe65a$-wDmZmOP;mY?j!7K9b2NL7p_z+mGoSvEp2$Ry#kJj={JTN-;bU7 z<5D~P6wgphKz^0?p{V1K;^RB77*>v4y2=he#T^vSkp1CvxY+n%M+ggSXb}F`WsARk zk(**Mif1ky{Iz8Nf#31%$G^b!N6g=4p_wso0c}pw&ZW-Z8qD8n+xdGT+fVJxA8hR> z{MLo*zb5Sc*Fwj?(Di4b&)<^&&8MA({p9gO$^WM1LX!R^pR%@U%ania@!LX=pD$$l znalcRq5CiB`NCemr{zzM6n_nm91ht~ZTQe}E$CTdxBiNrK7jnyHOODp^4yWgd0N?q z0z5-5G^=LDIqWoKVWzH0%CR zq8#>=s6N>RLD*+X%aNI}0>x@f2j5fRe<${@=7c@9FW3iJO>-J{she`s(2)^Pj{A4C zch}7K^e8Vzxg}0KN0!*TLtE6QHvHmg@bH1(L+InI^gR`Cru*orT~5lcCw!cXVhxIy zAge6mh_2KO z{>16}G-EnlH%?t6^uLR-Z_9Oh|IB_v1Y8bDxdan(%2BR#PRkA21WKOM!db4;Z}t*E ztS-d{o|M$?T1o99s*xgZ+%DfA1Cs}5D;k08 zSE#cdzOXD8Jc@snQ|`EU2V%3J+PfC(n*HW%4pklPnMf|x{!9KXZRh8hz*%$SwJueP6Gor<{f2E>@lGoH6V40uo*`TI1P&!Nwj>p?&EeP6pEwGArn5l#;yJAyYWuTef3e~p8~C+EbBy$SzW7ty(RY7&(2Bp>y;`EV zO><1>@-*z{EfYVVzu@sQ^l-);P`g(p_-~p={+kTgClBV>O#WRfBw^QXnLqxpTXGBd zdz~}*NB;F=iEOH{Yx$PFXphtE65 zUyVN&P{aGWb87jW_4tzNiuy9tDl6ed`c2As$2AVjX`AT->j~xAE8<@dJ-x zP>13z#C$k&UOtT2`ys^DIpwev-z8-ze?92~bh44+vW)8w_$>09mPxX=GcYY!EIK-fYSOwqy&wVVFeD0XE09Ntv!FGwRi`hQ7nBPyHp#IoWn#L)l5J zN4A>vg{=0WehzCilp)!`jy0I|qXYXJke7((iXUYsv2U|EU-i!y|M|*KjGuQlp+wXQCYLz{{hkr({ca+ diff --git a/examples/next-i18next/public/icons/android-chrome-192x192.png b/examples/next-i18next/public/icons/android-chrome-192x192.png deleted file mode 100644 index a78d2e98d2ea5ac252591c57407d7e3db0966f0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5629 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
Mq2Dh{rkQ`&%l=VwKPcWILbZ;n(+! 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

kyw!2WQ_VNtN7=}Pg8_k2NNPh!_ zgn`Ct$-acA{Kvr+p3`+x@5*}S-ev6iS@I??;L4SS50vZu?3LPamflVKDA${Qr?uua zw~$>IjvU*#a(BPFonWUlG_}O+1)cK|OSO}08@xbe-pQLp&pUZ#E6Iz`GF#Hmwr>>9 zR}$}RRCSN@fnVACg!yb!s82O9rz)q72B>OhB-~PB2E)0es z$9?VlK)F-4zI|kFu8`gmUeV|mdMOyBwUYU`71xKOFzmZ6`OsTnUtRD)fhalgqEFF< z>a$ugFY~i6a%4k!^WL*Hcf-mBgMPGnOAoEBW+-`Pjfo;+NSQP20&S#>e*hP@ZkTt@ zc-o0y8;=3(8Na2CD7m+dCawq*qcc?mz||7^dvgunT@qqtvFSFiNgQjV_3yq0|Ix!A zHNbO3pbf^iIb*AK{eJ9F2WmP+tG�P)Sc{gw1CXPTo}G^OTr>@g0vzALOxl&o!SG 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 GpZ_mIwxnbL diff --git a/examples/next-i18next/public/manifest.json b/examples/next-i18next/public/manifest.json deleted file mode 100644 index 81851325..00000000 --- a/examples/next-i18next/public/manifest.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "next-pwa", - "short_name": "next-pwa", - "display": "standalone", - "orientation": "portrait", - "theme_color": "#FFFFFF", - "background_color": "#FFFFFF", - "start_url": "/", - "icons": [ - { - "src": "/icons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "/icons/icon-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ] -} diff --git a/examples/next-i18next/public/static/locales/en/common.json b/examples/next-i18next/public/static/locales/en/common.json deleted file mode 100644 index c08611b2..00000000 --- a/examples/next-i18next/public/static/locales/en/common.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "awesome": "awesome" -} \ No newline at end of file diff --git a/examples/next-i18next/public/static/locales/zh/common.json b/examples/next-i18next/public/static/locales/zh/common.json deleted file mode 100644 index 4039ec83..00000000 --- a/examples/next-i18next/public/static/locales/zh/common.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "awesome": "棒棒的" -} \ No newline at end of file diff --git a/examples/next-image/.eslintrc.json b/examples/next-image/.eslintrc.json deleted file mode 100644 index bffb357a..00000000 --- a/examples/next-image/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "next/core-web-vitals" -} diff --git a/examples/next-image/README.md b/examples/next-image/README.md deleted file mode 100644 index 96f2de5e..00000000 --- a/examples/next-image/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# next-pwa - next-image example - -[TOC] - -This example demonstrates best practices to serve your images through `next.js` built-in image serving feature. - -For best performance, put images in it's own folder other than `public`. This will prevent duplicate precaching entries in the `sw.js` service worker script. Then `import Image from 'next/image'` to use the `Image` component provided from `next.js` in your app. - -## Usage - -[![Open in Gitpod](https://img.shields.io/badge/Open%20In-Gitpod.io-%231966D2?style=for-the-badge&logo=gitpod)](https://gitpod.io/#https://github.com/shadowwalker/next-pwa/) - -```bash -cd examples/next-image -yarn install -yarn build -yarn start -``` - -## Recommend `.gitignore` - -``` -**/public/workbox-*.js -**/public/sw.js -``` diff --git a/examples/next-image/images/nextjs-dark.svg b/examples/next-image/images/nextjs-dark.svg deleted file mode 100644 index 160706eb..00000000 --- a/examples/next-image/images/nextjs-dark.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/examples/next-image/next.config.js b/examples/next-image/next.config.js deleted file mode 100644 index 5d6a902e..00000000 --- a/examples/next-image/next.config.js +++ /dev/null @@ -1,5 +0,0 @@ -const withPWA = require('next-pwa')({ - dest: 'public' -}) - -module.exports = withPWA() diff --git a/examples/next-image/package.json b/examples/next-image/package.json deleted file mode 100644 index 9a87802b..00000000 --- a/examples/next-image/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "next-pwa-example", - "version": "1.0.0", - "main": "index.js", - "license": "MIT", - "private": true, - "scripts": { - "dev": "next", - "build": "next build", - "start": "next start" - }, - "dependencies": { - "next": "^12.2.5", - "next-pwa": "latest", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "eslint": "^8.22.0", - "eslint-config-next": "12.2.5" - } -} diff --git a/examples/next-image/pages/_document.js b/examples/next-image/pages/_document.js deleted file mode 100644 index 5b3d1c9f..00000000 --- a/examples/next-image/pages/_document.js +++ /dev/null @@ -1,50 +0,0 @@ -import Document, { Html, Head, Main, NextScript } from 'next/document' - -const APP_NAME = 'next-pwa example' -const APP_DESCRIPTION = 'This is an example of using next-pwa plugin' - -class _Document extends Document { - static async getInitialProps(ctx) { - return await Document.getInitialProps(ctx) - } - - render() { - return ( - - - - - - - - - - - {/* TIP: set viewport head meta tag in _app.js, otherwise it will show a warning */} - {/* */} - - - - - - - -

- - - - ) - } -} - -export default _Document diff --git a/examples/next-image/pages/about.js b/examples/next-image/pages/about.js deleted file mode 100644 index 9fc2e47c..00000000 --- a/examples/next-image/pages/about.js +++ /dev/null @@ -1,14 +0,0 @@ -import Head from 'next/head' -import Link from 'next/link' - -const About = () => ( - <> - - next-pwa example - -

About

- Home - -) - -export default About \ No newline at end of file diff --git a/examples/next-image/pages/index.js b/examples/next-image/pages/index.js deleted file mode 100644 index 4fffaa77..00000000 --- a/examples/next-image/pages/index.js +++ /dev/null @@ -1,18 +0,0 @@ -import Head from 'next/head' -import Link from 'next/link' -import Image from 'next/image' - -import nextjsDark from '../images/nextjs-dark.svg' - -const Index = () => ( - <> - - next-pwa example - -

Next.js + PWA = AWESOME!

- - About - -) - -export default Index diff --git a/examples/next-image/public/favicon.ico b/examples/next-image/public/favicon.ico deleted file mode 100644 index e69327b54edb5d248e99df79c6dbeb77be3d2958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmeHOYiu0V6~5!O*MY>vKujF+*yWMn5D=-6`lCNckmw(zKAp4okN5Cv=CUgjWqViaV@GPDr*=ALk1Tr)C9r0t(z)~z#lNyk`}ny* zeWG^+*h1QHQ%LEm4au!iNNy_=gnOlH8QwLAP$mfcpg=Hl*;?KXwF%h_sz=xR<+k$O zvbWNm9hLoC^_BW^rStMFa{ER7z&EM*stxVTpA7IafXUECUNpeZ0A5gSf|eO--+KOz z$^d`%vZzn(P@7t)#ZY>#Hsn?om)jg4pdY`Gz2$Qn5B1oFa>ZA*SN2w%MLWQGqY*u| z+t5e791q9!X&2`W*&2{{f^biG@J?VS{GeRQe%fh7-`i`b$8Iv9lLlm_pdSaof7X3a zeBZkp_0B@}M&zx#A)CXHQQs7HE>|I2A!m|xDkX3y%jH;>#&)#Lh`e*ZA$L@neYnqF zTc%1t7gj<4pfe65a$-wDmZmOP;mY?j!7K9b2NL7p_z+mGoSvEp2$Ry#kJj={JTN-;bU7 z<5D~P6wgphKz^0?p{V1K;^RB77*>v4y2=he#T^vSkp1CvxY+n%M+ggSXb}F`WsARk zk(**Mif1ky{Iz8Nf#31%$G^b!N6g=4p_wso0c}pw&ZW-Z8qD8n+xdGT+fVJxA8hR> z{MLo*zb5Sc*Fwj?(Di4b&)<^&&8MA({p9gO$^WM1LX!R^pR%@U%ania@!LX=pD$$l znalcRq5CiB`NCemr{zzM6n_nm91ht~ZTQe}E$CTdxBiNrK7jnyHOODp^4yWgd0N?q z0z5-5G^=LDIqWoKVWzH0%CR zq8#>=s6N>RLD*+X%aNI}0>x@f2j5fRe<${@=7c@9FW3iJO>-J{she`s(2)^Pj{A4C zch}7K^e8Vzxg}0KN0!*TLtE6QHvHmg@bH1(L+InI^gR`Cru*orT~5lcCw!cXVhxIy zAge6mh_2KO z{>16}G-EnlH%?t6^uLR-Z_9Oh|IB_v1Y8bDxdan(%2BR#PRkA21WKOM!db4;Z}t*E ztS-d{o|M$?T1o99s*xgZ+%DfA1Cs}5D;k08 zSE#cdzOXD8Jc@snQ|`EU2V%3J+PfC(n*HW%4pklPnMf|x{!9KXZRh8hz*%$SwJueP6Gor<{f2E>@lGoH6V40uo*`TI1P&!Nwj>p?&EeP6pEwGArn5l#;yJAyYWuTef3e~p8~C+EbBy$SzW7ty(RY7&(2Bp>y;`EV zO><1>@-*z{EfYVVzu@sQ^l-);P`g(p_-~p={+kTgClBV>O#WRfBw^QXnLqxpTXGBd zdz~}*NB;F=iEOH{Yx$PFXphtE65 zUyVN&P{aGWb87jW_4tzNiuy9tDl6ed`c2As$2AVjX`AT->j~xAE8<@dJ-x zP>13z#C$k&UOtT2`ys^DIpwev-z8-ze?92~bh44+vW)8w_$>09mPxX=GcYY!EIK-fYSOwqy&wVVFeD0XE09Ntv!FGwRi`hQ7nBPyHp#IoWn#L)l5J zN4A>vg{=0WehzCilp)!`jy0I|qXYXJke7((iXUYsv2U|EU-i!y|M|*KjGuQlp+wXQCYLz{{hkr({ca+ diff --git a/examples/next-image/public/icons/android-chrome-192x192.png b/examples/next-image/public/icons/android-chrome-192x192.png deleted file mode 100644 index a78d2e98d2ea5ac252591c57407d7e3db0966f0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5629 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
Mq2Dh{rkQ`&%l=VwKPcWILbZ;n(+! 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

kyw!2WQ_VNtN7=}Pg8_k2NNPh!_ zgn`Ct$-acA{Kvr+p3`+x@5*}S-ev6iS@I??;L4SS50vZu?3LPamflVKDA${Qr?uua zw~$>IjvU*#a(BPFonWUlG_}O+1)cK|OSO}08@xbe-pQLp&pUZ#E6Iz`GF#Hmwr>>9 zR}$}RRCSN@fnVACg!yb!s82O9rz)q72B>OhB-~PB2E)0es z$9?VlK)F-4zI|kFu8`gmUeV|mdMOyBwUYU`71xKOFzmZ6`OsTnUtRD)fhalgqEFF< z>a$ugFY~i6a%4k!^WL*Hcf-mBgMPGnOAoEBW+-`Pjfo;+NSQP20&S#>e*hP@ZkTt@ zc-o0y8;=3(8Na2CD7m+dCawq*qcc?mz||7^dvgunT@qqtvFSFiNgQjV_3yq0|Ix!A zHNbO3pbf^iIb*AK{eJ9F2WmP+tG�P)Sc{gw1CXPTo}G^OTr>@g0vzALOxl&o!SG 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 GpZ_mIwxnbL diff --git a/examples/next-image/public/manifest.json b/examples/next-image/public/manifest.json deleted file mode 100644 index 81851325..00000000 --- a/examples/next-image/public/manifest.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "next-pwa", - "short_name": "next-pwa", - "display": "standalone", - "orientation": "portrait", - "theme_color": "#FFFFFF", - "background_color": "#FFFFFF", - "start_url": "/", - "icons": [ - { - "src": "/icons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "/icons/icon-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ] -} diff --git a/examples/offline-fallback-v2/.eslintrc.json b/examples/offline-fallback-v2/.eslintrc.json deleted file mode 100644 index bffb357a..00000000 --- a/examples/offline-fallback-v2/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "next/core-web-vitals" -} diff --git a/examples/offline-fallback-v2/README.md b/examples/offline-fallback-v2/README.md deleted file mode 100644 index 2926d8e5..00000000 --- a/examples/offline-fallback-v2/README.md +++ /dev/null @@ -1,45 +0,0 @@ -# next-pwa - offline fallback example - -[TOC] - -This example demonstrates how to use `next-pwa` to implement fallback routes for page, image or font when fetch error. Fetch error usually happens when **offline**. (Note fetch is successful even when server returns error codes `404, 400, 500, ...`) - -Simply add a `/_offline` page such as `pages/_offline.js` or `pages/_offline.jsx` or `pages/_offline.tsx`. Then you are all set! No configuration needed for this. - -You can configure fallback routes for other type of resources - -``` -pwa: { - // ... - fallbacks: { - image: '/static/images/fallback.png', - // document: '/other-offline', // if you want to fallback to a custom page other than /_offline - // font: '/static/font/fallback.woff2', - // audio: ..., - // video: ..., - }, - // ... -} -``` - -## Usage - -[![Open in Gitpod](https://img.shields.io/badge/Open%20In-Gitpod.io-%231966D2?style=for-the-badge&logo=gitpod)](https://gitpod.io/#https://github.com/shadowwalker/next-pwa/) - -``` bash -cd examples/offline-fallback-v2 -yarn install -yarn build -yarn start -``` - -## Recommend `.gitignore` - -``` -**/public/workbox-*.js -**/public/sw.js -**/public/fallback-*.js -``` - - - diff --git a/examples/offline-fallback-v2/next.config.js b/examples/offline-fallback-v2/next.config.js deleted file mode 100644 index 8c726ade..00000000 --- a/examples/offline-fallback-v2/next.config.js +++ /dev/null @@ -1,16 +0,0 @@ -const withPWA = require('next-pwa')({ - dest: 'public', - fallbacks: { - image: '/static/images/fallback.png' - // document: '/other-offline', // if you want to fallback to a custom page other than /_offline - // font: '/static/font/fallback.woff2', - // audio: ..., - // video: ..., - } -}) - -module.exports = withPWA({ - images: { - domains: ['source.unsplash.com'] - } -}) diff --git a/examples/offline-fallback-v2/package.json b/examples/offline-fallback-v2/package.json deleted file mode 100644 index 85cbce96..00000000 --- a/examples/offline-fallback-v2/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "next-pwa-example", - "version": "1.0.0", - "main": "index.js", - "license": "MIT", - "private": true, - "scripts": { - "dev": "next", - "build": "next build", - "start": "next start" - }, - "dependencies": { - "next": "^12.2.5", - "next-pwa": "latest", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sharp": "^0.30.7" - }, - "devDependencies": { - "eslint": "^8.22.0", - "eslint-config-next": "12.2.5" - } -} diff --git a/examples/offline-fallback-v2/pages/_document.js b/examples/offline-fallback-v2/pages/_document.js deleted file mode 100644 index 5b3d1c9f..00000000 --- a/examples/offline-fallback-v2/pages/_document.js +++ /dev/null @@ -1,50 +0,0 @@ -import Document, { Html, Head, Main, NextScript } from 'next/document' - -const APP_NAME = 'next-pwa example' -const APP_DESCRIPTION = 'This is an example of using next-pwa plugin' - -class _Document extends Document { - static async getInitialProps(ctx) { - return await Document.getInitialProps(ctx) - } - - render() { - return ( - - - - - - - - - - - {/* TIP: set viewport head meta tag in _app.js, otherwise it will show a warning */} - {/* */} - - - - - - - -

- - - - ) - } -} - -export default _Document diff --git a/examples/offline-fallback-v2/pages/_offline.js b/examples/offline-fallback-v2/pages/_offline.js deleted file mode 100644 index ff2a0c44..00000000 --- a/examples/offline-fallback-v2/pages/_offline.js +++ /dev/null @@ -1,13 +0,0 @@ -import Head from 'next/head' - -const Fallback = () => ( - <> - - next-pwa example - -

This is offline fallback page

-

When offline, any page route will fallback to this page

- -) - -export default Fallback diff --git a/examples/offline-fallback-v2/pages/index.js b/examples/offline-fallback-v2/pages/index.js deleted file mode 100644 index 2e472bb6..00000000 --- a/examples/offline-fallback-v2/pages/index.js +++ /dev/null @@ -1,16 +0,0 @@ -import Head from 'next/head' -import Image from 'next/image' - -const Index = () => ( - <> - - next-pwa example - -

Next.js + PWA = AWESOME!

-

Routes not cached will fallback to /_offline page

-

Following image will fallback to placeholder when offline

- random cat - -) - -export default Index diff --git a/examples/offline-fallback-v2/public/favicon.ico b/examples/offline-fallback-v2/public/favicon.ico deleted file mode 100644 index e69327b54edb5d248e99df79c6dbeb77be3d2958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmeHOYiu0V6~5!O*MY>vKujF+*yWMn5D=-6`lCNckmw(zKAp4okN5Cv=CUgjWqViaV@GPDr*=ALk1Tr)C9r0t(z)~z#lNyk`}ny* zeWG^+*h1QHQ%LEm4au!iNNy_=gnOlH8QwLAP$mfcpg=Hl*;?KXwF%h_sz=xR<+k$O zvbWNm9hLoC^_BW^rStMFa{ER7z&EM*stxVTpA7IafXUECUNpeZ0A5gSf|eO--+KOz z$^d`%vZzn(P@7t)#ZY>#Hsn?om)jg4pdY`Gz2$Qn5B1oFa>ZA*SN2w%MLWQGqY*u| z+t5e791q9!X&2`W*&2{{f^biG@J?VS{GeRQe%fh7-`i`b$8Iv9lLlm_pdSaof7X3a zeBZkp_0B@}M&zx#A)CXHQQs7HE>|I2A!m|xDkX3y%jH;>#&)#Lh`e*ZA$L@neYnqF zTc%1t7gj<4pfe65a$-wDmZmOP;mY?j!7K9b2NL7p_z+mGoSvEp2$Ry#kJj={JTN-;bU7 z<5D~P6wgphKz^0?p{V1K;^RB77*>v4y2=he#T^vSkp1CvxY+n%M+ggSXb}F`WsARk zk(**Mif1ky{Iz8Nf#31%$G^b!N6g=4p_wso0c}pw&ZW-Z8qD8n+xdGT+fVJxA8hR> z{MLo*zb5Sc*Fwj?(Di4b&)<^&&8MA({p9gO$^WM1LX!R^pR%@U%ania@!LX=pD$$l znalcRq5CiB`NCemr{zzM6n_nm91ht~ZTQe}E$CTdxBiNrK7jnyHOODp^4yWgd0N?q z0z5-5G^=LDIqWoKVWzH0%CR zq8#>=s6N>RLD*+X%aNI}0>x@f2j5fRe<${@=7c@9FW3iJO>-J{she`s(2)^Pj{A4C zch}7K^e8Vzxg}0KN0!*TLtE6QHvHmg@bH1(L+InI^gR`Cru*orT~5lcCw!cXVhxIy zAge6mh_2KO z{>16}G-EnlH%?t6^uLR-Z_9Oh|IB_v1Y8bDxdan(%2BR#PRkA21WKOM!db4;Z}t*E ztS-d{o|M$?T1o99s*xgZ+%DfA1Cs}5D;k08 zSE#cdzOXD8Jc@snQ|`EU2V%3J+PfC(n*HW%4pklPnMf|x{!9KXZRh8hz*%$SwJueP6Gor<{f2E>@lGoH6V40uo*`TI1P&!Nwj>p?&EeP6pEwGArn5l#;yJAyYWuTef3e~p8~C+EbBy$SzW7ty(RY7&(2Bp>y;`EV zO><1>@-*z{EfYVVzu@sQ^l-);P`g(p_-~p={+kTgClBV>O#WRfBw^QXnLqxpTXGBd zdz~}*NB;F=iEOH{Yx$PFXphtE65 zUyVN&P{aGWb87jW_4tzNiuy9tDl6ed`c2As$2AVjX`AT->j~xAE8<@dJ-x zP>13z#C$k&UOtT2`ys^DIpwev-z8-ze?92~bh44+vW)8w_$>09mPxX=GcYY!EIK-fYSOwqy&wVVFeD0XE09Ntv!FGwRi`hQ7nBPyHp#IoWn#L)l5J zN4A>vg{=0WehzCilp)!`jy0I|qXYXJke7((iXUYsv2U|EU-i!y|M|*KjGuQlp+wXQCYLz{{hkr({ca+ diff --git a/examples/offline-fallback-v2/public/icons/android-chrome-192x192.png b/examples/offline-fallback-v2/public/icons/android-chrome-192x192.png deleted file mode 100644 index a78d2e98d2ea5ac252591c57407d7e3db0966f0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5629 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
Mq2Dh{rkQ`&%l=VwKPcWILbZ;n(+! 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

kyw!2WQ_VNtN7=}Pg8_k2NNPh!_ zgn`Ct$-acA{Kvr+p3`+x@5*}S-ev6iS@I??;L4SS50vZu?3LPamflVKDA${Qr?uua zw~$>IjvU*#a(BPFonWUlG_}O+1)cK|OSO}08@xbe-pQLp&pUZ#E6Iz`GF#Hmwr>>9 zR}$}RRCSN@fnVACg!yb!s82O9rz)q72B>OhB-~PB2E)0es z$9?VlK)F-4zI|kFu8`gmUeV|mdMOyBwUYU`71xKOFzmZ6`OsTnUtRD)fhalgqEFF< z>a$ugFY~i6a%4k!^WL*Hcf-mBgMPGnOAoEBW+-`Pjfo;+NSQP20&S#>e*hP@ZkTt@ zc-o0y8;=3(8Na2CD7m+dCawq*qcc?mz||7^dvgunT@qqtvFSFiNgQjV_3yq0|Ix!A zHNbO3pbf^iIb*AK{eJ9F2WmP+tG�P)Sc{gw1CXPTo}G^OTr>@g0vzALOxl&o!SG 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 GpZ_mIwxnbL diff --git a/examples/offline-fallback-v2/public/manifest.json b/examples/offline-fallback-v2/public/manifest.json deleted file mode 100644 index 81851325..00000000 --- a/examples/offline-fallback-v2/public/manifest.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "next-pwa", - "short_name": "next-pwa", - "display": "standalone", - "orientation": "portrait", - "theme_color": "#FFFFFF", - "background_color": "#FFFFFF", - "start_url": "/", - "icons": [ - { - "src": "/icons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "/icons/icon-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ] -} diff --git a/examples/offline-fallback-v2/public/static/images/fallback.png b/examples/offline-fallback-v2/public/static/images/fallback.png deleted file mode 100644 index c59cf14fee7ab07f6db56e874efce375233d2b74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2335 zcmb_eiC5Cu7iXsW9hbp=Wr<5_n^uZindNB6q`9PtmWr4teYLbS7bKT(p)_c$+{VO8 ziOO79M9MJ~7mgaa;F1fjkmcZtXqvd2Kl=R*bI-ZUx$nGt-}&5o-?^#o2uHArwh9OY z0$*@Ce;EY&6$JwQlDU1G!gE(=8$+RV+%J0CEA-aZmcG6|27`ga;Ugm>R4SD~AnbnX3cU8Krx|rz|}KfFclxlUn_5A>3-(k+o;0159AGng+_Hj z#i>f6g+@%4Q3e}X((v$I?k=EILbS-HXaJ>Oh!*5wdz5h;AZx`ahwgwgWz9RKaW)h< zE$D2WWny*Uk-t`_%ErC5kO`KhKQs(}c<$}{%%4(+Ga(S%x-@sKAmp_QV}pfzl^1^^ z(bwxAh&LrYCC!-T+r}MQsAT=4o&hPx_?78c`fa6}}pH)EoCsJI7^39i3J#9+#x&L^?*#n3WS2$J_0*1;+8 zxpSM(Ukbqb&DTPw&w2$r3`7ZP*bmJPLXZI9-iZ4MBlj-G81< zY1PqdTWx2Zdse}oHT6;D8pz@(izIs{qg*!T{1I)k^%)^sN1}+Mkl0W#5KXD9$ z#vpMKl{OcMUZsb#vJ;0L~I@wQumCA8LL+!N%-;jg2QQhBZVB zzf2qpdu$VU8zt;2VX44kksqU?H?IZ{tQsy9M5Ol;*=VdV%fQo(@noTdUaC`xwp4dFari;rOrjf;ew$XT!{VRWk!i4w`$s^#7?zd)DhSisgsQ0NfH9^Ek$C)gBFtEz6nsr~2DPG;T zr>|~hz8TpMUTZ~Lx-`&Pd4@$}fL9VWR;$9wa3SyxDhbQ7leJ(%6lFfZwERwI5G|hi zMm-&m0jdloSDgthUP)f4bJ*E?0f&8Q6{2?}Hu}uTD`&we>kT?DNNI`WD}&F09sC@R z5X%n$~2cVqj0-{>o=~MVTHJe+JGIsK4EABE{cOS23Iknb6jEUE7Fq)xc zh$N9mE0;d)B}JF}J{THU;3`7d^LNrAx;8QGBhN@|5iGtg(&LJ*fwN{`d$@DpF*8XxGE zN~g-KgKBfTC^wZtnWs%nXBoiLqsvV>GV9c%WOxW5C-d0HF-HdH*47hlXg|@HlDv#N zYV7w-@BPou;z8v}$DXA&abK_o$b~bTG-=mzTgGPrwSwImj9z^)?z^ttwRE6r!>Z-M zxI+m8)B15vGS3M|RgAt~$xCT`WIO4TqUe~#{gg+GiH1pkUW9etkHZB?r>>2*-@Y%>0>TI{i_qDoW zwT)MJq4!Q>{FAEnspe`cSZ~>u7*rJEj&8Z$r^fKl-wjD2lHp{@r!7wA!k)AF-diSS zO~=uK^O+Qa0ytm3H zo#EU%st^9Cy5*N_h+VmxVen#jD_KW8wSQ^?fU?qCGb9Nugxr@7Hh2n}2Wdz@eU&Jo v{D99<2;9sq@cevzPXU3e^zSSL)FK|pEsds%d%7dwXT%Hki1RGltI7WZ#IAJ# diff --git a/examples/offline-fallback/.eslintrc.json b/examples/offline-fallback/.eslintrc.json deleted file mode 100644 index bffb357a..00000000 --- a/examples/offline-fallback/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "next/core-web-vitals" -} diff --git a/examples/offline-fallback/README.md b/examples/offline-fallback/README.md deleted file mode 100644 index 5f5e63c9..00000000 --- a/examples/offline-fallback/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# next-pwa - offline fallback example - -[TOC] - -> **Checkout this simple and easy way to implement offline fallbacks without inject manifest: ** -> -> **[offline-fallback-v2](https://github.com/shadowwalker/next-pwa/tree/master/examples/offline-fallback-v2)** - -This example demonstrates how to use `next-pwa` to implement fallback route, image or font when fetch error. Fetch error usually happens when **offline**. (Note fetch is successful even when server returns error codes `404, 400, 500, ...`) - -This example uses **Inject Manifest** module from `workbox`. The advantage of using this module is you get more control over your service worker. The disadvantage is that it's more complicated and needs to write more code. - -The idea of implementing comprehensive fallbacks can be found [here](https://developers.google.com/web/tools/workbox/guides/advanced-recipes#comprehensive_fallbacks). - -> In the future, using inject manifest may not be needed. When [this proposal](https://github.com/GoogleChrome/workbox/issues/2569) is completed in workbox v6. - -## Usage - -[![Open in Gitpod](https://img.shields.io/badge/Open%20In-Gitpod.io-%231966D2?style=for-the-badge&logo=gitpod)](https://gitpod.io/#https://github.com/shadowwalker/next-pwa/) - -``` bash -cd examples/offline-fallback -yarn install -yarn build -yarn start -``` - -## Recommend `.gitignore` - -``` -**/public/workbox-*.js -**/public/sw.js -``` - - - diff --git a/examples/offline-fallback/next.config.js b/examples/offline-fallback/next.config.js deleted file mode 100644 index 29e494f8..00000000 --- a/examples/offline-fallback/next.config.js +++ /dev/null @@ -1,10 +0,0 @@ -const withPWA = require('next-pwa')({ - dest: 'public', - swSrc: 'service-worker.js' -}) - -module.exports = withPWA({ - images: { - domains: ['source.unsplash.com'] - } -}) diff --git a/examples/offline-fallback/package.json b/examples/offline-fallback/package.json deleted file mode 100644 index 85cbce96..00000000 --- a/examples/offline-fallback/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "next-pwa-example", - "version": "1.0.0", - "main": "index.js", - "license": "MIT", - "private": true, - "scripts": { - "dev": "next", - "build": "next build", - "start": "next start" - }, - "dependencies": { - "next": "^12.2.5", - "next-pwa": "latest", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sharp": "^0.30.7" - }, - "devDependencies": { - "eslint": "^8.22.0", - "eslint-config-next": "12.2.5" - } -} diff --git a/examples/offline-fallback/pages/_document.js b/examples/offline-fallback/pages/_document.js deleted file mode 100644 index 5b3d1c9f..00000000 --- a/examples/offline-fallback/pages/_document.js +++ /dev/null @@ -1,50 +0,0 @@ -import Document, { Html, Head, Main, NextScript } from 'next/document' - -const APP_NAME = 'next-pwa example' -const APP_DESCRIPTION = 'This is an example of using next-pwa plugin' - -class _Document extends Document { - static async getInitialProps(ctx) { - return await Document.getInitialProps(ctx) - } - - render() { - return ( - - - - - - - - - - - {/* TIP: set viewport head meta tag in _app.js, otherwise it will show a warning */} - {/* */} - - - - - - - -

- - - - ) - } -} - -export default _Document diff --git a/examples/offline-fallback/pages/fallback.js b/examples/offline-fallback/pages/fallback.js deleted file mode 100644 index 73ec454d..00000000 --- a/examples/offline-fallback/pages/fallback.js +++ /dev/null @@ -1,13 +0,0 @@ -import Head from 'next/head' - -const Fallback = () => ( - <> - - next-pwa example - -

This is offline fallback page

-

When offline, any route will fallback to this page

- -) - -export default Fallback diff --git a/examples/offline-fallback/pages/index.js b/examples/offline-fallback/pages/index.js deleted file mode 100644 index 2e472bb6..00000000 --- a/examples/offline-fallback/pages/index.js +++ /dev/null @@ -1,16 +0,0 @@ -import Head from 'next/head' -import Image from 'next/image' - -const Index = () => ( - <> - - next-pwa example - -

Next.js + PWA = AWESOME!

-

Routes not cached will fallback to /_offline page

-

Following image will fallback to placeholder when offline

- random cat - -) - -export default Index diff --git a/examples/offline-fallback/public/favicon.ico b/examples/offline-fallback/public/favicon.ico deleted file mode 100644 index e69327b54edb5d248e99df79c6dbeb77be3d2958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmeHOYiu0V6~5!O*MY>vKujF+*yWMn5D=-6`lCNckmw(zKAp4okN5Cv=CUgjWqViaV@GPDr*=ALk1Tr)C9r0t(z)~z#lNyk`}ny* zeWG^+*h1QHQ%LEm4au!iNNy_=gnOlH8QwLAP$mfcpg=Hl*;?KXwF%h_sz=xR<+k$O zvbWNm9hLoC^_BW^rStMFa{ER7z&EM*stxVTpA7IafXUECUNpeZ0A5gSf|eO--+KOz z$^d`%vZzn(P@7t)#ZY>#Hsn?om)jg4pdY`Gz2$Qn5B1oFa>ZA*SN2w%MLWQGqY*u| z+t5e791q9!X&2`W*&2{{f^biG@J?VS{GeRQe%fh7-`i`b$8Iv9lLlm_pdSaof7X3a zeBZkp_0B@}M&zx#A)CXHQQs7HE>|I2A!m|xDkX3y%jH;>#&)#Lh`e*ZA$L@neYnqF zTc%1t7gj<4pfe65a$-wDmZmOP;mY?j!7K9b2NL7p_z+mGoSvEp2$Ry#kJj={JTN-;bU7 z<5D~P6wgphKz^0?p{V1K;^RB77*>v4y2=he#T^vSkp1CvxY+n%M+ggSXb}F`WsARk zk(**Mif1ky{Iz8Nf#31%$G^b!N6g=4p_wso0c}pw&ZW-Z8qD8n+xdGT+fVJxA8hR> z{MLo*zb5Sc*Fwj?(Di4b&)<^&&8MA({p9gO$^WM1LX!R^pR%@U%ania@!LX=pD$$l znalcRq5CiB`NCemr{zzM6n_nm91ht~ZTQe}E$CTdxBiNrK7jnyHOODp^4yWgd0N?q z0z5-5G^=LDIqWoKVWzH0%CR zq8#>=s6N>RLD*+X%aNI}0>x@f2j5fRe<${@=7c@9FW3iJO>-J{she`s(2)^Pj{A4C zch}7K^e8Vzxg}0KN0!*TLtE6QHvHmg@bH1(L+InI^gR`Cru*orT~5lcCw!cXVhxIy zAge6mh_2KO z{>16}G-EnlH%?t6^uLR-Z_9Oh|IB_v1Y8bDxdan(%2BR#PRkA21WKOM!db4;Z}t*E ztS-d{o|M$?T1o99s*xgZ+%DfA1Cs}5D;k08 zSE#cdzOXD8Jc@snQ|`EU2V%3J+PfC(n*HW%4pklPnMf|x{!9KXZRh8hz*%$SwJueP6Gor<{f2E>@lGoH6V40uo*`TI1P&!Nwj>p?&EeP6pEwGArn5l#;yJAyYWuTef3e~p8~C+EbBy$SzW7ty(RY7&(2Bp>y;`EV zO><1>@-*z{EfYVVzu@sQ^l-);P`g(p_-~p={+kTgClBV>O#WRfBw^QXnLqxpTXGBd zdz~}*NB;F=iEOH{Yx$PFXphtE65 zUyVN&P{aGWb87jW_4tzNiuy9tDl6ed`c2As$2AVjX`AT->j~xAE8<@dJ-x zP>13z#C$k&UOtT2`ys^DIpwev-z8-ze?92~bh44+vW)8w_$>09mPxX=GcYY!EIK-fYSOwqy&wVVFeD0XE09Ntv!FGwRi`hQ7nBPyHp#IoWn#L)l5J zN4A>vg{=0WehzCilp)!`jy0I|qXYXJke7((iXUYsv2U|EU-i!y|M|*KjGuQlp+wXQCYLz{{hkr({ca+ diff --git a/examples/offline-fallback/public/icons/android-chrome-192x192.png b/examples/offline-fallback/public/icons/android-chrome-192x192.png deleted file mode 100644 index a78d2e98d2ea5ac252591c57407d7e3db0966f0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5629 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
Mq2Dh{rkQ`&%l=VwKPcWILbZ;n(+! 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

kyw!2WQ_VNtN7=}Pg8_k2NNPh!_ zgn`Ct$-acA{Kvr+p3`+x@5*}S-ev6iS@I??;L4SS50vZu?3LPamflVKDA${Qr?uua zw~$>IjvU*#a(BPFonWUlG_}O+1)cK|OSO}08@xbe-pQLp&pUZ#E6Iz`GF#Hmwr>>9 zR}$}RRCSN@fnVACg!yb!s82O9rz)q72B>OhB-~PB2E)0es z$9?VlK)F-4zI|kFu8`gmUeV|mdMOyBwUYU`71xKOFzmZ6`OsTnUtRD)fhalgqEFF< z>a$ugFY~i6a%4k!^WL*Hcf-mBgMPGnOAoEBW+-`Pjfo;+NSQP20&S#>e*hP@ZkTt@ zc-o0y8;=3(8Na2CD7m+dCawq*qcc?mz||7^dvgunT@qqtvFSFiNgQjV_3yq0|Ix!A zHNbO3pbf^iIb*AK{eJ9F2WmP+tG�P)Sc{gw1CXPTo}G^OTr>@g0vzALOxl&o!SG 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 GpZ_mIwxnbL diff --git a/examples/offline-fallback/public/manifest.json b/examples/offline-fallback/public/manifest.json deleted file mode 100644 index 81851325..00000000 --- a/examples/offline-fallback/public/manifest.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "next-pwa", - "short_name": "next-pwa", - "display": "standalone", - "orientation": "portrait", - "theme_color": "#FFFFFF", - "background_color": "#FFFFFF", - "start_url": "/", - "icons": [ - { - "src": "/icons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "/icons/icon-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ] -} diff --git a/examples/offline-fallback/public/static/images/fallback.png b/examples/offline-fallback/public/static/images/fallback.png deleted file mode 100644 index c59cf14fee7ab07f6db56e874efce375233d2b74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2335 zcmb_eiC5Cu7iXsW9hbp=Wr<5_n^uZindNB6q`9PtmWr4teYLbS7bKT(p)_c$+{VO8 ziOO79M9MJ~7mgaa;F1fjkmcZtXqvd2Kl=R*bI-ZUx$nGt-}&5o-?^#o2uHArwh9OY z0$*@Ce;EY&6$JwQlDU1G!gE(=8$+RV+%J0CEA-aZmcG6|27`ga;Ugm>R4SD~AnbnX3cU8Krx|rz|}KfFclxlUn_5A>3-(k+o;0159AGng+_Hj z#i>f6g+@%4Q3e}X((v$I?k=EILbS-HXaJ>Oh!*5wdz5h;AZx`ahwgwgWz9RKaW)h< zE$D2WWny*Uk-t`_%ErC5kO`KhKQs(}c<$}{%%4(+Ga(S%x-@sKAmp_QV}pfzl^1^^ z(bwxAh&LrYCC!-T+r}MQsAT=4o&hPx_?78c`fa6}}pH)EoCsJI7^39i3J#9+#x&L^?*#n3WS2$J_0*1;+8 zxpSM(Ukbqb&DTPw&w2$r3`7ZP*bmJPLXZI9-iZ4MBlj-G81< zY1PqdTWx2Zdse}oHT6;D8pz@(izIs{qg*!T{1I)k^%)^sN1}+Mkl0W#5KXD9$ z#vpMKl{OcMUZsb#vJ;0L~I@wQumCA8LL+!N%-;jg2QQhBZVB zzf2qpdu$VU8zt;2VX44kksqU?H?IZ{tQsy9M5Ol;*=VdV%fQo(@noTdUaC`xwp4dFari;rOrjf;ew$XT!{VRWk!i4w`$s^#7?zd)DhSisgsQ0NfH9^Ek$C)gBFtEz6nsr~2DPG;T zr>|~hz8TpMUTZ~Lx-`&Pd4@$}fL9VWR;$9wa3SyxDhbQ7leJ(%6lFfZwERwI5G|hi zMm-&m0jdloSDgthUP)f4bJ*E?0f&8Q6{2?}Hu}uTD`&we>kT?DNNI`WD}&F09sC@R z5X%n$~2cVqj0-{>o=~MVTHJe+JGIsK4EABE{cOS23Iknb6jEUE7Fq)xc zh$N9mE0;d)B}JF}J{THU;3`7d^LNrAx;8QGBhN@|5iGtg(&LJ*fwN{`d$@DpF*8XxGE zN~g-KgKBfTC^wZtnWs%nXBoiLqsvV>GV9c%WOxW5C-d0HF-HdH*47hlXg|@HlDv#N zYV7w-@BPou;z8v}$DXA&abK_o$b~bTG-=mzTgGPrwSwImj9z^)?z^ttwRE6r!>Z-M zxI+m8)B15vGS3M|RgAt~$xCT`WIO4TqUe~#{gg+GiH1pkUW9etkHZB?r>>2*-@Y%>0>TI{i_qDoW zwT)MJq4!Q>{FAEnspe`cSZ~>u7*rJEj&8Z$r^fKl-wjD2lHp{@r!7wA!k)AF-diSS zO~=uK^O+Qa0ytm3H zo#EU%st^9Cy5*N_h+VmxVen#jD_KW8wSQ^?fU?qCGb9Nugxr@7Hh2n}2Wdz@eU&Jo v{D99<2;9sq@cevzPXU3e^zSSL)FK|pEsds%d%7dwXT%Hki1RGltI7WZ#IAJ# diff --git a/examples/offline-fallback/service-worker.js b/examples/offline-fallback/service-worker.js deleted file mode 100644 index 3f496a56..00000000 --- a/examples/offline-fallback/service-worker.js +++ /dev/null @@ -1,136 +0,0 @@ -import { skipWaiting, clientsClaim } from 'workbox-core' -import { ExpirationPlugin } from 'workbox-expiration' -import { NetworkOnly, NetworkFirst, CacheFirst, StaleWhileRevalidate } from 'workbox-strategies' -import { registerRoute, setDefaultHandler, setCatchHandler } from 'workbox-routing' -import { matchPrecache, precacheAndRoute, cleanupOutdatedCaches } from 'workbox-precaching' - -skipWaiting() -clientsClaim() - -// must include following lines when using inject manifest module from workbox -// https://developers.google.com/web/tools/workbox/guides/precache-files/workbox-build#add_an_injection_point -const WB_MANIFEST = self.__WB_MANIFEST -// Precache fallback route and image -WB_MANIFEST.push( - { - url: '/fallback', - revision: '1234567890' - } -) -precacheAndRoute(WB_MANIFEST) - -cleanupOutdatedCaches() -registerRoute( - '/', - new NetworkFirst({ - cacheName: 'start-url', - plugins: [new ExpirationPlugin({ maxEntries: 1, maxAgeSeconds: 86400, purgeOnQuotaError: !0 })] - }), - 'GET' -) -registerRoute( - /^https:\/\/fonts\.(?:googleapis|gstatic)\.com\/.*/i, - new CacheFirst({ - cacheName: 'google-fonts', - plugins: [new ExpirationPlugin({ maxEntries: 4, maxAgeSeconds: 31536e3, purgeOnQuotaError: !0 })] - }), - 'GET' -) -registerRoute( - /\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i, - new StaleWhileRevalidate({ - cacheName: 'static-font-assets', - plugins: [new ExpirationPlugin({ maxEntries: 4, maxAgeSeconds: 604800, purgeOnQuotaError: !0 })] - }), - 'GET' -) -// disable image cache, so we could observe the placeholder image when offline -registerRoute( - /\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i, - new NetworkOnly({ - cacheName: 'static-image-assets', - plugins: [new ExpirationPlugin({ maxEntries: 64, maxAgeSeconds: 86400, purgeOnQuotaError: !0 })] - }), - 'GET' -) -registerRoute( - /\.(?:js)$/i, - new StaleWhileRevalidate({ - cacheName: 'static-js-assets', - plugins: [new ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400, purgeOnQuotaError: !0 })] - }), - 'GET' -) -registerRoute( - /\.(?:css|less)$/i, - new StaleWhileRevalidate({ - cacheName: 'static-style-assets', - plugins: [new ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400, purgeOnQuotaError: !0 })] - }), - 'GET' -) -registerRoute( - /\.(?:json|xml|csv)$/i, - new NetworkFirst({ - cacheName: 'static-data-assets', - plugins: [new ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400, purgeOnQuotaError: !0 })] - }), - 'GET' -) -registerRoute( - /\/api\/.*$/i, - new NetworkFirst({ - cacheName: 'apis', - networkTimeoutSeconds: 10, - plugins: [new ExpirationPlugin({ maxEntries: 16, maxAgeSeconds: 86400, purgeOnQuotaError: !0 })] - }), - 'GET' -) -registerRoute( - /.*/i, - new NetworkFirst({ - cacheName: 'others', - networkTimeoutSeconds: 10, - plugins: [new ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400, purgeOnQuotaError: !0 })] - }), - 'GET' -) - -// following lines gives you control of the offline fallback strategies -// https://developers.google.com/web/tools/workbox/guides/advanced-recipes#comprehensive_fallbacks - -// Use a stale-while-revalidate strategy for all other requests. -setDefaultHandler(new StaleWhileRevalidate()) - -// This "catch" handler is triggered when any of the other routes fail to -// generate a response. -setCatchHandler(({ event }) => { - // The FALLBACK_URL entries must be added to the cache ahead of time, either - // via runtime or precaching. If they are precached, then call - // `matchPrecache(FALLBACK_URL)` (from the `workbox-precaching` package) - // to get the response from the correct cache. - // - // Use event, request, and url to figure out how to respond. - // One approach would be to use request.destination, see - // https://medium.com/dev-channel/service-worker-caching-strategies-based-on-request-types-57411dd7652c - switch (event.request.destination) { - case 'document': - // If using precached URLs: - return matchPrecache('/fallback'); - // return caches.match('/fallback') - break - case 'image': - // If using precached URLs: - return matchPrecache('/static/images/fallback.png'); - // return caches.match('/static/images/fallback.png') - break - case 'font': - // If using precached URLs: - // return matchPrecache(FALLBACK_FONT_URL); - //return caches.match('/static/fonts/fallback.otf') - //break - default: - // If we don't have a fallback, just return an error response. - return Response.error() - } -}) diff --git a/examples/web-push/.eslintrc.json b/examples/web-push/.eslintrc.json deleted file mode 100644 index bffb357a..00000000 --- a/examples/web-push/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "next/core-web-vitals" -} diff --git a/examples/web-push/README.md b/examples/web-push/README.md deleted file mode 100644 index c6cacc35..00000000 --- a/examples/web-push/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# next-pwa - web push example - -[TOC] - -This example demonstrates how to use `next-pwa` plugin to implement web push with custom worker. - -**NOTE** - -In real world, you may want to send the subscription data to your server once user agree to subscribe web push. Store the data associate with the user. So that you can initiate a web push notification from your server to the specific users. - -## Usage - -[![Open in Gitpod](https://img.shields.io/badge/Open%20In-Gitpod.io-%231966D2?style=for-the-badge&logo=gitpod)](https://gitpod.io/#https://github.com/shadowwalker/next-pwa/) - -``` bash -cd examples/web-push -yarn install -yarn vapid -``` - -Create a `.env` file, and put the public key generated from the previous steps - -``` -WEB_PUSH_EMAIL=user@example.com -WEB_PUSH_PRIVATE_KEY= -NEXT_PUBLIC_WEB_PUSH_PUBLIC_KEY= -``` - -Build and start - -``` bash -yarn build -yarn start -``` -## Recommend `.gitignore` - -``` -**/public/workbox-*.js -**/public/sw.js -**/public/worker-*.js -``` - - - diff --git a/examples/web-push/next.config.js b/examples/web-push/next.config.js deleted file mode 100644 index 5d6a902e..00000000 --- a/examples/web-push/next.config.js +++ /dev/null @@ -1,5 +0,0 @@ -const withPWA = require('next-pwa')({ - dest: 'public' -}) - -module.exports = withPWA() diff --git a/examples/web-push/package.json b/examples/web-push/package.json deleted file mode 100644 index b98469ba..00000000 --- a/examples/web-push/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "next-pwa-example", - "version": "1.0.0", - "main": "index.js", - "license": "MIT", - "private": true, - "scripts": { - "dev": "next", - "build": "next build", - "start": "next start", - "vapid": "web-push generate-vapid-keys" - }, - "dependencies": { - "next": "^12.2.5", - "next-pwa": "latest", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "web-push": "^3.5.0" - }, - "devDependencies": { - "eslint": "^8.22.0", - "eslint-config-next": "12.2.5" - } -} diff --git a/examples/web-push/pages/_document.js b/examples/web-push/pages/_document.js deleted file mode 100644 index 5b3d1c9f..00000000 --- a/examples/web-push/pages/_document.js +++ /dev/null @@ -1,50 +0,0 @@ -import Document, { Html, Head, Main, NextScript } from 'next/document' - -const APP_NAME = 'next-pwa example' -const APP_DESCRIPTION = 'This is an example of using next-pwa plugin' - -class _Document extends Document { - static async getInitialProps(ctx) { - return await Document.getInitialProps(ctx) - } - - render() { - return ( - - - - - - - - - - - {/* TIP: set viewport head meta tag in _app.js, otherwise it will show a warning */} - {/* */} - - - - - - - -

- - - - ) - } -} - -export default _Document diff --git a/examples/web-push/pages/api/notification.js b/examples/web-push/pages/api/notification.js deleted file mode 100644 index c260a718..00000000 --- a/examples/web-push/pages/api/notification.js +++ /dev/null @@ -1,36 +0,0 @@ -const webPush = require('web-push') - -webPush.setVapidDetails( - `mailto:${process.env.WEB_PUSH_EMAIL}`, - process.env.NEXT_PUBLIC_WEB_PUSH_PUBLIC_KEY, - process.env.WEB_PUSH_PRIVATE_KEY -) - -const Notification = (req, res) => { - if (req.method == 'POST') { - const { subscription } = req.body - - webPush - .sendNotification( - subscription, - JSON.stringify({ title: 'Hello Web Push', message: 'Your web push notification is here!' }) - ) - .then(response => { - res.writeHead(response.statusCode, response.headers).end(response.body) - }) - .catch(err => { - if ('statusCode' in err) { - res.writeHead(err.statusCode, err.headers).end(err.body) - } else { - console.error(err) - res.statusCode = 500 - res.end() - } - }) - } else { - res.statusCode = 405 - res.end() - } -} - -export default Notification diff --git a/examples/web-push/pages/index.js b/examples/web-push/pages/index.js deleted file mode 100644 index 0dc8e3f9..00000000 --- a/examples/web-push/pages/index.js +++ /dev/null @@ -1,96 +0,0 @@ -import { useEffect, useState } from 'react' -import Head from 'next/head' - -const base64ToUint8Array = base64 => { - const padding = '='.repeat((4 - (base64.length % 4)) % 4) - const b64 = (base64 + padding).replace(/-/g, '+').replace(/_/g, '/') - - const rawData = window.atob(b64) - const outputArray = new Uint8Array(rawData.length) - - for (let i = 0; i < rawData.length; ++i) { - outputArray[i] = rawData.charCodeAt(i) - } - return outputArray -} - -const Index = () => { - const [isSubscribed, setIsSubscribed] = useState(false) - const [subscription, setSubscription] = useState(null) - const [registration, setRegistration] = useState(null) - - useEffect(() => { - if (typeof window !== 'undefined' && 'serviceWorker' in navigator && window.workbox !== undefined) { - // run only in browser - navigator.serviceWorker.ready.then(reg => { - reg.pushManager.getSubscription().then(sub => { - if (sub && !(sub.expirationTime && Date.now() > sub.expirationTime - 5 * 60 * 1000)) { - setSubscription(sub) - setIsSubscribed(true) - } - }) - setRegistration(reg) - }) - } - }, []) - - const subscribeButtonOnClick = async event => { - event.preventDefault() - const sub = await registration.pushManager.subscribe({ - userVisibleOnly: true, - applicationServerKey: base64ToUint8Array(process.env.NEXT_PUBLIC_WEB_PUSH_PUBLIC_KEY) - }) - // TODO: you should call your API to save subscription data on server in order to send web push notification from server - setSubscription(sub) - setIsSubscribed(true) - console.log('web push subscribed!') - console.log(sub) - } - - const unsubscribeButtonOnClick = async event => { - event.preventDefault() - await subscription.unsubscribe() - // TODO: you should call your API to delete or invalidate subscription data on server - setSubscription(null) - setIsSubscribed(false) - console.log('web push unsubscribed!') - } - - const sendNotificationButtonOnClick = async event => { - event.preventDefault() - if (subscription == null) { - console.error('web push not subscribed') - return - } - - await fetch('/api/notification', { - method: 'POST', - headers: { - 'Content-type': 'application/json' - }, - body: JSON.stringify({ - subscription - }) - }) - } - - return ( - <> - - next-pwa example - -

Next.js + PWA = AWESOME!

- - - - - ) -} - -export default Index diff --git a/examples/web-push/public/favicon.ico b/examples/web-push/public/favicon.ico deleted file mode 100644 index e69327b54edb5d248e99df79c6dbeb77be3d2958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmeHOYiu0V6~5!O*MY>vKujF+*yWMn5D=-6`lCNckmw(zKAp4okN5Cv=CUgjWqViaV@GPDr*=ALk1Tr)C9r0t(z)~z#lNyk`}ny* zeWG^+*h1QHQ%LEm4au!iNNy_=gnOlH8QwLAP$mfcpg=Hl*;?KXwF%h_sz=xR<+k$O zvbWNm9hLoC^_BW^rStMFa{ER7z&EM*stxVTpA7IafXUECUNpeZ0A5gSf|eO--+KOz z$^d`%vZzn(P@7t)#ZY>#Hsn?om)jg4pdY`Gz2$Qn5B1oFa>ZA*SN2w%MLWQGqY*u| z+t5e791q9!X&2`W*&2{{f^biG@J?VS{GeRQe%fh7-`i`b$8Iv9lLlm_pdSaof7X3a zeBZkp_0B@}M&zx#A)CXHQQs7HE>|I2A!m|xDkX3y%jH;>#&)#Lh`e*ZA$L@neYnqF zTc%1t7gj<4pfe65a$-wDmZmOP;mY?j!7K9b2NL7p_z+mGoSvEp2$Ry#kJj={JTN-;bU7 z<5D~P6wgphKz^0?p{V1K;^RB77*>v4y2=he#T^vSkp1CvxY+n%M+ggSXb}F`WsARk zk(**Mif1ky{Iz8Nf#31%$G^b!N6g=4p_wso0c}pw&ZW-Z8qD8n+xdGT+fVJxA8hR> z{MLo*zb5Sc*Fwj?(Di4b&)<^&&8MA({p9gO$^WM1LX!R^pR%@U%ania@!LX=pD$$l znalcRq5CiB`NCemr{zzM6n_nm91ht~ZTQe}E$CTdxBiNrK7jnyHOODp^4yWgd0N?q z0z5-5G^=LDIqWoKVWzH0%CR zq8#>=s6N>RLD*+X%aNI}0>x@f2j5fRe<${@=7c@9FW3iJO>-J{she`s(2)^Pj{A4C zch}7K^e8Vzxg}0KN0!*TLtE6QHvHmg@bH1(L+InI^gR`Cru*orT~5lcCw!cXVhxIy zAge6mh_2KO z{>16}G-EnlH%?t6^uLR-Z_9Oh|IB_v1Y8bDxdan(%2BR#PRkA21WKOM!db4;Z}t*E ztS-d{o|M$?T1o99s*xgZ+%DfA1Cs}5D;k08 zSE#cdzOXD8Jc@snQ|`EU2V%3J+PfC(n*HW%4pklPnMf|x{!9KXZRh8hz*%$SwJueP6Gor<{f2E>@lGoH6V40uo*`TI1P&!Nwj>p?&EeP6pEwGArn5l#;yJAyYWuTef3e~p8~C+EbBy$SzW7ty(RY7&(2Bp>y;`EV zO><1>@-*z{EfYVVzu@sQ^l-);P`g(p_-~p={+kTgClBV>O#WRfBw^QXnLqxpTXGBd zdz~}*NB;F=iEOH{Yx$PFXphtE65 zUyVN&P{aGWb87jW_4tzNiuy9tDl6ed`c2As$2AVjX`AT->j~xAE8<@dJ-x zP>13z#C$k&UOtT2`ys^DIpwev-z8-ze?92~bh44+vW)8w_$>09mPxX=GcYY!EIK-fYSOwqy&wVVFeD0XE09Ntv!FGwRi`hQ7nBPyHp#IoWn#L)l5J zN4A>vg{=0WehzCilp)!`jy0I|qXYXJke7((iXUYsv2U|EU-i!y|M|*KjGuQlp+wXQCYLz{{hkr({ca+ diff --git a/examples/web-push/public/icons/android-chrome-192x192.png b/examples/web-push/public/icons/android-chrome-192x192.png deleted file mode 100644 index a78d2e98d2ea5ac252591c57407d7e3db0966f0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5629 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
Mq2Dh{rkQ`&%l=VwKPcWILbZ;n(+! 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

kyw!2WQ_VNtN7=}Pg8_k2NNPh!_ zgn`Ct$-acA{Kvr+p3`+x@5*}S-ev6iS@I??;L4SS50vZu?3LPamflVKDA${Qr?uua zw~$>IjvU*#a(BPFonWUlG_}O+1)cK|OSO}08@xbe-pQLp&pUZ#E6Iz`GF#Hmwr>>9 zR}$}RRCSN@fnVACg!yb!s82O9rz)q72B>OhB-~PB2E)0es z$9?VlK)F-4zI|kFu8`gmUeV|mdMOyBwUYU`71xKOFzmZ6`OsTnUtRD)fhalgqEFF< z>a$ugFY~i6a%4k!^WL*Hcf-mBgMPGnOAoEBW+-`Pjfo;+NSQP20&S#>e*hP@ZkTt@ zc-o0y8;=3(8Na2CD7m+dCawq*qcc?mz||7^dvgunT@qqtvFSFiNgQjV_3yq0|Ix!A zHNbO3pbf^iIb*AK{eJ9F2WmP+tG�P)Sc{gw1CXPTo}G^OTr>@g0vzALOxl&o!SG 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 GpZ_mIwxnbL diff --git a/examples/web-push/public/manifest.json b/examples/web-push/public/manifest.json deleted file mode 100644 index 81851325..00000000 --- a/examples/web-push/public/manifest.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "next-pwa", - "short_name": "next-pwa", - "display": "standalone", - "orientation": "portrait", - "theme_color": "#FFFFFF", - "background_color": "#FFFFFF", - "start_url": "/", - "icons": [ - { - "src": "/icons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "/icons/icon-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ] -} diff --git a/examples/web-push/worker/index.js b/examples/web-push/worker/index.js deleted file mode 100644 index 2f8fe00f..00000000 --- a/examples/web-push/worker/index.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict' - -self.addEventListener('push', function (event) { - const data = JSON.parse(event.data.text()) - event.waitUntil( - registration.showNotification(data.title, { - body: data.message, - icon: '/icons/android-chrome-192x192.png' - }) - ) -}) - -self.addEventListener('notificationclick', function (event) { - event.notification.close() - event.waitUntil( - clients.matchAll({ type: 'window', includeUncontrolled: true }).then(function (clientList) { - if (clientList.length > 0) { - let client = clientList[0] - for (let i = 0; i < clientList.length; i++) { - if (clientList[i].focused) { - client = clientList[i] - } - } - return client.focus() - } - return clients.openWindow('/') - }) - ) -}) - -// self.addEventListener('pushsubscriptionchange', function(event) { -// event.waitUntil( -// Promise.all([ -// Promise.resolve(event.oldSubscription ? deleteSubscription(event.oldSubscription) : true), -// Promise.resolve(event.newSubscription ? event.newSubscription : subscribePush(registration)) -// .then(function(sub) { return saveSubscription(sub) }) -// ]) -// ) -// }) diff --git a/fallback.js b/fallback.js index 19eddba2..b182099c 100644 --- a/fallback.js +++ b/fallback.js @@ -1,3 +1,4 @@ +// fallback.js 'use strict' self.fallback = async request => { diff --git a/index.js b/index.js index 9c5a9f3b..0ec94cf7 100644 --- a/index.js +++ b/index.js @@ -1,14 +1,15 @@ +// index.js 'use strict' -const path = require('path') -const fs = require('fs') -const globby = require('globby') -const crypto = require('crypto') -const { CleanWebpackPlugin } = require('clean-webpack-plugin') -const WorkboxPlugin = require('workbox-webpack-plugin') -const defaultCache = require('./cache') -const buildCustomWorker = require('./build-custom-worker') -const buildFallbackWorker = require('./build-fallback-worker') +import path from 'path' +import fs from 'fs' +import globby from 'globby' +import crypto from 'crypto' +import { CleanWebpackPlugin } from 'clean-webpack-plugin' +import WorkboxPlugin from 'workbox-webpack-plugin' +import defaultCache from './cache' +import buildCustomWorker from './build-custom-worker' +import buildFallbackWorker from './build-fallback-worker' const getRevision = file => crypto.createHash('md5').update(fs.readFileSync(file)).digest('hex') @@ -24,11 +25,8 @@ module.exports = config: { distDir = '.next', pageExtensions = ['tsx', 'ts', 'jsx', 'js', 'mdx'], experimental = {} } } = options - let basePath = options.config.basePath - if (!basePath) basePath = '/' + let basePath = options.config.basePath || '/' - // For workbox configurations: - // https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-webpack-plugin.GenerateSW const { disable = false, register = true, @@ -222,7 +220,7 @@ module.exports = if (dev && !asset.name.startsWith('static/runtime/')) { return true } - if (experimental.modern /* modern */) { + if (experimental.modern) { if (asset.name.endsWith('.module.js')) { return false } @@ -248,8 +246,8 @@ module.exports = if (key.startsWith(config.output.publicPath)) { key = m.url.substring(config.output.publicPath.length) } - const assset = compilation.assetsInfo.get(key) - m.revision = assset ? assset.contenthash || buildId : buildId + const asset = compilation.assetsInfo.get(key) + m.revision = asset ? asset.contenthash || buildId : buildId } m.url = m.url.replace(/\[/g, '%5B').replace(/\]/g, '%5D') return m @@ -339,4 +337,4 @@ module.exports = return config } - }) + }) \ No newline at end of file diff --git a/package.json b/package.json index 17bd51db..66a48bda 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "next-pwa-new", + "name": "next-pwa-new", "version": "6.0.0", "description": "Next.js with PWA, powered by workbox.", "main": "index.js", @@ -26,9 +26,14 @@ "webpack": "^5.98.0" }, "peerDependencies": { - "next": ">=9.0.0" + "next": ">=13.0.0" }, "resolutions": { "@typescript-eslint/eslint-plugin": "5.18.0" + }, + "pnpm": { + "ignoredBuiltDependencies": [ + "sharp" + ] } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9408bd33..8b36f690 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,7 +21,7 @@ importers: specifier: ^14.1.0 version: 14.1.0 next: - specifier: '>=9.0.0' + specifier: '>=13.0.0' version: 15.2.1(@babel/core@7.26.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) terser-webpack-plugin: specifier: ^5.3.14 diff --git a/register.js b/register.js index 128c2c14..a0f1f4d2 100644 --- a/register.js +++ b/register.js @@ -1,84 +1,119 @@ -import { Workbox } from 'workbox-window' +// register.js +import { Workbox } from 'workbox-window'; if (typeof window !== 'undefined' && 'serviceWorker' in navigator && typeof caches !== 'undefined') { + // 如果配置了起始 URL,确保其被缓存 if (__PWA_START_URL__) { - caches.has('start-url').then(function (has) { + caches.has('start-url').then((has) => { if (!has) { - caches.open('start-url').then(c => c.put(__PWA_START_URL__, new Response('', { status: 200 }))) + caches.open('start-url').then((cache) => { + cache.put(__PWA_START_URL__, new Response('', { status: 200 })); + }); } - }) + }); } - window.workbox = new Workbox(window.location.origin + __PWA_SW__, { scope: __PWA_SCOPE__ }) + // 创建 Workbox 实例 + const wb = new Workbox(window.location.origin + __PWA_SW__, { scope: __PWA_SCOPE__ }); - if (__PWA_START_URL__) { - window.workbox.addEventListener('installed', async ({ isUpdate }) => { - if (!isUpdate) { - const cache = await caches.open('start-url') - const response = await fetch(__PWA_START_URL__) - let _response = response - if (response.redirected) { - _response = new Response(response.body, { status: 200, statusText: 'OK', headers: response.headers }) - } + // 监听 installed 事件 + wb.addEventListener('installed', (event) => { + if (!event.isUpdate) { + // 如果是首次安装,缓存起始 URL + caches.open('start-url').then((cache) => { + fetch(__PWA_START_URL__).then((response) => { + if (response.redirected) { + cache.put(__PWA_START_URL__, new Response(response.body, { status: 200, statusText: 'OK', headers: response.headers })); + } else { + cache.put(__PWA_START_URL__, response.clone()); + } + }); + }); - await cache.put(__PWA_START_URL__, _response) - } - }) - } + // 缓存 Next.js 数据 + const data = window.performance.getEntriesByType('resource') + .map((e) => e.name) + .filter((n) => n.startsWith(`${window.location.origin}/_next/data/`) && n.endsWith('.json')); + caches.open('next-data').then((cache) => { + data.forEach((url) => cache.add(url)); + }); + } + }); + + // 监听 waiting 事件 + wb.addEventListener('waiting', () => { + console.log('A new service worker is waiting to activate.'); + }); + + // 监听 activated 事件 + wb.addEventListener('activated', (event) => { + if (!event.isUpdate) { + // 如果是首次激活,执行额外的缓存逻辑 + caches.open('start-url').then((cache) => { + fetch(__PWA_START_URL__).then((response) => { + if (!response.redirected) { + cache.put(__PWA_START_URL__, response); + } + }); + }); + } + }); - window.workbox.addEventListener('installed', async () => { - const data = window.performance - .getEntriesByType('resource') - .map(e => e.name) - .filter(n => n.startsWith(`${window.location.origin}/_next/data/`) && n.endsWith('.json')) - const cache = await caches.open('next-data') - data.forEach(d => cache.add(d)) - }) + // 监听 message 事件 + wb.addEventListener('message', (event) => { + if (event.data.type === 'CACHE_UPDATED') { + const { updatedURL } = event.data.payload; + console.log(`A newer version of ${updatedURL} is available!`); + } + }); + // 如果启用了服务工作线程注册,执行注册 if (__PWA_ENABLE_REGISTER__) { - window.workbox.register() + wb.register(); } + // 如果启用了前端导航缓存或起始 URL 缓存,设置相关逻辑 if (__PWA_CACHE_ON_FRONT_END_NAV__ || __PWA_START_URL__) { - const cacheOnFrontEndNav = function (url) { - if (!window.navigator.onLine) return + const cacheOnFrontEndNav = (url) => { + if (!window.navigator.onLine) return; if (__PWA_CACHE_ON_FRONT_END_NAV__ && url !== __PWA_START_URL__) { - return caches.open('others').then(cache => - cache.match(url, { ignoreSearch: true }).then(res => { - if (!res) return cache.add(url) - return Promise.resolve() - }) - ) + caches.open('others').then((cache) => { + cache.match(url, { ignoreSearch: true }).then((res) => { + if (!res) cache.add(url); + }); + }); } else if (__PWA_START_URL__ && url === __PWA_START_URL__) { - return fetch(__PWA_START_URL__).then(function (response) { + fetch(__PWA_START_URL__).then((response) => { if (!response.redirected) { - return caches.open('start-url').then(cache => cache.put(__PWA_START_URL__, response)) + caches.open('start-url').then((cache) => cache.put(__PWA_START_URL__, response)); } - return Promise.resolve() - }) + }); } - } + }; - const pushState = history.pushState + // 覆写 history.pushState 和 history.replaceState 方法 + const originalPushState = history.pushState; history.pushState = function () { - pushState.apply(history, arguments) - cacheOnFrontEndNav(arguments[2]) - } + originalPushState.apply(history, arguments); + cacheOnFrontEndNav(arguments[2]); + }; - const replaceState = history.replaceState + const originalReplaceState = history.replaceState; history.replaceState = function () { - replaceState.apply(history, arguments) - cacheOnFrontEndNav(arguments[2]) - } + originalReplaceState.apply(history, arguments); + cacheOnFrontEndNav(arguments[2]); + }; + // 监听 online 事件 window.addEventListener('online', () => { - cacheOnFrontEndNav(window.location.pathname) - }) + cacheOnFrontEndNav(window.location.pathname); + }); } + // 如果启用了在线时重新加载,设置相关逻辑 if (__PWA_RELOAD_ON_ONLINE__) { window.addEventListener('online', () => { - location.reload() - }) + location.reload(); + }); } -} +} \ No newline at end of file From fc769c3193197094a719f56c2416c2f3dbaa2be4 Mon Sep 17 00:00:00 2001 From: C-Jeril <34131400+C-Jeril@users.noreply.github.com> Date: Tue, 11 Mar 2025 10:56:01 +0800 Subject: [PATCH 5/8] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 66a48bda..69498917 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "next-pwa-new", - "version": "6.0.0", + "version": "6.0.1", "description": "Next.js with PWA, powered by workbox.", "main": "index.js", "repository": "https://github.com/C-Jeril/next-pwa", From b5cd02c508e7784df4dc2624a639904ae8df5782 Mon Sep 17 00:00:00 2001 From: C-Jeril <34131400+C-Jeril@users.noreply.github.com> Date: Tue, 11 Mar 2025 12:56:03 +0800 Subject: [PATCH 6/8] Update webpack-worker-config.js and Optimized --- README.md | 250 +- build-custom-worker.js | 161 +- build-fallback-worker.js | 206 +- cache.js | 29 +- fallback.js | 65 +- index.js | 640 +-- package-lock.json | 8546 -------------------------------------- package.json | 19 +- pnpm-lock.yaml | 56 +- register.js | 192 +- webpack-worker-config.js | 106 + 11 files changed, 1036 insertions(+), 9234 deletions(-) delete mode 100644 package-lock.json create mode 100644 webpack-worker-config.js diff --git a/README.md b/README.md index c51d8500..6d9c20ae 100644 --- a/README.md +++ b/README.md @@ -1,50 +1,97 @@ # Zero Config PWA Plugin for Next.js -This plugin simplifies adding PWA capabilities to your Next.js application using Workbox and other optimized tools. +This plugin simplifies adding Progressive Web App (PWA) capabilities to your Next.js application using Workbox and a host of optimized tools. It provides a zero-configuration approach to generating and registering service workers, complete with precaching, runtime caching, custom workers, and incremental manifest generation for improved build performance. -![size](https://img.shields.io/bundlephobia/minzip/next-pwa.svg) -![dependencies](https://img.shields.io/librariesio/release/npm/next-pwa) -![downloads](https://img.shields.io/npm/dw/next-pwa.svg) -![license](https://img.shields.io/npm/l/next-pwa.svg) +[![Minified Size](https://img.shields.io/bundlephobia/minzip/next-pwa.svg)](https://bundlephobia.com/result?p=next-pwa) +[![Dependencies](https://img.shields.io/librariesio/release/npm/next-pwa)](https://libraries.io/npm/next-pwa) +[![Downloads](https://img.shields.io/npm/dw/next-pwa.svg)](https://www.npmjs.com/package/next-pwa) +[![License](https://img.shields.io/npm/l/next-pwa.svg)](LICENSE) Share your PWA project [here](https://github.com/shadowwalker/next-pwa/discussions/206). +--- + ## Features -- Zero configuration for registering and generating service workers -- Optimized precaching and runtime caching -- Maximize Lighthouse score -- Comprehensive offline support with fallbacks -- Works with Workbox v6 -- Supports custom workers for additional functionality -- Debug service workers in development mode without caching -- Configurable using Workbox options +- **Zero Config:** Minimal setup required to enable PWA features in your Next.js project. +- **Automatic Service Worker Registration:** Automatically injects and registers service workers. +- **Pre-caching & Runtime Caching:** Optimized caching strategies powered by Workbox. +- **Incremental Manifest Generation:** Uses file caching to perform incremental builds, reducing build time in large projects. +- **Offline Support with Fallbacks:** Provides offline pages and fallback responses for various resource types. +- **Custom Worker Support:** Easily extend functionality with custom worker implementations. +- **Advanced Debugging Options:** Enable detailed logging and debug options during development. +- **Fully Configurable:** Customize caching strategies, manifest transformation, and many other settings via plugin options. + +--- ## Installation +Install the plugin via npm: + ```bash npm install next-pwa ``` +--- + ## Basic Usage ### Step 1: Configure `next.config.js` +Create or update your `next.config.js` to use the plugin. Here’s an example configuration with incremental manifest caching and debug support enabled: + ```javascript +// For CommonJS: const withPWA = require("next-pwa")({ dest: "public", + // Enable PWA features only in production (or set to false to always enable) + disable: process.env.NODE_ENV === "development", + register: true, + scope: "/", + sw: "sw.js", + // Use incremental manifest generation for improved build performance + enableIncrementalManifest: true, + // Cache file path for manifest incremental build (default is .next/manifest-cache.json) + manifestCacheFile: "./.next/manifest-cache.json", + // Optionally disable the default manifest transform to fully control URL processing + disableDefaultManifestTransform: false, + // Pass custom manifest transforms if needed (this is appended to the default transform) + manifestTransforms: [ + async (entries, compilation) => { + // Custom transformation: e.g., append query parameter for versioning + return { + manifest: entries.map((entry) => ({ + ...entry, + url: entry.url + "?v=1.0.0", + })), + warnings: [], + }; + }, + ], + // Fallback configuration for offline support + fallbacks: { + document: "/_offline", + image: "/static/images/fallback.png", + }, + cacheStartUrl: true, + dynamicStartUrl: true, + cacheOnFrontEndNav: false, + reloadOnOnline: true, + // Enable debug mode for detailed log output (set process.env.DEBUG_PWA=1 to enable) + debug: process.env.DEBUG_PWA === "1", + customWorkerDir: "worker", }); module.exports = withPWA({ - // Next.js configuration + // Your Next.js configuration options }); ``` -After running `next build`, the plugin will generate `sw.js` and other necessary files in your `public` directory. +--- -### Step 2: Add Manifest File +### Step 2: Create a Manifest File -Create a `manifest.json` in your `public` folder: +Place a `manifest.json` in your `public` folder. For example: ```json { @@ -76,9 +123,11 @@ Create a `manifest.json` in your `public` folder: } ``` +--- + ### Step 3: Add Head Meta Tags -Add these tags in your `_document.js` or `_app.js`: +Ensure your pages include the necessary meta tags for PWA functionality. Add the following to your `_document.js` or `_app.js`: ```html @@ -127,73 +176,113 @@ Add these tags in your `_document.js` or `_app.js`: ``` +--- + ## Offline Fallbacks -To handle offline scenarios, add an `/_offline` page (e.g., `pages/_offline.js`). This page will be served when network requests fail. +To handle offline scenarios, create an `/_offline` page (e.g., `pages/_offline.js`). This page will be served when network requests fail: -## Configuration +```javascript +// pages/_offline.js +export default function OfflinePage() { + return ( +

+

Offline

+

Sorry, it looks like you're offline.

+
+ ); +} +``` -Customize the plugin behavior by adding a `pwa` object to your `next.config.js`: +--- -```javascript -const withPWA = require("next-pwa")({ - dest: "public", - disable: process.env.NODE_ENV === "development", - register: true, - scope: "/", - sw: "sw.js", - runtimeCaching: [ - { - urlPattern: ({ request }) => request.destination === "image", - handler: "CacheFirst", - options: { - cacheName: "images-cache", - expiration: { - maxEntries: 50, - }, - }, - }, - ], - publicExcludes: ["!noprecache/**/*"], - buildExcludes: [/chunks\/images\/.*$/], - cacheStartUrl: true, - dynamicStartUrl: true, - fallbacks: { - document: "/_offline", - image: "/static/images/fallback.png", - }, - cacheOnFrontEndNav: false, - reloadOnOnline: true, - customWorkerDir: "worker", -}); +## Module System Tutorials -module.exports = withPWA({ - // Next.js configuration -}); -``` +This plugin supports both CommonJS (CJS) and ECMAScript Modules (ESM). Depending on your project configuration, follow the appropriate tutorial: + +### Using CommonJS (CJS) + +If your project uses CommonJS (the default for many Node.js projects) or you haven't set `"type": "module"` in your `package.json`, then: + +- **Importing the Plugin:** + + ```javascript + // next.config.js using CommonJS + const withPWA = require("next-pwa")({ + // Your plugin options here... + }); + + module.exports = withPWA({ + // Your Next.js configuration here... + }); + ``` + +- **Exporting:** -### Available Options - -- `dest`: Directory to output service worker files (default: `public`) -- `disable`: Disable PWA features (default: `false`) -- `register`: Automatically register the service worker (default: `true`) -- `scope`: URL scope for the PWA (default: `/`) -- `sw`: Service worker file name (default: `sw.js`) -- `runtimeCaching`: Custom caching strategies -- `publicExcludes`: Exclude files from precaching in the `public` directory -- `buildExcludes`: Exclude files from precaching in the build directory -- `cacheStartUrl`: Cache the start URL (default: `true`) -- `dynamicStartUrl`: Handle dynamic start URLs (default: `true`) -- `fallbacks`: Configure fallback routes for different resource types -- `cacheOnFrontEndNav`: Enable additional caching during front-end navigation -- `reloadOnOnline`: Reload the page when network connection is restored (default: `true`) -- `customWorkerDir`: Directory for custom worker implementations + The plugin exports using `module.exports`, so you use it as shown above. + +### Using ECMAScript Modules (ESM) + +If your project uses ESM by setting `"type": "module"` in your `package.json`: + +- **Ensure your package.json includes:** + + ```json + { + "type": "module" + // ... other settings + } + ``` + +- **Importing the Plugin:** + + ```javascript + // next.config.js using ESM + import withPWA from "next-pwa"; + + export default withPWA({ + // Your plugin options here... + })({ + // Your Next.js configuration here... + }); + ``` + + > **Note:** When using ESM, ensure that your build tool and runtime environment fully support ESM syntax. + +--- + +## Configuration Options + +Below is a summary of the available configuration options: + +- **dest**: Directory to output service worker files (default: `"public"`). +- **disable**: Disable PWA features (default: `false`). Typically set to `true` in development. +- **register**: Automatically register the service worker (default: `true`). +- **scope**: URL scope for the PWA (default: `"/"`). +- **sw**: Service worker file name (default: `"sw.js"`). +- **runtimeCaching**: Custom caching strategies for runtime requests. +- **publicExcludes**: Array of glob patterns to exclude files from precaching in the `public` directory. +- **buildExcludes**: Array of patterns to exclude files from precaching in the build output. +- **cacheStartUrl**: Cache the start URL (default: `true`). +- **dynamicStartUrl**: Enable dynamic start URL handling (default: `true`). +- **dynamicStartUrlRedirect**: Redirect URL for dynamic start URL caching. +- **fallbacks**: Configure fallback routes for different resource types (e.g., document, image). +- **cacheOnFrontEndNav**: Enable additional caching during front-end navigation (default: `false`). +- **reloadOnOnline**: Reload the page when the network connection is restored (default: `true`). +- **customWorkerDir**: Directory for custom worker implementations (default: `"worker"`). +- **debug**: Enable debug mode for detailed logging (default: `false`). +- **enableIncrementalManifest**: Enable incremental manifest generation to speed up builds (default: `true`). +- **manifestCacheFile**: Path to the cache file for manifest incremental build (default: `".next/manifest-cache.json"`). +- **manifestTransforms**: An array of custom manifest transform functions. These are applied after the default transformation (unless disabled). +- **disableDefaultManifestTransform**: If set to `true`, the default URL transformation logic is not applied. + +--- ## Advanced Usage ### Custom Workers -For additional functionality, create a custom worker in the specified directory (default: `worker`): +For advanced use cases, you can implement custom workers by creating a directory (default: `worker`) in your project root. For example: ``` your-project/ @@ -201,13 +290,22 @@ your-project/ index.js ``` +Your custom worker can add additional functionality, which will be bundled and injected into the generated service worker. + ### Debugging -- Clean application cache frequently to avoid flaky errors. -- Format the generated `sw.js` for easier debugging. -- Use `self.__WB_DISABLE_DEV_LOGS = true` to disable Workbox logs. +- **Debug Logging:** Set `debug: true` in your plugin options (or set the environment variable `DEBUG_PWA=1`) to enable detailed logging during build and runtime. +- **Cache Clearing:** During development, you might need to clear application caches to avoid stale data. +- **Workbox Logs:** To disable Workbox internal logs, you can set `self.__WB_DISABLE_DEV_LOGS = true` in your service worker code. + +### Incremental Manifest Caching + +The plugin now supports incremental manifest generation. During the first build, all files in the `public` folder are scanned and a cache file is generated. In subsequent builds, only files that have changed will have their revision recalculated, greatly improving build performance in large projects. + +--- ## Reference - [Google Workbox Documentation](https://developer.chrome.com/docs/workbox/) - [Service Worker Lifecycle](https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle) +- [Next.js Documentation](https://nextjs.org/docs) diff --git a/build-custom-worker.js b/build-custom-worker.js index 7fd4adc0..2f400efc 100644 --- a/build-custom-worker.js +++ b/build-custom-worker.js @@ -1,121 +1,76 @@ // build-custom-worker.js -'use strict' +'use strict'; -import path from 'path' -import fs from 'fs' -import webpack from 'webpack' -import { CleanWebpackPlugin } from 'clean-webpack-plugin' -import TerserPlugin from 'terser-webpack-plugin' +import path from 'path'; +import fs from 'fs'; +import webpack from 'webpack'; +import { createWorkerWebpackConfig } from './webpack-worker-config.js'; -const buildCustomWorker = ({ id, basedir, customWorkerDir, destdir, plugins, minify }) => { - let workerDir = undefined - - if (fs.existsSync(path.join(basedir, customWorkerDir))) { - workerDir = path.join(basedir, customWorkerDir) - } else if (fs.existsSync(path.join(basedir, 'src', customWorkerDir))) { - workerDir = path.join(basedir, 'src', customWorkerDir) +/** + * 构建自定义 Service Worker + * @param {Object} options 构建选项 + * @param {string} options.id - 构建 id + * @param {string} options.basedir - 项目根目录 + * @param {string} options.customWorkerDir - 自定义 worker 目录(相对于 basedir) + * @param {string} options.destdir - 输出目录 + * @param {Array} options.plugins - 额外的 webpack 插件 + * @param {boolean} options.minify - 是否压缩代码 + * @returns {Promise} 构建成功返回生成的文件名,否则返回 undefined + */ +const buildCustomWorker = async ({ id, basedir, customWorkerDir, destdir, plugins, minify }) => { + // 寻找自定义 worker 目录:先在 basedir 下,再在 basedir/src 下查找 + let workerDir; + const candidate1 = path.join(basedir, customWorkerDir); + const candidate2 = path.join(basedir, 'src', customWorkerDir); + if (fs.existsSync(candidate1)) { + workerDir = candidate1; + } else if (fs.existsSync(candidate2)) { + workerDir = candidate2; } + if (!workerDir) return; - if (!workerDir) return - - const name = `worker-${id}.js` + const name = `worker-${id}.js`; + // 检查入口文件 index.ts 或 index.js const customWorkerEntries = ['ts', 'js'] .map(ext => path.join(workerDir, `index.${ext}`)) - .filter(entry => fs.existsSync(entry)) - - if (customWorkerEntries.length === 0) return + .filter(entry => fs.existsSync(entry)); + if (customWorkerEntries.length === 0) return; if (customWorkerEntries.length > 1) { console.warn( `> [PWA] WARNING: More than one custom worker found (${customWorkerEntries.join( ',' )}), not building a custom worker` - ) - return + ); + return; } + const customWorkerEntry = customWorkerEntries[0]; + console.log(`> [PWA] Custom worker found: ${customWorkerEntry}`); + console.log(`> [PWA] Build custom worker: ${path.join(destdir, name)}`); + + // 使用共享 webpack 配置打包 custom worker + const config = createWorkerWebpackConfig({ + entry: customWorkerEntry, + destdir, + filename: name, + testRule: /\.(t|j)s$/i, + minify, + extraPlugins: plugins + }); - const customWorkerEntry = customWorkerEntries[0] - console.log(`> [PWA] Custom worker found: ${customWorkerEntry}`) - console.log(`> [PWA] Build custom worker: ${path.join(destdir, name)}`) - webpack({ - mode: 'none', - target: 'webworker', - entry: { - main: customWorkerEntry - }, - resolve: { - extensions: ['.ts', '.js'], - fallback: { - module: false, - dgram: false, - dns: false, - path: false, - fs: false, - os: false, - crypto: false, - stream: false, - http2: false, - net: false, - tls: false, - zlib: false, - child_process: false + // 使用 Promise 封装 webpack.run + await new Promise((resolve, reject) => { + webpack(config).run((error, status) => { + if (error || status.hasErrors()) { + console.error(`> [PWA] Failed to build custom worker`); + console.error(status ? status.toString({ colors: true }) : error); + return reject(error || new Error('Webpack compilation errors')); } - }, - module: { - rules: [ - { - test: /\.(t|j)s$/i, - use: [ - { - loader: 'babel-loader', - options: { - presets: [ - [ - 'next/babel', - { - 'transform-runtime': { - corejs: false, - helpers: true, - regenerator: false, - useESModules: true - }, - 'preset-env': { - modules: false, - targets: 'chrome >= 56' - } - } - ] - ] - } - } - ] - } - ] - }, - output: { - path: destdir, - filename: name - }, - plugins: [ - new CleanWebpackPlugin({ - cleanOnceBeforeBuildPatterns: [path.join(destdir, 'worker-*.js'), path.join(destdir, 'worker-*.js.map')] - }) - ].concat(plugins), - optimization: minify - ? { - minimize: true, - minimizer: [new TerserPlugin()] - } - : undefined - }).run((error, status) => { - if (error || status.hasErrors()) { - console.error(`> [PWA] Failed to build custom worker`) - console.error(status.toString({ colors: true })) - process.exit(-1) - } - }) + resolve(); + }); + }); - return name -} + return name; +}; -module.exports = buildCustomWorker \ No newline at end of file +export default buildCustomWorker; diff --git a/build-fallback-worker.js b/build-fallback-worker.js index 4eac8620..012f49cf 100644 --- a/build-fallback-worker.js +++ b/build-fallback-worker.js @@ -1,36 +1,43 @@ // build-fallback-worker.js -'use strict' - -import path from 'path' -import fs from 'fs' -import webpack from 'webpack' -import { CleanWebpackPlugin } from 'clean-webpack-plugin' -import TerserPlugin from 'terser-webpack-plugin' - +'use strict'; + +import path from 'path'; +import fs from 'fs'; +import webpack from 'webpack'; +import { createWorkerWebpackConfig } from './webpack-worker-config.js'; + +/** + * 根据 fallback 配置生成环境变量对象 + * @param {Object} params 参数对象 + * @param {Object} params.fallbacks - fallback 配置 + * @param {string} params.basedir - 项目根目录 + * @param {string} params.id - 构建 id + * @param {Array} params.pageExtensions - 页面扩展名数组 + * @returns {Object|undefined} 环境变量对象或 undefined + */ const getFallbackEnvs = ({ fallbacks, basedir, id, pageExtensions }) => { - let { document, data } = fallbacks + let { document, data } = fallbacks; if (!document) { - let pagesDir = undefined - - if (fs.existsSync(path.join(basedir, 'pages'))) { - pagesDir = path.join(basedir, 'pages') - } else if (fs.existsSync(path.join(basedir, 'src', 'pages'))) { - pagesDir = path.join(basedir, 'src', 'pages') + let pagesDir; + const candidate1 = path.join(basedir, 'pages'); + const candidate2 = path.join(basedir, 'src', 'pages'); + if (fs.existsSync(candidate1)) { + pagesDir = candidate1; + } else if (fs.existsSync(candidate2)) { + pagesDir = candidate2; } - - if (!pagesDir) return - + if (!pagesDir) return; const offlines = pageExtensions .map(ext => path.join(pagesDir, `_offline.${ext}`)) - .filter(entry => fs.existsSync(entry)) + .filter(entry => fs.existsSync(entry)); if (offlines.length === 1) { - document = '/_offline' + document = '/_offline'; } } if (data && data.endsWith('.json')) { - data = path.posix.join('/_next/data', id, data) + data = path.posix.join('/_next/data', id, data); } const envs = { @@ -40,108 +47,61 @@ const getFallbackEnvs = ({ fallbacks, basedir, id, pageExtensions }) => { __PWA_FALLBACK_VIDEO__: fallbacks.video || false, __PWA_FALLBACK_FONT__: fallbacks.font || false, __PWA_FALLBACK_DATA__: data || false - } - - if (Object.values(envs).filter(v => !!v).length === 0) return - - console.log('> [PWA] Fallback to precache routes when fetch failed from cache or network:') - if (envs.__PWA_FALLBACK_DOCUMENT__) console.log(`> [PWA] document (page): ${envs.__PWA_FALLBACK_DOCUMENT__}`) - if (envs.__PWA_FALLBACK_IMAGE__) console.log(`> [PWA] image: ${envs.__PWA_FALLBACK_IMAGE__}`) - if (envs.__PWA_FALLBACK_AUDIO__) console.log(`> [PWA] audio: ${envs.__PWA_FALLBACK_AUDIO__}`) - if (envs.__PWA_FALLBACK_VIDEO__) console.log(`> [PWA] video: ${envs.__PWA_FALLBACK_VIDEO__}`) - if (envs.__PWA_FALLBACK_FONT__) console.log(`> [PWA] font: ${envs.__PWA_FALLBACK_FONT__}`) - if (envs.__PWA_FALLBACK_DATA__) console.log(`> [PWA] data (/_next/data/**/*.json): ${envs.__PWA_FALLBACK_DATA__}`) - - return envs -} - -const buildFallbackWorker = ({ id, fallbacks, basedir, destdir, minify, pageExtensions }) => { - const envs = getFallbackEnvs({ fallbacks, basedir, id, pageExtensions }) - if (!envs) return - - const name = `fallback-${id}.js` - const fallbackJs = path.join(__dirname, `fallback.js`) - - webpack({ - mode: 'none', - target: 'webworker', - entry: { - main: fallbackJs - }, - resolve: { - extensions: ['.js'], - fallback: { - module: false, - dgram: false, - dns: false, - path: false, - fs: false, - os: false, - crypto: false, - stream: false, - http2: false, - net: false, - tls: false, - zlib: false, - child_process: false + }; + + if (Object.values(envs).filter(v => !!v).length === 0) return; + + console.log('> [PWA] Fallback to precache routes when fetch failed from cache or network:'); + if (envs.__PWA_FALLBACK_DOCUMENT__) console.log(`> [PWA] document (page): ${envs.__PWA_FALLBACK_DOCUMENT__}`); + if (envs.__PWA_FALLBACK_IMAGE__) console.log(`> [PWA] image: ${envs.__PWA_FALLBACK_IMAGE__}`); + if (envs.__PWA_FALLBACK_AUDIO__) console.log(`> [PWA] audio: ${envs.__PWA_FALLBACK_AUDIO__}`); + if (envs.__PWA_FALLBACK_VIDEO__) console.log(`> [PWA] video: ${envs.__PWA_FALLBACK_VIDEO__}`); + if (envs.__PWA_FALLBACK_FONT__) console.log(`> [PWA] font: ${envs.__PWA_FALLBACK_FONT__}`); + if (envs.__PWA_FALLBACK_DATA__) console.log(`> [PWA] data (/_next/data/**/*.json): ${envs.__PWA_FALLBACK_DATA__}`); + + return envs; +}; + +/** + * 构建 fallback worker + * @param {Object} options 构建选项 + * @param {string} options.id - 构建 id + * @param {Object} options.fallbacks - fallback 配置 + * @param {string} options.basedir - 项目根目录 + * @param {string} options.destdir - 输出目录 + * @param {boolean} options.minify - 是否压缩代码 + * @param {Array} options.pageExtensions - 页面扩展名数组 + * @returns {Promise} 包含 name 和 precaches 的构建结果 + */ +const buildFallbackWorker = async ({ id, fallbacks, basedir, destdir, minify, pageExtensions }) => { + const envs = getFallbackEnvs({ fallbacks, basedir, id, pageExtensions }); + if (!envs) return; + + const name = `fallback-${id}.js`; + const fallbackJs = path.join(__dirname, 'fallback.js'); + + // 使用共享 webpack 配置打包 fallback worker + const config = createWorkerWebpackConfig({ + entry: fallbackJs, + destdir, + filename: name, + testRule: /\.js$/i, + minify, + extraPlugins: [new webpack.EnvironmentPlugin(envs)] + }); + + await new Promise((resolve, reject) => { + webpack(config).run((error, status) => { + if (error || status.hasErrors()) { + console.error(`> [PWA] Failed to build fallback worker`); + console.error(status ? status.toString({ colors: true }) : error); + return reject(error || new Error('Webpack compilation errors')); } - }, - module: { - rules: [ - { - test: /\.js$/i, - use: [ - { - loader: 'babel-loader', - options: { - presets: [ - [ - 'next/babel', - { - 'transform-runtime': { - corejs: false, - helpers: true, - regenerator: false, - useESModules: true - }, - 'preset-env': { - modules: false, - targets: 'chrome >= 56' - } - } - ] - ] - } - } - ] - } - ] - }, - output: { - path: destdir, - filename: name - }, - plugins: [ - new CleanWebpackPlugin({ - cleanOnceBeforeBuildPatterns: [path.join(destdir, 'fallback-*.js'), path.join(destdir, 'fallback-*.js.map')] - }), - new webpack.EnvironmentPlugin(envs) - ], - optimization: minify - ? { - minimize: true, - minimizer: [new TerserPlugin()] - } - : undefined - }).run((error, status) => { - if (error || status.hasErrors()) { - console.error(`> [PWA] Failed to build fallback worker`) - console.error(status.toString({ colors: true })) - process.exit(-1) - } - }) + resolve(); + }); + }); - return { fallbacks, name, precaches: Object.values(envs).filter(v => !!v) } -} + return { fallbacks, name, precaches: Object.values(envs).filter(v => !!v) }; +}; -module.exports = buildFallbackWorker \ No newline at end of file +export default buildFallbackWorker; diff --git a/cache.js b/cache.js index 847b2e18..80784489 100644 --- a/cache.js +++ b/cache.js @@ -1,9 +1,9 @@ // cache.js - 'use strict' +import { CacheableResponsePlugin } from 'workbox-cacheable-response'; // Workbox RuntimeCaching config: https://developers.google.com/web/tools/workbox/reference-docs/latest/module-workbox-build#.RuntimeCachingEntry -module.exports = [ +export default [ { urlPattern: /^https:\/\/fonts\.(?:gstatic)\.com\/.*/i, handler: 'CacheFirst', @@ -83,17 +83,20 @@ module.exports = [ } } }, - { - urlPattern: /\.(?:js)$/i, - handler: 'StaleWhileRevalidate', - options: { - cacheName: 'static-js-assets', - expiration: { - maxEntries: 32, - maxAgeSeconds: 24 * 60 * 60 // 24 hours - } - } - }, +{ + urlPattern: /\.(?:js)$/i, + handler: 'StaleWhileRevalidate', + options: { + cacheName: 'static-js-assets', + expiration: { + maxEntries: 32, + maxAgeSeconds: 24 * 60 * 60 + }, + plugins: [ + new CacheableResponsePlugin({ statuses: [0, 200] }) + ] + } +}, { urlPattern: /\.(?:css|less)$/i, handler: 'StaleWhileRevalidate', diff --git a/fallback.js b/fallback.js index b182099c..c3527d34 100644 --- a/fallback.js +++ b/fallback.js @@ -1,28 +1,47 @@ -// fallback.js -'use strict' +'use strict'; self.fallback = async request => { - // https://developer.mozilla.org/en-US/docs/Web/API/RequestDestination + // 参考:https://developer.mozilla.org/en-US/docs/Web/API/RequestDestination switch (request.destination) { - case 'document': - if (process.env.__PWA_FALLBACK_DOCUMENT__) - return caches.match(process.env.__PWA_FALLBACK_DOCUMENT__, { ignoreSearch: true }) - case 'image': - if (process.env.__PWA_FALLBACK_IMAGE__) - return caches.match(process.env.__PWA_FALLBACK_IMAGE__, { ignoreSearch: true }) - case 'audio': - if (process.env.__PWA_FALLBACK_AUDIO__) - return caches.match(process.env.__PWA_FALLBACK_AUDIO__, { ignoreSearch: true }) - case 'video': - if (process.env.__PWA_FALLBACK_VIDEO__) - return caches.match(process.env.__PWA_FALLBACK_VIDEO__, { ignoreSearch: true }) - case 'font': - if (process.env.__PWA_FALLBACK_FONT__) - return caches.match(process.env.__PWA_FALLBACK_FONT__, { ignoreSearch: true }) - case '': - if (process.env.__PWA_FALLBACK_DATA__ && request.url.match(/\/_next\/data\/.+\/.+\.json$/i)) - return caches.match(process.env.__PWA_FALLBACK_DATA__, { ignoreSearch: true }) + case 'document': { + if (process.env.__PWA_FALLBACK_DOCUMENT__) { + return caches.match(process.env.__PWA_FALLBACK_DOCUMENT__, { ignoreSearch: true }); + } + break; + } + case 'image': { + if (process.env.__PWA_FALLBACK_IMAGE__) { + return caches.match(process.env.__PWA_FALLBACK_IMAGE__, { ignoreSearch: true }); + } + break; + } + case 'audio': { + if (process.env.__PWA_FALLBACK_AUDIO__) { + return caches.match(process.env.__PWA_FALLBACK_AUDIO__, { ignoreSearch: true }); + } + break; + } + case 'video': { + if (process.env.__PWA_FALLBACK_VIDEO__) { + return caches.match(process.env.__PWA_FALLBACK_VIDEO__, { ignoreSearch: true }); + } + break; + } + case 'font': { + if (process.env.__PWA_FALLBACK_FONT__) { + return caches.match(process.env.__PWA_FALLBACK_FONT__, { ignoreSearch: true }); + } + break; + } + case '': { + // 针对 Next.js 数据文件:/_next/data/{id}/...json + if (process.env.__PWA_FALLBACK_DATA__ && request.url.match(/\/_next\/data\/.+\/.+\.json$/i)) { + return caches.match(process.env.__PWA_FALLBACK_DATA__, { ignoreSearch: true }); + } + break; + } default: - return Response.error() + break; } -} + return Response.error(); +}; diff --git a/index.js b/index.js index 0ec94cf7..23539317 100644 --- a/index.js +++ b/index.js @@ -11,95 +11,227 @@ import defaultCache from './cache' import buildCustomWorker from './build-custom-worker' import buildFallbackWorker from './build-fallback-worker' -const getRevision = file => crypto.createHash('md5').update(fs.readFileSync(file)).digest('hex') +// 根据文件内容生成 revision 哈希 +const getRevision = file => + crypto.createHash('md5').update(fs.readFileSync(file)).digest('hex') -module.exports = - (pluginOptions = {}) => - (nextConfig = {}) => - Object.assign({}, nextConfig, { - webpack(config, options) { - const { - webpack, - buildId, - dev, - config: { distDir = '.next', pageExtensions = ['tsx', 'ts', 'jsx', 'js', 'mdx'], experimental = {} } - } = options +// 异步版本的 generateManifestEntriesAsync,将 public 文件夹中的文件生成预缓存 manifest 条目 +// NOTE: 这是全量扫描版本,作为回退方案使用 +async function generateManifestEntriesAsync({ basePath, sw, publicExcludes, additionalManifestEntries, buildId }) { + if (Array.isArray(additionalManifestEntries)) return additionalManifestEntries + const files = await globby([ + '**/*', + '!workbox-*.js', + '!workbox-*.js.map', + '!worker-*.js', + '!worker-*.js.map', + '!fallback-*.js', + '!fallback-*.js.map', + `!${sw.replace(/^\/+/, '')}`, + `!${sw.replace(/^\/+/, '')}.map`, + ...publicExcludes + ], { cwd: 'public' }) - let basePath = options.config.basePath || '/' + return files.map(f => ({ + url: path.posix.join(basePath, `/${f}`), + revision: getRevision(`public/${f}`) + })) +} - const { - disable = false, - register = true, - dest = distDir, - sw = 'sw.js', - cacheStartUrl = true, - dynamicStartUrl = true, - dynamicStartUrlRedirect, - skipWaiting = true, - clientsClaim = true, - cleanupOutdatedCaches = true, - additionalManifestEntries, - ignoreURLParametersMatching = [], - importScripts = [], - publicExcludes = ['!noprecache/**/*'], - buildExcludes = [], - modifyURLPrefix = {}, - manifestTransforms = [], - fallbacks = {}, - cacheOnFrontEndNav = false, - reloadOnOnline = true, - scope = basePath, - customWorkerDir = 'worker', - subdomainPrefix, // deprecated, use basePath in next.config.js instead - ...workbox - } = pluginOptions +/** + * 增量生成 manifest 条目。 + * 如果缓存文件存在,则仅对比发生变化的文件,减少重复计算。 + * @param {Object} params + * @param {string} params.basePath - URL 的基础路径 + * @param {string} params.sw - Service Worker 文件名(用于排除) + * @param {Array} params.publicExcludes - 排除规则 + * @param {Array} params.additionalManifestEntries - 额外条目 + * @param {string} params.buildId - 当前构建 ID + * @param {string} params.cacheFilePath - 缓存文件路径(例如:.next/manifest-cache.json) + * @returns {Promise} manifest 条目数组 + */ +async function generateManifestEntriesIncremental({ + basePath, + sw, + publicExcludes, + additionalManifestEntries, + buildId, + cacheFilePath +}) { + if (Array.isArray(additionalManifestEntries)) return additionalManifestEntries - if (typeof nextConfig.webpack === 'function') { - config = nextConfig.webpack(config, options) - } + let cachedData = {} + try { + const content = fs.readFileSync(cacheFilePath, 'utf-8') + cachedData = JSON.parse(content) + } catch (e) { + cachedData = {} + } - if (disable) { - options.isServer && console.log('> [PWA] PWA support is disabled') - return config - } + const files = await globby([ + '**/*', + '!workbox-*.js', + '!workbox-*.js.map', + '!worker-*.js', + '!worker-*.js.map', + '!fallback-*.js', + '!fallback-*.js.map', + `!${sw.replace(/^\/+/, '')}`, + `!${sw.replace(/^\/+/, '')}.map`, + ...publicExcludes + ], { cwd: 'public' }) - if (subdomainPrefix) { - console.error( - '> [PWA] subdomainPrefix is deprecated, use basePath in next.config.js instead: https://nextjs.org/docs/api-reference/next.config.js/basepath' - ) + const manifestEntries = [] + const newCacheData = {} + + for (const f of files) { + const filePath = path.join('public', f) + const hash = getRevision(filePath) + newCacheData[f] = { hash } + // 如果缓存中该文件存在且 hash 没有变化,则复用旧的 hash,否则使用新计算的 hash + const revision = cachedData[f] && cachedData[f].hash === hash ? cachedData[f].hash : hash + manifestEntries.push({ + url: path.posix.join(basePath, `/${f}`), + revision + }) + } + + try { + fs.writeFileSync(cacheFilePath, JSON.stringify(newCacheData, null, 2), 'utf-8') + } catch (err) { + console.error('Error writing manifest cache file:', err) + } + + return manifestEntries +} + +// 默认的 URL 转换函数,允许对 manifest 条目进行统一转换 +async function defaultTransform(manifestEntries, compilation, buildId) { + const manifest = manifestEntries.map(m => { + m.url = m.url + .replace('/_next//static/image', '/_next/static/image') + .replace('/_next//static/media', '/_next/static/media') + if (m.revision === null) { + let key = m.url + if (key.startsWith(compilation.outputOptions.publicPath)) { + key = m.url.substring(compilation.outputOptions.publicPath.length) + } + const asset = compilation.assetsInfo.get(key) + m.revision = asset ? asset.contenthash || buildId : buildId + } + m.url = m.url.replace(/\[/g, '%5B').replace(/\]/g, '%5D') + return m + }) + return { manifest, warnings: [] } +} + +export default (pluginOptions = {}) => (nextConfig = {}) => + Object.assign({}, nextConfig, { + async webpack(config, options) { + const { + webpack, + buildId, + dev, + config: { + distDir = '.next', + pageExtensions = ['tsx', 'ts', 'jsx', 'js', 'mdx'], + experimental = {} } + } = options - console.log(`> [PWA] Compile ${options.isServer ? 'server' : 'client (static)'}`) + // 基础路径配置(Next.js 默认 basePath 或 '/') + let basePath = options.config.basePath || '/' - let { runtimeCaching = defaultCache } = pluginOptions - const _scope = path.posix.join(scope, '/') + // Helper: 日志输出(根据 debug 选项控制详细度) + const logDebug = (...args) => { + if (pluginOptions.debug) { + console.log(...args) + } + } - // inject register script to main.js - const _sw = path.posix.join(basePath, sw.startsWith('/') ? sw : `/${sw}`) - config.plugins.push( - new webpack.DefinePlugin({ - __PWA_SW__: `'${_sw}'`, - __PWA_SCOPE__: `'${_scope}'`, - __PWA_ENABLE_REGISTER__: `${Boolean(register)}`, - __PWA_START_URL__: dynamicStartUrl ? `'${basePath}'` : undefined, - __PWA_CACHE_ON_FRONT_END_NAV__: `${Boolean(cacheOnFrontEndNav)}`, - __PWA_RELOAD_ON_ONLINE__: `${Boolean(reloadOnOnline)}` - }) + // 解构插件配置,并设置默认值 + const { + disable = false, + register = true, + dest = distDir, + sw = 'sw.js', + cacheStartUrl = true, + dynamicStartUrl = true, + dynamicStartUrlRedirect, + skipWaiting = true, + clientsClaim = true, + cleanupOutdatedCaches = true, + additionalManifestEntries, + ignoreURLParametersMatching = [], + importScripts = [], + publicExcludes = ['!noprecache/**/*'], + buildExcludes = [], + modifyURLPrefix = {}, + // 用户自定义的 manifestTransforms 数组(可选) + manifestTransforms: userManifestTransforms = [], + // 允许用户完全覆盖默认 manifest 转换逻辑 + disableDefaultManifestTransform = false, + fallbacks = {}, + cacheOnFrontEndNav = false, + reloadOnOnline = true, + scope = basePath, + customWorkerDir = 'worker', + subdomainPrefix, // 已废弃,建议使用 basePath + // 新增:是否启用增量构建与 manifest 缓存,以及缓存文件路径 + enableIncrementalManifest = true, + manifestCacheFile = path.join(options.dir, '.next', 'manifest-cache.json'), + ...workbox + } = pluginOptions + + // 调用 nextConfig 中自定义的 webpack 配置(如果存在) + if (typeof nextConfig.webpack === 'function') { + config = nextConfig.webpack(config, options) + } + if (disable) { + if (options.isServer) console.log('> [PWA] PWA support is disabled') + return config + } + if (subdomainPrefix) { + console.error( + '> [PWA] subdomainPrefix is deprecated, use basePath in next.config.js instead: https://nextjs.org/docs/api-reference/next.config.js/basepath' ) + } + console.log(`> [PWA] Compile ${options.isServer ? 'server' : 'client (static)'}`) - const registerJs = path.join(__dirname, 'register.js') - const entry = config.entry - config.entry = () => - entry().then(entries => { - if (entries['main.js'] && !entries['main.js'].includes(registerJs)) { - entries['main.js'].unshift(registerJs) - } - return entries - }) + let { runtimeCaching = defaultCache } = pluginOptions + const _scope = path.posix.join(scope, '/') + const _sw = path.posix.join(basePath, sw.startsWith('/') ? sw : `/${sw}`) + + // 注入全局变量到 main.js + config.plugins.push( + new webpack.DefinePlugin({ + __PWA_SW__: `'${_sw}'`, + __PWA_SCOPE__: `'${_scope}'`, + __PWA_ENABLE_REGISTER__: `${Boolean(register)}`, + __PWA_START_URL__: dynamicStartUrl ? `'${basePath}'` : undefined, + __PWA_CACHE_ON_FRONT_END_NAV__: `${Boolean(cacheOnFrontEndNav)}`, + __PWA_RELOAD_ON_ONLINE__: `${Boolean(reloadOnOnline)}` + }) + ) + + // 自动将 register.js 注入到 main.js 的入口中 + const registerJs = path.join(__dirname, 'register.js') + const entry = config.entry + config.entry = () => + entry().then(entries => { + if (entries['main.js'] && !entries['main.js'].includes(registerJs)) { + entries['main.js'].unshift(registerJs) + } + return entries + }) + + if (!options.isServer) { + const _dest = path.join(options.dir, dest) - if (!options.isServer) { - const _dest = path.join(options.dir, dest) - const customWorkerScriptName = buildCustomWorker({ + // 构建自定义 worker(等待编译完成) + let customWorkerScriptName + try { + customWorkerScriptName = await buildCustomWorker({ id: buildId, basedir: options.dir, customWorkerDir, @@ -107,80 +239,77 @@ module.exports = plugins: config.plugins.filter(plugin => plugin instanceof webpack.DefinePlugin), minify: !dev }) + } catch (err) { + console.error('Error building custom worker:', err) + } + if (customWorkerScriptName) { + importScripts.unshift(customWorkerScriptName) + } - if (!!customWorkerScriptName) { - importScripts.unshift(customWorkerScriptName) - } + if (register) { + console.log(`> [PWA] Auto register service worker with: ${path.resolve(registerJs)}`) + } else { + console.log( + '> [PWA] Auto register service worker is disabled, please call window.workbox.register() in your component' + ) + } + console.log(`> [PWA] Service worker: ${path.join(_dest, sw)}`) + console.log(`> [PWA] url: ${_sw}`) + console.log(`> [PWA] scope: ${_scope}`) - if (register) { - console.log(`> [PWA] Auto register service worker with: ${path.resolve(registerJs)}`) - } else { - console.log( - `> [PWA] Auto register service worker is disabled, please call following code in componentDidMount callback or useEffect hook` - ) - console.log(`> [PWA] window.workbox.register()`) - } + config.plugins.push( + new CleanWebpackPlugin({ + cleanOnceBeforeBuildPatterns: [ + path.join(_dest, 'workbox-*.js'), + path.join(_dest, 'worker-*.js.LICENSE.txt'), + path.join(_dest, 'workbox-*.js.map'), + path.join(_dest, sw), + path.join(_dest, `${sw}.map`) + ] + }) + ) - console.log(`> [PWA] Service worker: ${path.join(_dest, sw)}`) - console.log(`> [PWA] url: ${_sw}`) - console.log(`> [PWA] scope: ${_scope}`) + // 生成 manifest 条目,支持增量构建 + let manifestEntries + if (enableIncrementalManifest) { + manifestEntries = await generateManifestEntriesIncremental({ + basePath, + sw, + publicExcludes, + additionalManifestEntries, + buildId, + cacheFilePath: manifestCacheFile + }) + } else { + manifestEntries = await generateManifestEntriesAsync({ + basePath, + sw, + publicExcludes, + additionalManifestEntries, + buildId + }) + } - config.plugins.push( - new CleanWebpackPlugin({ - cleanOnceBeforeBuildPatterns: [ - path.join(_dest, 'workbox-*.js'), - path.join(_dest, 'worker-*.js.LICENSE.txt'), - path.join(_dest, 'workbox-*.js.map'), - path.join(_dest, sw), - path.join(_dest, `${sw}.map`) - ] + // 如果需要缓存起始 URL,则添加到 manifestEntries 中 + if (cacheStartUrl) { + if (!dynamicStartUrl) { + manifestEntries.push({ + url: basePath, + revision: buildId + }) + } else if (typeof dynamicStartUrlRedirect === 'string' && dynamicStartUrlRedirect.length > 0) { + manifestEntries.push({ + url: dynamicStartUrlRedirect, + revision: buildId }) - ) - - // precache files in public folder - let manifestEntries = additionalManifestEntries - if (!Array.isArray(manifestEntries)) { - manifestEntries = globby - .sync( - [ - '**/*', - '!workbox-*.js', - '!workbox-*.js.map', - '!worker-*.js', - '!worker-*.js.map', - '!fallback-*.js', - '!fallback-*.js.map', - `!${sw.replace(/^\/+/, '')}`, - `!${sw.replace(/^\/+/, '')}.map`, - ...publicExcludes - ], - { - cwd: 'public' - } - ) - .map(f => ({ - url: path.posix.join(basePath, `/${f}`), - revision: getRevision(`public/${f}`) - })) - } - - if (cacheStartUrl) { - if (!dynamicStartUrl) { - manifestEntries.push({ - url: basePath, - revision: buildId - }) - } else if (typeof dynamicStartUrlRedirect === 'string' && dynamicStartUrlRedirect.length > 0) { - manifestEntries.push({ - url: dynamicStartUrlRedirect, - revision: buildId - }) - } } + } - let _fallbacks = fallbacks + // 处理 fallback worker(等待编译完成) + let _fallbacks = fallbacks + try { if (_fallbacks) { - const res = buildFallbackWorker({ + const res = await buildFallbackWorker({ id: buildId, fallbacks, basedir: options.dir, @@ -188,7 +317,6 @@ module.exports = minify: !dev, pageExtensions }) - if (res) { _fallbacks = res.fallbacks importScripts.unshift(res.name) @@ -204,137 +332,117 @@ module.exports = _fallbacks = undefined } } + } catch (err) { + console.error('Error building fallback worker:', err) + } - const workboxCommon = { - swDest: path.join(_dest, sw), - additionalManifestEntries: dev ? [] : manifestEntries, - exclude: [ - ...buildExcludes, - ({ asset, compilation }) => { - if ( - asset.name.startsWith('server/') || - asset.name.match(/^(build-manifest\.json|react-loadable-manifest\.json)$/) - ) { - return true - } - if (dev && !asset.name.startsWith('static/runtime/')) { - return true - } - if (experimental.modern) { - if (asset.name.endsWith('.module.js')) { - return false - } - if (asset.name.endsWith('.js')) { - return true - } - } - return false - } - ], - modifyURLPrefix: { - ...modifyURLPrefix, - '/_next/../public/': '/' - }, - manifestTransforms: [ - ...manifestTransforms, - async (manifestEntries, compilation) => { - const manifest = manifestEntries.map(m => { - m.url = m.url.replace('/_next//static/image', '/_next/static/image') - m.url = m.url.replace('/_next//static/media', '/_next/static/media') - if (m.revision === null) { - let key = m.url - if (key.startsWith(config.output.publicPath)) { - key = m.url.substring(config.output.publicPath.length) - } - const asset = compilation.assetsInfo.get(key) - m.revision = asset ? asset.contenthash || buildId : buildId - } - m.url = m.url.replace(/\[/g, '%5B').replace(/\]/g, '%5D') - return m - }) - return { manifest, warnings: [] } - } + // 合并用户自定义的 manifestTransforms 与默认转换函数 + const combinedManifestTransforms = disableDefaultManifestTransform + ? [...userManifestTransforms] + : [ + ...userManifestTransforms, + async (entries, compilation) => await defaultTransform(entries, compilation, buildId) ] - } - - if (workbox.swSrc) { - const swSrc = path.join(options.dir, workbox.swSrc) - console.log(`> [PWA] Inject manifest in ${swSrc}`) - config.plugins.push( - new WorkboxPlugin.InjectManifest({ - ...workboxCommon, - ...workbox, - swSrc - }) - ) - } else { - if (dev) { - console.log( - '> [PWA] Build in develop mode, cache and precache are mostly disabled. This means offline support is disabled, but you can continue developing other functions in service worker.' - ) - ignoreURLParametersMatching.push(/ts/) - runtimeCaching = [ - { - urlPattern: /.*/i, - handler: 'NetworkOnly', - options: { - cacheName: 'dev' - } - } - ] + // 定义 Workbox 通用配置 + const workboxCommon = { + swDest: path.join(_dest, sw), + additionalManifestEntries: dev ? [] : manifestEntries, + exclude: [ + ...buildExcludes, + ({ asset, compilation }) => { + if ( + asset.name.startsWith('server/') || + asset.name.match(/^(build-manifest\.json|react-loadable-manifest\.json)$/) + ) { + return true + } + if (dev && !asset.name.startsWith('static/runtime/')) { + return true + } + if (experimental.modern) { + if (asset.name.endsWith('.module.js')) return false + if (asset.name.endsWith('.js')) return true + } + return false } + ], + modifyURLPrefix: { + ...modifyURLPrefix, + '/_next/../public/': '/' + }, + manifestTransforms: combinedManifestTransforms + } - if (dynamicStartUrl) { - runtimeCaching.unshift({ - urlPattern: basePath, - handler: 'NetworkFirst', - options: { - cacheName: 'start-url', - plugins: [ - { - cacheWillUpdate: async ({ request, response, event, state }) => { - if (response && response.type === 'opaqueredirect') { - return new Response(response.body, { - status: 200, - statusText: 'OK', - headers: response.headers - }) - } - return response + // 根据是否使用自定义 Service Worker 源文件分为两种模式 + if (workbox.swSrc) { + const swSrc = path.join(options.dir, workbox.swSrc) + console.log(`> [PWA] Inject manifest in ${swSrc}`) + config.plugins.push( + new WorkboxPlugin.InjectManifest({ + ...workboxCommon, + ...workbox, + swSrc + }) + ) + } else { + if (dev) { + console.log('> [PWA] Develop mode: caching is disabled for offline support; using NetworkOnly strategy.') + ignoreURLParametersMatching.push(/ts/) + runtimeCaching = [ + { + urlPattern: /.*/i, + handler: 'NetworkOnly', + options: { cacheName: 'dev' } + } + ] + } + if (dynamicStartUrl) { + runtimeCaching.unshift({ + urlPattern: basePath, + handler: 'NetworkFirst', + options: { + cacheName: 'start-url', + plugins: [ + { + cacheWillUpdate: async ({ request, response }) => { + if (response && response.type === 'opaqueredirect') { + return new Response(response.body, { + status: 200, + statusText: 'OK', + headers: response.headers + }) } + return response } - ] - } - }) - } - - if (_fallbacks) { - runtimeCaching.forEach(c => { - if (c.options.precacheFallback) return - if (Array.isArray(c.options.plugins) && c.options.plugins.find(p => 'handlerDidError' in p)) return - if (!c.options.plugins) c.options.plugins = [] - c.options.plugins.push({ - handlerDidError: async ({ request }) => self.fallback(request) - }) - }) - } - - config.plugins.push( - new WorkboxPlugin.GenerateSW({ - ...workboxCommon, - skipWaiting, - clientsClaim, - cleanupOutdatedCaches, - ignoreURLParametersMatching, - importScripts, - ...workbox, - runtimeCaching + } + ] + } + }) + } + if (_fallbacks) { + runtimeCaching.forEach(c => { + if (!c.options.plugins) c.options.plugins = [] + c.options.plugins.push({ + handlerDidError: async ({ request }) => self.fallback(request) }) - ) + }) } + config.plugins.push( + new WorkboxPlugin.GenerateSW({ + ...workboxCommon, + skipWaiting, + clientsClaim, + cleanupOutdatedCaches, + ignoreURLParametersMatching, + importScripts, + ...workbox, + runtimeCaching + }) + ) } - - return config } - }) \ No newline at end of file + + return config + } + }) diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 0c8bc86c..00000000 --- a/package-lock.json +++ /dev/null @@ -1,8546 +0,0 @@ -{ - "name": "next-pwa-new", - "version": "5.5.4", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "next-pwa-new", - "version": "5.5.4", - "license": "MIT", - "dependencies": { - "babel-loader": "^8.2.5", - "clean-webpack-plugin": "^4.0.0", - "globby": "^11.0.4", - "terser-webpack-plugin": "^5.3.3", - "workbox-webpack-plugin": "^6.5.4", - "workbox-window": "^6.5.4" - }, - "devDependencies": { - "webpack": "^5.74.0" - }, - "peerDependencies": { - "next": ">=9.0.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", - "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", - "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", - "dependencies": { - "@babel/types": "^7.18.9", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", - "dependencies": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", - "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", - "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", - "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", - "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dependencies": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", - "dependencies": { - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", - "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", - "dependencies": { - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.9.tgz", - "integrity": "sha512-cG2ru3TRAL6a60tfQflpEfs4ldiPwF6YW3zfJiRgmoFVIaC1vGnBBgatfec+ZUziPHkHSaXAuEck3Cdkf3eRpQ==", - "dependencies": { - "@babel/helper-function-name": "^7.18.9", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", - "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", - "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz", - "integrity": "sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", - "dependencies": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", - "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", - "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", - "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", - "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", - "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", - "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", - "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz", - "integrity": "sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.9.tgz", - "integrity": "sha512-75pt/q95cMIHWssYtyfjVlvI+QEZQThQbKvR9xH+F/Agtw/s4Wfc2V9Bwd/P39VtixB7oWxGdH4GteTTwYJWMg==", - "dependencies": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.18.6", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.9", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.9", - "@babel/plugin-transform-classes": "^7.18.9", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.18.9", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.18.9", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.18.9", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.6", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.9", - "babel-plugin-polyfill-corejs2": "^0.3.1", - "babel-plugin-polyfill-corejs3": "^0.5.2", - "babel-plugin-polyfill-regenerator": "^0.3.1", - "core-js-compat": "^3.22.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", - "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", - "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.9", - "@babel/types": "^7.18.9", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", - "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@next/env": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.4.tgz", - "integrity": "sha512-7gQwotJDKnfMxxXd8xJ2vsX5AzyDxO3zou0+QOXX8/unypA6icw5+wf6A62yKZ6qQ4UZHHxS68pb6UV+wNneXg==", - "peer": true - }, - "node_modules/@next/swc-android-arm-eabi": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.4.tgz", - "integrity": "sha512-FJg/6a3s2YrUaqZ+/DJZzeZqfxbbWrynQMT1C5wlIEq9aDLXCFpPM/PiOyJh0ahxc0XPmi6uo38Poq+GJTuKWw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-android-arm64": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.4.tgz", - "integrity": "sha512-LXraazvQQFBgxIg3Htny6G5V5he9EK7oS4jWtMdTGIikmD/OGByOv8ZjLuVLZLtVm3UIvaAiGtlQSLecxJoJDw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.4.tgz", - "integrity": "sha512-SSST/dBymecllZxcqTCcSTCu5o1NKk9I+xcvhn/O9nH6GWjgvGgGkNqLbCarCa0jJ1ukvlBA138FagyrmZ/4rQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.4.tgz", - "integrity": "sha512-p1lwdX0TVjaoDXQVuAkjtxVBbCL/urgxiMCBwuPDO7TikpXtSRivi+mIzBj5q7ypgICFmIAOW3TyupXeoPRAnA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm-gnueabihf": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.4.tgz", - "integrity": "sha512-67PZlgkCn3TDxacdVft0xqDCL7Io1/C4xbAs0+oSQ0xzp6OzN2RNpuKjHJrJgKd0DsE1XZ9sCP27Qv0591yfyg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.4.tgz", - "integrity": "sha512-OnOWixhhw7aU22TQdQLYrgpgFq0oA1wGgnjAiHJ+St7MLj82KTDyM9UcymAMbGYy6nG/TFOOHdTmRMtCRNOw0g==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.4.tgz", - "integrity": "sha512-UoRMzPZnsAavdWtVylYxH8DNC7Uy0i6RrvNwT4PyQVdfANBn2omsUkcH5lgS2O7oaz0nAYLk1vqyZDO7+tJotA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.4.tgz", - "integrity": "sha512-nM+MA/frxlTLUKLJKorctdI20/ugfHRjVEEkcLp/58LGG7slNaP1E5d5dRA1yX6ISjPcQAkywas5VlGCg+uTvA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.4.tgz", - "integrity": "sha512-GoRHxkuW4u4yKw734B9SzxJwVdyEJosaZ62P7ifOwcujTxhgBt3y76V2nNUrsSuopcKI2ZTDjaa+2wd5zyeXbA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.4.tgz", - "integrity": "sha512-6TQkQze0ievXwHJcVUrIULwCYVe3ccX6T0JgZ1SiMeXpHxISN7VJF/O8uSCw1JvXZYZ6ud0CJ7nfC5HXivgfPg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.4.tgz", - "integrity": "sha512-CsbX/IXuZ5VSmWCpSetG2HD6VO5FTsO39WNp2IR2Ut/uom9XtLDJAZqjQEnbUTLGHuwDKFjrIO3LkhtROXLE/g==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.4.tgz", - "integrity": "sha512-JtYuWzKXKLDMgE/xTcFtCm1MiCIRaAc5XYZfYX3n/ZWSI1SJS/GMm+Su0SAHJgRFavJh6U/p998YwO/iGTIgqQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rollup/plugin-babel": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", - "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", - "dependencies": { - "@babel/helper-module-imports": "^7.10.4", - "@rollup/pluginutils": "^3.1.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "@types/babel__core": "^7.1.9", - "rollup": "^1.20.0||^2.0.0" - }, - "peerDependenciesMeta": { - "@types/babel__core": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/plugin-replace": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", - "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" - }, - "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/pluginutils/node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" - }, - "node_modules/@surma/rollup-plugin-off-main-thread": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", - "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", - "dependencies": { - "ejs": "^3.1.6", - "json5": "^2.2.0", - "magic-string": "^0.25.0", - "string.prototype.matchall": "^4.0.6" - } - }, - "node_modules/@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" - }, - "node_modules/@types/node": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", - "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==" - }, - "node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/trusted-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", - "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==" - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", - "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", - "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.2", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", - "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.2", - "core-js-compat": "^3.21.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "engines": { - "node": "*" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001370", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz", - "integrity": "sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/clean-webpack-plugin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", - "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", - "dependencies": { - "del": "^4.1.1" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "webpack": ">=4.0.0 <6.0.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/core-js-compat": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.0.tgz", - "integrity": "sha512-F+2E63X3ff/nj8uIrf8Rf24UDGIz7p838+xjEp+Bx3y8OWXj+VTPPZNCtdqovPaS9o7Tka5mCH01Zn5vOd6UQg==", - "dependencies": { - "browserslist": "^4.21.2", - "semver": "7.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dependencies": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/del/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ejs": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.204", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.204.tgz", - "integrity": "sha512-5Ojjtw9/c9HCXtMVE6SXVSHSNjmbFOXpKprl6mY/5moLSxLeWatuYA7KTD+RzJMxLRH6yNNQrqGz9p6IoNBMgw==" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/idb": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.2.tgz", - "integrity": "sha512-jjKrT1EnyZewQ/gCBb/eyiYrhGzws2FeY92Yx8qT9S9GeQAmo4JFVIiWRIfKW/6Ob9A+UDAOW9j9jn58fy2HIg==" - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dependencies": { - "is-path-inside": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dependencies": { - "path-is-inside": "^1.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jake/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jake/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jake/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jake/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonpointer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "peer": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/nanoid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", - "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", - "peer": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/next": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/next/-/next-12.1.4.tgz", - "integrity": "sha512-DA4g97BM4Z0nKtDvCTm58RxdvoQyYzeg0AeVbh0N4Y/D8ELrNu47lQeEgRGF8hV4eQ+Sal90zxrJQQG/mPQ8CQ==", - "peer": true, - "dependencies": { - "@next/env": "12.1.4", - "caniuse-lite": "^1.0.30001283", - "postcss": "8.4.5", - "styled-jsx": "5.0.1" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=12.22.0" - }, - "optionalDependencies": { - "@next/swc-android-arm-eabi": "12.1.4", - "@next/swc-android-arm64": "12.1.4", - "@next/swc-darwin-arm64": "12.1.4", - "@next/swc-darwin-x64": "12.1.4", - "@next/swc-linux-arm-gnueabihf": "12.1.4", - "@next/swc-linux-arm64-gnu": "12.1.4", - "@next/swc-linux-arm64-musl": "12.1.4", - "@next/swc-linux-x64-gnu": "12.1.4", - "@next/swc-linux-x64-musl": "12.1.4", - "@next/swc-win32-arm64-msvc": "12.1.4", - "@next/swc-win32-ia32-msvc": "12.1.4", - "@next/swc-win32-x64-msvc": "12.1.4" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^6.0.0 || ^7.0.0", - "react": "^17.0.2 || ^18.0.0-0", - "react-dom": "^17.0.2 || ^18.0.0-0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", - "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", - "peer": true, - "dependencies": { - "nanoid": "^3.1.30", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/react": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", - "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", - "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.21.0" - }, - "peerDependencies": { - "react": "^18.0.0" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - }, - "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpu-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", - "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==" - }, - "node_modules/regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/rollup": { - "version": "2.77.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.2.tgz", - "integrity": "sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - }, - "peerDependencies": { - "rollup": "^2.0.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/rollup-plugin-terser/node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/scheduler": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", - "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - }, - "node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dependencies": { - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.1", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dependencies": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", - "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", - "engines": { - "node": ">=10" - } - }, - "node_modules/styled-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.1.tgz", - "integrity": "sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==", - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/tempy": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", - "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", - "dependencies": { - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", - "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", - "dependencies": { - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - }, - "node_modules/webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/workbox-background-sync": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz", - "integrity": "sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==", - "dependencies": { - "idb": "^7.0.1", - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-broadcast-update": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz", - "integrity": "sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==", - "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-build": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz", - "integrity": "sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==", - "dependencies": { - "@apideck/better-ajv-errors": "^0.3.1", - "@babel/core": "^7.11.1", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.2", - "@rollup/plugin-babel": "^5.2.0", - "@rollup/plugin-node-resolve": "^11.2.1", - "@rollup/plugin-replace": "^2.4.1", - "@surma/rollup-plugin-off-main-thread": "^2.2.3", - "ajv": "^8.6.0", - "common-tags": "^1.8.0", - "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^9.0.1", - "glob": "^7.1.6", - "lodash": "^4.17.20", - "pretty-bytes": "^5.3.0", - "rollup": "^2.43.1", - "rollup-plugin-terser": "^7.0.0", - "source-map": "^0.8.0-beta.0", - "stringify-object": "^3.3.0", - "strip-comments": "^2.0.1", - "tempy": "^0.6.0", - "upath": "^1.2.0", - "workbox-background-sync": "6.5.4", - "workbox-broadcast-update": "6.5.4", - "workbox-cacheable-response": "6.5.4", - "workbox-core": "6.5.4", - "workbox-expiration": "6.5.4", - "workbox-google-analytics": "6.5.4", - "workbox-navigation-preload": "6.5.4", - "workbox-precaching": "6.5.4", - "workbox-range-requests": "6.5.4", - "workbox-recipes": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4", - "workbox-streams": "6.5.4", - "workbox-sw": "6.5.4", - "workbox-window": "6.5.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", - "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", - "dependencies": { - "json-schema": "^0.4.0", - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "ajv": ">=8" - } - }, - "node_modules/workbox-build/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/workbox-build/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/workbox-cacheable-response": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz", - "integrity": "sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==", - "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-core": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz", - "integrity": "sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==" - }, - "node_modules/workbox-expiration": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz", - "integrity": "sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==", - "dependencies": { - "idb": "^7.0.1", - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-google-analytics": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz", - "integrity": "sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==", - "dependencies": { - "workbox-background-sync": "6.5.4", - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" - } - }, - "node_modules/workbox-navigation-preload": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz", - "integrity": "sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==", - "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-precaching": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz", - "integrity": "sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==", - "dependencies": { - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" - } - }, - "node_modules/workbox-range-requests": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz", - "integrity": "sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==", - "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-recipes": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz", - "integrity": "sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==", - "dependencies": { - "workbox-cacheable-response": "6.5.4", - "workbox-core": "6.5.4", - "workbox-expiration": "6.5.4", - "workbox-precaching": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" - } - }, - "node_modules/workbox-routing": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz", - "integrity": "sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==", - "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-strategies": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz", - "integrity": "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==", - "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-streams": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz", - "integrity": "sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==", - "dependencies": { - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4" - } - }, - "node_modules/workbox-sw": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz", - "integrity": "sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==" - }, - "node_modules/workbox-webpack-plugin": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz", - "integrity": "sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==", - "dependencies": { - "fast-json-stable-stringify": "^2.1.0", - "pretty-bytes": "^5.4.1", - "upath": "^1.2.0", - "webpack-sources": "^1.4.3", - "workbox-build": "6.5.4" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "webpack": "^4.4.0 || ^5.9.0" - } - }, - "node_modules/workbox-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/workbox-window": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz", - "integrity": "sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==", - "dependencies": { - "@types/trusted-types": "^2.0.2", - "workbox-core": "6.5.4" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", - "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", - "requires": { - "@jridgewell/trace-mapping": "^0.3.0" - } - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==" - }, - "@babel/core": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - } - }, - "@babel/generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", - "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", - "requires": { - "@babel/types": "^7.18.9", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", - "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", - "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", - "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", - "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", - "requires": { - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==" - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-replace-supers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", - "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", - "requires": { - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" - }, - "@babel/helper-wrap-function": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.9.tgz", - "integrity": "sha512-cG2ru3TRAL6a60tfQflpEfs4ldiPwF6YW3zfJiRgmoFVIaC1vGnBBgatfec+ZUziPHkHSaXAuEck3Cdkf3eRpQ==", - "requires": { - "@babel/helper-function-name": "^7.18.9", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", - "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", - "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==" - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz", - "integrity": "sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==", - "requires": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", - "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", - "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", - "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", - "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", - "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", - "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz", - "integrity": "sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/preset-env": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.9.tgz", - "integrity": "sha512-75pt/q95cMIHWssYtyfjVlvI+QEZQThQbKvR9xH+F/Agtw/s4Wfc2V9Bwd/P39VtixB7oWxGdH4GteTTwYJWMg==", - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.18.6", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.9", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.9", - "@babel/plugin-transform-classes": "^7.18.9", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.18.9", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.18.9", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.18.9", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.6", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.9", - "babel-plugin-polyfill-corejs2": "^0.3.1", - "babel-plugin-polyfill-corejs3": "^0.5.2", - "babel-plugin-polyfill-regenerator": "^0.3.1", - "core-js-compat": "^3.22.1", - "semver": "^6.3.0" - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", - "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/traverse": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", - "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.9", - "@babel/types": "^7.18.9", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==" - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", - "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@next/env": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.4.tgz", - "integrity": "sha512-7gQwotJDKnfMxxXd8xJ2vsX5AzyDxO3zou0+QOXX8/unypA6icw5+wf6A62yKZ6qQ4UZHHxS68pb6UV+wNneXg==", - "peer": true - }, - "@next/swc-android-arm-eabi": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.4.tgz", - "integrity": "sha512-FJg/6a3s2YrUaqZ+/DJZzeZqfxbbWrynQMT1C5wlIEq9aDLXCFpPM/PiOyJh0ahxc0XPmi6uo38Poq+GJTuKWw==", - "optional": true, - "peer": true - }, - "@next/swc-android-arm64": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.4.tgz", - "integrity": "sha512-LXraazvQQFBgxIg3Htny6G5V5he9EK7oS4jWtMdTGIikmD/OGByOv8ZjLuVLZLtVm3UIvaAiGtlQSLecxJoJDw==", - "optional": true, - "peer": true - }, - "@next/swc-darwin-arm64": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.4.tgz", - "integrity": "sha512-SSST/dBymecllZxcqTCcSTCu5o1NKk9I+xcvhn/O9nH6GWjgvGgGkNqLbCarCa0jJ1ukvlBA138FagyrmZ/4rQ==", - "optional": true, - "peer": true - }, - "@next/swc-darwin-x64": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.4.tgz", - "integrity": "sha512-p1lwdX0TVjaoDXQVuAkjtxVBbCL/urgxiMCBwuPDO7TikpXtSRivi+mIzBj5q7ypgICFmIAOW3TyupXeoPRAnA==", - "optional": true, - "peer": true - }, - "@next/swc-linux-arm-gnueabihf": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.4.tgz", - "integrity": "sha512-67PZlgkCn3TDxacdVft0xqDCL7Io1/C4xbAs0+oSQ0xzp6OzN2RNpuKjHJrJgKd0DsE1XZ9sCP27Qv0591yfyg==", - "optional": true, - "peer": true - }, - "@next/swc-linux-arm64-gnu": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.4.tgz", - "integrity": "sha512-OnOWixhhw7aU22TQdQLYrgpgFq0oA1wGgnjAiHJ+St7MLj82KTDyM9UcymAMbGYy6nG/TFOOHdTmRMtCRNOw0g==", - "optional": true, - "peer": true - }, - "@next/swc-linux-arm64-musl": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.4.tgz", - "integrity": "sha512-UoRMzPZnsAavdWtVylYxH8DNC7Uy0i6RrvNwT4PyQVdfANBn2omsUkcH5lgS2O7oaz0nAYLk1vqyZDO7+tJotA==", - "optional": true, - "peer": true - }, - "@next/swc-linux-x64-gnu": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.4.tgz", - "integrity": "sha512-nM+MA/frxlTLUKLJKorctdI20/ugfHRjVEEkcLp/58LGG7slNaP1E5d5dRA1yX6ISjPcQAkywas5VlGCg+uTvA==", - "optional": true, - "peer": true - }, - "@next/swc-linux-x64-musl": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.4.tgz", - "integrity": "sha512-GoRHxkuW4u4yKw734B9SzxJwVdyEJosaZ62P7ifOwcujTxhgBt3y76V2nNUrsSuopcKI2ZTDjaa+2wd5zyeXbA==", - "optional": true, - "peer": true - }, - "@next/swc-win32-arm64-msvc": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.4.tgz", - "integrity": "sha512-6TQkQze0ievXwHJcVUrIULwCYVe3ccX6T0JgZ1SiMeXpHxISN7VJF/O8uSCw1JvXZYZ6ud0CJ7nfC5HXivgfPg==", - "optional": true, - "peer": true - }, - "@next/swc-win32-ia32-msvc": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.4.tgz", - "integrity": "sha512-CsbX/IXuZ5VSmWCpSetG2HD6VO5FTsO39WNp2IR2Ut/uom9XtLDJAZqjQEnbUTLGHuwDKFjrIO3LkhtROXLE/g==", - "optional": true, - "peer": true - }, - "@next/swc-win32-x64-msvc": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.4.tgz", - "integrity": "sha512-JtYuWzKXKLDMgE/xTcFtCm1MiCIRaAc5XYZfYX3n/ZWSI1SJS/GMm+Su0SAHJgRFavJh6U/p998YwO/iGTIgqQ==", - "optional": true, - "peer": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@rollup/plugin-babel": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", - "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", - "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@rollup/pluginutils": "^3.1.0" - } - }, - "@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", - "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - } - }, - "@rollup/plugin-replace": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", - "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", - "requires": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" - } - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" - } - } - }, - "@surma/rollup-plugin-off-main-thread": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", - "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", - "requires": { - "ejs": "^3.1.6", - "json5": "^2.2.0", - "magic-string": "^0.25.0", - "string.prototype.matchall": "^4.0.6" - } - }, - "@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" - }, - "@types/node": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", - "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==" - }, - "@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "requires": { - "@types/node": "*" - } - }, - "@types/trusted-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", - "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==" - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "requires": {} - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - }, - "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - }, - "babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", - "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.2", - "semver": "^6.1.1" - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", - "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.2", - "core-js-compat": "^3.21.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", - "requires": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==" - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "caniuse-lite": { - "version": "1.0.30001370", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz", - "integrity": "sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g==" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - }, - "clean-webpack-plugin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", - "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", - "requires": { - "del": "^4.1.1" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==" - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "core-js-compat": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.0.tgz", - "integrity": "sha512-F+2E63X3ff/nj8uIrf8Rf24UDGIz7p838+xjEp+Bx3y8OWXj+VTPPZNCtdqovPaS9o7Tka5mCH01Zn5vOd6UQg==", - "requires": { - "browserslist": "^4.21.2", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" - } - } - }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "dependencies": { - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "^1.0.1" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } - } - } - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "requires": { - "path-type": "^4.0.0" - } - }, - "ejs": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", - "requires": { - "jake": "^10.8.5" - } - }, - "electron-to-chromium": { - "version": "1.4.204", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.204.tgz", - "integrity": "sha512-5Ojjtw9/c9HCXtMVE6SXVSHSNjmbFOXpKprl6mY/5moLSxLeWatuYA7KTD+RzJMxLRH6yNNQrqGz9p6IoNBMgw==" - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - }, - "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "requires": { - "reusify": "^1.0.4" - } - }, - "filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "requires": { - "minimatch": "^5.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - }, - "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "idb": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.2.tgz", - "integrity": "sha512-jjKrT1EnyZewQ/gCBb/eyiYrhGzws2FeY92Yx8qT9S9GeQAmo4JFVIiWRIfKW/6Ob9A+UDAOW9j9jn58fy2HIg==" - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" - }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==" - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "requires": { - "path-is-inside": "^1.0.2" - } - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==" - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", - "requires": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jsonpointer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==" - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" - }, - "loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==" - }, - "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "peer": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "requires": { - "semver": "^6.0.0" - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "nanoid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", - "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", - "peer": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "next": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/next/-/next-12.1.4.tgz", - "integrity": "sha512-DA4g97BM4Z0nKtDvCTm58RxdvoQyYzeg0AeVbh0N4Y/D8ELrNu47lQeEgRGF8hV4eQ+Sal90zxrJQQG/mPQ8CQ==", - "peer": true, - "requires": { - "@next/env": "12.1.4", - "@next/swc-android-arm-eabi": "12.1.4", - "@next/swc-android-arm64": "12.1.4", - "@next/swc-darwin-arm64": "12.1.4", - "@next/swc-darwin-x64": "12.1.4", - "@next/swc-linux-arm-gnueabihf": "12.1.4", - "@next/swc-linux-arm64-gnu": "12.1.4", - "@next/swc-linux-arm64-musl": "12.1.4", - "@next/swc-linux-x64-gnu": "12.1.4", - "@next/swc-linux-x64-musl": "12.1.4", - "@next/swc-win32-arm64-msvc": "12.1.4", - "@next/swc-win32-ia32-msvc": "12.1.4", - "@next/swc-win32-x64-msvc": "12.1.4", - "caniuse-lite": "^1.0.30001283", - "postcss": "8.4.5", - "styled-jsx": "5.0.1" - } - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "requires": { - "find-up": "^4.0.0" - } - }, - "postcss": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", - "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", - "peer": true, - "requires": { - "nanoid": "^3.1.30", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.1" - } - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "react": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", - "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0" - } - }, - "react-dom": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", - "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "scheduler": "^0.21.0" - } - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - }, - "regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - }, - "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, - "regexpu-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", - "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==" - }, - "regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" - } - } - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - }, - "rollup": { - "version": "2.77.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.2.tgz", - "integrity": "sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==", - "requires": { - "fsevents": "~2.3.2" - } - }, - "rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "requires": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "requires": { - "randombytes": "^2.1.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "scheduler": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", - "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0" - } - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "requires": { - "randombytes": "^2.1.0" - } - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - }, - "source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "requires": { - "whatwg-url": "^7.0.0" - } - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "peer": true - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "string.prototype.matchall": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.1", - "side-channel": "^1.0.4" - } - }, - "string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - } - }, - "strip-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", - "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==" - }, - "styled-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.1.tgz", - "integrity": "sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==", - "peer": true, - "requires": {} - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - }, - "temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==" - }, - "tempy": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", - "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", - "requires": { - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - } - }, - "terser": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", - "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", - "requires": { - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - } - } - }, - "terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", - "requires": { - "@jridgewell/trace-mapping": "^0.3.7", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "requires": { - "punycode": "^2.1.0" - } - }, - "type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==" - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==" - }, - "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==" - }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "requires": { - "crypto-random-string": "^2.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" - }, - "update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - }, - "webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "workbox-background-sync": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz", - "integrity": "sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==", - "requires": { - "idb": "^7.0.1", - "workbox-core": "6.5.4" - } - }, - "workbox-broadcast-update": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz", - "integrity": "sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==", - "requires": { - "workbox-core": "6.5.4" - } - }, - "workbox-build": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz", - "integrity": "sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==", - "requires": { - "@apideck/better-ajv-errors": "^0.3.1", - "@babel/core": "^7.11.1", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.2", - "@rollup/plugin-babel": "^5.2.0", - "@rollup/plugin-node-resolve": "^11.2.1", - "@rollup/plugin-replace": "^2.4.1", - "@surma/rollup-plugin-off-main-thread": "^2.2.3", - "ajv": "^8.6.0", - "common-tags": "^1.8.0", - "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^9.0.1", - "glob": "^7.1.6", - "lodash": "^4.17.20", - "pretty-bytes": "^5.3.0", - "rollup": "^2.43.1", - "rollup-plugin-terser": "^7.0.0", - "source-map": "^0.8.0-beta.0", - "stringify-object": "^3.3.0", - "strip-comments": "^2.0.1", - "tempy": "^0.6.0", - "upath": "^1.2.0", - "workbox-background-sync": "6.5.4", - "workbox-broadcast-update": "6.5.4", - "workbox-cacheable-response": "6.5.4", - "workbox-core": "6.5.4", - "workbox-expiration": "6.5.4", - "workbox-google-analytics": "6.5.4", - "workbox-navigation-preload": "6.5.4", - "workbox-precaching": "6.5.4", - "workbox-range-requests": "6.5.4", - "workbox-recipes": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4", - "workbox-streams": "6.5.4", - "workbox-sw": "6.5.4", - "workbox-window": "6.5.4" - }, - "dependencies": { - "@apideck/better-ajv-errors": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", - "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", - "requires": { - "json-schema": "^0.4.0", - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - } - }, - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - } - } - }, - "workbox-cacheable-response": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz", - "integrity": "sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==", - "requires": { - "workbox-core": "6.5.4" - } - }, - "workbox-core": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz", - "integrity": "sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==" - }, - "workbox-expiration": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz", - "integrity": "sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==", - "requires": { - "idb": "^7.0.1", - "workbox-core": "6.5.4" - } - }, - "workbox-google-analytics": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz", - "integrity": "sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==", - "requires": { - "workbox-background-sync": "6.5.4", - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" - } - }, - "workbox-navigation-preload": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz", - "integrity": "sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==", - "requires": { - "workbox-core": "6.5.4" - } - }, - "workbox-precaching": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz", - "integrity": "sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==", - "requires": { - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" - } - }, - "workbox-range-requests": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz", - "integrity": "sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==", - "requires": { - "workbox-core": "6.5.4" - } - }, - "workbox-recipes": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz", - "integrity": "sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==", - "requires": { - "workbox-cacheable-response": "6.5.4", - "workbox-core": "6.5.4", - "workbox-expiration": "6.5.4", - "workbox-precaching": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" - } - }, - "workbox-routing": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz", - "integrity": "sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==", - "requires": { - "workbox-core": "6.5.4" - } - }, - "workbox-strategies": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz", - "integrity": "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==", - "requires": { - "workbox-core": "6.5.4" - } - }, - "workbox-streams": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz", - "integrity": "sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==", - "requires": { - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4" - } - }, - "workbox-sw": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz", - "integrity": "sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==" - }, - "workbox-webpack-plugin": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz", - "integrity": "sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==", - "requires": { - "fast-json-stable-stringify": "^2.1.0", - "pretty-bytes": "^5.4.1", - "upath": "^1.2.0", - "webpack-sources": "^1.4.3", - "workbox-build": "6.5.4" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } - } - }, - "workbox-window": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz", - "integrity": "sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==", - "requires": { - "@types/trusted-types": "^2.0.2", - "workbox-core": "6.5.4" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - } - } -} diff --git a/package.json b/package.json index 69498917..619d5357 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,24 @@ { "name": "next-pwa-new", - "version": "6.0.1", + "version": "6.0.2", "description": "Next.js with PWA, powered by workbox.", "main": "index.js", "repository": "https://github.com/C-Jeril/next-pwa", "author": "AlexJesus ", "license": "MIT", "private": false, + "type": "module", + "scripts": { + "test": "node --experimental-vm-modules ./node_modules/.bin/jest" + }, + "files": [ + "index.js", + "cache.js", + "register.js", + "build-custom-worker.js", + "build-fallback-worker.js", + "webpack-worker-config.js" + ], "keywords": [ "nextjs", "pwa", @@ -19,11 +31,12 @@ "clean-webpack-plugin": "^4.0.0", "globby": "^14.1.0", "terser-webpack-plugin": "^5.3.14", - "workbox-webpack-plugin": "^7.3.0", + "workbox-cacheable-response": "^7.3.0", "workbox-window": "^7.3.0" }, "devDependencies": { - "webpack": "^5.98.0" + "webpack": "^5.98.0", + "workbox-webpack-plugin": "^7.3.0" }, "peerDependencies": { "next": ">=13.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8b36f690..8b3c94fa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,9 +26,9 @@ importers: terser-webpack-plugin: specifier: ^5.3.14 version: 5.3.14(webpack@5.98.0) - workbox-webpack-plugin: + workbox-cacheable-response: specifier: ^7.3.0 - version: 7.3.0(webpack@5.98.0) + version: 7.3.0 workbox-window: specifier: ^7.3.0 version: 7.3.0 @@ -36,6 +36,9 @@ importers: webpack: specifier: ^5.98.0 version: 5.98.0 + workbox-webpack-plugin: + specifier: ^7.3.0 + version: 7.3.0(@types/babel__core@7.20.5)(webpack@5.98.0) packages: @@ -804,6 +807,18 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} @@ -2916,12 +2931,14 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 - '@rollup/plugin-babel@5.3.1(@babel/core@7.26.9)(rollup@2.79.2)': + '@rollup/plugin-babel@5.3.1(@babel/core@7.26.9)(@types/babel__core@7.20.5)(rollup@2.79.2)': dependencies: '@babel/core': 7.26.9 '@babel/helper-module-imports': 7.25.9 '@rollup/pluginutils': 3.1.0(rollup@2.79.2) rollup: 2.79.2 + optionalDependencies: + '@types/babel__core': 7.20.5 transitivePeerDependencies: - supports-color @@ -2979,6 +2996,31 @@ snapshots: dependencies: tslib: 2.8.1 + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + optional: true + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.26.9 + optional: true + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 + optional: true + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.26.9 + optional: true + '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 @@ -4416,13 +4458,13 @@ snapshots: dependencies: workbox-core: 7.3.0 - workbox-build@7.3.0: + workbox-build@7.3.0(@types/babel__core@7.20.5): dependencies: '@apideck/better-ajv-errors': 0.3.6(ajv@8.17.1) '@babel/core': 7.26.9 '@babel/preset-env': 7.26.9(@babel/core@7.26.9) '@babel/runtime': 7.26.9 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.26.9)(rollup@2.79.2) + '@rollup/plugin-babel': 5.3.1(@babel/core@7.26.9)(@types/babel__core@7.20.5)(rollup@2.79.2) '@rollup/plugin-node-resolve': 15.3.1(rollup@2.79.2) '@rollup/plugin-replace': 2.4.2(rollup@2.79.2) '@rollup/plugin-terser': 0.4.4(rollup@2.79.2) @@ -4515,14 +4557,14 @@ snapshots: workbox-sw@7.3.0: {} - workbox-webpack-plugin@7.3.0(webpack@5.98.0): + workbox-webpack-plugin@7.3.0(@types/babel__core@7.20.5)(webpack@5.98.0): dependencies: fast-json-stable-stringify: 2.1.0 pretty-bytes: 5.6.0 upath: 1.2.0 webpack: 5.98.0 webpack-sources: 1.4.3 - workbox-build: 7.3.0 + workbox-build: 7.3.0(@types/babel__core@7.20.5) transitivePeerDependencies: - '@types/babel__core' - supports-color diff --git a/register.js b/register.js index a0f1f4d2..fcceb2b1 100644 --- a/register.js +++ b/register.js @@ -1,119 +1,163 @@ // register.js import { Workbox } from 'workbox-window'; +// 仅在浏览器环境且支持 Service Worker 和 Cache API 时执行 if (typeof window !== 'undefined' && 'serviceWorker' in navigator && typeof caches !== 'undefined') { - // 如果配置了起始 URL,确保其被缓存 - if (__PWA_START_URL__) { - caches.has('start-url').then((has) => { - if (!has) { - caches.open('start-url').then((cache) => { - cache.put(__PWA_START_URL__, new Response('', { status: 200 })); + /** + * Helper: 确保起始 URL 已缓存 + * 使用 caches.has 兼容性检测,若不存在则使用 caches.keys() 判断缓存是否存在 + */ + const ensureStartUrlCached = async () => { + if (!__PWA_START_URL__) return; + try { + const cacheName = 'start-url'; + const cacheExists = typeof caches.has === 'function' + ? await caches.has(cacheName) + : (await caches.keys()).includes(cacheName); + if (!cacheExists) { + const cache = await caches.open(cacheName); + await cache.put(__PWA_START_URL__, new Response('', { status: 200 })); + } + } catch (err) { + console.error('Error ensuring start URL is cached:', err); + } + }; + + // 立即调用一次确保起始 URL 被缓存 + ensureStartUrlCached(); + + /** + * Helper: 根据 URL 缓存资源,并处理重定向情况 + */ + const cacheResource = async (url, cacheName) => { + try { + const cache = await caches.open(cacheName); + const response = await fetch(url); + if (response.redirected) { + // 如果有重定向,重新构造响应以确保状态为 200 + const newResponse = new Response(response.body, { + status: 200, + statusText: 'OK', + headers: response.headers, }); + await cache.put(url, newResponse); + } else { + await cache.put(url, response.clone()); } - }); - } + } catch (err) { + console.error(`Error caching resource ${url} in cache ${cacheName}:`, err); + } + }; + + /** + * Helper: 缓存 Next.js 数据(例如 /_next/data/.../*.json) + */ + const cacheNextData = async () => { + try { + const resources = window.performance.getEntriesByType('resource') + .map(e => e.name) + .filter(name => name.startsWith(`${window.location.origin}/_next/data/`) && name.endsWith('.json')); + const dataCache = await caches.open('next-data'); + await Promise.all(resources.map(url => dataCache.add(url))); + } catch (err) { + console.error('Error caching Next.js data:', err); + } + }; // 创建 Workbox 实例 const wb = new Workbox(window.location.origin + __PWA_SW__, { scope: __PWA_SCOPE__ }); - // 监听 installed 事件 - wb.addEventListener('installed', (event) => { + // 监听 SW 安装事件 + wb.addEventListener('installed', async (event) => { if (!event.isUpdate) { - // 如果是首次安装,缓存起始 URL - caches.open('start-url').then((cache) => { - fetch(__PWA_START_URL__).then((response) => { - if (response.redirected) { - cache.put(__PWA_START_URL__, new Response(response.body, { status: 200, statusText: 'OK', headers: response.headers })); - } else { - cache.put(__PWA_START_URL__, response.clone()); - } - }); - }); - - // 缓存 Next.js 数据 - const data = window.performance.getEntriesByType('resource') - .map((e) => e.name) - .filter((n) => n.startsWith(`${window.location.origin}/_next/data/`) && n.endsWith('.json')); - caches.open('next-data').then((cache) => { - data.forEach((url) => cache.add(url)); - }); + // 首次安装时,缓存起始 URL 和 Next.js 数据文件 + if (__PWA_START_URL__) { + await cacheResource(__PWA_START_URL__, 'start-url'); + } + await cacheNextData(); } }); - // 监听 waiting 事件 + // 监听 SW waiting 事件 wb.addEventListener('waiting', () => { console.log('A new service worker is waiting to activate.'); }); - // 监听 activated 事件 - wb.addEventListener('activated', (event) => { - if (!event.isUpdate) { - // 如果是首次激活,执行额外的缓存逻辑 - caches.open('start-url').then((cache) => { - fetch(__PWA_START_URL__).then((response) => { - if (!response.redirected) { - cache.put(__PWA_START_URL__, response); - } - }); - }); + // 监听 SW 激活事件 + wb.addEventListener('activated', async (event) => { + if (!event.isUpdate && __PWA_START_URL__) { + await cacheResource(__PWA_START_URL__, 'start-url'); } }); - // 监听 message 事件 - wb.addEventListener('message', (event) => { - if (event.data.type === 'CACHE_UPDATED') { + // 监听 SW 消息事件,提示缓存更新 + wb.addEventListener('message', event => { + if (event.data && event.data.type === 'CACHE_UPDATED') { const { updatedURL } = event.data.payload; console.log(`A newer version of ${updatedURL} is available!`); } }); - // 如果启用了服务工作线程注册,执行注册 + // 如果启用了自动注册,则注册 Service Worker if (__PWA_ENABLE_REGISTER__) { wb.register(); } - // 如果启用了前端导航缓存或起始 URL 缓存,设置相关逻辑 - if (__PWA_CACHE_ON_FRONT_END_NAV__ || __PWA_START_URL__) { - const cacheOnFrontEndNav = (url) => { - if (!window.navigator.onLine) return; - if (__PWA_CACHE_ON_FRONT_END_NAV__ && url !== __PWA_START_URL__) { - caches.open('others').then((cache) => { - cache.match(url, { ignoreSearch: true }).then((res) => { - if (!res) cache.add(url); - }); - }); - } else if (__PWA_START_URL__ && url === __PWA_START_URL__) { - fetch(__PWA_START_URL__).then((response) => { - if (!response.redirected) { - caches.open('start-url').then((cache) => cache.put(__PWA_START_URL__, response)); + // 前端导航缓存逻辑:仅在显式开启时 (__PWA_CACHE_ON_FRONT_END_NAV__) 执行历史 API 重写 + if (__PWA_CACHE_ON_FRONT_END_NAV__) { + /** + * Helper: 根据传入 URL 缓存资源 + */ + const cacheOnNavigation = async (url) => { + if (!navigator.onLine) return; + try { + // 针对非起始 URL 进行缓存 + if (url !== __PWA_START_URL__) { + const cache = await caches.open('others'); + const match = await cache.match(url, { ignoreSearch: true }); + if (!match) { + await cache.add(url); } - }); + } else if (__PWA_START_URL__ && url === __PWA_START_URL__) { + await cacheResource(__PWA_START_URL__, 'start-url'); + } + } catch (err) { + console.error(`Error caching navigation resource ${url}:`, err); } }; - // 覆写 history.pushState 和 history.replaceState 方法 - const originalPushState = history.pushState; - history.pushState = function () { - originalPushState.apply(history, arguments); - cacheOnFrontEndNav(arguments[2]); - }; + // 重写 history.pushState 与 history.replaceState 方法,加入缓存逻辑 + try { + const originalPushState = history.pushState; + history.pushState = function (...args) { + originalPushState.apply(history, args); + // args[2] 为新 URL,加入缓存逻辑 + cacheOnNavigation(args[2]); + }; - const originalReplaceState = history.replaceState; - history.replaceState = function () { - originalReplaceState.apply(history, arguments); - cacheOnFrontEndNav(arguments[2]); - }; + const originalReplaceState = history.replaceState; + history.replaceState = function (...args) { + originalReplaceState.apply(history, args); + cacheOnNavigation(args[2]); + }; + } catch (err) { + console.error('Error overriding history API for caching navigation:', err); + } + } - // 监听 online 事件 + // 针对起始 URL,单独添加在线事件监听(与导航缓存逻辑无关) + if (__PWA_START_URL__) { window.addEventListener('online', () => { - cacheOnFrontEndNav(window.location.pathname); + // 当网络恢复时,缓存当前页面 + cacheResource(__PWA_START_URL__, 'start-url'); }); } - // 如果启用了在线时重新加载,设置相关逻辑 + // 在线重载逻辑 if (__PWA_RELOAD_ON_ONLINE__) { window.addEventListener('online', () => { + // TODO: 可结合页面版本检测来判断是否需要重载,避免不必要的刷新 location.reload(); }); } -} \ No newline at end of file +} diff --git a/webpack-worker-config.js b/webpack-worker-config.js new file mode 100644 index 00000000..50a6cdf0 --- /dev/null +++ b/webpack-worker-config.js @@ -0,0 +1,106 @@ +// webpack-worker-config.js +'use strict'; + +import { CleanWebpackPlugin } from 'clean-webpack-plugin'; +import TerserPlugin from 'terser-webpack-plugin'; + +// 定义默认的 Node 内置模块回退配置,确保打包环境为 webworker +const defaultFallbacks = { + module: false, + dgram: false, + dns: false, + path: false, + fs: false, + os: false, + crypto: false, + stream: false, + http2: false, + net: false, + tls: false, + zlib: false, + child_process: false +}; + +/** + * 创建用于打包 worker 的通用 webpack 配置 + * @param {Object} options 配置项 + * @param {string} options.entry - 入口文件路径 + * @param {string} options.destdir - 输出目录 + * @param {string} options.filename - 输出文件名 + * @param {RegExp} options.testRule - babel-loader 应用的正则规则 + * @param {boolean} options.minify - 是否压缩代码 + * @param {Array} [options.extraPlugins=[]] - 额外的 webpack 插件 + * @param {Array} [options.extraExtensions=[]] - 额外的 resolve.extensions + * @param {Object} [options.customFallbacks={}] - 用户自定义 fallback 配置,覆盖默认 fallback + * @param {Object} [options.babelOptions={}] - 用户自定义 babel-loader 配置,合并默认配置 + * @returns {Object} webpack 配置对象 + */ +export function createWorkerWebpackConfig({ + entry, + destdir, + filename, + testRule, + minify, + extraPlugins = [], + extraExtensions = [], + customFallbacks = {}, + babelOptions = {} +}) { + const mergedFallbacks = Object.assign({}, defaultFallbacks, customFallbacks); + const defaultBabelOptions = { + presets: [ + [ + 'next/babel', + { + 'transform-runtime': { + corejs: false, + helpers: true, + regenerator: false, + useESModules: true + }, + 'preset-env': { + modules: false, + targets: 'chrome >= 56' + } + } + ] + ] + }; + + return { + mode: 'none', + target: 'webworker', + entry: { main: entry }, + resolve: { + extensions: [...extraExtensions, '.ts', '.js'], + fallback: mergedFallbacks + }, + module: { + rules: [ + { + test: testRule, + use: [ + { + loader: 'babel-loader', + options: { ...defaultBabelOptions, ...babelOptions } + } + ] + } + ] + }, + output: { + path: destdir, + filename: filename + }, + plugins: [ + new CleanWebpackPlugin(), + ...extraPlugins + ], + optimization: minify + ? { + minimize: true, + minimizer: [new TerserPlugin()] + } + : undefined + }; +} From f650654188b7a1b3b610591b830fa30eee481589 Mon Sep 17 00:00:00 2001 From: C-Jeril <34131400+C-Jeril@users.noreply.github.com> Date: Thu, 27 Mar 2025 11:13:02 +0800 Subject: [PATCH 7/8] Update for CommonJS --- index.js | 8 ++++---- package.json | 7 +++---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/index.js b/index.js index 23539317..9082b596 100644 --- a/index.js +++ b/index.js @@ -3,13 +3,13 @@ import path from 'path' import fs from 'fs' -import globby from 'globby' +import { globby } from 'globby' import crypto from 'crypto' import { CleanWebpackPlugin } from 'clean-webpack-plugin' import WorkboxPlugin from 'workbox-webpack-plugin' -import defaultCache from './cache' -import buildCustomWorker from './build-custom-worker' -import buildFallbackWorker from './build-fallback-worker' +import defaultCache from './cache.js' +import buildCustomWorker from './build-custom-worker.js' +import buildFallbackWorker from './build-fallback-worker.js' // 根据文件内容生成 revision 哈希 const getRevision = file => diff --git a/package.json b/package.json index 619d5357..87467acb 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,12 @@ { "name": "next-pwa-new", - "version": "6.0.2", + "version": "6.0.3", "description": "Next.js with PWA, powered by workbox.", "main": "index.js", - "repository": "https://github.com/C-Jeril/next-pwa", + "repository": "https://github.com/C-Jeril/next-pwa-new", "author": "AlexJesus ", "license": "MIT", "private": false, - "type": "module", "scripts": { "test": "node --experimental-vm-modules ./node_modules/.bin/jest" }, @@ -39,7 +38,7 @@ "workbox-webpack-plugin": "^7.3.0" }, "peerDependencies": { - "next": ">=13.0.0" + "next": ">=14.0.0" }, "resolutions": { "@typescript-eslint/eslint-plugin": "5.18.0" From 8318054b1a151895d8f06f17fddca47d20c333aa Mon Sep 17 00:00:00 2001 From: C-Jeril <34131400+C-Jeril@users.noreply.github.com> Date: Thu, 27 Mar 2025 11:34:23 +0800 Subject: [PATCH 8/8] Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1、 全局变量 polyfill 2、内部导入使用完整路径 3、自动注入 register.js --- fallback.js | 1 + index.js | 184 ++++++++++++++++++++++++++++++++------------------- package.json | 3 +- 3 files changed, 118 insertions(+), 70 deletions(-) diff --git a/fallback.js b/fallback.js index c3527d34..b681ef76 100644 --- a/fallback.js +++ b/fallback.js @@ -1,3 +1,4 @@ +// fallback.js 'use strict'; self.fallback = async request => { diff --git a/index.js b/index.js index 9082b596..018fd32d 100644 --- a/index.js +++ b/index.js @@ -1,15 +1,27 @@ // index.js -'use strict' - -import path from 'path' -import fs from 'fs' -import { globby } from 'globby' -import crypto from 'crypto' -import { CleanWebpackPlugin } from 'clean-webpack-plugin' -import WorkboxPlugin from 'workbox-webpack-plugin' -import defaultCache from './cache.js' -import buildCustomWorker from './build-custom-worker.js' -import buildFallbackWorker from './build-fallback-worker.js' +'use strict'; + +// 如果 self 不存在,则在 Node 环境中将其指向 global +if (typeof self === 'undefined') { + global.self = global; +} + +// 计算 __dirname(ESM 下没有内置 __dirname) +import { fileURLToPath } from 'url'; +import { dirname } from 'path'; +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +import path from 'path'; +import fs from 'fs'; +import { globby } from 'globby'; // globby v14+ 使用命名导出 +import crypto from 'crypto'; +import { CleanWebpackPlugin } from 'clean-webpack-plugin'; +import WorkboxPlugin from 'workbox-webpack-plugin'; +import defaultCache from './cache.js'; +import buildCustomWorker from './build-custom-worker.js'; +import buildFallbackWorker from './build-fallback-worker.js'; + // 根据文件内容生成 revision 哈希 const getRevision = file => @@ -215,18 +227,39 @@ export default (pluginOptions = {}) => (nextConfig = {}) => ) // 自动将 register.js 注入到 main.js 的入口中 - const registerJs = path.join(__dirname, 'register.js') - const entry = config.entry - config.entry = () => - entry().then(entries => { - if (entries['main.js'] && !entries['main.js'].includes(registerJs)) { - entries['main.js'].unshift(registerJs) - } - return entries - }) +const registerJs = path.join(__dirname, 'register.js'); +if (fs.existsSync(registerJs)) { + const entry = config.entry; + config.entry = () => + entry().then(entries => { + if (entries['main.js'] && !entries['main.js'].includes(registerJs)) { + entries['main.js'].unshift(registerJs); + } + return entries; + }); +} else { + console.warn('> [PWA] register.js not found; skipping auto registration.'); +} + + +if (!options.isServer) { + const _dest = path.join(options.dir, dest); + + // 根据需要将起始 URL 添加到 manifestEntries 中…… + if (cacheStartUrl) { + if (!dynamicStartUrl) { + manifestEntries.push({ + url: basePath, + revision: buildId + }); + } else if (typeof dynamicStartUrlRedirect === 'string' && dynamicStartUrlRedirect.length > 0) { + manifestEntries.push({ + url: dynamicStartUrlRedirect, + revision: buildId + }); + } + } - if (!options.isServer) { - const _dest = path.join(options.dir, dest) // 构建自定义 worker(等待编译完成) let customWorkerScriptName @@ -269,27 +302,40 @@ export default (pluginOptions = {}) => (nextConfig = {}) => }) ) + // 如果处于开发模式,则跳过复杂的 precaching 逻辑 + if (dev) { + console.log('> [PWA] Development mode: caching is disabled; using NetworkOnly strategy.'); + ignoreURLParametersMatching.push(/ts/); + runtimeCaching = [ + { + urlPattern: /.*/i, + handler: 'NetworkOnly', + options: { cacheName: 'dev' } + } + ]; + } else { + // 生产环境:继续构建 precaching manifest、fallback worker 等 // 生成 manifest 条目,支持增量构建 - let manifestEntries - if (enableIncrementalManifest) { - manifestEntries = await generateManifestEntriesIncremental({ - basePath, - sw, - publicExcludes, - additionalManifestEntries, - buildId, - cacheFilePath: manifestCacheFile - }) - } else { - manifestEntries = await generateManifestEntriesAsync({ - basePath, - sw, - publicExcludes, - additionalManifestEntries, - buildId - }) - } - + let manifestEntries; + if (enableIncrementalManifest) { + manifestEntries = await generateManifestEntriesIncremental({ + basePath, + sw, + publicExcludes, + additionalManifestEntries, + buildId, + cacheFilePath: manifestCacheFile + }); + } else { + manifestEntries = await generateManifestEntriesAsync({ + basePath, + sw, + publicExcludes, + additionalManifestEntries, + buildId + }); + } + } // 如果需要缓存起始 URL,则添加到 manifestEntries 中 if (cacheStartUrl) { if (!dynamicStartUrl) { @@ -306,35 +352,35 @@ export default (pluginOptions = {}) => (nextConfig = {}) => } // 处理 fallback worker(等待编译完成) - let _fallbacks = fallbacks - try { - if (_fallbacks) { - const res = await buildFallbackWorker({ - id: buildId, - fallbacks, - basedir: options.dir, - destdir: _dest, - minify: !dev, - pageExtensions - }) - if (res) { - _fallbacks = res.fallbacks - importScripts.unshift(res.name) - res.precaches.forEach(route => { - if (!manifestEntries.find(entry => entry.url.startsWith(route))) { - manifestEntries.push({ - url: route, - revision: buildId - }) - } - }) - } else { - _fallbacks = undefined + let _fallbacks = fallbacks; + try { + if (_fallbacks) { + const res = await buildFallbackWorker({ + id: buildId, + fallbacks, + basedir: options.dir, + destdir: _dest, + minify: !dev, + pageExtensions + }); + if (res) { + _fallbacks = res.fallbacks; + importScripts.unshift(res.name); + res.precaches.forEach(route => { + if (!manifestEntries.find(entry => entry.url.startsWith(route))) { + manifestEntries.push({ + url: route, + revision: buildId + }); } - } - } catch (err) { - console.error('Error building fallback worker:', err) + }); + } else { + _fallbacks = undefined; } + } + } catch (err) { + console.error('Error building fallback worker:', err); + } // 合并用户自定义的 manifestTransforms 与默认转换函数 const combinedManifestTransforms = disableDefaultManifestTransform diff --git a/package.json b/package.json index 87467acb..5660e062 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,13 @@ { "name": "next-pwa-new", - "version": "6.0.3", + "version": "6.0.5", "description": "Next.js with PWA, powered by workbox.", "main": "index.js", "repository": "https://github.com/C-Jeril/next-pwa-new", "author": "AlexJesus ", "license": "MIT", "private": false, + "type": "module", "scripts": { "test": "node --experimental-vm-modules ./node_modules/.bin/jest" },