From e62e12154e1b7959193153519b6f204ebb67b420 Mon Sep 17 00:00:00 2001
From: ctq123 <1654282805@qq.com>
Date: Tue, 2 May 2023 12:32:27 +0800
Subject: [PATCH 01/44] feat: init project
---
.gitignore | 4 +
App.vue | 17 ++++
index.html | 20 ++++
main.js | 22 +++++
manifest.json | 72 ++++++++++++++
pages.json | 17 ++++
pages/index/index.vue | 52 ++++++++++
static/logo.png | Bin 0 -> 4023 bytes
uni.promisify.adaptor.js | 10 ++
uni.scss | 76 ++++++++++++++
.../database/JQL\346\237\245\350\257\242.jql" | 12 +++
uni_modules/uni-config-center/changelog.md | 6 ++
uni_modules/uni-config-center/package.json | 81 +++++++++++++++
uni_modules/uni-config-center/readme.md | 93 ++++++++++++++++++
.../common/uni-config-center/index.js | 1 +
.../common/uni-config-center/package.json | 9 ++
uni_modules/uni-id-common/changelog.md | 32 ++++++
uni_modules/uni-id-common/package.json | 84 ++++++++++++++++
uni_modules/uni-id-common/readme.md | 3 +
.../common/uni-id-common/index.js | 1 +
.../common/uni-id-common/package.json | 16 +++
21 files changed, 628 insertions(+)
create mode 100644 .gitignore
create mode 100644 App.vue
create mode 100644 index.html
create mode 100644 main.js
create mode 100644 manifest.json
create mode 100644 pages.json
create mode 100644 pages/index/index.vue
create mode 100644 static/logo.png
create mode 100644 uni.promisify.adaptor.js
create mode 100644 uni.scss
create mode 100644 "uniCloud-aliyun/database/JQL\346\237\245\350\257\242.jql"
create mode 100644 uni_modules/uni-config-center/changelog.md
create mode 100644 uni_modules/uni-config-center/package.json
create mode 100644 uni_modules/uni-config-center/readme.md
create mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/index.js
create mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/package.json
create mode 100644 uni_modules/uni-id-common/changelog.md
create mode 100644 uni_modules/uni-id-common/package.json
create mode 100644 uni_modules/uni-id-common/readme.md
create mode 100644 uni_modules/uni-id-common/uniCloud/cloudfunctions/common/uni-id-common/index.js
create mode 100644 uni_modules/uni-id-common/uniCloud/cloudfunctions/common/uni-id-common/package.json
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8c45c81
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+node_modules/
+.project
+unpackage/
+.DS_Store
\ No newline at end of file
diff --git a/App.vue b/App.vue
new file mode 100644
index 0000000..99f6e28
--- /dev/null
+++ b/App.vue
@@ -0,0 +1,17 @@
+
+
+
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..c3ff205
--- /dev/null
+++ b/index.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/main.js b/main.js
new file mode 100644
index 0000000..c1caf36
--- /dev/null
+++ b/main.js
@@ -0,0 +1,22 @@
+import App from './App'
+
+// #ifndef VUE3
+import Vue from 'vue'
+import './uni.promisify.adaptor'
+Vue.config.productionTip = false
+App.mpType = 'app'
+const app = new Vue({
+ ...App
+})
+app.$mount()
+// #endif
+
+// #ifdef VUE3
+import { createSSRApp } from 'vue'
+export function createApp() {
+ const app = createSSRApp(App)
+ return {
+ app
+ }
+}
+// #endif
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
new file mode 100644
index 0000000..4ce1e16
--- /dev/null
+++ b/manifest.json
@@ -0,0 +1,72 @@
+{
+ "name" : "CoupleGame",
+ "appid" : "__UNI__97BC0E8",
+ "description" : "",
+ "versionName" : "1.0.0",
+ "versionCode" : "100",
+ "transformPx" : false,
+ /* 5+App特有相关 */
+ "app-plus" : {
+ "usingComponents" : true,
+ "nvueStyleCompiler" : "uni-app",
+ "compilerVersion" : 3,
+ "splashscreen" : {
+ "alwaysShowBeforeRender" : true,
+ "waiting" : true,
+ "autoclose" : true,
+ "delay" : 0
+ },
+ /* 模块配置 */
+ "modules" : {},
+ /* 应用发布信息 */
+ "distribute" : {
+ /* android打包配置 */
+ "android" : {
+ "permissions" : [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ },
+ /* ios打包配置 */
+ "ios" : {},
+ /* SDK配置 */
+ "sdkConfigs" : {}
+ }
+ },
+ /* 快应用特有相关 */
+ "quickapp" : {},
+ /* 小程序特有相关 */
+ "mp-weixin" : {
+ "appid" : "",
+ "setting" : {
+ "urlCheck" : false
+ },
+ "usingComponents" : true
+ },
+ "mp-alipay" : {
+ "usingComponents" : true
+ },
+ "mp-baidu" : {
+ "usingComponents" : true
+ },
+ "mp-toutiao" : {
+ "usingComponents" : true
+ },
+ "uniStatistics" : {
+ "enable" : false
+ },
+ "vueVersion" : "2"
+}
diff --git a/pages.json b/pages.json
new file mode 100644
index 0000000..d79623c
--- /dev/null
+++ b/pages.json
@@ -0,0 +1,17 @@
+{
+ "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+ {
+ "path": "pages/index/index",
+ "style": {
+ "navigationBarTitleText": "uni-app"
+ }
+ }
+ ],
+ "globalStyle": {
+ "navigationBarTextStyle": "black",
+ "navigationBarTitleText": "uni-app",
+ "navigationBarBackgroundColor": "#F8F8F8",
+ "backgroundColor": "#F8F8F8"
+ },
+ "uniIdRouter": {}
+}
diff --git a/pages/index/index.vue b/pages/index/index.vue
new file mode 100644
index 0000000..4ca2b92
--- /dev/null
+++ b/pages/index/index.vue
@@ -0,0 +1,52 @@
+
+
+
+
+ {{title}}
+
+
+
+
+
+
+
diff --git a/static/logo.png b/static/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..b5771e209bb677e2ebd5ff766ad5ee11790f305a
GIT binary patch
literal 4023
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
SYs}WS&%*SCNx89m_ {
+ res.then((res) => res[0] ? reject(res[0]) : resolve(res[1]));
+ });
+ },
+});
\ No newline at end of file
diff --git a/uni.scss b/uni.scss
new file mode 100644
index 0000000..a9a742d
--- /dev/null
+++ b/uni.scss
@@ -0,0 +1,76 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+/* 颜色变量 */
+
+/* 行为相关颜色 */
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color:#333;//基本色
+$uni-text-color-inverse:#fff;//反色
+$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable:#c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color:#ffffff;
+$uni-bg-color-grey:#f8f8f8;
+$uni-bg-color-hover:#f1f1f1;//点击状态颜色
+$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color:#c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm:12px;
+$uni-font-size-base:14px;
+$uni-font-size-lg:16;
+
+/* 图片尺寸 */
+$uni-img-size-sm:20px;
+$uni-img-size-base:26px;
+$uni-img-size-lg:40px;
+
+/* Border Radius */
+$uni-border-radius-sm: 2px;
+$uni-border-radius-base: 3px;
+$uni-border-radius-lg: 6px;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 5px;
+$uni-spacing-row-base: 10px;
+$uni-spacing-row-lg: 15px;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 4px;
+$uni-spacing-col-base: 8px;
+$uni-spacing-col-lg: 12px;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2C405A; // 文章标题颜色
+$uni-font-size-title:20px;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle:26px;
+$uni-color-paragraph: #3F536E; // 文章段落颜色
+$uni-font-size-paragraph:15px;
diff --git "a/uniCloud-aliyun/database/JQL\346\237\245\350\257\242.jql" "b/uniCloud-aliyun/database/JQL\346\237\245\350\257\242.jql"
new file mode 100644
index 0000000..35d21de
--- /dev/null
+++ "b/uniCloud-aliyun/database/JQL\346\237\245\350\257\242.jql"
@@ -0,0 +1,12 @@
+// 本文件用于,使用JQL语法操作项目关联的uniCloud空间的数据库,方便开发调试和远程数据库管理
+// 编写clientDB的js API(也支持常规js语法,比如var),可以对云数据库进行增删改查操作。不支持uniCloud-db组件写法
+// 可以全部运行,也可以选中部分代码运行。点击工具栏上的运行按钮或者按下【F5】键运行代码
+// 如果文档中存在多条JQL语句,只有最后一条语句生效
+// 如果混写了普通js,最后一条语句需是数据库操作语句
+// 此处代码运行不受DB Schema的权限控制,移植代码到实际业务中注意在schema中配好permission
+// 不支持clientDB的action
+// 数据库查询有最大返回条数限制,详见:https://uniapp.dcloud.net.cn/uniCloud/cf-database.html#limit
+// 详细JQL语法,请参考:https://uniapp.dcloud.net.cn/uniCloud/jql.html
+
+// 下面示例查询uni-id-users表的所有数据
+db.collection('uni-id-users').get();
diff --git a/uni_modules/uni-config-center/changelog.md b/uni_modules/uni-config-center/changelog.md
new file mode 100644
index 0000000..5af5257
--- /dev/null
+++ b/uni_modules/uni-config-center/changelog.md
@@ -0,0 +1,6 @@
+## 0.0.3(2022-11-11)
+- 修复 config 方法获取根节点为数组格式配置时错误的转化为了对象的Bug
+## 0.0.2(2021-04-16)
+- 修改插件package信息
+## 0.0.1(2021-03-15)
+- 初始化项目
diff --git a/uni_modules/uni-config-center/package.json b/uni_modules/uni-config-center/package.json
new file mode 100644
index 0000000..0798109
--- /dev/null
+++ b/uni_modules/uni-config-center/package.json
@@ -0,0 +1,81 @@
+{
+ "id": "uni-config-center",
+ "displayName": "uni-config-center",
+ "version": "0.0.3",
+ "description": "uniCloud 配置中心",
+ "keywords": [
+ "配置",
+ "配置中心"
+],
+ "repository": "",
+ "engines": {
+ "HBuilderX": "^3.1.0"
+ },
+"dcloudext": {
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "",
+ "type": "unicloud-template-function"
+ },
+ "directories": {
+ "example": "../../../scripts/dist"
+ },
+ "uni_modules": {
+ "dependencies": [],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "u",
+ "app-nvue": "u"
+ },
+ "H5-mobile": {
+ "Safari": "u",
+ "Android Browser": "u",
+ "微信浏览器(Android)": "u",
+ "QQ浏览器(Android)": "u"
+ },
+ "H5-pc": {
+ "Chrome": "u",
+ "IE": "u",
+ "Edge": "u",
+ "Firefox": "u",
+ "Safari": "u"
+ },
+ "小程序": {
+ "微信": "u",
+ "阿里": "u",
+ "百度": "u",
+ "字节跳动": "u",
+ "QQ": "u"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "u"
+ }
+ }
+ }
+ }
+}
diff --git a/uni_modules/uni-config-center/readme.md b/uni_modules/uni-config-center/readme.md
new file mode 100644
index 0000000..0bd8ac4
--- /dev/null
+++ b/uni_modules/uni-config-center/readme.md
@@ -0,0 +1,93 @@
+# 为什么使用uni-config-center
+
+实际开发中很多插件需要配置文件才可以正常运行,如果每个插件都单独进行配置的话就会产生下面这样的目录结构
+
+```bash
+cloudfunctions
+└─────common 公共模块
+ ├─plugin-a // 插件A对应的目录
+ │ ├─index.js
+ │ ├─config.json // plugin-a对应的配置文件
+ │ └─other-file.cert // plugin-a依赖的其他文件
+ └─plugin-b // plugin-b对应的目录
+ ├─index.js
+ └─config.json // plugin-b对应的配置文件
+```
+
+假设插件作者要发布一个项目模板,里面使用了很多需要配置的插件,无论是作者发布还是用户使用都是一个大麻烦。
+
+uni-config-center就是用了统一管理这些配置文件的,使用uni-config-center后的目录结构如下
+
+```bash
+cloudfunctions
+└─────common 公共模块
+ ├─plugin-a // 插件A对应的目录
+ │ └─index.js
+ ├─plugin-b // plugin-b对应的目录
+ │ └─index.js
+ └─uni-config-center
+ ├─index.js // config-center入口文件
+ ├─plugin-a
+ │ ├─config.json // plugin-a对应的配置文件
+ │ └─other-file.cert // plugin-a依赖的其他文件
+ └─plugin-b
+ └─config.json // plugin-b对应的配置文件
+```
+
+使用uni-config-center后的优势
+
+- 配置文件统一管理,分离插件主体和配置信息,更新插件更方便
+- 支持对config.json设置schema,插件使用者在HBuilderX内编写config.json文件时会有更好的提示(后续HBuilderX会提供支持)
+
+# 用法
+
+在要使用uni-config-center的公共模块或云函数内引入uni-config-center依赖,请参考:[使用公共模块](https://uniapp.dcloud.net.cn/uniCloud/cf-common)
+
+```js
+const createConfig = require('uni-config-center')
+
+const uniIdConfig = createConfig({
+ pluginId: 'uni-id', // 插件id
+ defaultConfig: { // 默认配置
+ tokenExpiresIn: 7200,
+ tokenExpiresThreshold: 600,
+ },
+ customMerge: function(defaultConfig, userConfig) { // 自定义默认配置和用户配置的合并规则,不设置的情况侠会对默认配置和用户配置进行深度合并
+ // defaudltConfig 默认配置
+ // userConfig 用户配置
+ return Object.assign(defaultConfig, userConfig)
+ }
+})
+
+
+// 以如下配置为例
+// {
+// "tokenExpiresIn": 7200,
+// "passwordErrorLimit": 6,
+// "bindTokenToDevice": false,
+// "passwordErrorRetryTime": 3600,
+// "app-plus": {
+// "tokenExpiresIn": 2592000
+// },
+// "service": {
+// "sms": {
+// "codeExpiresIn": 300
+// }
+// }
+// }
+
+// 获取配置
+uniIdConfig.config() // 获取全部配置,注意:uni-config-center内不存在对应插件目录时会返回空对象
+uniIdConfig.config('tokenExpiresIn') // 指定键值获取配置,返回:7200
+uniIdConfig.config('service.sms.codeExpiresIn') // 指定键值获取配置,返回:300
+uniIdConfig.config('tokenExpiresThreshold', 600) // 指定键值获取配置,如果不存在则取传入的默认值,返回:600
+
+// 获取文件绝对路径
+uniIdConfig.resolve('custom-token.js') // 获取uni-config-center/uni-id/custom-token.js文件的路径
+
+// 引用文件(require)
+uniIDConfig.requireFile('custom-token.js') // 使用require方式引用uni-config-center/uni-id/custom-token.js文件。文件不存在时返回undefined,文件内有其他错误导致require失败时会抛出错误。
+
+// 判断是否包含某文件
+uniIDConfig.hasFile('custom-token.js') // 配置目录是否包含某文件,true: 文件存在,false: 文件不存在
+```
\ No newline at end of file
diff --git a/uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/index.js b/uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/index.js
new file mode 100644
index 0000000..00ba62f
--- /dev/null
+++ b/uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/index.js
@@ -0,0 +1 @@
+"use strict";var t=require("fs"),r=require("path");function e(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var n=e(t),o=e(r),i="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var u=function(t){var r={exports:{}};return t(r,r.exports),r.exports}((function(t,r){var e="__lodash_hash_undefined__",n=9007199254740991,o="[object Arguments]",u="[object Function]",c="[object Object]",a=/^\[object .+?Constructor\]$/,f=/^(?:0|[1-9]\d*)$/,s={};s["[object Float32Array]"]=s["[object Float64Array]"]=s["[object Int8Array]"]=s["[object Int16Array]"]=s["[object Int32Array]"]=s["[object Uint8Array]"]=s["[object Uint8ClampedArray]"]=s["[object Uint16Array]"]=s["[object Uint32Array]"]=!0,s[o]=s["[object Array]"]=s["[object ArrayBuffer]"]=s["[object Boolean]"]=s["[object DataView]"]=s["[object Date]"]=s["[object Error]"]=s[u]=s["[object Map]"]=s["[object Number]"]=s[c]=s["[object RegExp]"]=s["[object Set]"]=s["[object String]"]=s["[object WeakMap]"]=!1;var l="object"==typeof i&&i&&i.Object===Object&&i,h="object"==typeof self&&self&&self.Object===Object&&self,p=l||h||Function("return this")(),_=r&&!r.nodeType&&r,v=_&&t&&!t.nodeType&&t,d=v&&v.exports===_,y=d&&l.process,g=function(){try{var t=v&&v.require&&v.require("util").types;return t||y&&y.binding&&y.binding("util")}catch(t){}}(),b=g&&g.isTypedArray;function j(t,r,e){switch(e.length){case 0:return t.call(r);case 1:return t.call(r,e[0]);case 2:return t.call(r,e[0],e[1]);case 3:return t.call(r,e[0],e[1],e[2])}return t.apply(r,e)}var w,O,m,A=Array.prototype,z=Function.prototype,M=Object.prototype,x=p["__core-js_shared__"],C=z.toString,F=M.hasOwnProperty,U=(w=/[^.]+$/.exec(x&&x.keys&&x.keys.IE_PROTO||""))?"Symbol(src)_1."+w:"",S=M.toString,I=C.call(Object),P=RegExp("^"+C.call(F).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),T=d?p.Buffer:void 0,q=p.Symbol,E=p.Uint8Array,$=T?T.allocUnsafe:void 0,D=(O=Object.getPrototypeOf,m=Object,function(t){return O(m(t))}),k=Object.create,B=M.propertyIsEnumerable,N=A.splice,L=q?q.toStringTag:void 0,R=function(){try{var t=vt(Object,"defineProperty");return t({},"",{}),t}catch(t){}}(),G=T?T.isBuffer:void 0,V=Math.max,W=Date.now,H=vt(p,"Map"),J=vt(Object,"create"),K=function(){function t(){}return function(r){if(!xt(r))return{};if(k)return k(r);t.prototype=r;var e=new t;return t.prototype=void 0,e}}();function Q(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1},X.prototype.set=function(t,r){var e=this.__data__,n=nt(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this},Y.prototype.clear=function(){this.size=0,this.__data__={hash:new Q,map:new(H||X),string:new Q}},Y.prototype.delete=function(t){var r=_t(this,t).delete(t);return this.size-=r?1:0,r},Y.prototype.get=function(t){return _t(this,t).get(t)},Y.prototype.has=function(t){return _t(this,t).has(t)},Y.prototype.set=function(t,r){var e=_t(this,t),n=e.size;return e.set(t,r),this.size+=e.size==n?0:1,this},Z.prototype.clear=function(){this.__data__=new X,this.size=0},Z.prototype.delete=function(t){var r=this.__data__,e=r.delete(t);return this.size=r.size,e},Z.prototype.get=function(t){return this.__data__.get(t)},Z.prototype.has=function(t){return this.__data__.has(t)},Z.prototype.set=function(t,r){var e=this.__data__;if(e instanceof X){var n=e.__data__;if(!H||n.length<199)return n.push([t,r]),this.size=++e.size,this;e=this.__data__=new Y(n)}return e.set(t,r),this.size=e.size,this};var it,ut=function(t,r,e){for(var n=-1,o=Object(t),i=e(t),u=i.length;u--;){var c=i[it?u:++n];if(!1===r(o[c],c,o))break}return t};function ct(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":L&&L in Object(t)?function(t){var r=F.call(t,L),e=t[L];try{t[L]=void 0;var n=!0}catch(t){}var o=S.call(t);n&&(r?t[L]=e:delete t[L]);return o}(t):function(t){return S.call(t)}(t)}function at(t){return Ct(t)&&ct(t)==o}function ft(t){return!(!xt(t)||function(t){return!!U&&U in t}(t))&&(zt(t)?P:a).test(function(t){if(null!=t){try{return C.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function st(t){if(!xt(t))return function(t){var r=[];if(null!=t)for(var e in Object(t))r.push(e);return r}(t);var r=yt(t),e=[];for(var n in t)("constructor"!=n||!r&&F.call(t,n))&&e.push(n);return e}function lt(t,r,e,n,o){t!==r&&ut(r,(function(i,u){if(o||(o=new Z),xt(i))!function(t,r,e,n,o,i,u){var a=gt(t,e),f=gt(r,e),s=u.get(f);if(s)return void rt(t,e,s);var l=i?i(a,f,e+"",t,r,u):void 0,h=void 0===l;if(h){var p=Ot(f),_=!p&&At(f),v=!p&&!_&&Ft(f);l=f,p||_||v?Ot(a)?l=a:Ct(j=a)&&mt(j)?l=function(t,r){var e=-1,n=t.length;r||(r=Array(n));for(;++e-1&&t%1==0&&t0){if(++r>=800)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(pt);function jt(t,r){return t===r||t!=t&&r!=r}var wt=at(function(){return arguments}())?at:function(t){return Ct(t)&&F.call(t,"callee")&&!B.call(t,"callee")},Ot=Array.isArray;function mt(t){return null!=t&&Mt(t.length)&&!zt(t)}var At=G||function(){return!1};function zt(t){if(!xt(t))return!1;var r=ct(t);return r==u||"[object GeneratorFunction]"==r||"[object AsyncFunction]"==r||"[object Proxy]"==r}function Mt(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=n}function xt(t){var r=typeof t;return null!=t&&("object"==r||"function"==r)}function Ct(t){return null!=t&&"object"==typeof t}var Ft=b?function(t){return function(r){return t(r)}}(b):function(t){return Ct(t)&&Mt(t.length)&&!!s[ct(t)]};function Ut(t){return mt(t)?tt(t,!0):st(t)}var St,It=(St=function(t,r,e){lt(t,r,e)},ht((function(t,r){var e=-1,n=r.length,o=n>1?r[n-1]:void 0,i=n>2?r[2]:void 0;for(o=St.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,r,e){if(!xt(e))return!1;var n=typeof r;return!!("number"==n?mt(e)&&dt(r,e.length):"string"==n&&r in e)&&jt(e[r],t)}(r[0],r[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++ec.call(t,r);class f{constructor({pluginId:t,defaultConfig:r={},customMerge:e,root:n}){this.pluginId=t,this.defaultConfig=r,this.pluginConfigPath=o.default.resolve(n||__dirname,t),this.customMerge=e,this._config=void 0}resolve(t){return o.default.resolve(this.pluginConfigPath,t)}hasFile(t){return n.default.existsSync(this.resolve(t))}requireFile(t){try{return require(this.resolve(t))}catch(t){if("MODULE_NOT_FOUND"===t.code)return;throw t}}_getUserConfig(){return this.requireFile("config.json")}config(t,r){if(!this._config){const t=this._getUserConfig();this._config=Array.isArray(t)?t:(this.customMerge||u)(this.defaultConfig,t)}let e=this._config;return t?function(t,r,e){if("number"==typeof r)return t[r];if("symbol"==typeof r)return a(t,r)?t[r]:e;const n="string"!=typeof(o=r)?o:o.split(".").reduce(((t,r)=>(r.split(/\[([^}]+)\]/g).forEach((r=>r&&t.push(r))),t)),[]);var o;let i=t;for(let t=0;tparseInt(e)):void 0}function o(e,t){const n=r(e),i=r(t);return n?i?function(e,t){const n=Math.max(e.length,t.length);for(let i=0;ir)return 1;if(n=e)throw new Error("Config error, tokenExpiresThreshold should be less than tokenExpiresIn");t>e/2&&console.warn(`Please check whether the tokenExpiresThreshold configuration is set too large, tokenExpiresThreshold: ${t}, tokenExpiresIn: ${e}`)}get customToken(){return this.uniId.interceptorMap.get("customToken")}isTokenInDb(e){return o(e,"1.0.10")>=0}async getUserRecord(){if(this.userRecord)return this.userRecord;const e=await C.doc(this.uid).get();if(this.userRecord=e.data[0],!this.userRecord)throw{errCode:n.ACCOUNT_NOT_EXISTS};switch(this.userRecord.status){case void 0:case 0:break;case 1:throw{errCode:n.ACCOUNT_BANNED};case 2:throw{errCode:n.ACCOUNT_AUDITING};case 3:throw{errCode:n.ACCOUNT_AUDIT_FAILED};case 4:throw{errCode:n.ACCOUNT_CLOSED}}if(this.oldTokenPayload){if(this.isTokenInDb(this.oldTokenPayload.uniIdVersion)){if(-1===(this.userRecord.token||[]).indexOf(this.oldToken))throw{errCode:n.CHECK_TOKEN_FAILED}}if(this.userRecord.valid_token_date&&this.userRecord.valid_token_date>1e3*this.oldTokenPayload.iat)throw{errCode:n.TOKEN_EXPIRED}}return this.userRecord}async updateUserRecord(e){await C.doc(this.uid).update(e)}async getUserPermission(){if(this.userPermission)return this.userPermission;const e=(await this.getUserRecord()).role||[];if(0===e.length)return this.userPermission={role:[],permission:[]},this.userPermission;if(e.includes("admin"))return this.userPermission={role:e,permission:[]},this.userPermission;const t=await T.where({role_id:_.in(e)}).get(),n=(i=t.data.reduce((e,t)=>(t.permission&&e.push(...t.permission),e),[]),Array.from(new Set(i)));var i;return this.userPermission={role:e,permission:n},this.userPermission}async _createToken({uid:e,role:t,permission:i}={}){if(!t||!i){const e=await this.getUserPermission();t=e.role,i=e.permission}let r={uid:e,role:t,permission:i};if(this.uniId.interceptorMap.has("customToken")){const n=this.uniId.interceptorMap.get("customToken");if("function"!=typeof n)throw new Error("Invalid custom token file");r=await n({uid:e,role:t,permission:i})}const o=Date.now(),{tokenSecret:s,tokenExpiresIn:c,maxTokenLength:a=10}=this.config,u=g({...r,uniIdVersion:"1.0.16"},s,{expiresIn:c}),d=await this.getUserRecord(),l=(d.token||[]).filter(e=>{try{const t=this._checkToken(e);if(d.valid_token_date&&d.valid_token_date>1e3*t.iat)return!1}catch(e){if(e.errCode===n.TOKEN_EXPIRED)return!1}return!0});return l.push(u),l.length>a&&l.splice(0,l.length-a),await this.updateUserRecord({last_login_ip:this.clientInfo.clientIP,last_login_date:o,token:l}),{token:u,tokenExpired:o+1e3*c}}async createToken({uid:e,role:t,permission:i}={}){if(!e)throw{errCode:n.PARAM_REQUIRED,errMsgValue:{param:"uid"}};this.uid=e;const{token:r,tokenExpired:o}=await this._createToken({uid:e,role:t,permission:i});return{errCode:0,token:r,tokenExpired:o}}async refreshToken({token:e}={}){if(!e)throw{errCode:n.PARAM_REQUIRED,errMsgValue:{param:"token"}};this.oldToken=e;const t=this._checkToken(e);this.uid=t.uid,this.oldTokenPayload=t;const{uid:i}=t,{role:r,permission:o}=await this.getUserPermission(),{token:s,tokenExpired:c}=await this._createToken({uid:i,role:r,permission:o});return{errCode:0,token:s,tokenExpired:c}}_checkToken(e){const{tokenSecret:t}=this.config;let i;try{i=k(e,t)}catch(e){if("TokenExpiredError"===e.name)throw{errCode:n.TOKEN_EXPIRED};throw{errCode:n.CHECK_TOKEN_FAILED}}return i}async checkToken(e,{autoRefresh:t=!0}={}){if(!e)throw{errCode:n.PARAM_REQUIRED,errMsgValue:{param:"token"}};this.oldToken=e;const i=this._checkToken(e);this.uid=i.uid,this.oldTokenPayload=i;const{tokenExpiresThreshold:r}=this.config,{uid:o,role:s,permission:c}=i,a={role:s,permission:c};if(!s&&!c){const{role:e,permission:t}=await this.getUserPermission();a.role=e,a.permission=t}if(!r||!t){const e={code:0,errCode:0,...i,...a};return delete e.uniIdVersion,e}const u=Date.now();let d={};1e3*i.exp-u<1e3*r&&(d=await this._createToken({uid:o}));const l={code:0,errCode:0,...i,...a,...d};return delete l.uniIdVersion,l}}var E=Object.freeze({__proto__:null,checkToken:async function(e,{autoRefresh:t=!0}={}){return new m({uniId:this}).checkToken(e,{autoRefresh:t})},createToken:async function({uid:e,role:t,permission:n}={}){return new m({uniId:this}).createToken({uid:e,role:t,permission:n})},refreshToken:async function({token:e}={}){return new m({uniId:this}).refreshToken({token:e})}});const w=require("uni-config-center")({pluginId:"uni-id"});class x{constructor({context:e,clientInfo:t,config:n}={}){this._clientInfo=e?function(e){return{appId:e.APPID,platform:e.PLATFORM,locale:e.LOCALE,clientIP:e.CLIENTIP,deviceId:e.DEVICEID}}(e):t,this.config=n||this._getOriginConfig(),this.interceptorMap=new Map,w.hasFile("custom-token.js")&&this.setInterceptor("customToken",require(w.resolve("custom-token.js")));this._i18n=uniCloud.initI18n({locale:this._clientInfo.locale,fallbackLocale:"zh-Hans",messages:JSON.parse(JSON.stringify(d))}),d[this._i18n.locale]||this._i18n.setLocale("zh-Hans")}setInterceptor(e,t){this.interceptorMap.set(e,t)}_t(...e){return this._i18n.t(...e)}_parseOriginConfig(e){return Array.isArray(e)?e:e[0]?Object.values(e):e}_getOriginConfig(){if(w.hasFile("config.json")){let e;try{e=w.config()}catch(e){throw new Error("Invalid uni-id config file\n"+e.message)}return this._parseOriginConfig(e)}try{return this._parseOriginConfig(require("uni-id/config.json"))}catch(e){throw new Error("Invalid uni-id config file")}}_getAppConfig(){const e=this._getOriginConfig();return Array.isArray(e)?e.find(e=>e.dcloudAppid===this._clientInfo.appId)||e.find(e=>e.isDefaultConfig):e}_getPlatformConfig(){const e=this._getAppConfig();if(!e)throw new Error(`Config for current app (${this._clientInfo.appId}) was not found, please check your config file or client appId`);let t;switch("app-plus"===this._clientInfo.platform&&(this._clientInfo.platform="app"),"h5"===this._clientInfo.platform&&(this._clientInfo.platform="web"),this._clientInfo.platform){case"web":t="h5";break;case"app":t="app-plus"}const n=[{tokenExpiresIn:7200,tokenExpiresThreshold:1200,passwordErrorLimit:6,passwordErrorRetryTime:3600},e];t&&e[t]&&n.push(e[t]),n.push(e[this._clientInfo.platform]);const i=Object.assign(...n);return["tokenSecret","tokenExpiresIn"].forEach(e=>{if(!i||!i[e])throw new Error(`Config parameter missing, ${e} is required`)}),i}_getConfig(){return this._getPlatformConfig()}}for(const e in E)x.prototype[e]=E[e];function y(e){const t=new x(e);return new Proxy(t,{get(e,t){if(t in e&&0!==t.indexOf("_")){if("function"==typeof e[t])return(n=e[t],function(){let e;try{e=n.apply(this,arguments)}catch(e){if(a(e))return c.call(this,e),e;throw e}return i(e)?e.then(e=>(a(e)&&c.call(this,e),e),e=>{if(a(e))return c.call(this,e),e;throw e}):(a(e)&&c.call(this,e),e)}).bind(e);if("context"!==t&&"config"!==t)return e[t]}var n}})}x.prototype.createInstance=y;const A={createInstance:y};module.exports=A;
diff --git a/uni_modules/uni-id-common/uniCloud/cloudfunctions/common/uni-id-common/package.json b/uni_modules/uni-id-common/uniCloud/cloudfunctions/common/uni-id-common/package.json
new file mode 100644
index 0000000..3b4ec05
--- /dev/null
+++ b/uni_modules/uni-id-common/uniCloud/cloudfunctions/common/uni-id-common/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "uni-id-common",
+ "version": "1.0.16",
+ "description": "uni-id token生成、校验、刷新",
+ "main": "index.js",
+ "homepage": "https://uniapp.dcloud.io/uniCloud/uni-id-common.html",
+ "repository": {
+ "type": "git",
+ "url": "git+https://gitee.com/dcloud/uni-id-common.git"
+ },
+ "author": "DCloud",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "uni-config-center": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
+ }
+}
\ No newline at end of file
From 81cc62d5314de86fb42b230d036c94ee0a37bf20 Mon Sep 17 00:00:00 2001
From: ctq123 <1654282805@qq.com>
Date: Thu, 4 May 2023 09:30:39 +0800
Subject: [PATCH 02/44] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E9=A6=96?=
=?UTF-8?q?=E9=A1=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.hbuilderx/launch.json | 20 +
manifest.json | 12 +-
package.json | 26 +
pages.json | 8 +-
pages/index/index copy.vue | 52 ++
pages/index/index.vue | 171 ++++-
pages/room/index.vue | 141 ++++
uni.scss | 7 +
uniCloud-aliyun/database/room.schema.json | 27 +
uniCloud-aliyun/database/user.schema.json | 49 ++
yarn.lock | 818 ++++++++++++++++++++++
11 files changed, 1296 insertions(+), 35 deletions(-)
create mode 100644 .hbuilderx/launch.json
create mode 100644 package.json
create mode 100644 pages/index/index copy.vue
create mode 100644 pages/room/index.vue
create mode 100644 uniCloud-aliyun/database/room.schema.json
create mode 100644 uniCloud-aliyun/database/user.schema.json
create mode 100644 yarn.lock
diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json
new file mode 100644
index 0000000..32f4dc5
--- /dev/null
+++ b/.hbuilderx/launch.json
@@ -0,0 +1,20 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+ // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+ "version": "0.0",
+ "configurations": [{
+ "default" :
+ {
+ "launchtype" : "local"
+ },
+ "h5" :
+ {
+ "launchtype" : "local"
+ },
+ "mp-weixin" :
+ {
+ "launchtype" : "local"
+ },
+ "type" : "uniCloud"
+ }
+ ]
+}
diff --git a/manifest.json b/manifest.json
index 4ce1e16..3502819 100644
--- a/manifest.json
+++ b/manifest.json
@@ -50,11 +50,17 @@
"quickapp" : {},
/* 小程序特有相关 */
"mp-weixin" : {
- "appid" : "",
+ "appid" : "wxb805223cd28c0201",
"setting" : {
- "urlCheck" : false
+ "urlCheck" : false,
+ "postcss" : true
},
- "usingComponents" : true
+ "usingComponents" : true,
+ "permission" : {
+ "scope.userLocation" : {
+ "desc" : "演示定位能力"
+ }
+ }
},
"mp-alipay" : {
"usingComponents" : true
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..2f10585
--- /dev/null
+++ b/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "couple-game",
+ "version": "1.0.0",
+ "description": "",
+ "main": "main.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/Local-Travel/CoupleGame.git"
+ },
+ "author": "",
+ "license": "ISC",
+ "bugs": {
+ "url": "https://github.com/Local-Travel/CoupleGame/issues"
+ },
+ "homepage": "https://github.com/Local-Travel/CoupleGame#readme",
+ "dependencies": {
+ "@animxyz/core": "^0.6.6",
+ "postcss-flexbugs-fixes": "^5.0.2",
+ "postcss-loader": "^7.3.0",
+ "postcss-preset-env": "^8.0.1",
+ "postcss-px-to-viewport": "^1.1.1"
+ }
+}
diff --git a/pages.json b/pages.json
index d79623c..ae7c1ec 100644
--- a/pages.json
+++ b/pages.json
@@ -3,8 +3,14 @@
{
"path": "pages/index/index",
"style": {
- "navigationBarTitleText": "uni-app"
+ "navigationBarTitleText": "探本狼人"
}
+ },
+ {
+ "path": "pages/room/index",
+ "style": {
+ "navigationBarTitleText": "探本狼人"
+ }
}
],
"globalStyle": {
diff --git a/pages/index/index copy.vue b/pages/index/index copy.vue
new file mode 100644
index 0000000..4ca2b92
--- /dev/null
+++ b/pages/index/index copy.vue
@@ -0,0 +1,52 @@
+
+
+
+
+ {{title}}
+
+
+
+
+
+
+
diff --git a/pages/index/index.vue b/pages/index/index.vue
index 4ca2b92..22974c5 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -1,8 +1,17 @@
-
-
-
- {{title}}
+
+
+
+
+
@@ -11,42 +20,142 @@
export default {
data() {
return {
- title: 'Hello'
+ user: null,
+ phoneNumber: null,
}
},
- onLoad() {
-
+ onLoad(option) {
+ console.log(option);
+ this.getLocalUser();
+ if (!this.user) {
+ // this.getInfo();
+ }
},
- methods: {
-
+ methods: {
+ getLocalUser() {
+ try {
+ const userInfo = uni.getStorageSync('userInfo');
+ console.log('userInfo', userInfo);
+ this.user = userInfo;
+ } catch (e) {
+ // error
+ }
+ },
+ handleAuth(){
+ this.getLocalUser();
+ if (this.user) {
+ return this.handleCreateRoom()
+ }
+ let self = this;
+ uni.getUserProfile({
+ desc:"获取你的昵称和头像",
+ success: (res) => {
+ console.log('getUserProfile res', res)
+ if (res.errMsg === 'getUserProfile:ok') {
+ uni.setStorage({
+ key: 'userInfo',
+ data: res.userInfo
+ });
+ this.handleCreateRoom();
+ }
+ },
+ fail:(err) => {
+ console.log("您取消了授权,登录失败")
+ },
+ })
+ },
+ handleCreateRoom(){
+ uni.showModal({
+ title: '创建房间',
+ editable: true,
+ placeholderText: '输入人数',
+ success: (res) => {
+ console.log('res', res)
+ if (res.confirm && res.content) {
+ console.log('res.content', res.content)
+ }
+ }
+ })
+ },
+ handleJoinRoom() {
+ uni.showModal({
+ title: '加入房间',
+ editable: true,
+ placeholderText: '输入房间号',
+ success: (res) => {
+ console.log('res', res)
+ if (res.confirm && res.content) {
+ console.log('res.content', res.content)
+ }
+ }
+ })
+ },
+ onTouchStart(event) {
+ console.log('触摸点信息', event.touches);
+ },
+ onMouseDown(event) {
+ console.log('鼠标坐标信息', event.clientX, event.clientY);
+ }
}
}
diff --git a/pages/room/index.vue b/pages/room/index.vue
new file mode 100644
index 0000000..cb0058a
--- /dev/null
+++ b/pages/room/index.vue
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni.scss b/uni.scss
index a9a742d..3ca66f2 100644
--- a/uni.scss
+++ b/uni.scss
@@ -11,6 +11,13 @@
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
+
+@import '@animxyz/core';
+// Add all the core/utilities selectors
+@include xyz-all;
+// --- Or for more control and granularity ---
+@include xyz-core;
+@include xyz-utilities;
/* 颜色变量 */
diff --git a/uniCloud-aliyun/database/room.schema.json b/uniCloud-aliyun/database/room.schema.json
new file mode 100644
index 0000000..d244c79
--- /dev/null
+++ b/uniCloud-aliyun/database/room.schema.json
@@ -0,0 +1,27 @@
+{
+ "bsonType": "object",
+ "required": ["nickName"],
+ "permission": {
+ "read": true,
+ "create": true,
+ "update": true,
+ "delete": true
+ },
+ "properties": {
+ "_id": {
+ "description": "ID,系统自动生成"
+ },
+ "roomId": {
+ "bsonType": "number",
+ "title": "房间ID"
+ },
+ "activeCount": {
+ "bsonType": "number",
+ "title": "活跃人数"
+ },
+ "maxCount":{
+ "bsonType": "string",
+ "title": "房间人数"
+ }
+ }
+}
diff --git a/uniCloud-aliyun/database/user.schema.json b/uniCloud-aliyun/database/user.schema.json
new file mode 100644
index 0000000..e679e08
--- /dev/null
+++ b/uniCloud-aliyun/database/user.schema.json
@@ -0,0 +1,49 @@
+{
+ "bsonType": "object",
+ "required": ["nickName"],
+ "permission": {
+ "read": true,
+ "create": true,
+ "update": true,
+ "delete": true
+ },
+ "properties": {
+ "_id": {
+ "description": "ID,系统自动生成"
+ },
+ "openid": {
+ "bsonType": "string",
+ "title": "小程序openid",
+ "trim": "both"
+ },
+ "name": {
+ "bsonType": "string",
+ "title": "姓名",
+ "trim": "both"
+ },
+ "nickName":{
+ "bsonType": "string",
+ "title": "用户昵称",
+ "trim": "both"
+ },
+ "avatarUrl":{
+ "bsonType": "string",
+ "title": "用户头像图片的 URL",
+ "trim": "both"
+ },
+ "phoneNum": {
+ "bsonType": "string",
+ "title": "手机号码",
+ "pattern": "^\\+?[0-9-]{3,20}$",
+ "trim": "both"
+ },
+ "gender":{
+ "bsonType": "number",
+ "title": "用户性别,0:未知,1: 男,2: 女"
+ },
+ "points":{
+ "bsonType": "number",
+ "title": "用户积分"
+ }
+ }
+}
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..b5b5b92
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,818 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@animxyz/core@^0.6.6":
+ version "0.6.6"
+ resolved "https://registry.npmmirror.com/@animxyz/core/-/core-0.6.6.tgz#2c5eae54c7a6b98c3be79ae16fc1ec68991f67cc"
+ integrity sha512-NtAA/G0Gq3hzAiL6yuE/4U8IgHMPUl3MxbWUbhO443T9UCsf9rBY94P5aK79Zd+/529FeoNdDphIOcOZLsI2sA==
+
+"@babel/code-frame@^7.0.0":
+ version "7.21.4"
+ resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39"
+ integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==
+ dependencies:
+ "@babel/highlight" "^7.18.6"
+
+"@babel/helper-validator-identifier@^7.18.6":
+ version "7.19.1"
+ resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
+ integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
+
+"@babel/highlight@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
+ integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.18.6"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
+"@csstools/cascade-layer-name-parser@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.2.tgz#35253f57c6c83d684fe396672486c644e6a84127"
+ integrity sha512-xm7Mgwej/wBfLoK0K5LfntmPJzoULayl1XZY9JYgQgT29JiqNw++sLnx95u5y9zCihblzkyaRYJrsRMhIBzRdg==
+
+"@csstools/color-helpers@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/@csstools/color-helpers/-/color-helpers-2.0.0.tgz#4ac578cb00b4e853b94f2250267d85ba957c4fc9"
+ integrity sha512-VcPjEnp07RNgz/D+oI2uIALg+IPCSl6mj0XhA3pl3F2bM2B95vgzatExmmzSg/X0zkh+R2v+jFY/J2pV/bnwpw==
+
+"@csstools/css-calc@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/@csstools/css-calc/-/css-calc-1.1.1.tgz#c622728b7f0c9aae70952623c2b0d3d114752987"
+ integrity sha512-Nh+iLCtjlooTzuR0lpmB8I6hPX/VupcGQ3Z1U2+wgJJ4fa8+cWkub+lCsbZcYPzBGsZLEL8fQAg+Na5dwEFJxg==
+
+"@csstools/css-color-parser@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/@csstools/css-color-parser/-/css-color-parser-1.1.2.tgz#e5956c0fe9c30d9f228b0e37173ff61f0dd89dad"
+ integrity sha512-MjW/VspbFSkvbuou7tUUu2+FAlAR7VJ/PA69M9EGKltThbONC8nyW33wHRzNvLzRLGstZLEO5X5oR7IMhMDi0A==
+ dependencies:
+ "@csstools/color-helpers" "^2.0.0"
+ "@csstools/css-calc" "^1.1.1"
+
+"@csstools/css-parser-algorithms@^2.1.1":
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.1.1.tgz#7b62e6412a468a2d1096ed267edd1e4a7fd4a119"
+ integrity sha512-viRnRh02AgO4mwIQb2xQNJju0i+Fh9roNgmbR5xEuG7J3TGgxjnE95HnBLgsFJOJOksvcfxOUCgODcft6Y07cA==
+
+"@csstools/css-tokenizer@^2.1.1":
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/@csstools/css-tokenizer/-/css-tokenizer-2.1.1.tgz#07ae11a0a06365d7ec686549db7b729bc036528e"
+ integrity sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==
+
+"@csstools/media-query-list-parser@^2.0.4":
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.4.tgz#466bd254041530dfd1e88bcb1921e8ca4af75b6a"
+ integrity sha512-GyYot6jHgcSDZZ+tLSnrzkR7aJhF2ZW6d+CXH66mjy5WpAQhZD4HDke2OQ36SivGRWlZJpAz7TzbW6OKlEpxAA==
+
+"@csstools/postcss-cascade-layers@^3.0.1":
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-3.0.1.tgz#d839386e90428b448e3f75276bc01d516e852a0d"
+ integrity sha512-dD8W98dOYNOH/yX4V4HXOhfCOnvVAg8TtsL+qCGNoKXuq5z2C/d026wGWgySgC8cajXXo/wNezS31Glj5GcqrA==
+ dependencies:
+ "@csstools/selector-specificity" "^2.0.2"
+ postcss-selector-parser "^6.0.10"
+
+"@csstools/postcss-color-function@^2.2.1":
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-color-function/-/postcss-color-function-2.2.1.tgz#fa28cc742c29ae63dbe0812dd9a03998a67dd318"
+ integrity sha512-T52iiqmzyKk09B9iNTQbuWa9Tn83SztXY7o6r2+j+o1BS/7+CiCjTgN2HgzybDmx8cr6XYhQ1BzqgV9tJzhrmw==
+ dependencies:
+ "@csstools/css-color-parser" "^1.1.2"
+ "@csstools/css-parser-algorithms" "^2.1.1"
+ "@csstools/css-tokenizer" "^2.1.1"
+ "@csstools/postcss-progressive-custom-properties" "^2.0.0"
+
+"@csstools/postcss-color-mix-function@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-1.0.1.tgz#587f7df69d40f84c7bb4e9d7f178266cb7f6851b"
+ integrity sha512-NSVrzjVcI4TMzDfh6GKZXvEuelT81xpXzruuTNJrwKMTZXEBHY9G2gvmr0eC0wwmL8EF1TblXyPPfBbZobvfXg==
+ dependencies:
+ "@csstools/css-color-parser" "^1.1.2"
+ "@csstools/css-parser-algorithms" "^2.1.1"
+ "@csstools/css-tokenizer" "^2.1.1"
+ "@csstools/postcss-progressive-custom-properties" "^2.0.0"
+
+"@csstools/postcss-font-format-keywords@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-2.0.2.tgz#d798d96f4af6cddcfee459f598c976e6011042d2"
+ integrity sha512-iKYZlIs6JsNT7NKyRjyIyezTCHLh4L4BBB3F5Nx7Dc4Z/QmBgX+YJFuUSar8IM6KclGiAUFGomXFdYxAwJydlA==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+"@csstools/postcss-gradients-interpolation-method@^3.0.4":
+ version "3.0.4"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-3.0.4.tgz#c03402087c41feee0115f714cc87696e6424ba92"
+ integrity sha512-GgKoY7OlvL65UPigEdlrvMAUCR5kOQCjtue2/36TPrBNoRS6KM2KOqmjIVsxEwYYwK+L28pdnM8r10m03hhZxA==
+ dependencies:
+ "@csstools/css-color-parser" "^1.1.2"
+ "@csstools/css-parser-algorithms" "^2.1.1"
+ "@csstools/css-tokenizer" "^2.1.1"
+ "@csstools/postcss-progressive-custom-properties" "^2.0.0"
+
+"@csstools/postcss-hwb-function@^2.2.1":
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-2.2.1.tgz#ab50918104e4ef500c42e55e4ccdd27fc33d52b9"
+ integrity sha512-eiqB4DIs+xqProAly7KwIgE04oze1YHb0QSCw/Y7062d9gpw+Cdif3Y0Z+Te+U7JROYdO0/0j91A6Qy8fo/Rlw==
+ dependencies:
+ "@csstools/css-color-parser" "^1.1.2"
+ "@csstools/css-parser-algorithms" "^2.1.1"
+ "@csstools/css-tokenizer" "^2.1.1"
+
+"@csstools/postcss-ic-unit@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-2.0.2.tgz#5a5e481c53977deec3d63793788eec924d4c5f7d"
+ integrity sha512-N84qGTJkfLTPj2qOG5P4CIqGjpZBbjOEMKMn+UjO5wlb9lcBTfBsxCF0lQsFdWJUzBHYFOz19dL66v71WF3Pig==
+ dependencies:
+ "@csstools/postcss-progressive-custom-properties" "^2.0.0"
+ postcss-value-parser "^4.2.0"
+
+"@csstools/postcss-is-pseudo-class@^3.2.0":
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-3.2.0.tgz#1277cc187bdb075013341dab42b4140d1cafae27"
+ integrity sha512-uooelBL99jMg8ZD6xy0Pj1hSalchWmplcin00eI+JHpv1jW2iwbi1cn2UnVsToM4JLwJSZFzTSWCgSpmlyhe3A==
+ dependencies:
+ "@csstools/selector-specificity" "^2.0.0"
+ postcss-selector-parser "^6.0.10"
+
+"@csstools/postcss-logical-float-and-clear@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-1.0.1.tgz#d255ea7aad18880930b63d8a04164f56182f2ecf"
+ integrity sha512-eO9z2sMLddvlfFEW5Fxbjyd03zaO7cJafDurK4rCqyRt9P7aaWwha0LcSzoROlcZrw1NBV2JAp2vMKfPMQO1xw==
+
+"@csstools/postcss-logical-resize@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-logical-resize/-/postcss-logical-resize-1.0.1.tgz#826d3de929d7d786c32c2c118f78e813a1c2cdec"
+ integrity sha512-x1ge74eCSvpBkDDWppl+7FuD2dL68WP+wwP2qvdUcKY17vJksz+XoE1ZRV38uJgS6FNUwC0AxrPW5gy3MxsDHQ==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+"@csstools/postcss-logical-viewport-units@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-1.0.3.tgz#63e212954015ecdc493878601c3daa4da6ba6714"
+ integrity sha512-6zqcyRg9HSqIHIPMYdt6THWhRmE5/tyHKJQLysn2TeDf/ftq7Em9qwMTx98t2C/7UxIsYS8lOiHHxAVjWn2WUg==
+ dependencies:
+ "@csstools/css-tokenizer" "^2.1.1"
+
+"@csstools/postcss-media-minmax@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-media-minmax/-/postcss-media-minmax-1.0.2.tgz#77efc4fdd96c7ff97f0d714c940187d25fd87619"
+ integrity sha512-DsEykSINZTqlBefi1uSQBym1Rj0NQOj92dLRd5jUQpSy8yBVaXXmkiUgBUbb+gQh8imAdqPpz2v4sAUnw8yXXA==
+ dependencies:
+ "@csstools/css-calc" "^1.1.1"
+ "@csstools/css-parser-algorithms" "^2.1.1"
+ "@csstools/css-tokenizer" "^2.1.1"
+ "@csstools/media-query-list-parser" "^2.0.4"
+
+"@csstools/postcss-media-queries-aspect-ratio-number-values@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-1.0.2.tgz#23ca3c3decc79d9089c2028ded20a97a2c784eee"
+ integrity sha512-rOSR5p+5m0joXUoitYgCyMqNCu97yfLsLG3cnNaM8VeJRCWHGEu5hE9Gv0M7n9A4wo2pYF8QqaxkTlWbSJY9Fg==
+ dependencies:
+ "@csstools/css-parser-algorithms" "^2.1.1"
+ "@csstools/css-tokenizer" "^2.1.1"
+ "@csstools/media-query-list-parser" "^2.0.4"
+
+"@csstools/postcss-nested-calc@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-nested-calc/-/postcss-nested-calc-2.0.2.tgz#a0857650ef88b1aa7b094c7ea8ea1378c35695e0"
+ integrity sha512-jbwrP8rN4e7LNaRcpx3xpMUjhtt34I9OV+zgbcsYAAk6k1+3kODXJBf95/JMYWhu9g1oif7r06QVUgfWsKxCFw==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+"@csstools/postcss-normalize-display-values@^2.0.1":
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-2.0.1.tgz#35dc188c5b4713cf902959fe3c8ce613fcb7543e"
+ integrity sha512-TQT5g3JQ5gPXC239YuRK8jFceXF9d25ZvBkyjzBGGoW5st5sPXFVQS8OjYb9IJ/K3CdfK4528y483cgS2DJR/w==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+"@csstools/postcss-oklab-function@^2.2.1":
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-2.2.1.tgz#4f8f4d8d69e6e479e094b5d327c7b259352e8b81"
+ integrity sha512-g4wrVopp6xXr1KetUK4Lj36P+PFPwvUUtd2gaqo7X/0xgJHmMtKMPhD9p77H9bmIpPtkIYQ8b7+7cdmrWNEVAw==
+ dependencies:
+ "@csstools/css-color-parser" "^1.1.2"
+ "@csstools/css-parser-algorithms" "^2.1.1"
+ "@csstools/css-tokenizer" "^2.1.1"
+ "@csstools/postcss-progressive-custom-properties" "^2.0.0"
+
+"@csstools/postcss-progressive-custom-properties@^2.0.0", "@csstools/postcss-progressive-custom-properties@^2.1.0":
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-2.1.1.tgz#82df9314451db63bf7f4975a4d32f148e85db490"
+ integrity sha512-6p8eO5+j+9hn4h2Klr9dbmya0GIb9SRrnPaCxqR1muVlV1waAZq6YkmlApEwXrox9qxggSwGZD5TnLRIY9f7WA==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+"@csstools/postcss-scope-pseudo-class@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-2.0.2.tgz#6325e1e3b321093c59b008ec670bb772e17f06fe"
+ integrity sha512-6Pvo4uexUCXt+Hz5iUtemQAcIuCYnL+ePs1khFR6/xPgC92aQLJ0zGHonWoewiBE+I++4gXK3pr+R1rlOFHe5w==
+ dependencies:
+ postcss-selector-parser "^6.0.10"
+
+"@csstools/postcss-stepped-value-functions@^2.1.1":
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-2.1.1.tgz#f31aa0e7bd0ce3e4a0450573e1e27ce5e602b100"
+ integrity sha512-YCvdF0GCZK35nhLgs7ippcxDlRVe5QsSht3+EghqTjnYnyl3BbWIN6fYQ1dKWYTJ+7Bgi41TgqQFfJDcp9Xy/w==
+ dependencies:
+ "@csstools/css-calc" "^1.1.1"
+ "@csstools/css-parser-algorithms" "^2.1.1"
+ "@csstools/css-tokenizer" "^2.1.1"
+
+"@csstools/postcss-text-decoration-shorthand@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-2.2.3.tgz#e634a488aa5ba252907deb787ad6cc24b8c2bb0a"
+ integrity sha512-PADJidg/tdhDk120aWlGuDxsp5ZTc9Nx7GhJ8t0qBCk5fOgLK6V3DsB9X6sOAhDokIihXKzjtUu15puac5McWw==
+ dependencies:
+ "@csstools/color-helpers" "^2.0.0"
+ postcss-value-parser "^4.2.0"
+
+"@csstools/postcss-trigonometric-functions@^2.1.1":
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-2.1.1.tgz#871a2048b0f81495d6cd8858ffb1fb04231ca741"
+ integrity sha512-XcXmHEFfHXhvYz40FtDlA4Fp4NQln2bWTsCwthd2c+MCnYArUYU3YaMqzR5CrKP3pMoGYTBnp5fMqf1HxItNyw==
+ dependencies:
+ "@csstools/css-calc" "^1.1.1"
+ "@csstools/css-parser-algorithms" "^2.1.1"
+ "@csstools/css-tokenizer" "^2.1.1"
+
+"@csstools/postcss-unset-value@^2.0.1":
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/@csstools/postcss-unset-value/-/postcss-unset-value-2.0.1.tgz#67091dd6cff556bff896c95053eb070cc6b21c25"
+ integrity sha512-oJ9Xl29/yU8U7/pnMJRqAZd4YXNCfGEdcP4ywREuqm/xMqcgDNDppYRoCGDt40aaZQIEKBS79LytUDN/DHf0Ew==
+
+"@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.1", "@csstools/selector-specificity@^2.0.2":
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016"
+ integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+argparse@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
+ integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+
+autoprefixer@^10.4.14:
+ version "10.4.14"
+ resolved "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d"
+ integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==
+ dependencies:
+ browserslist "^4.21.5"
+ caniuse-lite "^1.0.30001464"
+ fraction.js "^4.2.0"
+ normalize-range "^0.1.2"
+ picocolors "^1.0.0"
+ postcss-value-parser "^4.2.0"
+
+browserslist@^4.21.5:
+ version "4.21.5"
+ resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7"
+ integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==
+ dependencies:
+ caniuse-lite "^1.0.30001449"
+ electron-to-chromium "^1.4.284"
+ node-releases "^2.0.8"
+ update-browserslist-db "^1.0.10"
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464:
+ version "1.0.30001482"
+ resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001482.tgz#8b3fad73dc35b2674a5c96df2d4f9f1c561435de"
+ integrity sha512-F1ZInsg53cegyjroxLNW9DmrEQ1SuGRTO1QlpA0o2/6OpQ0gFeDRoq1yFmnr8Sakn9qwwt9DmbxHB6w167OSuQ==
+
+chalk@^2.0.0:
+ version "2.4.2"
+ resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
+cosmiconfig@^8.1.3:
+ version "8.1.3"
+ resolved "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-8.1.3.tgz#0e614a118fcc2d9e5afc2f87d53cd09931015689"
+ integrity sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==
+ dependencies:
+ import-fresh "^3.2.1"
+ js-yaml "^4.1.0"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+
+css-blank-pseudo@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.npmmirror.com/css-blank-pseudo/-/css-blank-pseudo-5.0.2.tgz#3df5cd950f64de960974da05e76954fd3d7442f9"
+ integrity sha512-aCU4AZ7uEcVSUzagTlA9pHciz7aWPKA/YzrEkpdSopJ2pvhIxiQ5sYeMz1/KByxlIo4XBdvMNJAVKMg/GRnhfw==
+ dependencies:
+ postcss-selector-parser "^6.0.10"
+
+css-has-pseudo@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.npmmirror.com/css-has-pseudo/-/css-has-pseudo-5.0.2.tgz#8798118c705d858b7aeb9d839a39edd901c1cc83"
+ integrity sha512-q+U+4QdwwB7T9VEW/LyO6CFrLAeLqOykC5mDqJXc7aKZAhDbq7BvGT13VGJe+IwBfdN2o3Xdw2kJ5IxwV1Sc9Q==
+ dependencies:
+ "@csstools/selector-specificity" "^2.0.1"
+ postcss-selector-parser "^6.0.10"
+ postcss-value-parser "^4.2.0"
+
+css-prefers-color-scheme@^8.0.2:
+ version "8.0.2"
+ resolved "https://registry.npmmirror.com/css-prefers-color-scheme/-/css-prefers-color-scheme-8.0.2.tgz#a0671f54eb19ed0d30b952574c0af11ec355fb6d"
+ integrity sha512-OvFghizHJ45x7nsJJUSYLyQNTzsCU8yWjxAc/nhPQg1pbs18LMoET8N3kOweFDPy0JV0OSXN2iqRFhPBHYOeMA==
+
+cssdb@^7.5.3:
+ version "7.5.4"
+ resolved "https://registry.npmmirror.com/cssdb/-/cssdb-7.5.4.tgz#e34dafee5184d67634604e345e389ca79ac179ea"
+ integrity sha512-fGD+J6Jlq+aurfE1VDXlLS4Pt0VtNlu2+YgfGOdMxRyl/HQ9bDiHTwSck1Yz8A97Dt/82izSK6Bp/4nVqacOsg==
+
+cssesc@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
+ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
+electron-to-chromium@^1.4.284:
+ version "1.4.380"
+ resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.380.tgz#195dc59d930c6b74efbee6f0e6a267ce4af5ed91"
+ integrity sha512-XKGdI4pWM78eLH2cbXJHiBnWUwFSzZM7XujsB6stDiGu9AeSqziedP6amNLpJzE3i0rLTcfAwdCTs5ecP5yeSg==
+
+error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+escalade@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
+fraction.js@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950"
+ integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
+
+import-fresh@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
+
+jiti@^1.18.2:
+ version "1.18.2"
+ resolved "https://registry.npmmirror.com/jiti/-/jiti-1.18.2.tgz#80c3ef3d486ebf2450d9335122b32d121f2a83cd"
+ integrity sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==
+
+js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
+ integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
+ dependencies:
+ argparse "^2.0.1"
+
+json-parse-even-better-errors@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+ integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
+
+klona@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22"
+ integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==
+
+lines-and-columns@^1.1.6:
+ version "1.2.4"
+ resolved "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
+ integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+nanoid@^3.3.6:
+ version "3.3.6"
+ resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
+ integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
+
+node-releases@^2.0.8:
+ version "2.0.10"
+ resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f"
+ integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==
+
+normalize-range@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+ integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
+
+object-assign@>=4.0.1:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+parse-json@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+ integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ error-ex "^1.3.1"
+ json-parse-even-better-errors "^2.3.0"
+ lines-and-columns "^1.1.6"
+
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+postcss-attribute-case-insensitive@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.npmmirror.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-6.0.2.tgz#e843091859323342e461878d201ee70278809e01"
+ integrity sha512-IRuCwwAAQbgaLhxQdQcIIK0dCVXg3XDUnzgKD8iwdiYdwU4rMWRWyl/W9/0nA4ihVpq5pyALiHB2veBJ0292pw==
+ dependencies:
+ postcss-selector-parser "^6.0.10"
+
+postcss-clamp@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363"
+ integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-color-functional-notation@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.npmmirror.com/postcss-color-functional-notation/-/postcss-color-functional-notation-5.0.2.tgz#6d03c928aa3a13487703af86c301bdcd501e7430"
+ integrity sha512-M6ygxWOyd6eWf3sd1Lv8xi4SeF4iBPfJvkfMU4ITh8ExJc1qhbvh/U8Cv/uOvBgUVOMDdScvCdlg8+hREQzs7w==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-color-hex-alpha@^9.0.2:
+ version "9.0.2"
+ resolved "https://registry.npmmirror.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-9.0.2.tgz#6d3ed50342802469880981a1999515d003ff7d79"
+ integrity sha512-SfPjgr//VQ/DOCf80STIAsdAs7sbIbxATvVmd+Ec7JvR8onz9pjawhq3BJM3Pie40EE3TyB0P6hft16D33Nlyg==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-color-rebeccapurple@^8.0.2:
+ version "8.0.2"
+ resolved "https://registry.npmmirror.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-8.0.2.tgz#c0f2dcf1ef4dd393314920aa181cca8c390a2648"
+ integrity sha512-xWf/JmAxVoB5bltHpXk+uGRoGFwu4WDAR7210el+iyvTdqiKpDhtcT8N3edXMoVJY0WHFMrKMUieql/wRNiXkw==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-custom-media@^9.1.3:
+ version "9.1.3"
+ resolved "https://registry.npmmirror.com/postcss-custom-media/-/postcss-custom-media-9.1.3.tgz#68bb2ae377bb07c19f03f252930cc380af894dce"
+ integrity sha512-W1C4Fu6KAZ7sKYQCuGMr8gyaE4BtjTQGPLVS4m0WCaWM6l7PgVbvmDeb4ClBc5R/7kdwESYf0hdxGtEPhi9CLA==
+ dependencies:
+ "@csstools/cascade-layer-name-parser" "^1.0.2"
+ "@csstools/css-parser-algorithms" "^2.1.1"
+ "@csstools/css-tokenizer" "^2.1.1"
+ "@csstools/media-query-list-parser" "^2.0.4"
+
+postcss-custom-properties@^13.1.5:
+ version "13.1.5"
+ resolved "https://registry.npmmirror.com/postcss-custom-properties/-/postcss-custom-properties-13.1.5.tgz#75567e3b4a664f820bcc3ba8b6ae3c8d27db05d1"
+ integrity sha512-98DXk81zTGqMVkGANysMHbGIg3voH383DYo3/+c+Abzay3nao+vM/f4Jgzsakk9S7BDsEw5DiW7sFy5G4W2wLA==
+ dependencies:
+ "@csstools/cascade-layer-name-parser" "^1.0.2"
+ "@csstools/css-parser-algorithms" "^2.1.1"
+ "@csstools/css-tokenizer" "^2.1.1"
+ postcss-value-parser "^4.2.0"
+
+postcss-custom-selectors@^7.1.3:
+ version "7.1.3"
+ resolved "https://registry.npmmirror.com/postcss-custom-selectors/-/postcss-custom-selectors-7.1.3.tgz#047e2bc4726fe8e448c23047c99785fcdbe1ef87"
+ integrity sha512-GTVscax6O/8s7agFF0HsOoIyjrnAbLjgCUle8tn+0oDGJuVx7p56U7ClSRoC49poxFuMfu2B4Q8GnxSCOeuFKw==
+ dependencies:
+ "@csstools/cascade-layer-name-parser" "^1.0.2"
+ "@csstools/css-parser-algorithms" "^2.1.1"
+ "@csstools/css-tokenizer" "^2.1.1"
+ postcss-selector-parser "^6.0.4"
+
+postcss-dir-pseudo-class@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.npmmirror.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-7.0.2.tgz#71618b7eb4abe067845d11b3c8f322760c9b3e88"
+ integrity sha512-cMnslilYxBf9k3qejnovrUONZx1rXeUZJw06fgIUBzABJe3D2LiLL5WAER7Imt3nrkaIgG05XZBztueLEf5P8w==
+ dependencies:
+ postcss-selector-parser "^6.0.10"
+
+postcss-double-position-gradients@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-double-position-gradients/-/postcss-double-position-gradients-4.0.2.tgz#855a23201f26be447210504e9b668429cbf4640c"
+ integrity sha512-GXL1RmFREDK4Q9aYvI2RhVrA6a6qqSMQQ5ke8gSH1xgV6exsqbcJpIumC7AOgooH6/WIG3/K/T8xxAiVHy/tJg==
+ dependencies:
+ "@csstools/postcss-progressive-custom-properties" "^2.0.0"
+ postcss-value-parser "^4.2.0"
+
+postcss-flexbugs-fixes@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.npmmirror.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz#2028e145313074fc9abe276cb7ca14e5401eb49d"
+ integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==
+
+postcss-focus-visible@^8.0.2:
+ version "8.0.2"
+ resolved "https://registry.npmmirror.com/postcss-focus-visible/-/postcss-focus-visible-8.0.2.tgz#a7ac26ffe3e9c2bd17d7200d75e2d79ee8110891"
+ integrity sha512-f/Vd+EC/GaKElknU59esVcRYr/Y3t1ZAQyL4u2xSOgkDy4bMCmG7VP5cGvj3+BTLNE9ETfEuz2nnt4qkZwTTeA==
+ dependencies:
+ postcss-selector-parser "^6.0.10"
+
+postcss-focus-within@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.npmmirror.com/postcss-focus-within/-/postcss-focus-within-7.0.2.tgz#5d2c866030e66ed22b204c9506de640943310b1c"
+ integrity sha512-AHAJ89UQBcqBvFgQJE9XasGuwMNkKsGj4D/f9Uk60jFmEBHpAL14DrnSk3Rj+SwZTr/WUG+mh+Rvf8fid/346w==
+ dependencies:
+ postcss-selector-parser "^6.0.10"
+
+postcss-font-variant@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66"
+ integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==
+
+postcss-gap-properties@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-gap-properties/-/postcss-gap-properties-4.0.1.tgz#0347d6a84a46bfbe88bedc542cc4b354e04a8338"
+ integrity sha512-V5OuQGw4lBumPlwHWk/PRfMKjaq/LTGR4WDTemIMCaMevArVfCCA9wBJiL1VjDAd+rzuCIlkRoRvDsSiAaZ4Fg==
+
+postcss-image-set-function@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.npmmirror.com/postcss-image-set-function/-/postcss-image-set-function-5.0.2.tgz#088e0f535f43e74d6ea8033ff7b0482e2735ea6e"
+ integrity sha512-Sszjwo0ubETX0Fi5MvpYzsONwrsjeabjMoc5YqHvURFItXgIu3HdCjcVuVKGMPGzKRhgaknmdM5uVWInWPJmeg==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-initial@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42"
+ integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==
+
+postcss-lab-function@^5.2.1:
+ version "5.2.1"
+ resolved "https://registry.npmmirror.com/postcss-lab-function/-/postcss-lab-function-5.2.1.tgz#a1f324fa5c098bddf36de221abcc32070c77b5db"
+ integrity sha512-u71Adr4nWi+4EmSZq5EV/fg9d1dYO6W26RNtT9LISEyjhH1q23vJIUkSqRwHgD6v7xxsxLOY5cSdVyaNE6rqzw==
+ dependencies:
+ "@csstools/css-color-parser" "^1.1.2"
+ "@csstools/css-parser-algorithms" "^2.1.1"
+ "@csstools/css-tokenizer" "^2.1.1"
+ "@csstools/postcss-progressive-custom-properties" "^2.0.0"
+
+postcss-loader@^7.3.0:
+ version "7.3.0"
+ resolved "https://registry.npmmirror.com/postcss-loader/-/postcss-loader-7.3.0.tgz#05991c1e490d8ff86ef18358d87db3b5b2dcb5f5"
+ integrity sha512-qLAFjvR2BFNz1H930P7mj1iuWJFjGey/nVhimfOAAQ1ZyPpcClAxP8+A55Sl8mBvM+K2a9Pjgdj10KpANWrNfw==
+ dependencies:
+ cosmiconfig "^8.1.3"
+ jiti "^1.18.2"
+ klona "^2.0.6"
+ semver "^7.3.8"
+
+postcss-logical@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.npmmirror.com/postcss-logical/-/postcss-logical-6.1.0.tgz#c33ae75d3edaea7eb821e76dc4e6d0ecedc3200d"
+ integrity sha512-qb1+LpClhYjxac8SfOcWotnY3unKZesDqIOm+jnGt8rTl7xaIWpE2bPGZHxflOip1E/4ETo79qlJyRL3yrHn1g==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-nesting@^11.2.1:
+ version "11.2.2"
+ resolved "https://registry.npmmirror.com/postcss-nesting/-/postcss-nesting-11.2.2.tgz#ddedfea5a1fdcd8d753298d82297ad15d5640c0f"
+ integrity sha512-aOTiUniAB1bcPE6GGiynWRa6PZFPhOTAm5q3q5cem6QeSijIHHkWr6gs65ukCZMXeak8yXeZVbBJET3VM+HlhA==
+ dependencies:
+ "@csstools/selector-specificity" "^2.0.0"
+ postcss-selector-parser "^6.0.10"
+
+postcss-opacity-percentage@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/postcss-opacity-percentage/-/postcss-opacity-percentage-2.0.0.tgz#c0a56060cd4586e3f954dbde1efffc2deed53002"
+ integrity sha512-lyDrCOtntq5Y1JZpBFzIWm2wG9kbEdujpNt4NLannF+J9c8CgFIzPa80YQfdza+Y+yFfzbYj/rfoOsYsooUWTQ==
+
+postcss-overflow-shorthand@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-4.0.1.tgz#cb61ca24d8c4e1dbf14d85181b017cfa6953aa34"
+ integrity sha512-HQZ0qi/9iSYHW4w3ogNqVNr2J49DHJAl7r8O2p0Meip38jsdnRPgiDW7r/LlLrrMBMe3KHkvNtAV2UmRVxzLIg==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-page-break@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmmirror.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f"
+ integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==
+
+postcss-place@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.npmmirror.com/postcss-place/-/postcss-place-8.0.1.tgz#408d7a27e99192df51c95fe62a3a34def62aa66a"
+ integrity sha512-Ow2LedN8sL4pq8ubukO77phSVt4QyCm35ZGCYXKvRFayAwcpgB0sjNJglDoTuRdUL32q/ZC1VkPBo0AOEr4Uiw==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-preset-env@^8.0.1:
+ version "8.3.2"
+ resolved "https://registry.npmmirror.com/postcss-preset-env/-/postcss-preset-env-8.3.2.tgz#9ec368e0f0df9c693d52b69d525d366fe4b1833a"
+ integrity sha512-VSAOsfxTXzO/gX5QljC8x8hN3ABbD9iqqLgqHqohBdNI5FhJptwpl96kpu+kYvvzK7BWwaHYou0IeYrp+NqmcQ==
+ dependencies:
+ "@csstools/postcss-cascade-layers" "^3.0.1"
+ "@csstools/postcss-color-function" "^2.2.1"
+ "@csstools/postcss-color-mix-function" "^1.0.1"
+ "@csstools/postcss-font-format-keywords" "^2.0.2"
+ "@csstools/postcss-gradients-interpolation-method" "^3.0.4"
+ "@csstools/postcss-hwb-function" "^2.2.1"
+ "@csstools/postcss-ic-unit" "^2.0.2"
+ "@csstools/postcss-is-pseudo-class" "^3.2.0"
+ "@csstools/postcss-logical-float-and-clear" "^1.0.1"
+ "@csstools/postcss-logical-resize" "^1.0.1"
+ "@csstools/postcss-logical-viewport-units" "^1.0.3"
+ "@csstools/postcss-media-minmax" "^1.0.2"
+ "@csstools/postcss-media-queries-aspect-ratio-number-values" "^1.0.2"
+ "@csstools/postcss-nested-calc" "^2.0.2"
+ "@csstools/postcss-normalize-display-values" "^2.0.1"
+ "@csstools/postcss-oklab-function" "^2.2.1"
+ "@csstools/postcss-progressive-custom-properties" "^2.1.0"
+ "@csstools/postcss-scope-pseudo-class" "^2.0.2"
+ "@csstools/postcss-stepped-value-functions" "^2.1.1"
+ "@csstools/postcss-text-decoration-shorthand" "^2.2.3"
+ "@csstools/postcss-trigonometric-functions" "^2.1.1"
+ "@csstools/postcss-unset-value" "^2.0.1"
+ autoprefixer "^10.4.14"
+ browserslist "^4.21.5"
+ css-blank-pseudo "^5.0.2"
+ css-has-pseudo "^5.0.2"
+ css-prefers-color-scheme "^8.0.2"
+ cssdb "^7.5.3"
+ postcss-attribute-case-insensitive "^6.0.2"
+ postcss-clamp "^4.1.0"
+ postcss-color-functional-notation "^5.0.2"
+ postcss-color-hex-alpha "^9.0.2"
+ postcss-color-rebeccapurple "^8.0.2"
+ postcss-custom-media "^9.1.3"
+ postcss-custom-properties "^13.1.5"
+ postcss-custom-selectors "^7.1.3"
+ postcss-dir-pseudo-class "^7.0.2"
+ postcss-double-position-gradients "^4.0.2"
+ postcss-focus-visible "^8.0.2"
+ postcss-focus-within "^7.0.2"
+ postcss-font-variant "^5.0.0"
+ postcss-gap-properties "^4.0.1"
+ postcss-image-set-function "^5.0.2"
+ postcss-initial "^4.0.1"
+ postcss-lab-function "^5.2.1"
+ postcss-logical "^6.1.0"
+ postcss-nesting "^11.2.1"
+ postcss-opacity-percentage "^2.0.0"
+ postcss-overflow-shorthand "^4.0.1"
+ postcss-page-break "^3.0.4"
+ postcss-place "^8.0.1"
+ postcss-pseudo-class-any-link "^8.0.2"
+ postcss-replace-overflow-wrap "^4.0.0"
+ postcss-selector-not "^7.0.1"
+ postcss-value-parser "^4.2.0"
+
+postcss-pseudo-class-any-link@^8.0.2:
+ version "8.0.2"
+ resolved "https://registry.npmmirror.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-8.0.2.tgz#f5738503f2045de0c4dc216eca99bd835f74e42e"
+ integrity sha512-FYTIuRE07jZ2CW8POvctRgArQJ43yxhr5vLmImdKUvjFCkR09kh8pIdlCwdx/jbFm7MiW4QP58L4oOUv3grQYA==
+ dependencies:
+ postcss-selector-parser "^6.0.10"
+
+postcss-px-to-viewport@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/postcss-px-to-viewport/-/postcss-px-to-viewport-1.1.1.tgz#a25ca410b553c9892cc8b525cc710da47bf1aa55"
+ integrity sha512-2x9oGnBms+e0cYtBJOZdlwrFg/mLR4P1g2IFu7jYKvnqnH/HLhoKyareW2Q/x4sg0BgklHlP1qeWo2oCyPm8FQ==
+ dependencies:
+ object-assign ">=4.0.1"
+ postcss ">=5.0.2"
+
+postcss-replace-overflow-wrap@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319"
+ integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==
+
+postcss-selector-not@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.npmmirror.com/postcss-selector-not/-/postcss-selector-not-7.0.1.tgz#8142e90c8eb6c8c5faecb3e9d96d4353d02e94fb"
+ integrity sha512-1zT5C27b/zeJhchN7fP0kBr16Cc61mu7Si9uWWLoA3Px/D9tIJPKchJCkUH3tPO5D0pCFmGeApAv8XpXBQJ8SQ==
+ dependencies:
+ postcss-selector-parser "^6.0.10"
+
+postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.4:
+ version "6.0.12"
+ resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz#2efae5ffab3c8bfb2b7fbf0c426e3bca616c4abb"
+ integrity sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==
+ dependencies:
+ cssesc "^3.0.0"
+ util-deprecate "^1.0.2"
+
+postcss-value-parser@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
+ integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
+
+postcss@>=5.0.2:
+ version "8.4.23"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab"
+ integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==
+ dependencies:
+ nanoid "^3.3.6"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+semver@^7.3.8:
+ version "7.5.0"
+ resolved "https://registry.npmmirror.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0"
+ integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==
+ dependencies:
+ lru-cache "^6.0.0"
+
+source-map-js@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
+ integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+update-browserslist-db@^1.0.10:
+ version "1.0.11"
+ resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940"
+ integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==
+ dependencies:
+ escalade "^3.1.1"
+ picocolors "^1.0.0"
+
+util-deprecate@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
From b4f1dec5930a5ea6f083e750d0b9496933cfd25c Mon Sep 17 00:00:00 2001
From: ctq123 <1654282805@qq.com>
Date: Fri, 5 May 2023 00:05:08 +0800
Subject: [PATCH 03/44] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=A7=92?=
=?UTF-8?q?=E8=89=B2=E8=AE=BE=E7=BD=AE=E9=A1=B5=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pages.json | 12 +
pages/index/index copy.vue | 118 +++++++---
pages/index/index.vue | 68 ++++--
pages/room/index.vue | 104 ++++-----
pages/wolf/const.js | 124 ++++++++++
pages/wolf/rules.vue | 109 +++++++++
pages/wolf/set-role.vue | 263 ++++++++++++++++++++++
static/civilian.jpg | Bin 0 -> 148374 bytes
static/demon-hunter.jpg | Bin 0 -> 149872 bytes
static/guard.jpg | Bin 0 -> 156884 bytes
static/hunter.jpg | Bin 0 -> 158996 bytes
static/idiot.jpg | Bin 0 -> 111886 bytes
static/logo.png | Bin 4023 -> 0 bytes
static/prophet.jpg | Bin 0 -> 144950 bytes
static/witch.jpg | Bin 0 -> 151692 bytes
static/wolf-beauty.jpg | Bin 0 -> 103826 bytes
static/wolf-hide.jpg | Bin 0 -> 98569 bytes
static/wolf.jpg | Bin 0 -> 104265 bytes
static/wolfking.jpg | Bin 0 -> 67525 bytes
uni.scss | 5 -
uniCloud-aliyun/database/room.schema.json | 4 +
21 files changed, 680 insertions(+), 127 deletions(-)
create mode 100644 pages/wolf/const.js
create mode 100644 pages/wolf/rules.vue
create mode 100644 pages/wolf/set-role.vue
create mode 100644 static/civilian.jpg
create mode 100644 static/demon-hunter.jpg
create mode 100644 static/guard.jpg
create mode 100644 static/hunter.jpg
create mode 100644 static/idiot.jpg
delete mode 100644 static/logo.png
create mode 100644 static/prophet.jpg
create mode 100644 static/witch.jpg
create mode 100644 static/wolf-beauty.jpg
create mode 100644 static/wolf-hide.jpg
create mode 100644 static/wolf.jpg
create mode 100644 static/wolfking.jpg
diff --git a/pages.json b/pages.json
index ae7c1ec..e864b19 100644
--- a/pages.json
+++ b/pages.json
@@ -11,6 +11,18 @@
"style": {
"navigationBarTitleText": "探本狼人"
}
+ },
+ {
+ "path": "pages/wolf/set-role",
+ "style": {
+ "navigationBarTitleText": "探本狼人-调整角色"
+ }
+ },
+ {
+ "path": "pages/wolf/rules",
+ "style": {
+ "navigationBarTitleText": "探本狼人-规则说明"
+ }
}
],
"globalStyle": {
diff --git a/pages/index/index copy.vue b/pages/index/index copy.vue
index 4ca2b92..c333fbc 100644
--- a/pages/index/index copy.vue
+++ b/pages/index/index copy.vue
@@ -1,9 +1,9 @@
-
-
-
- {{title}}
-
+
+
+ 水
+
+ 哈哈哈
@@ -11,42 +11,90 @@
export default {
data() {
return {
- title: 'Hello'
+ user: null,
+ phoneNumber: null,
+ posY: '50%',
+ posX: '50%',
}
},
- onLoad() {
-
- },
- methods: {
-
+ methods:{
+ onTouchStart(event) {
+ console.log('触摸点信息', event.touches);
+ const e = Array.isArray(event.touches) ? event.touches[0] : null;
+ if (e) {
+ // uni.createSelectorQuery().in(this).select('.lake').boundingClientRect((rect) => {
+ // console.log(rect)
+ // if (rect) {
+ // this.posX = (e.pageX - rect.left) + 'px';
+ // this.posY = (e.pageY - rect.top) + 'px';
+ // console.log('this.posX', this.posX, this.posY)
+ // }
+ // }).exec()
+ this.posX = e.clientX + 'rpx';
+ this.posY = e.clientY + 'rpx';
+ }
+
+
+ // var posX = e.pageX - $(".lake").offset().left;
+ // var posY = e.pageY - $(".lake").offset().top;
+ // $(".water").addClass("active").css({
+ // top: posY,
+ // left: posX
+ // });
+ },
+ onMouseDown(event) {
+ console.log('鼠标坐标信息', event.clientX, event.clientY);
+ }
}
}
diff --git a/pages/index/index.vue b/pages/index/index.vue
index 22974c5..53dfad9 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -1,5 +1,5 @@
-
+
-
+
+
-
-
diff --git a/pages/wolf/set-role.vue b/pages/wolf/set-role.vue
new file mode 100644
index 0000000..979a065
--- /dev/null
+++ b/pages/wolf/set-role.vue
@@ -0,0 +1,263 @@
+
+
+
+
+
+
+
+
+ handleMinus(item, index)">
+ {{item.value}}
+ handlePlus(item, index)">
+
+
+
+
+
+ 【好人阵营】
+
+
+ {{item.name}}
+ :
+ {{item.value}}
+
+
+ 【狼人阵营】
+
+
+ {{item.name}}
+ :
+ {{item.value}}
+
+
+ 【房间总人数】{{totalCount}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/civilian.jpg b/static/civilian.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..d83b8e9caab1dbf6ae37790b0e1a9818be2e2127
GIT binary patch
literal 148374
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