├── .eslintrc.yml ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── bug.yml │ ├── config.yml │ └── enhancement.yml ├── dependabot.yml └── workflows │ ├── codeql-analysis.yml │ ├── publish-next.yml │ ├── publish.yml │ └── test.yml ├── .gitignore ├── .prettierignore ├── .prettierrc ├── .vscode └── settings.json ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── generate.ts ├── package-lock.json ├── package.json ├── pnpm-lock.yaml ├── src ├── index.ts └── utils.ts ├── svelte.config.mjs ├── tests ├── assets │ ├── expected │ │ ├── animations │ │ │ ├── case-01.svelte │ │ │ └── case-02.svelte │ │ ├── attributify │ │ │ ├── case-01.svelte │ │ │ ├── case-02.svelte │ │ │ ├── case-03.svelte │ │ │ └── case-04.svelte │ │ ├── classAttribute │ │ │ ├── case-01.svelte │ │ │ ├── case-02.svelte │ │ │ ├── case-03.svelte │ │ │ ├── case-04.svelte │ │ │ ├── case-05.svelte │ │ │ └── case-06.svelte │ │ ├── styleTag │ │ │ ├── case-01.svelte │ │ │ ├── case-02.svelte │ │ │ ├── case-03.svelte │ │ │ └── case-04.svelte │ │ ├── unocss │ │ │ └── case-01.svelte │ │ └── windiExpression │ │ │ ├── case-01.svelte │ │ │ ├── case-02.svelte │ │ │ ├── case-03.svelte │ │ │ ├── case-04.svelte │ │ │ ├── case-05.svelte │ │ │ ├── case-06.svelte │ │ │ └── case-07.svelte │ └── input │ │ ├── animations │ │ ├── case-01.svelte │ │ └── case-02.svelte │ │ ├── attributify │ │ ├── case-01.svelte │ │ ├── case-02.svelte │ │ ├── case-03.svelte │ │ └── case-04.svelte │ │ ├── classAttribute │ │ ├── case-01.svelte │ │ ├── case-02.svelte │ │ ├── case-03.svelte │ │ ├── case-04.svelte │ │ ├── case-05.svelte │ │ └── case-06.svelte │ │ ├── styleTag │ │ ├── case-01.svelte │ │ ├── case-02.svelte │ │ ├── case-03.svelte │ │ └── case-04.svelte │ │ ├── template.svelte │ │ ├── unocss │ │ └── case-01.svelte │ │ └── windiExpression │ │ ├── case-01.svelte │ │ ├── case-02.svelte │ │ ├── case-03.svelte │ │ ├── case-04.svelte │ │ ├── case-05.svelte │ │ ├── case-06.svelte │ │ └── case-07.svelte └── usage.ts └── tsconfig.json /.eslintrc.yml: -------------------------------------------------------------------------------- 1 | env: 2 | browser: false 3 | es2021: true 4 | extends: 5 | - 'eslint:recommended' 6 | - 'plugin:@typescript-eslint/recommended' 7 | parser: '@typescript-eslint/parser' 8 | parserOptions: 9 | ecmaVersion: 12 10 | sourceType: module 11 | plugins: 12 | - '@typescript-eslint' 13 | rules: 14 | indent: 15 | - error 16 | - 2 17 | linebreak-style: 18 | - error 19 | - unix 20 | quotes: 21 | - error 22 | - single 23 | semi: 24 | - error 25 | - never 26 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | example/** -linguist-detectable 2 | site/** -linguist-detectable -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug.yml: -------------------------------------------------------------------------------- 1 | name: "\U0001F41E Bug report" 2 | description: Report an issue 3 | labels: [bug, pending triage] 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: | 8 | Thanks for taking the time to fill out this bug report! 9 | - type: textarea 10 | id: bug-description 11 | attributes: 12 | label: Describe the bug 13 | description: A clear and concise description of what the bug is. If you intend to submit a PR for this issue, tell us. 14 | placeholder: Bug description 15 | validations: 16 | required: true 17 | - type: textarea 18 | id: system-info 19 | attributes: 20 | label: System Info 21 | description: Output of `npx envinfo --console --system --IDEs --binaries --browsers --npmPackages windicss,svelte-windicss-preprocess,svelte` 22 | render: shell 23 | placeholder: System, Binaries, Browsers 24 | validations: 25 | required: true 26 | - type: dropdown 27 | id: package-manager 28 | attributes: 29 | label: Used Package Manager 30 | description: Select the used package manager 31 | options: 32 | - npm 33 | - yarn 34 | - pnpm 35 | validations: 36 | required: true 37 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: Discord Chat 4 | url: https://chat.windicss.org 5 | about: Ask questions and discuss with other Windi CSS users in real time. 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/enhancement.yml: -------------------------------------------------------------------------------- 1 | name: "\U0001F680 New feature proposal" 2 | description: Propose a new feature to be added to Vite 3 | labels: ['enhancement'] 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: | 8 | Thanks for your interest in the project and taking the time to fill out this feature report! 9 | - type: textarea 10 | id: feature-description 11 | attributes: 12 | label: Clear and concise description of the problem 13 | description: 'I want this feature.' 14 | validations: 15 | required: true 16 | - type: textarea 17 | id: suggested-solution 18 | attributes: 19 | label: Suggested solution 20 | description: 'What are your ideas?' 21 | validations: 22 | required: true 23 | - type: textarea 24 | id: additional-context 25 | attributes: 26 | label: Additional context 27 | description: Any other context or screenshots about the feature request here. 28 | - type: checkboxes 29 | id: checkboxes 30 | attributes: 31 | label: Validations 32 | description: Before submitting the issue, please make sure you do the following 33 | options: 34 | - label: Read the [docs](https://windicss.org). 35 | required: true 36 | - label: Check that there isn't already an issue that request the same feature to avoid creating a duplicate. 37 | required: true 38 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | # Enable version updates for npm 4 | - package-ecosystem: 'npm' 5 | # Look for `package.json` and `lock` files in the `root` directory 6 | directory: '/' 7 | # Check the npm registry for updates every day (weekdays) 8 | schedule: 9 | interval: 'daily' 10 | time: '08:30' 11 | # Use Japan Standard Time (UTC +09:00) 12 | timezone: 'Europe/Berlin' 13 | versioning-strategy: 'increase' 14 | labels: 15 | - 'dependencies' 16 | -------------------------------------------------------------------------------- /.github/workflows/codeql-analysis.yml: -------------------------------------------------------------------------------- 1 | # For most projects, this workflow file will not need changing; you simply need 2 | # to commit it to your repository. 3 | # 4 | # You may wish to alter this file to override the set of languages analyzed, 5 | # or to provide custom queries or build logic. 6 | # 7 | # ******** NOTE ******** 8 | # We have attempted to detect the languages in your repository. Please check 9 | # the `language` matrix defined below to confirm you have the correct set of 10 | # supported CodeQL languages. 11 | # 12 | name: 'CodeQL' 13 | 14 | on: 15 | push: 16 | branches: [main] 17 | pull_request: 18 | # The branches below must be a subset of the branches above 19 | branches: [main] 20 | schedule: 21 | - cron: '37 10 * * 1' 22 | 23 | jobs: 24 | analyze: 25 | name: Analyze 26 | runs-on: ubuntu-latest 27 | permissions: 28 | actions: read 29 | contents: read 30 | security-events: write 31 | 32 | strategy: 33 | fail-fast: false 34 | matrix: 35 | language: ['javascript'] 36 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] 37 | # Learn more: 38 | # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed 39 | 40 | steps: 41 | - name: Checkout repository 42 | uses: actions/checkout@v2 43 | 44 | # Initializes the CodeQL tools for scanning. 45 | - name: Initialize CodeQL 46 | uses: github/codeql-action/init@v1 47 | with: 48 | languages: ${{ matrix.language }} 49 | # If you wish to specify custom queries, you can do so here or in a config file. 50 | # By default, queries listed here will override any specified in a config file. 51 | # Prefix the list here with "+" to use these queries and those in the config file. 52 | # queries: ./path/to/local/query, your-org/your-repo/queries@main 53 | 54 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). 55 | # If this step fails, then you should remove it and run the build manually (see below) 56 | - name: Autobuild 57 | uses: github/codeql-action/autobuild@v1 58 | 59 | # ℹ️ Command-line programs to run using the OS shell. 60 | # 📚 https://git.io/JvXDl 61 | 62 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines 63 | # and modify them (or add more) to build your code if your project 64 | # uses a compiled language 65 | 66 | #- run: | 67 | # make bootstrap 68 | # make release 69 | 70 | - name: Perform CodeQL Analysis 71 | uses: github/codeql-action/analyze@v1 72 | -------------------------------------------------------------------------------- /.github/workflows/publish-next.yml: -------------------------------------------------------------------------------- 1 | name: Publish next Package 2 | 3 | on: 4 | push: 5 | tags: 6 | - v*-beta* 7 | - v*-alpha* 8 | - v*-next* 9 | 10 | jobs: 11 | publish-npm: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v1 15 | - uses: actions/setup-node@v1 16 | with: 17 | node-version: 16 18 | registry-url: https://registry.npmjs.org/ 19 | - run: npm install --frozen-lockfile 20 | - run: npm run build:clean 21 | - run: npm run test 22 | - run: npx conventional-github-releaser -p angular 23 | env: 24 | CONVENTIONAL_GITHUB_RELEASER_TOKEN: ${{secrets.GITHUB_TOKEN}} 25 | - run: npm publish --tag next 26 | env: 27 | NODE_AUTH_TOKEN: ${{secrets.NPM_SECRET}} 28 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Publish Package 2 | 3 | on: 4 | push: 5 | tags: 6 | - v[0-9]+.[0-9]+.[0-9]+ 7 | 8 | jobs: 9 | publish-npm: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v2 13 | - uses: actions/setup-node@v2 14 | with: 15 | node-version: 16 16 | registry-url: https://registry.npmjs.org/ 17 | - run: npm install 18 | - run: npm run build:clean 19 | - run: npm run test 20 | - run: npx conventional-github-releaser -p angular 21 | env: 22 | CONVENTIONAL_GITHUB_RELEASER_TOKEN: ${{secrets.GITHUB_TOKEN}} 23 | - run: npm publish --tag latest 24 | env: 25 | NODE_AUTH_TOKEN: ${{secrets.NPM_SECRET}} 26 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions 3 | 4 | name: Test 5 | 6 | on: [push, pull_request] 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | 12 | strategy: 13 | matrix: 14 | node-version: [16, 17] 15 | 16 | steps: 17 | - uses: actions/checkout@v2 18 | - name: Use Node.js ${{ matrix.node-version }} 19 | uses: actions/setup-node@v2 20 | with: 21 | node-version: ${{ matrix.node-version }} 22 | - name: Install dependencies 23 | run: npm install 24 | - name: Run tests 25 | run: npm run test 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ 2 | /public/build/ 3 | 4 | /src/**/*.js 5 | /src/**/*.d.ts 6 | 7 | .DS_Store 8 | /dist/ -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | tests/assets/expected/**/*.svelte -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "arrowParens": "avoid", 3 | "bracketSpacing": true, 4 | "printWidth": 80, 5 | "semi": false, 6 | "singleQuote": true, 7 | "tabWidth": 2, 8 | "useTabs": false, 9 | "proseWrap": "never", 10 | "svelteIndentScriptAndStyle": false 11 | } 12 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "standard.enable": false, 3 | "typescript.format.enable": false, 4 | "svelte.plugin.svelte.format.enable": false 5 | } 6 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## [v4.2.3](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.2.2...v4.2.3) (2021-12-05) 4 | 5 | ### Fix 6 | 7 | * :bug: reimplement config loader 8 | 9 | 10 | 11 | ## [v4.2.2](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.2.1...v4.2.2) (2021-12-05) 12 | 13 | ### Fix 14 | 15 | * :bug: add attributes backwards compatibility 16 | 17 | 18 | 19 | ## [v4.2.1](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.2.0...v4.2.1) (2021-12-05) 20 | 21 | ### Ci 22 | 23 | * :green_heart: bump node version 24 | 25 | 26 | 27 | ## [v4.2.0](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.1.7...v4.2.0) (2021-12-05) 28 | 29 | ### Chore 30 | 31 | * :arrow_up: bump deps 32 | * :heavy_minus_sign: remove unused deps 33 | * :arrow_up: bump deps 34 | 35 | ### Feat 36 | 37 | * :boom: support experimental scan 38 | 39 | ### Fix 40 | 41 | * `@keyframes` missing in css 42 | * :bug: filename could be `undefined` 43 | 44 | ### Style 45 | 46 | * :rotating_light: lint 47 | * :lipstick: change printWidth in codeStyle 48 | 49 | ### Test 50 | 51 | * :white_check_mark: update test for new logic 52 | 53 | ### Tests 54 | 55 | * add animation tests 56 | 57 | 58 | 59 | ## [v4.1.7](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.1.6...v4.1.7) (2021-11-17) 60 | 61 | ### Chore 62 | 63 | * :art: optimise imports 64 | * :building_construction: improvements 65 | * :arrow_up: bump deps 66 | * :heavy_plus_sign: add dev deps 67 | 68 | ### Fix 69 | 70 | * :label: fix eslint warnings 71 | 72 | ### Refactor 73 | 74 | * :recycle: icon safelist 75 | 76 | 77 | 78 | ## [v4.1.6](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.1.6-beta.2...v4.1.6) (2021-11-10) 79 | 80 | ### Chore 81 | 82 | * :arrow_up: bump deps 83 | 84 | ### Fix 85 | 86 | * :bug: devTools not working 87 | 88 | ### Test 89 | 90 | * :white_check_mark: fixes project 91 | 92 | 93 | 94 | ## [v4.1.6-beta.2](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.1.6-beta.1...v4.1.6-beta.2) (2021-11-03) 95 | 96 | 97 | 98 | ## [v4.1.6-beta.1](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.1.5...v4.1.6-beta.1) (2021-11-01) 99 | 100 | ### Fix 101 | 102 | * :building_construction: remove unocss from bundle 103 | 104 | 105 | 106 | ## [v4.1.5](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.1.5-beta.1...v4.1.5) (2021-11-01) 107 | 108 | ### Chore 109 | 110 | * :arrow_up: bump deps 111 | 112 | ### Feat 113 | 114 | * :sparkles: add support for custom icons 115 | 116 | 117 | 118 | ## [v4.1.5-beta.1](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.1.4...v4.1.5-beta.1) (2021-10-31) 119 | 120 | ### Chore 121 | 122 | * :arrow_up: bump deps 123 | * :recycle: move repo to pnpm 124 | 125 | ### Feat 126 | 127 | * :alembic: add experimental support for config HMR 128 | 129 | 130 | 131 | ## [v4.1.4](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.1.3...v4.1.4) (2021-10-31) 132 | 133 | ### Fix 134 | 135 | * :bug: unocss styles overwrite each-other 136 | 137 | 138 | 139 | ## [v4.1.3](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.1.2...v4.1.3) (2021-10-31) 140 | 141 | ### Fix 142 | 143 | * :bug: unocss does not check safelist 144 | 145 | 146 | 147 | ## [v4.1.2](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.1.1...v4.1.2) (2021-10-31) 148 | 149 | ### Chore 150 | 151 | * :arrow_up: bump deps 152 | 153 | ### Feat 154 | 155 | * :sparkles: add unocss pure css icons 156 | 157 | ### Test 158 | 159 | * :white_check_mark: add unocss pure css icons test 160 | 161 | 162 | 163 | ## [v4.1.1](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.1.0...v4.1.1) (2021-10-26) 164 | 165 | ### Chore 166 | 167 | * :arrow_up: bump deps 168 | * :mute: cleanup 169 | 170 | ### Fix 171 | 172 | * :bug: multiline css selector not working 173 | 174 | ### Test 175 | 176 | * :white_check_mark: add multiline css selector tests 177 | 178 | 179 | 180 | ## [v4.1.0](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.1.0-beta.3...v4.1.0) (2021-10-22) 181 | 182 | ### Chore 183 | 184 | * :arrow_down: fix esbuild 185 | * :arrow_up: bump deps 186 | * :arrow_up: bump deps ([#266](https://github.com/windicss/svelte-windicss-preprocess/issues/266)) 187 | 188 | ### Ci 189 | 190 | * :green_heart: try to fix publish script 191 | 192 | ### Fix 193 | 194 | * :test_tube: test install script 195 | 196 | ### Test 197 | 198 | * :test_tube: update github action 199 | 200 | 201 | 202 | ## [v4.1.0-beta.3](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.1.0-beta.2...v4.1.0-beta.3) (2021-09-28) 203 | 204 | 205 | 206 | ## [v4.1.0-beta.2](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.1.0-beta.1...v4.1.0-beta.2) (2021-08-09) 207 | 208 | ### Chore 209 | 210 | * :arrow_up: bump deps 211 | * :arrow_up: bump deps 212 | * :arrow_up: bump deps 213 | 214 | ### Fix 215 | 216 | * :bug: partial `:global()` css selector get removed & wrong order [#208](https://github.com/windicss/svelte-windicss-preprocess/issues/208) 217 | 218 | ### Refactor 219 | 220 | * :recycle: ignore `xmlns` in attributify 221 | 222 | ### Test 223 | 224 | * :white_check_mark: add test case [#208](https://github.com/windicss/svelte-windicss-preprocess/issues/208) 225 | 226 | 227 | 228 | ## [v4.1.0-beta.1](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.12...v4.1.0-beta.1) (2021-08-04) 229 | 230 | ### Ci 231 | 232 | * :construction_worker: remove outdated nodejs version 233 | 234 | ### Fix 235 | 236 | * require.resolve is not a function 237 | 238 | ### Refactor 239 | 240 | * :recycle: change to full file parser 241 | 242 | ### Revert 243 | 244 | * require.resolve 245 | 246 | ### Style 247 | 248 | * :rotating_light: lint 249 | * :wrench: update code style rules 250 | 251 | ### Test 252 | 253 | * :white_check_mark: adapt tests 254 | 255 | 256 | 257 | ## [v4.0.12](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.11...v4.0.12) (2021-07-07) 258 | 259 | ### Chore 260 | 261 | * add enhancement form 262 | * add issue form 263 | 264 | ### Fix 265 | 266 | * devtools breaks without windi config 267 | * issue form 268 | 269 | ### Test 270 | 271 | * add loop to include all tests 272 | 273 | 274 | 275 | ## [v4.0.11](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.10...v4.0.11) (2021-06-22) 276 | 277 | ### Fix 278 | 279 | * inline expression 280 | 281 | 282 | 283 | ## [v4.0.10](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.9...v4.0.10) (2021-06-17) 284 | 285 | ### Chore 286 | 287 | * bump deps 288 | 289 | 290 | 291 | ## [v4.0.9](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.8...v4.0.9) (2021-06-17) 292 | 293 | ### Chore 294 | 295 | * remove deprecated logging 296 | 297 | ### Feat 298 | 299 | * add new metrics solution 300 | * move devtools to script preprocessor 301 | * add default export 302 | 303 | ### Fix 304 | 305 | * parallel file loader 306 | * duplicate load of config file 307 | 308 | ### Style 309 | 310 | * improve comments 311 | * fix interface name 312 | 313 | 314 | 315 | ## [v4.0.8](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.7...v4.0.8) (2021-06-04) 316 | 317 | ### Chore 318 | 319 | * bump deps 320 | 321 | 322 | 323 | ## [v4.0.7](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.6...v4.0.7) (2021-05-28) 324 | 325 | ### Fix 326 | 327 | * dropped css for parallel bundlers 328 | 329 | 330 | 331 | ## [v4.0.6](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.5...v4.0.6) (2021-05-26) 332 | 333 | ### Chore 334 | 335 | * cleanup 336 | * :arrow_up: bump deps 337 | 338 | ### Ci 339 | 340 | * add test to release script 341 | 342 | ### Feat 343 | 344 | * :label: improve types 345 | 346 | ### Fix 347 | 348 | * run after config loaded 349 | 350 | ### Style 351 | 352 | * remove comments 353 | 354 | 355 | 356 | ## [v4.0.5](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.4...v4.0.5) (2021-05-25) 357 | 358 | ### Chore 359 | 360 | * bump deps 361 | * cleanup 362 | * remove unused deps 363 | * add contributer to package.json 364 | * remove comment 365 | 366 | ### Ci 367 | 368 | * slow cron of codeql 369 | * add codeql 370 | 371 | ### Fix 372 | 373 | * async promise executor 374 | 375 | ### Refactor 376 | 377 | * optimize complexity 378 | 379 | ### Style 380 | 381 | * more lint 382 | 383 | ### Test 384 | 385 | * prepare more tests 386 | 387 | 388 | 389 | ## [v4.0.4](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.3...v4.0.4) (2021-05-23) 390 | 391 | ### Chore 392 | 393 | * remove outdated test 394 | * update license 395 | * remove depreacated test config 396 | * bump deps 397 | 398 | ### Ci 399 | 400 | * add more test versions 401 | * fix test action 402 | 403 | ### Feat 404 | 405 | * add windi template literal 406 | * add preflight windi config 407 | * add safelist support 408 | * add linter 409 | 410 | ### Fix 411 | 412 | * mulitple new lines 413 | * minor format issues 414 | 415 | ### Style 416 | 417 | * eslint 418 | * add missing \n 419 | * fix style 420 | 421 | ### Test 422 | 423 | * add windiExpression 424 | * add generate script 425 | * add preflights 426 | * more inline function 427 | * use src instead of dist 428 | * add class attribute tests 429 | 430 | 431 | 432 | ## [v4.0.3](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.2...v4.0.3) (2021-05-17) 433 | 434 | ### Fix 435 | 436 | * global & scoped styles combined 437 | 438 | 439 | 440 | ## [v4.0.2](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.1...v4.0.2) (2021-05-13) 441 | 442 | ### Chore 443 | 444 | * remove duplicate ci action 445 | 446 | ### Ci 447 | 448 | * fix publish action 449 | 450 | 451 | 452 | ## [v4.0.1](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.0...v4.0.1) (2021-05-13) 453 | 454 | ### Ci 455 | 456 | * fix ci action 457 | 458 | 459 | 460 | ## [v4.0.0](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.0-beta.17...v4.0.0) (2021-05-13) 461 | 462 | ### Chore 463 | 464 | * bump version 465 | 466 | ### Ci 467 | 468 | * latest 469 | * sematic release tag 470 | * fix trigger event 471 | * add publish for next version 472 | * fix gh page deploy 473 | * fix pre release tags 474 | 475 | ### Fix 476 | 477 | * playground 478 | * playground 479 | * try global preflights 480 | 481 | 482 | 483 | ## [v4.0.0-beta.17](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.0-beta.16...v4.0.0-beta.17) (2021-05-13) 484 | 485 | ### Fix 486 | 487 | * pluginOptions 488 | 489 | 490 | 491 | ## [v4.0.0-beta.16](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.0-beta.15...v4.0.0-beta.16) (2021-05-13) 492 | 493 | ### Chore 494 | 495 | * bump deps 496 | 497 | ### Fix 498 | 499 | * generate all preflights 500 | 501 | 502 | 503 | ## [v4.0.0-beta.15](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.0-beta.14...v4.0.0-beta.15) (2021-05-12) 504 | 505 | ### Chore 506 | 507 | * some comments 508 | 509 | ### Feat 510 | 511 | * add safelist 512 | 513 | ### Fix 514 | 515 | * remove old code 516 | 517 | 518 | 519 | ## [v4.0.0-beta.14](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.0-beta.13...v4.0.0-beta.14) (2021-05-12) 520 | 521 | ### Chore 522 | 523 | * marks 524 | * cleanup 525 | * drop gh pages 526 | * update readme 527 | * drop old test 528 | * drop playground 529 | * :fire: drop example 530 | 531 | ### Fix 532 | 533 | * bugs 534 | 535 | ### Refactor 536 | 537 | * :boom: refactor: use style pre-processor 538 | 539 | 540 | 541 | ## [v4.0.0-beta.13](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.0-beta.12...v4.0.0-beta.13) (2021-05-12) 542 | 543 | ### Fix 544 | 545 | * new processor after config loaded 546 | 547 | 548 | 549 | ## [v4.0.0-beta.12](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.0-beta.11...v4.0.0-beta.12) (2021-05-12) 550 | 551 | ### Chore 552 | 553 | * bump deps 554 | 555 | ### Revert 556 | 557 | * use always global 558 | 559 | ### Style 560 | 561 | * logging 562 | 563 | 564 | 565 | ## [v4.0.0-beta.11](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.0-beta.10...v4.0.0-beta.11) (2021-05-11) 566 | 567 | ### Docs 568 | 569 | * clean 570 | 571 | ### Fix 572 | 573 | * downstream fix for playground 574 | 575 | ### Refactor 576 | 577 | * performance metrics 578 | 579 | ### Test 580 | 581 | * remove old test files 582 | 583 | 584 | 585 | ## [v4.0.0-beta.10](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.0-beta.9...v4.0.0-beta.10) (2021-05-03) 586 | 587 | ### Chore 588 | 589 | * pin deps 590 | 591 | ### Feat 592 | 593 | * devTools 594 | 595 | ### Fix 596 | 597 | * external deps 598 | 599 | ### Perf 600 | 601 | * debug timings 602 | * debug timings 603 | 604 | ### Refactor 605 | 606 | * type definition 607 | * organize imports 608 | * config loader 609 | 610 | 611 | 612 | ## [v4.0.0-beta.9](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.0-beta.8...v4.0.0-beta.9) (2021-04-29) 613 | 614 | 615 | 616 | ## [v4.0.0-beta.8](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.5.3...v4.0.0-beta.8) (2021-04-29) 617 | 618 | ### Chore 619 | 620 | * deprecate finally outdated examples 621 | * style & config 622 | * update libs 623 | 624 | ### Ci 625 | 626 | * test everywhere 627 | * publish script 628 | * semantic 629 | * fixes 630 | * main branch changes 631 | 632 | ### Feat 633 | 634 | * support modern ES functions 635 | 636 | ### Fix 637 | 638 | * new line at end 639 | * kit preflights 640 | 641 | ### Test 642 | 643 | * add input cases by [@TedMetah](https://github.com/TedMetah) ([#119](https://github.com/windicss/svelte-windicss-preprocess/issues/119)) 644 | * git bug 645 | * fix new lib 646 | 647 | ### Wip 648 | 649 | * prepare class handler 650 | * prepare magician 651 | 652 | 653 | 654 | ## [v3.5.3](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.5.2...v3.5.3) (2021-04-17) 655 | 656 | ### Fix 657 | 658 | * try global preflights 659 | 660 | 661 | 662 | ## [v3.5.2](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.0-beta.7...v3.5.2) (2021-04-13) 663 | 664 | ### Ci 665 | 666 | * latest 667 | * sematic release tag 668 | * fix trigger event 669 | * add publish for next version 670 | * fix gh page deploy 671 | * fix pre release tags 672 | 673 | 674 | 675 | ## [v4.0.0-beta.7](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.0-beta.6...v4.0.0-beta.7) (2021-04-13) 676 | 677 | ### Ci 678 | 679 | * publish script 680 | 681 | 682 | 683 | ## [v4.0.0-beta.6](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.0-beta.5...v4.0.0-beta.6) (2021-04-13) 684 | 685 | ### Test 686 | 687 | * git bug 688 | 689 | 690 | 691 | ## [v4.0.0-beta.5](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.0-beta.4...v4.0.0-beta.5) (2021-04-13) 692 | 693 | ### Ci 694 | 695 | * semantic 696 | 697 | ### Test 698 | 699 | * fix new lib 700 | 701 | 702 | 703 | ## [v4.0.0-beta.4](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.0-beta.3...v4.0.0-beta.4) (2021-04-13) 704 | 705 | ### Ci 706 | 707 | * fixes 708 | 709 | 710 | 711 | ## [v4.0.0-beta.3](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.0-beta.2...v4.0.0-beta.3) (2021-04-13) 712 | 713 | ### Ci 714 | 715 | * main branch changes 716 | 717 | 718 | 719 | ## [v4.0.0-beta.2](https://github.com/windicss/svelte-windicss-preprocess/compare/v4.0.0-beta.1...v4.0.0-beta.2) (2021-04-13) 720 | 721 | ### Chore 722 | 723 | * update libs 724 | 725 | 726 | 727 | ## [v4.0.0-beta.1](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.5.1...v4.0.0-beta.1) (2021-04-13) 728 | 729 | 730 | 731 | ## [v3.5.1](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.5.0...v3.5.1) (2021-04-13) 732 | 733 | ### Chore 734 | 735 | * more debug 736 | 737 | ### Revert 738 | 739 | * inline expression regex 740 | 741 | 742 | 743 | ## [v3.5.0](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.4.1...v3.5.0) (2021-04-13) 744 | 745 | ### Build 746 | 747 | * bundle chalk 748 | 749 | ### Chore 750 | 751 | * update gitignore 752 | 753 | ### Fix 754 | 755 | * inline expression 756 | * types location 757 | 758 | 759 | 760 | ## [v3.4.1](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.4.0...v3.4.1) (2021-04-12) 761 | 762 | ### Chore 763 | 764 | * updates 765 | 766 | ### Fix 767 | 768 | * debug option check close# 114 ([#115](https://github.com/windicss/svelte-windicss-preprocess/issues/115)) 769 | 770 | 771 | 772 | ## [v3.4.0](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.3.2...v3.4.0) (2021-04-10) 773 | 774 | ### Chore 775 | 776 | * bump version 777 | 778 | ### Feat 779 | 780 | * add async configLoader to support mjs and cjs ([#109](https://github.com/windicss/svelte-windicss-preprocess/issues/109)) 781 | 782 | 783 | 784 | ## [v3.3.2](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.3.1...v3.3.2) (2021-04-10) 785 | 786 | ### Fix 787 | 788 | * custom option priority 789 | 790 | 791 | 792 | ## [v3.3.1](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.3.0...v3.3.1) (2021-04-09) 793 | 794 | ### Fix 795 | 796 | * enhance kit support 797 | 798 | 799 | 800 | ## [v3.3.0](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.2.1...v3.3.0) (2021-04-05) 801 | 802 | ### Feat 803 | 804 | * drop browser target 805 | * add plugin-utils config loader 806 | 807 | ### Fix 808 | 809 | * keyframes do not need ":global" surroundings ([#100](https://github.com/windicss/svelte-windicss-preprocess/issues/100)) 810 | 811 | 812 | 813 | ## [v3.2.1](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.2.0...v3.2.1) (2021-04-03) 814 | 815 | ### Docs 816 | 817 | * update readme 818 | 819 | ### Fix 820 | 821 | * support ES modules 822 | 823 | 824 | 825 | ## [v3.2.0](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.1.5...v3.2.0) (2021-04-03) 826 | 827 | ### Chore 828 | 829 | * add dev marks 830 | 831 | ### Ci 832 | 833 | * fix npm scripts 834 | 835 | ### Feat 836 | 837 | * support svelte-kit 838 | 839 | 840 | 841 | ## [v3.1.5](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.1.4...v3.1.5) (2021-03-29) 842 | 843 | ### Fix 844 | 845 | * image height on svelte repl ([#84](https://github.com/windicss/svelte-windicss-preprocess/issues/84)) 846 | 847 | 848 | 849 | ## [v3.1.4](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.1.3...v3.1.4) (2021-03-27) 850 | 851 | ### Fix 852 | 853 | * windi attributes using unique identifier 854 | 855 | 856 | 857 | ## [v3.1.3](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.1.2...v3.1.3) (2021-03-26) 858 | 859 | ### Chore 860 | 861 | * dump packages 862 | 863 | ### Docs 864 | 865 | * cross link for svelte-kit 866 | 867 | ### Fix 868 | 869 | * inline expression parser 870 | 871 | 872 | 873 | ## [v3.1.2](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.1.1...v3.1.2) (2021-03-25) 874 | 875 | ### Chore 876 | 877 | * update example config 878 | * fix port of example 879 | 880 | ### Docs 881 | 882 | * adapt to new logic 883 | 884 | ### Feat 885 | 886 | * offline design-in-devtools support 887 | 888 | ### Fix 889 | 890 | * workaround of windiconfig issue 891 | 892 | ### Refactor 893 | 894 | * script regex 895 | * allow offline use of devTools 896 | 897 | 898 | 899 | ## [v3.1.1](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.1.0...v3.1.1) (2021-03-23) 900 | 901 | ### Chore 902 | 903 | * bump package version 904 | 905 | 906 | 907 | ## [v3.1.0](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.2...v3.1.0) (2021-03-23) 908 | 909 | ### Chore 910 | 911 | * add lib 912 | 913 | ### Ci 914 | 915 | * change dependabot strategy 916 | 917 | ### Feat 918 | 919 | * wip dev-in-devtools 920 | * add css class auto-completion devTools 921 | 922 | ### Fix 923 | 924 | * directive class interpretation 925 | 926 | ### Refactor 927 | 928 | * design-in-devtools windicss-runtime-dom 929 | 930 | 931 | 932 | ## [v3.0.2](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.1...v3.0.2) (2021-03-18) 933 | 934 | ### Fix 935 | 936 | * regex convert 937 | 938 | 939 | 940 | ## [v3.0.1](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0...v3.0.1) (2021-03-18) 941 | 942 | ### Docs 943 | 944 | * update 945 | * remove broken link 946 | * add temporary docs 947 | * update readme 948 | 949 | ### Fix 950 | 951 | * workaround for rollup build bug 952 | 953 | ### Refactor 954 | 955 | * remove kit examples since change to vite 956 | 957 | 958 | 959 | ## [v3.0.0](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.23...v3.0.0) (2021-03-18) 960 | 961 | ### Docs 962 | 963 | * refactor docs for v3 964 | 965 | ### Fix 966 | 967 | * global style tag 968 | 969 | 970 | 971 | ## [v3.0.0-beta.23](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.22...v3.0.0-beta.23) (2021-03-18) 972 | 973 | ### Fix 974 | 975 | * scripts 976 | 977 | 978 | 979 | ## [v3.0.0-beta.22](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.21...v3.0.0-beta.22) (2021-03-18) 980 | 981 | ### Fix 982 | 983 | * npm scripts 984 | 985 | 986 | 987 | ## [v3.0.0-beta.21](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.20...v3.0.0-beta.21) (2021-03-18) 988 | 989 | ### Fix 990 | 991 | * github actions 992 | 993 | 994 | 995 | ## [v3.0.0-beta.20](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.19...v3.0.0-beta.20) (2021-03-18) 996 | 997 | ### Chore 998 | 999 | * bump package versions 1000 | * upate action to npm 1001 | * changed back to npm 1002 | 1003 | ### Ci 1004 | 1005 | * add dependabot 1006 | 1007 | ### Refactor 1008 | 1009 | * improved format logic 1010 | * remove debug code 1011 | * remove outdated code 1012 | * remove debug code 1013 | * remove outdated code 1014 | 1015 | 1016 | 1017 | ## [v3.0.0-beta.19](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.18...v3.0.0-beta.19) (2021-03-18) 1018 | 1019 | ### Fix 1020 | 1021 | * formatting 1022 | 1023 | 1024 | 1025 | ## [v3.0.0-beta.18](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.17...v3.0.0-beta.18) (2021-03-17) 1026 | 1027 | ### Revert 1028 | 1029 | * revert formatting 1030 | 1031 | 1032 | 1033 | ## [v3.0.0-beta.17](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.16...v3.0.0-beta.17) (2021-03-17) 1034 | 1035 | ### Fix 1036 | 1037 | * support single line comment 1038 | 1039 | ### Refactor 1040 | 1041 | * change included variants 1042 | * remove outdated code 1043 | 1044 | ### Style 1045 | 1046 | * unused vars 1047 | 1048 | 1049 | 1050 | ## [v3.0.0-beta.16](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.15...v3.0.0-beta.16) (2021-03-16) 1051 | 1052 | ### Test 1053 | 1054 | * refactor test 1055 | 1056 | 1057 | 1058 | ## [v3.0.0-beta.15](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.14...v3.0.0-beta.15) (2021-03-16) 1059 | 1060 | ### Fix 1061 | 1062 | * variant in directive class 1063 | 1064 | 1065 | 1066 | ## [v3.0.0-beta.14](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.13...v3.0.0-beta.14) (2021-03-16) 1067 | 1068 | ### Feat 1069 | 1070 | * support directive class 1071 | 1072 | ### Fix 1073 | 1074 | * suggested svelte format 1075 | 1076 | 1077 | 1078 | ## [v3.0.0-beta.13](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.12...v3.0.0-beta.13) (2021-03-16) 1079 | 1080 | ### Fix 1081 | 1082 | * linter 1083 | 1084 | 1085 | 1086 | ## [v3.0.0-beta.12](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.11...v3.0.0-beta.12) (2021-03-16) 1087 | 1088 | ### Chore 1089 | 1090 | * comments 1091 | * bump packages to new version 1092 | 1093 | ### Feat 1094 | 1095 | * support windi template string 1096 | 1097 | 1098 | 1099 | ## [v3.0.0-beta.11](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.10...v3.0.0-beta.11) (2021-03-16) 1100 | 1101 | ### Fix 1102 | 1103 | * regex global style tag 1104 | 1105 | 1106 | 1107 | ## [v3.0.0-beta.10](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.9...v3.0.0-beta.10) (2021-03-15) 1108 | 1109 | ### Chore 1110 | 1111 | * add more debug logging 1112 | 1113 | ### Fix 1114 | 1115 | * fix verbosity option 1116 | * internal expression regex ([#66](https://github.com/windicss/svelte-windicss-preprocess/issues/66)) 1117 | 1118 | ### Refactor 1119 | 1120 | * fixes various bugs 1121 | * adapt example 1122 | 1123 | 1124 | 1125 | ## [v3.0.0-beta.9](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.8...v3.0.0-beta.9) (2021-03-11) 1126 | 1127 | ### Chore 1128 | 1129 | * debugs 1130 | * bump packages 1131 | 1132 | ### Feat 1133 | 1134 | * no duplicate base styles in production 1135 | * add option for mode 1136 | * add check for main file 1137 | * add debug logging 1138 | 1139 | ### Fix 1140 | 1141 | * fix log and test 1142 | * delete outdated logging 1143 | * logging issue 1144 | * className breaks 1145 | 1146 | ### Refactor 1147 | 1148 | * debug example 1149 | * deprecated old options 1150 | 1151 | ### Style 1152 | 1153 | * formatting 1154 | 1155 | ### Test 1156 | 1157 | * fix test 1158 | 1159 | 1160 | 1161 | ## [v3.0.0-beta.8](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.7...v3.0.0-beta.8) (2021-03-09) 1162 | 1163 | ### Fix 1164 | 1165 | * add missing variant modifier 1166 | 1167 | 1168 | 1169 | ## [v3.0.0-beta.7](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.6...v3.0.0-beta.7) (2021-03-09) 1170 | 1171 | ### Fix 1172 | 1173 | * class directive break 1174 | 1175 | 1176 | 1177 | ## [v3.0.0-beta.6](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.5...v3.0.0-beta.6) (2021-03-09) 1178 | 1179 | ### Chore 1180 | 1181 | * fix missing lib 1182 | 1183 | 1184 | 1185 | ## [v3.0.0-beta.5](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.4...v3.0.0-beta.5) (2021-03-09) 1186 | 1187 | ### Refactor 1188 | 1189 | * WIP html validation 1190 | * change html validation 1191 | 1192 | 1193 | 1194 | ## [v3.0.0-beta.4](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.3...v3.0.0-beta.4) (2021-03-09) 1195 | 1196 | ### Docs 1197 | 1198 | * add docs for inline expression 1199 | 1200 | ### Refactor 1201 | 1202 | * new html style 1203 | 1204 | ### Test 1205 | 1206 | * adapted tests 1207 | 1208 | 1209 | 1210 | ## [v3.0.0-beta.3](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.2...v3.0.0-beta.3) (2021-03-08) 1211 | 1212 | ### Fix 1213 | 1214 | * fix browser version 1215 | 1216 | 1217 | 1218 | ## [v3.0.0-beta.2](https://github.com/windicss/svelte-windicss-preprocess/compare/v3.0.0-beta.1...v3.0.0-beta.2) (2021-03-08) 1219 | 1220 | ### Chore 1221 | 1222 | * bump windicss 1223 | * update packages 1224 | 1225 | ### Docs 1226 | 1227 | * update docs with experimental parser 1228 | 1229 | ### Feat 1230 | 1231 | * improves REPL([#47](https://github.com/windicss/svelte-windicss-preprocess/issues/47)) 1232 | * add html format checks 1233 | 1234 | ### Fix 1235 | 1236 | * variant matching 1237 | * REPL build 1238 | * REPL build 1239 | 1240 | 1241 | 1242 | ## [v3.0.0-beta.1](https://github.com/windicss/svelte-windicss-preprocess/compare/v2.3.1...v3.0.0-beta.1) (2021-03-05) 1243 | 1244 | ### Chore 1245 | 1246 | * wip example 1247 | 1248 | ### Feat 1249 | 1250 | * add experimental parser 1251 | 1252 | ### Fix 1253 | 1254 | * support windi template literals 1255 | 1256 | 1257 | 1258 | ## [v2.3.1](https://github.com/windicss/svelte-windicss-preprocess/compare/v2.3.0...v2.3.1) (2021-03-04) 1259 | 1260 | ### Chore 1261 | 1262 | * packages 1263 | 1264 | ### Revert 1265 | 1266 | * custom fix 1267 | 1268 | ### Test 1269 | 1270 | * fixed wrong naming 1271 | * replaced test lib 1272 | 1273 | 1274 | 1275 | ## [v2.3.0](https://github.com/windicss/svelte-windicss-preprocess/compare/v2.2.4...v2.3.0) (2021-03-03) 1276 | 1277 | ### Chore 1278 | 1279 | * bumps windicss to latest release 1280 | 1281 | ### Perf 1282 | 1283 | * switch to sucrase 1284 | 1285 | ### Style 1286 | 1287 | * formatting 1288 | 1289 | ### Test 1290 | 1291 | * added test 1292 | * reverted test change 1293 | * update snapshot 1294 | * better tests 1295 | 1296 | 1297 | 1298 | ## [v2.2.4](https://github.com/windicss/svelte-windicss-preprocess/compare/v2.2.3...v2.2.4) (2021-02-28) 1299 | 1300 | ### Test 1301 | 1302 | * adapted test 1303 | 1304 | 1305 | 1306 | ## [v2.2.3](https://github.com/windicss/svelte-windicss-preprocess/compare/v2.2.2...v2.2.3) (2021-02-28) 1307 | 1308 | ### Chore 1309 | 1310 | * bumps windicss release to 2.2.1 1311 | 1312 | 1313 | 1314 | ## [v2.2.2](https://github.com/windicss/svelte-windicss-preprocess/compare/v2.2.1...v2.2.2) (2021-02-27) 1315 | 1316 | ### Chore 1317 | 1318 | * add pnpm as dev dependency ([#38](https://github.com/windicss/svelte-windicss-preprocess/issues/38)) 1319 | * fixes examples 1320 | * refactor examples 1321 | 1322 | ### Docs 1323 | 1324 | * updated tailwind configuration docs 1325 | 1326 | ### Fix 1327 | 1328 | * adapted to svelte scoped styles 1329 | * global style tags always parses global 1330 | 1331 | ### Test 1332 | 1333 | * adapted tests to new features 1334 | 1335 | 1336 | 1337 | ## [v2.2.1](https://github.com/windicss/svelte-windicss-preprocess/compare/v2.2.0...v2.2.1) (2021-02-24) 1338 | 1339 | ### Fix 1340 | 1341 | * i missed the install 1342 | 1343 | 1344 | 1345 | ## [v2.2.0](https://github.com/windicss/svelte-windicss-preprocess/compare/v2.1.9...v2.2.0) (2021-02-24) 1346 | 1347 | ### Chore 1348 | 1349 | * update to windicss 2.2 1350 | 1351 | 1352 | 1353 | ## [v2.1.9](https://github.com/windicss/svelte-windicss-preprocess/compare/v2.1.8...v2.1.9) (2021-02-23) 1354 | 1355 | ### Fix 1356 | 1357 | * fix tests 1358 | 1359 | 1360 | 1361 | ## [v2.1.8](https://github.com/windicss/svelte-windicss-preprocess/compare/v2.1.7...v2.1.8) (2021-02-23) 1362 | 1363 | ### Fix 1364 | 1365 | * :global gets added to often 1366 | 1367 | ### Test 1368 | 1369 | * rework svelte tests 1370 | 1371 | 1372 | 1373 | ## [v2.1.7](https://github.com/windicss/svelte-windicss-preprocess/compare/v2.1.6...v2.1.7) (2021-02-23) 1374 | 1375 | ### Fix 1376 | 1377 | * [#18](https://github.com/windicss/svelte-windicss-preprocess/issues/18) utility groups transformation 1378 | 1379 | ### Style 1380 | 1381 | * consistent style 1382 | 1383 | 1384 | 1385 | ## [v2.1.6](https://github.com/windicss/svelte-windicss-preprocess/compare/v2.1.5...v2.1.6) (2021-02-22) 1386 | 1387 | ### Chore 1388 | 1389 | * updated packages 1390 | * add jasmine snapshot chore: switch to esno 1391 | 1392 | 1393 | 1394 | ## [v2.1.5](https://github.com/windicss/svelte-windicss-preprocess/compare/v2.1.1...v2.1.5) (2021-02-21) 1395 | 1396 | ### Fix 1397 | 1398 | * Styles in style tag works even if it's commented out [#55](https://github.com/windicss/svelte-windicss-preprocess/issues/55) 1399 | 1400 | 1401 | 1402 | ## [v2.1.1](https://github.com/windicss/svelte-windicss-preprocess/compare/v2.1.0...v2.1.1) (2021-02-10) 1403 | 1404 | 1405 | 1406 | ## [v2.1.0](https://github.com/windicss/svelte-windicss-preprocess/compare/v2.0.0...v2.1.0) (2021-02-08) 1407 | 1408 | 1409 | 1410 | ## [v2.0.0](https://github.com/windicss/svelte-windicss-preprocess/compare/v1.0.9...v2.0.0) (2021-01-20) 1411 | 1412 | 1413 | 1414 | ## [v1.0.9](https://github.com/windicss/svelte-windicss-preprocess/compare/v1.0.6...v1.0.9) (2021-01-18) 1415 | 1416 | 1417 | 1418 | ## [v1.0.6](https://github.com/windicss/svelte-windicss-preprocess/compare/v1.0.5...v1.0.6) (2021-01-13) 1419 | 1420 | 1421 | 1422 | ## [v1.0.5](https://github.com/windicss/svelte-windicss-preprocess/compare/v1.0.4...v1.0.5) (2021-01-12) 1423 | 1424 | 1425 | 1426 | ## v1.0.4 (2021-01-07) 1427 | 1428 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to svelte-windicss-preprocess 2 | 3 | Thanks for your interest in contributing! Please read carefully through our guidelines below to ensure that your contribution adheres to our project's standards. 4 | 5 | ## Issue Tracking 6 | 7 | We use [GitHub Issues](https://github.com/windicss/svelte-windicss-preprocess/issues) to track all tasks related to this project. 8 | 9 | ## Build the project locally 10 | 11 | In order to contribute to svelte-windicss-preprocess, you must first get a copy of the project running locally on your computer. 12 | 13 | There are five steps to building this project: 14 | 15 | 1. [Set up Git and Install Node.js](#set-up-git-and-install-nodejs) 16 | 2. [Fork the repository](#fork-the-repository) 17 | 3. [Clone your fork](#clone-your-fork) 18 | 4. [Install dependencies](#install-dependencies) 19 | 5. [Build the project](#build-the-project) 20 | 21 | ### Set up Git and Install Node.js 22 | 23 | All GitHub projects are backed by a version control software called *Git*. You'll need to [set up Git](https://github.com/danthareja/contribute-to-open-source/wiki/Setting-up-Git) in order to contribute to *any* project on GitHub. 24 | 25 | This specific project is written in JavaScript and uses Node.js as it's runtime. You'll need to [install Node.js](https://nodejs.org/en/) in order to run the project. 26 | 27 | ### Fork the [repository](https://github.com/windicss/svelte-windicss-preprocess.git) 28 | 29 | A *fork* is a copy of a repository. Forking a repository lets you to make changes to your copy without affecting any of the original code. 30 | 31 | Click **Fork** (in the top-right corner of the page) to copy this repository to your GitHub account. 32 | 33 | ### Clone your fork 34 | 35 | Use git to clone your fork to your computer. 36 | 37 | ``` 38 | $ git clone https://github.com/${username}/svelte-windicss-preprocess.git 39 | ``` 40 | 41 | ### Install dependencies 42 | 43 | This project uses [pnpm](https://pnpm.js.org/), a command-line tool bundled with Node.js, to maintain third-party dependencies. 44 | 45 | First, navigate into the project's directory 46 | 47 | ``` 48 | $ cd svelte-windicss-preprocess 49 | ``` 50 | 51 | Next, use `pnpm` to install the project' dependencies 52 | ``` 53 | $ pnpm install 54 | ``` 55 | 56 | ### Build the project 57 | 58 | Development Version 59 | 60 | ``` 61 | $ pnpm build 62 | ``` 63 | 64 | Production Version 65 | 66 | ``` 67 | $ pnpm build:prod 68 | ``` 69 | 70 | ## Submit a Pull Request 71 | 72 | After you successfully [build the project](#build-the-project), you can make some changes of your own. 73 | 74 | There are five steps to submit pull request: 75 | 76 | 1. [Create a new branch](#create-a-new-branch) 77 | 2. [Make your changes](#make-your-changes) 78 | 3. [Test your changes](#test-your-changes) 79 | 4. [Push your changes](#push-your-changes) 80 | 5. [Open a Pull Request](#open-a-pull-request) 81 | 82 | ### Create a new branch 83 | 84 | ``` 85 | $ git branch fix-issue-123 86 | $ git checkout fix-issue-123 87 | ``` 88 | 89 | ### Make your changes 90 | 91 | Make sure your code is following [TypeScript Style Guide](https://google.github.io/styleguide/tsguide.html). 92 | 93 | ### Test your changes 94 | 95 | You should add a new test file for your changes into [test](/tree/main/test) folder, the file should have extension `.test.ts`. 96 | 97 | Run tests: 98 | ``` 99 | $ pnpm test 100 | ``` 101 | 102 | ### Push your changes 103 | 104 | ``` 105 | $ git add . 106 | $ git commit -m "fix issue 123" 107 | $ git push origin fix-issue-123 108 | ``` 109 | 110 | ### Open a Pull Request 111 | 112 | 1. Find the [New Pull Request](https://github.com/windicss/svelte-windicss-preprocess/compare) button 113 | 2. Select the option to **compare across forks** 114 | 3. Select **your fork**(${username}/svelte-windicss-preprocess) in the `head repository` option 115 | 4. Select **your branch** in the `compare` option 116 | 5. Click **Create Pull Request** 117 | 118 | ## License 119 | 120 | By contributing, you agree that your contributions will be licensed under its [MIT license](https://github.com/windicss/svelte-windicss-preprocess/blob/main/LICENSE). 121 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Veritas Raven, Windi CSS Contributors 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 |

2 | ⚠️ Windi CSS is Sunsetting ⚠️
3 | We are sunsetting Windi CSS and we recommend new projects to seek for alternatives. Read the full blog post. 4 |

5 | 6 |
7 | 8 | # svelte-windicss-preprocess 9 | 10 | A svelte preprocessor for [windicss](https://github.com/windicss/windicss). Windi CSS is a next generation utility-first CSS framework. 11 | 12 | If you are already familiar with [Tailwind CSS](https://tailwindcss.com/docs), think about Windi CSS as an on-demanded alternative to Tailwind, which provides faster load times, fully compatible with Tailwind v2.0 and with a bunch of additional cool features. 13 | 14 | --- 15 | 16 | ## Installation 17 | 18 | > Now we have a great Windi CSS playground, you can [try it online](https://windicss.org/play.html) 19 | 20 | ```sh 21 | npm i -D svelte-windicss-preprocess 22 | ``` 23 | 24 | --- 25 | 26 | ## Integrations & Configuration 27 | 28 | ### see our [guides](https://windicss.org/integrations/svelte.html) in our windi css docs 29 | 30 | ## Resources 31 | 32 | - [Documentation](https://windicss.org) 33 | 34 | - [MIT License](https://github.com/windicss/svelte-windicss-preprocess/blob/main/LICENSE) 35 | -------------------------------------------------------------------------------- /generate.ts: -------------------------------------------------------------------------------- 1 | import { readFileSync, writeFileSync } from 'fs' 2 | import { join } from 'path' 3 | import { preprocess } from 'svelte/compiler' 4 | import { windi } from './src/index' 5 | 6 | async function main(subPath: string) { 7 | const path = join(process.cwd(), subPath) 8 | console.log(path) 9 | 10 | const input = readFileSync(path, { 11 | encoding: 'utf-8', 12 | }) 13 | const { code } = await preprocess( 14 | input, 15 | windi({ 16 | silent: false, 17 | experimental: { 18 | icons: { 19 | prefix: 'i-', 20 | extraProperties: { 21 | display: 'inline-block', 22 | }, 23 | }, 24 | }, 25 | }), 26 | { 27 | filename: 'generate.svelte', 28 | } 29 | ) 30 | writeFileSync(path.replace('input', 'expected'), code, { 31 | encoding: 'utf-8', 32 | }) 33 | console.log('done') 34 | } 35 | main(process.argv[2]) 36 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-windicss-preprocess", 3 | "description": "A Svelte Preprocessor to compile tailwindcss at build time based on windicss compiler.", 4 | "version": "4.2.8", 5 | "author": "Veritas Raven", 6 | "contributors": [], 7 | "dependencies": { 8 | "@iconify/json": "1.1.432", 9 | "fast-glob": "3.2.7", 10 | "unconfig": "0.2.2", 11 | "windicss": "3.5.4", 12 | "windicss-runtime-dom": "3.0.0" 13 | }, 14 | "devDependencies": { 15 | "@antfu/ni": "0.11.0", 16 | "@nbhr/utils": "0.0.29", 17 | "@types/node": "16.11.9", 18 | "@typescript-eslint/eslint-plugin": "5.4.0", 19 | "@typescript-eslint/parser": "5.4.0", 20 | "@unocss/core": "0.12.1", 21 | "@unocss/preset-icons": "0.12.1", 22 | "bumpp": "7.1.1", 23 | "cross-env": "7.0.3", 24 | "eslint": "8.3.0", 25 | "picocolors": "1.0.0", 26 | "pnpm": "6.23.1", 27 | "rimraf": "3.0.2", 28 | "sucrase": "3.20.3", 29 | "svelte": "3.44.2", 30 | "tslib": "2.3.1", 31 | "tsm": "2.1.4", 32 | "tsup": "5.8.0", 33 | "typescript": "4.5.2", 34 | "uvu": "0.5.2" 35 | }, 36 | "exports": { 37 | ".": { 38 | "import": "./dist/index.mjs", 39 | "require": "./dist/index.js" 40 | } 41 | }, 42 | "files": [ 43 | "dist/**/*" 44 | ], 45 | "homepage": "https://windicss.org/", 46 | "keywords": [ 47 | "compiler", 48 | "css", 49 | "preprocess", 50 | "svelte", 51 | "tailwindcss", 52 | "windicss" 53 | ], 54 | "license": "MIT", 55 | "maintainers": [ 56 | { 57 | "name": "Alexander Niebuhr", 58 | "email": "tech@nbhr.io" 59 | } 60 | ], 61 | "repository": { 62 | "type": "git", 63 | "url": "https://github.com/windicss/svelte-windicss-preprocess.git" 64 | }, 65 | "scripts": { 66 | "build": "tsup ./src/index.ts --dts --format esm,cjs --no-splitting", 67 | "build:clean": "rimraf dist && nr build", 68 | "dev": "nr build --watch", 69 | "lint": "eslint src", 70 | "lint:tests": "eslint tests --ext .ts", 71 | "release": "nr test && nr build:clean && bumpp --tag --commit --push", 72 | "test": "uvu -r sucrase/register tests", 73 | "test:generate": "tsm generate.ts" 74 | }, 75 | "types": "dist/index.d.ts", 76 | "volta": { 77 | "node": "16.13.1" 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.3 2 | 3 | specifiers: 4 | '@antfu/ni': 0.11.0 5 | '@iconify/json': 1.1.432 6 | '@nbhr/utils': 0.0.29 7 | '@types/node': 16.11.9 8 | '@typescript-eslint/eslint-plugin': 5.4.0 9 | '@typescript-eslint/parser': 5.4.0 10 | '@unocss/core': 0.12.1 11 | '@unocss/preset-icons': 0.12.1 12 | bumpp: 7.1.1 13 | cross-env: 7.0.3 14 | eslint: 8.3.0 15 | fast-glob: 3.2.7 16 | picocolors: 1.0.0 17 | pnpm: 6.23.1 18 | rimraf: 3.0.2 19 | sucrase: 3.20.3 20 | svelte: 3.44.2 21 | tslib: 2.3.1 22 | tsm: 2.1.4 23 | tsup: 5.8.0 24 | typescript: 4.5.2 25 | unconfig: 0.2.2 26 | uvu: 0.5.2 27 | windicss: 3.5.4 28 | windicss-runtime-dom: 3.0.0 29 | 30 | dependencies: 31 | '@iconify/json': 1.1.432 32 | fast-glob: 3.2.7 33 | unconfig: 0.2.2 34 | windicss: 3.5.4 35 | windicss-runtime-dom: 3.0.0 36 | 37 | devDependencies: 38 | '@antfu/ni': 0.11.0 39 | '@nbhr/utils': 0.0.29 40 | '@types/node': 16.11.9 41 | '@typescript-eslint/eslint-plugin': 5.4.0_5c8ff4cecd5a55e744866c0654edac32 42 | '@typescript-eslint/parser': 5.4.0_eslint@8.3.0+typescript@4.5.2 43 | '@unocss/core': 0.12.1 44 | '@unocss/preset-icons': 0.12.1 45 | bumpp: 7.1.1 46 | cross-env: 7.0.3 47 | eslint: 8.3.0 48 | picocolors: 1.0.0 49 | pnpm: 6.23.1 50 | rimraf: 3.0.2 51 | sucrase: 3.20.3 52 | svelte: 3.44.2 53 | tslib: 2.3.1 54 | tsm: 2.1.4 55 | tsup: 5.8.0_typescript@4.5.2 56 | typescript: 4.5.2 57 | uvu: 0.5.2 58 | 59 | packages: 60 | 61 | /@antfu/ni/0.11.0: 62 | resolution: {integrity: sha512-+Iep4kXORK9tTr+ZYWln2H1LO3YHRgHKnafiWxXokLV5nE6U7hY1NyVjBVyhYU7TJIAskE4sZmvgZznzuHo2lg==} 63 | hasBin: true 64 | dev: true 65 | 66 | /@antfu/utils/0.3.0: 67 | resolution: {integrity: sha512-UU8TLr/EoXdg7OjMp0h9oDoIAVr+Z/oW9cpOxQQyrsz6Qzd2ms/1CdWx8fl2OQdFpxGmq5Vc4TwfLHId6nAZjA==} 68 | dependencies: 69 | '@types/throttle-debounce': 2.1.0 70 | dev: false 71 | 72 | /@eslint/eslintrc/1.0.4: 73 | resolution: {integrity: sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==} 74 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 75 | dependencies: 76 | ajv: 6.12.6 77 | debug: 4.3.2 78 | espree: 9.1.0 79 | globals: 13.12.0 80 | ignore: 4.0.6 81 | import-fresh: 3.3.0 82 | js-yaml: 4.1.0 83 | minimatch: 3.0.4 84 | strip-json-comments: 3.1.1 85 | transitivePeerDependencies: 86 | - supports-color 87 | dev: true 88 | 89 | /@humanwhocodes/config-array/0.6.0: 90 | resolution: {integrity: sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==} 91 | engines: {node: '>=10.10.0'} 92 | dependencies: 93 | '@humanwhocodes/object-schema': 1.2.0 94 | debug: 4.3.2 95 | minimatch: 3.0.4 96 | transitivePeerDependencies: 97 | - supports-color 98 | dev: true 99 | 100 | /@humanwhocodes/object-schema/1.2.0: 101 | resolution: {integrity: sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==} 102 | dev: true 103 | 104 | /@iconify/json/1.1.432: 105 | resolution: {integrity: sha512-ZcQKCnJXmeKDKxSu4vOFCYkCv8sjX1OASTMQpzqVzt3ivBBDudAYyXJlO4hgk0X4B2R0IMHRNvRgCAYkKDa2eQ==} 106 | dev: false 107 | 108 | /@iconify/types/1.0.10: 109 | resolution: {integrity: sha512-SN3z6einVeUckDQiE8p4POF7X4hk4/y2+a7a4ogJOCxX5XT6z1zXNN8dwS5O1vloXpc6mkHizRZm2qPnhK6NnQ==} 110 | dev: true 111 | 112 | /@iconify/utils/1.0.18: 113 | resolution: {integrity: sha512-uCfJ7FdTxDk1DLKsvynTsYX4LnkGIDw+LCpoY0mRdl+NrNPCjYZ8HHYs4xzmo7cryRe0ZT0yuF2f3oipPIHn8w==} 114 | dependencies: 115 | '@iconify/types': 1.0.10 116 | dev: true 117 | 118 | /@jsdevtools/ez-spawn/3.0.4: 119 | resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==} 120 | engines: {node: '>=10'} 121 | dependencies: 122 | call-me-maybe: 1.0.1 123 | cross-spawn: 7.0.3 124 | string-argv: 0.3.1 125 | type-detect: 4.0.8 126 | dev: true 127 | 128 | /@nbhr/utils/0.0.29: 129 | resolution: {integrity: sha512-Oshi44WrZmk7hgoXdsRm0r8HYx28X+PeZWSpVIdsJbHB/QbgTfvlHhOzyyhHNCr/pS54JdrHvhEd0l5f7B/+pg==} 130 | dev: true 131 | 132 | /@nodelib/fs.scandir/2.1.5: 133 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 134 | engines: {node: '>= 8'} 135 | dependencies: 136 | '@nodelib/fs.stat': 2.0.5 137 | run-parallel: 1.2.0 138 | 139 | /@nodelib/fs.stat/2.0.5: 140 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 141 | engines: {node: '>= 8'} 142 | 143 | /@nodelib/fs.walk/1.2.8: 144 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 145 | engines: {node: '>= 8'} 146 | dependencies: 147 | '@nodelib/fs.scandir': 2.1.5 148 | fastq: 1.13.0 149 | 150 | /@types/json-schema/7.0.9: 151 | resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==} 152 | dev: true 153 | 154 | /@types/node/16.11.9: 155 | resolution: {integrity: sha512-MKmdASMf3LtPzwLyRrFjtFFZ48cMf8jmX5VRYrDQiJa8Ybu5VAmkqBWqKU8fdCwD8ysw4mQ9nrEHvzg6gunR7A==} 156 | dev: true 157 | 158 | /@types/throttle-debounce/2.1.0: 159 | resolution: {integrity: sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==} 160 | dev: false 161 | 162 | /@typescript-eslint/eslint-plugin/5.4.0_5c8ff4cecd5a55e744866c0654edac32: 163 | resolution: {integrity: sha512-9/yPSBlwzsetCsGEn9j24D8vGQgJkOTr4oMLas/w886ZtzKIs1iyoqFrwsX2fqYEeUwsdBpC21gcjRGo57u0eg==} 164 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 165 | peerDependencies: 166 | '@typescript-eslint/parser': ^5.0.0 167 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 168 | typescript: '*' 169 | peerDependenciesMeta: 170 | typescript: 171 | optional: true 172 | dependencies: 173 | '@typescript-eslint/experimental-utils': 5.4.0_eslint@8.3.0+typescript@4.5.2 174 | '@typescript-eslint/parser': 5.4.0_eslint@8.3.0+typescript@4.5.2 175 | '@typescript-eslint/scope-manager': 5.4.0 176 | debug: 4.3.2 177 | eslint: 8.3.0 178 | functional-red-black-tree: 1.0.1 179 | ignore: 5.1.8 180 | regexpp: 3.2.0 181 | semver: 7.3.5 182 | tsutils: 3.21.0_typescript@4.5.2 183 | typescript: 4.5.2 184 | transitivePeerDependencies: 185 | - supports-color 186 | dev: true 187 | 188 | /@typescript-eslint/experimental-utils/5.4.0_eslint@8.3.0+typescript@4.5.2: 189 | resolution: {integrity: sha512-Nz2JDIQUdmIGd6p33A+naQmwfkU5KVTLb/5lTk+tLVTDacZKoGQisj8UCxk7onJcrgjIvr8xWqkYI+DbI3TfXg==} 190 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 191 | peerDependencies: 192 | eslint: '*' 193 | dependencies: 194 | '@types/json-schema': 7.0.9 195 | '@typescript-eslint/scope-manager': 5.4.0 196 | '@typescript-eslint/types': 5.4.0 197 | '@typescript-eslint/typescript-estree': 5.4.0_typescript@4.5.2 198 | eslint: 8.3.0 199 | eslint-scope: 5.1.1 200 | eslint-utils: 3.0.0_eslint@8.3.0 201 | transitivePeerDependencies: 202 | - supports-color 203 | - typescript 204 | dev: true 205 | 206 | /@typescript-eslint/parser/5.4.0_eslint@8.3.0+typescript@4.5.2: 207 | resolution: {integrity: sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==} 208 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 209 | peerDependencies: 210 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 211 | typescript: '*' 212 | peerDependenciesMeta: 213 | typescript: 214 | optional: true 215 | dependencies: 216 | '@typescript-eslint/scope-manager': 5.4.0 217 | '@typescript-eslint/types': 5.4.0 218 | '@typescript-eslint/typescript-estree': 5.4.0_typescript@4.5.2 219 | debug: 4.3.2 220 | eslint: 8.3.0 221 | typescript: 4.5.2 222 | transitivePeerDependencies: 223 | - supports-color 224 | dev: true 225 | 226 | /@typescript-eslint/scope-manager/5.4.0: 227 | resolution: {integrity: sha512-pRxFjYwoi8R+n+sibjgF9iUiAELU9ihPBtHzocyW8v8D8G8KeQvXTsW7+CBYIyTYsmhtNk50QPGLE3vrvhM5KA==} 228 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 229 | dependencies: 230 | '@typescript-eslint/types': 5.4.0 231 | '@typescript-eslint/visitor-keys': 5.4.0 232 | dev: true 233 | 234 | /@typescript-eslint/types/5.4.0: 235 | resolution: {integrity: sha512-GjXNpmn+n1LvnttarX+sPD6+S7giO+9LxDIGlRl4wK3a7qMWALOHYuVSZpPTfEIklYjaWuMtfKdeByx0AcaThA==} 236 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 237 | dev: true 238 | 239 | /@typescript-eslint/typescript-estree/5.4.0_typescript@4.5.2: 240 | resolution: {integrity: sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==} 241 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 242 | peerDependencies: 243 | typescript: '*' 244 | peerDependenciesMeta: 245 | typescript: 246 | optional: true 247 | dependencies: 248 | '@typescript-eslint/types': 5.4.0 249 | '@typescript-eslint/visitor-keys': 5.4.0 250 | debug: 4.3.2 251 | globby: 11.0.4 252 | is-glob: 4.0.3 253 | semver: 7.3.5 254 | tsutils: 3.21.0_typescript@4.5.2 255 | typescript: 4.5.2 256 | transitivePeerDependencies: 257 | - supports-color 258 | dev: true 259 | 260 | /@typescript-eslint/visitor-keys/5.4.0: 261 | resolution: {integrity: sha512-PVbax7MeE7tdLfW5SA0fs8NGVVr+buMPrcj+CWYWPXsZCH8qZ1THufDzbXm1xrZ2b2PA1iENJ0sRq5fuUtvsJg==} 262 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 263 | dependencies: 264 | '@typescript-eslint/types': 5.4.0 265 | eslint-visitor-keys: 3.1.0 266 | dev: true 267 | 268 | /@unocss/core/0.12.1: 269 | resolution: {integrity: sha512-Paa+trPCc/4aTV5B6gmlOU0ZYssBIH8zUBeuyPK4jYp6cIlYXsGNGRQhkkBTik+/U6XNk8wDr3zCKQetO59G1g==} 270 | dev: true 271 | 272 | /@unocss/preset-icons/0.12.1: 273 | resolution: {integrity: sha512-kiO5LaB5rRdkBIluKI8YClzq8BjpXzt3qkVl6pcfwmUKiPPiWT7gYV2ky9w0s92GgrN5g3oGrPzFCvyhYZVkMA==} 274 | dependencies: 275 | '@iconify/utils': 1.0.18 276 | '@unocss/core': 0.12.1 277 | local-pkg: 0.4.0 278 | dev: true 279 | 280 | /acorn-jsx/5.3.2_acorn@8.6.0: 281 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 282 | peerDependencies: 283 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 284 | dependencies: 285 | acorn: 8.6.0 286 | dev: true 287 | 288 | /acorn/8.6.0: 289 | resolution: {integrity: sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==} 290 | engines: {node: '>=0.4.0'} 291 | hasBin: true 292 | dev: true 293 | 294 | /ajv/6.12.6: 295 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 296 | dependencies: 297 | fast-deep-equal: 3.1.3 298 | fast-json-stable-stringify: 2.1.0 299 | json-schema-traverse: 0.4.1 300 | uri-js: 4.4.1 301 | dev: true 302 | 303 | /ansi-colors/4.1.1: 304 | resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} 305 | engines: {node: '>=6'} 306 | dev: true 307 | 308 | /ansi-regex/5.0.1: 309 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 310 | engines: {node: '>=8'} 311 | dev: true 312 | 313 | /ansi-styles/4.3.0: 314 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 315 | engines: {node: '>=8'} 316 | dependencies: 317 | color-convert: 2.0.1 318 | dev: true 319 | 320 | /any-promise/1.3.0: 321 | resolution: {integrity: sha1-q8av7tzqUugJzcA3au0845Y10X8=} 322 | dev: true 323 | 324 | /anymatch/3.1.2: 325 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 326 | engines: {node: '>= 8'} 327 | dependencies: 328 | normalize-path: 3.0.0 329 | picomatch: 2.3.0 330 | dev: true 331 | 332 | /argparse/2.0.1: 333 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 334 | dev: true 335 | 336 | /array-back/3.1.0: 337 | resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} 338 | engines: {node: '>=6'} 339 | dev: true 340 | 341 | /array-union/2.1.0: 342 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 343 | engines: {node: '>=8'} 344 | dev: true 345 | 346 | /balanced-match/1.0.2: 347 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 348 | dev: true 349 | 350 | /binary-extensions/2.2.0: 351 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 352 | engines: {node: '>=8'} 353 | dev: true 354 | 355 | /brace-expansion/1.1.11: 356 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 357 | dependencies: 358 | balanced-match: 1.0.2 359 | concat-map: 0.0.1 360 | dev: true 361 | 362 | /braces/3.0.2: 363 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 364 | engines: {node: '>=8'} 365 | dependencies: 366 | fill-range: 7.0.1 367 | 368 | /builtins/4.0.0: 369 | resolution: {integrity: sha512-qC0E2Dxgou1IHhvJSLwGDSTvokbRovU5zZFuDY6oY8Y2lF3nGt5Ad8YZK7GMtqzY84Wu7pXTPeHQeHcXSXsRhw==} 370 | dependencies: 371 | semver: 7.3.5 372 | dev: true 373 | 374 | /bumpp/7.1.1: 375 | resolution: {integrity: sha512-pAGjraw9T4I4dnkiQHrKUVQb55dOM5Nj72SVtVlkjFjWjFtg0aSgipQuxDWZ0cqm8WoqtaiBPk+7jHfnZxr7lA==} 376 | engines: {node: '>=10'} 377 | hasBin: true 378 | dependencies: 379 | '@jsdevtools/ez-spawn': 3.0.4 380 | chalk: 4.1.2 381 | command-line-args: 5.2.0 382 | globby: 11.0.4 383 | prompts: 2.4.2 384 | semver: 7.3.5 385 | dev: true 386 | 387 | /cac/6.7.11: 388 | resolution: {integrity: sha512-m4xrA2MKfid6uDV2j2+0mXrtPGxlvAW0y+7Gnn2P8WVMSG+4e4tcoYX++94ZPblPfpBccJ5e7HvKdghlX5yiDA==} 389 | engines: {node: '>=8'} 390 | dev: true 391 | 392 | /call-me-maybe/1.0.1: 393 | resolution: {integrity: sha1-JtII6onje1y95gJQoV8DHBak1ms=} 394 | dev: true 395 | 396 | /callsites/3.1.0: 397 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 398 | engines: {node: '>=6'} 399 | dev: true 400 | 401 | /chalk/4.1.2: 402 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 403 | engines: {node: '>=10'} 404 | dependencies: 405 | ansi-styles: 4.3.0 406 | supports-color: 7.2.0 407 | dev: true 408 | 409 | /chokidar/3.5.2: 410 | resolution: {integrity: sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==} 411 | engines: {node: '>= 8.10.0'} 412 | dependencies: 413 | anymatch: 3.1.2 414 | braces: 3.0.2 415 | glob-parent: 5.1.2 416 | is-binary-path: 2.1.0 417 | is-glob: 4.0.3 418 | normalize-path: 3.0.0 419 | readdirp: 3.6.0 420 | optionalDependencies: 421 | fsevents: 2.3.2 422 | dev: true 423 | 424 | /color-convert/2.0.1: 425 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 426 | engines: {node: '>=7.0.0'} 427 | dependencies: 428 | color-name: 1.1.4 429 | dev: true 430 | 431 | /color-name/1.1.4: 432 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 433 | dev: true 434 | 435 | /command-line-args/5.2.0: 436 | resolution: {integrity: sha512-4zqtU1hYsSJzcJBOcNZIbW5Fbk9BkjCp1pZVhQKoRaWL5J7N4XphDLwo8aWwdQpTugxwu+jf9u2ZhkXiqp5Z6A==} 437 | engines: {node: '>=4.0.0'} 438 | dependencies: 439 | array-back: 3.1.0 440 | find-replace: 3.0.0 441 | lodash.camelcase: 4.3.0 442 | typical: 4.0.0 443 | dev: true 444 | 445 | /commander/4.1.1: 446 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 447 | engines: {node: '>= 6'} 448 | dev: true 449 | 450 | /concat-map/0.0.1: 451 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 452 | dev: true 453 | 454 | /cross-env/7.0.3: 455 | resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} 456 | engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} 457 | hasBin: true 458 | dependencies: 459 | cross-spawn: 7.0.3 460 | dev: true 461 | 462 | /cross-spawn/7.0.3: 463 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 464 | engines: {node: '>= 8'} 465 | dependencies: 466 | path-key: 3.1.1 467 | shebang-command: 2.0.0 468 | which: 2.0.2 469 | dev: true 470 | 471 | /debug/4.3.2: 472 | resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} 473 | engines: {node: '>=6.0'} 474 | peerDependencies: 475 | supports-color: '*' 476 | peerDependenciesMeta: 477 | supports-color: 478 | optional: true 479 | dependencies: 480 | ms: 2.1.2 481 | dev: true 482 | 483 | /deep-is/0.1.4: 484 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 485 | dev: true 486 | 487 | /defu/5.0.0: 488 | resolution: {integrity: sha512-VHg73EDeRXlu7oYWRmmrNp/nl7QkdXUxkQQKig0Zk8daNmm84AbGoC8Be6/VVLJEKxn12hR0UBmz8O+xQiAPKQ==} 489 | dev: false 490 | 491 | /dequal/2.0.2: 492 | resolution: {integrity: sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==} 493 | engines: {node: '>=6'} 494 | dev: true 495 | 496 | /diff/5.0.0: 497 | resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} 498 | engines: {node: '>=0.3.1'} 499 | dev: true 500 | 501 | /dir-glob/3.0.1: 502 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 503 | engines: {node: '>=8'} 504 | dependencies: 505 | path-type: 4.0.0 506 | dev: true 507 | 508 | /doctrine/3.0.0: 509 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 510 | engines: {node: '>=6.0.0'} 511 | dependencies: 512 | esutils: 2.0.3 513 | dev: true 514 | 515 | /enquirer/2.3.6: 516 | resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} 517 | engines: {node: '>=8.6'} 518 | dependencies: 519 | ansi-colors: 4.1.1 520 | dev: true 521 | 522 | /esbuild-android-arm64/0.13.12: 523 | resolution: {integrity: sha512-TSVZVrb4EIXz6KaYjXfTzPyyRpXV5zgYIADXtQsIenjZ78myvDGaPi11o4ZSaHIwFHsuwkB6ne5SZRBwAQ7maw==} 524 | cpu: [arm64] 525 | os: [android] 526 | requiresBuild: true 527 | dev: true 528 | optional: true 529 | 530 | /esbuild-darwin-64/0.13.12: 531 | resolution: {integrity: sha512-c51C+N+UHySoV2lgfWSwwmlnLnL0JWj/LzuZt9Ltk9ub1s2Y8cr6SQV5W3mqVH1egUceew6KZ8GyI4nwu+fhsw==} 532 | cpu: [x64] 533 | os: [darwin] 534 | requiresBuild: true 535 | dev: true 536 | optional: true 537 | 538 | /esbuild-darwin-arm64/0.13.12: 539 | resolution: {integrity: sha512-JvAMtshP45Hd8A8wOzjkY1xAnTKTYuP/QUaKp5eUQGX+76GIie3fCdUUr2ZEKdvpSImNqxiZSIMziEiGB5oUmQ==} 540 | cpu: [arm64] 541 | os: [darwin] 542 | requiresBuild: true 543 | dev: true 544 | optional: true 545 | 546 | /esbuild-freebsd-64/0.13.12: 547 | resolution: {integrity: sha512-r6On/Skv9f0ZjTu6PW5o7pdXr8aOgtFOEURJZYf1XAJs0IQ+gW+o1DzXjVkIoT+n1cm3N/t1KRJfX71MPg/ZUA==} 548 | cpu: [x64] 549 | os: [freebsd] 550 | requiresBuild: true 551 | dev: true 552 | optional: true 553 | 554 | /esbuild-freebsd-arm64/0.13.12: 555 | resolution: {integrity: sha512-F6LmI2Q1gii073kmBE3NOTt/6zLL5zvZsxNLF8PMAwdHc+iBhD1vzfI8uQZMJA1IgXa3ocr3L3DJH9fLGXy6Yw==} 556 | cpu: [arm64] 557 | os: [freebsd] 558 | requiresBuild: true 559 | dev: true 560 | optional: true 561 | 562 | /esbuild-linux-32/0.13.12: 563 | resolution: {integrity: sha512-U1UZwG3UIwF7/V4tCVAo/nkBV9ag5KJiJTt+gaCmLVWH3bPLX7y+fNlhIWZy8raTMnXhMKfaTvWZ9TtmXzvkuQ==} 564 | cpu: [ia32] 565 | os: [linux] 566 | requiresBuild: true 567 | dev: true 568 | optional: true 569 | 570 | /esbuild-linux-64/0.13.12: 571 | resolution: {integrity: sha512-YpXSwtu2NxN3N4ifJxEdsgd6Q5d8LYqskrAwjmoCT6yQnEHJSF5uWcxv783HWN7lnGpJi9KUtDvYsnMdyGw71Q==} 572 | cpu: [x64] 573 | os: [linux] 574 | requiresBuild: true 575 | dev: true 576 | optional: true 577 | 578 | /esbuild-linux-arm/0.13.12: 579 | resolution: {integrity: sha512-SyiT/JKxU6J+DY2qUiSLZJqCAftIt3uoGejZ0HDnUM2MGJqEGSGh7p1ecVL2gna3PxS4P+j6WAehCwgkBPXNIw==} 580 | cpu: [arm] 581 | os: [linux] 582 | requiresBuild: true 583 | dev: true 584 | optional: true 585 | 586 | /esbuild-linux-arm64/0.13.12: 587 | resolution: {integrity: sha512-sgDNb8kb3BVodtAlcFGgwk+43KFCYjnFOaOfJibXnnIojNWuJHpL6aQJ4mumzNWw8Rt1xEtDQyuGK9f+Y24jGA==} 588 | cpu: [arm64] 589 | os: [linux] 590 | requiresBuild: true 591 | dev: true 592 | optional: true 593 | 594 | /esbuild-linux-mips64le/0.13.12: 595 | resolution: {integrity: sha512-qQJHlZBG+QwVIA8AbTEtbvF084QgDi4DaUsUnA+EolY1bxrG+UyOuGflM2ZritGhfS/k7THFjJbjH2wIeoKA2g==} 596 | cpu: [mips64el] 597 | os: [linux] 598 | requiresBuild: true 599 | dev: true 600 | optional: true 601 | 602 | /esbuild-linux-ppc64le/0.13.12: 603 | resolution: {integrity: sha512-2dSnm1ldL7Lppwlo04CGQUpwNn5hGqXI38OzaoPOkRsBRWFBozyGxTFSee/zHFS+Pdh3b28JJbRK3owrrRgWNw==} 604 | cpu: [ppc64] 605 | os: [linux] 606 | requiresBuild: true 607 | dev: true 608 | optional: true 609 | 610 | /esbuild-netbsd-64/0.13.12: 611 | resolution: {integrity: sha512-D4raxr02dcRiQNbxOLzpqBzcJNFAdsDNxjUbKkDMZBkL54Z0vZh4LRndycdZAMcIdizC/l/Yp/ZsBdAFxc5nbA==} 612 | cpu: [x64] 613 | os: [netbsd] 614 | requiresBuild: true 615 | dev: true 616 | optional: true 617 | 618 | /esbuild-openbsd-64/0.13.12: 619 | resolution: {integrity: sha512-KuLCmYMb2kh05QuPJ+va60bKIH5wHL8ypDkmpy47lzwmdxNsuySeCMHuTv5o2Af1RUn5KLO5ZxaZeq4GEY7DaQ==} 620 | cpu: [x64] 621 | os: [openbsd] 622 | requiresBuild: true 623 | dev: true 624 | optional: true 625 | 626 | /esbuild-sunos-64/0.13.12: 627 | resolution: {integrity: sha512-jBsF+e0woK3miKI8ufGWKG3o3rY9DpHvCVRn5eburMIIE+2c+y3IZ1srsthKyKI6kkXLvV4Cf/E7w56kLipMXw==} 628 | cpu: [x64] 629 | os: [sunos] 630 | requiresBuild: true 631 | dev: true 632 | optional: true 633 | 634 | /esbuild-windows-32/0.13.12: 635 | resolution: {integrity: sha512-L9m4lLFQrFeR7F+eLZXG82SbXZfUhyfu6CexZEil6vm+lc7GDCE0Q8DiNutkpzjv1+RAbIGVva9muItQ7HVTkQ==} 636 | cpu: [ia32] 637 | os: [win32] 638 | requiresBuild: true 639 | dev: true 640 | optional: true 641 | 642 | /esbuild-windows-64/0.13.12: 643 | resolution: {integrity: sha512-k4tX4uJlSbSkfs78W5d9+I9gpd+7N95W7H2bgOMFPsYREVJs31+Q2gLLHlsnlY95zBoPQMIzHooUIsixQIBjaQ==} 644 | cpu: [x64] 645 | os: [win32] 646 | requiresBuild: true 647 | dev: true 648 | optional: true 649 | 650 | /esbuild-windows-arm64/0.13.12: 651 | resolution: {integrity: sha512-2tTv/BpYRIvuwHpp2M960nG7uvL+d78LFW/ikPItO+2GfK51CswIKSetSpDii+cjz8e9iSPgs+BU4o8nWICBwQ==} 652 | cpu: [arm64] 653 | os: [win32] 654 | requiresBuild: true 655 | dev: true 656 | optional: true 657 | 658 | /esbuild/0.13.12: 659 | resolution: {integrity: sha512-vTKKUt+yoz61U/BbrnmlG9XIjwpdIxmHB8DlPR0AAW6OdS+nBQBci6LUHU2q9WbBobMEIQxxDpKbkmOGYvxsow==} 660 | hasBin: true 661 | requiresBuild: true 662 | optionalDependencies: 663 | esbuild-android-arm64: 0.13.12 664 | esbuild-darwin-64: 0.13.12 665 | esbuild-darwin-arm64: 0.13.12 666 | esbuild-freebsd-64: 0.13.12 667 | esbuild-freebsd-arm64: 0.13.12 668 | esbuild-linux-32: 0.13.12 669 | esbuild-linux-64: 0.13.12 670 | esbuild-linux-arm: 0.13.12 671 | esbuild-linux-arm64: 0.13.12 672 | esbuild-linux-mips64le: 0.13.12 673 | esbuild-linux-ppc64le: 0.13.12 674 | esbuild-netbsd-64: 0.13.12 675 | esbuild-openbsd-64: 0.13.12 676 | esbuild-sunos-64: 0.13.12 677 | esbuild-windows-32: 0.13.12 678 | esbuild-windows-64: 0.13.12 679 | esbuild-windows-arm64: 0.13.12 680 | dev: true 681 | 682 | /escape-string-regexp/4.0.0: 683 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 684 | engines: {node: '>=10'} 685 | dev: true 686 | 687 | /eslint-scope/5.1.1: 688 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 689 | engines: {node: '>=8.0.0'} 690 | dependencies: 691 | esrecurse: 4.3.0 692 | estraverse: 4.3.0 693 | dev: true 694 | 695 | /eslint-scope/7.1.0: 696 | resolution: {integrity: sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==} 697 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 698 | dependencies: 699 | esrecurse: 4.3.0 700 | estraverse: 5.3.0 701 | dev: true 702 | 703 | /eslint-utils/3.0.0_eslint@8.3.0: 704 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 705 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 706 | peerDependencies: 707 | eslint: '>=5' 708 | dependencies: 709 | eslint: 8.3.0 710 | eslint-visitor-keys: 2.1.0 711 | dev: true 712 | 713 | /eslint-visitor-keys/2.1.0: 714 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 715 | engines: {node: '>=10'} 716 | dev: true 717 | 718 | /eslint-visitor-keys/3.1.0: 719 | resolution: {integrity: sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==} 720 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 721 | dev: true 722 | 723 | /eslint/8.3.0: 724 | resolution: {integrity: sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==} 725 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 726 | hasBin: true 727 | dependencies: 728 | '@eslint/eslintrc': 1.0.4 729 | '@humanwhocodes/config-array': 0.6.0 730 | ajv: 6.12.6 731 | chalk: 4.1.2 732 | cross-spawn: 7.0.3 733 | debug: 4.3.2 734 | doctrine: 3.0.0 735 | enquirer: 2.3.6 736 | escape-string-regexp: 4.0.0 737 | eslint-scope: 7.1.0 738 | eslint-utils: 3.0.0_eslint@8.3.0 739 | eslint-visitor-keys: 3.1.0 740 | espree: 9.1.0 741 | esquery: 1.4.0 742 | esutils: 2.0.3 743 | fast-deep-equal: 3.1.3 744 | file-entry-cache: 6.0.1 745 | functional-red-black-tree: 1.0.1 746 | glob-parent: 6.0.2 747 | globals: 13.12.0 748 | ignore: 4.0.6 749 | import-fresh: 3.3.0 750 | imurmurhash: 0.1.4 751 | is-glob: 4.0.3 752 | js-yaml: 4.1.0 753 | json-stable-stringify-without-jsonify: 1.0.1 754 | levn: 0.4.1 755 | lodash.merge: 4.6.2 756 | minimatch: 3.0.4 757 | natural-compare: 1.4.0 758 | optionator: 0.9.1 759 | progress: 2.0.3 760 | regexpp: 3.2.0 761 | semver: 7.3.5 762 | strip-ansi: 6.0.1 763 | strip-json-comments: 3.1.1 764 | text-table: 0.2.0 765 | v8-compile-cache: 2.3.0 766 | transitivePeerDependencies: 767 | - supports-color 768 | dev: true 769 | 770 | /espree/9.1.0: 771 | resolution: {integrity: sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==} 772 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 773 | dependencies: 774 | acorn: 8.6.0 775 | acorn-jsx: 5.3.2_acorn@8.6.0 776 | eslint-visitor-keys: 3.1.0 777 | dev: true 778 | 779 | /esquery/1.4.0: 780 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 781 | engines: {node: '>=0.10'} 782 | dependencies: 783 | estraverse: 5.3.0 784 | dev: true 785 | 786 | /esrecurse/4.3.0: 787 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 788 | engines: {node: '>=4.0'} 789 | dependencies: 790 | estraverse: 5.3.0 791 | dev: true 792 | 793 | /estraverse/4.3.0: 794 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 795 | engines: {node: '>=4.0'} 796 | dev: true 797 | 798 | /estraverse/5.3.0: 799 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 800 | engines: {node: '>=4.0'} 801 | dev: true 802 | 803 | /esutils/2.0.3: 804 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 805 | engines: {node: '>=0.10.0'} 806 | dev: true 807 | 808 | /execa/5.1.1: 809 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 810 | engines: {node: '>=10'} 811 | dependencies: 812 | cross-spawn: 7.0.3 813 | get-stream: 6.0.1 814 | human-signals: 2.1.0 815 | is-stream: 2.0.1 816 | merge-stream: 2.0.0 817 | npm-run-path: 4.0.1 818 | onetime: 5.1.2 819 | signal-exit: 3.0.5 820 | strip-final-newline: 2.0.0 821 | dev: true 822 | 823 | /fast-deep-equal/3.1.3: 824 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 825 | dev: true 826 | 827 | /fast-glob/3.2.7: 828 | resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==} 829 | engines: {node: '>=8'} 830 | dependencies: 831 | '@nodelib/fs.stat': 2.0.5 832 | '@nodelib/fs.walk': 1.2.8 833 | glob-parent: 5.1.2 834 | merge2: 1.4.1 835 | micromatch: 4.0.4 836 | 837 | /fast-json-stable-stringify/2.1.0: 838 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 839 | dev: true 840 | 841 | /fast-levenshtein/2.0.6: 842 | resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} 843 | dev: true 844 | 845 | /fastq/1.13.0: 846 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 847 | dependencies: 848 | reusify: 1.0.4 849 | 850 | /file-entry-cache/6.0.1: 851 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 852 | engines: {node: ^10.12.0 || >=12.0.0} 853 | dependencies: 854 | flat-cache: 3.0.4 855 | dev: true 856 | 857 | /fill-range/7.0.1: 858 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 859 | engines: {node: '>=8'} 860 | dependencies: 861 | to-regex-range: 5.0.1 862 | 863 | /find-replace/3.0.0: 864 | resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} 865 | engines: {node: '>=4.0.0'} 866 | dependencies: 867 | array-back: 3.1.0 868 | dev: true 869 | 870 | /flat-cache/3.0.4: 871 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 872 | engines: {node: ^10.12.0 || >=12.0.0} 873 | dependencies: 874 | flatted: 3.2.2 875 | rimraf: 3.0.2 876 | dev: true 877 | 878 | /flatted/3.2.2: 879 | resolution: {integrity: sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==} 880 | dev: true 881 | 882 | /fs.realpath/1.0.0: 883 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} 884 | dev: true 885 | 886 | /fsevents/2.3.2: 887 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 888 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 889 | os: [darwin] 890 | requiresBuild: true 891 | dev: true 892 | optional: true 893 | 894 | /functional-red-black-tree/1.0.1: 895 | resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} 896 | dev: true 897 | 898 | /get-stream/6.0.1: 899 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 900 | engines: {node: '>=10'} 901 | dev: true 902 | 903 | /glob-parent/5.1.2: 904 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 905 | engines: {node: '>= 6'} 906 | dependencies: 907 | is-glob: 4.0.3 908 | 909 | /glob-parent/6.0.2: 910 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 911 | engines: {node: '>=10.13.0'} 912 | dependencies: 913 | is-glob: 4.0.3 914 | dev: true 915 | 916 | /glob/7.1.6: 917 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} 918 | dependencies: 919 | fs.realpath: 1.0.0 920 | inflight: 1.0.6 921 | inherits: 2.0.4 922 | minimatch: 3.0.4 923 | once: 1.4.0 924 | path-is-absolute: 1.0.1 925 | dev: true 926 | 927 | /glob/7.2.0: 928 | resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} 929 | dependencies: 930 | fs.realpath: 1.0.0 931 | inflight: 1.0.6 932 | inherits: 2.0.4 933 | minimatch: 3.0.4 934 | once: 1.4.0 935 | path-is-absolute: 1.0.1 936 | dev: true 937 | 938 | /globals/13.12.0: 939 | resolution: {integrity: sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==} 940 | engines: {node: '>=8'} 941 | dependencies: 942 | type-fest: 0.20.2 943 | dev: true 944 | 945 | /globby/11.0.4: 946 | resolution: {integrity: sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==} 947 | engines: {node: '>=10'} 948 | dependencies: 949 | array-union: 2.1.0 950 | dir-glob: 3.0.1 951 | fast-glob: 3.2.7 952 | ignore: 5.1.8 953 | merge2: 1.4.1 954 | slash: 3.0.0 955 | dev: true 956 | 957 | /has-flag/4.0.0: 958 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 959 | engines: {node: '>=8'} 960 | dev: true 961 | 962 | /human-signals/2.1.0: 963 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 964 | engines: {node: '>=10.17.0'} 965 | dev: true 966 | 967 | /ignore/4.0.6: 968 | resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} 969 | engines: {node: '>= 4'} 970 | dev: true 971 | 972 | /ignore/5.1.8: 973 | resolution: {integrity: sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==} 974 | engines: {node: '>= 4'} 975 | dev: true 976 | 977 | /import-cwd/3.0.0: 978 | resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} 979 | engines: {node: '>=8'} 980 | dependencies: 981 | import-from: 3.0.0 982 | dev: true 983 | 984 | /import-fresh/3.3.0: 985 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 986 | engines: {node: '>=6'} 987 | dependencies: 988 | parent-module: 1.0.1 989 | resolve-from: 4.0.0 990 | dev: true 991 | 992 | /import-from/3.0.0: 993 | resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==} 994 | engines: {node: '>=8'} 995 | dependencies: 996 | resolve-from: 5.0.0 997 | dev: true 998 | 999 | /import-meta-resolve/1.1.1: 1000 | resolution: {integrity: sha512-JiTuIvVyPaUg11eTrNDx5bgQ/yMKMZffc7YSjvQeSMXy58DO2SQ8BtAf3xteZvmzvjYh14wnqNjL8XVeDy2o9A==} 1001 | dependencies: 1002 | builtins: 4.0.0 1003 | dev: true 1004 | 1005 | /imurmurhash/0.1.4: 1006 | resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} 1007 | engines: {node: '>=0.8.19'} 1008 | dev: true 1009 | 1010 | /inflight/1.0.6: 1011 | resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} 1012 | dependencies: 1013 | once: 1.4.0 1014 | wrappy: 1.0.2 1015 | dev: true 1016 | 1017 | /inherits/2.0.4: 1018 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1019 | dev: true 1020 | 1021 | /is-binary-path/2.1.0: 1022 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1023 | engines: {node: '>=8'} 1024 | dependencies: 1025 | binary-extensions: 2.2.0 1026 | dev: true 1027 | 1028 | /is-extglob/2.1.1: 1029 | resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} 1030 | engines: {node: '>=0.10.0'} 1031 | 1032 | /is-glob/4.0.3: 1033 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1034 | engines: {node: '>=0.10.0'} 1035 | dependencies: 1036 | is-extglob: 2.1.1 1037 | 1038 | /is-number/7.0.0: 1039 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1040 | engines: {node: '>=0.12.0'} 1041 | 1042 | /is-stream/2.0.1: 1043 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1044 | engines: {node: '>=8'} 1045 | dev: true 1046 | 1047 | /isexe/2.0.0: 1048 | resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} 1049 | dev: true 1050 | 1051 | /jiti/1.12.9: 1052 | resolution: {integrity: sha512-TdcJywkQtcwLxogc4rSMAi479G2eDPzfW0fLySks7TPhgZZ4s/tM6stnzayIh3gS/db3zExWJyUx4cNWrwAmoQ==} 1053 | hasBin: true 1054 | dev: false 1055 | 1056 | /joycon/3.0.1: 1057 | resolution: {integrity: sha512-SJcJNBg32dGgxhPtM0wQqxqV0ax9k/9TaUskGDSJkSFSQOEWWvQ3zzWdGQRIUry2j1zA5+ReH13t0Mf3StuVZA==} 1058 | engines: {node: '>=10'} 1059 | dev: true 1060 | 1061 | /js-yaml/4.1.0: 1062 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1063 | hasBin: true 1064 | dependencies: 1065 | argparse: 2.0.1 1066 | dev: true 1067 | 1068 | /json-schema-traverse/0.4.1: 1069 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1070 | dev: true 1071 | 1072 | /json-stable-stringify-without-jsonify/1.0.1: 1073 | resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} 1074 | dev: true 1075 | 1076 | /kleur/3.0.3: 1077 | resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 1078 | engines: {node: '>=6'} 1079 | dev: true 1080 | 1081 | /kleur/4.1.4: 1082 | resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==} 1083 | engines: {node: '>=6'} 1084 | dev: true 1085 | 1086 | /levn/0.4.1: 1087 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1088 | engines: {node: '>= 0.8.0'} 1089 | dependencies: 1090 | prelude-ls: 1.2.1 1091 | type-check: 0.4.0 1092 | dev: true 1093 | 1094 | /lilconfig/2.0.3: 1095 | resolution: {integrity: sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==} 1096 | engines: {node: '>=10'} 1097 | dev: true 1098 | 1099 | /lines-and-columns/1.1.6: 1100 | resolution: {integrity: sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=} 1101 | dev: true 1102 | 1103 | /local-pkg/0.4.0: 1104 | resolution: {integrity: sha512-2XBWjO/v63JeR1HPzLJxdTVRQDB84Av2p2KtBA5ahvpyLUPubcAU6iXlAJrONcY7aSqgJhXxElAnKtnYsRolPQ==} 1105 | engines: {node: '>=14'} 1106 | dependencies: 1107 | mlly: 0.2.10 1108 | dev: true 1109 | 1110 | /lodash.camelcase/4.3.0: 1111 | resolution: {integrity: sha1-soqmKIorn8ZRA1x3EfZathkDMaY=} 1112 | dev: true 1113 | 1114 | /lodash.merge/4.6.2: 1115 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1116 | dev: true 1117 | 1118 | /lru-cache/6.0.0: 1119 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1120 | engines: {node: '>=10'} 1121 | dependencies: 1122 | yallist: 4.0.0 1123 | dev: true 1124 | 1125 | /merge-stream/2.0.0: 1126 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1127 | dev: true 1128 | 1129 | /merge2/1.4.1: 1130 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1131 | engines: {node: '>= 8'} 1132 | 1133 | /micromatch/4.0.4: 1134 | resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} 1135 | engines: {node: '>=8.6'} 1136 | dependencies: 1137 | braces: 3.0.2 1138 | picomatch: 2.3.0 1139 | 1140 | /mimic-fn/2.1.0: 1141 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1142 | engines: {node: '>=6'} 1143 | dev: true 1144 | 1145 | /minimatch/3.0.4: 1146 | resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} 1147 | dependencies: 1148 | brace-expansion: 1.1.11 1149 | dev: true 1150 | 1151 | /mlly/0.2.10: 1152 | resolution: {integrity: sha512-xfyW6c2QBGArtctzNnTV5leOKX8nOMz2simeubtXofdsdSJFSNw+Ncvrs8kxcN3pBrQLXuYBHNFV6NgZ5Ryf4A==} 1153 | dependencies: 1154 | import-meta-resolve: 1.1.1 1155 | dev: true 1156 | 1157 | /mri/1.2.0: 1158 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1159 | engines: {node: '>=4'} 1160 | dev: true 1161 | 1162 | /ms/2.1.2: 1163 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1164 | dev: true 1165 | 1166 | /mz/2.7.0: 1167 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1168 | dependencies: 1169 | any-promise: 1.3.0 1170 | object-assign: 4.1.1 1171 | thenify-all: 1.6.0 1172 | dev: true 1173 | 1174 | /natural-compare/1.4.0: 1175 | resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} 1176 | dev: true 1177 | 1178 | /node-modules-regexp/1.0.0: 1179 | resolution: {integrity: sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=} 1180 | engines: {node: '>=0.10.0'} 1181 | dev: true 1182 | 1183 | /normalize-path/3.0.0: 1184 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1185 | engines: {node: '>=0.10.0'} 1186 | dev: true 1187 | 1188 | /npm-run-path/4.0.1: 1189 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 1190 | engines: {node: '>=8'} 1191 | dependencies: 1192 | path-key: 3.1.1 1193 | dev: true 1194 | 1195 | /object-assign/4.1.1: 1196 | resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} 1197 | engines: {node: '>=0.10.0'} 1198 | dev: true 1199 | 1200 | /once/1.4.0: 1201 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} 1202 | dependencies: 1203 | wrappy: 1.0.2 1204 | dev: true 1205 | 1206 | /onetime/5.1.2: 1207 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 1208 | engines: {node: '>=6'} 1209 | dependencies: 1210 | mimic-fn: 2.1.0 1211 | dev: true 1212 | 1213 | /optionator/0.9.1: 1214 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 1215 | engines: {node: '>= 0.8.0'} 1216 | dependencies: 1217 | deep-is: 0.1.4 1218 | fast-levenshtein: 2.0.6 1219 | levn: 0.4.1 1220 | prelude-ls: 1.2.1 1221 | type-check: 0.4.0 1222 | word-wrap: 1.2.3 1223 | dev: true 1224 | 1225 | /parent-module/1.0.1: 1226 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1227 | engines: {node: '>=6'} 1228 | dependencies: 1229 | callsites: 3.1.0 1230 | dev: true 1231 | 1232 | /path-is-absolute/1.0.1: 1233 | resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} 1234 | engines: {node: '>=0.10.0'} 1235 | dev: true 1236 | 1237 | /path-key/3.1.1: 1238 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1239 | engines: {node: '>=8'} 1240 | dev: true 1241 | 1242 | /path-type/4.0.0: 1243 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1244 | engines: {node: '>=8'} 1245 | dev: true 1246 | 1247 | /picocolors/1.0.0: 1248 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1249 | dev: true 1250 | 1251 | /picomatch/2.3.0: 1252 | resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} 1253 | engines: {node: '>=8.6'} 1254 | 1255 | /pirates/4.0.1: 1256 | resolution: {integrity: sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==} 1257 | engines: {node: '>= 6'} 1258 | dependencies: 1259 | node-modules-regexp: 1.0.0 1260 | dev: true 1261 | 1262 | /pnpm/6.23.1: 1263 | resolution: {integrity: sha512-4IFtNC3d/TXc1YGtl+SOpI442S0cJQpZa9FgVdNpiy3x/UGpzQNI7Cz9dbsqWFFDukG7K81gI5LyhIWyOT6J/A==} 1264 | engines: {node: '>=12.17'} 1265 | hasBin: true 1266 | dev: true 1267 | 1268 | /postcss-load-config/3.1.0: 1269 | resolution: {integrity: sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g==} 1270 | engines: {node: '>= 10'} 1271 | peerDependencies: 1272 | ts-node: '>=9.0.0' 1273 | peerDependenciesMeta: 1274 | ts-node: 1275 | optional: true 1276 | dependencies: 1277 | import-cwd: 3.0.0 1278 | lilconfig: 2.0.3 1279 | yaml: 1.10.2 1280 | dev: true 1281 | 1282 | /prelude-ls/1.2.1: 1283 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1284 | engines: {node: '>= 0.8.0'} 1285 | dev: true 1286 | 1287 | /progress/2.0.3: 1288 | resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} 1289 | engines: {node: '>=0.4.0'} 1290 | dev: true 1291 | 1292 | /prompts/2.4.2: 1293 | resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} 1294 | engines: {node: '>= 6'} 1295 | dependencies: 1296 | kleur: 3.0.3 1297 | sisteransi: 1.0.5 1298 | dev: true 1299 | 1300 | /punycode/2.1.1: 1301 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 1302 | engines: {node: '>=6'} 1303 | dev: true 1304 | 1305 | /queue-microtask/1.2.3: 1306 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1307 | 1308 | /readdirp/3.6.0: 1309 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1310 | engines: {node: '>=8.10.0'} 1311 | dependencies: 1312 | picomatch: 2.3.0 1313 | dev: true 1314 | 1315 | /regexpp/3.2.0: 1316 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 1317 | engines: {node: '>=8'} 1318 | dev: true 1319 | 1320 | /resolve-from/4.0.0: 1321 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1322 | engines: {node: '>=4'} 1323 | dev: true 1324 | 1325 | /resolve-from/5.0.0: 1326 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1327 | engines: {node: '>=8'} 1328 | dev: true 1329 | 1330 | /reusify/1.0.4: 1331 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1332 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1333 | 1334 | /rimraf/3.0.2: 1335 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1336 | hasBin: true 1337 | dependencies: 1338 | glob: 7.2.0 1339 | dev: true 1340 | 1341 | /rollup/2.60.1: 1342 | resolution: {integrity: sha512-akwfnpjY0rXEDSn1UTVfKXJhPsEBu+imi1gqBA1ZkHGydUnkV/fWCC90P7rDaLEW8KTwBcS1G3N4893Ndz+jwg==} 1343 | engines: {node: '>=10.0.0'} 1344 | hasBin: true 1345 | optionalDependencies: 1346 | fsevents: 2.3.2 1347 | dev: true 1348 | 1349 | /run-parallel/1.2.0: 1350 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1351 | dependencies: 1352 | queue-microtask: 1.2.3 1353 | 1354 | /sade/1.7.4: 1355 | resolution: {integrity: sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==} 1356 | engines: {node: '>= 6'} 1357 | dependencies: 1358 | mri: 1.2.0 1359 | dev: true 1360 | 1361 | /semver/7.3.5: 1362 | resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} 1363 | engines: {node: '>=10'} 1364 | hasBin: true 1365 | dependencies: 1366 | lru-cache: 6.0.0 1367 | dev: true 1368 | 1369 | /shebang-command/2.0.0: 1370 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1371 | engines: {node: '>=8'} 1372 | dependencies: 1373 | shebang-regex: 3.0.0 1374 | dev: true 1375 | 1376 | /shebang-regex/3.0.0: 1377 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1378 | engines: {node: '>=8'} 1379 | dev: true 1380 | 1381 | /signal-exit/3.0.5: 1382 | resolution: {integrity: sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==} 1383 | dev: true 1384 | 1385 | /sisteransi/1.0.5: 1386 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 1387 | dev: true 1388 | 1389 | /slash/3.0.0: 1390 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1391 | engines: {node: '>=8'} 1392 | dev: true 1393 | 1394 | /string-argv/0.3.1: 1395 | resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} 1396 | engines: {node: '>=0.6.19'} 1397 | dev: true 1398 | 1399 | /strip-ansi/6.0.1: 1400 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1401 | engines: {node: '>=8'} 1402 | dependencies: 1403 | ansi-regex: 5.0.1 1404 | dev: true 1405 | 1406 | /strip-final-newline/2.0.0: 1407 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 1408 | engines: {node: '>=6'} 1409 | dev: true 1410 | 1411 | /strip-json-comments/3.1.1: 1412 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1413 | engines: {node: '>=8'} 1414 | dev: true 1415 | 1416 | /sucrase/3.20.3: 1417 | resolution: {integrity: sha512-azqwq0/Bs6RzLAdb4dXxsCgMtAaD2hzmUr4UhSfsxO46JFPAwMnnb441B/qsudZiS6Ylea3JXZe3Q497lsgXzQ==} 1418 | engines: {node: '>=8'} 1419 | hasBin: true 1420 | dependencies: 1421 | commander: 4.1.1 1422 | glob: 7.1.6 1423 | lines-and-columns: 1.1.6 1424 | mz: 2.7.0 1425 | pirates: 4.0.1 1426 | ts-interface-checker: 0.1.13 1427 | dev: true 1428 | 1429 | /supports-color/7.2.0: 1430 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1431 | engines: {node: '>=8'} 1432 | dependencies: 1433 | has-flag: 4.0.0 1434 | dev: true 1435 | 1436 | /svelte/3.44.2: 1437 | resolution: {integrity: sha512-jrZhZtmH3ZMweXg1Q15onb8QlWD+a5T5Oca4C1jYvSURp2oD35h4A5TV6t6MEa93K4LlX6BkafZPdQoFjw/ylA==} 1438 | engines: {node: '>= 8'} 1439 | dev: true 1440 | 1441 | /text-table/0.2.0: 1442 | resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} 1443 | dev: true 1444 | 1445 | /thenify-all/1.6.0: 1446 | resolution: {integrity: sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=} 1447 | engines: {node: '>=0.8'} 1448 | dependencies: 1449 | thenify: 3.3.1 1450 | dev: true 1451 | 1452 | /thenify/3.3.1: 1453 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1454 | dependencies: 1455 | any-promise: 1.3.0 1456 | dev: true 1457 | 1458 | /to-regex-range/5.0.1: 1459 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1460 | engines: {node: '>=8.0'} 1461 | dependencies: 1462 | is-number: 7.0.0 1463 | 1464 | /totalist/2.0.0: 1465 | resolution: {integrity: sha512-+Y17F0YzxfACxTyjfhnJQEe7afPA0GSpYlFkl2VFMxYP7jshQf9gXV7cH47EfToBumFThfKBvfAcoUn6fdNeRQ==} 1466 | engines: {node: '>=6'} 1467 | dev: true 1468 | 1469 | /tree-kill/1.2.2: 1470 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 1471 | hasBin: true 1472 | dev: true 1473 | 1474 | /ts-interface-checker/0.1.13: 1475 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1476 | dev: true 1477 | 1478 | /tslib/1.14.1: 1479 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 1480 | dev: true 1481 | 1482 | /tslib/2.3.1: 1483 | resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} 1484 | dev: true 1485 | 1486 | /tsm/2.1.4: 1487 | resolution: {integrity: sha512-gz1zckplzOzHdiY1HVVUoH8bl2eWxbU6uJraB31w1NQ+/kQkjix3ldYHBnWaoNnOL9q8ruS+E2Wckdcw56DzrA==} 1488 | engines: {node: '>=12'} 1489 | hasBin: true 1490 | dependencies: 1491 | esbuild: 0.13.12 1492 | dev: true 1493 | 1494 | /tsup/5.8.0_typescript@4.5.2: 1495 | resolution: {integrity: sha512-cg87uof0dumoSMN/UddkelOstg9o+/yBK3g7NAmnbyJQCdTMiRocNfRZdF8+EpYpZ/kpCwUMMsvMCilMDWz5Rg==} 1496 | hasBin: true 1497 | peerDependencies: 1498 | typescript: ^4.2.3 1499 | peerDependenciesMeta: 1500 | typescript: 1501 | optional: true 1502 | dependencies: 1503 | cac: 6.7.11 1504 | chalk: 4.1.2 1505 | chokidar: 3.5.2 1506 | debug: 4.3.2 1507 | esbuild: 0.13.12 1508 | execa: 5.1.1 1509 | globby: 11.0.4 1510 | joycon: 3.0.1 1511 | postcss-load-config: 3.1.0 1512 | resolve-from: 5.0.0 1513 | rollup: 2.60.1 1514 | sucrase: 3.20.3 1515 | tree-kill: 1.2.2 1516 | typescript: 4.5.2 1517 | transitivePeerDependencies: 1518 | - supports-color 1519 | - ts-node 1520 | dev: true 1521 | 1522 | /tsutils/3.21.0_typescript@4.5.2: 1523 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 1524 | engines: {node: '>= 6'} 1525 | peerDependencies: 1526 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 1527 | dependencies: 1528 | tslib: 1.14.1 1529 | typescript: 4.5.2 1530 | dev: true 1531 | 1532 | /type-check/0.4.0: 1533 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1534 | engines: {node: '>= 0.8.0'} 1535 | dependencies: 1536 | prelude-ls: 1.2.1 1537 | dev: true 1538 | 1539 | /type-detect/4.0.8: 1540 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 1541 | engines: {node: '>=4'} 1542 | dev: true 1543 | 1544 | /type-fest/0.20.2: 1545 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 1546 | engines: {node: '>=10'} 1547 | dev: true 1548 | 1549 | /typescript/4.5.2: 1550 | resolution: {integrity: sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==} 1551 | engines: {node: '>=4.2.0'} 1552 | hasBin: true 1553 | dev: true 1554 | 1555 | /typical/4.0.0: 1556 | resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} 1557 | engines: {node: '>=8'} 1558 | dev: true 1559 | 1560 | /unconfig/0.2.2: 1561 | resolution: {integrity: sha512-JN1MeYJ/POnjBj7NgOJJxPp6+NcD6Nd0hEuK0D89kjm9GvQQUq8HeE2Eb7PZgtu+64mWkDiqeJn1IZoLH7htPg==} 1562 | dependencies: 1563 | '@antfu/utils': 0.3.0 1564 | defu: 5.0.0 1565 | jiti: 1.12.9 1566 | dev: false 1567 | 1568 | /uri-js/4.4.1: 1569 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1570 | dependencies: 1571 | punycode: 2.1.1 1572 | dev: true 1573 | 1574 | /uvu/0.5.2: 1575 | resolution: {integrity: sha512-m2hLe7I2eROhh+tm3WE5cTo/Cv3WQA7Oc9f7JB6uWv+/zVKvfAm53bMyOoGOSZeQ7Ov2Fu9pLhFr7p07bnT20w==} 1576 | engines: {node: '>=8'} 1577 | hasBin: true 1578 | dependencies: 1579 | dequal: 2.0.2 1580 | diff: 5.0.0 1581 | kleur: 4.1.4 1582 | sade: 1.7.4 1583 | totalist: 2.0.0 1584 | dev: true 1585 | 1586 | /v8-compile-cache/2.3.0: 1587 | resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} 1588 | dev: true 1589 | 1590 | /which/2.0.2: 1591 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1592 | engines: {node: '>= 8'} 1593 | hasBin: true 1594 | dependencies: 1595 | isexe: 2.0.0 1596 | dev: true 1597 | 1598 | /windicss-runtime-dom/3.0.0: 1599 | resolution: {integrity: sha512-a12Uhu71yT1U8w0PzJ3amF9xmC8b1rWFLgXEfI/UyuwUi6D1vUACOO6vb0iY4T4OtP/bJAjQMM7lv3hMWSwLuQ==} 1600 | dev: false 1601 | 1602 | /windicss/3.5.4: 1603 | resolution: {integrity: sha512-x2Iu0a69dtNiKHMkR886lx0WKbZI5GqvXyvGBCJ2VA6rcjKYjnzCA/Ljd6hNQBfqlkSum8J+qAVcCfLzQFI4rQ==} 1604 | engines: {node: '>= 12'} 1605 | hasBin: true 1606 | dev: false 1607 | 1608 | /word-wrap/1.2.3: 1609 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 1610 | engines: {node: '>=0.10.0'} 1611 | dev: true 1612 | 1613 | /wrappy/1.0.2: 1614 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} 1615 | dev: true 1616 | 1617 | /yallist/4.0.0: 1618 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1619 | dev: true 1620 | 1621 | /yaml/1.10.2: 1622 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 1623 | engines: {node: '>= 6'} 1624 | dev: true 1625 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import type { IconifyJSON } from '@iconify/types' 2 | // import { useConfig, useDebugger } from '@nbhr/utils' 3 | import type { UnoGenerator } from '@unocss/core' 4 | import { createGenerator } from '@unocss/core' 5 | import UnocssIcons from '@unocss/preset-icons' 6 | import fg from 'fast-glob' 7 | import { readFileSync } from 'fs' 8 | import { parse, preprocess } from 'svelte/compiler' 9 | import type { 10 | PreprocessorGroup, 11 | Processed, 12 | } from 'svelte/types/compiler/preprocess' 13 | import { Processor } from 'windicss/lib' 14 | // import type { FullConfig } from 'windicss/types/interfaces' 15 | import { CSSParser } from 'windicss/utils/parser' 16 | import { StyleSheet } from 'windicss/utils/style' 17 | import { globalStyleSheet, Magician, SetObject } from './utils' 18 | import { loadConfig } from 'unconfig' 19 | import { FullConfig } from 'windicss/types/interfaces' 20 | 21 | // const DEV = false 22 | // let windiConfig: FullConfig 23 | // let configMTime: number 24 | // let OPTIONS: BaseConfig 25 | 26 | let entryFileName = '' 27 | 28 | interface generatorObject { 29 | data: SetObject 30 | updatedAt: number 31 | writtenAt?: number 32 | } 33 | 34 | const raw = new Map([ 35 | [ 36 | '__GLOBAL', 37 | { 38 | data: { 39 | inlineClasses: new Set(), 40 | inlineDirectives: new Set(), 41 | inlineExpressions: new Set(), 42 | inlineIcons: new Set(), 43 | inlineAttributify: new Map(), 44 | }, 45 | updatedAt: Date.now(), 46 | }, 47 | ], 48 | ]) 49 | 50 | async function generateCSS( 51 | key: string, 52 | attributes: Record 53 | ) { 54 | const t = raw.get(key) 55 | 56 | // MARK: WINDI DEFAULT 57 | // const FILESHEET = CSS_STYLESHEETS.get(filename || '') || undefined 58 | // if (FILESHEET && attributes['windi:global']) { 59 | // INLINE_STYLE = globalStyleSheet(FILESHEET['code']).build() 60 | // } else if (FILESHEET) { 61 | // INLINE_STYLE = FILESHEET['code'].build() 62 | // } 63 | const defaultStyleSheet = generatorWindi.interpret( 64 | Array.from( 65 | new Set([ 66 | ...(t?.data.inlineClasses || new Set()), 67 | ...(t?.data.inlineDirectives || new Set()), 68 | ...(t?.data.inlineExpressions || new Set()), 69 | ]) 70 | ).join(' ') 71 | ).styleSheet 72 | let defaultStyles = '' 73 | if (attributes['windi:global'] || attributes['windi-inline-global']) { 74 | defaultStyles = globalStyleSheet(defaultStyleSheet).build() 75 | } else { 76 | defaultStyles = defaultStyleSheet.build() 77 | } 78 | 79 | // MARK: ATTRIBUTIFY 80 | const nObj: Record = {} 81 | t?.data.inlineAttributify.forEach((v: Set, k: string) => { 82 | nObj[k] = Array.from(v) 83 | }) 84 | 85 | const attributifyStyleSheet = generatorWindi.attributify(nObj).styleSheet 86 | let attributifyStyles = '' 87 | if (attributes['windi:global'] || attributes['windi-inline-global']) { 88 | attributifyStyles = globalStyleSheet(attributifyStyleSheet).build() 89 | } else { 90 | attributifyStyles = attributifyStyleSheet.build() 91 | } 92 | 93 | // MARK: ICONS (experimental) 94 | let iconStyles = '' 95 | if (generatorUno && configuration.experimental?.icons != undefined) { 96 | iconStyles = await generatorUno 97 | .generate(t?.data.inlineIcons || '') 98 | .then(resolve => resolve.css) 99 | } 100 | return { defaultStyles, attributifyStyles, iconStyles } 101 | } 102 | 103 | function agent(): PreprocessorGroup { 104 | let result: SetObject 105 | return { 106 | async markup({ content, filename }): Promise { 107 | if (!filename) return { code: content } 108 | // console.log(filename, 'markup agent') 109 | let worker = new Magician(content, filename, configuration) 110 | worker = worker.prepare() 111 | worker = worker.setInject() 112 | worker = worker.extract() 113 | result = worker.getSets() 114 | raw.set(filename, { 115 | data: result, 116 | updatedAt: Date.now(), 117 | }) 118 | 119 | return { 120 | code: worker.getContent(), 121 | } 122 | }, 123 | } 124 | } 125 | 126 | function main(): PreprocessorGroup { 127 | if (configuration.experimental?.scan !== undefined) { 128 | const files = fg.sync(['src/**/*.svelte'], {}) 129 | for (const file of files) { 130 | const content = readFileSync(file).toString() 131 | const filename = file 132 | const ast = parse(content, { filename }) 133 | const hasGlobalInline = ast.css.attributes.some( 134 | el => el.name == 'windi-inline-global' 135 | ) 136 | console.log(filename, hasGlobalInline) 137 | let worker = new Magician(content, filename, configuration) 138 | worker = worker.prepare() 139 | worker = worker.extract() 140 | const result = worker.getSets() 141 | if (hasGlobalInline) { 142 | const global = raw.get('__GLOBAL')!.data 143 | raw.set('__GLOBAL', { 144 | data: { 145 | inlineClasses: new Set([ 146 | ...global.inlineClasses, 147 | ...result.inlineClasses, 148 | ]), 149 | inlineDirectives: new Set([ 150 | ...global.inlineDirectives, 151 | ...result.inlineDirectives, 152 | ]), 153 | inlineExpressions: new Set([ 154 | ...global.inlineExpressions, 155 | ...result.inlineExpressions, 156 | ]), 157 | inlineIcons: new Set([ 158 | ...global.inlineIcons, 159 | ...result.inlineIcons, 160 | ]), 161 | inlineAttributify: new Map([ 162 | ...global.inlineAttributify, 163 | ...result.inlineAttributify, 164 | ]), 165 | }, 166 | updatedAt: Date.now(), 167 | }) 168 | raw.set(filename, { 169 | data: { 170 | inlineClasses: new Set(), 171 | inlineDirectives: new Set(), 172 | inlineExpressions: new Set(), 173 | inlineIcons: new Set(), 174 | inlineAttributify: new Map(), 175 | }, 176 | updatedAt: Date.now(), 177 | }) 178 | } else { 179 | raw.set(filename, { 180 | data: result, 181 | updatedAt: Date.now(), 182 | }) 183 | } 184 | } 185 | } 186 | 187 | return { 188 | async style({ content, attributes, filename }): Promise { 189 | if (!filename) return { code: content } 190 | // console.log(filename, 'style main') 191 | // // MARK: PREFLIGHTS 192 | // if (OPTIONS.preflights === true && attributes['windi:preflights:global']) { 193 | // const PREFLIGHTS = PROCESSOR.preflight() 194 | // PREFLIGHTS_STYLE = globalStyleSheet(PREFLIGHTS).build() 195 | // } else if (OPTIONS.preflights === true && attributes['windi:preflights']) { 196 | // const PREFLIGHTS = PROCESSOR.preflight() 197 | // PREFLIGHTS_STYLE = PREFLIGHTS.build() 198 | // } 199 | let preflightStyleSheet = new StyleSheet() 200 | if ( 201 | attributes['windi:preflights:global'] || 202 | attributes['windi-preflights-global'] 203 | ) { 204 | preflightStyleSheet = globalStyleSheet(generatorWindi.preflight()) 205 | } 206 | const preflightStyles = preflightStyleSheet.build() 207 | 208 | // // MARK: SAFELIST 209 | // if (OPTIONS.safeList && attributes['windi:safelist:global']) { 210 | // const SAFELIST = PROCESSOR.interpret(OPTIONS.safeList).styleSheet 211 | // SAFELIST_STYLE = globalStyleSheet(SAFELIST).build() 212 | // if (OPTIONS.experimental && OPTIONS.experimental.icons != undefined) { 213 | // let UNO_SAFELIST_STYLE = '' 214 | // const { css } = await UNO.generate(OPTIONS.safeList) 215 | // const UNO_SAFELIST_STYLESHEET = new CSSParser(css).parse() 216 | // UNO_SAFELIST_STYLE = globalStyleSheet(UNO_SAFELIST_STYLESHEET).build() 217 | // SAFELIST_STYLE += UNO_SAFELIST_STYLE 218 | // } 219 | // } else if (OPTIONS.safeList && attributes['windi:safelist']) { 220 | // const SAFELIST = PROCESSOR.interpret(OPTIONS.safeList).styleSheet 221 | // SAFELIST_STYLE = SAFELIST.build() 222 | // if (OPTIONS.experimental && OPTIONS.experimental.icons != undefined) { 223 | // let UNO_SAFELIST_STYLE = '' 224 | // const { css } = await UNO.generate(OPTIONS.safeList) 225 | // UNO_SAFELIST_STYLE = css 226 | // SAFELIST_STYLE += UNO_SAFELIST_STYLE 227 | // } 228 | // } 229 | let safelistStyleSheet = new StyleSheet() 230 | let safelistIconsStyleSheet = new StyleSheet() 231 | if ( 232 | attributes['windi:safelist:global'] || 233 | attributes['windi-safelist-global'] 234 | ) { 235 | safelistStyleSheet = globalStyleSheet( 236 | generatorWindi.interpret(configuration.safeList || '').styleSheet 237 | ) 238 | if (generatorUno && configuration.experimental?.icons != undefined) { 239 | const { css } = await generatorUno.generate( 240 | configuration.safeList || '' 241 | ) 242 | safelistIconsStyleSheet = globalStyleSheet(new CSSParser(css).parse()) 243 | } 244 | } 245 | let safelistStyles = safelistStyleSheet.build() 246 | safelistStyles += safelistIconsStyleSheet.build() 247 | 248 | let defaultStyles, attributifyStyles, iconStyles 249 | if (entryFileName.length > 0) { 250 | const result = await generateCSS(filename, attributes) 251 | defaultStyles = result.defaultStyles 252 | attributifyStyles = result.attributifyStyles 253 | iconStyles = result.iconStyles 254 | } else { 255 | entryFileName = filename 256 | const resultGlobal = await generateCSS('__GLOBAL', { 257 | 'windi-inline-global': true, 258 | }) 259 | defaultStyles = resultGlobal.defaultStyles 260 | attributifyStyles = resultGlobal.attributifyStyles 261 | iconStyles = resultGlobal.iconStyles 262 | const result = await generateCSS(filename, attributes) 263 | defaultStyles += result.defaultStyles 264 | attributifyStyles += result.attributifyStyles 265 | iconStyles += result.iconStyles 266 | } 267 | 268 | // MARK: CUSTOM CSS + WINDI @apply 269 | // let CSS: StyleSheet 270 | // CSS_SOURCE = content 271 | // if (CSS_SOURCE && attributes['global']) { 272 | // CSS = new CSSParser(CSS_SOURCE, PROCESSOR).parse() 273 | // CSS_STYLE = globalStyleSheet(CSS).build() 274 | // } else if (CSS_SOURCE) { 275 | // const tmpCSS = CSS_SOURCE 276 | // const rules = [...(tmpCSS.matchAll(/(?[^}]*){(?[^}]*)}/gim) || [])] 277 | // rules.forEach(rule => { 278 | // if (rule.groups && rule.groups.selector.includes(':global')) { 279 | // const globalCSS = new CSSParser(rule[0], PROCESSOR).parse() 280 | // const buildGlobalCSS = globalStyleSheet(globalCSS).build() 281 | // if (buildGlobalCSS.length > 0) CSS_STYLE += buildGlobalCSS + '\n' 282 | // } else { 283 | // CSS = new CSSParser(rule[0], PROCESSOR).parse() 284 | // const buildLocalCSS = CSS.build() 285 | // if (buildLocalCSS.length > 0) CSS_STYLE += buildLocalCSS + '\n' 286 | // } 287 | // }) 288 | // } 289 | const cssStyleSheet = 290 | new CSSParser(content, generatorWindi).parse() || new StyleSheet() 291 | 292 | let cssStyles = '' 293 | if (attributes['global']) { 294 | cssStyles = globalStyleSheet(cssStyleSheet).build() 295 | } else { 296 | cssStyles = cssStyleSheet.build() 297 | } 298 | 299 | // // MARK: COMBINE 300 | // let newStyleCode = '\n' 301 | // if (PREFLIGHTS_STYLE.length > 0) newStyleCode += PREFLIGHTS_STYLE + '\n' 302 | // if (SAFELIST_STYLE.length > 0) newStyleCode += SAFELIST_STYLE + '\n' 303 | // if (CSS_STYLE.length > 0) newStyleCode += CSS_STYLE + '\n' 304 | // if (INLINE_STYLE.length > 0) newStyleCode += INLINE_STYLE + '\n' 305 | // if (UNO_STYLE.length > 0) newStyleCode += UNO_STYLE + '\n' 306 | let newCode = '' 307 | if (preflightStyles.length > 0) newCode += '\n' + preflightStyles 308 | if (safelistStyles.length > 0) newCode += '\n' + safelistStyles 309 | if (defaultStyles.length > 0) newCode += '\n' + defaultStyles 310 | if (attributifyStyles.length > 0) newCode += '\n' + attributifyStyles 311 | if (iconStyles.length > 0) newCode += '\n' + iconStyles 312 | if (cssStyles.length > 0) newCode += '\n' + cssStyles 313 | newCode += '\n' 314 | 315 | return { 316 | code: newCode, 317 | } 318 | }, 319 | } 320 | } 321 | 322 | export interface BaseConfig { 323 | silent?: boolean 324 | mode?: 'development' | 'production' 325 | configPath?: string 326 | disableFormat?: boolean 327 | devTools?: { 328 | enabled: boolean 329 | completions?: boolean 330 | } 331 | // 332 | safeList?: string 333 | preflights?: boolean 334 | // bundle?: string; 335 | // debug?: boolean; 336 | // compile?: boolean; 337 | // prefix?: string; 338 | // verbosity?: number; 339 | experimental?: { 340 | icons?: { 341 | prefix?: string 342 | collections?: Record 343 | extraProperties?: Record 344 | } 345 | scan?: boolean 346 | } 347 | } 348 | export type DefaultConfig = BaseConfig 349 | export type UserConfig = BaseConfig 350 | 351 | const defaultConfig: DefaultConfig = { 352 | silent: false, 353 | // mode 354 | // configPath 355 | disableFormat: false, 356 | devTools: { 357 | enabled: false, 358 | }, 359 | safeList: undefined, 360 | preflights: true, 361 | // bundle: undefined, 362 | // compile: false, 363 | // prefix: 'windi-', 364 | // verbosity: 1, 365 | // debug: false, 366 | } 367 | 368 | let configuration: BaseConfig 369 | let generatorWindi: Processor 370 | let generatorUno: UnoGenerator 371 | let windiConfiguration: FullConfig 372 | 373 | // if (windiConfig != undefined) { 374 | // if (OPTIONS.configPath) { 375 | // // get modified time of config file 376 | // const mTime = statSync(OPTIONS.configPath).mtimeMs 377 | // if (mTime > configMTime) { 378 | // const tmpConfigPath = `./${Date.now()}windi.config.js` 379 | // copyFileSync(OPTIONS.configPath, tmpConfigPath) 380 | // loadConfig(tmpConfigPath) 381 | // .catch(e => { 382 | // useDebugger.createLog('Unknown Error while loading the config') 383 | // console.error(e) 384 | // }) 385 | // .finally(() => { 386 | // rmSync(tmpConfigPath) 387 | // resolve({ 388 | // code: _preprocess(content, filename), 389 | // }) 390 | // }) 391 | // } else { 392 | // resolve({ 393 | // code: _preprocess(content, filename), 394 | // }) 395 | // } 396 | // } 397 | // } else { 398 | // if (OPTIONS.configPath) { 399 | // loadConfig(OPTIONS.configPath) 400 | // .catch(e => { 401 | // useDebugger.createLog('Unknown Error while loading the config') 402 | // console.error(e) 403 | // }) 404 | // .finally(() => { 405 | // resolve({ 406 | // code: _preprocess(content, filename), 407 | // }) 408 | // }) 409 | // } else { 410 | // PROCESSOR.loadConfig() 411 | // resolve({ 412 | // code: _preprocess(content, filename), 413 | // }) 414 | // } 415 | // } 416 | 417 | // function loadConfig(path: string): Promise { 418 | // useDebugger.createLog('Trying to load windi configuration from ' + path) 419 | // return useConfig.load(path).then(config => { 420 | // // write current unix timestamp to configMTime 421 | // configMTime = Date.now() 422 | // if (config.preflight === false) OPTIONS.preflights = false 423 | // if (config.safelist && typeof config.safelist == 'string') { 424 | // OPTIONS.safeList = config.safelist 425 | // } else if (config.safelist) { 426 | // const tmpSafelist = config.safelist as (string | string[])[] 427 | // OPTIONS.safeList = [...new Set(tmpSafelist.flat(Infinity))].join(' ') 428 | // } 429 | // console.log(config) 430 | // console.log(JSON.stringify(config.theme)) 431 | // PROCESSOR.loadConfig(config) 432 | // useDebugger.createLog('Configuration loaded successfully') 433 | // windiConfig = config 434 | // }) 435 | // } 436 | export function windi(userConfig: UserConfig = {}): PreprocessorGroup { 437 | configuration = { ...defaultConfig, ...userConfig } 438 | generatorWindi = new Processor() 439 | const steps: PreprocessorGroup[] = [] 440 | if (configuration.experimental?.icons != undefined) { 441 | generatorUno = createGenerator( 442 | { 443 | presets: [ 444 | UnocssIcons({ 445 | ...configuration.experimental.icons, 446 | }), 447 | ], 448 | }, 449 | {} 450 | ) 451 | } 452 | 453 | if (configuration.experimental?.scan == undefined) { 454 | steps.push(agent()) 455 | } 456 | steps.push(main()) 457 | 458 | return { 459 | async markup({ content, filename }): Promise { 460 | if (!windiConfiguration) { 461 | const { config } = await loadConfig({ 462 | merge: false, 463 | sources: [ 464 | { 465 | files: 'windi.config', 466 | // default extensions 467 | extensions: ['ts', 'mts', 'cts', 'js', 'mjs', 'cjs', 'json', ''], 468 | }, 469 | ], 470 | }) 471 | windiConfiguration = config 472 | if (typeof config?.safelist == 'string') { 473 | configuration.safeList = config.safelist 474 | } else if (config?.safelist) { 475 | configuration.safeList = [ 476 | ...new Set(config.safelist.flat(Infinity)), 477 | ].join(' ') 478 | } 479 | generatorWindi.loadConfig(config) 480 | } 481 | let currentContent = content 482 | 483 | for (const step of steps) { 484 | const code = (await preprocess(currentContent, step, { filename })).code 485 | currentContent = code 486 | } 487 | 488 | return { 489 | code: currentContent, 490 | } 491 | }, 492 | } 493 | } 494 | 495 | export default windi 496 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | import { parse } from 'svelte/compiler' 2 | import { StyleSheet } from 'windicss/utils/style' 3 | import type { BaseConfig } from './index' 4 | 5 | export function globalStyleSheet(styleSheet: StyleSheet): StyleSheet { 6 | // turn all styles in stylesheet to global style 7 | styleSheet.children.forEach(style => { 8 | if ( 9 | !style.rule.includes(':global') && 10 | style.meta.group !== 'keyframes' && 11 | !style.atRules?.some(rule => rule.includes('@keyframes')) 12 | ) { 13 | style.wrapRule((rule: string) => `:global(${rule})`) 14 | } 15 | if (style.atRules && !style.atRules.includes('-global-')) { 16 | style.atRules[0] = style.atRules[0].replace( 17 | /(?<=keyframes )(?=\w)/gi, 18 | '-global-' 19 | ) 20 | } 21 | }) 22 | return styleSheet 23 | } 24 | 25 | export interface SetObject { 26 | inlineClasses: Set 27 | inlineDirectives: Set 28 | inlineExpressions: Set 29 | inlineIcons: Set 30 | inlineAttributify: Map> 31 | } 32 | 33 | export class Magician { 34 | content: string 35 | filename: string 36 | configuration: BaseConfig = {} 37 | classes: string[] = [] 38 | expressions: string[] = [] 39 | directives: string[] = [] 40 | attributifies: Map = new Map() 41 | 42 | constructor( 43 | content: string, 44 | filename: string, 45 | configuration: BaseConfig = {} 46 | ) { 47 | this.content = content 48 | this.filename = filename 49 | this.configuration = configuration 50 | } 51 | 52 | prepare(): this { 53 | // TODO: find a way to allow comments in processing 54 | this.content = this.content.replace(//g, '') 55 | this.content = this.content.replace( 56 | /([!\w][\w:_/-]*?):\(([\w\s/-]*?)\)/gm, 57 | (_, groupOne: string, groupTwo: string) => 58 | groupTwo 59 | .split(/\s/g) 60 | .map(cssClass => `${groupOne}:${cssClass}`) 61 | .join(' ') 62 | ) 63 | 64 | return this 65 | } 66 | 67 | setInject(): this { 68 | // const ast = parse(content, { filename }) 69 | let ast 70 | try { 71 | ast = parse(this.content, {}) 72 | } catch (error) { 73 | // 74 | } 75 | if (ast && !ast.css) { 76 | this.content += '\n\n' 77 | } else if (ast && (ast.css.content.start == ast.css.content.end)) { 78 | this.content = this.content.replace("", "") 79 | } 80 | 81 | return this 82 | } 83 | 84 | extract(): this { 85 | // console.log(this.content) 86 | this.processClassAttribute() 87 | this.processClassAttributeWithCurly() 88 | this.processDirectiveClass() 89 | this.processAttributify() 90 | this.processWindiExpression() 91 | 92 | return this 93 | } 94 | 95 | processClassAttribute(): this { 96 | const CLASS_MATCHES = [ 97 | ...this.content.matchAll(/class=(['"`])(?[^\1]+?)\1/gi), 98 | ] 99 | if (CLASS_MATCHES.length < 1) return this 100 | for (const match of CLASS_MATCHES) { 101 | const cleanMatch = match.groups?.classes 102 | .replace(/windi[`].+?[`]/gi, ' ') // windi`XYZ` 103 | .replace(/(? { 114 | return c.length > 0 115 | }) 116 | ) 117 | } 118 | return this 119 | } 120 | 121 | processClassAttributeWithCurly(): this { 122 | const CLASS_MATCHES = [ 123 | ...this.content.matchAll(/class=([{])(?[^}]+?)}/gi), 124 | ] 125 | 126 | if (CLASS_MATCHES.length < 1) return this 127 | for (const match of CLASS_MATCHES) { 128 | const cleanMatch = match.groups?.classes 129 | .replace(/windi[`].+?[`]/gi, ' ') // windi`XYZ` 130 | .replace(/(? { 141 | return c.length > 0 142 | }) 143 | ) 144 | } 145 | return this 146 | } 147 | 148 | processDirectiveClass(): this { 149 | const tmpContent = this.content 150 | const DIRECTIVE_CLASS_MATCHES = [ 151 | ...tmpContent.matchAll(/\s(class):(?[^=]+)(=)/gi), 152 | ] 153 | if (DIRECTIVE_CLASS_MATCHES.length < 1) return this 154 | for (const match of DIRECTIVE_CLASS_MATCHES) { 155 | this.directives = this.directives.concat(match[2]) 156 | // this.directiveClassList.push(match[2]) 157 | } 158 | this.content = tmpContent 159 | return this 160 | } 161 | 162 | processWindiExpression(): this { 163 | const tmpContent = this.content 164 | const WINDI_MATCHES = [...tmpContent.matchAll(/windi`(?.*?)`/gi)] 165 | if (WINDI_MATCHES.length < 1) return this 166 | for (const match of WINDI_MATCHES) { 167 | const cleanedMatch = match[1] 168 | .replace( 169 | /(?[^\2]+?)\2/gi), 184 | ] 185 | 186 | if (ATTRIBUTIFY_CLASS_MATCHES.length < 1) return this 187 | for (const match of ATTRIBUTIFY_CLASS_MATCHES) { 188 | if (match[1] == 'class') continue 189 | if (match[1] == 'href') continue 190 | if (match[1] == 'for') continue 191 | // if (match[1] == 'this') continue 192 | // if (match[1] == 'name') continue 193 | // if (match[1] == 'stroke') continue 194 | // if (match[1] == 'd') continue 195 | // if (match[1] == 'slot') continue 196 | // if (match[1] == 'viewBox') continue 197 | // if (match[1] == 'points') continue 198 | // if (match[1] == 'label') continue 199 | // if (match[1] == 'xmlns') continue 200 | if (match[1].startsWith('class:')) continue 201 | const cleanedMatch = match[3] 202 | .replace( 203 | /windi[`].+?[`]|(? = new Set([]) 231 | if (this.configuration.experimental?.icons != undefined) { 232 | iC = new Set( 233 | this.classes.filter( 234 | c => 235 | !c.startsWith( 236 | this.configuration.experimental?.icons?.prefix || 'i-' 237 | ) 238 | ) 239 | ) 240 | } else { 241 | iC = new Set(this.classes) 242 | } 243 | 244 | const iD = new Set(this.directives) 245 | 246 | const iE = new Set(this.expressions) 247 | 248 | let iI: Set = new Set([]) 249 | if (this.configuration.experimental?.icons != undefined) { 250 | iI = new Set( 251 | this.classes.filter(c => 252 | c.startsWith(this.configuration.experimental?.icons?.prefix || 'i-') 253 | ) 254 | ) 255 | } 256 | 257 | const iA = new Map() 258 | this.attributifies.forEach((v, k) => { 259 | const unique = new Set(v) 260 | iA.set(k, unique) 261 | }) 262 | return { 263 | inlineClasses: iC, 264 | inlineDirectives: iD, 265 | inlineExpressions: iE, 266 | inlineIcons: iI, 267 | inlineAttributify: iA, 268 | } 269 | } 270 | } 271 | -------------------------------------------------------------------------------- /svelte.config.mjs: -------------------------------------------------------------------------------- 1 | import { windi } from './dist/index.js' 2 | export default { 3 | preprocess: [ 4 | windi({ 5 | silent: false, 6 | experimental: { 7 | icons: { 8 | prefix: 'i-', 9 | extraProperties: { 10 | display: 'inline-block', 11 | }, 12 | }, 13 | }, 14 | }), 15 | ], 16 | } 17 | -------------------------------------------------------------------------------- /tests/assets/expected/animations/case-01.svelte: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | -------------------------------------------------------------------------------- /tests/assets/expected/animations/case-02.svelte: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | -------------------------------------------------------------------------------- /tests/assets/expected/attributify/case-01.svelte: -------------------------------------------------------------------------------- 1 |
hello world
2 | 3 | -------------------------------------------------------------------------------- /tests/assets/expected/attributify/case-02.svelte: -------------------------------------------------------------------------------- 1 |
hello world
2 | 3 | -------------------------------------------------------------------------------- /tests/assets/expected/attributify/case-03.svelte: -------------------------------------------------------------------------------- 1 |

Hello

2 | 3 | 9 | -------------------------------------------------------------------------------- /tests/assets/expected/attributify/case-04.svelte: -------------------------------------------------------------------------------- 1 |
6 | Hello World 7 |
8 | 9 | -------------------------------------------------------------------------------- /tests/assets/expected/classAttribute/case-01.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 |
5 |
my text is large
6 |
7 | 8 | 14 | -------------------------------------------------------------------------------- /tests/assets/expected/classAttribute/case-02.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 |
5 |
my text is large
6 |
7 | 8 | 14 | -------------------------------------------------------------------------------- /tests/assets/expected/classAttribute/case-03.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 |
5 |
my text is large
6 |
7 | 8 | 14 | -------------------------------------------------------------------------------- /tests/assets/expected/classAttribute/case-04.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 |
my text is large
7 |
8 | 9 | 19 | -------------------------------------------------------------------------------- /tests/assets/expected/classAttribute/case-05.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 |
5 |

Hello World

6 |
7 | 8 | 18 | -------------------------------------------------------------------------------- /tests/assets/expected/classAttribute/case-06.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 |
5 |

Hello World

6 |
7 | 8 | 18 | -------------------------------------------------------------------------------- /tests/assets/expected/styleTag/case-01.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /tests/assets/expected/styleTag/case-02.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 | 25 | 26 |

Hello World

-------------------------------------------------------------------------------- /tests/assets/expected/styleTag/case-03.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 |
5 |
6 |

Hello World

7 |
8 |
9 | 10 | 16 | -------------------------------------------------------------------------------- /tests/assets/expected/styleTag/case-04.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 |
5 |

Hello World

6 |
7 | 8 | 14 | -------------------------------------------------------------------------------- /tests/assets/expected/unocss/case-01.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 | 9 | 10 |
11 |
-------------------------------------------------------------------------------- /tests/assets/expected/windiExpression/case-01.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 | 10 |
my class should be dynamic
11 |
12 | 13 | 23 | -------------------------------------------------------------------------------- /tests/assets/expected/windiExpression/case-02.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 |
12 | 13 |
my class should be dynamic
14 |
15 | 16 | 26 | -------------------------------------------------------------------------------- /tests/assets/expected/windiExpression/case-03.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 |
12 | 13 |
my class should be dynamic
14 |
15 | 16 | 26 | -------------------------------------------------------------------------------- /tests/assets/expected/windiExpression/case-04.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 | 10 |
my class should be dynamic
11 |
12 | 13 | 23 | -------------------------------------------------------------------------------- /tests/assets/expected/windiExpression/case-05.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 |
16 | 17 |
my class should be dynamic
18 |
19 | 20 | 30 | -------------------------------------------------------------------------------- /tests/assets/expected/windiExpression/case-06.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 |
14 | 15 |
my class should be dynamic
16 |
17 | 18 | 28 | -------------------------------------------------------------------------------- /tests/assets/expected/windiExpression/case-07.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 |
14 | 15 |
my class should be dynamic
16 |
17 | 18 | 28 | -------------------------------------------------------------------------------- /tests/assets/input/animations/case-01.svelte: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | -------------------------------------------------------------------------------- /tests/assets/input/animations/case-02.svelte: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | -------------------------------------------------------------------------------- /tests/assets/input/attributify/case-01.svelte: -------------------------------------------------------------------------------- 1 |
hello world
2 | 3 | -------------------------------------------------------------------------------- /tests/assets/input/attributify/case-02.svelte: -------------------------------------------------------------------------------- 1 |
hello world
2 | 3 | -------------------------------------------------------------------------------- /tests/assets/input/attributify/case-03.svelte: -------------------------------------------------------------------------------- 1 |

Hello

2 | 3 | 5 | -------------------------------------------------------------------------------- /tests/assets/input/attributify/case-04.svelte: -------------------------------------------------------------------------------- 1 |
6 | Hello World 7 |
8 | 9 | -------------------------------------------------------------------------------- /tests/assets/input/classAttribute/case-01.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 |
5 |
my text is large
6 |
7 | 8 | 10 | -------------------------------------------------------------------------------- /tests/assets/input/classAttribute/case-02.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 |
5 |
my text is large
6 |
7 | 8 | 10 | -------------------------------------------------------------------------------- /tests/assets/input/classAttribute/case-03.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 |
5 |
my text is large
6 |
7 | 8 | 10 | -------------------------------------------------------------------------------- /tests/assets/input/classAttribute/case-04.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 |
my text is large
7 |
8 | 9 | 11 | -------------------------------------------------------------------------------- /tests/assets/input/classAttribute/case-05.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 |
5 |

Hello World

6 |
7 | 8 | 10 | -------------------------------------------------------------------------------- /tests/assets/input/classAttribute/case-06.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 |
5 |

Hello World

6 |
7 | 8 | 10 | -------------------------------------------------------------------------------- /tests/assets/input/styleTag/case-01.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /tests/assets/input/styleTag/case-02.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 | 17 | 18 |

Hello World

-------------------------------------------------------------------------------- /tests/assets/input/styleTag/case-03.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 |
5 |
6 |

Hello World

7 |
8 |
9 | -------------------------------------------------------------------------------- /tests/assets/input/styleTag/case-04.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 |
5 |

Hello World

6 |
7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/assets/input/template.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | 10 | -------------------------------------------------------------------------------- /tests/assets/input/unocss/case-01.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | 7 |
8 |
-------------------------------------------------------------------------------- /tests/assets/input/windiExpression/case-01.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 | 10 |
my class should be dynamic
11 |
12 | 13 | 15 | -------------------------------------------------------------------------------- /tests/assets/input/windiExpression/case-02.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 |
12 | 13 |
my class should be dynamic
14 |
15 | 16 | 18 | -------------------------------------------------------------------------------- /tests/assets/input/windiExpression/case-03.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 |
12 | 13 |
my class should be dynamic
14 |
15 | 16 | 18 | -------------------------------------------------------------------------------- /tests/assets/input/windiExpression/case-04.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 | 10 |
my class should be dynamic
11 |
12 | 13 | 15 | -------------------------------------------------------------------------------- /tests/assets/input/windiExpression/case-05.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 |
16 | 17 |
my class should be dynamic
18 |
19 | 20 | 22 | -------------------------------------------------------------------------------- /tests/assets/input/windiExpression/case-06.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 |
14 | 15 |
my class should be dynamic
16 |
17 | 18 | 20 | -------------------------------------------------------------------------------- /tests/assets/input/windiExpression/case-07.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 |
14 | 15 |
my class should be dynamic
16 |
17 | 18 | 20 | -------------------------------------------------------------------------------- /tests/usage.ts: -------------------------------------------------------------------------------- 1 | import { readdirSync, readFileSync } from 'fs' 2 | import { preprocess } from 'svelte/compiler' 3 | import { suite } from 'uvu' 4 | import { fixture } from 'uvu/assert' 5 | 6 | readdirSync('tests/assets/input/', { withFileTypes: true }).forEach(dirent => { 7 | if (dirent.isDirectory()) { 8 | const test = suite(dirent.name) 9 | readdirSync('tests/assets/input/' + dirent.name, { 10 | withFileTypes: true, 11 | }).forEach(file => { 12 | if (file.isFile()) { 13 | test(dirent.name + '_' + file.name, async () => { 14 | const input = readFileSync( 15 | 'tests/assets/input/' + dirent.name + '/' + file.name, 16 | 'utf-8' 17 | ) 18 | const expected = readFileSync( 19 | 'tests/assets/expected/' + dirent.name + '/' + file.name, 20 | 'utf-8' 21 | ) 22 | const { windi } = await import('../src/index') 23 | const { code } = await preprocess( 24 | input, 25 | windi({ 26 | silent: true, 27 | experimental: { 28 | icons: { 29 | prefix: 'i-', 30 | extraProperties: { 31 | display: 'inline-block', 32 | }, 33 | }, 34 | }, 35 | }), 36 | { 37 | filename: file.name, 38 | } 39 | ) 40 | fixture(code, expected) 41 | }) 42 | } 43 | }) 44 | test.run() 45 | } 46 | }) 47 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2015", 4 | "module": "ES2020", 5 | "strict": true, 6 | "moduleResolution": "node", 7 | "esModuleInterop": true, 8 | "skipLibCheck": true, 9 | "forceConsistentCasingInFileNames": true, 10 | "lib": ["ES2021.String", "ES2020.String", "ES2019.Object", "ES2019.Array"] 11 | } 12 | } 13 | --------------------------------------------------------------------------------