├── .changeset ├── README.md ├── config.json └── pre.json ├── .eslintrc.cjs ├── .github └── workflows │ ├── release-next.yml │ └── release.yml ├── .gitignore ├── .nvmrc ├── .prettierrc ├── .vercelignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── demo ├── app.html ├── routes │ ├── __layout.svelte │ └── index.svelte └── static │ ├── favicon.png │ └── global.css ├── examples ├── svelte-kit │ ├── .gitignore │ ├── jsconfig.json │ ├── package.json │ ├── src │ │ ├── app.html │ │ ├── global.d.ts │ │ ├── routes │ │ │ ├── __layout.svelte │ │ │ ├── index.json.js │ │ │ └── index.svelte │ │ └── styles │ │ │ └── global.css │ ├── static │ │ └── favicon.png │ └── svelte.config.js └── vite │ ├── index.html │ ├── package.json │ ├── public │ ├── favicon.png │ └── global.css │ ├── src │ ├── App.svelte │ └── index.js │ ├── vite.config.js │ └── yarn.lock ├── jsconfig.json ├── package.json ├── pnpm-lock.yaml ├── src ├── components │ ├── ThemeToggle.svelte │ ├── ThemeWrapper.svelte │ └── presets.js ├── index.js ├── support │ ├── css.js │ ├── isObject.js │ ├── processConfig.js │ ├── store.js │ └── toggle.js └── use.js ├── svelte.config.js ├── tests ├── ThemeToggle.test.js ├── ThemeToggle.test.svelte ├── ThemeWrapper.test.js ├── setup.js ├── support.js ├── use.test.js ├── useStylesheet.test.svelte └── useTheme.test.svelte └── vitest.config.js /.changeset/README.md: -------------------------------------------------------------------------------- 1 | # Changesets 2 | 3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works 4 | with multi-package repos, or single-package repos to help you version and publish your code. You can 5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets) 6 | 7 | We have a quick list of common questions to get you started engaging with this project in 8 | [our documentation](https://github.com/changesets/changesets/blob/master/docs/common-questions.md) 9 | -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@1.4.0/schema.json", 3 | "changelog": "@changesets/cli/changelog", 4 | "commit": false, 5 | "linked": [], 6 | "access": "public", 7 | "baseBranch": "main", 8 | "updateInternalDependencies": "patch", 9 | "ignore": [] 10 | } 11 | -------------------------------------------------------------------------------- /.changeset/pre.json: -------------------------------------------------------------------------------- 1 | { 2 | "mode": "pre", 3 | "tag": "next", 4 | "initialVersions": { 5 | "svelte-themer": "0.4.6-next.4" 6 | }, 7 | "changesets": [] 8 | } 9 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: ['eslint:recommended', 'prettier'], 4 | plugins: ['svelte3'], 5 | overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }], 6 | parserOptions: { 7 | sourceType: 'module', 8 | ecmaVersion: 2020 9 | }, 10 | env: { 11 | browser: true, 12 | es2017: true, 13 | node: true 14 | } 15 | }; 16 | -------------------------------------------------------------------------------- /.github/workflows/release-next.yml: -------------------------------------------------------------------------------- 1 | name: Release NEXT 2 | on: 3 | push: 4 | branches: 5 | - next 6 | jobs: 7 | release: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v2 11 | - uses: actions/setup-node@v1 12 | with: 13 | node-version: '14.x' 14 | registry-url: 'https://registry.npmjs.org' 15 | - run: yarn --frozen-lockfile 16 | - run: yarn test 17 | 18 | - name: Publish next to npm 19 | if: github.ref == 'refs/heads/next' 20 | run: | 21 | git config --global user.name 'GitHub Actions' 22 | git config --global user.email 'josefaidt@users.noreply.github.com' 23 | 24 | # check whether version is same as current, bump next 25 | current=$(jq -r '.version' package.json) 26 | published=$(npm view svelte-themer@next version) 27 | if [[ $current == $published ]]; then 28 | echo 'version already published, updating package.json' 29 | npm version prerelease --preid=next -m "[automated] update version" 30 | fi 31 | 32 | # publish @next, this will build types 33 | # yarn publish --tag next 34 | 35 | # check differences and commit back to repo 36 | changed=$(git status --porcelain) 37 | if [[ -n "$changed" ]]; then 38 | if [[ ! `git diff --quiet HEAD -- types` ]]; then 39 | git add types 40 | git commit -m "[automated] update types" 41 | fi 42 | if [[ ! `git diff --quiet HEAD -- package.json` ]]; then 43 | git add package.json 44 | git commit -m "[automated] update version" 45 | fi 46 | git push 47 | fi 48 | env: 49 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 50 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | on: 3 | push: 4 | branches: 5 | - main 6 | env: 7 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 8 | jobs: 9 | release: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v2 13 | - uses: actions/setup-node@v1 14 | with: 15 | node-version: '14.x' 16 | registry-url: 'https://registry.npmjs.org' 17 | - run: yarn --frozen-lockfile 18 | - run: yarn test 19 | 20 | - name: Update package.json version from NEXT 21 | run: | 22 | version=$(jq -r '.version' package.json) 23 | regex='(.*)(\-next\.[0-9]+)$' 24 | if [[ $version =~ $regex ]]; then 25 | temp=$(mktemp) 26 | newVersion=$(echo $version | sed -E "s/${regex}/\1/g") 27 | jq ".version=\"$newVersion\"" package.json > "$temp" && mv "$temp" package.json 28 | fi 29 | 30 | # - name: Publish to npm 31 | # uses: changesets/action@master 32 | # with: 33 | # publish: yarn release 34 | # env: 35 | # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 36 | # NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 37 | 38 | - name: Update types 39 | run: | 40 | changed=$(git status --porcelain) 41 | if [[ -n "$changed" ]]; then 42 | git config --global user.name 'GitHub Actions' 43 | git config --global user.email 'josefaidt@users.noreply.github.com' 44 | if [[ ! `git diff --quiet HEAD -- types` ]]; then 45 | git add types 46 | git commit -m "[automated] update types" 47 | fi 48 | if [[ ! `git diff --quiet HEAD -- package.json` ]]; then 49 | git add package.json 50 | git commit -m "[automated] update version" 51 | fi 52 | if [[ -z "$(git log origin/main..HEAD); then 53 | git push 54 | fi 55 | fi 56 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | *.log 4 | .vscode 5 | 6 | /build 7 | /.svelte-kit 8 | /package 9 | 10 | .vercel 11 | coverage -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 16 -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 80, 3 | "trailingComma": "es5", 4 | "tabWidth": 2, 5 | "semi": false, 6 | "bracketSpacing": true, 7 | "htmlWhitespaceSensitivity": "ignore", 8 | "arrowParens": "avoid", 9 | "singleQuote": true, 10 | "svelteSortOrder": "options-scripts-markup-styles", 11 | "svelteStrictMode": true, 12 | "svelteBracketNewLine": true, 13 | "svelteAllowShorthand": false 14 | } 15 | -------------------------------------------------------------------------------- /.vercelignore: -------------------------------------------------------------------------------- 1 | .changeset 2 | .github 3 | .vscode 4 | 5 | examples 6 | lib 7 | /*.md -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | ## Prerequisites 4 | 5 | - Node.js version mentioned in [.nvmrc](./.nvmrc) 6 | - [pnpm](https://pnpm.io/) -- `npm install -g pnpm` 7 | 8 | ## Development 9 | 10 | This guide utilizes the [GitHub CLI](https://cli.github.com/) 11 | 12 | 1. `gh repo fork josefaidt/svelte-themer` 13 | 2. Follow the prompts to clone the fork 14 | 15 | ```console 16 | ? Would you like to clone the fork? Yes 17 | ``` 18 | 19 | 3. This will clone the forked repository locally with `origin` and `upstream` remotes, as well as set up local branches tracking existing upstream branches. To proceed with development off the `main` branch, run: 20 | 21 | ```console 22 | git checkout -b my-new-branch 23 | ``` 24 | 25 | 4. Install dependencies with `pnpm install` 26 | 5. Run the development servers with `pnpm start` 27 | 28 | ## Sync Local Branches 29 | 30 | ```console 31 | git checkout main 32 | git fetch upstream 33 | git pull --strategy-option theirs 34 | ``` 35 | 36 | ## Releasing 37 | 38 | ### Latest 39 | 40 | 1. `pnpm version --` 41 | 2. `pnpm publish` 42 | 43 | ### Next 44 | 45 | 1. `pnpm version prerelease --preid next` 46 | 2. `pnpm publish --tag next --publish-branch next` 47 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Josef Aidt 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 all 13 | 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 THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # svelte-themer 2 | 3 | A theming engine for your Svelte apps using CSS Variables, persisted. 4 | 5 | ```html 6 | 9 | 10 | 11 |
12 |

svelte themer

13 | 14 |
15 |
16 | 17 | 23 | ``` 24 | 25 | ## CSS Variables 26 | 27 | CSS variables are created for app-wide consumption using the nomenclature `--[prefix]-[property!]` 28 | 29 | For example: 30 | 31 | - `--theme-text` by default where `property = 'text'` 32 | - `--base-text` where `prefix = 'base'` and `property = 'text'` 33 | - `--text` where `prefix = null || undefined` and `property = 'text'` 34 | 35 | Now supports adding _all_ theme colors as theme-specific CSS variables: 36 | 37 | ```js 38 | const lightTheme = { 39 | light: { 40 | colors: { 41 | text: '#282230', 42 | background: { 43 | _: '#f1f1f1', 44 | contrast: '#b1b1b1', 45 | }, 46 | primary: '#01796f', 47 | primary_dark: '#016159', 48 | secondary: '#562931', 49 | }, 50 | }, 51 | } 52 | ``` 53 | 54 | Turns into 55 | 56 | ```css 57 | :root { 58 | --theme-light-colors-text: #282230; 59 | --theme-light-colors-background: #f1f1f1; 60 | --theme-light-colors-background-contrast: #b1b1b1; 61 | --theme-light-colors-primary: #01796f; 62 | --theme-light-colors-primary_dark: #016159; 63 | --theme-light-colors-secondary: #562931; 64 | } 65 | 66 | [theme='light'], 67 | .theme--light { 68 | --theme-colors-text: var(--theme-light-colors-text); 69 | --theme-colors-background: var(--theme-light-colors-background); 70 | --theme-colors-background-contrast: --var( 71 | theme-light-colors-background-contrast 72 | ); 73 | --theme-colors-primary: var(--theme-light-colors-primary); 74 | --theme-colors-primary_dark: var(--theme-light-colors-primary_dark); 75 | --theme-colors-secondary: var(--theme-light-colors-secondary); 76 | } 77 | ``` 78 | 79 | ## Getting Started 80 | 81 | Use the preset themes supplied by svelte-themer or create your own! Theme names are specified by the key, and all properties are transformed into CSS Variables. 82 | 83 | **NOTE**: svelte-themer is preset with 3 themes to showcase the flexible functionality of `toggle()` 84 | 85 | ```js 86 | // src/themes.js 87 | export const themes = { 88 | light: { 89 | colors: { 90 | text: '#282230', 91 | background: { 92 | _: '#f1f1f1', 93 | contrast: '#b1b1b1', 94 | }, 95 | primary: '#01796f', 96 | primary_dark: '#016159', 97 | secondary: '#562931', 98 | }, 99 | }, 100 | dark: { 101 | colors: { 102 | text: '#f1f1f1', 103 | background: { 104 | _: '#27323a', 105 | contrast: '#0d1215', 106 | }, 107 | primary: '#01978b', 108 | primary_dark: '#00887c', 109 | secondary: '#fe8690', 110 | }, 111 | }, 112 | } 113 | ``` 114 | 115 | ## Components 116 | 117 | With svelte-themer there are two components: a wrapper component, and a button for toggling themes. The provided button is more for convenience as the function used to toggle themes is exposed to the theme context. 118 | 119 | ### ThemeWrapper 120 | 121 | ```html 122 | 123 | 127 | 128 | 129 |
130 |

My Svelte App

131 |
132 |
133 | ``` 134 | 135 | This allows any components nested to access the theme [Context](https://svelte.dev/tutorial/context-api) which wraps a writeable `theme` [store](https://svelte.dev/tutorial/writable-stores) 136 | 137 | #### Theme Persistence 138 | 139 | By default svelte-themer persists the chosen theme with `localStorage`, and can be modified via the `key` prop. To disabled persistence, provide `key={null}`. 140 | 141 | ```html 142 | 143 | 144 | 145 | ``` 146 | 147 | #### Theme Loading Order 148 | 149 | `ThemeWrapper` will load a theme on first visit based on the following order: 150 | 151 | 1. User-provided - The value specified in the `theme` prop. 152 | 2. Saved - User's stored choice (from `localStorage`) 153 | 3. Prefers - User's Operating System settings (via `prefers-color-scheme`) 154 | 4. Fallback - First theme in `themes` specified (from presets, `light`) 155 | 156 | By default, the "prefers" step will choose a theme based on OS settings, however this can be modified to directly choose "light" or "dark" by leveraging the `mode` prop: 157 | 158 | ```html 159 | 160 | 161 | 162 | ``` 163 | 164 | ### Accessing Theme Context 165 | 166 | Described below is the pattern used for accessing `theme` context to create your own toggle button. 167 | 168 | ```html 169 | 170 | 174 | 175 | 178 | ``` 179 | 180 | ### Provided Theme Toggle 181 | 182 | ```html 183 | 184 | 188 | 189 | 190 |
191 |

My Svelte App

192 | 193 |
194 |
195 | ``` 196 | 197 | ## Actions 198 | 199 | ### use:theme 200 | 201 | ```svelte 202 | 208 | 209 |
210 |

Hello, World!

211 |
212 | 213 | 218 | ``` 219 | 220 | ### use:stylesheet 221 | 222 | ```svelte 223 | 229 | 230 |
231 |

Hello, World!

232 |
233 | 234 | 239 | ``` 240 | 241 | ## Contributing 242 | 243 | Refer to the [contributing guidelines](CONTRIBUTING.md). 244 | 245 | ## License 246 | 247 | [MIT](LICENSE) 248 | -------------------------------------------------------------------------------- /demo/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | %svelte.head% 10 | 11 | 12 |
%svelte.body%
13 | 14 | 15 | -------------------------------------------------------------------------------- /demo/routes/__layout.svelte: -------------------------------------------------------------------------------- 1 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
49 | 55 |
56 | 57 |
58 |
59 |
60 | 61 | 111 | -------------------------------------------------------------------------------- /demo/routes/index.svelte: -------------------------------------------------------------------------------- 1 |
2 |
3 |

Svelte Themer

4 |

A theming engine for your Svelte apps using CSS Variables, persisted.

5 |
6 |
7 | 10 | readme 11 | 12 | npm 13 | github 14 |
15 |
16 | 17 | 57 | -------------------------------------------------------------------------------- /demo/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/josefaidt/svelte-themer/af4a2d4e0266c280cbb01b3956794c8f97c51efa/demo/static/favicon.png -------------------------------------------------------------------------------- /demo/static/global.css: -------------------------------------------------------------------------------- 1 | html { 2 | margin: 0; 3 | padding: 0; 4 | } 5 | 6 | body { 7 | position: relative; 8 | margin: 0; 9 | /* padding: 8px; */ 10 | box-sizing: border-box; 11 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 12 | Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif; 13 | } 14 | 15 | html, 16 | body { 17 | height: 100%; 18 | } 19 | 20 | a { 21 | color: rgb(0, 100, 200); 22 | text-decoration: none; 23 | } 24 | 25 | a:hover { 26 | text-decoration: underline; 27 | } 28 | 29 | a:visited { 30 | color: rgb(0, 80, 160); 31 | } 32 | 33 | label { 34 | display: block; 35 | } 36 | 37 | input, 38 | button, 39 | select, 40 | textarea { 41 | font-family: inherit; 42 | font-size: inherit; 43 | padding: 0.4em; 44 | margin: 0 0 0.5em 0; 45 | box-sizing: border-box; 46 | border: 1px solid #ccc; 47 | border-radius: 2px; 48 | } 49 | 50 | input:disabled { 51 | color: #ccc; 52 | } 53 | 54 | input[type='range'] { 55 | height: 0; 56 | } 57 | 58 | button { 59 | color: #333; 60 | background-color: #f4f4f4; 61 | outline: none; 62 | } 63 | 64 | button:disabled { 65 | color: #999; 66 | } 67 | 68 | button:not(:disabled):active { 69 | background-color: #ddd; 70 | } 71 | 72 | button:focus { 73 | border-color: #666; 74 | } 75 | -------------------------------------------------------------------------------- /examples/svelte-kit/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | -------------------------------------------------------------------------------- /examples/svelte-kit/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "paths": { 5 | "$lib": ["src/lib"], 6 | "$lib/*": ["src/lib/*"] 7 | } 8 | }, 9 | "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"] 10 | } 11 | -------------------------------------------------------------------------------- /examples/svelte-kit/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@svelte-themer/sample-svelte-kit", 3 | "private": true, 4 | "type": "module", 5 | "version": "0.0.1", 6 | "scripts": { 7 | "dev": "svelte-kit dev", 8 | "build": "svelte-kit build", 9 | "preview": "svelte-kit preview" 10 | }, 11 | "devDependencies": { 12 | "@sveltejs/adapter-static": "next", 13 | "@sveltejs/kit": "next", 14 | "autoprefixer": "^10.4.2", 15 | "svelte": "^3.46.3", 16 | "svelte-preprocess": "^4.10.2", 17 | "svelte-themer": "^0.5.4" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /examples/svelte-kit/src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %svelte.head% 8 | 9 | 10 |
%svelte.body%
11 | 12 | 13 | -------------------------------------------------------------------------------- /examples/svelte-kit/src/global.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /examples/svelte-kit/src/routes/__layout.svelte: -------------------------------------------------------------------------------- 1 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 57 | -------------------------------------------------------------------------------- /examples/svelte-kit/src/routes/index.json.js: -------------------------------------------------------------------------------- 1 | import pkg from 'svelte-themer/package.json' 2 | 3 | /** 4 | * @type {import('@sveltejs/kit').RequestHandler} 5 | */ 6 | export async function get() { 7 | const { version } = pkg 8 | return { 9 | body: { 10 | SVELTE_THEMER_VERSION: version, 11 | }, 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /examples/svelte-kit/src/routes/index.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 16 | 17 |
18 | 26 |
27 |
28 |
29 |

Svelte Themer

30 |

31 | A theming engine for your Svelte apps using CSS Variables, persisted. 32 |

33 |
34 |
35 | 38 | readme 39 | 40 | npm 41 | github 42 |
43 |
44 |
45 |
46 | 47 | {#if SVELTE_THEMER_VERSION} 48 | v{SVELTE_THEMER_VERSION} 49 | {/if} 50 |
51 |
52 | 53 | 157 | -------------------------------------------------------------------------------- /examples/svelte-kit/src/styles/global.css: -------------------------------------------------------------------------------- 1 | html { 2 | margin: 0; 3 | padding: 0; 4 | } 5 | 6 | body { 7 | position: relative; 8 | margin: 0; 9 | /* padding: 8px; */ 10 | box-sizing: border-box; 11 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 12 | Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif; 13 | } 14 | 15 | html, 16 | body { 17 | height: 100%; 18 | } 19 | 20 | a { 21 | color: rgb(0, 100, 200); 22 | text-decoration: none; 23 | } 24 | 25 | a:hover { 26 | text-decoration: underline; 27 | } 28 | 29 | a:visited { 30 | color: rgb(0, 80, 160); 31 | } 32 | 33 | label { 34 | display: block; 35 | } 36 | 37 | input, 38 | button, 39 | select, 40 | textarea { 41 | font-family: inherit; 42 | font-size: inherit; 43 | padding: 0.4em; 44 | margin: 0 0 0.5em 0; 45 | box-sizing: border-box; 46 | border: 1px solid #ccc; 47 | border-radius: 2px; 48 | } 49 | 50 | input:disabled { 51 | color: #ccc; 52 | } 53 | 54 | input[type='range'] { 55 | height: 0; 56 | } 57 | 58 | button { 59 | color: #333; 60 | background-color: #f4f4f4; 61 | outline: none; 62 | } 63 | 64 | button:disabled { 65 | color: #999; 66 | } 67 | 68 | button:not(:disabled):active { 69 | background-color: #ddd; 70 | } 71 | 72 | button:focus { 73 | border-color: #666; 74 | } 75 | -------------------------------------------------------------------------------- /examples/svelte-kit/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/josefaidt/svelte-themer/af4a2d4e0266c280cbb01b3956794c8f97c51efa/examples/svelte-kit/static/favicon.png -------------------------------------------------------------------------------- /examples/svelte-kit/svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-static' 2 | import autoprefixer from 'autoprefixer' 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | kit: { 7 | // hydrate the
element in src/app.html 8 | target: '#svelte', 9 | adapter: adapter(), 10 | vite: { 11 | css: { 12 | postcss: { 13 | plugins: [ 14 | autoprefixer({ 15 | overrideBrowserslist: ['last 1 version', 'ie >= 11'], 16 | }), 17 | ], 18 | }, 19 | }, 20 | }, 21 | }, 22 | } 23 | 24 | export default config 25 | -------------------------------------------------------------------------------- /examples/vite/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | svelte themer 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /examples/vite/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@svelte-themer/sample-vite", 3 | "private": true, 4 | "type": "module", 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "vite build", 8 | "serve": "vite preview" 9 | }, 10 | "devDependencies": { 11 | "@sveltejs/vite-plugin-svelte": "next", 12 | "autoprefixer": "^10.4.2", 13 | "postcss": "^8.4.5", 14 | "svelte": "^3.46.3", 15 | "svelte-themer": "^0.5.4", 16 | "vite": "^2.7.13" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /examples/vite/public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/josefaidt/svelte-themer/af4a2d4e0266c280cbb01b3956794c8f97c51efa/examples/vite/public/favicon.png -------------------------------------------------------------------------------- /examples/vite/public/global.css: -------------------------------------------------------------------------------- 1 | html { 2 | margin: 0; 3 | padding: 0; 4 | } 5 | 6 | body { 7 | position: relative; 8 | margin: 0; 9 | /* padding: 8px; */ 10 | box-sizing: border-box; 11 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 12 | Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif; 13 | } 14 | 15 | html, 16 | body { 17 | height: 100%; 18 | } 19 | 20 | a { 21 | color: rgb(0, 100, 200); 22 | text-decoration: none; 23 | } 24 | 25 | a:hover { 26 | text-decoration: underline; 27 | } 28 | 29 | a:visited { 30 | color: rgb(0, 80, 160); 31 | } 32 | 33 | label { 34 | display: block; 35 | } 36 | 37 | input, 38 | button, 39 | select, 40 | textarea { 41 | font-family: inherit; 42 | font-size: inherit; 43 | padding: 0.4em; 44 | margin: 0 0 0.5em 0; 45 | box-sizing: border-box; 46 | border: 1px solid #ccc; 47 | border-radius: 2px; 48 | } 49 | 50 | input:disabled { 51 | color: #ccc; 52 | } 53 | 54 | input[type='range'] { 55 | height: 0; 56 | } 57 | 58 | button { 59 | color: #333; 60 | background-color: #f4f4f4; 61 | outline: none; 62 | } 63 | 64 | button:disabled { 65 | color: #999; 66 | } 67 | 68 | button:not(:disabled):active { 69 | background-color: #ddd; 70 | } 71 | 72 | button:focus { 73 | border-color: #666; 74 | } 75 | -------------------------------------------------------------------------------- /examples/vite/src/App.svelte: -------------------------------------------------------------------------------- 1 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
47 | 52 |
53 |
54 |
55 |

Svelte Themer

56 |

57 | A theming engine for your Svelte apps using CSS Variables, 58 | persisted. 59 |

60 |
61 |
62 | 65 | readme 66 | 67 | npm 68 | github 69 |
70 |
71 |
72 |
73 |
74 | 75 | 172 | -------------------------------------------------------------------------------- /examples/vite/src/index.js: -------------------------------------------------------------------------------- 1 | import App from './App.svelte' 2 | 3 | const app = new App({ 4 | target: document.body, 5 | }) 6 | 7 | export default app 8 | -------------------------------------------------------------------------------- /examples/vite/vite.config.js: -------------------------------------------------------------------------------- 1 | import { svelte } from '@sveltejs/vite-plugin-svelte' 2 | import autoprefixer from 'autoprefixer' 3 | import { defineConfig } from 'vite' 4 | 5 | export default defineConfig(({ mode }) => { 6 | const isProduction = mode === 'production' 7 | return { 8 | css: { 9 | postcss: { 10 | plugins: [ 11 | autoprefixer({ 12 | overrideBrowserslist: ['last 1 version', 'ie >= 11'], 13 | }), 14 | ], 15 | }, 16 | }, 17 | plugins: [svelte()], 18 | build: { 19 | minify: isProduction, 20 | outDir: 'build', 21 | }, 22 | } 23 | }) 24 | -------------------------------------------------------------------------------- /examples/vite/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@rollup/pluginutils@^4.1.1": 6 | version "4.1.1" 7 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.1.tgz#1d4da86dd4eded15656a57d933fda2b9a08d47ec" 8 | integrity sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ== 9 | dependencies: 10 | estree-walker "^2.0.1" 11 | picomatch "^2.2.2" 12 | 13 | "@sveltejs/vite-plugin-svelte@^1.0.0-next.22": 14 | version "1.0.0-next.30" 15 | resolved "https://registry.yarnpkg.com/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.30.tgz#a6cd181bb406d590c1fa8d480c55950d567689f9" 16 | integrity sha512-YQqdMxjL1VgSFk4/+IY3yLwuRRapPafPiZTiaGEq1psbJYSNYUWx9F1zMm32GMsnogg3zn99mGJOqe3ld3HZSg== 17 | dependencies: 18 | "@rollup/pluginutils" "^4.1.1" 19 | debug "^4.3.2" 20 | kleur "^4.1.4" 21 | magic-string "^0.25.7" 22 | require-relative "^0.8.7" 23 | svelte-hmr "^0.14.7" 24 | 25 | autoprefixer@^10.3.4: 26 | version "10.4.0" 27 | resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.0.tgz#c3577eb32a1079a440ec253e404eaf1eb21388c8" 28 | integrity sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA== 29 | dependencies: 30 | browserslist "^4.17.5" 31 | caniuse-lite "^1.0.30001272" 32 | fraction.js "^4.1.1" 33 | normalize-range "^0.1.2" 34 | picocolors "^1.0.0" 35 | postcss-value-parser "^4.1.0" 36 | 37 | balanced-match@^1.0.2: 38 | version "1.0.2" 39 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 40 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 41 | 42 | browserslist@^4.17.5: 43 | version "4.17.5" 44 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.5.tgz#c827bbe172a4c22b123f5e337533ceebadfdd559" 45 | integrity sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA== 46 | dependencies: 47 | caniuse-lite "^1.0.30001271" 48 | electron-to-chromium "^1.3.878" 49 | escalade "^3.1.1" 50 | node-releases "^2.0.1" 51 | picocolors "^1.0.0" 52 | 53 | caniuse-lite@^1.0.30001271, caniuse-lite@^1.0.30001272: 54 | version "1.0.30001272" 55 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001272.tgz#8e9790ff995e9eb6e1f4c45cd07ddaa87cddbb14" 56 | integrity sha512-DV1j9Oot5dydyH1v28g25KoVm7l8MTxazwuiH3utWiAS6iL/9Nh//TGwqFEeqqN8nnWYQ8HHhUq+o4QPt9kvYw== 57 | 58 | css-vars-ponyfill@^2.4.7: 59 | version "2.4.7" 60 | resolved "https://registry.yarnpkg.com/css-vars-ponyfill/-/css-vars-ponyfill-2.4.7.tgz#df6fb2928e5ff013eb67e968761f8ed3d440b1e3" 61 | integrity sha512-KhG3AbiZrUpIvAQ9Oc/iBqCitmXg6MajFqNRQd9nHvlwOo8p54HTq5DFCIaAUwMGRyttJ+mBmZCRSHJpe6J9cg== 62 | dependencies: 63 | balanced-match "^1.0.2" 64 | get-css-data "^2.0.2" 65 | 66 | debug@^4.3.2: 67 | version "4.3.2" 68 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" 69 | integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== 70 | dependencies: 71 | ms "2.1.2" 72 | 73 | electron-to-chromium@^1.3.878: 74 | version "1.3.884" 75 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.884.tgz#0cd8c3a80271fd84a81f284c60fb3c9ecb33c166" 76 | integrity sha512-kOaCAa+biA98PwH5BpCkeUeTL6mCeg8p3Q3OhqzPyqhu/5QUnWAN2wr/3IK8xMQxIV76kfoQpP+Bn/wij/jXrg== 77 | 78 | esbuild-android-arm64@0.13.10: 79 | version "0.13.10" 80 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.10.tgz#3545c71bf01e8b36535681078cdb0191c8654452" 81 | integrity sha512-1sCdVAq64yMp2Uhlu+97/enFxpmrj31QHtThz7K+/QGjbHa7JZdBdBsZCzWJuntKHZ+EU178tHYkvjaI9z5sGg== 82 | 83 | esbuild-darwin-64@0.13.10: 84 | version "0.13.10" 85 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.10.tgz#143e34d7f5d3860cc681c64c860f531e60496b5b" 86 | integrity sha512-XlL+BYZ2h9cz3opHfFgSHGA+iy/mljBFIRU9q++f9SiBXEZTb4gTW/IENAD1l9oKH0FdO9rUpyAfV+lM4uAxrg== 87 | 88 | esbuild-darwin-arm64@0.13.10: 89 | version "0.13.10" 90 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.10.tgz#456a044b789d5d256af8d264314da5217ca9fcd1" 91 | integrity sha512-RZMMqMTyActMrXKkW71IQO8B0tyQm0Bm+ZJQWNaHJchL5LlqazJi7rriwSocP+sKLszHhsyTEBBh6qPdw5g5yQ== 92 | 93 | esbuild-freebsd-64@0.13.10: 94 | version "0.13.10" 95 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.10.tgz#dcd829a4a95226716faae8a2f378f08688f921b6" 96 | integrity sha512-pf4BEN9reF3jvZEZdxljVgOv5JS4kuYFCI78xk+2HWustbLvTP0b9XXfWI/OD0ZLWbyLYZYIA+VbVe4tdAklig== 97 | 98 | esbuild-freebsd-arm64@0.13.10: 99 | version "0.13.10" 100 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.10.tgz#116c254b3eb1b9d1dd6f12e0271967de4512ca09" 101 | integrity sha512-j9PUcuNWmlxr4/ry4dK/s6zKh42Jhh/N5qnAAj7tx3gMbkIHW0JBoVSbbgp97p88X9xgKbXx4lG2sJDhDWmsYQ== 102 | 103 | esbuild-linux-32@0.13.10: 104 | version "0.13.10" 105 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.10.tgz#131971622c38e5aa014303a494a1b5c3cc90f2be" 106 | integrity sha512-imtdHG5ru0xUUXuc2ofdtyw0fWlHYXV7JjF7oZHgmn0b+B4o4Nr6ZON3xxoo1IP8wIekW+7b9exIf/MYq0QV7w== 107 | 108 | esbuild-linux-64@0.13.10: 109 | version "0.13.10" 110 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.10.tgz#48826c388abd5dde3fc098a8ef38d8b548674f93" 111 | integrity sha512-O7fzQIH2e7GC98dvoTH0rad5BVLm9yU3cRWfEmryCEIFTwbNEWCEWOfsePuoGOHRtSwoVY1hPc21CJE4/9rWxQ== 112 | 113 | esbuild-linux-arm64@0.13.10: 114 | version "0.13.10" 115 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.10.tgz#0be9ffc92e30641869c7fbca0ec5d30fa8cbddd6" 116 | integrity sha512-bkGxN67S2n0PF4zhh87/92kBTsH2xXLuH6T5omReKhpXdJZF5SVDSk5XU/nngARzE+e6QK6isK060Dr5uobzNw== 117 | 118 | esbuild-linux-arm@0.13.10: 119 | version "0.13.10" 120 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.10.tgz#8c15bcaa41a022c834f049a71a7d1fbade507532" 121 | integrity sha512-R2Jij4A0K8BcmBehvQeUteQEcf24Y2YZ6mizlNFuJOBPxe3vZNmkZ4mCE7Pf1tbcqA65qZx8J3WSHeGJl9EsJA== 122 | 123 | esbuild-linux-mips64le@0.13.10: 124 | version "0.13.10" 125 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.10.tgz#5bb33a2bc82e9c78ed724f345a8359610ddc9695" 126 | integrity sha512-UDNO5snJYOLWrA2uOUxM/PVbzzh2TR7Zf2i8zCCuFlYgvAb/81XO+Tasp3YAElDpp4VGqqcpBXLtofa9nrnJGA== 127 | 128 | esbuild-linux-ppc64le@0.13.10: 129 | version "0.13.10" 130 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.10.tgz#18703cd0d52447d97486735b8e79fba7d81eac65" 131 | integrity sha512-xu6J9rMWu1TcEGuEmoc8gsTrJCEPsf+QtxK4IiUZNde9r4Q4nlRVah4JVZP3hJapZgZJcxsse0XiKXh1UFdOeA== 132 | 133 | esbuild-netbsd-64@0.13.10: 134 | version "0.13.10" 135 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.10.tgz#3ecb06158aadb5b7396a5b7632069181b1591c56" 136 | integrity sha512-d+Gr0ScMC2J83Bfx/ZvJHK0UAEMncctwgjRth9d4zppYGLk/xMfFKxv5z1ib8yZpQThafq8aPm8AqmFIJrEesw== 137 | 138 | esbuild-openbsd-64@0.13.10: 139 | version "0.13.10" 140 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.10.tgz#3a6950b1d955de921ac52f7af0b4865e89d6e4f1" 141 | integrity sha512-OuCYc+bNKumBvxflga+nFzZvxsgmWQW+z4rMGIjM5XIW0nNbGgRc5p/0PSDv0rTdxAmwCpV69fezal0xjrDaaA== 142 | 143 | esbuild-sunos-64@0.13.10: 144 | version "0.13.10" 145 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.10.tgz#ad407f721a8b5727fca31958b5eab1b0232e2d73" 146 | integrity sha512-gUkgivZK11bD56wDoLsnYrsOHD/zHzzLSdqKcIl3wRMulfHpRBpoX8gL0dbWr+8N9c+1HDdbNdvxSRmZ4RCVwg== 147 | 148 | esbuild-windows-32@0.13.10: 149 | version "0.13.10" 150 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.10.tgz#ddaaa0b6e172df6512edc7a91bd2456615cfa914" 151 | integrity sha512-C1xJ54E56dGWRaYcTnRy7amVZ9n1/D/D2/qVw7e5EtS7p+Fv/yZxxgqyb1hMGKXgtFYX4jMpU5eWBF/AsYrn+A== 152 | 153 | esbuild-windows-64@0.13.10: 154 | version "0.13.10" 155 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.10.tgz#93d861abf36bf71b6e61f5cbd2e42762ce5cb83a" 156 | integrity sha512-6+EXEXopEs3SvPFAHcps2Krp/FvqXXsOQV33cInmyilb0ZBEQew4MIoZtMIyB3YXoV6//dl3i6YbPrFZaWEinQ== 157 | 158 | esbuild-windows-arm64@0.13.10: 159 | version "0.13.10" 160 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.10.tgz#85a2d338aaa8b0cd1d8ecbe9150def9a608e8947" 161 | integrity sha512-xTqM/XKhORo6u9S5I0dNJWEdWoemFjogLUTVLkQMVyUV3ZuMChahVA+bCqKHdyX55pCFxD/8v2fm3/sfFMWN+g== 162 | 163 | esbuild@^0.13.2: 164 | version "0.13.10" 165 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.10.tgz#e3d24d59f1d8b2130d746ca858efcb80e1d99b26" 166 | integrity sha512-0NfCsnAh5XatHIx6Cu93wpR2v6opPoOMxONYhaAoZKzGYqAE+INcDeX2wqMdcndvPQdWCuuCmvlnsh0zmbHcSQ== 167 | optionalDependencies: 168 | esbuild-android-arm64 "0.13.10" 169 | esbuild-darwin-64 "0.13.10" 170 | esbuild-darwin-arm64 "0.13.10" 171 | esbuild-freebsd-64 "0.13.10" 172 | esbuild-freebsd-arm64 "0.13.10" 173 | esbuild-linux-32 "0.13.10" 174 | esbuild-linux-64 "0.13.10" 175 | esbuild-linux-arm "0.13.10" 176 | esbuild-linux-arm64 "0.13.10" 177 | esbuild-linux-mips64le "0.13.10" 178 | esbuild-linux-ppc64le "0.13.10" 179 | esbuild-netbsd-64 "0.13.10" 180 | esbuild-openbsd-64 "0.13.10" 181 | esbuild-sunos-64 "0.13.10" 182 | esbuild-windows-32 "0.13.10" 183 | esbuild-windows-64 "0.13.10" 184 | esbuild-windows-arm64 "0.13.10" 185 | 186 | escalade@^3.1.1: 187 | version "3.1.1" 188 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 189 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 190 | 191 | estree-walker@^2.0.1: 192 | version "2.0.2" 193 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" 194 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 195 | 196 | fraction.js@^4.1.1: 197 | version "4.1.1" 198 | resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.1.tgz#ac4e520473dae67012d618aab91eda09bcb400ff" 199 | integrity sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg== 200 | 201 | fsevents@~2.3.2: 202 | version "2.3.2" 203 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 204 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 205 | 206 | function-bind@^1.1.1: 207 | version "1.1.1" 208 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 209 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 210 | 211 | get-css-data@^2.0.2: 212 | version "2.0.2" 213 | resolved "https://registry.yarnpkg.com/get-css-data/-/get-css-data-2.0.2.tgz#5a24784f155944021b6f3fff304c15bcfcebdb9e" 214 | integrity sha512-pYqg80/7u/MdBrrAQj2OIoZ08TxEnvCHyU5WFnPxxS/D0S8OpUTkqGFRzn8bO38DmtCuYBpR9VMCen78BL4jiQ== 215 | 216 | has@^1.0.3: 217 | version "1.0.3" 218 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 219 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 220 | dependencies: 221 | function-bind "^1.1.1" 222 | 223 | is-core-module@^2.2.0: 224 | version "2.8.0" 225 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" 226 | integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== 227 | dependencies: 228 | has "^1.0.3" 229 | 230 | kleur@^4.1.4: 231 | version "4.1.4" 232 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" 233 | integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== 234 | 235 | magic-string@^0.25.7: 236 | version "0.25.7" 237 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" 238 | integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== 239 | dependencies: 240 | sourcemap-codec "^1.4.4" 241 | 242 | ms@2.1.2: 243 | version "2.1.2" 244 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 245 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 246 | 247 | nanoid@^3.1.30: 248 | version "3.1.30" 249 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" 250 | integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== 251 | 252 | node-releases@^2.0.1: 253 | version "2.0.1" 254 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" 255 | integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== 256 | 257 | normalize-range@^0.1.2: 258 | version "0.1.2" 259 | resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" 260 | integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= 261 | 262 | path-parse@^1.0.6: 263 | version "1.0.7" 264 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 265 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 266 | 267 | picocolors@^1.0.0: 268 | version "1.0.0" 269 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 270 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 271 | 272 | picomatch@^2.2.2: 273 | version "2.3.0" 274 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 275 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 276 | 277 | postcss-value-parser@^4.1.0: 278 | version "4.1.0" 279 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" 280 | integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== 281 | 282 | postcss@^8.3.6, postcss@^8.3.8: 283 | version "8.3.11" 284 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.11.tgz#c3beca7ea811cd5e1c4a3ec6d2e7599ef1f8f858" 285 | integrity sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA== 286 | dependencies: 287 | nanoid "^3.1.30" 288 | picocolors "^1.0.0" 289 | source-map-js "^0.6.2" 290 | 291 | require-relative@^0.8.7: 292 | version "0.8.7" 293 | resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" 294 | integrity sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4= 295 | 296 | resolve@^1.20.0: 297 | version "1.20.0" 298 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" 299 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 300 | dependencies: 301 | is-core-module "^2.2.0" 302 | path-parse "^1.0.6" 303 | 304 | rollup@^2.57.0: 305 | version "2.58.3" 306 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.58.3.tgz#71a08138d9515fb65043b6a18618b2ed9ac8d239" 307 | integrity sha512-ei27MSw1KhRur4p87Q0/Va2NAYqMXOX++FNEumMBcdreIRLURKy+cE2wcDJKBn0nfmhP2ZGrJkP1XPO+G8FJQw== 308 | optionalDependencies: 309 | fsevents "~2.3.2" 310 | 311 | source-map-js@^0.6.2: 312 | version "0.6.2" 313 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" 314 | integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== 315 | 316 | sourcemap-codec@^1.4.4: 317 | version "1.4.8" 318 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 319 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== 320 | 321 | svelte-hmr@^0.14.7: 322 | version "0.14.7" 323 | resolved "https://registry.yarnpkg.com/svelte-hmr/-/svelte-hmr-0.14.7.tgz#7fa8261c7b225d9409f0a86f3b9ea5c3ca6f6607" 324 | integrity sha512-pDrzgcWSoMaK6AJkBWkmgIsecW0GChxYZSZieIYfCP0v2oPyx2CYU/zm7TBIcjLVUPP714WxmViE9Thht4etog== 325 | 326 | svelte-themer@../: 327 | version "0.5.0-next.2" 328 | dependencies: 329 | css-vars-ponyfill "^2.4.7" 330 | 331 | svelte@^3.42.4: 332 | version "3.44.0" 333 | resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.44.0.tgz#e6176cb3ad93846ddb4140e93f43098136b23f3b" 334 | integrity sha512-zWACSJBSncGiDvFfYOMFGNV5zDLOlyhftmO5yOZ0lEtQMptpElaRtl39MWz1+lYCpwUq4F3Q2lTzI9TrTL+eMA== 335 | 336 | vite@^2.5.6: 337 | version "2.6.13" 338 | resolved "https://registry.yarnpkg.com/vite/-/vite-2.6.13.tgz#16b3ec85a66d5b461ac29a903874d4357f9af432" 339 | integrity sha512-+tGZ1OxozRirTudl4M3N3UTNJOlxdVo/qBl2IlDEy/ZpTFcskp+k5ncNjayR3bRYTCbqSOFz2JWGN1UmuDMScA== 340 | dependencies: 341 | esbuild "^0.13.2" 342 | postcss "^8.3.8" 343 | resolve "^1.20.0" 344 | rollup "^2.57.0" 345 | optionalDependencies: 346 | fsevents "~2.3.2" 347 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "paths": { 5 | "$lib/*": ["src/*"] 6 | } 7 | }, 8 | "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"] 9 | } 10 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-themer", 3 | "type": "module", 4 | "version": "0.5.5", 5 | "homepage": "https://svelte-themer.vercel.app", 6 | "license": "MIT", 7 | "repository": { 8 | "url": "https://github.com/josefaidt/svelte-themer" 9 | }, 10 | "exports": { 11 | "./store": "./src/support/store.js", 12 | "./use": "./src/use.js" 13 | }, 14 | "keywords": [ 15 | "svelte", 16 | "theme", 17 | "theming" 18 | ], 19 | "publishConfig": { 20 | "directory": "package" 21 | }, 22 | "scripts": { 23 | "dev": "svelte-kit dev", 24 | "build": "svelte-kit build", 25 | "package": "svelte-kit package", 26 | "prepublishOnly": "pnpm test run && pnpm package", 27 | "format": "prettier --write \"{src,docs}/**/*.{js,json,svelte}\"", 28 | "test": "vitest", 29 | "types": "npx -p typescript tsc src/**/*.js --declaration --allowJs --emitDeclarationOnly", 30 | "coverage": "vitest --coverage" 31 | }, 32 | "devDependencies": { 33 | "@changesets/cli": "^2.20.0", 34 | "@sveltejs/adapter-static": "next", 35 | "@sveltejs/kit": "next", 36 | "@sveltejs/vite-plugin-svelte": "^1.0.0-next.29", 37 | "@vitest/ui": "latest", 38 | "eslint": "^8.7.0", 39 | "eslint-config-prettier": "^8.3.0", 40 | "eslint-plugin-svelte3": "^3.4.0", 41 | "jsdom": "^19.0.0", 42 | "prettier": "^2.5.1", 43 | "prettier-plugin-svelte": "^2.6.0", 44 | "svelte": "^3.46.3", 45 | "svelte2tsx": "^0.5.0", 46 | "typescript": "^4.5.5", 47 | "vite": "^2.7.13", 48 | "vitest": "^0.2.5" 49 | }, 50 | "peerDependencies": { 51 | "svelte": "^3.46.3" 52 | }, 53 | "husky": { 54 | "hooks": { 55 | "pre-commit": "lint-staged" 56 | } 57 | }, 58 | "lint-staged": { 59 | "*.{js,svelte}": [ 60 | "eslint" 61 | ], 62 | "*.{js,svelte,md,mdx,json}": [ 63 | "prettier --write" 64 | ] 65 | }, 66 | "engines": { 67 | "node": ">=14", 68 | "pnpm": ">=3" 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.3 2 | 3 | importers: 4 | 5 | .: 6 | specifiers: 7 | '@changesets/cli': ^2.20.0 8 | '@sveltejs/adapter-static': next 9 | '@sveltejs/kit': next 10 | '@sveltejs/vite-plugin-svelte': ^1.0.0-next.29 11 | '@vitest/ui': latest 12 | eslint: ^8.7.0 13 | eslint-config-prettier: ^8.3.0 14 | eslint-plugin-svelte3: ^3.4.0 15 | jsdom: ^19.0.0 16 | prettier: ^2.5.1 17 | prettier-plugin-svelte: ^2.6.0 18 | svelte: ^3.46.3 19 | svelte2tsx: ^0.5.0 20 | typescript: ^4.5.5 21 | vite: ^2.7.13 22 | vitest: ^0.2.5 23 | devDependencies: 24 | '@changesets/cli': 2.20.0 25 | '@sveltejs/adapter-static': 1.0.0-next.26 26 | '@sveltejs/kit': 1.0.0-next.251_svelte@3.46.3 27 | '@sveltejs/vite-plugin-svelte': 1.0.0-next.29_svelte@3.46.3+vite@2.7.13 28 | '@vitest/ui': 0.2.5 29 | eslint: 8.7.0 30 | eslint-config-prettier: 8.3.0_eslint@8.7.0 31 | eslint-plugin-svelte3: 3.4.0_eslint@8.7.0+svelte@3.46.3 32 | jsdom: 19.0.0 33 | prettier: 2.5.1 34 | prettier-plugin-svelte: 2.6.0_prettier@2.5.1+svelte@3.46.3 35 | svelte: 3.46.3 36 | svelte2tsx: 0.5.0_svelte@3.46.3+typescript@4.5.5 37 | typescript: 4.5.5 38 | vite: 2.7.13 39 | vitest: 0.2.5_@vitest+ui@0.2.5+jsdom@19.0.0 40 | 41 | examples/svelte-kit: 42 | specifiers: 43 | '@sveltejs/adapter-static': next 44 | '@sveltejs/kit': next 45 | autoprefixer: ^10.4.0 46 | svelte: ^3.42.6 47 | svelte-preprocess: ^4.9.8 48 | svelte-themer: workspace:../../ 49 | devDependencies: 50 | '@sveltejs/adapter-static': 1.0.0-next.26 51 | '@sveltejs/kit': 1.0.0-next.251_svelte@3.46.3 52 | autoprefixer: 10.4.2 53 | svelte: 3.46.3 54 | svelte-preprocess: 4.10.2_svelte@3.46.3+typescript@4.5.5 55 | svelte-themer: link:../.. 56 | 57 | examples/vite: 58 | specifiers: 59 | '@sveltejs/vite-plugin-svelte': next 60 | autoprefixer: ^10.3.4 61 | postcss: ^8.3.6 62 | svelte: ^3.42.4 63 | svelte-themer: workspace:../../ 64 | vite: ^2.5.6 65 | devDependencies: 66 | '@sveltejs/vite-plugin-svelte': 1.0.0-next.29_svelte@3.46.3+vite@2.7.13 67 | autoprefixer: 10.4.2_postcss@8.4.5 68 | postcss: 8.4.5 69 | svelte: 3.46.3 70 | svelte-themer: link:../.. 71 | vite: 2.7.13 72 | 73 | packages: 74 | 75 | /@babel/code-frame/7.16.7: 76 | resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} 77 | engines: {node: '>=6.9.0'} 78 | dependencies: 79 | '@babel/highlight': 7.16.10 80 | dev: true 81 | 82 | /@babel/helper-validator-identifier/7.16.7: 83 | resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} 84 | engines: {node: '>=6.9.0'} 85 | dev: true 86 | 87 | /@babel/highlight/7.16.10: 88 | resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==} 89 | engines: {node: '>=6.9.0'} 90 | dependencies: 91 | '@babel/helper-validator-identifier': 7.16.7 92 | chalk: 2.4.2 93 | js-tokens: 4.0.0 94 | dev: true 95 | 96 | /@babel/runtime/7.16.7: 97 | resolution: {integrity: sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==} 98 | engines: {node: '>=6.9.0'} 99 | dependencies: 100 | regenerator-runtime: 0.13.9 101 | dev: true 102 | 103 | /@changesets/apply-release-plan/5.0.4: 104 | resolution: {integrity: sha512-czayDIrgC8qBnqwClvh9nxjCMem+XZG7xtfdYwq3dxpzA30qGppcI0i088VYug5RCFR+l1N+HUvkujSZuBK65w==} 105 | dependencies: 106 | '@babel/runtime': 7.16.7 107 | '@changesets/config': 1.6.4 108 | '@changesets/get-version-range-type': 0.3.2 109 | '@changesets/git': 1.3.0 110 | '@changesets/types': 4.0.2 111 | '@manypkg/get-packages': 1.1.3 112 | detect-indent: 6.1.0 113 | fs-extra: 7.0.1 114 | lodash.startcase: 4.4.0 115 | outdent: 0.5.0 116 | prettier: 1.19.1 117 | resolve-from: 5.0.0 118 | semver: 5.7.1 119 | dev: true 120 | 121 | /@changesets/assemble-release-plan/5.0.5: 122 | resolution: {integrity: sha512-ejCVSM4I1jgaNi30we3/qltj2NQtS68w7C3H8Gvb6ZOvbIpAW/Tr0uMmPgRj4Vzkez5+fx0If02AvOdssz1btA==} 123 | dependencies: 124 | '@babel/runtime': 7.16.7 125 | '@changesets/errors': 0.1.4 126 | '@changesets/get-dependents-graph': 1.3.0 127 | '@changesets/types': 4.0.2 128 | '@manypkg/get-packages': 1.1.3 129 | semver: 5.7.1 130 | dev: true 131 | 132 | /@changesets/cli/2.20.0: 133 | resolution: {integrity: sha512-IUYSgZKtS+wXPD5hxfnCfZ1JWCbBI0CRrhxpkgVKcXDwpxiRU8stCwuSuVj14kiYlThuH2zL0/ZuGvhF4r28Gg==} 134 | hasBin: true 135 | dependencies: 136 | '@babel/runtime': 7.16.7 137 | '@changesets/apply-release-plan': 5.0.4 138 | '@changesets/assemble-release-plan': 5.0.5 139 | '@changesets/config': 1.6.4 140 | '@changesets/errors': 0.1.4 141 | '@changesets/get-dependents-graph': 1.3.0 142 | '@changesets/get-release-plan': 3.0.5 143 | '@changesets/git': 1.3.0 144 | '@changesets/logger': 0.0.5 145 | '@changesets/pre': 1.0.9 146 | '@changesets/read': 0.5.3 147 | '@changesets/types': 4.0.2 148 | '@changesets/write': 0.1.6 149 | '@manypkg/get-packages': 1.1.3 150 | '@types/is-ci': 3.0.0 151 | '@types/semver': 6.2.3 152 | chalk: 2.4.2 153 | enquirer: 2.3.6 154 | external-editor: 3.1.0 155 | fs-extra: 7.0.1 156 | human-id: 1.0.2 157 | is-ci: 3.0.1 158 | meow: 6.1.1 159 | outdent: 0.5.0 160 | p-limit: 2.3.0 161 | preferred-pm: 3.0.3 162 | semver: 5.7.1 163 | spawndamnit: 2.0.0 164 | term-size: 2.2.1 165 | tty-table: 2.8.13 166 | dev: true 167 | 168 | /@changesets/config/1.6.4: 169 | resolution: {integrity: sha512-WWa8eR8GzS/p2atLc/+5UEDn7fsRCZ+/sShLkB/3efVbTkSTB1PwoKwQRXLYXM1DY289T7UnJT4HLZA3Gcreww==} 170 | dependencies: 171 | '@changesets/errors': 0.1.4 172 | '@changesets/get-dependents-graph': 1.3.0 173 | '@changesets/logger': 0.0.5 174 | '@changesets/types': 4.0.2 175 | '@manypkg/get-packages': 1.1.3 176 | fs-extra: 7.0.1 177 | micromatch: 4.0.4 178 | dev: true 179 | 180 | /@changesets/errors/0.1.4: 181 | resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} 182 | dependencies: 183 | extendable-error: 0.1.7 184 | dev: true 185 | 186 | /@changesets/get-dependents-graph/1.3.0: 187 | resolution: {integrity: sha512-4VHQWEluWySPgDdkL94YNxrEjDb9nwNFw515sWDmVrlfpQN5qaP1hdaotrp4mJm4ky85t4cTlrWSP+CTY7IDbw==} 188 | dependencies: 189 | '@changesets/types': 4.0.2 190 | '@manypkg/get-packages': 1.1.3 191 | chalk: 2.4.2 192 | fs-extra: 7.0.1 193 | semver: 5.7.1 194 | dev: true 195 | 196 | /@changesets/get-release-plan/3.0.5: 197 | resolution: {integrity: sha512-67td3LA1RTJpY5Q+wJaTTRtAjZ2suAhDfj3VRjFv0gCgUPXs8rNx17n9UPbegPTQjeTS1r7hVRVifycmT0fQtA==} 198 | dependencies: 199 | '@babel/runtime': 7.16.7 200 | '@changesets/assemble-release-plan': 5.0.5 201 | '@changesets/config': 1.6.4 202 | '@changesets/pre': 1.0.9 203 | '@changesets/read': 0.5.3 204 | '@changesets/types': 4.0.2 205 | '@manypkg/get-packages': 1.1.3 206 | dev: true 207 | 208 | /@changesets/get-version-range-type/0.3.2: 209 | resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} 210 | dev: true 211 | 212 | /@changesets/git/1.3.0: 213 | resolution: {integrity: sha512-Ydj4lWX33d2PCDaTXOMSbyTjgk1go1V6EyXjKTmOV7nB/qvgKdDZLSt+AexKWKp3Ac2FTrtVnl9G5gMNVYNmuQ==} 214 | dependencies: 215 | '@babel/runtime': 7.16.7 216 | '@changesets/errors': 0.1.4 217 | '@changesets/types': 4.0.2 218 | '@manypkg/get-packages': 1.1.3 219 | is-subdir: 1.2.0 220 | spawndamnit: 2.0.0 221 | dev: true 222 | 223 | /@changesets/logger/0.0.5: 224 | resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} 225 | dependencies: 226 | chalk: 2.4.2 227 | dev: true 228 | 229 | /@changesets/parse/0.3.11: 230 | resolution: {integrity: sha512-w5/X8KijcCrvv5lHimXIBR9o35c78niiBoesBjBUlWeifwPz0DHc/lzVYJKRkA5w0BGqft6T/9hKI68GaYj5wA==} 231 | dependencies: 232 | '@changesets/types': 4.0.2 233 | js-yaml: 3.14.1 234 | dev: true 235 | 236 | /@changesets/pre/1.0.9: 237 | resolution: {integrity: sha512-F3+qMun89KlynecBD15fEpwGT/KxbYb3WGeut6w1xhZb0u7V/jdcPy9b+kJ2xmBqFZLn1WteWIP96IjxS57H7A==} 238 | dependencies: 239 | '@babel/runtime': 7.16.7 240 | '@changesets/errors': 0.1.4 241 | '@changesets/types': 4.0.2 242 | '@manypkg/get-packages': 1.1.3 243 | fs-extra: 7.0.1 244 | dev: true 245 | 246 | /@changesets/read/0.5.3: 247 | resolution: {integrity: sha512-zoj5NjNR4AhiGXz6aHTxsBLojChHgDOSbz6VfAVxMKX7tF7UhyNYptG2VEbSjxeamNKABx6k1pkM2IyVVlOcbQ==} 248 | dependencies: 249 | '@babel/runtime': 7.16.7 250 | '@changesets/git': 1.3.0 251 | '@changesets/logger': 0.0.5 252 | '@changesets/parse': 0.3.11 253 | '@changesets/types': 4.0.2 254 | chalk: 2.4.2 255 | fs-extra: 7.0.1 256 | p-filter: 2.1.0 257 | dev: true 258 | 259 | /@changesets/types/4.0.2: 260 | resolution: {integrity: sha512-OeDaB7D+WVy/ErymPzFm58IeGvz4DOl+oedyZETfnkfMezF/Uhrm1Ub6MHrO5LcAaQTW+ptDmr0fmaVyoTxgHw==} 261 | dev: true 262 | 263 | /@changesets/write/0.1.6: 264 | resolution: {integrity: sha512-JWE2gJs9eHhorxqembkf43fllKlCz+sp1TJKSheaWfhWILMHPdfa/xQG4+sMZkISo1qZ+IlJyiBLha6iGGjXyA==} 265 | dependencies: 266 | '@babel/runtime': 7.16.7 267 | '@changesets/types': 4.0.2 268 | fs-extra: 7.0.1 269 | human-id: 1.0.2 270 | prettier: 1.19.1 271 | dev: true 272 | 273 | /@eslint/eslintrc/1.0.5: 274 | resolution: {integrity: sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==} 275 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 276 | dependencies: 277 | ajv: 6.12.6 278 | debug: 4.3.3 279 | espree: 9.3.0 280 | globals: 13.12.0 281 | ignore: 4.0.6 282 | import-fresh: 3.3.0 283 | js-yaml: 4.1.0 284 | minimatch: 3.0.4 285 | strip-json-comments: 3.1.1 286 | transitivePeerDependencies: 287 | - supports-color 288 | dev: true 289 | 290 | /@humanwhocodes/config-array/0.9.2: 291 | resolution: {integrity: sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==} 292 | engines: {node: '>=10.10.0'} 293 | dependencies: 294 | '@humanwhocodes/object-schema': 1.2.1 295 | debug: 4.3.3 296 | minimatch: 3.0.4 297 | transitivePeerDependencies: 298 | - supports-color 299 | dev: true 300 | 301 | /@humanwhocodes/object-schema/1.2.1: 302 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 303 | dev: true 304 | 305 | /@manypkg/find-root/1.1.0: 306 | resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} 307 | dependencies: 308 | '@babel/runtime': 7.16.7 309 | '@types/node': 12.20.42 310 | find-up: 4.1.0 311 | fs-extra: 8.1.0 312 | dev: true 313 | 314 | /@manypkg/get-packages/1.1.3: 315 | resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} 316 | dependencies: 317 | '@babel/runtime': 7.16.7 318 | '@changesets/types': 4.0.2 319 | '@manypkg/find-root': 1.1.0 320 | fs-extra: 8.1.0 321 | globby: 11.1.0 322 | read-yaml-file: 1.1.0 323 | dev: true 324 | 325 | /@nodelib/fs.scandir/2.1.5: 326 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 327 | engines: {node: '>= 8'} 328 | dependencies: 329 | '@nodelib/fs.stat': 2.0.5 330 | run-parallel: 1.2.0 331 | dev: true 332 | 333 | /@nodelib/fs.stat/2.0.5: 334 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 335 | engines: {node: '>= 8'} 336 | dev: true 337 | 338 | /@nodelib/fs.walk/1.2.8: 339 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 340 | engines: {node: '>= 8'} 341 | dependencies: 342 | '@nodelib/fs.scandir': 2.1.5 343 | fastq: 1.13.0 344 | dev: true 345 | 346 | /@polka/url/1.0.0-next.21: 347 | resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} 348 | dev: true 349 | 350 | /@rollup/pluginutils/4.1.2: 351 | resolution: {integrity: sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==} 352 | engines: {node: '>= 8.0.0'} 353 | dependencies: 354 | estree-walker: 2.0.2 355 | picomatch: 2.3.1 356 | dev: true 357 | 358 | /@sveltejs/adapter-static/1.0.0-next.26: 359 | resolution: {integrity: sha512-LXR0HkPygZ+m9wJhFqbYWbJ0jquhgUK6vL/8AwnqbAZGGtQFloMpf49WOANk7MiLBeY6L97W5jPLSxHiDW3T0Q==} 360 | dependencies: 361 | tiny-glob: 0.2.9 362 | dev: true 363 | 364 | /@sveltejs/kit/1.0.0-next.251_svelte@3.46.3: 365 | resolution: {integrity: sha512-7GtUrUHqOa7ISo86PlICcMKcfGodOZwP9p7hXnN4t1yMWIQD2eKZlJffvnwx1X+NMcJ8hLChgcjGYjc1xZABhQ==} 366 | engines: {node: '>=14.13'} 367 | hasBin: true 368 | peerDependencies: 369 | svelte: ^3.44.0 370 | dependencies: 371 | '@sveltejs/vite-plugin-svelte': 1.0.0-next.36_svelte@3.46.3+vite@2.7.13 372 | sade: 1.8.1 373 | svelte: 3.46.3 374 | vite: 2.7.13 375 | transitivePeerDependencies: 376 | - diff-match-patch 377 | - less 378 | - sass 379 | - stylus 380 | - supports-color 381 | dev: true 382 | 383 | /@sveltejs/vite-plugin-svelte/1.0.0-next.29_svelte@3.46.3+vite@2.7.13: 384 | resolution: {integrity: sha512-awbeIB34ma/ytoVsG0lxKfFaJ4rjPaAsiepJ5I+dKe9jVjWmGoIMJ9sKD77/xvNdwgO+3v/vkwvIbEG4XRdmtg==} 385 | engines: {node: ^14.13.1 || >= 16} 386 | peerDependencies: 387 | diff-match-patch: ^1.0.5 388 | svelte: ^3.34.0 389 | vite: ^2.6.0 390 | peerDependenciesMeta: 391 | diff-match-patch: 392 | optional: true 393 | dependencies: 394 | '@rollup/pluginutils': 4.1.2 395 | debug: 4.3.3 396 | kleur: 4.1.4 397 | magic-string: 0.25.7 398 | require-relative: 0.8.7 399 | svelte: 3.46.3 400 | svelte-hmr: 0.14.9_svelte@3.46.3 401 | vite: 2.7.13 402 | transitivePeerDependencies: 403 | - supports-color 404 | dev: true 405 | 406 | /@sveltejs/vite-plugin-svelte/1.0.0-next.36_svelte@3.46.3+vite@2.7.13: 407 | resolution: {integrity: sha512-X7lTiioTGC3ri5M299fxc2dimuKU7f22zTXcmD+NrF+fO9/b7YNfLeQQwWV7Tvv9REysMlR4G2HQF6+lY62p/Q==} 408 | engines: {node: ^14.13.1 || >= 16} 409 | peerDependencies: 410 | diff-match-patch: ^1.0.5 411 | svelte: ^3.44.0 412 | vite: ^2.7.0 413 | peerDependenciesMeta: 414 | diff-match-patch: 415 | optional: true 416 | dependencies: 417 | '@rollup/pluginutils': 4.1.2 418 | debug: 4.3.3 419 | kleur: 4.1.4 420 | magic-string: 0.25.7 421 | svelte: 3.46.3 422 | svelte-hmr: 0.14.9_svelte@3.46.3 423 | vite: 2.7.13 424 | transitivePeerDependencies: 425 | - supports-color 426 | dev: true 427 | 428 | /@tootallnate/once/2.0.0: 429 | resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} 430 | engines: {node: '>= 10'} 431 | dev: true 432 | 433 | /@types/chai-subset/1.3.3: 434 | resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} 435 | dependencies: 436 | '@types/chai': 4.3.0 437 | dev: true 438 | 439 | /@types/chai/4.3.0: 440 | resolution: {integrity: sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==} 441 | dev: true 442 | 443 | /@types/is-ci/3.0.0: 444 | resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} 445 | dependencies: 446 | ci-info: 3.3.0 447 | dev: true 448 | 449 | /@types/minimist/1.2.2: 450 | resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} 451 | dev: true 452 | 453 | /@types/node/12.20.42: 454 | resolution: {integrity: sha512-aI3/oo5DzyiI5R/xAhxxRzfZlWlsbbqdgxfTPkqu/Zt+23GXiJvMCyPJT4+xKSXOnLqoL8jJYMLTwvK2M3a5hw==} 455 | dev: true 456 | 457 | /@types/normalize-package-data/2.4.1: 458 | resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} 459 | dev: true 460 | 461 | /@types/pug/2.0.6: 462 | resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} 463 | dev: true 464 | 465 | /@types/sass/1.43.1: 466 | resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==} 467 | dependencies: 468 | '@types/node': 12.20.42 469 | dev: true 470 | 471 | /@types/semver/6.2.3: 472 | resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} 473 | dev: true 474 | 475 | /@vitest/ui/0.2.5: 476 | resolution: {integrity: sha512-gWjTlIx2ZW+JpPdMF5UA8KoRAKwSB2MywJ62I5g8H+NbLipu9N3OMcSm4Y4iC+qJ2ol3RS1S2dYj19y9MuKzaw==} 477 | dependencies: 478 | sirv: 2.0.2 479 | dev: true 480 | 481 | /abab/2.0.5: 482 | resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==} 483 | dev: true 484 | 485 | /acorn-globals/6.0.0: 486 | resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} 487 | dependencies: 488 | acorn: 7.4.1 489 | acorn-walk: 7.2.0 490 | dev: true 491 | 492 | /acorn-jsx/5.3.2_acorn@8.7.0: 493 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 494 | peerDependencies: 495 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 496 | dependencies: 497 | acorn: 8.7.0 498 | dev: true 499 | 500 | /acorn-walk/7.2.0: 501 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} 502 | engines: {node: '>=0.4.0'} 503 | dev: true 504 | 505 | /acorn/7.4.1: 506 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 507 | engines: {node: '>=0.4.0'} 508 | hasBin: true 509 | dev: true 510 | 511 | /acorn/8.7.0: 512 | resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} 513 | engines: {node: '>=0.4.0'} 514 | hasBin: true 515 | dev: true 516 | 517 | /agent-base/6.0.2: 518 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} 519 | engines: {node: '>= 6.0.0'} 520 | dependencies: 521 | debug: 4.3.3 522 | transitivePeerDependencies: 523 | - supports-color 524 | dev: true 525 | 526 | /ajv/6.12.6: 527 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 528 | dependencies: 529 | fast-deep-equal: 3.1.3 530 | fast-json-stable-stringify: 2.1.0 531 | json-schema-traverse: 0.4.1 532 | uri-js: 4.4.1 533 | dev: true 534 | 535 | /ansi-colors/4.1.1: 536 | resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} 537 | engines: {node: '>=6'} 538 | dev: true 539 | 540 | /ansi-regex/5.0.1: 541 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 542 | engines: {node: '>=8'} 543 | dev: true 544 | 545 | /ansi-styles/3.2.1: 546 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 547 | engines: {node: '>=4'} 548 | dependencies: 549 | color-convert: 1.9.3 550 | dev: true 551 | 552 | /ansi-styles/4.3.0: 553 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 554 | engines: {node: '>=8'} 555 | dependencies: 556 | color-convert: 2.0.1 557 | dev: true 558 | 559 | /argparse/1.0.10: 560 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 561 | dependencies: 562 | sprintf-js: 1.0.3 563 | dev: true 564 | 565 | /argparse/2.0.1: 566 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 567 | dev: true 568 | 569 | /array-union/2.1.0: 570 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 571 | engines: {node: '>=8'} 572 | dev: true 573 | 574 | /arrify/1.0.1: 575 | resolution: {integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=} 576 | engines: {node: '>=0.10.0'} 577 | dev: true 578 | 579 | /assertion-error/1.1.0: 580 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} 581 | dev: true 582 | 583 | /asynckit/0.4.0: 584 | resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} 585 | dev: true 586 | 587 | /autoprefixer/10.4.2: 588 | resolution: {integrity: sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==} 589 | engines: {node: ^10 || ^12 || >=14} 590 | hasBin: true 591 | peerDependencies: 592 | postcss: ^8.1.0 593 | dependencies: 594 | browserslist: 4.19.1 595 | caniuse-lite: 1.0.30001304 596 | fraction.js: 4.1.2 597 | normalize-range: 0.1.2 598 | picocolors: 1.0.0 599 | postcss-value-parser: 4.2.0 600 | dev: true 601 | 602 | /autoprefixer/10.4.2_postcss@8.4.5: 603 | resolution: {integrity: sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==} 604 | engines: {node: ^10 || ^12 || >=14} 605 | hasBin: true 606 | peerDependencies: 607 | postcss: ^8.1.0 608 | dependencies: 609 | browserslist: 4.19.1 610 | caniuse-lite: 1.0.30001304 611 | fraction.js: 4.1.2 612 | normalize-range: 0.1.2 613 | picocolors: 1.0.0 614 | postcss: 8.4.5 615 | postcss-value-parser: 4.2.0 616 | dev: true 617 | 618 | /balanced-match/1.0.2: 619 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 620 | dev: true 621 | 622 | /better-path-resolve/1.0.0: 623 | resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} 624 | engines: {node: '>=4'} 625 | dependencies: 626 | is-windows: 1.0.2 627 | dev: true 628 | 629 | /brace-expansion/1.1.11: 630 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 631 | dependencies: 632 | balanced-match: 1.0.2 633 | concat-map: 0.0.1 634 | dev: true 635 | 636 | /braces/3.0.2: 637 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 638 | engines: {node: '>=8'} 639 | dependencies: 640 | fill-range: 7.0.1 641 | dev: true 642 | 643 | /breakword/1.0.5: 644 | resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} 645 | dependencies: 646 | wcwidth: 1.0.1 647 | dev: true 648 | 649 | /browser-process-hrtime/1.0.0: 650 | resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} 651 | dev: true 652 | 653 | /browserslist/4.19.1: 654 | resolution: {integrity: sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==} 655 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 656 | hasBin: true 657 | dependencies: 658 | caniuse-lite: 1.0.30001304 659 | electron-to-chromium: 1.4.57 660 | escalade: 3.1.1 661 | node-releases: 2.0.1 662 | picocolors: 1.0.0 663 | dev: true 664 | 665 | /buffer-crc32/0.2.13: 666 | resolution: {integrity: sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=} 667 | dev: true 668 | 669 | /callsites/3.1.0: 670 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 671 | engines: {node: '>=6'} 672 | dev: true 673 | 674 | /camelcase-keys/6.2.2: 675 | resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} 676 | engines: {node: '>=8'} 677 | dependencies: 678 | camelcase: 5.3.1 679 | map-obj: 4.3.0 680 | quick-lru: 4.0.1 681 | dev: true 682 | 683 | /camelcase/5.3.1: 684 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 685 | engines: {node: '>=6'} 686 | dev: true 687 | 688 | /caniuse-lite/1.0.30001304: 689 | resolution: {integrity: sha512-bdsfZd6K6ap87AGqSHJP/s1V+U6Z5lyrcbBu3ovbCCf8cSYpwTtGrCBObMpJqwxfTbLW6YTIdbb1jEeTelcpYQ==} 690 | dev: true 691 | 692 | /chai/4.3.6: 693 | resolution: {integrity: sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==} 694 | engines: {node: '>=4'} 695 | dependencies: 696 | assertion-error: 1.1.0 697 | check-error: 1.0.2 698 | deep-eql: 3.0.1 699 | get-func-name: 2.0.0 700 | loupe: 2.3.1 701 | pathval: 1.1.1 702 | type-detect: 4.0.8 703 | dev: true 704 | 705 | /chalk/2.4.2: 706 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 707 | engines: {node: '>=4'} 708 | dependencies: 709 | ansi-styles: 3.2.1 710 | escape-string-regexp: 1.0.5 711 | supports-color: 5.5.0 712 | dev: true 713 | 714 | /chalk/3.0.0: 715 | resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} 716 | engines: {node: '>=8'} 717 | dependencies: 718 | ansi-styles: 4.3.0 719 | supports-color: 7.2.0 720 | dev: true 721 | 722 | /chalk/4.1.2: 723 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 724 | engines: {node: '>=10'} 725 | dependencies: 726 | ansi-styles: 4.3.0 727 | supports-color: 7.2.0 728 | dev: true 729 | 730 | /chardet/0.7.0: 731 | resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} 732 | dev: true 733 | 734 | /check-error/1.0.2: 735 | resolution: {integrity: sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=} 736 | dev: true 737 | 738 | /ci-info/3.3.0: 739 | resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} 740 | dev: true 741 | 742 | /cliui/6.0.0: 743 | resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} 744 | dependencies: 745 | string-width: 4.2.3 746 | strip-ansi: 6.0.1 747 | wrap-ansi: 6.2.0 748 | dev: true 749 | 750 | /clone/1.0.4: 751 | resolution: {integrity: sha1-2jCcwmPfFZlMaIypAheco8fNfH4=} 752 | engines: {node: '>=0.8'} 753 | dev: true 754 | 755 | /color-convert/1.9.3: 756 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 757 | dependencies: 758 | color-name: 1.1.3 759 | dev: true 760 | 761 | /color-convert/2.0.1: 762 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 763 | engines: {node: '>=7.0.0'} 764 | dependencies: 765 | color-name: 1.1.4 766 | dev: true 767 | 768 | /color-name/1.1.3: 769 | resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} 770 | dev: true 771 | 772 | /color-name/1.1.4: 773 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 774 | dev: true 775 | 776 | /combined-stream/1.0.8: 777 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 778 | engines: {node: '>= 0.8'} 779 | dependencies: 780 | delayed-stream: 1.0.0 781 | dev: true 782 | 783 | /concat-map/0.0.1: 784 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 785 | dev: true 786 | 787 | /cross-spawn/5.1.0: 788 | resolution: {integrity: sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=} 789 | dependencies: 790 | lru-cache: 4.1.5 791 | shebang-command: 1.2.0 792 | which: 1.3.1 793 | dev: true 794 | 795 | /cross-spawn/7.0.3: 796 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 797 | engines: {node: '>= 8'} 798 | dependencies: 799 | path-key: 3.1.1 800 | shebang-command: 2.0.0 801 | which: 2.0.2 802 | dev: true 803 | 804 | /cssom/0.3.8: 805 | resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} 806 | dev: true 807 | 808 | /cssom/0.5.0: 809 | resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} 810 | dev: true 811 | 812 | /cssstyle/2.3.0: 813 | resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} 814 | engines: {node: '>=8'} 815 | dependencies: 816 | cssom: 0.3.8 817 | dev: true 818 | 819 | /csv-generate/3.4.3: 820 | resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} 821 | dev: true 822 | 823 | /csv-parse/4.16.3: 824 | resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} 825 | dev: true 826 | 827 | /csv-stringify/5.6.5: 828 | resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} 829 | dev: true 830 | 831 | /csv/5.5.3: 832 | resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} 833 | engines: {node: '>= 0.1.90'} 834 | dependencies: 835 | csv-generate: 3.4.3 836 | csv-parse: 4.16.3 837 | csv-stringify: 5.6.5 838 | stream-transform: 2.1.3 839 | dev: true 840 | 841 | /data-urls/3.0.1: 842 | resolution: {integrity: sha512-Ds554NeT5Gennfoo9KN50Vh6tpgtvYEwraYjejXnyTpu1C7oXKxdFk75REooENHE8ndTVOJuv+BEs4/J/xcozw==} 843 | engines: {node: '>=12'} 844 | dependencies: 845 | abab: 2.0.5 846 | whatwg-mimetype: 3.0.0 847 | whatwg-url: 10.0.0 848 | dev: true 849 | 850 | /debug/4.3.3: 851 | resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} 852 | engines: {node: '>=6.0'} 853 | peerDependencies: 854 | supports-color: '*' 855 | peerDependenciesMeta: 856 | supports-color: 857 | optional: true 858 | dependencies: 859 | ms: 2.1.2 860 | dev: true 861 | 862 | /decamelize-keys/1.1.0: 863 | resolution: {integrity: sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=} 864 | engines: {node: '>=0.10.0'} 865 | dependencies: 866 | decamelize: 1.2.0 867 | map-obj: 1.0.1 868 | dev: true 869 | 870 | /decamelize/1.2.0: 871 | resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} 872 | engines: {node: '>=0.10.0'} 873 | dev: true 874 | 875 | /decimal.js/10.3.1: 876 | resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} 877 | dev: true 878 | 879 | /dedent-js/1.0.1: 880 | resolution: {integrity: sha1-vuX7fJ5yfYXf+iRZDRDsGrElUwU=} 881 | dev: true 882 | 883 | /deep-eql/3.0.1: 884 | resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} 885 | engines: {node: '>=0.12'} 886 | dependencies: 887 | type-detect: 4.0.8 888 | dev: true 889 | 890 | /deep-is/0.1.4: 891 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 892 | dev: true 893 | 894 | /defaults/1.0.3: 895 | resolution: {integrity: sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=} 896 | dependencies: 897 | clone: 1.0.4 898 | dev: true 899 | 900 | /delayed-stream/1.0.0: 901 | resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} 902 | engines: {node: '>=0.4.0'} 903 | dev: true 904 | 905 | /detect-indent/6.1.0: 906 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 907 | engines: {node: '>=8'} 908 | dev: true 909 | 910 | /dir-glob/3.0.1: 911 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 912 | engines: {node: '>=8'} 913 | dependencies: 914 | path-type: 4.0.0 915 | dev: true 916 | 917 | /doctrine/3.0.0: 918 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 919 | engines: {node: '>=6.0.0'} 920 | dependencies: 921 | esutils: 2.0.3 922 | dev: true 923 | 924 | /domexception/4.0.0: 925 | resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} 926 | engines: {node: '>=12'} 927 | dependencies: 928 | webidl-conversions: 7.0.0 929 | dev: true 930 | 931 | /electron-to-chromium/1.4.57: 932 | resolution: {integrity: sha512-FNC+P5K1n6pF+M0zIK+gFCoXcJhhzDViL3DRIGy2Fv5PohuSES1JHR7T+GlwxSxlzx4yYbsuzCZvHxcBSRCIOw==} 933 | dev: true 934 | 935 | /emoji-regex/8.0.0: 936 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 937 | dev: true 938 | 939 | /enquirer/2.3.6: 940 | resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} 941 | engines: {node: '>=8.6'} 942 | dependencies: 943 | ansi-colors: 4.1.1 944 | dev: true 945 | 946 | /error-ex/1.3.2: 947 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 948 | dependencies: 949 | is-arrayish: 0.2.1 950 | dev: true 951 | 952 | /es6-promise/3.3.1: 953 | resolution: {integrity: sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=} 954 | dev: true 955 | 956 | /esbuild-android-arm64/0.13.15: 957 | resolution: {integrity: sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg==} 958 | cpu: [arm64] 959 | os: [android] 960 | requiresBuild: true 961 | dev: true 962 | optional: true 963 | 964 | /esbuild-darwin-64/0.13.15: 965 | resolution: {integrity: sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ==} 966 | cpu: [x64] 967 | os: [darwin] 968 | requiresBuild: true 969 | dev: true 970 | optional: true 971 | 972 | /esbuild-darwin-arm64/0.13.15: 973 | resolution: {integrity: sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==} 974 | cpu: [arm64] 975 | os: [darwin] 976 | requiresBuild: true 977 | dev: true 978 | optional: true 979 | 980 | /esbuild-freebsd-64/0.13.15: 981 | resolution: {integrity: sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA==} 982 | cpu: [x64] 983 | os: [freebsd] 984 | requiresBuild: true 985 | dev: true 986 | optional: true 987 | 988 | /esbuild-freebsd-arm64/0.13.15: 989 | resolution: {integrity: sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ==} 990 | cpu: [arm64] 991 | os: [freebsd] 992 | requiresBuild: true 993 | dev: true 994 | optional: true 995 | 996 | /esbuild-linux-32/0.13.15: 997 | resolution: {integrity: sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g==} 998 | cpu: [ia32] 999 | os: [linux] 1000 | requiresBuild: true 1001 | dev: true 1002 | optional: true 1003 | 1004 | /esbuild-linux-64/0.13.15: 1005 | resolution: {integrity: sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA==} 1006 | cpu: [x64] 1007 | os: [linux] 1008 | requiresBuild: true 1009 | dev: true 1010 | optional: true 1011 | 1012 | /esbuild-linux-arm/0.13.15: 1013 | resolution: {integrity: sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA==} 1014 | cpu: [arm] 1015 | os: [linux] 1016 | requiresBuild: true 1017 | dev: true 1018 | optional: true 1019 | 1020 | /esbuild-linux-arm64/0.13.15: 1021 | resolution: {integrity: sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA==} 1022 | cpu: [arm64] 1023 | os: [linux] 1024 | requiresBuild: true 1025 | dev: true 1026 | optional: true 1027 | 1028 | /esbuild-linux-mips64le/0.13.15: 1029 | resolution: {integrity: sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg==} 1030 | cpu: [mips64el] 1031 | os: [linux] 1032 | requiresBuild: true 1033 | dev: true 1034 | optional: true 1035 | 1036 | /esbuild-linux-ppc64le/0.13.15: 1037 | resolution: {integrity: sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ==} 1038 | cpu: [ppc64] 1039 | os: [linux] 1040 | requiresBuild: true 1041 | dev: true 1042 | optional: true 1043 | 1044 | /esbuild-netbsd-64/0.13.15: 1045 | resolution: {integrity: sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w==} 1046 | cpu: [x64] 1047 | os: [netbsd] 1048 | requiresBuild: true 1049 | dev: true 1050 | optional: true 1051 | 1052 | /esbuild-openbsd-64/0.13.15: 1053 | resolution: {integrity: sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g==} 1054 | cpu: [x64] 1055 | os: [openbsd] 1056 | requiresBuild: true 1057 | dev: true 1058 | optional: true 1059 | 1060 | /esbuild-sunos-64/0.13.15: 1061 | resolution: {integrity: sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw==} 1062 | cpu: [x64] 1063 | os: [sunos] 1064 | requiresBuild: true 1065 | dev: true 1066 | optional: true 1067 | 1068 | /esbuild-windows-32/0.13.15: 1069 | resolution: {integrity: sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw==} 1070 | cpu: [ia32] 1071 | os: [win32] 1072 | requiresBuild: true 1073 | dev: true 1074 | optional: true 1075 | 1076 | /esbuild-windows-64/0.13.15: 1077 | resolution: {integrity: sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ==} 1078 | cpu: [x64] 1079 | os: [win32] 1080 | requiresBuild: true 1081 | dev: true 1082 | optional: true 1083 | 1084 | /esbuild-windows-arm64/0.13.15: 1085 | resolution: {integrity: sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA==} 1086 | cpu: [arm64] 1087 | os: [win32] 1088 | requiresBuild: true 1089 | dev: true 1090 | optional: true 1091 | 1092 | /esbuild/0.13.15: 1093 | resolution: {integrity: sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==} 1094 | hasBin: true 1095 | requiresBuild: true 1096 | optionalDependencies: 1097 | esbuild-android-arm64: 0.13.15 1098 | esbuild-darwin-64: 0.13.15 1099 | esbuild-darwin-arm64: 0.13.15 1100 | esbuild-freebsd-64: 0.13.15 1101 | esbuild-freebsd-arm64: 0.13.15 1102 | esbuild-linux-32: 0.13.15 1103 | esbuild-linux-64: 0.13.15 1104 | esbuild-linux-arm: 0.13.15 1105 | esbuild-linux-arm64: 0.13.15 1106 | esbuild-linux-mips64le: 0.13.15 1107 | esbuild-linux-ppc64le: 0.13.15 1108 | esbuild-netbsd-64: 0.13.15 1109 | esbuild-openbsd-64: 0.13.15 1110 | esbuild-sunos-64: 0.13.15 1111 | esbuild-windows-32: 0.13.15 1112 | esbuild-windows-64: 0.13.15 1113 | esbuild-windows-arm64: 0.13.15 1114 | dev: true 1115 | 1116 | /escalade/3.1.1: 1117 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1118 | engines: {node: '>=6'} 1119 | dev: true 1120 | 1121 | /escape-string-regexp/1.0.5: 1122 | resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} 1123 | engines: {node: '>=0.8.0'} 1124 | dev: true 1125 | 1126 | /escape-string-regexp/4.0.0: 1127 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1128 | engines: {node: '>=10'} 1129 | dev: true 1130 | 1131 | /escodegen/2.0.0: 1132 | resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} 1133 | engines: {node: '>=6.0'} 1134 | hasBin: true 1135 | dependencies: 1136 | esprima: 4.0.1 1137 | estraverse: 5.3.0 1138 | esutils: 2.0.3 1139 | optionator: 0.8.3 1140 | optionalDependencies: 1141 | source-map: 0.6.1 1142 | dev: true 1143 | 1144 | /eslint-config-prettier/8.3.0_eslint@8.7.0: 1145 | resolution: {integrity: sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==} 1146 | hasBin: true 1147 | peerDependencies: 1148 | eslint: '>=7.0.0' 1149 | dependencies: 1150 | eslint: 8.7.0 1151 | dev: true 1152 | 1153 | /eslint-plugin-svelte3/3.4.0_eslint@8.7.0+svelte@3.46.3: 1154 | resolution: {integrity: sha512-MIQUTuRv3o7LyQ+360qOc9mLT35j1I5YzHr04g/UDcvJTpg0X/kHWELY99ve869Rp/9wjqD7I26Aq5H8OH5RIg==} 1155 | engines: {node: '>=10'} 1156 | peerDependencies: 1157 | eslint: '>=6.0.0' 1158 | svelte: ^3.2.0 1159 | dependencies: 1160 | eslint: 8.7.0 1161 | svelte: 3.46.3 1162 | dev: true 1163 | 1164 | /eslint-scope/7.1.0: 1165 | resolution: {integrity: sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==} 1166 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1167 | dependencies: 1168 | esrecurse: 4.3.0 1169 | estraverse: 5.3.0 1170 | dev: true 1171 | 1172 | /eslint-utils/3.0.0_eslint@8.7.0: 1173 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 1174 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 1175 | peerDependencies: 1176 | eslint: '>=5' 1177 | dependencies: 1178 | eslint: 8.7.0 1179 | eslint-visitor-keys: 2.1.0 1180 | dev: true 1181 | 1182 | /eslint-visitor-keys/2.1.0: 1183 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 1184 | engines: {node: '>=10'} 1185 | dev: true 1186 | 1187 | /eslint-visitor-keys/3.2.0: 1188 | resolution: {integrity: sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==} 1189 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1190 | dev: true 1191 | 1192 | /eslint/8.7.0: 1193 | resolution: {integrity: sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==} 1194 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1195 | hasBin: true 1196 | dependencies: 1197 | '@eslint/eslintrc': 1.0.5 1198 | '@humanwhocodes/config-array': 0.9.2 1199 | ajv: 6.12.6 1200 | chalk: 4.1.2 1201 | cross-spawn: 7.0.3 1202 | debug: 4.3.3 1203 | doctrine: 3.0.0 1204 | escape-string-regexp: 4.0.0 1205 | eslint-scope: 7.1.0 1206 | eslint-utils: 3.0.0_eslint@8.7.0 1207 | eslint-visitor-keys: 3.2.0 1208 | espree: 9.3.0 1209 | esquery: 1.4.0 1210 | esutils: 2.0.3 1211 | fast-deep-equal: 3.1.3 1212 | file-entry-cache: 6.0.1 1213 | functional-red-black-tree: 1.0.1 1214 | glob-parent: 6.0.2 1215 | globals: 13.12.0 1216 | ignore: 5.2.0 1217 | import-fresh: 3.3.0 1218 | imurmurhash: 0.1.4 1219 | is-glob: 4.0.3 1220 | js-yaml: 4.1.0 1221 | json-stable-stringify-without-jsonify: 1.0.1 1222 | levn: 0.4.1 1223 | lodash.merge: 4.6.2 1224 | minimatch: 3.0.4 1225 | natural-compare: 1.4.0 1226 | optionator: 0.9.1 1227 | regexpp: 3.2.0 1228 | strip-ansi: 6.0.1 1229 | strip-json-comments: 3.1.1 1230 | text-table: 0.2.0 1231 | v8-compile-cache: 2.3.0 1232 | transitivePeerDependencies: 1233 | - supports-color 1234 | dev: true 1235 | 1236 | /espree/9.3.0: 1237 | resolution: {integrity: sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==} 1238 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1239 | dependencies: 1240 | acorn: 8.7.0 1241 | acorn-jsx: 5.3.2_acorn@8.7.0 1242 | eslint-visitor-keys: 3.2.0 1243 | dev: true 1244 | 1245 | /esprima/4.0.1: 1246 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1247 | engines: {node: '>=4'} 1248 | hasBin: true 1249 | dev: true 1250 | 1251 | /esquery/1.4.0: 1252 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 1253 | engines: {node: '>=0.10'} 1254 | dependencies: 1255 | estraverse: 5.3.0 1256 | dev: true 1257 | 1258 | /esrecurse/4.3.0: 1259 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1260 | engines: {node: '>=4.0'} 1261 | dependencies: 1262 | estraverse: 5.3.0 1263 | dev: true 1264 | 1265 | /estraverse/5.3.0: 1266 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1267 | engines: {node: '>=4.0'} 1268 | dev: true 1269 | 1270 | /estree-walker/2.0.2: 1271 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1272 | dev: true 1273 | 1274 | /esutils/2.0.3: 1275 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1276 | engines: {node: '>=0.10.0'} 1277 | dev: true 1278 | 1279 | /extendable-error/0.1.7: 1280 | resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} 1281 | dev: true 1282 | 1283 | /external-editor/3.1.0: 1284 | resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} 1285 | engines: {node: '>=4'} 1286 | dependencies: 1287 | chardet: 0.7.0 1288 | iconv-lite: 0.4.24 1289 | tmp: 0.0.33 1290 | dev: true 1291 | 1292 | /fast-deep-equal/3.1.3: 1293 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1294 | dev: true 1295 | 1296 | /fast-glob/3.2.11: 1297 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} 1298 | engines: {node: '>=8.6.0'} 1299 | dependencies: 1300 | '@nodelib/fs.stat': 2.0.5 1301 | '@nodelib/fs.walk': 1.2.8 1302 | glob-parent: 5.1.2 1303 | merge2: 1.4.1 1304 | micromatch: 4.0.4 1305 | dev: true 1306 | 1307 | /fast-json-stable-stringify/2.1.0: 1308 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1309 | dev: true 1310 | 1311 | /fast-levenshtein/2.0.6: 1312 | resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} 1313 | dev: true 1314 | 1315 | /fastq/1.13.0: 1316 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 1317 | dependencies: 1318 | reusify: 1.0.4 1319 | dev: true 1320 | 1321 | /file-entry-cache/6.0.1: 1322 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1323 | engines: {node: ^10.12.0 || >=12.0.0} 1324 | dependencies: 1325 | flat-cache: 3.0.4 1326 | dev: true 1327 | 1328 | /fill-range/7.0.1: 1329 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1330 | engines: {node: '>=8'} 1331 | dependencies: 1332 | to-regex-range: 5.0.1 1333 | dev: true 1334 | 1335 | /find-up/4.1.0: 1336 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1337 | engines: {node: '>=8'} 1338 | dependencies: 1339 | locate-path: 5.0.0 1340 | path-exists: 4.0.0 1341 | dev: true 1342 | 1343 | /find-up/5.0.0: 1344 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1345 | engines: {node: '>=10'} 1346 | dependencies: 1347 | locate-path: 6.0.0 1348 | path-exists: 4.0.0 1349 | dev: true 1350 | 1351 | /find-yarn-workspace-root2/1.2.16: 1352 | resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} 1353 | dependencies: 1354 | micromatch: 4.0.4 1355 | pkg-dir: 4.2.0 1356 | dev: true 1357 | 1358 | /flat-cache/3.0.4: 1359 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1360 | engines: {node: ^10.12.0 || >=12.0.0} 1361 | dependencies: 1362 | flatted: 3.2.4 1363 | rimraf: 3.0.2 1364 | dev: true 1365 | 1366 | /flatted/3.2.4: 1367 | resolution: {integrity: sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==} 1368 | dev: true 1369 | 1370 | /form-data/4.0.0: 1371 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 1372 | engines: {node: '>= 6'} 1373 | dependencies: 1374 | asynckit: 0.4.0 1375 | combined-stream: 1.0.8 1376 | mime-types: 2.1.34 1377 | dev: true 1378 | 1379 | /fraction.js/4.1.2: 1380 | resolution: {integrity: sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==} 1381 | dev: true 1382 | 1383 | /fs-extra/7.0.1: 1384 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} 1385 | engines: {node: '>=6 <7 || >=8'} 1386 | dependencies: 1387 | graceful-fs: 4.2.9 1388 | jsonfile: 4.0.0 1389 | universalify: 0.1.2 1390 | dev: true 1391 | 1392 | /fs-extra/8.1.0: 1393 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} 1394 | engines: {node: '>=6 <7 || >=8'} 1395 | dependencies: 1396 | graceful-fs: 4.2.9 1397 | jsonfile: 4.0.0 1398 | universalify: 0.1.2 1399 | dev: true 1400 | 1401 | /fs.realpath/1.0.0: 1402 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} 1403 | dev: true 1404 | 1405 | /fsevents/2.3.2: 1406 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1407 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1408 | os: [darwin] 1409 | requiresBuild: true 1410 | dev: true 1411 | optional: true 1412 | 1413 | /function-bind/1.1.1: 1414 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1415 | dev: true 1416 | 1417 | /functional-red-black-tree/1.0.1: 1418 | resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} 1419 | dev: true 1420 | 1421 | /get-caller-file/2.0.5: 1422 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1423 | engines: {node: 6.* || 8.* || >= 10.*} 1424 | dev: true 1425 | 1426 | /get-func-name/2.0.0: 1427 | resolution: {integrity: sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=} 1428 | dev: true 1429 | 1430 | /glob-parent/5.1.2: 1431 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1432 | engines: {node: '>= 6'} 1433 | dependencies: 1434 | is-glob: 4.0.3 1435 | dev: true 1436 | 1437 | /glob-parent/6.0.2: 1438 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1439 | engines: {node: '>=10.13.0'} 1440 | dependencies: 1441 | is-glob: 4.0.3 1442 | dev: true 1443 | 1444 | /glob/7.2.0: 1445 | resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} 1446 | dependencies: 1447 | fs.realpath: 1.0.0 1448 | inflight: 1.0.6 1449 | inherits: 2.0.4 1450 | minimatch: 3.0.4 1451 | once: 1.4.0 1452 | path-is-absolute: 1.0.1 1453 | dev: true 1454 | 1455 | /globals/13.12.0: 1456 | resolution: {integrity: sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==} 1457 | engines: {node: '>=8'} 1458 | dependencies: 1459 | type-fest: 0.20.2 1460 | dev: true 1461 | 1462 | /globalyzer/0.1.0: 1463 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 1464 | dev: true 1465 | 1466 | /globby/11.1.0: 1467 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1468 | engines: {node: '>=10'} 1469 | dependencies: 1470 | array-union: 2.1.0 1471 | dir-glob: 3.0.1 1472 | fast-glob: 3.2.11 1473 | ignore: 5.2.0 1474 | merge2: 1.4.1 1475 | slash: 3.0.0 1476 | dev: true 1477 | 1478 | /globrex/0.1.2: 1479 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 1480 | dev: true 1481 | 1482 | /graceful-fs/4.2.9: 1483 | resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==} 1484 | dev: true 1485 | 1486 | /grapheme-splitter/1.0.4: 1487 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 1488 | dev: true 1489 | 1490 | /hard-rejection/2.1.0: 1491 | resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} 1492 | engines: {node: '>=6'} 1493 | dev: true 1494 | 1495 | /has-flag/3.0.0: 1496 | resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} 1497 | engines: {node: '>=4'} 1498 | dev: true 1499 | 1500 | /has-flag/4.0.0: 1501 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1502 | engines: {node: '>=8'} 1503 | dev: true 1504 | 1505 | /has/1.0.3: 1506 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1507 | engines: {node: '>= 0.4.0'} 1508 | dependencies: 1509 | function-bind: 1.1.1 1510 | dev: true 1511 | 1512 | /hosted-git-info/2.8.9: 1513 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} 1514 | dev: true 1515 | 1516 | /html-encoding-sniffer/3.0.0: 1517 | resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} 1518 | engines: {node: '>=12'} 1519 | dependencies: 1520 | whatwg-encoding: 2.0.0 1521 | dev: true 1522 | 1523 | /http-proxy-agent/5.0.0: 1524 | resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} 1525 | engines: {node: '>= 6'} 1526 | dependencies: 1527 | '@tootallnate/once': 2.0.0 1528 | agent-base: 6.0.2 1529 | debug: 4.3.3 1530 | transitivePeerDependencies: 1531 | - supports-color 1532 | dev: true 1533 | 1534 | /https-proxy-agent/5.0.0: 1535 | resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} 1536 | engines: {node: '>= 6'} 1537 | dependencies: 1538 | agent-base: 6.0.2 1539 | debug: 4.3.3 1540 | transitivePeerDependencies: 1541 | - supports-color 1542 | dev: true 1543 | 1544 | /human-id/1.0.2: 1545 | resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} 1546 | dev: true 1547 | 1548 | /iconv-lite/0.4.24: 1549 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1550 | engines: {node: '>=0.10.0'} 1551 | dependencies: 1552 | safer-buffer: 2.1.2 1553 | dev: true 1554 | 1555 | /iconv-lite/0.6.3: 1556 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 1557 | engines: {node: '>=0.10.0'} 1558 | dependencies: 1559 | safer-buffer: 2.1.2 1560 | dev: true 1561 | 1562 | /ignore/4.0.6: 1563 | resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} 1564 | engines: {node: '>= 4'} 1565 | dev: true 1566 | 1567 | /ignore/5.2.0: 1568 | resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} 1569 | engines: {node: '>= 4'} 1570 | dev: true 1571 | 1572 | /import-fresh/3.3.0: 1573 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1574 | engines: {node: '>=6'} 1575 | dependencies: 1576 | parent-module: 1.0.1 1577 | resolve-from: 4.0.0 1578 | dev: true 1579 | 1580 | /imurmurhash/0.1.4: 1581 | resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} 1582 | engines: {node: '>=0.8.19'} 1583 | dev: true 1584 | 1585 | /indent-string/4.0.0: 1586 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 1587 | engines: {node: '>=8'} 1588 | dev: true 1589 | 1590 | /inflight/1.0.6: 1591 | resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} 1592 | dependencies: 1593 | once: 1.4.0 1594 | wrappy: 1.0.2 1595 | dev: true 1596 | 1597 | /inherits/2.0.4: 1598 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1599 | dev: true 1600 | 1601 | /is-arrayish/0.2.1: 1602 | resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} 1603 | dev: true 1604 | 1605 | /is-ci/3.0.1: 1606 | resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} 1607 | hasBin: true 1608 | dependencies: 1609 | ci-info: 3.3.0 1610 | dev: true 1611 | 1612 | /is-core-module/2.8.1: 1613 | resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} 1614 | dependencies: 1615 | has: 1.0.3 1616 | dev: true 1617 | 1618 | /is-extglob/2.1.1: 1619 | resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} 1620 | engines: {node: '>=0.10.0'} 1621 | dev: true 1622 | 1623 | /is-fullwidth-code-point/3.0.0: 1624 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1625 | engines: {node: '>=8'} 1626 | dev: true 1627 | 1628 | /is-glob/4.0.3: 1629 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1630 | engines: {node: '>=0.10.0'} 1631 | dependencies: 1632 | is-extglob: 2.1.1 1633 | dev: true 1634 | 1635 | /is-number/7.0.0: 1636 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1637 | engines: {node: '>=0.12.0'} 1638 | dev: true 1639 | 1640 | /is-plain-obj/1.1.0: 1641 | resolution: {integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4=} 1642 | engines: {node: '>=0.10.0'} 1643 | dev: true 1644 | 1645 | /is-potential-custom-element-name/1.0.1: 1646 | resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} 1647 | dev: true 1648 | 1649 | /is-subdir/1.2.0: 1650 | resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} 1651 | engines: {node: '>=4'} 1652 | dependencies: 1653 | better-path-resolve: 1.0.0 1654 | dev: true 1655 | 1656 | /is-windows/1.0.2: 1657 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 1658 | engines: {node: '>=0.10.0'} 1659 | dev: true 1660 | 1661 | /isexe/2.0.0: 1662 | resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} 1663 | dev: true 1664 | 1665 | /js-tokens/4.0.0: 1666 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1667 | dev: true 1668 | 1669 | /js-yaml/3.14.1: 1670 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1671 | hasBin: true 1672 | dependencies: 1673 | argparse: 1.0.10 1674 | esprima: 4.0.1 1675 | dev: true 1676 | 1677 | /js-yaml/4.1.0: 1678 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1679 | hasBin: true 1680 | dependencies: 1681 | argparse: 2.0.1 1682 | dev: true 1683 | 1684 | /jsdom/19.0.0: 1685 | resolution: {integrity: sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==} 1686 | engines: {node: '>=12'} 1687 | peerDependencies: 1688 | canvas: ^2.5.0 1689 | peerDependenciesMeta: 1690 | canvas: 1691 | optional: true 1692 | dependencies: 1693 | abab: 2.0.5 1694 | acorn: 8.7.0 1695 | acorn-globals: 6.0.0 1696 | cssom: 0.5.0 1697 | cssstyle: 2.3.0 1698 | data-urls: 3.0.1 1699 | decimal.js: 10.3.1 1700 | domexception: 4.0.0 1701 | escodegen: 2.0.0 1702 | form-data: 4.0.0 1703 | html-encoding-sniffer: 3.0.0 1704 | http-proxy-agent: 5.0.0 1705 | https-proxy-agent: 5.0.0 1706 | is-potential-custom-element-name: 1.0.1 1707 | nwsapi: 2.2.0 1708 | parse5: 6.0.1 1709 | saxes: 5.0.1 1710 | symbol-tree: 3.2.4 1711 | tough-cookie: 4.0.0 1712 | w3c-hr-time: 1.0.2 1713 | w3c-xmlserializer: 3.0.0 1714 | webidl-conversions: 7.0.0 1715 | whatwg-encoding: 2.0.0 1716 | whatwg-mimetype: 3.0.0 1717 | whatwg-url: 10.0.0 1718 | ws: 8.4.2 1719 | xml-name-validator: 4.0.0 1720 | transitivePeerDependencies: 1721 | - bufferutil 1722 | - supports-color 1723 | - utf-8-validate 1724 | dev: true 1725 | 1726 | /json-parse-even-better-errors/2.3.1: 1727 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1728 | dev: true 1729 | 1730 | /json-schema-traverse/0.4.1: 1731 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1732 | dev: true 1733 | 1734 | /json-stable-stringify-without-jsonify/1.0.1: 1735 | resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} 1736 | dev: true 1737 | 1738 | /jsonfile/4.0.0: 1739 | resolution: {integrity: sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=} 1740 | optionalDependencies: 1741 | graceful-fs: 4.2.9 1742 | dev: true 1743 | 1744 | /kind-of/6.0.3: 1745 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} 1746 | engines: {node: '>=0.10.0'} 1747 | dev: true 1748 | 1749 | /kleur/4.1.4: 1750 | resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==} 1751 | engines: {node: '>=6'} 1752 | dev: true 1753 | 1754 | /levn/0.3.0: 1755 | resolution: {integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=} 1756 | engines: {node: '>= 0.8.0'} 1757 | dependencies: 1758 | prelude-ls: 1.1.2 1759 | type-check: 0.3.2 1760 | dev: true 1761 | 1762 | /levn/0.4.1: 1763 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1764 | engines: {node: '>= 0.8.0'} 1765 | dependencies: 1766 | prelude-ls: 1.2.1 1767 | type-check: 0.4.0 1768 | dev: true 1769 | 1770 | /lines-and-columns/1.2.4: 1771 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1772 | dev: true 1773 | 1774 | /load-yaml-file/0.2.0: 1775 | resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} 1776 | engines: {node: '>=6'} 1777 | dependencies: 1778 | graceful-fs: 4.2.9 1779 | js-yaml: 3.14.1 1780 | pify: 4.0.1 1781 | strip-bom: 3.0.0 1782 | dev: true 1783 | 1784 | /local-pkg/0.4.1: 1785 | resolution: {integrity: sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==} 1786 | engines: {node: '>=14'} 1787 | dev: true 1788 | 1789 | /locate-path/5.0.0: 1790 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 1791 | engines: {node: '>=8'} 1792 | dependencies: 1793 | p-locate: 4.1.0 1794 | dev: true 1795 | 1796 | /locate-path/6.0.0: 1797 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1798 | engines: {node: '>=10'} 1799 | dependencies: 1800 | p-locate: 5.0.0 1801 | dev: true 1802 | 1803 | /lodash.merge/4.6.2: 1804 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1805 | dev: true 1806 | 1807 | /lodash.startcase/4.4.0: 1808 | resolution: {integrity: sha1-lDbjTtJgk+1/+uGTYUQ1CRXZrdg=} 1809 | dev: true 1810 | 1811 | /loupe/2.3.1: 1812 | resolution: {integrity: sha512-EN1D3jyVmaX4tnajVlfbREU4axL647hLec1h/PXAb8CPDMJiYitcWF2UeLVNttRqaIqQs4x+mRvXf+d+TlDrCA==} 1813 | dependencies: 1814 | get-func-name: 2.0.0 1815 | dev: true 1816 | 1817 | /lower-case/2.0.2: 1818 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} 1819 | dependencies: 1820 | tslib: 2.3.1 1821 | dev: true 1822 | 1823 | /lru-cache/4.1.5: 1824 | resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} 1825 | dependencies: 1826 | pseudomap: 1.0.2 1827 | yallist: 2.1.2 1828 | dev: true 1829 | 1830 | /magic-string/0.25.7: 1831 | resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==} 1832 | dependencies: 1833 | sourcemap-codec: 1.4.8 1834 | dev: true 1835 | 1836 | /map-obj/1.0.1: 1837 | resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} 1838 | engines: {node: '>=0.10.0'} 1839 | dev: true 1840 | 1841 | /map-obj/4.3.0: 1842 | resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} 1843 | engines: {node: '>=8'} 1844 | dev: true 1845 | 1846 | /meow/6.1.1: 1847 | resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} 1848 | engines: {node: '>=8'} 1849 | dependencies: 1850 | '@types/minimist': 1.2.2 1851 | camelcase-keys: 6.2.2 1852 | decamelize-keys: 1.1.0 1853 | hard-rejection: 2.1.0 1854 | minimist-options: 4.1.0 1855 | normalize-package-data: 2.5.0 1856 | read-pkg-up: 7.0.1 1857 | redent: 3.0.0 1858 | trim-newlines: 3.0.1 1859 | type-fest: 0.13.1 1860 | yargs-parser: 18.1.3 1861 | dev: true 1862 | 1863 | /merge2/1.4.1: 1864 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1865 | engines: {node: '>= 8'} 1866 | dev: true 1867 | 1868 | /micromatch/4.0.4: 1869 | resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} 1870 | engines: {node: '>=8.6'} 1871 | dependencies: 1872 | braces: 3.0.2 1873 | picomatch: 2.3.1 1874 | dev: true 1875 | 1876 | /mime-db/1.51.0: 1877 | resolution: {integrity: sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==} 1878 | engines: {node: '>= 0.6'} 1879 | dev: true 1880 | 1881 | /mime-types/2.1.34: 1882 | resolution: {integrity: sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==} 1883 | engines: {node: '>= 0.6'} 1884 | dependencies: 1885 | mime-db: 1.51.0 1886 | dev: true 1887 | 1888 | /min-indent/1.0.1: 1889 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 1890 | engines: {node: '>=4'} 1891 | dev: true 1892 | 1893 | /minimatch/3.0.4: 1894 | resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} 1895 | dependencies: 1896 | brace-expansion: 1.1.11 1897 | dev: true 1898 | 1899 | /minimist-options/4.1.0: 1900 | resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} 1901 | engines: {node: '>= 6'} 1902 | dependencies: 1903 | arrify: 1.0.1 1904 | is-plain-obj: 1.1.0 1905 | kind-of: 6.0.3 1906 | dev: true 1907 | 1908 | /minimist/1.2.5: 1909 | resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} 1910 | dev: true 1911 | 1912 | /mixme/0.5.4: 1913 | resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} 1914 | engines: {node: '>= 8.0.0'} 1915 | dev: true 1916 | 1917 | /mkdirp/0.5.5: 1918 | resolution: {integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==} 1919 | hasBin: true 1920 | dependencies: 1921 | minimist: 1.2.5 1922 | dev: true 1923 | 1924 | /mri/1.2.0: 1925 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1926 | engines: {node: '>=4'} 1927 | dev: true 1928 | 1929 | /mrmime/1.0.0: 1930 | resolution: {integrity: sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==} 1931 | engines: {node: '>=10'} 1932 | dev: true 1933 | 1934 | /ms/2.1.2: 1935 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1936 | dev: true 1937 | 1938 | /nanoid/3.2.0: 1939 | resolution: {integrity: sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==} 1940 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1941 | hasBin: true 1942 | dev: true 1943 | 1944 | /natural-compare/1.4.0: 1945 | resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} 1946 | dev: true 1947 | 1948 | /no-case/3.0.4: 1949 | resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} 1950 | dependencies: 1951 | lower-case: 2.0.2 1952 | tslib: 2.3.1 1953 | dev: true 1954 | 1955 | /node-releases/2.0.1: 1956 | resolution: {integrity: sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==} 1957 | dev: true 1958 | 1959 | /normalize-package-data/2.5.0: 1960 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} 1961 | dependencies: 1962 | hosted-git-info: 2.8.9 1963 | resolve: 1.22.0 1964 | semver: 5.7.1 1965 | validate-npm-package-license: 3.0.4 1966 | dev: true 1967 | 1968 | /normalize-range/0.1.2: 1969 | resolution: {integrity: sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=} 1970 | engines: {node: '>=0.10.0'} 1971 | dev: true 1972 | 1973 | /nwsapi/2.2.0: 1974 | resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==} 1975 | dev: true 1976 | 1977 | /once/1.4.0: 1978 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} 1979 | dependencies: 1980 | wrappy: 1.0.2 1981 | dev: true 1982 | 1983 | /optionator/0.8.3: 1984 | resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} 1985 | engines: {node: '>= 0.8.0'} 1986 | dependencies: 1987 | deep-is: 0.1.4 1988 | fast-levenshtein: 2.0.6 1989 | levn: 0.3.0 1990 | prelude-ls: 1.1.2 1991 | type-check: 0.3.2 1992 | word-wrap: 1.2.3 1993 | dev: true 1994 | 1995 | /optionator/0.9.1: 1996 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 1997 | engines: {node: '>= 0.8.0'} 1998 | dependencies: 1999 | deep-is: 0.1.4 2000 | fast-levenshtein: 2.0.6 2001 | levn: 0.4.1 2002 | prelude-ls: 1.2.1 2003 | type-check: 0.4.0 2004 | word-wrap: 1.2.3 2005 | dev: true 2006 | 2007 | /os-tmpdir/1.0.2: 2008 | resolution: {integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=} 2009 | engines: {node: '>=0.10.0'} 2010 | dev: true 2011 | 2012 | /outdent/0.5.0: 2013 | resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} 2014 | dev: true 2015 | 2016 | /p-filter/2.1.0: 2017 | resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} 2018 | engines: {node: '>=8'} 2019 | dependencies: 2020 | p-map: 2.1.0 2021 | dev: true 2022 | 2023 | /p-limit/2.3.0: 2024 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 2025 | engines: {node: '>=6'} 2026 | dependencies: 2027 | p-try: 2.2.0 2028 | dev: true 2029 | 2030 | /p-limit/3.1.0: 2031 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2032 | engines: {node: '>=10'} 2033 | dependencies: 2034 | yocto-queue: 0.1.0 2035 | dev: true 2036 | 2037 | /p-locate/4.1.0: 2038 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 2039 | engines: {node: '>=8'} 2040 | dependencies: 2041 | p-limit: 2.3.0 2042 | dev: true 2043 | 2044 | /p-locate/5.0.0: 2045 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2046 | engines: {node: '>=10'} 2047 | dependencies: 2048 | p-limit: 3.1.0 2049 | dev: true 2050 | 2051 | /p-map/2.1.0: 2052 | resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} 2053 | engines: {node: '>=6'} 2054 | dev: true 2055 | 2056 | /p-try/2.2.0: 2057 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 2058 | engines: {node: '>=6'} 2059 | dev: true 2060 | 2061 | /parent-module/1.0.1: 2062 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2063 | engines: {node: '>=6'} 2064 | dependencies: 2065 | callsites: 3.1.0 2066 | dev: true 2067 | 2068 | /parse-json/5.2.0: 2069 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 2070 | engines: {node: '>=8'} 2071 | dependencies: 2072 | '@babel/code-frame': 7.16.7 2073 | error-ex: 1.3.2 2074 | json-parse-even-better-errors: 2.3.1 2075 | lines-and-columns: 1.2.4 2076 | dev: true 2077 | 2078 | /parse5/6.0.1: 2079 | resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} 2080 | dev: true 2081 | 2082 | /pascal-case/3.1.2: 2083 | resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} 2084 | dependencies: 2085 | no-case: 3.0.4 2086 | tslib: 2.3.1 2087 | dev: true 2088 | 2089 | /path-exists/4.0.0: 2090 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2091 | engines: {node: '>=8'} 2092 | dev: true 2093 | 2094 | /path-is-absolute/1.0.1: 2095 | resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} 2096 | engines: {node: '>=0.10.0'} 2097 | dev: true 2098 | 2099 | /path-key/3.1.1: 2100 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2101 | engines: {node: '>=8'} 2102 | dev: true 2103 | 2104 | /path-parse/1.0.7: 2105 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2106 | dev: true 2107 | 2108 | /path-type/4.0.0: 2109 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2110 | engines: {node: '>=8'} 2111 | dev: true 2112 | 2113 | /pathval/1.1.1: 2114 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} 2115 | dev: true 2116 | 2117 | /picocolors/1.0.0: 2118 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2119 | dev: true 2120 | 2121 | /picomatch/2.3.1: 2122 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2123 | engines: {node: '>=8.6'} 2124 | dev: true 2125 | 2126 | /pify/4.0.1: 2127 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 2128 | engines: {node: '>=6'} 2129 | dev: true 2130 | 2131 | /pkg-dir/4.2.0: 2132 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 2133 | engines: {node: '>=8'} 2134 | dependencies: 2135 | find-up: 4.1.0 2136 | dev: true 2137 | 2138 | /postcss-value-parser/4.2.0: 2139 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 2140 | dev: true 2141 | 2142 | /postcss/8.4.5: 2143 | resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==} 2144 | engines: {node: ^10 || ^12 || >=14} 2145 | dependencies: 2146 | nanoid: 3.2.0 2147 | picocolors: 1.0.0 2148 | source-map-js: 1.0.2 2149 | dev: true 2150 | 2151 | /preferred-pm/3.0.3: 2152 | resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} 2153 | engines: {node: '>=10'} 2154 | dependencies: 2155 | find-up: 5.0.0 2156 | find-yarn-workspace-root2: 1.2.16 2157 | path-exists: 4.0.0 2158 | which-pm: 2.0.0 2159 | dev: true 2160 | 2161 | /prelude-ls/1.1.2: 2162 | resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} 2163 | engines: {node: '>= 0.8.0'} 2164 | dev: true 2165 | 2166 | /prelude-ls/1.2.1: 2167 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2168 | engines: {node: '>= 0.8.0'} 2169 | dev: true 2170 | 2171 | /prettier-plugin-svelte/2.6.0_prettier@2.5.1+svelte@3.46.3: 2172 | resolution: {integrity: sha512-NPSRf6Y5rufRlBleok/pqg4+1FyGsL0zYhkYP6hnueeL1J/uCm3OfOZPsLX4zqD9VAdcXfyEL2PYqGv8ZoOSfA==} 2173 | peerDependencies: 2174 | prettier: ^1.16.4 || ^2.0.0 2175 | svelte: ^3.2.0 2176 | dependencies: 2177 | prettier: 2.5.1 2178 | svelte: 3.46.3 2179 | dev: true 2180 | 2181 | /prettier/1.19.1: 2182 | resolution: {integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==} 2183 | engines: {node: '>=4'} 2184 | hasBin: true 2185 | dev: true 2186 | 2187 | /prettier/2.5.1: 2188 | resolution: {integrity: sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==} 2189 | engines: {node: '>=10.13.0'} 2190 | hasBin: true 2191 | dev: true 2192 | 2193 | /pseudomap/1.0.2: 2194 | resolution: {integrity: sha1-8FKijacOYYkX7wqKw0wa5aaChrM=} 2195 | dev: true 2196 | 2197 | /psl/1.8.0: 2198 | resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} 2199 | dev: true 2200 | 2201 | /punycode/2.1.1: 2202 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 2203 | engines: {node: '>=6'} 2204 | dev: true 2205 | 2206 | /queue-microtask/1.2.3: 2207 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2208 | dev: true 2209 | 2210 | /quick-lru/4.0.1: 2211 | resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} 2212 | engines: {node: '>=8'} 2213 | dev: true 2214 | 2215 | /read-pkg-up/7.0.1: 2216 | resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} 2217 | engines: {node: '>=8'} 2218 | dependencies: 2219 | find-up: 4.1.0 2220 | read-pkg: 5.2.0 2221 | type-fest: 0.8.1 2222 | dev: true 2223 | 2224 | /read-pkg/5.2.0: 2225 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} 2226 | engines: {node: '>=8'} 2227 | dependencies: 2228 | '@types/normalize-package-data': 2.4.1 2229 | normalize-package-data: 2.5.0 2230 | parse-json: 5.2.0 2231 | type-fest: 0.6.0 2232 | dev: true 2233 | 2234 | /read-yaml-file/1.1.0: 2235 | resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} 2236 | engines: {node: '>=6'} 2237 | dependencies: 2238 | graceful-fs: 4.2.9 2239 | js-yaml: 3.14.1 2240 | pify: 4.0.1 2241 | strip-bom: 3.0.0 2242 | dev: true 2243 | 2244 | /redent/3.0.0: 2245 | resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} 2246 | engines: {node: '>=8'} 2247 | dependencies: 2248 | indent-string: 4.0.0 2249 | strip-indent: 3.0.0 2250 | dev: true 2251 | 2252 | /regenerator-runtime/0.13.9: 2253 | resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} 2254 | dev: true 2255 | 2256 | /regexpp/3.2.0: 2257 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 2258 | engines: {node: '>=8'} 2259 | dev: true 2260 | 2261 | /require-directory/2.1.1: 2262 | resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} 2263 | engines: {node: '>=0.10.0'} 2264 | dev: true 2265 | 2266 | /require-main-filename/2.0.0: 2267 | resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} 2268 | dev: true 2269 | 2270 | /require-relative/0.8.7: 2271 | resolution: {integrity: sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=} 2272 | dev: true 2273 | 2274 | /resolve-from/4.0.0: 2275 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2276 | engines: {node: '>=4'} 2277 | dev: true 2278 | 2279 | /resolve-from/5.0.0: 2280 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 2281 | engines: {node: '>=8'} 2282 | dev: true 2283 | 2284 | /resolve/1.22.0: 2285 | resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} 2286 | hasBin: true 2287 | dependencies: 2288 | is-core-module: 2.8.1 2289 | path-parse: 1.0.7 2290 | supports-preserve-symlinks-flag: 1.0.0 2291 | dev: true 2292 | 2293 | /reusify/1.0.4: 2294 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2295 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2296 | dev: true 2297 | 2298 | /rimraf/2.7.1: 2299 | resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} 2300 | hasBin: true 2301 | dependencies: 2302 | glob: 7.2.0 2303 | dev: true 2304 | 2305 | /rimraf/3.0.2: 2306 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2307 | hasBin: true 2308 | dependencies: 2309 | glob: 7.2.0 2310 | dev: true 2311 | 2312 | /rollup/2.66.0: 2313 | resolution: {integrity: sha512-L6mKOkdyP8HK5kKJXaiWG7KZDumPJjuo1P+cfyHOJPNNTK3Moe7zCH5+fy7v8pVmHXtlxorzaBjvkBMB23s98g==} 2314 | engines: {node: '>=10.0.0'} 2315 | hasBin: true 2316 | optionalDependencies: 2317 | fsevents: 2.3.2 2318 | dev: true 2319 | 2320 | /run-parallel/1.2.0: 2321 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2322 | dependencies: 2323 | queue-microtask: 1.2.3 2324 | dev: true 2325 | 2326 | /sade/1.8.1: 2327 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 2328 | engines: {node: '>=6'} 2329 | dependencies: 2330 | mri: 1.2.0 2331 | dev: true 2332 | 2333 | /safer-buffer/2.1.2: 2334 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 2335 | dev: true 2336 | 2337 | /sander/0.5.1: 2338 | resolution: {integrity: sha1-dB4kXiMfB8r7b98PEzrfohalAq0=} 2339 | dependencies: 2340 | es6-promise: 3.3.1 2341 | graceful-fs: 4.2.9 2342 | mkdirp: 0.5.5 2343 | rimraf: 2.7.1 2344 | dev: true 2345 | 2346 | /saxes/5.0.1: 2347 | resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} 2348 | engines: {node: '>=10'} 2349 | dependencies: 2350 | xmlchars: 2.2.0 2351 | dev: true 2352 | 2353 | /semver/5.7.1: 2354 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} 2355 | hasBin: true 2356 | dev: true 2357 | 2358 | /set-blocking/2.0.0: 2359 | resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=} 2360 | dev: true 2361 | 2362 | /shebang-command/1.2.0: 2363 | resolution: {integrity: sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=} 2364 | engines: {node: '>=0.10.0'} 2365 | dependencies: 2366 | shebang-regex: 1.0.0 2367 | dev: true 2368 | 2369 | /shebang-command/2.0.0: 2370 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2371 | engines: {node: '>=8'} 2372 | dependencies: 2373 | shebang-regex: 3.0.0 2374 | dev: true 2375 | 2376 | /shebang-regex/1.0.0: 2377 | resolution: {integrity: sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=} 2378 | engines: {node: '>=0.10.0'} 2379 | dev: true 2380 | 2381 | /shebang-regex/3.0.0: 2382 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2383 | engines: {node: '>=8'} 2384 | dev: true 2385 | 2386 | /signal-exit/3.0.6: 2387 | resolution: {integrity: sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==} 2388 | dev: true 2389 | 2390 | /sirv/2.0.2: 2391 | resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} 2392 | engines: {node: '>= 10'} 2393 | dependencies: 2394 | '@polka/url': 1.0.0-next.21 2395 | mrmime: 1.0.0 2396 | totalist: 3.0.0 2397 | dev: true 2398 | 2399 | /slash/3.0.0: 2400 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2401 | engines: {node: '>=8'} 2402 | dev: true 2403 | 2404 | /smartwrap/1.2.5: 2405 | resolution: {integrity: sha512-bzWRwHwu0RnWjwU7dFy7tF68pDAx/zMSu3g7xr9Nx5J0iSImYInglwEVExyHLxXljy6PWMjkSAbwF7t2mPnRmg==} 2406 | deprecated: Backported compatibility to node > 6 2407 | hasBin: true 2408 | dependencies: 2409 | breakword: 1.0.5 2410 | grapheme-splitter: 1.0.4 2411 | strip-ansi: 6.0.1 2412 | wcwidth: 1.0.1 2413 | yargs: 15.4.1 2414 | dev: true 2415 | 2416 | /sorcery/0.10.0: 2417 | resolution: {integrity: sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=} 2418 | hasBin: true 2419 | dependencies: 2420 | buffer-crc32: 0.2.13 2421 | minimist: 1.2.5 2422 | sander: 0.5.1 2423 | sourcemap-codec: 1.4.8 2424 | dev: true 2425 | 2426 | /source-map-js/1.0.2: 2427 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2428 | engines: {node: '>=0.10.0'} 2429 | dev: true 2430 | 2431 | /source-map/0.6.1: 2432 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2433 | engines: {node: '>=0.10.0'} 2434 | requiresBuild: true 2435 | dev: true 2436 | optional: true 2437 | 2438 | /sourcemap-codec/1.4.8: 2439 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 2440 | dev: true 2441 | 2442 | /spawndamnit/2.0.0: 2443 | resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} 2444 | dependencies: 2445 | cross-spawn: 5.1.0 2446 | signal-exit: 3.0.6 2447 | dev: true 2448 | 2449 | /spdx-correct/3.1.1: 2450 | resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} 2451 | dependencies: 2452 | spdx-expression-parse: 3.0.1 2453 | spdx-license-ids: 3.0.11 2454 | dev: true 2455 | 2456 | /spdx-exceptions/2.3.0: 2457 | resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} 2458 | dev: true 2459 | 2460 | /spdx-expression-parse/3.0.1: 2461 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 2462 | dependencies: 2463 | spdx-exceptions: 2.3.0 2464 | spdx-license-ids: 3.0.11 2465 | dev: true 2466 | 2467 | /spdx-license-ids/3.0.11: 2468 | resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} 2469 | dev: true 2470 | 2471 | /sprintf-js/1.0.3: 2472 | resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} 2473 | dev: true 2474 | 2475 | /stream-transform/2.1.3: 2476 | resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} 2477 | dependencies: 2478 | mixme: 0.5.4 2479 | dev: true 2480 | 2481 | /string-width/4.2.3: 2482 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2483 | engines: {node: '>=8'} 2484 | dependencies: 2485 | emoji-regex: 8.0.0 2486 | is-fullwidth-code-point: 3.0.0 2487 | strip-ansi: 6.0.1 2488 | dev: true 2489 | 2490 | /strip-ansi/6.0.1: 2491 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2492 | engines: {node: '>=8'} 2493 | dependencies: 2494 | ansi-regex: 5.0.1 2495 | dev: true 2496 | 2497 | /strip-bom/3.0.0: 2498 | resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} 2499 | engines: {node: '>=4'} 2500 | dev: true 2501 | 2502 | /strip-indent/3.0.0: 2503 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 2504 | engines: {node: '>=8'} 2505 | dependencies: 2506 | min-indent: 1.0.1 2507 | dev: true 2508 | 2509 | /strip-json-comments/3.1.1: 2510 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2511 | engines: {node: '>=8'} 2512 | dev: true 2513 | 2514 | /supports-color/5.5.0: 2515 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2516 | engines: {node: '>=4'} 2517 | dependencies: 2518 | has-flag: 3.0.0 2519 | dev: true 2520 | 2521 | /supports-color/7.2.0: 2522 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2523 | engines: {node: '>=8'} 2524 | dependencies: 2525 | has-flag: 4.0.0 2526 | dev: true 2527 | 2528 | /supports-preserve-symlinks-flag/1.0.0: 2529 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2530 | engines: {node: '>= 0.4'} 2531 | dev: true 2532 | 2533 | /svelte-hmr/0.14.9_svelte@3.46.3: 2534 | resolution: {integrity: sha512-bKE9+4qb4sAnA+TKHiYurUl970rjA0XmlP9TEP7K/ncyWz3m81kA4HOgmlZK/7irGK7gzZlaPDI3cmf8fp/+tg==} 2535 | peerDependencies: 2536 | svelte: '>=3.19.0' 2537 | dependencies: 2538 | svelte: 3.46.3 2539 | dev: true 2540 | 2541 | /svelte-preprocess/4.10.2_svelte@3.46.3+typescript@4.5.5: 2542 | resolution: {integrity: sha512-aPpkCreSo8EL/y8kJSa1trhiX0oyAtTjlNNM7BNjRAsMJ8Yy2LtqHt0zyd4pQPXt+D4PzbO3qTjjio3kwOxDlA==} 2543 | engines: {node: '>= 9.11.2'} 2544 | requiresBuild: true 2545 | peerDependencies: 2546 | '@babel/core': ^7.10.2 2547 | coffeescript: ^2.5.1 2548 | less: ^3.11.3 || ^4.0.0 2549 | node-sass: '*' 2550 | postcss: ^7 || ^8 2551 | postcss-load-config: ^2.1.0 || ^3.0.0 2552 | pug: ^3.0.0 2553 | sass: ^1.26.8 2554 | stylus: ^0.55.0 2555 | sugarss: ^2.0.0 2556 | svelte: ^3.23.0 2557 | typescript: ^4.5.2 2558 | peerDependenciesMeta: 2559 | '@babel/core': 2560 | optional: true 2561 | coffeescript: 2562 | optional: true 2563 | less: 2564 | optional: true 2565 | node-sass: 2566 | optional: true 2567 | postcss: 2568 | optional: true 2569 | postcss-load-config: 2570 | optional: true 2571 | pug: 2572 | optional: true 2573 | sass: 2574 | optional: true 2575 | stylus: 2576 | optional: true 2577 | sugarss: 2578 | optional: true 2579 | typescript: 2580 | optional: true 2581 | dependencies: 2582 | '@types/pug': 2.0.6 2583 | '@types/sass': 1.43.1 2584 | detect-indent: 6.1.0 2585 | magic-string: 0.25.7 2586 | sorcery: 0.10.0 2587 | strip-indent: 3.0.0 2588 | svelte: 3.46.3 2589 | typescript: 4.5.5 2590 | dev: true 2591 | 2592 | /svelte/3.46.3: 2593 | resolution: {integrity: sha512-mTOXvv74CVQqJHqoIZDprVfRKVVmYNadXP0VKnOEA54223kLGCr1nMrifS4Zx29qMt/xRB38Eq1D7dDH/fM8fQ==} 2594 | engines: {node: '>= 8'} 2595 | dev: true 2596 | 2597 | /svelte2tsx/0.5.0_svelte@3.46.3+typescript@4.5.5: 2598 | resolution: {integrity: sha512-pgMMPzPylwzb/XTLXZQ0y6LUlYzVTep4537NJzHNyTbML864pfVS27iVFOgUK7XmKLyuIdG7tgweUZTsIwgKHw==} 2599 | peerDependencies: 2600 | svelte: ^3.24 2601 | typescript: ^4.1.2 2602 | dependencies: 2603 | dedent-js: 1.0.1 2604 | pascal-case: 3.1.2 2605 | svelte: 3.46.3 2606 | typescript: 4.5.5 2607 | dev: true 2608 | 2609 | /symbol-tree/3.2.4: 2610 | resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} 2611 | dev: true 2612 | 2613 | /term-size/2.2.1: 2614 | resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} 2615 | engines: {node: '>=8'} 2616 | dev: true 2617 | 2618 | /text-table/0.2.0: 2619 | resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} 2620 | dev: true 2621 | 2622 | /tiny-glob/0.2.9: 2623 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 2624 | dependencies: 2625 | globalyzer: 0.1.0 2626 | globrex: 0.1.2 2627 | dev: true 2628 | 2629 | /tinypool/0.1.1: 2630 | resolution: {integrity: sha512-sW2fQZ2BRb/GX5v55NkHiTrbMLx0eX0xNpP+VGhOe2f7Oo04+LeClDyM19zCE/WCy7jJ8kzIJ0Ojrxj3UhN9Sg==} 2631 | engines: {node: '>=14.0.0'} 2632 | dev: true 2633 | 2634 | /tinyspy/0.2.10: 2635 | resolution: {integrity: sha512-Qij6rGWCDjWIejxCXXVi6bNgvrYBp3PbqC4cBP/0fD6WHDOHCw09Zd13CsxrDqSR5PFq01WeqDws8t5lz5sH0A==} 2636 | engines: {node: '>=14.0.0'} 2637 | dev: true 2638 | 2639 | /tmp/0.0.33: 2640 | resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} 2641 | engines: {node: '>=0.6.0'} 2642 | dependencies: 2643 | os-tmpdir: 1.0.2 2644 | dev: true 2645 | 2646 | /to-regex-range/5.0.1: 2647 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2648 | engines: {node: '>=8.0'} 2649 | dependencies: 2650 | is-number: 7.0.0 2651 | dev: true 2652 | 2653 | /totalist/3.0.0: 2654 | resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} 2655 | engines: {node: '>=6'} 2656 | dev: true 2657 | 2658 | /tough-cookie/4.0.0: 2659 | resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} 2660 | engines: {node: '>=6'} 2661 | dependencies: 2662 | psl: 1.8.0 2663 | punycode: 2.1.1 2664 | universalify: 0.1.2 2665 | dev: true 2666 | 2667 | /tr46/3.0.0: 2668 | resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} 2669 | engines: {node: '>=12'} 2670 | dependencies: 2671 | punycode: 2.1.1 2672 | dev: true 2673 | 2674 | /trim-newlines/3.0.1: 2675 | resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} 2676 | engines: {node: '>=8'} 2677 | dev: true 2678 | 2679 | /tslib/2.3.1: 2680 | resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} 2681 | dev: true 2682 | 2683 | /tty-table/2.8.13: 2684 | resolution: {integrity: sha512-eVV/+kB6fIIdx+iUImhXrO22gl7f6VmmYh0Zbu6C196fe1elcHXd7U6LcLXu0YoVPc2kNesWiukYcdK8ZmJ6aQ==} 2685 | engines: {node: '>=8.16.0'} 2686 | hasBin: true 2687 | dependencies: 2688 | chalk: 3.0.0 2689 | csv: 5.5.3 2690 | smartwrap: 1.2.5 2691 | strip-ansi: 6.0.1 2692 | wcwidth: 1.0.1 2693 | yargs: 15.4.1 2694 | dev: true 2695 | 2696 | /type-check/0.3.2: 2697 | resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} 2698 | engines: {node: '>= 0.8.0'} 2699 | dependencies: 2700 | prelude-ls: 1.1.2 2701 | dev: true 2702 | 2703 | /type-check/0.4.0: 2704 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2705 | engines: {node: '>= 0.8.0'} 2706 | dependencies: 2707 | prelude-ls: 1.2.1 2708 | dev: true 2709 | 2710 | /type-detect/4.0.8: 2711 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 2712 | engines: {node: '>=4'} 2713 | dev: true 2714 | 2715 | /type-fest/0.13.1: 2716 | resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} 2717 | engines: {node: '>=10'} 2718 | dev: true 2719 | 2720 | /type-fest/0.20.2: 2721 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2722 | engines: {node: '>=10'} 2723 | dev: true 2724 | 2725 | /type-fest/0.6.0: 2726 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} 2727 | engines: {node: '>=8'} 2728 | dev: true 2729 | 2730 | /type-fest/0.8.1: 2731 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} 2732 | engines: {node: '>=8'} 2733 | dev: true 2734 | 2735 | /typescript/4.5.5: 2736 | resolution: {integrity: sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==} 2737 | engines: {node: '>=4.2.0'} 2738 | hasBin: true 2739 | dev: true 2740 | 2741 | /universalify/0.1.2: 2742 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 2743 | engines: {node: '>= 4.0.0'} 2744 | dev: true 2745 | 2746 | /uri-js/4.4.1: 2747 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2748 | dependencies: 2749 | punycode: 2.1.1 2750 | dev: true 2751 | 2752 | /v8-compile-cache/2.3.0: 2753 | resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} 2754 | dev: true 2755 | 2756 | /validate-npm-package-license/3.0.4: 2757 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 2758 | dependencies: 2759 | spdx-correct: 3.1.1 2760 | spdx-expression-parse: 3.0.1 2761 | dev: true 2762 | 2763 | /vite/2.7.13: 2764 | resolution: {integrity: sha512-Mq8et7f3aK0SgSxjDNfOAimZGW9XryfHRa/uV0jseQSilg+KhYDSoNb9h1rknOy6SuMkvNDLKCYAYYUMCE+IgQ==} 2765 | engines: {node: '>=12.2.0'} 2766 | hasBin: true 2767 | peerDependencies: 2768 | less: '*' 2769 | sass: '*' 2770 | stylus: '*' 2771 | peerDependenciesMeta: 2772 | less: 2773 | optional: true 2774 | sass: 2775 | optional: true 2776 | stylus: 2777 | optional: true 2778 | dependencies: 2779 | esbuild: 0.13.15 2780 | postcss: 8.4.5 2781 | resolve: 1.22.0 2782 | rollup: 2.66.0 2783 | optionalDependencies: 2784 | fsevents: 2.3.2 2785 | dev: true 2786 | 2787 | /vitest/0.2.5_@vitest+ui@0.2.5+jsdom@19.0.0: 2788 | resolution: {integrity: sha512-QruEhsNxy8ycLxYG9rrGUfHZzJ8A6YvA9ULZ4w/ecvm0Zejm1nxUar/XkRWkL2xzrqA5AjmfqDSQZ8q2bFbA0Q==} 2789 | engines: {node: '>=14.14.0'} 2790 | hasBin: true 2791 | peerDependencies: 2792 | '@vitest/ui': '*' 2793 | c8: '*' 2794 | happy-dom: '*' 2795 | jsdom: '*' 2796 | peerDependenciesMeta: 2797 | '@vitest/ui': 2798 | optional: true 2799 | c8: 2800 | optional: true 2801 | happy-dom: 2802 | optional: true 2803 | jsdom: 2804 | optional: true 2805 | dependencies: 2806 | '@types/chai': 4.3.0 2807 | '@types/chai-subset': 1.3.3 2808 | '@vitest/ui': 0.2.5 2809 | chai: 4.3.6 2810 | jsdom: 19.0.0 2811 | local-pkg: 0.4.1 2812 | tinypool: 0.1.1 2813 | tinyspy: 0.2.10 2814 | vite: 2.7.13 2815 | transitivePeerDependencies: 2816 | - less 2817 | - sass 2818 | - stylus 2819 | dev: true 2820 | 2821 | /w3c-hr-time/1.0.2: 2822 | resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} 2823 | dependencies: 2824 | browser-process-hrtime: 1.0.0 2825 | dev: true 2826 | 2827 | /w3c-xmlserializer/3.0.0: 2828 | resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==} 2829 | engines: {node: '>=12'} 2830 | dependencies: 2831 | xml-name-validator: 4.0.0 2832 | dev: true 2833 | 2834 | /wcwidth/1.0.1: 2835 | resolution: {integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=} 2836 | dependencies: 2837 | defaults: 1.0.3 2838 | dev: true 2839 | 2840 | /webidl-conversions/7.0.0: 2841 | resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} 2842 | engines: {node: '>=12'} 2843 | dev: true 2844 | 2845 | /whatwg-encoding/2.0.0: 2846 | resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} 2847 | engines: {node: '>=12'} 2848 | dependencies: 2849 | iconv-lite: 0.6.3 2850 | dev: true 2851 | 2852 | /whatwg-mimetype/3.0.0: 2853 | resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} 2854 | engines: {node: '>=12'} 2855 | dev: true 2856 | 2857 | /whatwg-url/10.0.0: 2858 | resolution: {integrity: sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==} 2859 | engines: {node: '>=12'} 2860 | dependencies: 2861 | tr46: 3.0.0 2862 | webidl-conversions: 7.0.0 2863 | dev: true 2864 | 2865 | /which-module/2.0.0: 2866 | resolution: {integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=} 2867 | dev: true 2868 | 2869 | /which-pm/2.0.0: 2870 | resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} 2871 | engines: {node: '>=8.15'} 2872 | dependencies: 2873 | load-yaml-file: 0.2.0 2874 | path-exists: 4.0.0 2875 | dev: true 2876 | 2877 | /which/1.3.1: 2878 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} 2879 | hasBin: true 2880 | dependencies: 2881 | isexe: 2.0.0 2882 | dev: true 2883 | 2884 | /which/2.0.2: 2885 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2886 | engines: {node: '>= 8'} 2887 | hasBin: true 2888 | dependencies: 2889 | isexe: 2.0.0 2890 | dev: true 2891 | 2892 | /word-wrap/1.2.3: 2893 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 2894 | engines: {node: '>=0.10.0'} 2895 | dev: true 2896 | 2897 | /wrap-ansi/6.2.0: 2898 | resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} 2899 | engines: {node: '>=8'} 2900 | dependencies: 2901 | ansi-styles: 4.3.0 2902 | string-width: 4.2.3 2903 | strip-ansi: 6.0.1 2904 | dev: true 2905 | 2906 | /wrappy/1.0.2: 2907 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} 2908 | dev: true 2909 | 2910 | /ws/8.4.2: 2911 | resolution: {integrity: sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==} 2912 | engines: {node: '>=10.0.0'} 2913 | peerDependencies: 2914 | bufferutil: ^4.0.1 2915 | utf-8-validate: ^5.0.2 2916 | peerDependenciesMeta: 2917 | bufferutil: 2918 | optional: true 2919 | utf-8-validate: 2920 | optional: true 2921 | dev: true 2922 | 2923 | /xml-name-validator/4.0.0: 2924 | resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} 2925 | engines: {node: '>=12'} 2926 | dev: true 2927 | 2928 | /xmlchars/2.2.0: 2929 | resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} 2930 | dev: true 2931 | 2932 | /y18n/4.0.3: 2933 | resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} 2934 | dev: true 2935 | 2936 | /yallist/2.1.2: 2937 | resolution: {integrity: sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=} 2938 | dev: true 2939 | 2940 | /yargs-parser/18.1.3: 2941 | resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} 2942 | engines: {node: '>=6'} 2943 | dependencies: 2944 | camelcase: 5.3.1 2945 | decamelize: 1.2.0 2946 | dev: true 2947 | 2948 | /yargs/15.4.1: 2949 | resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} 2950 | engines: {node: '>=8'} 2951 | dependencies: 2952 | cliui: 6.0.0 2953 | decamelize: 1.2.0 2954 | find-up: 4.1.0 2955 | get-caller-file: 2.0.5 2956 | require-directory: 2.1.1 2957 | require-main-filename: 2.0.0 2958 | set-blocking: 2.0.0 2959 | string-width: 4.2.3 2960 | which-module: 2.0.0 2961 | y18n: 4.0.3 2962 | yargs-parser: 18.1.3 2963 | dev: true 2964 | 2965 | /yocto-queue/0.1.0: 2966 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2967 | engines: {node: '>=10'} 2968 | dev: true 2969 | -------------------------------------------------------------------------------- /src/components/ThemeToggle.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 9 | 10 | 23 | -------------------------------------------------------------------------------- /src/components/ThemeWrapper.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 123 | 124 | 125 | {@html style} 126 | 127 | 128 | 129 | 130 | 131 | -------------------------------------------------------------------------------- /src/components/presets.js: -------------------------------------------------------------------------------- 1 | export const presets = { 2 | light: { 3 | colors: { 4 | text: '#282230', 5 | background: { 6 | _: '#f1f1f1', 7 | contrast: '#b1b1b1', 8 | }, 9 | primary: '#01796f', 10 | primary_dark: '#016159', 11 | secondary: '#562931', 12 | }, 13 | }, 14 | dark: { 15 | colors: { 16 | text: '#f1f1f1', 17 | background: { 18 | _: '#27323a', 19 | contrast: '#0d1215', 20 | }, 21 | primary: '#01978b', 22 | primary_dark: '#00887c', 23 | secondary: '#fe8690', 24 | }, 25 | }, 26 | forest: { 27 | colors: { 28 | text: '#f9f2cf', 29 | background: { 30 | _: '#3b6c4c', 31 | contrast: '#1d492c', 32 | }, 33 | primary: '#efdc7e', 34 | primary_dark: '#e4d589', 35 | secondary: '#4a875f', 36 | }, 37 | }, 38 | // { 39 | // name: 'forest', 40 | // light: { 41 | // textColor: '#f9f2cf', 42 | // backgroundColor: '#3b6c4c', 43 | // button: { 44 | // primary: { 45 | // backgroundColor: 'var(--theme-colors-primary)', 46 | // color: 'var(--theme-text-color)', 47 | // }, 48 | // }, 49 | // colors: { 50 | // primary: '#51a56e', 51 | // secondary: '#4a875f', 52 | // }, 53 | // }, 54 | // dark: { 55 | // textColor: '#beb9a0', 56 | // backgroundColor: '#1d492c', 57 | // colors: { 58 | // primary: '#316643', 59 | // }, 60 | // }, 61 | // }, 62 | } 63 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | export { default as ThemeWrapper } from './components/ThemeWrapper.svelte' 2 | export { default as ThemeToggle } from './components/ThemeToggle.svelte' 3 | export * from './components/presets.js' 4 | export * from './use.js' 5 | -------------------------------------------------------------------------------- /src/support/css.js: -------------------------------------------------------------------------------- 1 | import { get } from 'svelte/store' 2 | import processConfig from './processConfig' 3 | import { themes as themesStore } from './store' 4 | 5 | /** 6 | * CSS Variable Name 7 | * @typedef {string} CSSVariableName 8 | */ 9 | 10 | /** 11 | * CSS Variable Statement 12 | * @typedef {string} CSSVariableStatement 13 | */ 14 | 15 | /** 16 | * @typedef {object} CreateCSSVariableNameInput 17 | * @property {string} variablePrefix 18 | * @property {string} prop property name 19 | * @property {string} [key] optional prop prefix 20 | * 21 | * Helper to create CSS Variable name string 22 | * @param {CreateCSSVariableNameInput} 23 | * @returns {CSSVariableName} 24 | */ 25 | export function createCSSVariableName({ variablePrefix, prop, key }) { 26 | if (key) return `${variablePrefix}-${key}-${prop}` 27 | else return `${variablePrefix}-${prop}` 28 | } 29 | 30 | /** 31 | * Helper to merge variable name and value to create statement 32 | * @param {CSSVariableName} variableName CSS Variable name 33 | * @param {string} value CSS Variable Value 34 | * @returns {CSSVariableStatement} 35 | */ 36 | export function createCSSVariableStatement(variableName, value) { 37 | return `${variableName}: ${value};` 38 | } 39 | 40 | /** 41 | * @typedef {object} CreateCSSVariableOverrideInput 42 | * @property {CSSVariableName} initialVariableName 43 | * @property {CSSVariableName} themeVariableName 44 | * 45 | * Helper to create variable overrides for themed use 46 | * @param {CreateCSSVariableOverrideInput} 47 | * @returns {string} 48 | */ 49 | export function createCSSVariableOverride({ 50 | initialVariableName, 51 | themeVariableName, 52 | }) { 53 | return `${initialVariableName}: var(${themeVariableName});` 54 | } 55 | 56 | /** 57 | * 58 | * @param {object} config 59 | * @param {Object} options 60 | * @param {string} options.prefix 61 | * @returns {[CSSVariableName, ]} 62 | */ 63 | export function createCSSVariableCollection(config, { prefix } = {}) { 64 | const variablePrefix = prefix ? `--${prefix}` : '-' 65 | const processedConfig = processConfig(config) 66 | const variables = Object.entries(processedConfig).map(([prop, value]) => { 67 | return [createCSSVariableName({ variablePrefix, prop }), value] 68 | }) 69 | return variables 70 | } 71 | 72 | /** 73 | * Create CSS template 74 | * @name createCSSTemplate 75 | * @param {string} prefix - CSS variable prefix 76 | * @param {Object[]} themes - themes array 77 | * @returns {string} CSS template 78 | */ 79 | export function createCSSTemplate(prefix, base = {}) { 80 | const variablePrefix = prefix ? `--${prefix}` : '-' 81 | 82 | const themes = get(themesStore) 83 | 84 | // process and add base config to root content 85 | const processedBaseConfig = processConfig(base) 86 | 87 | const baseCSSVariables = Object.entries(processedBaseConfig).map( 88 | ([prop, value]) => [createCSSVariableName({ variablePrefix, prop }), value] 89 | ) 90 | const rootCSSVariables = [].concat(baseCSSVariables) 91 | const themeCSSContent = [] 92 | 93 | for (let [themeName, themeValues] of Object.entries(themes)) { 94 | const processed = processConfig(themeValues) 95 | 96 | const overrides = [] 97 | for (let [prop, value] of Object.entries(processed)) { 98 | // create and add initial variables 99 | const initialVariableName = createCSSVariableName({ 100 | variablePrefix, 101 | prop, 102 | }) 103 | // do not add initial variable if provided by base 104 | if ( 105 | !rootCSSVariables.some( 106 | ([variableName]) => variableName === initialVariableName 107 | ) 108 | ) { 109 | rootCSSVariables.push([initialVariableName, value]) 110 | } 111 | // add theme vars to root theme array 112 | rootCSSVariables.push([ 113 | createCSSVariableName({ variablePrefix, prop, key: themeName }), 114 | value, 115 | ]) 116 | // add theme-specific overrides of initial variables 117 | overrides.push( 118 | createCSSVariableOverride({ 119 | initialVariableName, 120 | themeVariableName: createCSSVariableName({ 121 | variablePrefix, 122 | prop, 123 | key: themeName, 124 | }), 125 | }) 126 | ) 127 | } 128 | 129 | const themeCSSClassName = prefix ? `${prefix}--${themeName}` : themeName 130 | themeCSSContent.push(` 131 | [data-theme='${themeName}'], 132 | .${themeCSSClassName} { 133 | ${overrides.join('\n\t')} 134 | } 135 | `) 136 | } 137 | // add to root 138 | 139 | const template = ` 140 | 149 | ` 150 | 151 | return template.trim() 152 | } 153 | -------------------------------------------------------------------------------- /src/support/isObject.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Helper function to determine whether input is an Object 3 | * @param {object} obj 4 | * @returns {boolean} 5 | */ 6 | export default function isObject(obj) { 7 | return Object.prototype.toString.call(obj) === '[object Object]' 8 | } 9 | -------------------------------------------------------------------------------- /src/support/processConfig.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Recursively process configuration object from nested to kebab-case 3 | * @name processConfig 4 | * @param {object} obj 5 | * 6 | */ 7 | export default function processConfig(obj) { 8 | const result = {} 9 | 10 | const recurse = (obj, current) => { 11 | for (let prop in obj) { 12 | const value = obj[prop] 13 | const key = (current ? `${current}-${prop}` : prop) 14 | .replace(/-_$/g, '') 15 | // .replace(/([a-z0-9])([A-Z])/g, '$1-$2') 16 | .replace(/([A-Z])([A-Z])(?=[a-z])/g, '$1-$2') 17 | .toLowerCase() 18 | 19 | if (value && typeof value === 'object') { 20 | recurse(value, key) 21 | } else { 22 | result[key] = value 23 | } 24 | } 25 | } 26 | 27 | recurse(obj) 28 | 29 | return result 30 | } 31 | -------------------------------------------------------------------------------- /src/support/store.js: -------------------------------------------------------------------------------- 1 | import { writable } from 'svelte/store' 2 | 3 | export const currentMode = writable() 4 | export const currentThemeName = writable() 5 | export const currentThemeObject = writable() 6 | export const themes = writable() 7 | -------------------------------------------------------------------------------- /src/support/toggle.js: -------------------------------------------------------------------------------- 1 | import { get } from 'svelte/store' 2 | import { currentThemeName, themes as themesStore } from './store' 3 | 4 | /** 5 | * Toggle Theme 6 | */ 7 | export default function toggle() { 8 | let themes = get(themesStore) 9 | currentThemeName.update(current => { 10 | let keys = Object.keys(themes) 11 | return keys.reduce((newCurrent, theme, index, source) => { 12 | if (theme === current) { 13 | if (source[index + 1]) return source[index + 1] 14 | else return source[0] 15 | } 16 | return newCurrent 17 | }, '') 18 | }) 19 | } 20 | -------------------------------------------------------------------------------- /src/use.js: -------------------------------------------------------------------------------- 1 | import { createCSSVariableCollection } from './support/css' 2 | 3 | /** 4 | * @typedef {Object} SvelteActionReturn 5 | * @property {Function} [update] 6 | * @property {Function} [destroy] 7 | */ 8 | 9 | /** 10 | * use:theme 11 | * @param {HTMLElement} node 12 | * @param {Object.} theme 13 | * @returns 14 | */ 15 | export async function theme(node, theme) { 16 | /** 17 | * 18 | * @param {string} name 19 | * @param {string} value 20 | * @returns {void} 21 | */ 22 | function setProperty(name, value) { 23 | if (!node.style && node.document?.documentElement) { 24 | node.document.documentElement.style.setProperty(name, value) 25 | return 26 | } 27 | node.style.setProperty(name, value) 28 | return 29 | } 30 | 31 | function setProperties() { 32 | const variables = createCSSVariableCollection(theme) 33 | for (let [name, value] of variables) { 34 | setProperty(name, value) 35 | } 36 | } 37 | 38 | setProperties() 39 | 40 | return { 41 | update(newTheme) { 42 | theme = newTheme 43 | setProperties() 44 | }, 45 | } 46 | } 47 | 48 | /** 49 | * use:stylesheet 50 | * @param {HTMLElement} node 51 | * @param {Object.} theme 52 | * @returns {SvelteActionReturn} 53 | */ 54 | export async function stylesheet(node, theme) { 55 | const stylesheet = document.createElement('style') 56 | 57 | function setStylesheet() { 58 | const variables = createCSSVariableCollection(theme) 59 | const svelteClass = Array.from(node.classList).find(className => 60 | className.startsWith('s-') 61 | ) 62 | let innerHTML = `${node.localName}${svelteClass ? `.${svelteClass}` : ''}{` 63 | for (let [name, value] of variables) { 64 | innerHTML += `${name}:${value};` 65 | } 66 | innerHTML += '}' 67 | stylesheet.innerHTML = innerHTML 68 | node.prepend(stylesheet) 69 | } 70 | 71 | setStylesheet() 72 | 73 | return { 74 | update(newTheme) { 75 | theme = newTheme 76 | setStylesheet() 77 | }, 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs' 2 | import adapter from '@sveltejs/adapter-static' 3 | 4 | const pkg = JSON.parse( 5 | fs.readFileSync(new URL('./package.json', import.meta.url), 'utf8') 6 | ) 7 | const CONTENT = { 8 | NAME: pkg.name, 9 | VERSION_PACKAGE: pkg.version, 10 | HOMEPAGE: pkg.homepage, 11 | TS: new Date().toLocaleString(), 12 | } 13 | 14 | /** @type {import('@sveltejs/kit').Config} */ 15 | const config = { 16 | preprocess: [ 17 | { 18 | script: ({ content }) => { 19 | let code = content 20 | 21 | Object.entries(CONTENT).map(([key, value]) => { 22 | code = code.replace( 23 | new RegExp('process.env.' + key, 'g'), 24 | JSON.stringify(value) 25 | ) 26 | }) 27 | 28 | return { 29 | code, 30 | } 31 | }, 32 | }, 33 | ], 34 | kit: { 35 | adapter: adapter(), 36 | target: '#svelte', 37 | files: { 38 | assets: 'demo/static', 39 | lib: 'src', 40 | routes: 'demo/routes', 41 | template: 'demo/app.html', 42 | }, 43 | package: {}, 44 | vite: { 45 | server: { 46 | fs: { 47 | allow: ['..'], 48 | }, 49 | }, 50 | }, 51 | }, 52 | } 53 | 54 | export default config 55 | -------------------------------------------------------------------------------- /tests/ThemeToggle.test.js: -------------------------------------------------------------------------------- 1 | import { describe, expect, it } from 'vitest' 2 | import { currentThemeName } from '../src/support/store' 3 | import { presets } from '../src/components/presets' 4 | import ThemeToggle from './ThemeToggle.test.svelte' 5 | 6 | describe(ThemeToggle.name, () => { 7 | const render = (props = {}) => { 8 | const host = document.createElement('div') 9 | host.setAttribute('id', 'host') 10 | document.body.appendChild(host) 11 | const instance = new ThemeToggle({ target: host, props: props }) 12 | return instance 13 | } 14 | 15 | it('should render', () => { 16 | const instance = render() 17 | expect(instance).toBeTruthy() 18 | }) 19 | 20 | it('should update store on toggle', async () => { 21 | const key = 'testing' 22 | const names = Object.keys(presets) 23 | const instance = render({ 24 | themes: presets, 25 | key, 26 | }) 27 | let current 28 | let unsub = currentThemeName.subscribe(value => (current = value)) 29 | const toggleButton = document.querySelector('[data-testid="test-toggle"]') 30 | 31 | expect(current).toEqual(names[0]) 32 | toggleButton.click() 33 | expect(current).toEqual(names[1]) 34 | 35 | return unsub() 36 | }) 37 | }) 38 | -------------------------------------------------------------------------------- /tests/ThemeToggle.test.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/ThemeWrapper.test.js: -------------------------------------------------------------------------------- 1 | import { describe, beforeEach, it, expect, afterAll } from 'vitest' 2 | import ThemeWrapper, { 3 | STORAGE_KEY, 4 | INVALID_THEMES_MESSAGE, 5 | INVALID_PREFIX_MESSAGE, 6 | } from '../src/components/ThemeWrapper.svelte' 7 | import { presets } from '../src/components/presets' 8 | 9 | function _render(Component, props = {}) { 10 | const host = document.createElement('div') 11 | host.setAttribute('id', 'host') 12 | document.body.appendChild(host) 13 | const instance = new Component({ target: host, props }) 14 | return instance 15 | } 16 | 17 | function render(props = {}) { 18 | return _render(ThemeWrapper, props) 19 | } 20 | 21 | function getCSSVariable(name) { 22 | return getComputedStyle(document.documentElement).getPropertyValue(name) 23 | } 24 | 25 | describe(ThemeWrapper.name, () => { 26 | it('should render', () => { 27 | const instance = render() 28 | expect(instance).toBeTruthy() 29 | expect(localStorage.getItem(STORAGE_KEY)).toBeTruthy() 30 | }) 31 | 32 | it('should use custom storage key', () => { 33 | const key = 'my-custom-key' 34 | const instance = render({ key }) 35 | expect(localStorage.getItem(key)).toEqual(Object.keys(presets)[0]) 36 | }) 37 | 38 | it('should disable persistent storage with null key', () => { 39 | const key = null 40 | const instance = render({ key }) 41 | expect(localStorage.getItem(key)).toBeFalsy() 42 | }) 43 | 44 | it('should throw error if supplied with empty themes', () => { 45 | expect(() => render({ themes: {} })).toThrow(INVALID_THEMES_MESSAGE) 46 | }) 47 | 48 | describe('prefix prop', () => { 49 | it('should use custom CSS Variables prefix', () => { 50 | const instance = render({ 51 | prefix: 'custom-theme', 52 | themes: { test: { colors: { primary: 'blue' } } }, 53 | }) 54 | expect(getCSSVariable('--custom-theme-colors-primary')).toBeTruthy() 55 | }) 56 | 57 | it('should not use CSS Variables prefix when prefix is null', () => { 58 | const instance = render({ 59 | prefix: null, 60 | }) 61 | expect(getCSSVariable('--colors-text')).toBeTruthy() 62 | }) 63 | 64 | it('should error prefix is an empty string', () => { 65 | expect(() => render({ prefix: '' })).toThrow(INVALID_PREFIX_MESSAGE) 66 | }) 67 | }) 68 | 69 | it('should accept base styles as initial CSS Variables values', () => { 70 | const base = { 71 | colors: { 72 | primary: 'red', 73 | }, 74 | } 75 | const themes = { 76 | test: { 77 | colors: { 78 | primary: 'blue', 79 | }, 80 | }, 81 | } 82 | const instance = render({ base, themes }) 83 | expect(getCSSVariable('--theme-colors-primary')).not.toEqual('initial') 84 | // expect(getCSSVariable('--theme-colors-primary')).toEqual('red') 85 | }) 86 | 87 | describe('server-side context', () => { 88 | const { window } = global 89 | beforeEach(() => { 90 | delete global.window 91 | }) 92 | afterAll(() => { 93 | global.window = window 94 | }) 95 | it('should render', () => { 96 | const instance = render() 97 | expect(instance).toBeTruthy() 98 | }) 99 | }) 100 | }) 101 | -------------------------------------------------------------------------------- /tests/setup.js: -------------------------------------------------------------------------------- 1 | import { vi, beforeEach } from 'vitest' 2 | 3 | function createLocalStorage() { 4 | let state = {} 5 | 6 | const localStorageMock = { 7 | getItem: vi.fn(x => state[x]), 8 | setItem: vi.fn((x, v) => (state[x] = v)), 9 | removeItem: vi.fn((x, v) => delete state[x]), 10 | clear: vi.fn(() => (state = {})), 11 | } 12 | 13 | Object.defineProperty(window, 'localStorage', { 14 | value: localStorageMock, 15 | }) 16 | } 17 | 18 | function createMatchMedia() { 19 | const matchMediaMock = vi.fn().mockImplementation(query => ({ 20 | matches: false, 21 | media: query, 22 | addEventListener: vi.fn(() => {}), 23 | removeEventListener: vi.fn(() => {}), 24 | dispatchEvent: vi.fn(() => {}), 25 | })) 26 | // jest.fn().mockImplementation(query => ({ 27 | // matches: false, 28 | // media: query, 29 | // onchange: null, 30 | // addListener: jest.fn(), // Deprecated 31 | // removeListener: jest.fn(), // Deprecated 32 | // addEventListener: jest.fn(), 33 | // removeEventListener: jest.fn(), 34 | // dispatchEvent: jest.fn(), 35 | // })), 36 | Object.defineProperty(window, 'matchMedia', { 37 | writable: true, 38 | value: matchMediaMock, 39 | }) 40 | } 41 | 42 | beforeEach(() => { 43 | createLocalStorage() 44 | createMatchMedia() 45 | document.body.innerHTML = '' 46 | document.head.innerHTML = '' 47 | }) 48 | -------------------------------------------------------------------------------- /tests/support.js: -------------------------------------------------------------------------------- 1 | export function render(Component, props = {}) { 2 | const host = document.createElement('div') 3 | host.setAttribute('id', 'host') 4 | document.body.appendChild(host) 5 | const instance = new Component({ target: host, props }) 6 | return instance 7 | } 8 | 9 | export function getByTestId(id) { 10 | return document.querySelector(`[data-testid="${id}"]`) 11 | } 12 | -------------------------------------------------------------------------------- /tests/use.test.js: -------------------------------------------------------------------------------- 1 | import { describe, expect, it } from 'vitest' 2 | import UseThemeComponent from './useTheme.test.svelte' 3 | import UseStylesheetComponent from './useStylesheet.test.svelte' 4 | import { render as _render, getByTestId } from './support.js' 5 | 6 | describe('Theme Action', () => { 7 | function render(props = {}) { 8 | return _render(UseThemeComponent, props) 9 | } 10 | 11 | it('should render', () => { 12 | const instance = render() 13 | expect(instance).toBeTruthy() 14 | }) 15 | 16 | it('should create inline styles', () => { 17 | const myTheme = { 18 | text: 'red', 19 | } 20 | const instance = render({ myTheme }) 21 | const container = getByTestId('container') 22 | expect(container.style).toBeTruthy() 23 | expect(container.style.getPropertyValue('--text')).toBe('red') 24 | }) 25 | 26 | it('should not create stylesheet', () => { 27 | const myTheme = { 28 | text: 'red', 29 | } 30 | const instance = render({ myTheme }) 31 | const container = getByTestId('container') 32 | const firstChildNode = container.childNodes[0] 33 | expect(firstChildNode.localName).not.toEqual('style') 34 | }) 35 | }) 36 | 37 | describe('Stylesheet Action', () => { 38 | function render(props = {}) { 39 | return _render(UseStylesheetComponent, props) 40 | } 41 | 42 | it('should render', () => { 43 | const instance = render() 44 | expect(instance).toBeTruthy() 45 | }) 46 | 47 | it('should not create inline styles', () => { 48 | const myTheme = { 49 | text: 'red', 50 | } 51 | const instance = render({ myTheme }) 52 | const container = getByTestId('container') 53 | expect(container.style).toBeTruthy() 54 | expect(container.style.getPropertyValue('--text')).not.toBe('red') 55 | }) 56 | 57 | it('should create stylesheet', () => { 58 | const myTheme = { 59 | text: 'red', 60 | } 61 | const instance = render({ myTheme }) 62 | const container = getByTestId('container') 63 | const firstChildNode = container.childNodes[0] 64 | expect(firstChildNode.localName).toEqual('style') 65 | }) 66 | }) 67 | -------------------------------------------------------------------------------- /tests/useStylesheet.test.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 |

Hello, World!

10 |
11 | 12 | 17 | -------------------------------------------------------------------------------- /tests/useTheme.test.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 |

Hello, World!

10 |
11 | 12 | 17 | -------------------------------------------------------------------------------- /vitest.config.js: -------------------------------------------------------------------------------- 1 | /// 2 | import { defineConfig } from 'vite' 3 | import { svelte } from '@sveltejs/vite-plugin-svelte' 4 | 5 | export default defineConfig({ 6 | plugins: [svelte({ hot: !process.env.VITEST })], 7 | test: { 8 | environment: 'jsdom', 9 | setupFiles: [new URL('tests/setup.js', import.meta.url).pathname], 10 | }, 11 | }) 12 | --------------------------------------------------------------------------------