From 7fff45328d3c2b9c5d82b7f0c181f25d5f8f2775 Mon Sep 17 00:00:00 2001
From: 1549469775 <1549469775@qq.com>
Date: Tue, 24 May 2022 14:33:09 +0800
Subject: [PATCH] init
---
.gitignore | 4 +
.npmrc | 2 +
components.d.ts | 7 +
gulpfile.ts/index.ts | 8 +
gulpfile.ts/tsconfig.json | 10 +
package.json | 42 ++
packages/build/build.ts | 35 +
packages/build/buildAll.ts | 74 ++
packages/build/buildComponent.ts | 80 +++
packages/build/libInjectCss.ts | 66 ++
packages/build/package.json | 25 +
packages/build/tsconfig.json | 10 +
packages/build/util.ts | 39 ++
packages/components/button/aaa.css | 3 +
packages/components/button/index.ts | 4 +
packages/components/button/index.vue | 30 +
packages/components/components.ts | 7 +
packages/components/fuck/index.ts | 3 +
packages/components/fuck/index.vue | 20 +
packages/components/index.ts | 15 +
packages/components/package.json | 14 +
packages/playground/index.ts | 3 +
packages/playground/package.json | 12 +
packages/princess-ui/PrincessResolver.js | 31 +
packages/princess-ui/PrincessResolver.ts | 27 +
packages/princess-ui/components.d.ts | 7 +
packages/princess-ui/package.json | 22 +
packages/princess-ui/tsconfig.json | 3 +
packages/share/index.ts | 14 +
packages/share/package.json | 11 +
packages/theme-chalk/index.scss | 0
packages/theme-chalk/package.json | 13 +
pnpm-lock.yaml | 1077 ++++++++++++++++++++++++++++++
pnpm-workspace.yaml | 5 +
tsconfig.json | 21 +
typings/global.d.ts | 1 +
36 files changed, 1745 insertions(+)
create mode 100644 .gitignore
create mode 100644 .npmrc
create mode 100644 components.d.ts
create mode 100644 gulpfile.ts/index.ts
create mode 100644 gulpfile.ts/tsconfig.json
create mode 100644 package.json
create mode 100644 packages/build/build.ts
create mode 100644 packages/build/buildAll.ts
create mode 100644 packages/build/buildComponent.ts
create mode 100644 packages/build/libInjectCss.ts
create mode 100644 packages/build/package.json
create mode 100644 packages/build/tsconfig.json
create mode 100644 packages/build/util.ts
create mode 100644 packages/components/button/aaa.css
create mode 100644 packages/components/button/index.ts
create mode 100644 packages/components/button/index.vue
create mode 100644 packages/components/components.ts
create mode 100644 packages/components/fuck/index.ts
create mode 100644 packages/components/fuck/index.vue
create mode 100644 packages/components/index.ts
create mode 100644 packages/components/package.json
create mode 100644 packages/playground/index.ts
create mode 100644 packages/playground/package.json
create mode 100644 packages/princess-ui/PrincessResolver.js
create mode 100644 packages/princess-ui/PrincessResolver.ts
create mode 100644 packages/princess-ui/components.d.ts
create mode 100644 packages/princess-ui/package.json
create mode 100644 packages/princess-ui/tsconfig.json
create mode 100644 packages/share/index.ts
create mode 100644 packages/share/package.json
create mode 100644 packages/theme-chalk/index.scss
create mode 100644 packages/theme-chalk/package.json
create mode 100644 pnpm-lock.yaml
create mode 100644 pnpm-workspace.yaml
create mode 100644 tsconfig.json
create mode 100644 typings/global.d.ts
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2ea9dd5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+node_modules
+lib
+.temp
+.cache
\ No newline at end of file
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 0000000..1cfbd6f
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1,2 @@
+shamefully-hoist=true
+strict-peer-dependencies=false
\ No newline at end of file
diff --git a/components.d.ts b/components.d.ts
new file mode 100644
index 0000000..c75a819
--- /dev/null
+++ b/components.d.ts
@@ -0,0 +1,7 @@
+declare module 'vue' {
+ export interface GlobalComponents {
+ PsButton: typeof import('./lib/button')['default'],
+ PsTest: typeof import('./lib/test')['default']
+ }
+}
+export { }
\ No newline at end of file
diff --git a/gulpfile.ts/index.ts b/gulpfile.ts/index.ts
new file mode 100644
index 0000000..1a030a6
--- /dev/null
+++ b/gulpfile.ts/index.ts
@@ -0,0 +1,8 @@
+import { src, dest } from "gulp"
+
+async function defaultTask(cb) {
+ await src("packages/theme-chalk/**/*.scss").pipe(dest("lib"))
+ cb()
+}
+
+exports.default = defaultTask
diff --git a/gulpfile.ts/tsconfig.json b/gulpfile.ts/tsconfig.json
new file mode 100644
index 0000000..f84e333
--- /dev/null
+++ b/gulpfile.ts/tsconfig.json
@@ -0,0 +1,10 @@
+{
+ "compilerOptions": {
+ "allowSyntheticDefaultImports": true,
+ "esModuleInterop": true,
+ "lib": ["ES6", "DOM"],
+ "declaration": false,
+ "module": "commonjs"
+ },
+ "include": ["**/*"]
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..92f0a1b
--- /dev/null
+++ b/package.json
@@ -0,0 +1,42 @@
+{
+ "private": true,
+ "workspaces": [
+ "packages/*"
+ ],
+ "files": [
+ "lib",
+ "components.d.ts",
+ "PrincessResolver.ts",
+ "PrincessResolver.js"
+ ],
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "start": "pnpm run -C packages/components start",
+ "dev": "pnpm run -C packages/components dev",
+ "build": "pnpm run -C packages/build build && pnpm run -C packages/princess-ui build",
+ "gulp": "set TS_NODE_PROJECT=gulpfile.ts/tsconfig.json& gulp -f gulpfile.ts",
+ "release": "cd packages/princess-ui & npm publish"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "devDependencies": {
+ "princess-ui": "workspace:*",
+ "@princess-ui/build": "workspace:*",
+ "@princess-ui/components": "workspace:*",
+ "@princess-ui/share": "workspace:*",
+ "@princess-ui/theme-chalk": "workspace:*",
+ "@types/gulp": "^4.0.9",
+ "@types/node": "^17.0.35",
+ "gulp": "^4.0.2",
+ "ts-node": "^10.8.0",
+ "typescript": "^4.6.4",
+ "unplugin-vue-components": "^0.19.5",
+ "vue": "^3.2.36"
+ },
+ "peerDependencies": {
+ "unplugin-vue-components": "^0.19.5",
+ "vue": "^3.2.36"
+ }
+}
diff --git a/packages/build/build.ts b/packages/build/build.ts
new file mode 100644
index 0000000..85bb06d
--- /dev/null
+++ b/packages/build/build.ts
@@ -0,0 +1,35 @@
+import chalk from "chalk"
+import _ from "lodash"
+import rimraf from "rimraf"
+import * as util from "./util"
+
+import buildComponent from "./buildComponent"
+import buildAll from "./buildAll"
+import { getOutput, getPath, getPkgs } from "@princess-ui/share"
+
+process.cwd = ()=>{
+ return getPkgs()
+}
+console.log(chalk.yellow("正在清除lib文件夹"))
+rimraf(getOutput("lib"), async err => {
+ if (err) throw err
+ console.log(chalk.green("已清除lib文件夹"))
+ const components = await util.getComponents()
+ for (let i = 0; i < components.length; i++) {
+ const component = components[i]
+ const beginDate = new Date().getTime()
+ console.log(chalk.yellow(`开始构建${component}组件`))
+ await buildComponent("ps", component, "ps" + _.upperFirst(_.kebabCase(component)))
+ console.log(chalk.green(`构建${component}组件完成, 其耗时:${(new Date().getTime() - beginDate) / 1000}s`))
+ }
+ const beginDate = new Date().getTime()
+ console.log(chalk.yellow("构建组件结构"))
+ await util.generateComponents(components)
+ console.log(chalk.green("构建组件结构完成"))
+ console.log(chalk.yellow("构建全量包"))
+ await buildAll("ps")
+ console.log(chalk.green(`构建全量包完成, 其耗时:${(new Date().getTime() - beginDate) / 1000}s`))
+ process.cwd = ()=>{
+ return getPath()
+ }
+})
diff --git a/packages/build/buildAll.ts b/packages/build/buildAll.ts
new file mode 100644
index 0000000..07b007f
--- /dev/null
+++ b/packages/build/buildAll.ts
@@ -0,0 +1,74 @@
+import { build } from "vite"
+import vue from "@vitejs/plugin-vue"
+import path from "path"
+import dts from "vite-plugin-dts"
+import { replaceCodePlugin } from "vite-plugin-replace";
+import { getOutput, getPath, getPkgs } from "@princess-ui/share";
+
+export default function (name: string) {
+ return build({
+ logLevel: "error",
+ plugins: [
+ replaceCodePlugin({
+ replacements: [
+ {
+ from: "@princess-ui/components",
+ to: "../",
+ },
+ ],
+ }),
+ vue({ isProduction: true }),
+ dts({
+ entryRoot: `components`,
+ tsConfigFilePath: getPath("tsconfig.json"),
+ outputDir: getOutput("lib"),
+ cleanVueFileName: true,
+ include: ['components/index.ts', 'components/components.ts'],
+ staticImport: true,
+ }),
+ ],
+ build: {
+ outDir: getOutput("lib"),
+ emptyOutDir: false,
+ lib: {
+ entry: path.resolve(__dirname, `../components/index.ts`),
+ name: name,
+ formats: ["es", "umd"],
+ fileName: format => `index${format=='es'?'':'.umd'}.js`,
+ },
+ rollupOptions: {
+ // 确保外部化处理那些你不想打包进库的依赖
+ external: id => {
+ if (/^vue/.test(id)) {
+ return true
+ }
+ return false
+ },
+ output: [
+ {
+ format: "es",
+ assetFileNames(chunkInfo) {
+ if (chunkInfo.name == "style.css") {
+ return `style.css`
+ }
+ },
+ globals: (id: string) => {
+ if (/^vue/.test(id)) {
+ return "Vue"
+ }
+ },
+ },
+ {
+ exports: "named",
+ format: "umd",
+ globals: (id: string) => {
+ if (/^vue/.test(id)) {
+ return "Vue"
+ }
+ },
+ },
+ ],
+ },
+ },
+ })
+}
diff --git a/packages/build/buildComponent.ts b/packages/build/buildComponent.ts
new file mode 100644
index 0000000..f042d6c
--- /dev/null
+++ b/packages/build/buildComponent.ts
@@ -0,0 +1,80 @@
+import { build } from "vite"
+import vue from "@vitejs/plugin-vue"
+import path from "path"
+import dts from "vite-plugin-dts"
+import { replaceCodePlugin } from "vite-plugin-replace";
+// import libInjectCss from "./libInjectCss"
+import _ from "lodash"
+import { getOutput, getPath, getPkgs } from "@princess-ui/share";
+
+export default function (prefix: string, component: string, name: string, opts?: {}) {
+ return build({
+ logLevel: "error",
+ plugins: [
+ vue({ isProduction: true }),
+ dts({
+ entryRoot: `components/${component}`,
+ tsConfigFilePath: getPath("tsconfig.json"),
+ outputDir: getOutput(`lib/${component}`),
+ cleanVueFileName: true,
+ include: [`components/${component}/index.vue`],
+ staticImport: true,
+ }),
+ replaceCodePlugin({
+ replacements: [
+ {
+ from: "@princess-ui/components",
+ to: "princess-ui/lib",
+ },
+ ],
+ }),
+ // libInjectCss(),
+ ],
+ build: {
+ outDir: getOutput("lib"),
+ cssCodeSplit: false,
+ emptyOutDir: false,
+ lib: {
+ entry: path.resolve(__dirname, `../components/${component}/index.ts`),
+ name: name,
+ formats: ["es", "umd"],
+ fileName: format => `${component}/index${format == 'es' ? '' : '.umd'}.js`,
+ },
+ rollupOptions: {
+ external: id => {
+ if (/^vue/.test(id)) {
+ return true
+ }
+ if (/^princess-ui/.test(id)) {
+ return true
+ }
+ return false
+ },
+ output: [
+ {
+ format: "es",
+ assetFileNames(chunkInfo) {
+ if (chunkInfo.name == "style.css") {
+ return `${component}/style.css`
+ }
+ },
+ },
+ {
+ name: name,
+ format: "umd",
+ globals: (id: string) => {
+ if (/^vue/.test(id)) {
+ return "Vue"
+ }
+ if (new RegExp(/^princess-ui/).test(id)) {
+ let str = id.replace(/^princess\-ui\/lib\//, prefix)
+ str = str.slice(0, 2) + str.slice(2)[0].toUpperCase() + str.slice(3)
+ return str
+ }
+ },
+ },
+ ],
+ },
+ },
+ })
+}
diff --git a/packages/build/libInjectCss.ts b/packages/build/libInjectCss.ts
new file mode 100644
index 0000000..3a8aaab
--- /dev/null
+++ b/packages/build/libInjectCss.ts
@@ -0,0 +1,66 @@
+/* eslint-disable import/no-extraneous-dependencies */
+import fs from 'fs'
+import { resolve } from 'path'
+import type { ResolvedConfig, PluginOption } from 'vite'
+
+const fileRegex = /\.(css)$/
+const injectCode = (code: string) =>
+ `function styleInject(css,ref){if(ref===void 0){ref={}}var insertAt=ref.insertAt;if(!css||typeof document==="undefined"){return}var head=document.head||document.getElementsByTagName("head")[0];var style=document.createElement("style");style.type="text/css";if(insertAt==="top"){if(head.firstChild){head.insertBefore(style,head.firstChild)}else{head.appendChild(style)}}else{head.appendChild(style)}if(style.styleSheet){style.styleSheet.cssText=css}else{style.appendChild(document.createTextNode(css))}};styleInject(\`${code}\`)`
+const template = `console.warn("__INJECT__")`
+
+let viteConfig: ResolvedConfig
+const css: string[] = []
+
+export default function libInjectCss(): PluginOption {
+ return {
+ name: 'lib-inject-css',
+
+ apply: 'build',
+
+ configResolved(resolvedConfig: ResolvedConfig) {
+ viteConfig = resolvedConfig
+ },
+
+ transform(code: string, id: string) {
+ if (fileRegex.test(id)) {
+ css.push(code)
+ return {
+ code: '',
+ }
+ }
+ if (
+ // @ts-ignore
+ id.includes(viteConfig.build.lib.entry)
+ ) {
+ return {
+ code: `${code}
+ ${template}`,
+ }
+ }
+ return null
+ },
+
+ async writeBundle(_: any, bundle: any) {
+ for (const file of Object.entries(bundle)) {
+ const { root } = viteConfig
+ const outDir: string = viteConfig.build.outDir || 'dist'
+ const fileName: string = file[0]
+ const filePath: string = resolve(root, outDir, fileName)
+
+ try {
+ let data: string = fs.readFileSync(filePath, {
+ encoding: 'utf8',
+ })
+
+ if (data.includes(template)) {
+ data = data.replace(template, injectCode(css.join('\n')))
+ }
+
+ fs.writeFileSync(filePath, data)
+ } catch (e) {
+ console.error(e)
+ }
+ }
+ },
+ }
+}
\ No newline at end of file
diff --git a/packages/build/package.json b/packages/build/package.json
new file mode 100644
index 0000000..4309810
--- /dev/null
+++ b/packages/build/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "@princess-ui/build",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.ts",
+ "module": "index.ts",
+ "scripts": {
+ "build": "ts-node build.ts"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^2.3.3",
+ "chalk": "4.1.0",
+ "fast-glob": "^3.2.11",
+ "fs-extra": "^10.1.0",
+ "lodash": "^4.17.21",
+ "rimraf": "^3.0.2",
+ "vite": "^2.9.9",
+ "vite-plugin-dts": "^1.1.1",
+ "vite-plugin-replace": "^0.1.1",
+ "vue": "^3.2.36"
+ }
+}
diff --git a/packages/build/tsconfig.json b/packages/build/tsconfig.json
new file mode 100644
index 0000000..301d75e
--- /dev/null
+++ b/packages/build/tsconfig.json
@@ -0,0 +1,10 @@
+{
+ "compilerOptions": {
+ "allowSyntheticDefaultImports": true,
+ "esModuleInterop": true,
+ "module": "commonjs",
+ "lib": ["ES6", "DOM"],
+ "declaration": false,
+ "jsx": "preserve"
+ }
+}
diff --git a/packages/build/util.ts b/packages/build/util.ts
new file mode 100644
index 0000000..540953d
--- /dev/null
+++ b/packages/build/util.ts
@@ -0,0 +1,39 @@
+import glob from "fast-glob"
+import path from "path"
+import _ from "lodash"
+import fs from "fs-extra"
+import {getOutput, getPkgs, rootDir} from "@princess-ui/share"
+
+export async function getComponents() {
+ const res = await glob("components/*/index.ts", { cwd: path.resolve(__dirname, "..") })
+ const components = res.map(v => {
+ const name = path.parse(v.replace("components/", "")).dir
+ return name
+ })
+ return components
+}
+
+export async function generateComponents(components?: string[]) {
+ const componetnsStr: string[] = [`// 该文件为自动生成,请勿修改!!!`]
+ const newComp: string[] = []
+ const typeArray: string[] = []
+ let typeStr = `declare module 'vue' {
+ export interface GlobalComponents {
+ __placeholder__
+ }
+}
+export { }`
+ if (!components) {
+ components = await getComponents()
+ }
+ components.forEach(name => {
+ const n = "Ps" + _.upperFirst(_.kebabCase(name))
+ componetnsStr.push(`import ${n} from "./${name}"`)
+ newComp.push(n)
+ typeArray.push(n + `: typeof import('./lib/${name}')['default']`)
+ })
+ componetnsStr.push(`export { \n ${newComp.join(",\n ")} \n}`)
+ typeStr = typeStr.replace("__placeholder__", typeArray.join(',\n '))
+ await fs.writeFile(getOutput("components.d.ts"), typeStr)
+ await fs.writeFile(getPkgs("components/components.ts"), componetnsStr.join("\n"))
+}
diff --git a/packages/components/button/aaa.css b/packages/components/button/aaa.css
new file mode 100644
index 0000000..cc9a3d0
--- /dev/null
+++ b/packages/components/button/aaa.css
@@ -0,0 +1,3 @@
+div{
+ background-color: rebeccapurple;
+}
\ No newline at end of file
diff --git a/packages/components/button/index.ts b/packages/components/button/index.ts
new file mode 100644
index 0000000..309595c
--- /dev/null
+++ b/packages/components/button/index.ts
@@ -0,0 +1,4 @@
+import button from "./index.vue"
+button.name="ps-button"
+
+export default button
\ No newline at end of file
diff --git a/packages/components/button/index.vue b/packages/components/button/index.vue
new file mode 100644
index 0000000..8f3d5fb
--- /dev/null
+++ b/packages/components/button/index.vue
@@ -0,0 +1,30 @@
+
+
+ sada{{ color }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/components/components.ts b/packages/components/components.ts
new file mode 100644
index 0000000..c78e43b
--- /dev/null
+++ b/packages/components/components.ts
@@ -0,0 +1,7 @@
+// 该文件为自动生成,请勿修改!!!
+import PsButton from "./button"
+import PsFuck from "./fuck"
+export {
+ PsButton,
+ PsFuck
+}
\ No newline at end of file
diff --git a/packages/components/fuck/index.ts b/packages/components/fuck/index.ts
new file mode 100644
index 0000000..7d7cdf3
--- /dev/null
+++ b/packages/components/fuck/index.ts
@@ -0,0 +1,3 @@
+import fuck from "./index.vue"
+fuck.name = "ps-fuck"
+export default fuck
diff --git a/packages/components/fuck/index.vue b/packages/components/fuck/index.vue
new file mode 100644
index 0000000..c22c9f2
--- /dev/null
+++ b/packages/components/fuck/index.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/components/index.ts b/packages/components/index.ts
new file mode 100644
index 0000000..ea62104
--- /dev/null
+++ b/packages/components/index.ts
@@ -0,0 +1,15 @@
+import * as componets from "./components"
+
+export * from "./components"
+
+function install(app) {
+ for (const key in componets) {
+ const component = componets[key]
+ app.component(component.name || "ps-" + key, component)
+ }
+}
+
+export { install }
+export default {
+ install
+}
\ No newline at end of file
diff --git a/packages/components/package.json b/packages/components/package.json
new file mode 100644
index 0000000..2432c51
--- /dev/null
+++ b/packages/components/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "@princess-ui/components",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.ts",
+ "module": "index.ts",
+ "scripts": {
+ "start": "ts-node index.ts",
+ "dev": "ts-node ../../scripts/index.ts"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC"
+}
diff --git a/packages/playground/index.ts b/packages/playground/index.ts
new file mode 100644
index 0000000..7ad9de8
--- /dev/null
+++ b/packages/playground/index.ts
@@ -0,0 +1,3 @@
+import ff from "@noderun/components"
+
+console.log(ff);
diff --git a/packages/playground/package.json b/packages/playground/package.json
new file mode 100644
index 0000000..ec3fb5a
--- /dev/null
+++ b/packages/playground/package.json
@@ -0,0 +1,12 @@
+{
+ "name": "@princess-ui/playground",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.ts",
+ "scripts": {
+
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC"
+}
diff --git a/packages/princess-ui/PrincessResolver.js b/packages/princess-ui/PrincessResolver.js
new file mode 100644
index 0000000..b80e66c
--- /dev/null
+++ b/packages/princess-ui/PrincessResolver.js
@@ -0,0 +1,31 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+exports.__esModule = true;
+var fs_1 = __importDefault(require("fs"));
+var path_1 = __importDefault(require("path"));
+function existCss(compName) {
+ if (fs_1["default"].existsSync(path_1["default"].resolve(__dirname, "./lib/" + compName[0].toLowerCase() + compName.slice(1) + "/style.css"))) {
+ return true;
+ }
+ return false;
+}
+exports["default"] = (function (name, p) {
+ if (name === void 0) { name = "princess-ui"; }
+ if (p === void 0) { p = "/lib"; }
+ return {
+ type: "component",
+ resolve: function (componentName) {
+ if (componentName.startsWith("Ps")) {
+ return {
+ name: componentName,
+ from: name,
+ sideEffects: existCss(componentName.slice(2)) ? (function getSideEffects(compName) {
+ return "".concat(name).concat(p, "/").concat(compName[0].toLowerCase() + compName.slice(1), "/style.css");
+ })(componentName.slice(2)) : undefined
+ };
+ }
+ }
+ };
+});
diff --git a/packages/princess-ui/PrincessResolver.ts b/packages/princess-ui/PrincessResolver.ts
new file mode 100644
index 0000000..dcbb1b7
--- /dev/null
+++ b/packages/princess-ui/PrincessResolver.ts
@@ -0,0 +1,27 @@
+import fs from "fs"
+import path from "path"
+import type { ComponentResolver, SideEffectsInfo } from "unplugin-vue-components/types"
+
+function existCss(compName) {
+ if (fs.existsSync(path.resolve(__dirname, "./lib/" + compName[0].toLowerCase() + compName.slice(1) + "/style.css"))) {
+ return true
+ }
+ return false
+}
+
+export default (name: string = "princess-ui", p: string="/lib"): ComponentResolver => {
+ return {
+ type: "component",
+ resolve: (componentName: string) => {
+ if (componentName.startsWith("Ps")) {
+ return {
+ name: componentName,
+ from: name,
+ sideEffects: existCss(componentName.slice(2)) ? (function getSideEffects(compName: string): SideEffectsInfo {
+ return `${name}${p}/${compName[0].toLowerCase() + compName.slice(1)}/style.css`
+ })(componentName.slice(2)) : undefined,
+ }
+ }
+ },
+ }
+}
\ No newline at end of file
diff --git a/packages/princess-ui/components.d.ts b/packages/princess-ui/components.d.ts
new file mode 100644
index 0000000..d597f94
--- /dev/null
+++ b/packages/princess-ui/components.d.ts
@@ -0,0 +1,7 @@
+declare module 'vue' {
+ export interface GlobalComponents {
+ PsButton: typeof import('./lib/button')['default'],
+ PsFuck: typeof import('./lib/fuck')['default']
+ }
+}
+export { }
\ No newline at end of file
diff --git a/packages/princess-ui/package.json b/packages/princess-ui/package.json
new file mode 100644
index 0000000..8b66ac1
--- /dev/null
+++ b/packages/princess-ui/package.json
@@ -0,0 +1,22 @@
+{
+ "name": "princess-ui",
+ "version": "0.0.4",
+ "description": "a vue3 ui, just for personal use",
+ "scripts": {
+ "build": "tsc ./PrincessResolver.ts --skipLibCheck --esModuleInterop"
+ },
+ "files": [
+ "lib",
+ "components.d.ts",
+ "PrincessResolver.ts",
+ "PrincessResolver.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "keywords": [],
+ "author": "noderun",
+ "repository": {
+ "url": "http://git.xieyaxin.top/Oxygen/princess-ui"
+ },
+ "license": "ISC"
+}
diff --git a/packages/princess-ui/tsconfig.json b/packages/princess-ui/tsconfig.json
new file mode 100644
index 0000000..63b5082
--- /dev/null
+++ b/packages/princess-ui/tsconfig.json
@@ -0,0 +1,3 @@
+{
+ "extends": "../../tsconfig.json"
+}
diff --git a/packages/share/index.ts b/packages/share/index.ts
new file mode 100644
index 0000000..f830d8d
--- /dev/null
+++ b/packages/share/index.ts
@@ -0,0 +1,14 @@
+import path from "path"
+
+export const rootDir = path.resolve(__dirname, "../../")
+
+
+export function getOutput(...p: string[]) {
+ return path.resolve(rootDir, "packages/princess-ui",...p)
+}
+export function getPath(...p: string[]) {
+ return path.resolve(rootDir, ...p)
+}
+export function getPkgs(...p: string[]) {
+ return path.resolve(rootDir, "packages", ...p)
+}
\ No newline at end of file
diff --git a/packages/share/package.json b/packages/share/package.json
new file mode 100644
index 0000000..b5cadcd
--- /dev/null
+++ b/packages/share/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "@princess-ui/share",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.ts",
+ "module": "index.ts",
+ "scripts": {},
+ "keywords": [],
+ "author": "",
+ "license": "ISC"
+}
diff --git a/packages/theme-chalk/index.scss b/packages/theme-chalk/index.scss
new file mode 100644
index 0000000..e69de29
diff --git a/packages/theme-chalk/package.json b/packages/theme-chalk/package.json
new file mode 100644
index 0000000..f578c75
--- /dev/null
+++ b/packages/theme-chalk/package.json
@@ -0,0 +1,13 @@
+{
+ "name": "@princess-ui/theme-chalk",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.ts",
+ "module": "index.ts",
+ "scripts": {
+ "dev": "ts-node ../../scripts/index.ts"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC"
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..71f9390
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,1077 @@
+lockfileVersion: 5.4
+
+importers:
+
+ packages/build:
+ specifiers:
+ '@vitejs/plugin-vue': ^2.3.3
+ chalk: 4.1.0
+ fast-glob: ^3.2.11
+ fs-extra: ^10.1.0
+ lodash: ^4.17.21
+ rimraf: ^3.0.2
+ vite: ^2.9.9
+ vite-plugin-dts: ^1.1.1
+ vite-plugin-replace: ^0.1.1
+ vue: ^3.2.36
+ devDependencies:
+ '@vitejs/plugin-vue': 2.3.3_vite@2.9.9+vue@3.2.36
+ chalk: 4.1.0
+ fast-glob: 3.2.11
+ fs-extra: 10.1.0
+ lodash: 4.17.21
+ rimraf: 3.0.2
+ vite: 2.9.9
+ vite-plugin-dts: 1.1.1_vite@2.9.9
+ vite-plugin-replace: 0.1.1_vite@2.9.9
+ vue: 3.2.36
+
+packages:
+
+ /@babel/helper-validator-identifier/7.16.7:
+ resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/parser/7.18.0:
+ resolution: {integrity: sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dependencies:
+ '@babel/types': 7.18.0
+ dev: true
+
+ /@babel/types/7.18.0:
+ resolution: {integrity: sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.16.7
+ to-fast-properties: 2.0.0
+ dev: true
+
+ /@microsoft/api-extractor-model/7.17.3:
+ resolution: {integrity: sha512-ETslFxVEZTEK6mrOARxM34Ll2W/5H2aTk9Pe9dxsMCnthE8O/CaStV4WZAGsvvZKyjelSWgPVYGowxGVnwOMlQ==}
+ dependencies:
+ '@microsoft/tsdoc': 0.14.1
+ '@microsoft/tsdoc-config': 0.16.1
+ '@rushstack/node-core-library': 3.45.5
+ dev: true
+
+ /@microsoft/api-extractor/7.24.1:
+ resolution: {integrity: sha512-RjcKRvKRAtTK4z8UdC2qYsvgTYHEYvdsqF4QGoX4mNAVo7s6Jj4zcHtSrMEQMTUHujZbSd5+ihI5ktISp338mQ==}
+ hasBin: true
+ dependencies:
+ '@microsoft/api-extractor-model': 7.17.3
+ '@microsoft/tsdoc': 0.14.1
+ '@microsoft/tsdoc-config': 0.16.1
+ '@rushstack/node-core-library': 3.45.5
+ '@rushstack/rig-package': 0.3.11
+ '@rushstack/ts-command-line': 4.11.0
+ colors: 1.2.5
+ lodash: 4.17.21
+ resolve: 1.17.0
+ semver: 7.3.7
+ source-map: 0.6.1
+ typescript: 4.6.4
+ dev: true
+
+ /@microsoft/tsdoc-config/0.16.1:
+ resolution: {integrity: sha512-2RqkwiD4uN6MLnHFljqBlZIXlt/SaUT6cuogU1w2ARw4nKuuppSmR0+s+NC+7kXBQykd9zzu0P4HtBpZT5zBpQ==}
+ dependencies:
+ '@microsoft/tsdoc': 0.14.1
+ ajv: 6.12.6
+ jju: 1.4.0
+ resolve: 1.19.0
+ dev: true
+
+ /@microsoft/tsdoc/0.14.1:
+ resolution: {integrity: sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==}
+ dev: true
+
+ /@nodelib/fs.scandir/2.1.5:
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+ dev: true
+
+ /@nodelib/fs.stat/2.0.5:
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /@nodelib/fs.walk/1.2.8:
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.13.0
+ dev: true
+
+ /@rushstack/node-core-library/3.45.5:
+ resolution: {integrity: sha512-KbN7Hp9vH3bD3YJfv6RnVtzzTAwGYIBl7y2HQLY4WEQqRbvE3LgI78W9l9X+cTAXCX//p0EeoiUYNTFdqJrMZg==}
+ dependencies:
+ '@types/node': 12.20.24
+ colors: 1.2.5
+ fs-extra: 7.0.1
+ import-lazy: 4.0.0
+ jju: 1.4.0
+ resolve: 1.17.0
+ semver: 7.3.7
+ timsort: 0.3.0
+ z-schema: 5.0.3
+ dev: true
+
+ /@rushstack/rig-package/0.3.11:
+ resolution: {integrity: sha512-uI1/g5oQPtyrT9nStoyX/xgZSLa2b+srRFaDk3r1eqC7zA5th4/bvTGl2QfV3C9NcP+coSqmk5mFJkUfH6i3Lw==}
+ dependencies:
+ resolve: 1.17.0
+ strip-json-comments: 3.1.1
+ dev: true
+
+ /@rushstack/ts-command-line/4.11.0:
+ resolution: {integrity: sha512-ptG9L0mjvJ5QtK11GsAFY+jGfsnqHDS6CY6Yw1xT7a9bhjfNYnf6UPwjV+pF6UgiucfNcMDNW9lkDLxvZKKxMg==}
+ dependencies:
+ '@types/argparse': 1.0.38
+ argparse: 1.0.10
+ colors: 1.2.5
+ string-argv: 0.3.1
+ dev: true
+
+ /@ts-morph/common/0.13.0:
+ resolution: {integrity: sha512-fEJ6j7Cu8yiWjA4UmybOBH9Efgb/64ZTWuvCF4KysGu4xz8ettfyaqFt8WZ1btCxXsGZJjZ2/3svOF6rL+UFdQ==}
+ dependencies:
+ fast-glob: 3.2.11
+ minimatch: 5.1.0
+ mkdirp: 1.0.4
+ path-browserify: 1.0.1
+ dev: true
+
+ /@types/argparse/1.0.38:
+ resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==}
+ dev: true
+
+ /@types/node/12.20.24:
+ resolution: {integrity: sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==}
+ dev: true
+
+ /@vitejs/plugin-vue/2.3.3_vite@2.9.9+vue@3.2.36:
+ resolution: {integrity: sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ vite: ^2.5.10
+ vue: ^3.2.25
+ dependencies:
+ vite: 2.9.9
+ vue: 3.2.36
+ dev: true
+
+ /@vue/compiler-core/3.2.36:
+ resolution: {integrity: sha512-bbyZM5hvBicv0PW3KUfVi+x3ylHnfKG7DOn5wM+f2OztTzTjLEyBb/5yrarIYpmnGitVGbjZqDbODyW4iK8hqw==}
+ dependencies:
+ '@babel/parser': 7.18.0
+ '@vue/shared': 3.2.36
+ estree-walker: 2.0.2
+ source-map: 0.6.1
+ dev: true
+
+ /@vue/compiler-dom/3.2.36:
+ resolution: {integrity: sha512-tcOTAOiW4s24QLnq+ON6J+GRONXJ+A/mqKCORi0LSlIh8XQlNnlm24y8xIL8la+ZDgkdbjarQ9ZqYSvEja6gVA==}
+ dependencies:
+ '@vue/compiler-core': 3.2.36
+ '@vue/shared': 3.2.36
+ dev: true
+
+ /@vue/compiler-sfc/3.2.36:
+ resolution: {integrity: sha512-AvGb4bTj4W8uQ4BqaSxo7UwTEqX5utdRSMyHy58OragWlt8nEACQ9mIeQh3K4di4/SX+41+pJrLIY01lHAOFOA==}
+ dependencies:
+ '@babel/parser': 7.18.0
+ '@vue/compiler-core': 3.2.36
+ '@vue/compiler-dom': 3.2.36
+ '@vue/compiler-ssr': 3.2.36
+ '@vue/reactivity-transform': 3.2.36
+ '@vue/shared': 3.2.36
+ estree-walker: 2.0.2
+ magic-string: 0.25.9
+ postcss: 8.4.14
+ source-map: 0.6.1
+ dev: true
+
+ /@vue/compiler-ssr/3.2.36:
+ resolution: {integrity: sha512-+KugInUFRvOxEdLkZwE+W43BqHyhBh0jpYXhmqw1xGq2dmE6J9eZ8UUSOKNhdHtQ/iNLWWeK/wPZkVLUf3YGaw==}
+ dependencies:
+ '@vue/compiler-dom': 3.2.36
+ '@vue/shared': 3.2.36
+ dev: true
+
+ /@vue/reactivity-transform/3.2.36:
+ resolution: {integrity: sha512-Jk5o2BhpODC9XTA7o4EL8hSJ4JyrFWErLtClG3NH8wDS7ri9jBDWxI7/549T7JY9uilKsaNM+4pJASLj5dtRwA==}
+ dependencies:
+ '@babel/parser': 7.18.0
+ '@vue/compiler-core': 3.2.36
+ '@vue/shared': 3.2.36
+ estree-walker: 2.0.2
+ magic-string: 0.25.9
+ dev: true
+
+ /@vue/reactivity/3.2.36:
+ resolution: {integrity: sha512-c2qvopo0crh9A4GXi2/2kfGYMxsJW4tVILrqRPydVGZHhq0fnzy6qmclWOhBFckEhmyxmpHpdJtIRYGeKcuhnA==}
+ dependencies:
+ '@vue/shared': 3.2.36
+ dev: true
+
+ /@vue/runtime-core/3.2.36:
+ resolution: {integrity: sha512-PTWBD+Lub+1U3/KhbCExrfxyS14hstLX+cBboxVHaz+kXoiDLNDEYAovPtxeTutbqtClIXtft+wcGdC+FUQ9qQ==}
+ dependencies:
+ '@vue/reactivity': 3.2.36
+ '@vue/shared': 3.2.36
+ dev: true
+
+ /@vue/runtime-dom/3.2.36:
+ resolution: {integrity: sha512-gYPYblm7QXHVuBohqNRRT7Wez0f2Mx2D40rb4fleehrJU9CnkjG0phhcGEZFfGwCmHZRqBCRgbFWE98bPULqkg==}
+ dependencies:
+ '@vue/runtime-core': 3.2.36
+ '@vue/shared': 3.2.36
+ csstype: 2.6.20
+ dev: true
+
+ /@vue/server-renderer/3.2.36_vue@3.2.36:
+ resolution: {integrity: sha512-uZE0+jfye6yYXWvAQYeHZv+f50sRryvy16uiqzk3jn8hEY8zTjI+rzlmZSGoE915k+W/Ol9XSw6vxOUD8dGkUg==}
+ peerDependencies:
+ vue: 3.2.36
+ dependencies:
+ '@vue/compiler-ssr': 3.2.36
+ '@vue/shared': 3.2.36
+ vue: 3.2.36
+ dev: true
+
+ /@vue/shared/3.2.36:
+ resolution: {integrity: sha512-JtB41wXl7Au3+Nl3gD16Cfpj7k/6aCroZ6BbOiCMFCMvrOpkg/qQUXTso2XowaNqBbnkuGHurLAqkLBxNGc1hQ==}
+ dev: true
+
+ /ajv/6.12.6:
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+ dev: true
+
+ /ansi-styles/4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+ dependencies:
+ color-convert: 2.0.1
+ dev: true
+
+ /argparse/1.0.10:
+ resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
+ dependencies:
+ sprintf-js: 1.0.3
+ dev: true
+
+ /balanced-match/1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ dev: true
+
+ /brace-expansion/1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+ dev: true
+
+ /brace-expansion/2.0.1:
+ resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+ dependencies:
+ balanced-match: 1.0.2
+ dev: true
+
+ /braces/3.0.2:
+ resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+ engines: {node: '>=8'}
+ dependencies:
+ fill-range: 7.0.1
+ dev: true
+
+ /chalk/4.1.0:
+ resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+ dev: true
+
+ /chalk/4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+ dev: true
+
+ /code-block-writer/11.0.0:
+ resolution: {integrity: sha512-GEqWvEWWsOvER+g9keO4ohFoD3ymwyCnqY3hoTr7GZipYFwEhMHJw+TtV0rfgRhNImM6QWZGO2XYjlJVyYT62w==}
+ dependencies:
+ tslib: 2.3.1
+ dev: true
+
+ /color-convert/2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+ dependencies:
+ color-name: 1.1.4
+ dev: true
+
+ /color-name/1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ dev: true
+
+ /colors/1.2.5:
+ resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==}
+ engines: {node: '>=0.1.90'}
+ dev: true
+
+ /commander/2.20.3:
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /concat-map/0.0.1:
+ resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
+ dev: true
+
+ /csstype/2.6.20:
+ resolution: {integrity: sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==}
+ dev: true
+
+ /debug/4.3.4:
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.2
+ dev: true
+
+ /esbuild-android-64/0.14.39:
+ resolution: {integrity: sha512-EJOu04p9WgZk0UoKTqLId9VnIsotmI/Z98EXrKURGb3LPNunkeffqQIkjS2cAvidh+OK5uVrXaIP229zK6GvhQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-android-arm64/0.14.39:
+ resolution: {integrity: sha512-+twajJqO7n3MrCz9e+2lVOnFplRsaGRwsq1KL/uOy7xK7QdRSprRQcObGDeDZUZsacD5gUkk6OiHiYp6RzU3CA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-darwin-64/0.14.39:
+ resolution: {integrity: sha512-ImT6eUw3kcGcHoUxEcdBpi6LfTRWaV6+qf32iYYAfwOeV+XaQ/Xp5XQIBiijLeo+LpGci9M0FVec09nUw41a5g==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-darwin-arm64/0.14.39:
+ resolution: {integrity: sha512-/fcQ5UhE05OiT+bW5v7/up1bDsnvaRZPJxXwzXsMRrr7rZqPa85vayrD723oWMT64dhrgWeA3FIneF8yER0XTw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-freebsd-64/0.14.39:
+ resolution: {integrity: sha512-oMNH8lJI4wtgN5oxuFP7BQ22vgB/e3Tl5Woehcd6i2r6F3TszpCnNl8wo2d/KvyQ4zvLvCWAlRciumhQg88+kQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-freebsd-arm64/0.14.39:
+ resolution: {integrity: sha512-1GHK7kwk57ukY2yI4ILWKJXaxfr+8HcM/r/JKCGCPziIVlL+Wi7RbJ2OzMcTKZ1HpvEqCTBT/J6cO4ZEwW4Ypg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-32/0.14.39:
+ resolution: {integrity: sha512-g97Sbb6g4zfRLIxHgW2pc393DjnkTRMeq3N1rmjDUABxpx8SjocK4jLen+/mq55G46eE2TA0MkJ4R3SpKMu7dg==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-64/0.14.39:
+ resolution: {integrity: sha512-4tcgFDYWdI+UbNMGlua9u1Zhu0N5R6u9tl5WOM8aVnNX143JZoBZLpCuUr5lCKhnD0SCO+5gUyMfupGrHtfggQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-arm/0.14.39:
+ resolution: {integrity: sha512-t0Hn1kWVx5UpCzAJkKRfHeYOLyFnXwYynIkK54/h3tbMweGI7dj400D1k0Vvtj2u1P+JTRT9tx3AjtLEMmfVBQ==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-arm64/0.14.39:
+ resolution: {integrity: sha512-23pc8MlD2D6Px1mV8GMglZlKgwgNKAO8gsgsLLcXWSs9lQsCYkIlMo/2Ycfo5JrDIbLdwgP8D2vpfH2KcBqrDQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-mips64le/0.14.39:
+ resolution: {integrity: sha512-epwlYgVdbmkuRr5n4es3B+yDI0I2e/nxhKejT9H0OLxFAlMkeQZxSpxATpDc9m8NqRci6Kwyb/SfmD1koG2Zuw==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-ppc64le/0.14.39:
+ resolution: {integrity: sha512-W/5ezaq+rQiQBThIjLMNjsuhPHg+ApVAdTz2LvcuesZFMsJoQAW2hutoyg47XxpWi7aEjJGrkS26qCJKhRn3QQ==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-riscv64/0.14.39:
+ resolution: {integrity: sha512-IS48xeokcCTKeQIOke2O0t9t14HPvwnZcy+5baG13Z1wxs9ZrC5ig5ypEQQh4QMKxURD5TpCLHw2W42CLuVZaA==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-s390x/0.14.39:
+ resolution: {integrity: sha512-zEfunpqR8sMomqXhNTFEKDs+ik7HC01m3M60MsEjZOqaywHu5e5682fMsqOlZbesEAAaO9aAtRBsU7CHnSZWyA==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-netbsd-64/0.14.39:
+ resolution: {integrity: sha512-Uo2suJBSIlrZCe4E0k75VDIFJWfZy+bOV6ih3T4MVMRJh1lHJ2UyGoaX4bOxomYN3t+IakHPyEoln1+qJ1qYaA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-openbsd-64/0.14.39:
+ resolution: {integrity: sha512-secQU+EpgUPpYjJe3OecoeGKVvRMLeKUxSMGHnK+aK5uQM3n1FPXNJzyz1LHFOo0WOyw+uoCxBYdM4O10oaCAA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-sunos-64/0.14.39:
+ resolution: {integrity: sha512-qHq0t5gePEDm2nqZLb+35p/qkaXVS7oIe32R0ECh2HOdiXXkj/1uQI9IRogGqKkK+QjDG+DhwiUw7QoHur/Rwg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-windows-32/0.14.39:
+ resolution: {integrity: sha512-XPjwp2OgtEX0JnOlTgT6E5txbRp6Uw54Isorm3CwOtloJazeIWXuiwK0ONJBVb/CGbiCpS7iP2UahGgd2p1x+Q==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-windows-64/0.14.39:
+ resolution: {integrity: sha512-E2wm+5FwCcLpKsBHRw28bSYQw0Ikxb7zIMxw3OPAkiaQhLVr3dnVO8DofmbWhhf6b97bWzg37iSZ45ZDpLw7Ow==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-windows-arm64/0.14.39:
+ resolution: {integrity: sha512-sBZQz5D+Gd0EQ09tZRnz/PpVdLwvp/ufMtJ1iDFYddDaPpZXKqPyaxfYBLs3ueiaksQ26GGa7sci0OqFzNs7KA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild/0.14.39:
+ resolution: {integrity: sha512-2kKujuzvRWYtwvNjYDY444LQIA3TyJhJIX3Yo4+qkFlDDtGlSicWgeHVJqMUP/2sSfH10PGwfsj+O2ro1m10xQ==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ esbuild-android-64: 0.14.39
+ esbuild-android-arm64: 0.14.39
+ esbuild-darwin-64: 0.14.39
+ esbuild-darwin-arm64: 0.14.39
+ esbuild-freebsd-64: 0.14.39
+ esbuild-freebsd-arm64: 0.14.39
+ esbuild-linux-32: 0.14.39
+ esbuild-linux-64: 0.14.39
+ esbuild-linux-arm: 0.14.39
+ esbuild-linux-arm64: 0.14.39
+ esbuild-linux-mips64le: 0.14.39
+ esbuild-linux-ppc64le: 0.14.39
+ esbuild-linux-riscv64: 0.14.39
+ esbuild-linux-s390x: 0.14.39
+ esbuild-netbsd-64: 0.14.39
+ esbuild-openbsd-64: 0.14.39
+ esbuild-sunos-64: 0.14.39
+ esbuild-windows-32: 0.14.39
+ esbuild-windows-64: 0.14.39
+ esbuild-windows-arm64: 0.14.39
+ dev: true
+
+ /estree-walker/2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+ dev: true
+
+ /fast-deep-equal/3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ dev: true
+
+ /fast-glob/3.2.11:
+ resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==}
+ engines: {node: '>=8.6.0'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.5
+ dev: true
+
+ /fast-json-stable-stringify/2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+ dev: true
+
+ /fastq/1.13.0:
+ resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==}
+ dependencies:
+ reusify: 1.0.4
+ dev: true
+
+ /fill-range/7.0.1:
+ resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ to-regex-range: 5.0.1
+ dev: true
+
+ /fs-extra/10.1.0:
+ resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ graceful-fs: 4.2.10
+ jsonfile: 6.1.0
+ universalify: 2.0.0
+ dev: true
+
+ /fs-extra/7.0.1:
+ resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
+ engines: {node: '>=6 <7 || >=8'}
+ dependencies:
+ graceful-fs: 4.2.10
+ jsonfile: 4.0.0
+ universalify: 0.1.2
+ dev: true
+
+ /fs.realpath/1.0.0:
+ resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
+ dev: true
+
+ /fsevents/2.3.2:
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /function-bind/1.1.1:
+ resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
+ dev: true
+
+ /glob-parent/5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+ dependencies:
+ is-glob: 4.0.3
+ dev: true
+
+ /glob/7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ dev: true
+
+ /graceful-fs/4.2.10:
+ resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
+ dev: true
+
+ /has-flag/4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /has/1.0.3:
+ resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
+ engines: {node: '>= 0.4.0'}
+ dependencies:
+ function-bind: 1.1.1
+ dev: true
+
+ /import-lazy/4.0.0:
+ resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /inflight/1.0.6:
+ resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=}
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+ dev: true
+
+ /inherits/2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+ dev: true
+
+ /is-core-module/2.9.0:
+ resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==}
+ dependencies:
+ has: 1.0.3
+ dev: true
+
+ /is-extglob/2.1.1:
+ resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-glob/4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+ dev: true
+
+ /is-number/7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+ dev: true
+
+ /jju/1.4.0:
+ resolution: {integrity: sha1-o6vicYryQaKykE+EpiWXDzia4yo=}
+ dev: true
+
+ /json-schema-traverse/0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+ dev: true
+
+ /jsonfile/4.0.0:
+ resolution: {integrity: sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=}
+ optionalDependencies:
+ graceful-fs: 4.2.10
+ dev: true
+
+ /jsonfile/6.1.0:
+ resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
+ dependencies:
+ universalify: 2.0.0
+ optionalDependencies:
+ graceful-fs: 4.2.10
+ dev: true
+
+ /lodash.get/4.4.2:
+ resolution: {integrity: sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=}
+ dev: true
+
+ /lodash.isequal/4.5.0:
+ resolution: {integrity: sha1-QVxEePK8wwEgwizhDtMib30+GOA=}
+ dev: true
+
+ /lodash/4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+ dev: true
+
+ /lru-cache/6.0.0:
+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ engines: {node: '>=10'}
+ dependencies:
+ yallist: 4.0.0
+ dev: true
+
+ /magic-string/0.25.9:
+ resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
+ dependencies:
+ sourcemap-codec: 1.4.8
+ dev: true
+
+ /merge2/1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /micromatch/4.0.5:
+ resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
+ engines: {node: '>=8.6'}
+ dependencies:
+ braces: 3.0.2
+ picomatch: 2.3.1
+ dev: true
+
+ /minimatch/3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ dependencies:
+ brace-expansion: 1.1.11
+ dev: true
+
+ /minimatch/5.1.0:
+ resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==}
+ engines: {node: '>=10'}
+ dependencies:
+ brace-expansion: 2.0.1
+ dev: true
+
+ /mkdirp/1.0.4:
+ resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dev: true
+
+ /ms/2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+ dev: true
+
+ /nanoid/3.3.4:
+ resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+ dev: true
+
+ /once/1.4.0:
+ resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=}
+ dependencies:
+ wrappy: 1.0.2
+ dev: true
+
+ /path-browserify/1.0.1:
+ resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
+ dev: true
+
+ /path-is-absolute/1.0.1:
+ resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /path-parse/1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ dev: true
+
+ /picocolors/1.0.0:
+ resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+ dev: true
+
+ /picomatch/2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+ dev: true
+
+ /postcss/8.4.14:
+ resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.4
+ picocolors: 1.0.0
+ source-map-js: 1.0.2
+ dev: true
+
+ /punycode/2.1.1:
+ resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /queue-microtask/1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ dev: true
+
+ /resolve/1.17.0:
+ resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==}
+ dependencies:
+ path-parse: 1.0.7
+ dev: true
+
+ /resolve/1.19.0:
+ resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==}
+ dependencies:
+ is-core-module: 2.9.0
+ path-parse: 1.0.7
+ dev: true
+
+ /resolve/1.22.0:
+ resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==}
+ hasBin: true
+ dependencies:
+ is-core-module: 2.9.0
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+ dev: true
+
+ /reusify/1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ dev: true
+
+ /rimraf/3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ hasBin: true
+ dependencies:
+ glob: 7.2.3
+ dev: true
+
+ /rollup/2.74.1:
+ resolution: {integrity: sha512-K2zW7kV8Voua5eGkbnBtWYfMIhYhT9Pel2uhBk2WO5eMee161nPze/XRfvEQPFYz7KgrCCnmh2Wy0AMFLGGmMA==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /run-parallel/1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ dependencies:
+ queue-microtask: 1.2.3
+ dev: true
+
+ /semver/7.3.7:
+ resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ lru-cache: 6.0.0
+ dev: true
+
+ /source-map-js/1.0.2:
+ resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /source-map/0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /sourcemap-codec/1.4.8:
+ resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
+ dev: true
+
+ /sprintf-js/1.0.3:
+ resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=}
+ dev: true
+
+ /string-argv/0.3.1:
+ resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==}
+ engines: {node: '>=0.6.19'}
+ dev: true
+
+ /strip-json-comments/3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /supports-color/7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+ dependencies:
+ has-flag: 4.0.0
+ dev: true
+
+ /supports-preserve-symlinks-flag/1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /timsort/0.3.0:
+ resolution: {integrity: sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=}
+ dev: true
+
+ /to-fast-properties/2.0.0:
+ resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=}
+ engines: {node: '>=4'}
+ dev: true
+
+ /to-regex-range/5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+ dependencies:
+ is-number: 7.0.0
+ dev: true
+
+ /ts-morph/14.0.0:
+ resolution: {integrity: sha512-tO8YQ1dP41fw8GVmeQAdNsD8roZi1JMqB7YwZrqU856DvmG5/710e41q2XauzTYrygH9XmMryaFeLo+kdCziyA==}
+ dependencies:
+ '@ts-morph/common': 0.13.0
+ code-block-writer: 11.0.0
+ dev: true
+
+ /tslib/2.3.1:
+ resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==}
+ dev: true
+
+ /typescript/4.6.4:
+ resolution: {integrity: sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==}
+ engines: {node: '>=4.2.0'}
+ hasBin: true
+ dev: true
+
+ /universalify/0.1.2:
+ resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
+ engines: {node: '>= 4.0.0'}
+ dev: true
+
+ /universalify/2.0.0:
+ resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
+ engines: {node: '>= 10.0.0'}
+ dev: true
+
+ /uri-js/4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ dependencies:
+ punycode: 2.1.1
+ dev: true
+
+ /validator/13.7.0:
+ resolution: {integrity: sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==}
+ engines: {node: '>= 0.10'}
+ dev: true
+
+ /vite-plugin-dts/1.1.1_vite@2.9.9:
+ resolution: {integrity: sha512-2aRLBppGCDhtrj+7uV3/Muvn4Pa35CQpZ5Js+z8HQRsTM1YMuvEkSGGQwHkSQdDSyaFv6O1zBqN0ln6hgqHvyw==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ vite: '>=2.4.4'
+ dependencies:
+ '@microsoft/api-extractor': 7.24.1
+ '@rushstack/node-core-library': 3.45.5
+ chalk: 4.1.2
+ debug: 4.3.4
+ fast-glob: 3.2.11
+ fs-extra: 10.1.0
+ ts-morph: 14.0.0
+ vite: 2.9.9
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /vite-plugin-replace/0.1.1_vite@2.9.9:
+ resolution: {integrity: sha512-v+okl3JNt2pf1jDYijw+WPVt6h9FWa/atTi+qnSFBqmKThLTDhlesx0r3bh+oFPmxRJmis5tNx9HtN6lGFoqWg==}
+ peerDependencies:
+ vite: ^2
+ dependencies:
+ vite: 2.9.9
+ dev: true
+
+ /vite/2.9.9:
+ resolution: {integrity: sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==}
+ engines: {node: '>=12.2.0'}
+ hasBin: true
+ peerDependencies:
+ less: '*'
+ sass: '*'
+ stylus: '*'
+ peerDependenciesMeta:
+ less:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ dependencies:
+ esbuild: 0.14.39
+ postcss: 8.4.14
+ resolve: 1.22.0
+ rollup: 2.74.1
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /vue/3.2.36:
+ resolution: {integrity: sha512-5yTXmrE6gW8IQgttzHW5bfBiFA6mx35ZXHjGLDmKYzW6MMmYvCwuKybANRepwkMYeXw2v1buGg3/lPICY5YlZw==}
+ dependencies:
+ '@vue/compiler-dom': 3.2.36
+ '@vue/compiler-sfc': 3.2.36
+ '@vue/runtime-dom': 3.2.36
+ '@vue/server-renderer': 3.2.36_vue@3.2.36
+ '@vue/shared': 3.2.36
+ dev: true
+
+ /wrappy/1.0.2:
+ resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=}
+ dev: true
+
+ /yallist/4.0.0:
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+ dev: true
+
+ /z-schema/5.0.3:
+ resolution: {integrity: sha512-sGvEcBOTNum68x9jCpCVGPFJ6mWnkD0YxOcddDlJHRx3tKdB2q8pCHExMVZo/AV/6geuVJXG7hljDaWG8+5GDw==}
+ engines: {node: '>=8.0.0'}
+ hasBin: true
+ dependencies:
+ lodash.get: 4.4.2
+ lodash.isequal: 4.5.0
+ validator: 13.7.0
+ optionalDependencies:
+ commander: 2.20.3
+ dev: true
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
new file mode 100644
index 0000000..554c2e8
--- /dev/null
+++ b/pnpm-workspace.yaml
@@ -0,0 +1,5 @@
+packages:
+ # all packages in subdirs of packages/ and components/
+ - 'packages/*'
+ # exclude packages that are inside test directories
+ - '!**/test/**'
\ No newline at end of file
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..205fa5a
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,21 @@
+{
+ "compilerOptions": {
+ "allowJs": true,
+ "module": "ESNext",
+ "target": "ES2018",
+ "noImplicitAny": false,
+ "declaration": true,
+ "sourceMap": true,
+ "moduleResolution": "Node",
+ "lib": ["ES2018", "DOM", "DOM.Iterable"],
+ "allowSyntheticDefaultImports": true
+ },
+ "include": ["packages", "typings"],
+ "exclude": [
+ "node_modules",
+ "**/dist",
+ "**/__tests__/**/*",
+ "**/test/**",
+ "**/tests/**"
+ ]
+}
diff --git a/typings/global.d.ts b/typings/global.d.ts
new file mode 100644
index 0000000..b8c18cc
--- /dev/null
+++ b/typings/global.d.ts
@@ -0,0 +1 @@
+declare const __DEV__: boolean;
\ No newline at end of file