├── .eslintrc.cjs ├── .github └── workflows │ ├── build.yml │ └── release.yml ├── .gitignore ├── .husky └── pre-commit ├── .npmrc ├── .prettierrc.mjs ├── example ├── App.vue ├── components │ └── corner │ │ └── index.ts ├── index.css ├── index.html ├── index.ts ├── layouts │ └── Default.tsx ├── package.json ├── pages │ └── page.tsx ├── pnpm-lock.yaml ├── postcss.config.cjs ├── shims.d.ts ├── tsconfig.json ├── uno.config.ts └── vite.config.ts ├── package.json ├── pnpm-lock.yaml ├── postcss.config.cjs ├── readme.md ├── renovate.json ├── rollup.config.js ├── src ├── __tests__ │ └── index.test.ts ├── global.d.ts ├── index.css ├── index.ts └── utils │ └── index.ts ├── tsconfig.build.json ├── tsconfig.cjs.json ├── tsconfig.json ├── tsconfig.types.json └── vitest.config.ts /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | browser: true, 5 | node: true, 6 | es6: true, 7 | }, 8 | extends: ['@innei/eslint-config-ts'], 9 | } 10 | -------------------------------------------------------------------------------- /.github/workflows/build.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: Node.js CI 5 | 6 | on: 7 | push: 8 | branches: 9 | - '**' 10 | pull_request: 11 | branches: [master, main] 12 | 13 | jobs: 14 | build: 15 | runs-on: ubuntu-latest 16 | 17 | strategy: 18 | matrix: 19 | node-version: [18.x] 20 | 21 | steps: 22 | - uses: actions/checkout@v2 23 | - name: Use Node.js ${{ matrix.node-version }} 24 | uses: actions/setup-node@v2 25 | with: 26 | node-version: ${{ matrix.node-version }} 27 | - name: Cache pnpm modules 28 | uses: actions/cache@v2 29 | env: 30 | cache-name: cache-pnpm-modules 31 | with: 32 | path: ~/.pnpm-store 33 | key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ matrix.node-version }}-${{ hashFiles('**/package.json') }} 34 | restore-keys: | 35 | ${{ runner.os }}-build-${{ env.cache-name }}-${{ matrix.node-version }}-${{ hashFiles('**/package.json') }} 36 | 37 | - uses: pnpm/action-setup@v2.0.1 38 | with: 39 | version: 8.x.x 40 | run_install: true 41 | - run: pnpm run package 42 | - run: pnpm run test 43 | env: 44 | CI: true 45 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | tags: 6 | - 'v*' 7 | 8 | jobs: 9 | release: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v3 13 | with: 14 | fetch-depth: 0 15 | 16 | - uses: actions/setup-node@v3 17 | with: 18 | node-version: 18.x 19 | 20 | - run: npx changelogithub # or changelogithub@0.12 if ensure the stable result 21 | env: 22 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | tags 2 | node_modules 3 | /node_modules 4 | .DS_Store 5 | # Logs 6 | logs 7 | *.log 8 | npm-debug.log* 9 | yarn-debug.log* 10 | yarn-error.log* 11 | lerna-debug.log* 12 | 13 | # Diagnostic reports (https://nodejs.org/api/report.html) 14 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 15 | 16 | # Runtime data 17 | pids 18 | *.pid 19 | *.seed 20 | *.pid.lock 21 | 22 | # Directory for instrumented libs generated by jscoverage/JSCover 23 | lib-cov 24 | 25 | # Coverage directory used by tools like istanbul 26 | coverage 27 | *.lcov 28 | 29 | # nyc test coverage 30 | .nyc_output 31 | 32 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 33 | .grunt 34 | 35 | # Bower dependency directory (https://bower.io/) 36 | bower_components 37 | 38 | # node-waf configuration 39 | .lock-wscript 40 | 41 | # Compiled binary addons (https://nodejs.org/api/addons.html) 42 | build/Release 43 | 44 | # Dependency directories 45 | node_modules/ 46 | jspm_packages/ 47 | 48 | # Snowpack dependency directory (https://snowpack.dev/) 49 | web_modules/ 50 | 51 | # TypeScript cache 52 | *.tsbuildinfo 53 | 54 | # Optional npm cache directory 55 | .npm 56 | 57 | # Optional eslint cache 58 | .eslintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | .parcel-cache 78 | 79 | # Next.js build output 80 | .next 81 | 82 | # Nuxt.js build / generate output 83 | .nuxt 84 | 85 | # Gatsby files 86 | .cache/ 87 | 88 | # vuepress build output 89 | .vuepress/dist 90 | 91 | # Serverless directories 92 | .serverless/ 93 | 94 | # FuseBox cache 95 | .fusebox/ 96 | 97 | # DynamoDB Local files 98 | .dynamodb/ 99 | 100 | # TernJS port file 101 | .tern-port 102 | 103 | # Stores VSCode versions used for testing VSCode extensions 104 | .vscode-test 105 | 106 | # yarn v2 107 | 108 | .yarn/cache 109 | .yarn/unplugged 110 | .yarn/build-state.yml 111 | .pnp.* 112 | 113 | # vim 114 | ctag 115 | /tags 116 | .undodir 117 | 118 | # idea 119 | # .idea/* 120 | 121 | /dist 122 | /publish 123 | /build 124 | /lib 125 | /esm 126 | /types 127 | 128 | example/dist 129 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | lint-staged 5 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | registry=https://registry.npmjs.org 2 | # https://zenn.dev/haxibami/scraps/083718c1beec04 3 | strict-peer-dependencies=false 4 | -------------------------------------------------------------------------------- /.prettierrc.mjs: -------------------------------------------------------------------------------- 1 | import config from '@innei/prettier' 2 | export default config 3 | -------------------------------------------------------------------------------- /example/App.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | -------------------------------------------------------------------------------- /example/components/corner/index.ts: -------------------------------------------------------------------------------- 1 | export class GitHubCornerElement extends HTMLElement { 2 | constructor() { 3 | super() 4 | this.attachShadow({ mode: 'open' }) 5 | const repo = this.getAttribute('repo') 6 | this.shadowRoot.innerHTML = ` 7 | ` 64 | } 65 | } 66 | 67 | customElements.define('github-corner', GitHubCornerElement) 68 | -------------------------------------------------------------------------------- /example/index.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | font-family: 4 | system-ui, 5 | -apple-system, 6 | BlinkMacSystemFont, 7 | 'Segoe UI', 8 | Roboto, 9 | Oxygen, 10 | Ubuntu, 11 | Cantarell, 12 | 'Open Sans', 13 | 'Helvetica Neue', 14 | sans-serif; 15 | } 16 | 17 | .hello { 18 | padding: 0; 19 | 20 | .nest { 21 | bottom: 0; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /example/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /example/index.ts: -------------------------------------------------------------------------------- 1 | import './index.css' 2 | import 'uno.css' 3 | import '@unocss/reset/tailwind.css' 4 | 5 | import { createApp } from 'vue' 6 | 7 | import App from './App.vue' 8 | 9 | createApp(App).mount('#app') 10 | -------------------------------------------------------------------------------- /example/layouts/Default.tsx: -------------------------------------------------------------------------------- 1 | import { defineComponent } from 'vue' 2 | 3 | export const DefaultLayout = defineComponent({ 4 | setup(ctx, { slots }) { 5 | return () => ( 6 |
7 |
{slots.default?.()}
8 |
9 | ) 10 | }, 11 | }) 12 | -------------------------------------------------------------------------------- /example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "scripts": { 4 | "dev": "vite" 5 | }, 6 | "dependencies": { 7 | "@unocss/reset": "0.57.1", 8 | "my-awesome-lib": "link:../", 9 | "vue": "3.3.7" 10 | }, 11 | "devDependencies": { 12 | "@vitejs/plugin-vue": "4.4.0", 13 | "@vitejs/plugin-vue-jsx": "3.0.2" 14 | } 15 | } -------------------------------------------------------------------------------- /example/pages/page.tsx: -------------------------------------------------------------------------------- 1 | import { defineComponent } from 'vue' 2 | 3 | export const Page = defineComponent({ 4 | setup() { 5 | return () =>
Hello world
6 | }, 7 | }) 8 | -------------------------------------------------------------------------------- /example/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@unocss/reset': 9 | specifier: 0.57.1 10 | version: 0.57.1 11 | my-awesome-lib: 12 | specifier: link:../ 13 | version: link:.. 14 | vue: 15 | specifier: 3.3.7 16 | version: 3.3.7 17 | 18 | devDependencies: 19 | '@vitejs/plugin-vue': 20 | specifier: 4.4.0 21 | version: 4.4.0(vite@4.5.0)(vue@3.3.7) 22 | '@vitejs/plugin-vue-jsx': 23 | specifier: 3.0.2 24 | version: 3.0.2(vite@4.5.0)(vue@3.3.7) 25 | 26 | packages: 27 | 28 | /@ampproject/remapping@2.2.1: 29 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 30 | engines: {node: '>=6.0.0'} 31 | dependencies: 32 | '@jridgewell/gen-mapping': 0.3.3 33 | '@jridgewell/trace-mapping': 0.3.19 34 | dev: true 35 | 36 | /@babel/code-frame@7.22.10: 37 | resolution: {integrity: sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==} 38 | engines: {node: '>=6.9.0'} 39 | dependencies: 40 | '@babel/highlight': 7.22.10 41 | chalk: 2.4.2 42 | dev: true 43 | 44 | /@babel/compat-data@7.22.9: 45 | resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} 46 | engines: {node: '>=6.9.0'} 47 | dev: true 48 | 49 | /@babel/core@7.22.10: 50 | resolution: {integrity: sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw==} 51 | engines: {node: '>=6.9.0'} 52 | dependencies: 53 | '@ampproject/remapping': 2.2.1 54 | '@babel/code-frame': 7.22.10 55 | '@babel/generator': 7.22.10 56 | '@babel/helper-compilation-targets': 7.22.10 57 | '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.10) 58 | '@babel/helpers': 7.22.10 59 | '@babel/parser': 7.22.10 60 | '@babel/template': 7.22.5 61 | '@babel/traverse': 7.22.10 62 | '@babel/types': 7.22.10 63 | convert-source-map: 1.9.0 64 | debug: 4.3.4 65 | gensync: 1.0.0-beta.2 66 | json5: 2.2.3 67 | semver: 6.3.1 68 | transitivePeerDependencies: 69 | - supports-color 70 | dev: true 71 | 72 | /@babel/generator@7.22.10: 73 | resolution: {integrity: sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==} 74 | engines: {node: '>=6.9.0'} 75 | dependencies: 76 | '@babel/types': 7.22.10 77 | '@jridgewell/gen-mapping': 0.3.3 78 | '@jridgewell/trace-mapping': 0.3.19 79 | jsesc: 2.5.2 80 | dev: true 81 | 82 | /@babel/helper-annotate-as-pure@7.22.5: 83 | resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} 84 | engines: {node: '>=6.9.0'} 85 | dependencies: 86 | '@babel/types': 7.22.10 87 | dev: true 88 | 89 | /@babel/helper-compilation-targets@7.22.10: 90 | resolution: {integrity: sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==} 91 | engines: {node: '>=6.9.0'} 92 | dependencies: 93 | '@babel/compat-data': 7.22.9 94 | '@babel/helper-validator-option': 7.22.5 95 | browserslist: 4.21.10 96 | lru-cache: 5.1.1 97 | semver: 6.3.1 98 | dev: true 99 | 100 | /@babel/helper-create-class-features-plugin@7.22.10(@babel/core@7.22.10): 101 | resolution: {integrity: sha512-5IBb77txKYQPpOEdUdIhBx8VrZyDCQ+H82H0+5dX1TmuscP5vJKEE3cKurjtIw/vFwzbVH48VweE78kVDBrqjA==} 102 | engines: {node: '>=6.9.0'} 103 | peerDependencies: 104 | '@babel/core': ^7.0.0 105 | dependencies: 106 | '@babel/core': 7.22.10 107 | '@babel/helper-annotate-as-pure': 7.22.5 108 | '@babel/helper-environment-visitor': 7.22.5 109 | '@babel/helper-function-name': 7.22.5 110 | '@babel/helper-member-expression-to-functions': 7.22.5 111 | '@babel/helper-optimise-call-expression': 7.22.5 112 | '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.10) 113 | '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 114 | '@babel/helper-split-export-declaration': 7.22.6 115 | semver: 6.3.1 116 | dev: true 117 | 118 | /@babel/helper-environment-visitor@7.22.5: 119 | resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} 120 | engines: {node: '>=6.9.0'} 121 | dev: true 122 | 123 | /@babel/helper-function-name@7.22.5: 124 | resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} 125 | engines: {node: '>=6.9.0'} 126 | dependencies: 127 | '@babel/template': 7.22.5 128 | '@babel/types': 7.22.10 129 | dev: true 130 | 131 | /@babel/helper-hoist-variables@7.22.5: 132 | resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} 133 | engines: {node: '>=6.9.0'} 134 | dependencies: 135 | '@babel/types': 7.22.10 136 | dev: true 137 | 138 | /@babel/helper-member-expression-to-functions@7.22.5: 139 | resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} 140 | engines: {node: '>=6.9.0'} 141 | dependencies: 142 | '@babel/types': 7.22.10 143 | dev: true 144 | 145 | /@babel/helper-module-imports@7.22.5: 146 | resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} 147 | engines: {node: '>=6.9.0'} 148 | dependencies: 149 | '@babel/types': 7.22.10 150 | dev: true 151 | 152 | /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.10): 153 | resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} 154 | engines: {node: '>=6.9.0'} 155 | peerDependencies: 156 | '@babel/core': ^7.0.0 157 | dependencies: 158 | '@babel/core': 7.22.10 159 | '@babel/helper-environment-visitor': 7.22.5 160 | '@babel/helper-module-imports': 7.22.5 161 | '@babel/helper-simple-access': 7.22.5 162 | '@babel/helper-split-export-declaration': 7.22.6 163 | '@babel/helper-validator-identifier': 7.22.5 164 | dev: true 165 | 166 | /@babel/helper-optimise-call-expression@7.22.5: 167 | resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} 168 | engines: {node: '>=6.9.0'} 169 | dependencies: 170 | '@babel/types': 7.22.10 171 | dev: true 172 | 173 | /@babel/helper-plugin-utils@7.22.5: 174 | resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} 175 | engines: {node: '>=6.9.0'} 176 | dev: true 177 | 178 | /@babel/helper-replace-supers@7.22.9(@babel/core@7.22.10): 179 | resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} 180 | engines: {node: '>=6.9.0'} 181 | peerDependencies: 182 | '@babel/core': ^7.0.0 183 | dependencies: 184 | '@babel/core': 7.22.10 185 | '@babel/helper-environment-visitor': 7.22.5 186 | '@babel/helper-member-expression-to-functions': 7.22.5 187 | '@babel/helper-optimise-call-expression': 7.22.5 188 | dev: true 189 | 190 | /@babel/helper-simple-access@7.22.5: 191 | resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} 192 | engines: {node: '>=6.9.0'} 193 | dependencies: 194 | '@babel/types': 7.22.10 195 | dev: true 196 | 197 | /@babel/helper-skip-transparent-expression-wrappers@7.22.5: 198 | resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} 199 | engines: {node: '>=6.9.0'} 200 | dependencies: 201 | '@babel/types': 7.22.10 202 | dev: true 203 | 204 | /@babel/helper-split-export-declaration@7.22.6: 205 | resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} 206 | engines: {node: '>=6.9.0'} 207 | dependencies: 208 | '@babel/types': 7.22.10 209 | dev: true 210 | 211 | /@babel/helper-string-parser@7.22.5: 212 | resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} 213 | engines: {node: '>=6.9.0'} 214 | 215 | /@babel/helper-validator-identifier@7.22.20: 216 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} 217 | engines: {node: '>=6.9.0'} 218 | 219 | /@babel/helper-validator-identifier@7.22.5: 220 | resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} 221 | engines: {node: '>=6.9.0'} 222 | dev: true 223 | 224 | /@babel/helper-validator-option@7.22.5: 225 | resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} 226 | engines: {node: '>=6.9.0'} 227 | dev: true 228 | 229 | /@babel/helpers@7.22.10: 230 | resolution: {integrity: sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw==} 231 | engines: {node: '>=6.9.0'} 232 | dependencies: 233 | '@babel/template': 7.22.5 234 | '@babel/traverse': 7.22.10 235 | '@babel/types': 7.22.10 236 | transitivePeerDependencies: 237 | - supports-color 238 | dev: true 239 | 240 | /@babel/highlight@7.22.10: 241 | resolution: {integrity: sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==} 242 | engines: {node: '>=6.9.0'} 243 | dependencies: 244 | '@babel/helper-validator-identifier': 7.22.5 245 | chalk: 2.4.2 246 | js-tokens: 4.0.0 247 | dev: true 248 | 249 | /@babel/parser@7.22.10: 250 | resolution: {integrity: sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ==} 251 | engines: {node: '>=6.0.0'} 252 | hasBin: true 253 | dependencies: 254 | '@babel/types': 7.22.10 255 | dev: true 256 | 257 | /@babel/parser@7.23.0: 258 | resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} 259 | engines: {node: '>=6.0.0'} 260 | hasBin: true 261 | dependencies: 262 | '@babel/types': 7.23.0 263 | 264 | /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.10): 265 | resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} 266 | engines: {node: '>=6.9.0'} 267 | peerDependencies: 268 | '@babel/core': ^7.0.0-0 269 | dependencies: 270 | '@babel/core': 7.22.10 271 | '@babel/helper-plugin-utils': 7.22.5 272 | dev: true 273 | 274 | /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.10): 275 | resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} 276 | engines: {node: '>=6.9.0'} 277 | peerDependencies: 278 | '@babel/core': ^7.0.0-0 279 | dependencies: 280 | '@babel/core': 7.22.10 281 | '@babel/helper-plugin-utils': 7.22.5 282 | dev: true 283 | 284 | /@babel/plugin-transform-typescript@7.22.10(@babel/core@7.22.10): 285 | resolution: {integrity: sha512-7++c8I/ymsDo4QQBAgbraXLzIM6jmfao11KgIBEYZRReWzNWH9NtNgJcyrZiXsOPh523FQm6LfpLyy/U5fn46A==} 286 | engines: {node: '>=6.9.0'} 287 | peerDependencies: 288 | '@babel/core': ^7.0.0-0 289 | dependencies: 290 | '@babel/core': 7.22.10 291 | '@babel/helper-annotate-as-pure': 7.22.5 292 | '@babel/helper-create-class-features-plugin': 7.22.10(@babel/core@7.22.10) 293 | '@babel/helper-plugin-utils': 7.22.5 294 | '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.10) 295 | dev: true 296 | 297 | /@babel/template@7.22.5: 298 | resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} 299 | engines: {node: '>=6.9.0'} 300 | dependencies: 301 | '@babel/code-frame': 7.22.10 302 | '@babel/parser': 7.22.10 303 | '@babel/types': 7.22.10 304 | dev: true 305 | 306 | /@babel/traverse@7.22.10: 307 | resolution: {integrity: sha512-Q/urqV4pRByiNNpb/f5OSv28ZlGJiFiiTh+GAHktbIrkPhPbl90+uW6SmpoLyZqutrg9AEaEf3Q/ZBRHBXgxig==} 308 | engines: {node: '>=6.9.0'} 309 | dependencies: 310 | '@babel/code-frame': 7.22.10 311 | '@babel/generator': 7.22.10 312 | '@babel/helper-environment-visitor': 7.22.5 313 | '@babel/helper-function-name': 7.22.5 314 | '@babel/helper-hoist-variables': 7.22.5 315 | '@babel/helper-split-export-declaration': 7.22.6 316 | '@babel/parser': 7.22.10 317 | '@babel/types': 7.22.10 318 | debug: 4.3.4 319 | globals: 11.12.0 320 | transitivePeerDependencies: 321 | - supports-color 322 | dev: true 323 | 324 | /@babel/types@7.22.10: 325 | resolution: {integrity: sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg==} 326 | engines: {node: '>=6.9.0'} 327 | dependencies: 328 | '@babel/helper-string-parser': 7.22.5 329 | '@babel/helper-validator-identifier': 7.22.5 330 | to-fast-properties: 2.0.0 331 | dev: true 332 | 333 | /@babel/types@7.23.0: 334 | resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} 335 | engines: {node: '>=6.9.0'} 336 | dependencies: 337 | '@babel/helper-string-parser': 7.22.5 338 | '@babel/helper-validator-identifier': 7.22.20 339 | to-fast-properties: 2.0.0 340 | 341 | /@esbuild/android-arm64@0.18.20: 342 | resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} 343 | engines: {node: '>=12'} 344 | cpu: [arm64] 345 | os: [android] 346 | requiresBuild: true 347 | dev: true 348 | optional: true 349 | 350 | /@esbuild/android-arm@0.18.20: 351 | resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} 352 | engines: {node: '>=12'} 353 | cpu: [arm] 354 | os: [android] 355 | requiresBuild: true 356 | dev: true 357 | optional: true 358 | 359 | /@esbuild/android-x64@0.18.20: 360 | resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} 361 | engines: {node: '>=12'} 362 | cpu: [x64] 363 | os: [android] 364 | requiresBuild: true 365 | dev: true 366 | optional: true 367 | 368 | /@esbuild/darwin-arm64@0.18.20: 369 | resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} 370 | engines: {node: '>=12'} 371 | cpu: [arm64] 372 | os: [darwin] 373 | requiresBuild: true 374 | dev: true 375 | optional: true 376 | 377 | /@esbuild/darwin-x64@0.18.20: 378 | resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} 379 | engines: {node: '>=12'} 380 | cpu: [x64] 381 | os: [darwin] 382 | requiresBuild: true 383 | dev: true 384 | optional: true 385 | 386 | /@esbuild/freebsd-arm64@0.18.20: 387 | resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} 388 | engines: {node: '>=12'} 389 | cpu: [arm64] 390 | os: [freebsd] 391 | requiresBuild: true 392 | dev: true 393 | optional: true 394 | 395 | /@esbuild/freebsd-x64@0.18.20: 396 | resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} 397 | engines: {node: '>=12'} 398 | cpu: [x64] 399 | os: [freebsd] 400 | requiresBuild: true 401 | dev: true 402 | optional: true 403 | 404 | /@esbuild/linux-arm64@0.18.20: 405 | resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} 406 | engines: {node: '>=12'} 407 | cpu: [arm64] 408 | os: [linux] 409 | requiresBuild: true 410 | dev: true 411 | optional: true 412 | 413 | /@esbuild/linux-arm@0.18.20: 414 | resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} 415 | engines: {node: '>=12'} 416 | cpu: [arm] 417 | os: [linux] 418 | requiresBuild: true 419 | dev: true 420 | optional: true 421 | 422 | /@esbuild/linux-ia32@0.18.20: 423 | resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} 424 | engines: {node: '>=12'} 425 | cpu: [ia32] 426 | os: [linux] 427 | requiresBuild: true 428 | dev: true 429 | optional: true 430 | 431 | /@esbuild/linux-loong64@0.18.20: 432 | resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} 433 | engines: {node: '>=12'} 434 | cpu: [loong64] 435 | os: [linux] 436 | requiresBuild: true 437 | dev: true 438 | optional: true 439 | 440 | /@esbuild/linux-mips64el@0.18.20: 441 | resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} 442 | engines: {node: '>=12'} 443 | cpu: [mips64el] 444 | os: [linux] 445 | requiresBuild: true 446 | dev: true 447 | optional: true 448 | 449 | /@esbuild/linux-ppc64@0.18.20: 450 | resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} 451 | engines: {node: '>=12'} 452 | cpu: [ppc64] 453 | os: [linux] 454 | requiresBuild: true 455 | dev: true 456 | optional: true 457 | 458 | /@esbuild/linux-riscv64@0.18.20: 459 | resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} 460 | engines: {node: '>=12'} 461 | cpu: [riscv64] 462 | os: [linux] 463 | requiresBuild: true 464 | dev: true 465 | optional: true 466 | 467 | /@esbuild/linux-s390x@0.18.20: 468 | resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} 469 | engines: {node: '>=12'} 470 | cpu: [s390x] 471 | os: [linux] 472 | requiresBuild: true 473 | dev: true 474 | optional: true 475 | 476 | /@esbuild/linux-x64@0.18.20: 477 | resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} 478 | engines: {node: '>=12'} 479 | cpu: [x64] 480 | os: [linux] 481 | requiresBuild: true 482 | dev: true 483 | optional: true 484 | 485 | /@esbuild/netbsd-x64@0.18.20: 486 | resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} 487 | engines: {node: '>=12'} 488 | cpu: [x64] 489 | os: [netbsd] 490 | requiresBuild: true 491 | dev: true 492 | optional: true 493 | 494 | /@esbuild/openbsd-x64@0.18.20: 495 | resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} 496 | engines: {node: '>=12'} 497 | cpu: [x64] 498 | os: [openbsd] 499 | requiresBuild: true 500 | dev: true 501 | optional: true 502 | 503 | /@esbuild/sunos-x64@0.18.20: 504 | resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} 505 | engines: {node: '>=12'} 506 | cpu: [x64] 507 | os: [sunos] 508 | requiresBuild: true 509 | dev: true 510 | optional: true 511 | 512 | /@esbuild/win32-arm64@0.18.20: 513 | resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} 514 | engines: {node: '>=12'} 515 | cpu: [arm64] 516 | os: [win32] 517 | requiresBuild: true 518 | dev: true 519 | optional: true 520 | 521 | /@esbuild/win32-ia32@0.18.20: 522 | resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} 523 | engines: {node: '>=12'} 524 | cpu: [ia32] 525 | os: [win32] 526 | requiresBuild: true 527 | dev: true 528 | optional: true 529 | 530 | /@esbuild/win32-x64@0.18.20: 531 | resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} 532 | engines: {node: '>=12'} 533 | cpu: [x64] 534 | os: [win32] 535 | requiresBuild: true 536 | dev: true 537 | optional: true 538 | 539 | /@jridgewell/gen-mapping@0.3.3: 540 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 541 | engines: {node: '>=6.0.0'} 542 | dependencies: 543 | '@jridgewell/set-array': 1.1.2 544 | '@jridgewell/sourcemap-codec': 1.4.15 545 | '@jridgewell/trace-mapping': 0.3.19 546 | dev: true 547 | 548 | /@jridgewell/resolve-uri@3.1.1: 549 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 550 | engines: {node: '>=6.0.0'} 551 | dev: true 552 | 553 | /@jridgewell/set-array@1.1.2: 554 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 555 | engines: {node: '>=6.0.0'} 556 | dev: true 557 | 558 | /@jridgewell/sourcemap-codec@1.4.15: 559 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 560 | 561 | /@jridgewell/trace-mapping@0.3.19: 562 | resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} 563 | dependencies: 564 | '@jridgewell/resolve-uri': 3.1.1 565 | '@jridgewell/sourcemap-codec': 1.4.15 566 | dev: true 567 | 568 | /@unocss/reset@0.57.1: 569 | resolution: {integrity: sha512-f/ofoudjFN/HMtv1XV5phP58pOmNruBhr0GbVdBNylyieMQkFHowA7iSemChnC/fTbCcY6oSOAcFl4n9AefjdA==} 570 | dev: false 571 | 572 | /@vitejs/plugin-vue-jsx@3.0.2(vite@4.5.0)(vue@3.3.7): 573 | resolution: {integrity: sha512-obF26P2Z4Ogy3cPp07B4VaW6rpiu0ue4OT2Y15UxT5BZZ76haUY9guOsZV3uWh/I6xc+VeiW+ZVabRE82FyzWw==} 574 | engines: {node: ^14.18.0 || >=16.0.0} 575 | peerDependencies: 576 | vite: ^4.0.0 577 | vue: ^3.0.0 578 | dependencies: 579 | '@babel/core': 7.22.10 580 | '@babel/plugin-transform-typescript': 7.22.10(@babel/core@7.22.10) 581 | '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.22.10) 582 | vite: 4.5.0 583 | vue: 3.3.7 584 | transitivePeerDependencies: 585 | - supports-color 586 | dev: true 587 | 588 | /@vitejs/plugin-vue@4.4.0(vite@4.5.0)(vue@3.3.7): 589 | resolution: {integrity: sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==} 590 | engines: {node: ^14.18.0 || >=16.0.0} 591 | peerDependencies: 592 | vite: ^4.0.0 593 | vue: ^3.2.25 594 | dependencies: 595 | vite: 4.5.0 596 | vue: 3.3.7 597 | dev: true 598 | 599 | /@vue/babel-helper-vue-transform-on@1.1.5: 600 | resolution: {integrity: sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==} 601 | dev: true 602 | 603 | /@vue/babel-plugin-jsx@1.1.5(@babel/core@7.22.10): 604 | resolution: {integrity: sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==} 605 | peerDependencies: 606 | '@babel/core': ^7.0.0-0 607 | dependencies: 608 | '@babel/core': 7.22.10 609 | '@babel/helper-module-imports': 7.22.5 610 | '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.10) 611 | '@babel/template': 7.22.5 612 | '@babel/traverse': 7.22.10 613 | '@babel/types': 7.22.10 614 | '@vue/babel-helper-vue-transform-on': 1.1.5 615 | camelcase: 6.3.0 616 | html-tags: 3.3.1 617 | svg-tags: 1.0.0 618 | transitivePeerDependencies: 619 | - supports-color 620 | dev: true 621 | 622 | /@vue/compiler-core@3.3.7: 623 | resolution: {integrity: sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==} 624 | dependencies: 625 | '@babel/parser': 7.23.0 626 | '@vue/shared': 3.3.7 627 | estree-walker: 2.0.2 628 | source-map-js: 1.0.2 629 | 630 | /@vue/compiler-dom@3.3.7: 631 | resolution: {integrity: sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw==} 632 | dependencies: 633 | '@vue/compiler-core': 3.3.7 634 | '@vue/shared': 3.3.7 635 | 636 | /@vue/compiler-sfc@3.3.7: 637 | resolution: {integrity: sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==} 638 | dependencies: 639 | '@babel/parser': 7.23.0 640 | '@vue/compiler-core': 3.3.7 641 | '@vue/compiler-dom': 3.3.7 642 | '@vue/compiler-ssr': 3.3.7 643 | '@vue/reactivity-transform': 3.3.7 644 | '@vue/shared': 3.3.7 645 | estree-walker: 2.0.2 646 | magic-string: 0.30.5 647 | postcss: 8.4.31 648 | source-map-js: 1.0.2 649 | 650 | /@vue/compiler-ssr@3.3.7: 651 | resolution: {integrity: sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==} 652 | dependencies: 653 | '@vue/compiler-dom': 3.3.7 654 | '@vue/shared': 3.3.7 655 | 656 | /@vue/reactivity-transform@3.3.7: 657 | resolution: {integrity: sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==} 658 | dependencies: 659 | '@babel/parser': 7.23.0 660 | '@vue/compiler-core': 3.3.7 661 | '@vue/shared': 3.3.7 662 | estree-walker: 2.0.2 663 | magic-string: 0.30.5 664 | 665 | /@vue/reactivity@3.3.7: 666 | resolution: {integrity: sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg==} 667 | dependencies: 668 | '@vue/shared': 3.3.7 669 | 670 | /@vue/runtime-core@3.3.7: 671 | resolution: {integrity: sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ==} 672 | dependencies: 673 | '@vue/reactivity': 3.3.7 674 | '@vue/shared': 3.3.7 675 | 676 | /@vue/runtime-dom@3.3.7: 677 | resolution: {integrity: sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw==} 678 | dependencies: 679 | '@vue/runtime-core': 3.3.7 680 | '@vue/shared': 3.3.7 681 | csstype: 3.1.2 682 | 683 | /@vue/server-renderer@3.3.7(vue@3.3.7): 684 | resolution: {integrity: sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw==} 685 | peerDependencies: 686 | vue: 3.3.7 687 | dependencies: 688 | '@vue/compiler-ssr': 3.3.7 689 | '@vue/shared': 3.3.7 690 | vue: 3.3.7 691 | 692 | /@vue/shared@3.3.7: 693 | resolution: {integrity: sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==} 694 | 695 | /ansi-styles@3.2.1: 696 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 697 | engines: {node: '>=4'} 698 | dependencies: 699 | color-convert: 1.9.3 700 | dev: true 701 | 702 | /browserslist@4.21.10: 703 | resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} 704 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 705 | hasBin: true 706 | dependencies: 707 | caniuse-lite: 1.0.30001521 708 | electron-to-chromium: 1.4.494 709 | node-releases: 2.0.13 710 | update-browserslist-db: 1.0.11(browserslist@4.21.10) 711 | dev: true 712 | 713 | /camelcase@6.3.0: 714 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} 715 | engines: {node: '>=10'} 716 | dev: true 717 | 718 | /caniuse-lite@1.0.30001521: 719 | resolution: {integrity: sha512-fnx1grfpEOvDGH+V17eccmNjucGUnCbP6KL+l5KqBIerp26WK/+RQ7CIDE37KGJjaPyqWXXlFUyKiWmvdNNKmQ==} 720 | dev: true 721 | 722 | /chalk@2.4.2: 723 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 724 | engines: {node: '>=4'} 725 | dependencies: 726 | ansi-styles: 3.2.1 727 | escape-string-regexp: 1.0.5 728 | supports-color: 5.5.0 729 | dev: true 730 | 731 | /color-convert@1.9.3: 732 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 733 | dependencies: 734 | color-name: 1.1.3 735 | dev: true 736 | 737 | /color-name@1.1.3: 738 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 739 | dev: true 740 | 741 | /convert-source-map@1.9.0: 742 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} 743 | dev: true 744 | 745 | /csstype@3.1.2: 746 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} 747 | 748 | /debug@4.3.4: 749 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 750 | engines: {node: '>=6.0'} 751 | peerDependencies: 752 | supports-color: '*' 753 | peerDependenciesMeta: 754 | supports-color: 755 | optional: true 756 | dependencies: 757 | ms: 2.1.2 758 | dev: true 759 | 760 | /electron-to-chromium@1.4.494: 761 | resolution: {integrity: sha512-KF7wtsFFDu4ws1ZsSOt4pdmO1yWVNWCFtijVYZPUeW4SV7/hy/AESjLn/+qIWgq7mHscNOKAwN5AIM1+YAy+Ww==} 762 | dev: true 763 | 764 | /esbuild@0.18.20: 765 | resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} 766 | engines: {node: '>=12'} 767 | hasBin: true 768 | requiresBuild: true 769 | optionalDependencies: 770 | '@esbuild/android-arm': 0.18.20 771 | '@esbuild/android-arm64': 0.18.20 772 | '@esbuild/android-x64': 0.18.20 773 | '@esbuild/darwin-arm64': 0.18.20 774 | '@esbuild/darwin-x64': 0.18.20 775 | '@esbuild/freebsd-arm64': 0.18.20 776 | '@esbuild/freebsd-x64': 0.18.20 777 | '@esbuild/linux-arm': 0.18.20 778 | '@esbuild/linux-arm64': 0.18.20 779 | '@esbuild/linux-ia32': 0.18.20 780 | '@esbuild/linux-loong64': 0.18.20 781 | '@esbuild/linux-mips64el': 0.18.20 782 | '@esbuild/linux-ppc64': 0.18.20 783 | '@esbuild/linux-riscv64': 0.18.20 784 | '@esbuild/linux-s390x': 0.18.20 785 | '@esbuild/linux-x64': 0.18.20 786 | '@esbuild/netbsd-x64': 0.18.20 787 | '@esbuild/openbsd-x64': 0.18.20 788 | '@esbuild/sunos-x64': 0.18.20 789 | '@esbuild/win32-arm64': 0.18.20 790 | '@esbuild/win32-ia32': 0.18.20 791 | '@esbuild/win32-x64': 0.18.20 792 | dev: true 793 | 794 | /escalade@3.1.1: 795 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 796 | engines: {node: '>=6'} 797 | dev: true 798 | 799 | /escape-string-regexp@1.0.5: 800 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 801 | engines: {node: '>=0.8.0'} 802 | dev: true 803 | 804 | /estree-walker@2.0.2: 805 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 806 | 807 | /fsevents@2.3.3: 808 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 809 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 810 | os: [darwin] 811 | requiresBuild: true 812 | dev: true 813 | optional: true 814 | 815 | /gensync@1.0.0-beta.2: 816 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 817 | engines: {node: '>=6.9.0'} 818 | dev: true 819 | 820 | /globals@11.12.0: 821 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 822 | engines: {node: '>=4'} 823 | dev: true 824 | 825 | /has-flag@3.0.0: 826 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 827 | engines: {node: '>=4'} 828 | dev: true 829 | 830 | /html-tags@3.3.1: 831 | resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} 832 | engines: {node: '>=8'} 833 | dev: true 834 | 835 | /js-tokens@4.0.0: 836 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 837 | dev: true 838 | 839 | /jsesc@2.5.2: 840 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 841 | engines: {node: '>=4'} 842 | hasBin: true 843 | dev: true 844 | 845 | /json5@2.2.3: 846 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 847 | engines: {node: '>=6'} 848 | hasBin: true 849 | dev: true 850 | 851 | /lru-cache@5.1.1: 852 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 853 | dependencies: 854 | yallist: 3.1.1 855 | dev: true 856 | 857 | /magic-string@0.30.5: 858 | resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} 859 | engines: {node: '>=12'} 860 | dependencies: 861 | '@jridgewell/sourcemap-codec': 1.4.15 862 | 863 | /ms@2.1.2: 864 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 865 | dev: true 866 | 867 | /nanoid@3.3.6: 868 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 869 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 870 | hasBin: true 871 | 872 | /node-releases@2.0.13: 873 | resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} 874 | dev: true 875 | 876 | /picocolors@1.0.0: 877 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 878 | 879 | /postcss@8.4.31: 880 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} 881 | engines: {node: ^10 || ^12 || >=14} 882 | dependencies: 883 | nanoid: 3.3.6 884 | picocolors: 1.0.0 885 | source-map-js: 1.0.2 886 | 887 | /rollup@3.29.4: 888 | resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} 889 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 890 | hasBin: true 891 | optionalDependencies: 892 | fsevents: 2.3.3 893 | dev: true 894 | 895 | /semver@6.3.1: 896 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 897 | hasBin: true 898 | dev: true 899 | 900 | /source-map-js@1.0.2: 901 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 902 | engines: {node: '>=0.10.0'} 903 | 904 | /supports-color@5.5.0: 905 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 906 | engines: {node: '>=4'} 907 | dependencies: 908 | has-flag: 3.0.0 909 | dev: true 910 | 911 | /svg-tags@1.0.0: 912 | resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} 913 | dev: true 914 | 915 | /to-fast-properties@2.0.0: 916 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 917 | engines: {node: '>=4'} 918 | 919 | /update-browserslist-db@1.0.11(browserslist@4.21.10): 920 | resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} 921 | hasBin: true 922 | peerDependencies: 923 | browserslist: '>= 4.21.0' 924 | dependencies: 925 | browserslist: 4.21.10 926 | escalade: 3.1.1 927 | picocolors: 1.0.0 928 | dev: true 929 | 930 | /vite@4.5.0: 931 | resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} 932 | engines: {node: ^14.18.0 || >=16.0.0} 933 | hasBin: true 934 | peerDependencies: 935 | '@types/node': '>= 14' 936 | less: '*' 937 | lightningcss: ^1.21.0 938 | sass: '*' 939 | stylus: '*' 940 | sugarss: '*' 941 | terser: ^5.4.0 942 | peerDependenciesMeta: 943 | '@types/node': 944 | optional: true 945 | less: 946 | optional: true 947 | lightningcss: 948 | optional: true 949 | sass: 950 | optional: true 951 | stylus: 952 | optional: true 953 | sugarss: 954 | optional: true 955 | terser: 956 | optional: true 957 | dependencies: 958 | esbuild: 0.18.20 959 | postcss: 8.4.31 960 | rollup: 3.29.4 961 | optionalDependencies: 962 | fsevents: 2.3.3 963 | dev: true 964 | 965 | /vue@3.3.7: 966 | resolution: {integrity: sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA==} 967 | peerDependencies: 968 | typescript: '*' 969 | peerDependenciesMeta: 970 | typescript: 971 | optional: true 972 | dependencies: 973 | '@vue/compiler-dom': 3.3.7 974 | '@vue/compiler-sfc': 3.3.7 975 | '@vue/runtime-dom': 3.3.7 976 | '@vue/server-renderer': 3.3.7(vue@3.3.7) 977 | '@vue/shared': 3.3.7 978 | 979 | /yallist@3.1.1: 980 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 981 | dev: true 982 | -------------------------------------------------------------------------------- /example/postcss.config.cjs: -------------------------------------------------------------------------------- 1 | ../postcss.config.cjs 2 | -------------------------------------------------------------------------------- /example/shims.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable import/no-default-export */ 2 | declare interface Window { 3 | // extend the window 4 | } 5 | 6 | // with vite-plugin-vue-markdown, markdown files can be treated as Vue components 7 | declare module '*.md' { 8 | import { type DefineComponent } from 'vue' 9 | const component: DefineComponent<{}, {}, any> 10 | export default component 11 | } 12 | 13 | declare module '*.vue' { 14 | import { type DefineComponent } from 'vue' 15 | const component: DefineComponent<{}, {}, any> 16 | export default component 17 | } 18 | -------------------------------------------------------------------------------- /example/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "esModuleInterop": true, 4 | "module": "ES2022", 5 | "target": "ES2020", 6 | "resolveJsonModule": true, 7 | "moduleResolution": "Node", 8 | "jsx": "preserve", 9 | "baseUrl": ".", 10 | "paths": { 11 | "~/*": [ 12 | "../src/*" 13 | ], 14 | "~": [ 15 | "../src" 16 | ] 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /example/uno.config.ts: -------------------------------------------------------------------------------- 1 | import { 2 | defineConfig, 3 | presetAttributify, 4 | presetIcons, 5 | presetTypography, 6 | presetUno, 7 | presetWind, 8 | transformerDirectives, 9 | transformerVariantGroup, 10 | } from 'unocss' 11 | 12 | export default defineConfig({ 13 | shortcuts: [ 14 | [ 15 | 'btn', 16 | 'px-4 py-1 rounded inline-block bg-teal-700 text-white cursor-pointer !outline-none hover:bg-teal-800 disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50', 17 | ], 18 | [ 19 | 'icon-btn', 20 | 'inline-block cursor-pointer select-none opacity-75 transition duration-200 ease-in-out hover:opacity-100 hover:text-teal-600', 21 | ], 22 | ], 23 | presets: [ 24 | presetWind({ 25 | dark: 'media', 26 | }), 27 | presetAttributify(), 28 | presetUno(), 29 | presetAttributify(), 30 | presetIcons({ 31 | scale: 1.2, 32 | warn: true, 33 | }), 34 | presetTypography(), 35 | ], 36 | transformers: [transformerDirectives(), transformerVariantGroup()], 37 | safelist: 'prose m-auto text-left'.split(' '), 38 | }) 39 | -------------------------------------------------------------------------------- /example/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { resolve } from 'path' 2 | import unoCSS from 'unocss/vite' 3 | import { defineConfig } from 'vite' 4 | import tsconfigPaths from 'vite-tsconfig-paths' 5 | import type { PluginOption } from 'vite' 6 | 7 | import vue from '@vitejs/plugin-vue' 8 | import vueJSX from '@vitejs/plugin-vue-jsx' 9 | 10 | import PKG from '../package.json' 11 | 12 | export default defineConfig({ 13 | base: '', 14 | plugins: [ 15 | vue(), 16 | vueJSX(), 17 | unoCSS(), 18 | tsconfigPaths({ 19 | projects: [resolve(__dirname, './tsconfig.json')], 20 | }), 21 | htmlPlugin(), 22 | ], 23 | 24 | // root: resolve(__dirname, './example'), 25 | optimizeDeps: { 26 | include: ['my-awesome-lib'], 27 | }, 28 | // resolve: { 29 | // alias: { 30 | // '~': resolve(__dirname, '..'), 31 | // }, 32 | // }, 33 | build: { 34 | rollupOptions: { 35 | input: { 36 | main: resolve(__dirname, './index.html'), 37 | }, 38 | }, 39 | }, 40 | }) 41 | 42 | function htmlPlugin() { 43 | return { 44 | name: 'html-transform', 45 | enforce: 'post', 46 | transformIndexHtml(html) { 47 | return html.replace( 48 | '----------------repo----------------', 49 | PKG.repository.directory, 50 | ) 51 | }, 52 | } satisfies PluginOption 53 | } 54 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-awesome-lib", 3 | "private": true, 4 | "version": "0.0.0", 5 | "description": "TODO", 6 | "author": "Innei", 7 | "license": "MIT", 8 | "repository": { 9 | "type": "git", 10 | "url": "https://github.com/Innei/rollup-typescript-lib", 11 | "directory": "Innei/rollup-typescript-lib" 12 | }, 13 | "type": "module", 14 | "main": "./src/index.ts", 15 | "exports": { 16 | ".": { 17 | "import": "./src/index.ts" 18 | }, 19 | "./*": { 20 | "import": "./src/*" 21 | } 22 | }, 23 | "publishConfig": { 24 | "main": "dist/index.cjs", 25 | "module": "dist/index.js", 26 | "types": "types/index.d.ts", 27 | "exports": { 28 | ".": { 29 | "type": "./dist/index.d.ts", 30 | "import": "./dist/index.js", 31 | "require": "./dist/index.cjs" 32 | }, 33 | "./src": { 34 | "import": "./src" 35 | }, 36 | "./src/*": { 37 | "import": "./src/*" 38 | } 39 | }, 40 | "files": [ 41 | "dist", 42 | "lib", 43 | "esm", 44 | "readme.md", 45 | "tsconfig.json", 46 | "types", 47 | "src" 48 | ] 49 | }, 50 | "husky": { 51 | "hooks": { 52 | "pre-commit": "lint-staged" 53 | } 54 | }, 55 | "lint-staged": { 56 | "*.{js,jsx,ts,tsx}": [ 57 | "prettier --ignore-path ./.prettierignore --write ", 58 | "eslint --cache" 59 | ] 60 | }, 61 | "bump": { 62 | "before": [ 63 | "npm run package" 64 | ], 65 | "publish": true, 66 | "changelog": true 67 | }, 68 | "scripts": { 69 | "prebuild": "rm -rf lib && rm -rf esm", 70 | "build": "tsc --build . tsconfig.build.json && tsc --build tsconfig.cjs.json", 71 | "postbuild": "tsc-alias -p tsconfig.build.json && tsc-alias -p tsconfig.cjs.json && npm run types", 72 | "types": "rm -rf types && tsc --build tsconfig.types.json && tsc-alias -p tsconfig.types.json && npx dts-bundle-generator -o dist/index.d.ts ./src/index.ts --no-check --silent --project ./tsconfig.types.json", 73 | "package": "NODE_ENV=production npm run build && rollup -c", 74 | "prepackage": "rm -rf dist", 75 | "test": "vitest", 76 | "prepare": "husky install && cd example && pnpm i", 77 | "release": "bump" 78 | }, 79 | "devDependencies": { 80 | "@innei/bump-version": "1.5.10", 81 | "@innei/eslint-config-react-ts": "0.12.2", 82 | "@innei/eslint-config-ts": "0.12.2", 83 | "@innei/prettier": "0.12.2", 84 | "@rollup/plugin-commonjs": "25.0.7", 85 | "@rollup/plugin-node-resolve": "15.2.3", 86 | "@rollup/plugin-typescript": "11.1.6", 87 | "@types/node": "20.11.17", 88 | "@unocss/preset-wind": "0.58.5", 89 | "dts-bundle-generator": "^9.3.1", 90 | "esbuild": "0.20.0", 91 | "husky": "9.0.10", 92 | "lint-staged": "15.2.2", 93 | "postcss": "8.4.35", 94 | "postcss-import": "16.0.0", 95 | "postcss-nested": "6.0.1", 96 | "prettier": "3.2.5", 97 | "rollup": "4.10.0", 98 | "rollup-plugin-esbuild": "6.1.1", 99 | "rollup-plugin-peer-deps-external": "2.2.4", 100 | "rollup-plugin-postcss": "4.0.2", 101 | "tsc-alias": "1.8.8", 102 | "tslib": "2.6.2", 103 | "typescript": "5.3.3", 104 | "unocss": "0.58.5", 105 | "vite": "5.1.1", 106 | "vite-tsconfig-paths": "4.3.1", 107 | "vitest": "1.2.2" 108 | } 109 | } -------------------------------------------------------------------------------- /postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | 'postcss-import': {}, 4 | 'postcss-nested': {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Rollup Typescript library template 2 | 3 | A simple TypeScript library template. Quick to start dev, build a Pure TypeScript or React Component library. 4 | 5 | Please use pnpm do this. 6 | 7 | ```sh 8 | pnpm i 9 | ``` 10 | 11 | # Usage 12 | 13 | ### Package 14 | 15 | Bundle your source code via tsc, rollup. 16 | 17 | ``` 18 | npm run package 19 | ``` 20 | 21 | ### Dev 22 | 23 | Start dev mode by Vite. 24 | 25 | ``` 26 | npm run dev 27 | ``` 28 | 29 | ### Deploy 30 | 31 | Deploy example to GitHub Pages. 32 | 33 | ``` 34 | npm run deploy 35 | npm run publish 36 | ``` 37 | 38 | # Additional 39 | 40 | ## ESBuild & React 41 | 42 | If you want to bundle React JSX with rollup. Add additional packages. 43 | 44 | ``` 45 | pnpm i -D rollup-plugin-esbuild 46 | ``` 47 | 48 | And, un-comment this in `rollup.config.ts`. 49 | 50 | ```ts 51 | esbuild({ 52 | include: /\.[jt]sx?$/, 53 | exclude: /node_modules/, 54 | sourceMap: false, 55 | minify: process.env.NODE_ENV === 'production', 56 | target: 'es2017', 57 | jsxFactory: 'React.createElement', 58 | jsxFragment: 'React.Fragment', 59 | define: { 60 | __VERSION__: '"x.y.z"', 61 | }, 62 | tsconfig: './src/tsconfig.json', 63 | loaders: { 64 | '.json': 'json', 65 | '.js': 'jsx', 66 | }, 67 | }), 68 | ``` 69 | 70 | ## PostCSS & CSS Module 71 | 72 | Enable default now. 73 | 74 | Nest selector is supported too. 75 | 76 | To build css extract a file not bundle into js, un-comment this. 77 | 78 | ```ts 79 | css({ 80 | extract: true, 81 | }) 82 | ``` 83 | 84 | 85 | 86 | ## License 87 | 88 | 2023 © Innei, MIT License. 89 | 90 | > [Personal Site](https://innei.in/) · GitHub [@Innei](https://github.com/innei/) -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "enabled": false, 3 | "extends": [ 4 | "config:base", 5 | ":semanticCommits", 6 | ":automergePatch", 7 | ":automergeTypes", 8 | ":automergeTesters", 9 | ":automergeLinters", 10 | ":automergeMinor", 11 | ":rebaseStalePrs" 12 | ], 13 | "packageRules": [ 14 | { 15 | "updateTypes": [ 16 | "major" 17 | ], 18 | "labels": [ 19 | "UPDATE-MAJOR" 20 | ] 21 | } 22 | ] 23 | } -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | import { readFileSync } from 'fs' 3 | import { minify } from 'rollup-plugin-esbuild' 4 | import peerDepsExternal from 'rollup-plugin-peer-deps-external' 5 | import css from 'rollup-plugin-postcss' 6 | 7 | import commonjs from '@rollup/plugin-commonjs' 8 | import { nodeResolve } from '@rollup/plugin-node-resolve' 9 | import typescript from '@rollup/plugin-typescript' 10 | 11 | const packageJson = JSON.parse( 12 | readFileSync('./package.json', { encoding: 'utf-8' }), 13 | ) 14 | 15 | const globals = { 16 | // @ts-ignore 17 | ...(packageJson?.dependencies || {}), 18 | } 19 | 20 | const dir = 'dist' 21 | 22 | /** 23 | * @type {import('rollup').RollupOptions[]} 24 | */ 25 | const config = [ 26 | { 27 | input: 'src/index.ts', 28 | // ignore lib 29 | external: [ 30 | 'react', 31 | 'react-dom', 32 | 'lodash', 33 | 'lodash-es', 34 | ...Object.keys(globals), 35 | ], 36 | 37 | output: [ 38 | { 39 | file: `${dir}/index.cjs`, 40 | format: 'cjs', 41 | sourcemap: true, 42 | }, 43 | { 44 | file: `${dir}/index.min.cjs`, 45 | format: 'cjs', 46 | sourcemap: true, 47 | plugins: [minify()], 48 | }, 49 | { 50 | file: `${dir}/index.js`, 51 | format: 'esm', 52 | sourcemap: true, 53 | }, 54 | { 55 | file: `${dir}/index.min.js`, 56 | format: 'esm', 57 | sourcemap: true, 58 | plugins: [minify()], 59 | }, 60 | ], 61 | plugins: [ 62 | nodeResolve(), 63 | commonjs({ include: 'node_modules/**' }), 64 | typescript({ 65 | tsconfig: './tsconfig.build.json', 66 | declaration: false, 67 | }), 68 | css({ 69 | // extract: true, 70 | minimize: true, 71 | modules: { 72 | generateScopedName: '[hash:base64:5]', 73 | }, 74 | }), 75 | 76 | // @ts-ignore 77 | peerDepsExternal(), 78 | ], 79 | 80 | treeshake: true, 81 | }, 82 | ] 83 | 84 | export default config 85 | -------------------------------------------------------------------------------- /src/__tests__/index.test.ts: -------------------------------------------------------------------------------- 1 | 2 | describe('test', () => { 3 | it('should be define', () => { 4 | expect(test).toBeDefined() 5 | }) 6 | }) -------------------------------------------------------------------------------- /src/global.d.ts: -------------------------------------------------------------------------------- 1 | declare global {} 2 | export * from 'vite/client' 3 | export {} 4 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | .a { 2 | padding: 0; 3 | 4 | .b { 5 | bottom: 0; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { getTime } from '~/utils/index.js' 2 | 3 | import './index.css' 4 | 5 | export const date = getTime() 6 | const test = () => { 7 | console.log('hello, rollup') 8 | console.log(date) 9 | } 10 | export { test, getTime } 11 | -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export const getTime = () => +new Date() 2 | -------------------------------------------------------------------------------- /tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./esm", 5 | "noEmit": false 6 | }, 7 | "exclude": [ 8 | "esm/*", 9 | "build/*", 10 | "node_modules/*", 11 | "lib/*", 12 | "example/*", 13 | "vitest.config.ts", 14 | "vite.config.ts", 15 | "__tests__/*", 16 | "src/__tests__/*" 17 | ] 18 | } -------------------------------------------------------------------------------- /tsconfig.cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.build.json", 3 | "compilerOptions": { 4 | "module": "CommonJS", 5 | "moduleResolution": "Node", 6 | "outDir": "./lib", 7 | }, 8 | "exclude": [ 9 | "esm/*", 10 | "build/*", 11 | "node_modules/*", 12 | "lib/*", 13 | "example/*", 14 | "vitest.config.ts", 15 | "vite.config.ts", 16 | "__tests__/*", 17 | "src/__tests__/*" 18 | ] 19 | } -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "declaration": true, 4 | "baseUrl": "./src", 5 | "rootDir": "./src", 6 | "outDir": "/tmp", 7 | "jsx": "react", 8 | "target": "ES2020", 9 | "lib": [ 10 | "ESNext", 11 | "DOM", 12 | "DOM.Iterable" 13 | ], 14 | "module": "NodeNext", 15 | "moduleResolution": "NodeNext", 16 | "strict": true, 17 | "resolveJsonModule": true, 18 | "esModuleInterop": true, 19 | "skipLibCheck": true, 20 | "forceConsistentCasingInFileNames": true, 21 | "sourceMap": true, 22 | "types": [ 23 | "vite/client", 24 | "vitest/globals" 25 | ], 26 | "paths": { 27 | "~/*": [ 28 | "*" 29 | ] 30 | } 31 | }, 32 | "exclude": [ 33 | "esm/*", 34 | "build/*", 35 | "node_modules/*", 36 | "lib/*", 37 | "example/*", 38 | "vitest.config.ts", 39 | "vite.config.ts", 40 | ] 41 | } -------------------------------------------------------------------------------- /tsconfig.types.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "commonjs", 5 | "rootDir": "./src", 6 | "outDir": "./types", 7 | "moduleResolution": "Node", 8 | "declaration": true, 9 | "declarationMap": false, 10 | "isolatedModules": false, 11 | "allowJs": false, 12 | "emitDeclarationOnly": true, 13 | "types": [], 14 | }, 15 | "exclude": [ 16 | "esm/*", 17 | "build/*", 18 | "node_modules/*", 19 | "lib/*", 20 | "example/*", 21 | "vitest.config.ts", 22 | "vite.config.ts", 23 | "src/__tests__/*" 24 | ] 25 | } -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- 1 | import tsPath from 'vite-tsconfig-paths' 2 | import { defineConfig } from 'vitest/config' 3 | 4 | export default defineConfig({ 5 | test: { 6 | globals: true, 7 | include: ['src/__tests__/**/*.(spec|test).ts'], 8 | }, 9 | plugins: [tsPath()], 10 | }) 11 | --------------------------------------------------------------------------------