├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ ├── custom.md
│ └── feature_request.md
└── workflows
│ ├── ci.yaml
│ └── publish.yml
├── .gitignore
├── .npmrc
├── LICENSE.md
├── README.md
├── adblock-detect-react
├── CHANGELOG.json
├── CHANGELOG.md
├── LICENSE.md
├── README.md
├── package.json
├── src
│ ├── components
│ │ └── AdBlockDetectedWrapper.tsx
│ ├── hooks
│ │ └── useDetectAdBlock.ts
│ └── index.ts
└── tsconfig.json
├── beachball.config.js
├── package.json
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
└── vite-test
├── .env
├── index.html
├── package.json
├── src
├── App.css
├── App.jsx
├── index.css
├── logo.svg
└── main.jsx
└── vite.config.js
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ""
5 | labels: ""
6 | assignees: ""
7 | ---
8 |
9 | **Describe the bug**
10 | A clear and concise description of what the bug is.
11 |
12 | **To Reproduce**
13 | Steps to reproduce the behavior:
14 |
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Please complete the following information:**
27 |
28 | - OS: [e.g. iOS]
29 | - Browser [e.g. chrome, safari]
30 | - Browser Version [e.g. 22]
31 | - Package Version [e.g. 1.0.x]
32 |
33 | **Additional context**
34 | Add any other context about the problem here.
35 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/custom.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Custom issue template
3 | about: Describe this issue template's purpose here.
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yaml:
--------------------------------------------------------------------------------
1 | name: CI
2 |
3 | on:
4 | pull_request:
5 | branches: "master"
6 |
7 | jobs:
8 | ci:
9 | runs-on: ubuntu-latest
10 |
11 | steps:
12 | - uses: actions/checkout@v3
13 | with:
14 | fetch-depth: 2
15 |
16 | - uses: actions/setup-node@v3
17 | with:
18 | node-version: 20
19 | registry-url: https://registry.npmjs.org/
20 |
21 | - uses: pnpm/action-setup@v2.2.2
22 | name: Install pnpm
23 | id: pnpm-install
24 | with:
25 | version: 8
26 | run_install: true
27 |
28 | - run: pnpm check
29 |
30 | - run: pnpm build
--------------------------------------------------------------------------------
/.github/workflows/publish.yml:
--------------------------------------------------------------------------------
1 | name: Publish Package Pipeline
2 |
3 | on:
4 | push:
5 | branches: "master"
6 |
7 | jobs:
8 | publish-npm:
9 | runs-on: ubuntu-latest
10 |
11 | steps:
12 | - uses: actions/checkout@v3
13 | with:
14 | fetch-depth: 2
15 |
16 | - uses: actions/setup-node@v3
17 | with:
18 | node-version: 20
19 | registry-url: https://registry.npmjs.org/
20 |
21 | - uses: pnpm/action-setup@v2.2.2
22 | name: Install pnpm
23 | id: pnpm-install
24 | with:
25 | version: 8
26 | run_install: true
27 |
28 | - run: pnpm build
29 |
30 | - name: Set git credentials
31 | run: |
32 | git config user.name "aruniverse"
33 | git config user.email "aruniverse@users.noreply.github.com"
34 | git remote set-url origin "https://$REPO_PAT@github.com/aruniverse/adblock-detect-react"
35 | env:
36 | REPO_PAT: ${{ secrets.REPO_PAT }}
37 |
38 | - run: pnpm release
39 | env:
40 | NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
41 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | cjs/
3 | esm/
4 | *.tgz
5 |
6 | build/
7 | *.eslintcache
8 |
9 | .turbo
10 |
11 | .DS_Store
12 | dist
13 | dist-ssr
14 | *.local
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | auto-install-peers=false
2 | strict-peer-dependencies=false
3 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) Arun George
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # adblock-detect-react
2 |
3 | [](https://www.npmjs.com/package/adblock-detect-react)
4 |
5 | 
6 |
7 |
8 | [Live Demo Site](https://adblock-detect-react.vercel.app/)
9 |
10 | ## Description
11 |
12 | Small utility package that helps to detect if theres an adblcoker running on your page. For more details look at the [package's readme](./adblock-detect-react/).
13 |
14 | #### Last known good
15 |
16 | adblock-detect-react@1.0.3 has been verified to work on the following browsers with version:
17 |
18 | | | Version |
19 | | ------------- | --------- |
20 | | Chrome | 88.0.4324 |
21 | | Firefox | 85.0.0 |
22 | | Chromium Edge | 88.0.705 |
23 | | Safari | 14.0.2 |
24 |
--------------------------------------------------------------------------------
/adblock-detect-react/CHANGELOG.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "adblock-detect-react",
3 | "entries": [
4 | {
5 | "date": "Wed, 03 Jan 2024 17:39:59 GMT",
6 | "version": "1.3.1",
7 | "tag": "adblock-detect-react_v1.3.1",
8 | "comments": {
9 | "patch": [
10 | {
11 | "author": "11051042+aruniverse@users.noreply.github.com",
12 | "package": "adblock-detect-react",
13 | "commit": "ef9dd717020645dbc1b0b1db6e97d246ac92133f",
14 | "comment": "change jsx target back to react"
15 | }
16 | ]
17 | }
18 | },
19 | {
20 | "date": "Fri, 29 Dec 2023 18:31:24 GMT",
21 | "version": "1.3.0",
22 | "tag": "adblock-detect-react_v1.3.0",
23 | "comments": {
24 | "patch": [
25 | {
26 | "author": "aruniverse@users.noreply.github.com",
27 | "package": "adblock-detect-react",
28 | "commit": "81b795649b72aa48ff7f9118cc3f90afa145f68a",
29 | "comment": "Publish changelogs"
30 | }
31 | ],
32 | "minor": [
33 | {
34 | "author": "aruniverse@users.noreply.github.com",
35 | "package": "adblock-detect-react",
36 | "commit": "c3dffee8e4520561522e3014b148fe196553c064",
37 | "comment": "Correctly handle ad blockers that return a HTTP307 redirect"
38 | }
39 | ]
40 | }
41 | }
42 | ]
43 | }
44 |
--------------------------------------------------------------------------------
/adblock-detect-react/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Change Log - adblock-detect-react
2 |
3 | This log was last generated on Wed, 03 Jan 2024 17:39:59 GMT and should not be manually modified.
4 |
5 |
6 |
7 | ## 1.3.1
8 |
9 | Wed, 03 Jan 2024 17:39:59 GMT
10 |
11 | ### Patches
12 |
13 | - change jsx target back to react (11051042+aruniverse@users.noreply.github.com)
14 |
15 | ## 1.3.0
16 |
17 | Fri, 29 Dec 2023 18:31:24 GMT
18 |
19 | ### Minor changes
20 |
21 | - Correctly handle ad blockers that return a HTTP307 redirect (aruniverse@users.noreply.github.com)
22 |
23 | ### Patches
24 |
25 | - Publish changelogs (aruniverse@users.noreply.github.com)
26 |
--------------------------------------------------------------------------------
/adblock-detect-react/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) Arun George
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/adblock-detect-react/README.md:
--------------------------------------------------------------------------------
1 | # adblock-detect-react
2 |
3 | [](https://www.npmjs.com/package/adblock-detect-react)
4 | 
5 |
6 | ## Description
7 |
8 | Provides utilities to check if ad block is enabled on a page via either a React hook or a wrapper component.
9 |
10 | ## Example Usage
11 |
12 | ### useDetectAdBlock hook
13 |
14 | ```tsx
15 | import React from "react";
16 | import { useDetectAdBlock } from "adblock-detect-react";
17 |
18 | const SomeFunctionalComponent = () => {
19 | const adBlockDetected = useDetectAdBlock();
20 |
21 | React.useEffect(() => {
22 | if (adBlockDetected) {
23 | window.alert("ad block detected");
24 | }
25 | }, []);
26 |
27 | return
{adBlockDetected && "Hello Ad Blocked Page"}
;
28 | };
29 | ```
30 |
31 | ### AdBlockDetectedWrapper component
32 |
33 | ```tsx
34 | import React from "react";
35 | import { AdBlockDetectedWrapper } from "adblock-detect-react";
36 |
37 | const SomeFunctionalComponent = () => {
38 | return (
39 |
40 | {"Hello Ad Blocked Page"}
41 |
42 | );
43 | };
44 | ```
45 |
--------------------------------------------------------------------------------
/adblock-detect-react/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "adblock-detect-react",
3 | "version": "1.3.1",
4 | "description": "Provides utilities to check if ad block is enabled on a page via both a React hook and a wrapper component.",
5 | "main": "cjs/index.js",
6 | "module": "esm/index.js",
7 | "types": "esm/index.d.ts",
8 | "author": "https://github.com/aruniverse",
9 | "license": "MIT",
10 | "repository": {
11 | "type": "git",
12 | "url": "https://github.com/aruniverse/adblock-detect-react",
13 | "directory": "adblock-detect-react"
14 | },
15 | "files": [
16 | "cjs/**/*",
17 | "esm/**/*"
18 | ],
19 | "keywords": [
20 | "react",
21 | "hooks",
22 | "adblock",
23 | "ad",
24 | "block",
25 | "detect"
26 | ],
27 | "scripts": {
28 | "build": "npm run -s build:cjs && npm run -s build:esm",
29 | "build:cjs": "tsc 1>&2 --outDir cjs",
30 | "build:esm": "tsc 1>&2 --module ES2020 --outDir esm",
31 | "clean": "rimraf cjs esm",
32 | "rebuild": "npm run -s clean && npm run -s build"
33 | },
34 | "devDependencies": {
35 | "@types/react": "^16.14.55",
36 | "@types/react-dom": "^16.9.24",
37 | "react": "16.13.1",
38 | "react-dom": "16.13.1",
39 | "rimraf": "^3.0.2",
40 | "typescript": "~5.3.2"
41 | },
42 | "peerDependencies": {
43 | "react": ">=16.8.0",
44 | "react-dom": ">=16.8.0"
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/adblock-detect-react/src/components/AdBlockDetectedWrapper.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { useDetectAdBlock } from "../hooks/useDetectAdBlock";
3 |
4 | export const AdBlockDetectedWrapper = ({
5 | children,
6 | }: React.PropsWithChildren<{}>) => {
7 | const adBlockDetected = useDetectAdBlock();
8 |
9 | return <>{adBlockDetected && children}>;
10 | };
11 |
--------------------------------------------------------------------------------
/adblock-detect-react/src/hooks/useDetectAdBlock.ts:
--------------------------------------------------------------------------------
1 | import { useEffect, useState } from "react";
2 |
3 | export const useDetectAdBlock = () => {
4 | const [adBlockDetected, setAdBlockDetected] = useState(false);
5 |
6 | useEffect(() => {
7 | // grab a domain from https://github1s.com/gorhill/uBlock/blob/master/docs/tests/hostname-pool.js
8 | const url = "https://www3.doubleclick.net";
9 | fetch(url, {
10 | method: "HEAD",
11 | mode: "no-cors",
12 | cache: "no-store",
13 | })
14 | .then(({ redirected }) => {
15 | if (redirected) setAdBlockDetected(true);
16 | })
17 | .catch(() => {
18 | setAdBlockDetected(true);
19 | });
20 | }, []);
21 |
22 | return adBlockDetected;
23 | };
24 |
--------------------------------------------------------------------------------
/adblock-detect-react/src/index.ts:
--------------------------------------------------------------------------------
1 | export { AdBlockDetectedWrapper } from "./components/AdBlockDetectedWrapper";
2 | export { useDetectAdBlock } from "./hooks/useDetectAdBlock";
3 |
--------------------------------------------------------------------------------
/adblock-detect-react/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Visit https://aka.ms/tsconfig to read more about this file */
4 |
5 | /* Projects */
6 | "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
8 | // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
12 |
13 | /* Language and Environment */
14 | "target": "ES2022", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
16 | "jsx": "react", /* Specify what JSX code is generated. */
17 | // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
22 | // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
24 | "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
25 | // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
26 |
27 | /* Modules */
28 | "module": "commonjs", /* Specify what module code is generated. */
29 | // "rootDir": "./", /* Specify the root folder within your source files. */
30 | "moduleResolution": "Node10", /* Specify how TypeScript looks up a file from a given module specifier. */
31 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
32 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
33 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
34 | // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
35 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */
36 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
37 | // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
38 | // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */
39 | // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */
40 | // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */
41 | // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
42 | // "resolveJsonModule": true, /* Enable importing .json files. */
43 | // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */
44 | // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */
45 |
46 | /* JavaScript Support */
47 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
48 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
49 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
50 |
51 | /* Emit */
52 | "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
53 | "declarationMap": true, /* Create sourcemaps for d.ts files. */
54 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
55 | "sourceMap": true, /* Create source map files for emitted JavaScript files. */
56 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
57 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
58 | // "outDir": "./", /* Specify an output folder for all emitted files. */
59 | "removeComments": true, /* Disable emitting comments. */
60 | // "noEmit": true, /* Disable emitting files from a compilation. */
61 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
62 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */
63 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
64 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
65 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
66 | "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
67 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
68 | // "newLine": "crlf", /* Set the newline character for emitting files. */
69 | // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
70 | // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
71 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
72 | // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
73 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */
74 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
75 |
76 | /* Interop Constraints */
77 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
78 | // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */
79 | "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
80 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
81 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
82 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
83 |
84 | /* Type Checking */
85 | "strict": true, /* Enable all strict type-checking options. */
86 | "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
87 | "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
88 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
89 | // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
90 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
91 | // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
92 | // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
93 | "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
94 | "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
95 | "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
96 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
97 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
98 | "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
99 | "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
100 | "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
101 | "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
102 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
103 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
104 |
105 | /* Completeness */
106 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
107 | "skipLibCheck": true /* Skip type checking all .d.ts files. */
108 | },
109 | "include": ["./src/**/*.ts*"],
110 | "exclude": ["cjs", "esm", "node_modules"]
111 | }
112 |
--------------------------------------------------------------------------------
/beachball.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import("beachball").BeachballConfig } */
2 | module.exports = {
3 | bumpDeps: false,
4 | access: "public",
5 | tag: "latest",
6 | scope: ["adblock-detect-react"],
7 | ignorePatterns: [
8 | ".*ignore",
9 | ".github/**",
10 | ".vscode/**",
11 | "**/test/**",
12 | "pnpm-lock.yaml",
13 | ],
14 | changehint: "Run 'pnpm change' to generate a change file",
15 | publish: true,
16 | };
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "adblock-monorepo",
3 | "version": "0.0.0",
4 | "private": true,
5 | "repository": {
6 | "type": "git",
7 | "url": "https://github.com/aruniverse/adblock-detect-react.git"
8 | },
9 | "packageManager": "pnpm@8.13.1",
10 | "scripts": {
11 | "preinstall": "npx only-allow pnpm",
12 | "build": "pnpm -r build",
13 | "clean": "pnpm -r clean",
14 | "clean:all": "pnpm clean && rimraf node_modules",
15 | "change": "beachball change",
16 | "check": "beachball check",
17 | "release": "beachball publish",
18 | "sync": "beachball sync"
19 | },
20 | "devDependencies": {
21 | "beachball": "^2.39.0",
22 | "rimraf": "3.0.2"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: false
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | devDependencies:
11 | beachball:
12 | specifier: ^2.39.0
13 | version: 2.39.0
14 | rimraf:
15 | specifier: 3.0.2
16 | version: 3.0.2
17 |
18 | adblock-detect-react:
19 | devDependencies:
20 | '@types/react':
21 | specifier: ^16.14.55
22 | version: 16.14.55
23 | '@types/react-dom':
24 | specifier: ^16.9.24
25 | version: 16.9.24
26 | react:
27 | specifier: 16.13.1
28 | version: 16.13.1
29 | react-dom:
30 | specifier: 16.13.1
31 | version: 16.13.1(react@16.13.1)
32 | rimraf:
33 | specifier: ^3.0.2
34 | version: 3.0.2
35 | typescript:
36 | specifier: ~5.3.2
37 | version: 5.3.3
38 |
39 | vite-test:
40 | dependencies:
41 | adblock-detect-react:
42 | specifier: workspace:*
43 | version: link:../adblock-detect-react
44 | detect-browser:
45 | specifier: ^5.3.0
46 | version: 5.3.0
47 | react:
48 | specifier: ^18.2.0
49 | version: 18.2.0
50 | react-dom:
51 | specifier: ^18.2.0
52 | version: 18.2.0(react@18.2.0)
53 | react-ga:
54 | specifier: 3.3.1
55 | version: 3.3.1(react@18.2.0)
56 | devDependencies:
57 | '@vitejs/plugin-react':
58 | specifier: ^2.2.0
59 | version: 2.2.0(vite@3.2.7)
60 | vite:
61 | specifier: ^3.2.7
62 | version: 3.2.7
63 |
64 | packages:
65 |
66 | /@ampproject/remapping@2.2.1:
67 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
68 | engines: {node: '>=6.0.0'}
69 | dependencies:
70 | '@jridgewell/gen-mapping': 0.3.3
71 | '@jridgewell/trace-mapping': 0.3.20
72 | dev: true
73 |
74 | /@babel/code-frame@7.23.5:
75 | resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
76 | engines: {node: '>=6.9.0'}
77 | dependencies:
78 | '@babel/highlight': 7.23.4
79 | chalk: 2.4.2
80 | dev: true
81 |
82 | /@babel/compat-data@7.23.5:
83 | resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==}
84 | engines: {node: '>=6.9.0'}
85 | dev: true
86 |
87 | /@babel/core@7.23.6:
88 | resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==}
89 | engines: {node: '>=6.9.0'}
90 | dependencies:
91 | '@ampproject/remapping': 2.2.1
92 | '@babel/code-frame': 7.23.5
93 | '@babel/generator': 7.23.6
94 | '@babel/helper-compilation-targets': 7.23.6
95 | '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6)
96 | '@babel/helpers': 7.23.6
97 | '@babel/parser': 7.23.6
98 | '@babel/template': 7.22.15
99 | '@babel/traverse': 7.23.6
100 | '@babel/types': 7.23.6
101 | convert-source-map: 2.0.0
102 | debug: 4.3.4
103 | gensync: 1.0.0-beta.2
104 | json5: 2.2.3
105 | semver: 6.3.1
106 | transitivePeerDependencies:
107 | - supports-color
108 | dev: true
109 |
110 | /@babel/generator@7.23.6:
111 | resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==}
112 | engines: {node: '>=6.9.0'}
113 | dependencies:
114 | '@babel/types': 7.23.6
115 | '@jridgewell/gen-mapping': 0.3.3
116 | '@jridgewell/trace-mapping': 0.3.20
117 | jsesc: 2.5.2
118 | dev: true
119 |
120 | /@babel/helper-annotate-as-pure@7.22.5:
121 | resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==}
122 | engines: {node: '>=6.9.0'}
123 | dependencies:
124 | '@babel/types': 7.23.6
125 | dev: true
126 |
127 | /@babel/helper-compilation-targets@7.23.6:
128 | resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==}
129 | engines: {node: '>=6.9.0'}
130 | dependencies:
131 | '@babel/compat-data': 7.23.5
132 | '@babel/helper-validator-option': 7.23.5
133 | browserslist: 4.22.2
134 | lru-cache: 5.1.1
135 | semver: 6.3.1
136 | dev: true
137 |
138 | /@babel/helper-environment-visitor@7.22.20:
139 | resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
140 | engines: {node: '>=6.9.0'}
141 | dev: true
142 |
143 | /@babel/helper-function-name@7.23.0:
144 | resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
145 | engines: {node: '>=6.9.0'}
146 | dependencies:
147 | '@babel/template': 7.22.15
148 | '@babel/types': 7.23.6
149 | dev: true
150 |
151 | /@babel/helper-hoist-variables@7.22.5:
152 | resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
153 | engines: {node: '>=6.9.0'}
154 | dependencies:
155 | '@babel/types': 7.23.6
156 | dev: true
157 |
158 | /@babel/helper-module-imports@7.22.15:
159 | resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==}
160 | engines: {node: '>=6.9.0'}
161 | dependencies:
162 | '@babel/types': 7.23.6
163 | dev: true
164 |
165 | /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6):
166 | resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==}
167 | engines: {node: '>=6.9.0'}
168 | peerDependencies:
169 | '@babel/core': ^7.0.0
170 | dependencies:
171 | '@babel/core': 7.23.6
172 | '@babel/helper-environment-visitor': 7.22.20
173 | '@babel/helper-module-imports': 7.22.15
174 | '@babel/helper-simple-access': 7.22.5
175 | '@babel/helper-split-export-declaration': 7.22.6
176 | '@babel/helper-validator-identifier': 7.22.20
177 | dev: true
178 |
179 | /@babel/helper-plugin-utils@7.22.5:
180 | resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==}
181 | engines: {node: '>=6.9.0'}
182 | dev: true
183 |
184 | /@babel/helper-simple-access@7.22.5:
185 | resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
186 | engines: {node: '>=6.9.0'}
187 | dependencies:
188 | '@babel/types': 7.23.6
189 | dev: true
190 |
191 | /@babel/helper-split-export-declaration@7.22.6:
192 | resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
193 | engines: {node: '>=6.9.0'}
194 | dependencies:
195 | '@babel/types': 7.23.6
196 | dev: true
197 |
198 | /@babel/helper-string-parser@7.23.4:
199 | resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==}
200 | engines: {node: '>=6.9.0'}
201 | dev: true
202 |
203 | /@babel/helper-validator-identifier@7.22.20:
204 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
205 | engines: {node: '>=6.9.0'}
206 | dev: true
207 |
208 | /@babel/helper-validator-option@7.23.5:
209 | resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==}
210 | engines: {node: '>=6.9.0'}
211 | dev: true
212 |
213 | /@babel/helpers@7.23.6:
214 | resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==}
215 | engines: {node: '>=6.9.0'}
216 | dependencies:
217 | '@babel/template': 7.22.15
218 | '@babel/traverse': 7.23.6
219 | '@babel/types': 7.23.6
220 | transitivePeerDependencies:
221 | - supports-color
222 | dev: true
223 |
224 | /@babel/highlight@7.23.4:
225 | resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==}
226 | engines: {node: '>=6.9.0'}
227 | dependencies:
228 | '@babel/helper-validator-identifier': 7.22.20
229 | chalk: 2.4.2
230 | js-tokens: 4.0.0
231 | dev: true
232 |
233 | /@babel/parser@7.23.6:
234 | resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==}
235 | engines: {node: '>=6.0.0'}
236 | hasBin: true
237 | dependencies:
238 | '@babel/types': 7.23.6
239 | dev: true
240 |
241 | /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.6):
242 | resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==}
243 | engines: {node: '>=6.9.0'}
244 | peerDependencies:
245 | '@babel/core': ^7.0.0-0
246 | dependencies:
247 | '@babel/core': 7.23.6
248 | '@babel/helper-plugin-utils': 7.22.5
249 | dev: true
250 |
251 | /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.6):
252 | resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==}
253 | engines: {node: '>=6.9.0'}
254 | peerDependencies:
255 | '@babel/core': ^7.0.0-0
256 | dependencies:
257 | '@babel/core': 7.23.6
258 | '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.6)
259 | dev: true
260 |
261 | /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.6):
262 | resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==}
263 | engines: {node: '>=6.9.0'}
264 | peerDependencies:
265 | '@babel/core': ^7.0.0-0
266 | dependencies:
267 | '@babel/core': 7.23.6
268 | '@babel/helper-plugin-utils': 7.22.5
269 | dev: true
270 |
271 | /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.6):
272 | resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==}
273 | engines: {node: '>=6.9.0'}
274 | peerDependencies:
275 | '@babel/core': ^7.0.0-0
276 | dependencies:
277 | '@babel/core': 7.23.6
278 | '@babel/helper-plugin-utils': 7.22.5
279 | dev: true
280 |
281 | /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.6):
282 | resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==}
283 | engines: {node: '>=6.9.0'}
284 | peerDependencies:
285 | '@babel/core': ^7.0.0-0
286 | dependencies:
287 | '@babel/core': 7.23.6
288 | '@babel/helper-annotate-as-pure': 7.22.5
289 | '@babel/helper-module-imports': 7.22.15
290 | '@babel/helper-plugin-utils': 7.22.5
291 | '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6)
292 | '@babel/types': 7.23.6
293 | dev: true
294 |
295 | /@babel/template@7.22.15:
296 | resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
297 | engines: {node: '>=6.9.0'}
298 | dependencies:
299 | '@babel/code-frame': 7.23.5
300 | '@babel/parser': 7.23.6
301 | '@babel/types': 7.23.6
302 | dev: true
303 |
304 | /@babel/traverse@7.23.6:
305 | resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==}
306 | engines: {node: '>=6.9.0'}
307 | dependencies:
308 | '@babel/code-frame': 7.23.5
309 | '@babel/generator': 7.23.6
310 | '@babel/helper-environment-visitor': 7.22.20
311 | '@babel/helper-function-name': 7.23.0
312 | '@babel/helper-hoist-variables': 7.22.5
313 | '@babel/helper-split-export-declaration': 7.22.6
314 | '@babel/parser': 7.23.6
315 | '@babel/types': 7.23.6
316 | debug: 4.3.4
317 | globals: 11.12.0
318 | transitivePeerDependencies:
319 | - supports-color
320 | dev: true
321 |
322 | /@babel/types@7.23.6:
323 | resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==}
324 | engines: {node: '>=6.9.0'}
325 | dependencies:
326 | '@babel/helper-string-parser': 7.23.4
327 | '@babel/helper-validator-identifier': 7.22.20
328 | to-fast-properties: 2.0.0
329 | dev: true
330 |
331 | /@esbuild/android-arm@0.15.18:
332 | resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==}
333 | engines: {node: '>=12'}
334 | cpu: [arm]
335 | os: [android]
336 | requiresBuild: true
337 | dev: true
338 | optional: true
339 |
340 | /@esbuild/linux-loong64@0.15.18:
341 | resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==}
342 | engines: {node: '>=12'}
343 | cpu: [loong64]
344 | os: [linux]
345 | requiresBuild: true
346 | dev: true
347 | optional: true
348 |
349 | /@jridgewell/gen-mapping@0.3.3:
350 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
351 | engines: {node: '>=6.0.0'}
352 | dependencies:
353 | '@jridgewell/set-array': 1.1.2
354 | '@jridgewell/sourcemap-codec': 1.4.15
355 | '@jridgewell/trace-mapping': 0.3.20
356 | dev: true
357 |
358 | /@jridgewell/resolve-uri@3.1.1:
359 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
360 | engines: {node: '>=6.0.0'}
361 | dev: true
362 |
363 | /@jridgewell/set-array@1.1.2:
364 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
365 | engines: {node: '>=6.0.0'}
366 | dev: true
367 |
368 | /@jridgewell/sourcemap-codec@1.4.15:
369 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
370 | dev: true
371 |
372 | /@jridgewell/trace-mapping@0.3.20:
373 | resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==}
374 | dependencies:
375 | '@jridgewell/resolve-uri': 3.1.1
376 | '@jridgewell/sourcemap-codec': 1.4.15
377 | dev: true
378 |
379 | /@nodelib/fs.scandir@2.1.5:
380 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
381 | engines: {node: '>= 8'}
382 | dependencies:
383 | '@nodelib/fs.stat': 2.0.5
384 | run-parallel: 1.2.0
385 | dev: true
386 |
387 | /@nodelib/fs.stat@2.0.5:
388 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
389 | engines: {node: '>= 8'}
390 | dev: true
391 |
392 | /@nodelib/fs.walk@1.2.8:
393 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
394 | engines: {node: '>= 8'}
395 | dependencies:
396 | '@nodelib/fs.scandir': 2.1.5
397 | fastq: 1.16.0
398 | dev: true
399 |
400 | /@types/prop-types@15.7.11:
401 | resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==}
402 | dev: true
403 |
404 | /@types/react-dom@16.9.24:
405 | resolution: {integrity: sha512-Gcmq2JTDheyWn/1eteqyzzWKSqDjYU6KYsIvH7thb7CR5OYInAWOX+7WnKf6PaU/cbdOc4szJItcDEJO7UGmfA==}
406 | dependencies:
407 | '@types/react': 16.14.55
408 | dev: true
409 |
410 | /@types/react@16.14.55:
411 | resolution: {integrity: sha512-HO/QHDg23Dx4ukfufr5YSTWyhrbyThXE2OzXfNkcw7vJcusBY5l1i1TZpJuyAn9EsC6o91/6OsIvXY54xTV+XQ==}
412 | dependencies:
413 | '@types/prop-types': 15.7.11
414 | '@types/scheduler': 0.16.8
415 | csstype: 3.1.3
416 | dev: true
417 |
418 | /@types/scheduler@0.16.8:
419 | resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==}
420 | dev: true
421 |
422 | /@vitejs/plugin-react@2.2.0(vite@3.2.7):
423 | resolution: {integrity: sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==}
424 | engines: {node: ^14.18.0 || >=16.0.0}
425 | peerDependencies:
426 | vite: ^3.0.0
427 | dependencies:
428 | '@babel/core': 7.23.6
429 | '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.6)
430 | '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.6)
431 | '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.6)
432 | '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.6)
433 | magic-string: 0.26.7
434 | react-refresh: 0.14.0
435 | vite: 3.2.7
436 | transitivePeerDependencies:
437 | - supports-color
438 | dev: true
439 |
440 | /@yarnpkg/lockfile@1.1.0:
441 | resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==}
442 | dev: true
443 |
444 | /ansi-styles@3.2.1:
445 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
446 | engines: {node: '>=4'}
447 | dependencies:
448 | color-convert: 1.9.3
449 | dev: true
450 |
451 | /argparse@2.0.1:
452 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
453 | dev: true
454 |
455 | /array-union@2.1.0:
456 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
457 | engines: {node: '>=8'}
458 | dev: true
459 |
460 | /balanced-match@1.0.2:
461 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
462 | dev: true
463 |
464 | /beachball@2.39.0:
465 | resolution: {integrity: sha512-YyhL16twP3sa0Pd+auXDzG2xqIPBLF+9GIsMEXMRpSjk9eYpzqSY/BOKbwzy+VqsUlQxWfVIFxijbUEQZYIwUQ==}
466 | engines: {node: '>=14.0.0'}
467 | hasBin: true
468 | dependencies:
469 | cosmiconfig: 8.3.6
470 | execa: 5.1.1
471 | fs-extra: 11.2.0
472 | lodash: 4.17.21
473 | minimatch: 3.1.2
474 | p-limit: 3.1.0
475 | prompts: 2.4.2
476 | semver: 7.5.4
477 | toposort: 2.0.2
478 | uuid: 9.0.1
479 | workspace-tools: 0.36.4
480 | yargs-parser: 21.1.1
481 | transitivePeerDependencies:
482 | - typescript
483 | dev: true
484 |
485 | /brace-expansion@1.1.11:
486 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
487 | dependencies:
488 | balanced-match: 1.0.2
489 | concat-map: 0.0.1
490 | dev: true
491 |
492 | /braces@3.0.2:
493 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
494 | engines: {node: '>=8'}
495 | dependencies:
496 | fill-range: 7.0.1
497 | dev: true
498 |
499 | /browserslist@4.22.2:
500 | resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==}
501 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
502 | hasBin: true
503 | dependencies:
504 | caniuse-lite: 1.0.30001572
505 | electron-to-chromium: 1.4.616
506 | node-releases: 2.0.14
507 | update-browserslist-db: 1.0.13(browserslist@4.22.2)
508 | dev: true
509 |
510 | /callsites@3.1.0:
511 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
512 | engines: {node: '>=6'}
513 | dev: true
514 |
515 | /caniuse-lite@1.0.30001572:
516 | resolution: {integrity: sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==}
517 | dev: true
518 |
519 | /chalk@2.4.2:
520 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
521 | engines: {node: '>=4'}
522 | dependencies:
523 | ansi-styles: 3.2.1
524 | escape-string-regexp: 1.0.5
525 | supports-color: 5.5.0
526 | dev: true
527 |
528 | /color-convert@1.9.3:
529 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
530 | dependencies:
531 | color-name: 1.1.3
532 | dev: true
533 |
534 | /color-name@1.1.3:
535 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
536 | dev: true
537 |
538 | /concat-map@0.0.1:
539 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
540 | dev: true
541 |
542 | /convert-source-map@2.0.0:
543 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
544 | dev: true
545 |
546 | /cosmiconfig@8.3.6:
547 | resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==}
548 | engines: {node: '>=14'}
549 | peerDependencies:
550 | typescript: '>=4.9.5'
551 | peerDependenciesMeta:
552 | typescript:
553 | optional: true
554 | dependencies:
555 | import-fresh: 3.3.0
556 | js-yaml: 4.1.0
557 | parse-json: 5.2.0
558 | path-type: 4.0.0
559 | dev: true
560 |
561 | /cross-spawn@7.0.3:
562 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
563 | engines: {node: '>= 8'}
564 | dependencies:
565 | path-key: 3.1.1
566 | shebang-command: 2.0.0
567 | which: 2.0.2
568 | dev: true
569 |
570 | /csstype@3.1.3:
571 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
572 | dev: true
573 |
574 | /debug@4.3.4:
575 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
576 | engines: {node: '>=6.0'}
577 | peerDependencies:
578 | supports-color: '*'
579 | peerDependenciesMeta:
580 | supports-color:
581 | optional: true
582 | dependencies:
583 | ms: 2.1.2
584 | dev: true
585 |
586 | /detect-browser@5.3.0:
587 | resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==}
588 | dev: false
589 |
590 | /dir-glob@3.0.1:
591 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
592 | engines: {node: '>=8'}
593 | dependencies:
594 | path-type: 4.0.0
595 | dev: true
596 |
597 | /electron-to-chromium@1.4.616:
598 | resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==}
599 | dev: true
600 |
601 | /error-ex@1.3.2:
602 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
603 | dependencies:
604 | is-arrayish: 0.2.1
605 | dev: true
606 |
607 | /esbuild-android-64@0.15.18:
608 | resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==}
609 | engines: {node: '>=12'}
610 | cpu: [x64]
611 | os: [android]
612 | requiresBuild: true
613 | dev: true
614 | optional: true
615 |
616 | /esbuild-android-arm64@0.15.18:
617 | resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==}
618 | engines: {node: '>=12'}
619 | cpu: [arm64]
620 | os: [android]
621 | requiresBuild: true
622 | dev: true
623 | optional: true
624 |
625 | /esbuild-darwin-64@0.15.18:
626 | resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==}
627 | engines: {node: '>=12'}
628 | cpu: [x64]
629 | os: [darwin]
630 | requiresBuild: true
631 | dev: true
632 | optional: true
633 |
634 | /esbuild-darwin-arm64@0.15.18:
635 | resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==}
636 | engines: {node: '>=12'}
637 | cpu: [arm64]
638 | os: [darwin]
639 | requiresBuild: true
640 | dev: true
641 | optional: true
642 |
643 | /esbuild-freebsd-64@0.15.18:
644 | resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==}
645 | engines: {node: '>=12'}
646 | cpu: [x64]
647 | os: [freebsd]
648 | requiresBuild: true
649 | dev: true
650 | optional: true
651 |
652 | /esbuild-freebsd-arm64@0.15.18:
653 | resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==}
654 | engines: {node: '>=12'}
655 | cpu: [arm64]
656 | os: [freebsd]
657 | requiresBuild: true
658 | dev: true
659 | optional: true
660 |
661 | /esbuild-linux-32@0.15.18:
662 | resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==}
663 | engines: {node: '>=12'}
664 | cpu: [ia32]
665 | os: [linux]
666 | requiresBuild: true
667 | dev: true
668 | optional: true
669 |
670 | /esbuild-linux-64@0.15.18:
671 | resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==}
672 | engines: {node: '>=12'}
673 | cpu: [x64]
674 | os: [linux]
675 | requiresBuild: true
676 | dev: true
677 | optional: true
678 |
679 | /esbuild-linux-arm64@0.15.18:
680 | resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==}
681 | engines: {node: '>=12'}
682 | cpu: [arm64]
683 | os: [linux]
684 | requiresBuild: true
685 | dev: true
686 | optional: true
687 |
688 | /esbuild-linux-arm@0.15.18:
689 | resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==}
690 | engines: {node: '>=12'}
691 | cpu: [arm]
692 | os: [linux]
693 | requiresBuild: true
694 | dev: true
695 | optional: true
696 |
697 | /esbuild-linux-mips64le@0.15.18:
698 | resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==}
699 | engines: {node: '>=12'}
700 | cpu: [mips64el]
701 | os: [linux]
702 | requiresBuild: true
703 | dev: true
704 | optional: true
705 |
706 | /esbuild-linux-ppc64le@0.15.18:
707 | resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==}
708 | engines: {node: '>=12'}
709 | cpu: [ppc64]
710 | os: [linux]
711 | requiresBuild: true
712 | dev: true
713 | optional: true
714 |
715 | /esbuild-linux-riscv64@0.15.18:
716 | resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==}
717 | engines: {node: '>=12'}
718 | cpu: [riscv64]
719 | os: [linux]
720 | requiresBuild: true
721 | dev: true
722 | optional: true
723 |
724 | /esbuild-linux-s390x@0.15.18:
725 | resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==}
726 | engines: {node: '>=12'}
727 | cpu: [s390x]
728 | os: [linux]
729 | requiresBuild: true
730 | dev: true
731 | optional: true
732 |
733 | /esbuild-netbsd-64@0.15.18:
734 | resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==}
735 | engines: {node: '>=12'}
736 | cpu: [x64]
737 | os: [netbsd]
738 | requiresBuild: true
739 | dev: true
740 | optional: true
741 |
742 | /esbuild-openbsd-64@0.15.18:
743 | resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==}
744 | engines: {node: '>=12'}
745 | cpu: [x64]
746 | os: [openbsd]
747 | requiresBuild: true
748 | dev: true
749 | optional: true
750 |
751 | /esbuild-sunos-64@0.15.18:
752 | resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==}
753 | engines: {node: '>=12'}
754 | cpu: [x64]
755 | os: [sunos]
756 | requiresBuild: true
757 | dev: true
758 | optional: true
759 |
760 | /esbuild-windows-32@0.15.18:
761 | resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==}
762 | engines: {node: '>=12'}
763 | cpu: [ia32]
764 | os: [win32]
765 | requiresBuild: true
766 | dev: true
767 | optional: true
768 |
769 | /esbuild-windows-64@0.15.18:
770 | resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==}
771 | engines: {node: '>=12'}
772 | cpu: [x64]
773 | os: [win32]
774 | requiresBuild: true
775 | dev: true
776 | optional: true
777 |
778 | /esbuild-windows-arm64@0.15.18:
779 | resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==}
780 | engines: {node: '>=12'}
781 | cpu: [arm64]
782 | os: [win32]
783 | requiresBuild: true
784 | dev: true
785 | optional: true
786 |
787 | /esbuild@0.15.18:
788 | resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==}
789 | engines: {node: '>=12'}
790 | hasBin: true
791 | requiresBuild: true
792 | optionalDependencies:
793 | '@esbuild/android-arm': 0.15.18
794 | '@esbuild/linux-loong64': 0.15.18
795 | esbuild-android-64: 0.15.18
796 | esbuild-android-arm64: 0.15.18
797 | esbuild-darwin-64: 0.15.18
798 | esbuild-darwin-arm64: 0.15.18
799 | esbuild-freebsd-64: 0.15.18
800 | esbuild-freebsd-arm64: 0.15.18
801 | esbuild-linux-32: 0.15.18
802 | esbuild-linux-64: 0.15.18
803 | esbuild-linux-arm: 0.15.18
804 | esbuild-linux-arm64: 0.15.18
805 | esbuild-linux-mips64le: 0.15.18
806 | esbuild-linux-ppc64le: 0.15.18
807 | esbuild-linux-riscv64: 0.15.18
808 | esbuild-linux-s390x: 0.15.18
809 | esbuild-netbsd-64: 0.15.18
810 | esbuild-openbsd-64: 0.15.18
811 | esbuild-sunos-64: 0.15.18
812 | esbuild-windows-32: 0.15.18
813 | esbuild-windows-64: 0.15.18
814 | esbuild-windows-arm64: 0.15.18
815 | dev: true
816 |
817 | /escalade@3.1.1:
818 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
819 | engines: {node: '>=6'}
820 | dev: true
821 |
822 | /escape-string-regexp@1.0.5:
823 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
824 | engines: {node: '>=0.8.0'}
825 | dev: true
826 |
827 | /execa@5.1.1:
828 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
829 | engines: {node: '>=10'}
830 | dependencies:
831 | cross-spawn: 7.0.3
832 | get-stream: 6.0.1
833 | human-signals: 2.1.0
834 | is-stream: 2.0.1
835 | merge-stream: 2.0.0
836 | npm-run-path: 4.0.1
837 | onetime: 5.1.2
838 | signal-exit: 3.0.7
839 | strip-final-newline: 2.0.0
840 | dev: true
841 |
842 | /fast-glob@3.3.2:
843 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
844 | engines: {node: '>=8.6.0'}
845 | dependencies:
846 | '@nodelib/fs.stat': 2.0.5
847 | '@nodelib/fs.walk': 1.2.8
848 | glob-parent: 5.1.2
849 | merge2: 1.4.1
850 | micromatch: 4.0.5
851 | dev: true
852 |
853 | /fastq@1.16.0:
854 | resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==}
855 | dependencies:
856 | reusify: 1.0.4
857 | dev: true
858 |
859 | /fill-range@7.0.1:
860 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
861 | engines: {node: '>=8'}
862 | dependencies:
863 | to-regex-range: 5.0.1
864 | dev: true
865 |
866 | /fs-extra@11.2.0:
867 | resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==}
868 | engines: {node: '>=14.14'}
869 | dependencies:
870 | graceful-fs: 4.2.11
871 | jsonfile: 6.1.0
872 | universalify: 2.0.1
873 | dev: true
874 |
875 | /fs.realpath@1.0.0:
876 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
877 | dev: true
878 |
879 | /fsevents@2.3.3:
880 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
881 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
882 | os: [darwin]
883 | requiresBuild: true
884 | dev: true
885 | optional: true
886 |
887 | /function-bind@1.1.2:
888 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
889 | dev: true
890 |
891 | /gensync@1.0.0-beta.2:
892 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
893 | engines: {node: '>=6.9.0'}
894 | dev: true
895 |
896 | /get-stream@6.0.1:
897 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
898 | engines: {node: '>=10'}
899 | dev: true
900 |
901 | /git-up@7.0.0:
902 | resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==}
903 | dependencies:
904 | is-ssh: 1.4.0
905 | parse-url: 8.1.0
906 | dev: true
907 |
908 | /git-url-parse@13.1.1:
909 | resolution: {integrity: sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ==}
910 | dependencies:
911 | git-up: 7.0.0
912 | dev: true
913 |
914 | /glob-parent@5.1.2:
915 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
916 | engines: {node: '>= 6'}
917 | dependencies:
918 | is-glob: 4.0.3
919 | dev: true
920 |
921 | /glob@7.2.3:
922 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
923 | dependencies:
924 | fs.realpath: 1.0.0
925 | inflight: 1.0.6
926 | inherits: 2.0.4
927 | minimatch: 3.1.2
928 | once: 1.4.0
929 | path-is-absolute: 1.0.1
930 | dev: true
931 |
932 | /globals@11.12.0:
933 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
934 | engines: {node: '>=4'}
935 | dev: true
936 |
937 | /globby@11.1.0:
938 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
939 | engines: {node: '>=10'}
940 | dependencies:
941 | array-union: 2.1.0
942 | dir-glob: 3.0.1
943 | fast-glob: 3.3.2
944 | ignore: 5.3.0
945 | merge2: 1.4.1
946 | slash: 3.0.0
947 | dev: true
948 |
949 | /graceful-fs@4.2.11:
950 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
951 | dev: true
952 |
953 | /has-flag@3.0.0:
954 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
955 | engines: {node: '>=4'}
956 | dev: true
957 |
958 | /hasown@2.0.0:
959 | resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
960 | engines: {node: '>= 0.4'}
961 | dependencies:
962 | function-bind: 1.1.2
963 | dev: true
964 |
965 | /human-signals@2.1.0:
966 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
967 | engines: {node: '>=10.17.0'}
968 | dev: true
969 |
970 | /ignore@5.3.0:
971 | resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==}
972 | engines: {node: '>= 4'}
973 | dev: true
974 |
975 | /import-fresh@3.3.0:
976 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
977 | engines: {node: '>=6'}
978 | dependencies:
979 | parent-module: 1.0.1
980 | resolve-from: 4.0.0
981 | dev: true
982 |
983 | /inflight@1.0.6:
984 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
985 | dependencies:
986 | once: 1.4.0
987 | wrappy: 1.0.2
988 | dev: true
989 |
990 | /inherits@2.0.4:
991 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
992 | dev: true
993 |
994 | /is-arrayish@0.2.1:
995 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
996 | dev: true
997 |
998 | /is-core-module@2.13.1:
999 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
1000 | dependencies:
1001 | hasown: 2.0.0
1002 | dev: true
1003 |
1004 | /is-extglob@2.1.1:
1005 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1006 | engines: {node: '>=0.10.0'}
1007 | dev: true
1008 |
1009 | /is-glob@4.0.3:
1010 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1011 | engines: {node: '>=0.10.0'}
1012 | dependencies:
1013 | is-extglob: 2.1.1
1014 | dev: true
1015 |
1016 | /is-number@7.0.0:
1017 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1018 | engines: {node: '>=0.12.0'}
1019 | dev: true
1020 |
1021 | /is-ssh@1.4.0:
1022 | resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==}
1023 | dependencies:
1024 | protocols: 2.0.1
1025 | dev: true
1026 |
1027 | /is-stream@2.0.1:
1028 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
1029 | engines: {node: '>=8'}
1030 | dev: true
1031 |
1032 | /isexe@2.0.0:
1033 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1034 | dev: true
1035 |
1036 | /jju@1.4.0:
1037 | resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==}
1038 | dev: true
1039 |
1040 | /js-tokens@4.0.0:
1041 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1042 |
1043 | /js-yaml@4.1.0:
1044 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1045 | hasBin: true
1046 | dependencies:
1047 | argparse: 2.0.1
1048 | dev: true
1049 |
1050 | /jsesc@2.5.2:
1051 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
1052 | engines: {node: '>=4'}
1053 | hasBin: true
1054 | dev: true
1055 |
1056 | /json-parse-even-better-errors@2.3.1:
1057 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
1058 | dev: true
1059 |
1060 | /json5@2.2.3:
1061 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
1062 | engines: {node: '>=6'}
1063 | hasBin: true
1064 | dev: true
1065 |
1066 | /jsonfile@6.1.0:
1067 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
1068 | dependencies:
1069 | universalify: 2.0.1
1070 | optionalDependencies:
1071 | graceful-fs: 4.2.11
1072 | dev: true
1073 |
1074 | /kleur@3.0.3:
1075 | resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
1076 | engines: {node: '>=6'}
1077 | dev: true
1078 |
1079 | /lines-and-columns@1.2.4:
1080 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1081 | dev: true
1082 |
1083 | /lodash@4.17.21:
1084 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
1085 | dev: true
1086 |
1087 | /loose-envify@1.4.0:
1088 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
1089 | hasBin: true
1090 | dependencies:
1091 | js-tokens: 4.0.0
1092 |
1093 | /lru-cache@5.1.1:
1094 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
1095 | dependencies:
1096 | yallist: 3.1.1
1097 | dev: true
1098 |
1099 | /lru-cache@6.0.0:
1100 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1101 | engines: {node: '>=10'}
1102 | dependencies:
1103 | yallist: 4.0.0
1104 | dev: true
1105 |
1106 | /magic-string@0.26.7:
1107 | resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==}
1108 | engines: {node: '>=12'}
1109 | dependencies:
1110 | sourcemap-codec: 1.4.8
1111 | dev: true
1112 |
1113 | /merge-stream@2.0.0:
1114 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
1115 | dev: true
1116 |
1117 | /merge2@1.4.1:
1118 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1119 | engines: {node: '>= 8'}
1120 | dev: true
1121 |
1122 | /micromatch@4.0.5:
1123 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1124 | engines: {node: '>=8.6'}
1125 | dependencies:
1126 | braces: 3.0.2
1127 | picomatch: 2.3.1
1128 | dev: true
1129 |
1130 | /mimic-fn@2.1.0:
1131 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
1132 | engines: {node: '>=6'}
1133 | dev: true
1134 |
1135 | /minimatch@3.1.2:
1136 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1137 | dependencies:
1138 | brace-expansion: 1.1.11
1139 | dev: true
1140 |
1141 | /ms@2.1.2:
1142 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1143 | dev: true
1144 |
1145 | /nanoid@3.3.7:
1146 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
1147 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1148 | hasBin: true
1149 | dev: true
1150 |
1151 | /node-releases@2.0.14:
1152 | resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
1153 | dev: true
1154 |
1155 | /npm-run-path@4.0.1:
1156 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
1157 | engines: {node: '>=8'}
1158 | dependencies:
1159 | path-key: 3.1.1
1160 | dev: true
1161 |
1162 | /object-assign@4.1.1:
1163 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
1164 | engines: {node: '>=0.10.0'}
1165 | dev: true
1166 |
1167 | /once@1.4.0:
1168 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1169 | dependencies:
1170 | wrappy: 1.0.2
1171 | dev: true
1172 |
1173 | /onetime@5.1.2:
1174 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
1175 | engines: {node: '>=6'}
1176 | dependencies:
1177 | mimic-fn: 2.1.0
1178 | dev: true
1179 |
1180 | /p-limit@3.1.0:
1181 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1182 | engines: {node: '>=10'}
1183 | dependencies:
1184 | yocto-queue: 0.1.0
1185 | dev: true
1186 |
1187 | /parent-module@1.0.1:
1188 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1189 | engines: {node: '>=6'}
1190 | dependencies:
1191 | callsites: 3.1.0
1192 | dev: true
1193 |
1194 | /parse-json@5.2.0:
1195 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
1196 | engines: {node: '>=8'}
1197 | dependencies:
1198 | '@babel/code-frame': 7.23.5
1199 | error-ex: 1.3.2
1200 | json-parse-even-better-errors: 2.3.1
1201 | lines-and-columns: 1.2.4
1202 | dev: true
1203 |
1204 | /parse-path@7.0.0:
1205 | resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==}
1206 | dependencies:
1207 | protocols: 2.0.1
1208 | dev: true
1209 |
1210 | /parse-url@8.1.0:
1211 | resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==}
1212 | dependencies:
1213 | parse-path: 7.0.0
1214 | dev: true
1215 |
1216 | /path-is-absolute@1.0.1:
1217 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1218 | engines: {node: '>=0.10.0'}
1219 | dev: true
1220 |
1221 | /path-key@3.1.1:
1222 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1223 | engines: {node: '>=8'}
1224 | dev: true
1225 |
1226 | /path-parse@1.0.7:
1227 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1228 | dev: true
1229 |
1230 | /path-type@4.0.0:
1231 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1232 | engines: {node: '>=8'}
1233 | dev: true
1234 |
1235 | /picocolors@1.0.0:
1236 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
1237 | dev: true
1238 |
1239 | /picomatch@2.3.1:
1240 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1241 | engines: {node: '>=8.6'}
1242 | dev: true
1243 |
1244 | /postcss@8.4.32:
1245 | resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==}
1246 | engines: {node: ^10 || ^12 || >=14}
1247 | dependencies:
1248 | nanoid: 3.3.7
1249 | picocolors: 1.0.0
1250 | source-map-js: 1.0.2
1251 | dev: true
1252 |
1253 | /prompts@2.4.2:
1254 | resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
1255 | engines: {node: '>= 6'}
1256 | dependencies:
1257 | kleur: 3.0.3
1258 | sisteransi: 1.0.5
1259 | dev: true
1260 |
1261 | /prop-types@15.8.1:
1262 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
1263 | dependencies:
1264 | loose-envify: 1.4.0
1265 | object-assign: 4.1.1
1266 | react-is: 16.13.1
1267 | dev: true
1268 |
1269 | /protocols@2.0.1:
1270 | resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==}
1271 | dev: true
1272 |
1273 | /queue-microtask@1.2.3:
1274 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1275 | dev: true
1276 |
1277 | /react-dom@16.13.1(react@16.13.1):
1278 | resolution: {integrity: sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==}
1279 | peerDependencies:
1280 | react: ^16.13.1
1281 | dependencies:
1282 | loose-envify: 1.4.0
1283 | object-assign: 4.1.1
1284 | prop-types: 15.8.1
1285 | react: 16.13.1
1286 | scheduler: 0.19.1
1287 | dev: true
1288 |
1289 | /react-dom@18.2.0(react@18.2.0):
1290 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
1291 | peerDependencies:
1292 | react: ^18.2.0
1293 | dependencies:
1294 | loose-envify: 1.4.0
1295 | react: 18.2.0
1296 | scheduler: 0.23.0
1297 | dev: false
1298 |
1299 | /react-ga@3.3.1(react@18.2.0):
1300 | resolution: {integrity: sha512-4Vc0W5EvXAXUN/wWyxvsAKDLLgtJ3oLmhYYssx+YzphJpejtOst6cbIHCIyF50Fdxuf5DDKqRYny24yJ2y7GFQ==}
1301 | peerDependencies:
1302 | prop-types: ^15.6.0
1303 | react: ^15.6.2 || ^16.0 || ^17 || ^18
1304 | dependencies:
1305 | react: 18.2.0
1306 | dev: false
1307 |
1308 | /react-is@16.13.1:
1309 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
1310 | dev: true
1311 |
1312 | /react-refresh@0.14.0:
1313 | resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==}
1314 | engines: {node: '>=0.10.0'}
1315 | dev: true
1316 |
1317 | /react@16.13.1:
1318 | resolution: {integrity: sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==}
1319 | engines: {node: '>=0.10.0'}
1320 | dependencies:
1321 | loose-envify: 1.4.0
1322 | object-assign: 4.1.1
1323 | prop-types: 15.8.1
1324 | dev: true
1325 |
1326 | /react@18.2.0:
1327 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
1328 | engines: {node: '>=0.10.0'}
1329 | dependencies:
1330 | loose-envify: 1.4.0
1331 | dev: false
1332 |
1333 | /resolve-from@4.0.0:
1334 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1335 | engines: {node: '>=4'}
1336 | dev: true
1337 |
1338 | /resolve@1.22.8:
1339 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
1340 | hasBin: true
1341 | dependencies:
1342 | is-core-module: 2.13.1
1343 | path-parse: 1.0.7
1344 | supports-preserve-symlinks-flag: 1.0.0
1345 | dev: true
1346 |
1347 | /reusify@1.0.4:
1348 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1349 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1350 | dev: true
1351 |
1352 | /rimraf@3.0.2:
1353 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
1354 | hasBin: true
1355 | dependencies:
1356 | glob: 7.2.3
1357 | dev: true
1358 |
1359 | /rollup@2.79.1:
1360 | resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==}
1361 | engines: {node: '>=10.0.0'}
1362 | hasBin: true
1363 | optionalDependencies:
1364 | fsevents: 2.3.3
1365 | dev: true
1366 |
1367 | /run-parallel@1.2.0:
1368 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1369 | dependencies:
1370 | queue-microtask: 1.2.3
1371 | dev: true
1372 |
1373 | /scheduler@0.19.1:
1374 | resolution: {integrity: sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==}
1375 | dependencies:
1376 | loose-envify: 1.4.0
1377 | object-assign: 4.1.1
1378 | dev: true
1379 |
1380 | /scheduler@0.23.0:
1381 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
1382 | dependencies:
1383 | loose-envify: 1.4.0
1384 | dev: false
1385 |
1386 | /semver@6.3.1:
1387 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
1388 | hasBin: true
1389 | dev: true
1390 |
1391 | /semver@7.5.4:
1392 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
1393 | engines: {node: '>=10'}
1394 | hasBin: true
1395 | dependencies:
1396 | lru-cache: 6.0.0
1397 | dev: true
1398 |
1399 | /shebang-command@2.0.0:
1400 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1401 | engines: {node: '>=8'}
1402 | dependencies:
1403 | shebang-regex: 3.0.0
1404 | dev: true
1405 |
1406 | /shebang-regex@3.0.0:
1407 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1408 | engines: {node: '>=8'}
1409 | dev: true
1410 |
1411 | /signal-exit@3.0.7:
1412 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
1413 | dev: true
1414 |
1415 | /sisteransi@1.0.5:
1416 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
1417 | dev: true
1418 |
1419 | /slash@3.0.0:
1420 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
1421 | engines: {node: '>=8'}
1422 | dev: true
1423 |
1424 | /source-map-js@1.0.2:
1425 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
1426 | engines: {node: '>=0.10.0'}
1427 | dev: true
1428 |
1429 | /sourcemap-codec@1.4.8:
1430 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
1431 | deprecated: Please use @jridgewell/sourcemap-codec instead
1432 | dev: true
1433 |
1434 | /strip-final-newline@2.0.0:
1435 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
1436 | engines: {node: '>=6'}
1437 | dev: true
1438 |
1439 | /supports-color@5.5.0:
1440 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
1441 | engines: {node: '>=4'}
1442 | dependencies:
1443 | has-flag: 3.0.0
1444 | dev: true
1445 |
1446 | /supports-preserve-symlinks-flag@1.0.0:
1447 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1448 | engines: {node: '>= 0.4'}
1449 | dev: true
1450 |
1451 | /to-fast-properties@2.0.0:
1452 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
1453 | engines: {node: '>=4'}
1454 | dev: true
1455 |
1456 | /to-regex-range@5.0.1:
1457 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1458 | engines: {node: '>=8.0'}
1459 | dependencies:
1460 | is-number: 7.0.0
1461 | dev: true
1462 |
1463 | /toposort@2.0.2:
1464 | resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==}
1465 | dev: true
1466 |
1467 | /typescript@5.3.3:
1468 | resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
1469 | engines: {node: '>=14.17'}
1470 | hasBin: true
1471 | dev: true
1472 |
1473 | /universalify@2.0.1:
1474 | resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
1475 | engines: {node: '>= 10.0.0'}
1476 | dev: true
1477 |
1478 | /update-browserslist-db@1.0.13(browserslist@4.22.2):
1479 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
1480 | hasBin: true
1481 | peerDependencies:
1482 | browserslist: '>= 4.21.0'
1483 | dependencies:
1484 | browserslist: 4.22.2
1485 | escalade: 3.1.1
1486 | picocolors: 1.0.0
1487 | dev: true
1488 |
1489 | /uuid@9.0.1:
1490 | resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
1491 | hasBin: true
1492 | dev: true
1493 |
1494 | /vite@3.2.7:
1495 | resolution: {integrity: sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==}
1496 | engines: {node: ^14.18.0 || >=16.0.0}
1497 | hasBin: true
1498 | peerDependencies:
1499 | '@types/node': '>= 14'
1500 | less: '*'
1501 | sass: '*'
1502 | stylus: '*'
1503 | sugarss: '*'
1504 | terser: ^5.4.0
1505 | peerDependenciesMeta:
1506 | '@types/node':
1507 | optional: true
1508 | less:
1509 | optional: true
1510 | sass:
1511 | optional: true
1512 | stylus:
1513 | optional: true
1514 | sugarss:
1515 | optional: true
1516 | terser:
1517 | optional: true
1518 | dependencies:
1519 | esbuild: 0.15.18
1520 | postcss: 8.4.32
1521 | resolve: 1.22.8
1522 | rollup: 2.79.1
1523 | optionalDependencies:
1524 | fsevents: 2.3.3
1525 | dev: true
1526 |
1527 | /which@2.0.2:
1528 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1529 | engines: {node: '>= 8'}
1530 | hasBin: true
1531 | dependencies:
1532 | isexe: 2.0.0
1533 | dev: true
1534 |
1535 | /workspace-tools@0.36.4:
1536 | resolution: {integrity: sha512-v0UFVvw9BjHtRu2Dau5PEJKkuG8u4jPlpXZQWjSz9XgbSutpPURqtO2P0hp3cVmQVATh8lkMFCewFgJuDnyC/w==}
1537 | dependencies:
1538 | '@yarnpkg/lockfile': 1.1.0
1539 | fast-glob: 3.3.2
1540 | git-url-parse: 13.1.1
1541 | globby: 11.1.0
1542 | jju: 1.4.0
1543 | js-yaml: 4.1.0
1544 | micromatch: 4.0.5
1545 | dev: true
1546 |
1547 | /wrappy@1.0.2:
1548 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
1549 | dev: true
1550 |
1551 | /yallist@3.1.1:
1552 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
1553 | dev: true
1554 |
1555 | /yallist@4.0.0:
1556 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
1557 | dev: true
1558 |
1559 | /yargs-parser@21.1.1:
1560 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
1561 | engines: {node: '>=12'}
1562 | dev: true
1563 |
1564 | /yocto-queue@0.1.0:
1565 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
1566 | engines: {node: '>=10'}
1567 | dev: true
1568 |
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - "adblock-detect-react/**"
3 | - "vite-test/**"
--------------------------------------------------------------------------------
/vite-test/.env:
--------------------------------------------------------------------------------
1 | VITE_GOOGLE_TRACKING_ID=""
--------------------------------------------------------------------------------
/vite-test/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
11 | adblock-detect-react test-app
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/vite-test/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vite-test",
3 | "version": "0.0.0",
4 | "scripts": {
5 | "dev": "vite",
6 | "build": "vite build",
7 | "preview": "vite preview"
8 | },
9 | "dependencies": {
10 | "adblock-detect-react": "workspace:*",
11 | "detect-browser": "^5.3.0",
12 | "react": "^18.2.0",
13 | "react-dom": "^18.2.0",
14 | "react-ga": "3.3.1"
15 | },
16 | "devDependencies": {
17 | "@vitejs/plugin-react": "^2.2.0",
18 | "vite": "^3.2.7"
19 | }
20 | }
--------------------------------------------------------------------------------
/vite-test/src/App.css:
--------------------------------------------------------------------------------
1 | .App {
2 | text-align: center;
3 | }
4 |
5 | .App-logo {
6 | height: 40vmin;
7 | pointer-events: none;
8 | }
9 |
10 | .App-header {
11 | background-color: #282c34;
12 | min-height: 100vh;
13 | display: flex;
14 | flex-direction: column;
15 | align-items: center;
16 | justify-content: center;
17 | font-size: calc(10px + 2vmin);
18 | color: white;
19 | }
20 |
21 | .App-link {
22 | color: #61dafb;
23 | }
24 |
--------------------------------------------------------------------------------
/vite-test/src/App.jsx:
--------------------------------------------------------------------------------
1 | import { useEffect } from "react";
2 | import ReactGA from "react-ga";
3 | import logo from "./logo.svg";
4 | import "./App.css";
5 |
6 | import { useDetectAdBlock } from "adblock-detect-react";
7 | import { detect } from "detect-browser";
8 |
9 | function App() {
10 | useEffect(() => {
11 | const { VITE_GOOGLE_TRACKING_ID } = import.meta.env;
12 | ReactGA.initialize(VITE_GOOGLE_TRACKING_ID);
13 | ReactGA.pageview(window.location.origin);
14 | }, []);
15 |
16 | const adBlockDetected = useDetectAdBlock();
17 | const browser = detect();
18 |
19 | return (
20 |
21 |
22 | {JSON.stringify(browser, null, 2)}
23 | {adBlockDetected && (
24 | <>
25 |
26 | {"An ad-blocker has been detected!"}
27 |
33 | using adblock-detect-react
34 |
35 | >
36 | )}
37 |
38 |
39 | );
40 | }
41 |
42 | export default App;
43 |
--------------------------------------------------------------------------------
/vite-test/src/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
5 | sans-serif;
6 | -webkit-font-smoothing: antialiased;
7 | -moz-osx-font-smoothing: grayscale;
8 | }
9 |
10 | code {
11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
12 | monospace;
13 | }
14 |
--------------------------------------------------------------------------------
/vite-test/src/logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vite-test/src/main.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom/client";
3 | import App from "./App";
4 | import "./index.css";
5 |
6 | ReactDOM.createRoot(document.getElementById("root")).render(
7 |
8 |
9 |
10 | );
11 |
--------------------------------------------------------------------------------
/vite-test/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 |
4 | /** @type {import("vite").UserConfigExport } */
5 | export default defineConfig({
6 | plugins: [react()],
7 | })
8 |
--------------------------------------------------------------------------------