├── .gitignore ├── .gitpod.yml ├── README.md ├── base.css ├── package.json ├── pnpm-lock.yaml ├── src ├── App.tsx ├── domain.aphro ├── domain │ ├── Todo.ts │ ├── TodoList.ts │ └── generated │ │ ├── Todo.sqlite.sql │ │ ├── TodoBase.ts │ │ ├── TodoList.sqlite.sql │ │ ├── TodoListBase.ts │ │ ├── TodoListQuery.ts │ │ ├── TodoListSpec.ts │ │ ├── TodoQuery.ts │ │ ├── TodoSpec.ts │ │ ├── exports-node-sql.ts │ │ ├── exports-sql.ts │ │ ├── exports.ts │ │ └── types.d.ts ├── global.d.ts ├── index.html └── index.tsx ├── style.css ├── tsconfig.json ├── wa-sqlite-async.wasm └── webpack.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ 3 | .DS_Store 4 | -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | tasks: 2 | - init: npm install 3 | command: npm run start 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Aphrodite Browser Starter 2 | 3 | This provides a local-first in browser example project that uses `Aphrodite`.
4 | See also -- `Aphrodite` in an [interactive reactive notebook](https://observablehq.com/@tantaman/aphrodite-chinook) (observablehq). 5 | 6 | **[Launch the app!](https://aphrodite-examples.pages.dev/todo-mvc/)** 7 | 8 | # Code Overview 9 | 10 | ## Schema 11 | 12 | The schema that defines the data model is [here](https://github.com/tantaman/aphrodite-browser-starter/blob/main/src/domain.aphro) (reproduced below) 13 | 14 | ```typescript 15 | engine: sqlite 16 | db: todomvc 17 | 18 | Todo as Node { 19 | id: ID 20 | listId: ID 21 | text: NaturalLanguage 22 | created: Timestamp 23 | modified: Timestamp 24 | completed: Timestamp | null 25 | } 26 | 27 | TodoList as Node { 28 | id: ID 29 | filter: Enumeration 30 | editing: ID | null 31 | } & OutboundEdges { 32 | todos: Edge 33 | } 34 | ``` 35 | 36 | ## Live Queries 37 | 38 | The UI is updated via live queries. Whenever a modification is made to a model through a mutator, that update is reflected back into the UI. 39 | 40 | Live queries are [here](https://github.com/aphrodite-sh/aphrodite-browser-starter/blob/df948e7ed0252cb42b663d6a57084363f53843b5/src/App.tsx#L195-L203). 41 | 42 | ```typescript 43 | const activeTodos = useQuery(() => 44 | list.queryTodos().whereCompleted(P.equals(false)) 45 | ).data; 46 | const completeTodos = useQuery(() => 47 | list.queryTodos().whereCompleted(P.equals(true)) 48 | ).data; 49 | const allTodos = useQuery(() => list.queryTodos(), [], { 50 | on: UpdateType.CREATE_OR_DELETE, 51 | }).data; 52 | ``` 53 | 54 | 55 | # Getting The Code 56 | 57 | Either open in [GitPod](https://gitpod.io/#git@github.com:tantaman/aphrodite-browser-starter.git) or follow the steps below -- 58 | 59 | First, clone this repository 60 | 61 | ```bash 62 | git clone git@github.com:tantaman/aphrodite-browser-starter.git 63 | ``` 64 | 65 | Next, cd to `aphrodite-browser-starter` and install dependencies. 66 | 67 | ```bash 68 | cd aphrodite-browser-starter 69 | npm install 70 | ``` 71 | 72 | The command to build and run the "demo app" are: 73 | 74 | ```bash 75 | npm run serve 76 | ``` 77 | 78 | If you change the schema and want to re-generate the generated code, run 79 | 80 | ```bash 81 | npm run aphro 82 | ``` 83 | 84 | This "demo app" is an implementation of [TodoMVC](https://todomvc.com/) using `Aphrodite` & `React` -- 85 | -------------------------------------------------------------------------------- /base.css: -------------------------------------------------------------------------------- 1 | hr { 2 | margin: 20px 0; 3 | border: 0; 4 | border-top: 1px dashed #c5c5c5; 5 | border-bottom: 1px dashed #f7f7f7; 6 | } 7 | 8 | .learn a { 9 | font-weight: normal; 10 | text-decoration: none; 11 | color: #b83f45; 12 | } 13 | 14 | .learn a:hover { 15 | text-decoration: underline; 16 | color: #787e7e; 17 | } 18 | 19 | .learn h3, 20 | .learn h4, 21 | .learn h5 { 22 | margin: 10px 0; 23 | font-weight: 500; 24 | line-height: 1.2; 25 | color: #000; 26 | } 27 | 28 | .learn h3 { 29 | font-size: 24px; 30 | } 31 | 32 | .learn h4 { 33 | font-size: 18px; 34 | } 35 | 36 | .learn h5 { 37 | margin-bottom: 0; 38 | font-size: 14px; 39 | } 40 | 41 | .learn ul { 42 | padding: 0; 43 | margin: 0 0 30px 25px; 44 | } 45 | 46 | .learn li { 47 | line-height: 20px; 48 | } 49 | 50 | .learn p { 51 | font-size: 15px; 52 | font-weight: 300; 53 | line-height: 1.3; 54 | margin-top: 0; 55 | margin-bottom: 0; 56 | } 57 | 58 | #issue-count { 59 | display: none; 60 | } 61 | 62 | .quote { 63 | border: none; 64 | margin: 20px 0 60px 0; 65 | } 66 | 67 | .quote p { 68 | font-style: italic; 69 | } 70 | 71 | .quote p:before { 72 | content: "“"; 73 | font-size: 50px; 74 | opacity: 0.15; 75 | position: absolute; 76 | top: -20px; 77 | left: 3px; 78 | } 79 | 80 | .quote p:after { 81 | content: "”"; 82 | font-size: 50px; 83 | opacity: 0.15; 84 | position: absolute; 85 | bottom: -42px; 86 | right: 3px; 87 | } 88 | 89 | .quote footer { 90 | position: absolute; 91 | bottom: -40px; 92 | right: 0; 93 | } 94 | 95 | .quote footer img { 96 | border-radius: 3px; 97 | } 98 | 99 | .quote footer a { 100 | margin-left: 5px; 101 | vertical-align: middle; 102 | } 103 | 104 | .speech-bubble { 105 | position: relative; 106 | padding: 10px; 107 | background: rgba(0, 0, 0, 0.04); 108 | border-radius: 5px; 109 | } 110 | 111 | .speech-bubble:after { 112 | content: ""; 113 | position: absolute; 114 | top: 100%; 115 | right: 30px; 116 | border: 13px solid transparent; 117 | border-top-color: rgba(0, 0, 0, 0.04); 118 | } 119 | 120 | .learn-bar > .learn { 121 | position: absolute; 122 | width: 272px; 123 | top: 8px; 124 | left: -300px; 125 | padding: 10px; 126 | border-radius: 5px; 127 | background-color: rgba(255, 255, 255, 0.6); 128 | transition-property: left; 129 | transition-duration: 500ms; 130 | } 131 | 132 | @media (min-width: 899px) { 133 | .learn-bar { 134 | width: auto; 135 | padding-left: 300px; 136 | } 137 | 138 | .learn-bar > .learn { 139 | left: 8px; 140 | } 141 | } 142 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@aphro/todo-mvc", 3 | "private": true, 4 | "license": "MIT", 5 | "type": "module", 6 | "scripts": { 7 | "start": "webpack serve", 8 | "build": "webpack", 9 | "aphro": "aphro gen ./src/domain.aphro --dest ./src/domain", 10 | "clean": "rm -rf dist", 11 | "ts-build": "tsc" 12 | }, 13 | "dependencies": { 14 | "@aphro/wa-sqlite-connector": "^0.3.2", 15 | "@aphro/codegen-cli": "^0.3.9", 16 | "@aphro/react": "^1.2.2", 17 | "@aphro/runtime-ts": "^0.3.7", 18 | "@types/react-dom": "^18.0.6", 19 | "react": "^18.2.0", 20 | "react-dom": "^18.2.0" 21 | }, 22 | "devDependencies": { 23 | "@types/react": "^18.0.14", 24 | "html-webpack-plugin": "^5.5.0", 25 | "raw-loader": "^4.0.2", 26 | "resolve-typescript-plugin": "^1.2.0", 27 | "ts-loader": "^9.3.0", 28 | "typescript": "^4.7.4", 29 | "webpack": "^5.73.0", 30 | "webpack-cli": "^4.10.0", 31 | "webpack-dev-server": "^4.9.2" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@aphro/codegen-cli': ^0.3.9 5 | '@aphro/react': ^1.2.2 6 | '@aphro/runtime-ts': ^0.3.7 7 | '@aphro/wa-sqlite-connector': ^0.3.2 8 | '@types/react': ^18.0.14 9 | '@types/react-dom': ^18.0.6 10 | html-webpack-plugin: ^5.5.0 11 | raw-loader: ^4.0.2 12 | react: ^18.2.0 13 | react-dom: ^18.2.0 14 | resolve-typescript-plugin: ^1.2.0 15 | ts-loader: ^9.3.0 16 | typescript: ^4.7.4 17 | webpack: ^5.73.0 18 | webpack-cli: ^4.10.0 19 | webpack-dev-server: ^4.9.2 20 | 21 | dependencies: 22 | '@aphro/codegen-cli': 0.3.9 23 | '@aphro/react': 1.2.2_77ymstwv2rkw4lg7mkx6ldrnxa 24 | '@aphro/runtime-ts': 0.3.7 25 | '@aphro/wa-sqlite-connector': 0.3.2 26 | '@types/react-dom': 18.0.6 27 | react: 18.2.0 28 | react-dom: 18.2.0_react@18.2.0 29 | 30 | devDependencies: 31 | '@types/react': 18.0.14 32 | html-webpack-plugin: 5.5.0_webpack@5.73.0 33 | raw-loader: 4.0.2_webpack@5.73.0 34 | resolve-typescript-plugin: 1.2.0_webpack@5.73.0 35 | ts-loader: 9.3.0_3o2jfq6vfqxns3sz6wn2nnc3ei 36 | typescript: 4.7.4 37 | webpack: 5.73.0_webpack-cli@4.10.0 38 | webpack-cli: 4.10.0_hnfkmnck6ti4dm6ulhhz44v2ju 39 | webpack-dev-server: 4.9.2_77l47gmqkrqiei5z7sbwz5iaj4 40 | 41 | packages: 42 | 43 | /@aphro/cache-runtime-ts/0.2.5: 44 | resolution: {integrity: sha512-B2d+/ipcaVbdfinTWLhyTIQPim7f69fUQ2paexUOodIJCFq2d44UNrtjJohv4WEb1hl0+Cc5ss5LM1tnNcC7WQ==} 45 | dependencies: 46 | '@strut/sid': 0.1.2 47 | '@strut/utils': 0.1.1 48 | dev: false 49 | 50 | /@aphro/codegen-api/0.2.5: 51 | resolution: {integrity: sha512-JlU1E1+DwC2KI129rfYMVqH0DFkDUSankckFxQTjVZQsfwQI0Cv2QcpuXXzNI0wbhTiSSMg8a5LUk33nuhsjgw==} 52 | dependencies: 53 | '@aphro/schema-api': 0.2.5 54 | dev: false 55 | 56 | /@aphro/codegen-cli/0.3.9: 57 | resolution: {integrity: sha512-L+cQbsdNo9uXQYlDGgBe3t3Y+2MkDvYgN9VYcihliG57/3R2lQZGoLFSuvEBH1F0sTeNxgV+xKiIns6dD3QJfA==} 58 | hasBin: true 59 | dependencies: 60 | '@aphro/codegen': 0.2.7 61 | '@aphro/codegen-api': 0.2.5 62 | '@aphro/codegen-sql': 0.2.7 63 | '@aphro/codegen-ts': 0.4.1 64 | '@aphro/graphql-codegen': 0.2.8 65 | '@aphro/graphql-grammar': 0.2.7 66 | '@aphro/mutation-codegen': 0.4.2 67 | '@aphro/mutation-grammar': 0.3.1 68 | '@aphro/schema': 0.3.1 69 | '@aphro/schema-api': 0.2.5 70 | '@strut/counter': 0.0.11 71 | '@strut/utils': 0.1.1 72 | chalk: 5.0.1 73 | command-line-args: 5.2.1 74 | command-line-usage: 6.1.3 75 | md5: 2.3.0 76 | prettier: 2.7.1 77 | dev: false 78 | 79 | /@aphro/codegen-sql/0.2.7: 80 | resolution: {integrity: sha512-Y4HeCRbE+PggSZYCZ8ihQrAt17dP5rltXK399jlDNjKFyxu28gJkj2XteVMi0F7XATiI+WJjpfJxM8vofff9Zw==} 81 | dependencies: 82 | '@aphro/codegen': 0.2.7 83 | '@aphro/codegen-api': 0.2.5 84 | '@aphro/schema': 0.3.1 85 | '@aphro/schema-api': 0.2.5 86 | '@aphro/sql-ts': 0.2.5 87 | '@strut/counter': 0.0.11 88 | '@strut/utils': 0.1.1 89 | '@types/node': 17.0.45 90 | sql-formatter: 6.1.1 91 | dev: false 92 | 93 | /@aphro/codegen-ts/0.4.1: 94 | resolution: {integrity: sha512-akJcnbNqgDh9en3Q1gjYPmO+RxID1sYvKd2Edm8PWOxPyID7E/R9awUm3V+Dt8KqeHToxXrkPuX/rsO2IezuYQ==} 95 | dependencies: 96 | '@aphro/codegen': 0.2.7 97 | '@aphro/codegen-api': 0.2.5 98 | '@aphro/schema': 0.3.1 99 | '@aphro/schema-api': 0.2.5 100 | '@strut/counter': 0.0.11 101 | '@strut/utils': 0.1.1 102 | md5: 2.3.0 103 | prettier: 2.7.1 104 | dev: false 105 | 106 | /@aphro/codegen/0.2.7: 107 | resolution: {integrity: sha512-6JMPOejRdxvYYAZfFE5QqTSjwsMW6dpn4nB0EjIInI/3NdLys9hYyj2IcEV0CEd8QMGZmbsrBVuGEOZOYP8V7Q==} 108 | dependencies: 109 | '@aphro/codegen-api': 0.2.5 110 | '@aphro/schema': 0.3.1 111 | '@aphro/schema-api': 0.2.5 112 | '@strut/counter': 0.0.11 113 | '@strut/sid': 0.1.2 114 | '@strut/utils': 0.1.1 115 | md5: 2.3.0 116 | dev: false 117 | 118 | /@aphro/context-runtime-ts/0.3.5: 119 | resolution: {integrity: sha512-krmyFjWnvDq6aDgICuI2b01S+HMCCJBFDAptM04T5O83ORuUqpFFQEMrYqPCHdXwjQiti13UcXFeAv1D5yGTmg==} 120 | dependencies: 121 | '@aphro/cache-runtime-ts': 0.2.5 122 | '@aphro/schema-api': 0.2.5 123 | '@aphro/sql-ts': 0.2.5 124 | '@strut/events': 0.0.10 125 | '@strut/sid': 0.1.2 126 | '@strut/utils': 0.1.1 127 | dev: false 128 | 129 | /@aphro/grammar-extension-api/0.2.5: 130 | resolution: {integrity: sha512-N8vtP2by2/77KOW7K+bT5UhJ5g18MFnFT4M2z0IuX9Oh97O+x4ShPYEUA3gYWQWCGrYHofU9U6TLYdtgYVnkWQ==} 131 | dependencies: 132 | '@aphro/schema-api': 0.2.5 133 | ohm-js: 16.4.0 134 | dev: false 135 | 136 | /@aphro/graphql-codegen/0.2.8: 137 | resolution: {integrity: sha512-7Ja+/65/Zk8OFpIRJAPCSPgafKiiP/wakPs5oau0WDySWhTM8/KR0nOvNhlyXLqpos152rqRqlbw/2WTWAhf1Q==} 138 | dependencies: 139 | '@aphro/codegen': 0.2.7 140 | '@aphro/codegen-api': 0.2.5 141 | '@aphro/codegen-ts': 0.4.1 142 | '@aphro/graphql-grammar': 0.2.7 143 | '@aphro/schema': 0.3.1 144 | '@aphro/schema-api': 0.2.5 145 | '@strut/utils': 0.1.1 146 | dev: false 147 | 148 | /@aphro/graphql-grammar/0.2.7: 149 | resolution: {integrity: sha512-QwoLTH5LEPdYpLbjLX9WITuej6O3V5y3DOO2JIyEoRR9LjVMHmpc/gkuRnXg+VMIXzQArGw5AwxPAsed6L69tg==} 150 | dependencies: 151 | '@aphro/grammar-extension-api': 0.2.5 152 | '@aphro/schema': 0.3.1 153 | '@aphro/schema-api': 0.2.5 154 | dev: false 155 | 156 | /@aphro/instrument/0.0.5: 157 | resolution: {integrity: sha512-bWa6UTKDoZYv1GsrVDqrYqzo6SmJzzVoBRFVeyfylv47epUE9OG4jwvyT9lwT0qL6jajkEKTvDU0fqkcGg+4tQ==} 158 | dependencies: 159 | '@opentelemetry/api': 1.1.0 160 | dev: false 161 | 162 | /@aphro/migration-runtime-ts/0.1.6: 163 | resolution: {integrity: sha512-XVd3tWrAWT+uQkW56wvP+E9rGmW2zwWRLfynzTaxPpbWRlq095h++EYPdb7q9hWNYhZCRLlDyDTEF7OVXDCIXw==} 164 | dependencies: 165 | '@aphro/context-runtime-ts': 0.3.5 166 | '@aphro/sql-ts': 0.2.5 167 | '@databases/sqlite': 3.0.0 168 | '@strut/utils': 0.1.1 169 | transitivePeerDependencies: 170 | - supports-color 171 | dev: false 172 | 173 | /@aphro/model-runtime-ts/0.2.5: 174 | resolution: {integrity: sha512-6HGTp3ioqCEACUAe8n7QUAn0Za7Cl/g4BFKoPHEKUk6Yd4fJmDekmCo63LeAWUONO82DHVWyhSb77Lya1beMkw==} 175 | dependencies: 176 | '@aphro/context-runtime-ts': 0.3.5 177 | '@aphro/schema-api': 0.2.5 178 | '@strut/counter': 0.0.11 179 | '@strut/events': 0.0.10 180 | '@strut/sid': 0.1.2 181 | '@strut/utils': 0.1.1 182 | dev: false 183 | 184 | /@aphro/mutation-codegen/0.4.2: 185 | resolution: {integrity: sha512-rkG6c6gnVpx9Z13Xw0x8qVIvqmjte2yxFrfAHZp10JDbo3L5sOgvTMvOe6Z7UofgfwusQqJYs2vV7TM7/3eEoA==} 186 | dependencies: 187 | '@aphro/codegen': 0.2.7 188 | '@aphro/codegen-api': 0.2.5 189 | '@aphro/codegen-ts': 0.4.1 190 | '@aphro/mutation-grammar': 0.3.1 191 | '@aphro/parse-ts': 0.2.5 192 | '@aphro/schema': 0.3.1 193 | '@aphro/schema-api': 0.2.5 194 | '@strut/utils': 0.1.1 195 | '@types/node': 17.0.45 196 | dev: false 197 | 198 | /@aphro/mutation-grammar/0.3.1: 199 | resolution: {integrity: sha512-lgwH/ph+EDb6+COPc4wTa9Abp3MY91KM2NPbuNcDAGhdp7M4Vu9X1vhQxNQN1sio5PoNI0K399Aq0/BiKc22Fw==} 200 | dependencies: 201 | '@aphro/grammar-extension-api': 0.2.5 202 | '@aphro/schema': 0.3.1 203 | '@aphro/schema-api': 0.2.5 204 | dev: false 205 | 206 | /@aphro/mutator-runtime-ts/0.4.1: 207 | resolution: {integrity: sha512-uhKhgQKrFRQRi8SWF39nLpGKoHuz6iwJSoYQijg33R48avbWwBBT53xb7PfWA1p+v+qBQ7CIo7ZuSXpM/Bx2Hw==} 208 | dependencies: 209 | '@aphro/context-runtime-ts': 0.3.5 210 | '@aphro/instrument': 0.0.5 211 | '@aphro/model-runtime-ts': 0.2.5 212 | '@aphro/schema-api': 0.2.5 213 | '@aphro/sql-ts': 0.2.5 214 | '@strut/sid': 0.1.2 215 | '@strut/utils': 0.1.1 216 | nanoid: 4.0.0 217 | dev: false 218 | 219 | /@aphro/parse-ts/0.2.5: 220 | resolution: {integrity: sha512-Mnry/3R6BTzhcOGJ/Ybg+bNuEaw/5Wx/yfM+jZvYM+XXQpYxg+v82xGxLPl2jiVl/ywwESDK4PYO58SIkXAnhQ==} 221 | dependencies: 222 | typescript: 4.7.4 223 | dev: false 224 | 225 | /@aphro/query-runtime-ts/0.3.1: 226 | resolution: {integrity: sha512-egCsASnha5a0FTds4oMMDnWFoC279e8+yhBpIZ24Mb2Ka8KrudL89KcEwAKpu6ju6CDBTzwVol4uiiBoi5qglg==} 227 | dependencies: 228 | '@aphro/cache-runtime-ts': 0.2.5 229 | '@aphro/context-runtime-ts': 0.3.5 230 | '@aphro/instrument': 0.0.5 231 | '@aphro/model-runtime-ts': 0.2.5 232 | '@aphro/schema-api': 0.2.5 233 | '@aphro/sql-ts': 0.2.5 234 | '@strut/counter': 0.0.11 235 | '@strut/sid': 0.1.2 236 | '@strut/utils': 0.1.1 237 | dev: false 238 | 239 | /@aphro/react/1.2.2_77ymstwv2rkw4lg7mkx6ldrnxa: 240 | resolution: {integrity: sha512-XEBfXo0uK/wlDaTKeeJ7PQeCPVJdGBsCCeq+I1b9jjdPYZSaB6NVlRWHnXQZEIeRJ3kkfBGypF/wP8iYOBrzrg==} 241 | peerDependencies: 242 | '@aphro/runtime-ts': ^0.3.7 243 | react: ^18.2.0 244 | dependencies: 245 | '@aphro/runtime-ts': 0.3.7 246 | '@strut/counter': 0.0.11 247 | react: 18.2.0 248 | suspend-react: 0.0.8_react@18.2.0 249 | dev: false 250 | 251 | /@aphro/runtime-ts/0.3.7: 252 | resolution: {integrity: sha512-MWgTtDCVJqFoajj9xWpgDzq0XPOpIsa26DBKgQGmoLMTLH4apCoQTztMCrhuttPUMTnlC8hNRT7s2MhGov7V3Q==} 253 | dependencies: 254 | '@aphro/cache-runtime-ts': 0.2.5 255 | '@aphro/context-runtime-ts': 0.3.5 256 | '@aphro/migration-runtime-ts': 0.1.6 257 | '@aphro/model-runtime-ts': 0.2.5 258 | '@aphro/mutator-runtime-ts': 0.4.1 259 | '@aphro/query-runtime-ts': 0.3.1 260 | '@aphro/sql-ts': 0.2.5 261 | '@strut/sid': 0.1.2 262 | '@strut/utils': 0.1.1 263 | transitivePeerDependencies: 264 | - supports-color 265 | dev: false 266 | 267 | /@aphro/schema-api/0.2.5: 268 | resolution: {integrity: sha512-oDOB9iAYT2LFsGH2yiYh+98HCp+ASJj3/tAVEeivd2xsN8pR9wtx/tpgb0sHWD3Uwf30kx5LNBGDmNhNiSoOVw==} 269 | dev: false 270 | 271 | /@aphro/schema/0.3.1: 272 | resolution: {integrity: sha512-fbZOfke/5OWLarG2dB+UVgJANVtfMXmRykvvKQj3oSuQzL1WhcLR3D1TnTJZfI4eZrTbuaOcS4kk7pERtlPdKQ==} 273 | dependencies: 274 | '@aphro/codegen-api': 0.2.5 275 | '@aphro/grammar-extension-api': 0.2.5 276 | '@aphro/schema-api': 0.2.5 277 | '@strut/counter': 0.0.11 278 | '@strut/sid': 0.1.2 279 | '@strut/utils': 0.1.1 280 | dev: false 281 | 282 | /@aphro/sql-ts/0.2.5: 283 | resolution: {integrity: sha512-SBFqUygzC2dR/HweihjoQozyPO7KsqHSTAkITaIuKjhqFKVf/JJmOuksGWG4qMCl4SVrkiJYbPAKBzqI9SCogA==} 284 | dependencies: 285 | '@databases/escape-identifier': 1.0.3 286 | '@databases/sql': 3.2.0 287 | dev: false 288 | 289 | /@aphro/wa-sqlite-connector/0.3.2: 290 | resolution: {integrity: sha512-XR3/YT2OOyzENn+kxGd2ncj69eOmg01jm0QQ8vbDXpXPf80Yw5vfqENQLh1CqF4qfAf3NaPco4Lh2CVY6/XJNQ==} 291 | dependencies: 292 | '@aphro/instrument': 0.0.5 293 | '@aphro/runtime-ts': 0.3.7 294 | '@opentelemetry/api': 1.1.0 295 | '@strut/counter': 0.0.11 296 | wa-sqlite: github.com/rhashimoto/wa-sqlite/5fdc80ff1c153aeb0dab65a5e23ca22938c827a3 297 | transitivePeerDependencies: 298 | - supports-color 299 | dev: false 300 | 301 | /@databases/escape-identifier/1.0.3: 302 | resolution: {integrity: sha512-Su36iSVzaHxpVdISVMViUX/32sLvzxVgjZpYhzhotxZUuLo11GVWsiHwqkvUZijTLUxcDmUqEwGJO3O/soLuZA==} 303 | dependencies: 304 | '@databases/validate-unicode': 1.0.0 305 | dev: false 306 | 307 | /@databases/sql/3.2.0: 308 | resolution: {integrity: sha512-xQZzKIa0lvcdo0MYxnyFMVS1TRla9lpDSCYkobJl19vQEOJ9TqE4o8QBGRJNUfhSkbQIWyvMeBl3KBBbqyUVQQ==} 309 | dev: false 310 | 311 | /@databases/sqlite/3.0.0: 312 | resolution: {integrity: sha512-+BBA++kpLMsK7K2NMEq1g6W/P5+AxZrnd9d42THB3TUL/tKkqusknFoEUCclA8qEu3tIHxD/SNPkoNvbRjZPtQ==} 313 | dependencies: 314 | '@databases/escape-identifier': 1.0.3 315 | '@databases/sql': 3.2.0 316 | '@types/sqlite3': 3.1.8 317 | sqlite3: 4.2.0 318 | then-queue: 1.3.0 319 | transitivePeerDependencies: 320 | - supports-color 321 | dev: false 322 | 323 | /@databases/validate-unicode/1.0.0: 324 | resolution: {integrity: sha512-dLKqxGcymeVwEb/6c44KjOnzaAafFf0Wxa8xcfEjx/qOl3rdijsKYBAtIGhtVtOlpPf/PFKfgTuFurSPn/3B/g==} 325 | dev: false 326 | 327 | /@discoveryjs/json-ext/0.5.7: 328 | resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} 329 | engines: {node: '>=10.0.0'} 330 | dev: true 331 | 332 | /@fingerprintjs/fingerprintjs/3.3.5: 333 | resolution: {integrity: sha512-G5jEDVc5LQB9Pi1JLGpwYHvcVLWTnQExeqY3XmA8wJjtJy6uZOdv6cBYmHxbLFP+rh2TbVAuhLhJ4FlfNM9g+Q==} 334 | dependencies: 335 | tslib: 2.4.0 336 | dev: false 337 | 338 | /@jridgewell/gen-mapping/0.3.1: 339 | resolution: {integrity: sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==} 340 | engines: {node: '>=6.0.0'} 341 | dependencies: 342 | '@jridgewell/set-array': 1.1.1 343 | '@jridgewell/sourcemap-codec': 1.4.13 344 | '@jridgewell/trace-mapping': 0.3.13 345 | dev: true 346 | 347 | /@jridgewell/resolve-uri/3.0.7: 348 | resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==} 349 | engines: {node: '>=6.0.0'} 350 | dev: true 351 | 352 | /@jridgewell/set-array/1.1.1: 353 | resolution: {integrity: sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==} 354 | engines: {node: '>=6.0.0'} 355 | dev: true 356 | 357 | /@jridgewell/source-map/0.3.2: 358 | resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} 359 | dependencies: 360 | '@jridgewell/gen-mapping': 0.3.1 361 | '@jridgewell/trace-mapping': 0.3.13 362 | dev: true 363 | 364 | /@jridgewell/sourcemap-codec/1.4.13: 365 | resolution: {integrity: sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==} 366 | dev: true 367 | 368 | /@jridgewell/trace-mapping/0.3.13: 369 | resolution: {integrity: sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==} 370 | dependencies: 371 | '@jridgewell/resolve-uri': 3.0.7 372 | '@jridgewell/sourcemap-codec': 1.4.13 373 | dev: true 374 | 375 | /@leichtgewicht/ip-codec/2.0.4: 376 | resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} 377 | dev: true 378 | 379 | /@opentelemetry/api/1.1.0: 380 | resolution: {integrity: sha512-hf+3bwuBwtXsugA2ULBc95qxrOqP2pOekLz34BJhcAKawt94vfeNyUKpYc0lZQ/3sCP6LqRa7UAdHA7i5UODzQ==} 381 | engines: {node: '>=8.0.0'} 382 | dev: false 383 | 384 | /@strut/counter/0.0.11: 385 | resolution: {integrity: sha512-xakuLHb385I0t38vWpmqXTSVc+IlNRvWTU7xZ/WGuXtvJ8f7QzWDCwGJzTGPFx2i1tsCgRwl0lrT9hHyzFSs9A==} 386 | dependencies: 387 | '@strut/utils': 0.0.11 388 | dev: false 389 | 390 | /@strut/events/0.0.10: 391 | resolution: {integrity: sha512-ajkQudj+O1RWusfy2VeYmIsryjNC2r/2gmWN8FTJF4Ep2UmH4k1fxBVVKDn5Bk/oIpELMgtqMg1DffGxzq3/0Q==} 392 | dev: false 393 | 394 | /@strut/sid/0.1.2: 395 | resolution: {integrity: sha512-Ly5OHJQ1olgVcPEl0J35jzZHOVcAn8Z/sQPJ1lOtYMs0INlE27MUY/pqLOnWyp2UQnt/17D5U7/oH3MbFUBDpA==} 396 | dependencies: 397 | '@fingerprintjs/fingerprintjs': 3.3.5 398 | '@strut/utils': 0.1.1 399 | dev: false 400 | 401 | /@strut/utils/0.0.11: 402 | resolution: {integrity: sha512-iKeBb4ud7wPEv9gJFBGlYfebroLib97SSmUapsL1nyx+njTHwynfaIwb0qwd8CP6Dh1+lRao2oE41Ao8GfyYGw==} 403 | dev: false 404 | 405 | /@strut/utils/0.1.1: 406 | resolution: {integrity: sha512-ERVdUHMIOTYLEB4ZR+/TgtJa79MaeyvxY/MMQrIyQ5mp4EhZU8ZyYzPEQU/60gihp2w0iKUoi00sbv4dg6+rYA==} 407 | dev: false 408 | 409 | /@types/body-parser/1.19.2: 410 | resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} 411 | dependencies: 412 | '@types/connect': 3.4.35 413 | '@types/node': 18.0.0 414 | dev: true 415 | 416 | /@types/bonjour/3.5.10: 417 | resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==} 418 | dependencies: 419 | '@types/node': 18.0.0 420 | dev: true 421 | 422 | /@types/connect-history-api-fallback/1.3.5: 423 | resolution: {integrity: sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==} 424 | dependencies: 425 | '@types/express-serve-static-core': 4.17.29 426 | '@types/node': 18.0.0 427 | dev: true 428 | 429 | /@types/connect/3.4.35: 430 | resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} 431 | dependencies: 432 | '@types/node': 18.0.0 433 | dev: true 434 | 435 | /@types/eslint-scope/3.7.3: 436 | resolution: {integrity: sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==} 437 | dependencies: 438 | '@types/eslint': 8.4.3 439 | '@types/estree': 0.0.51 440 | dev: true 441 | 442 | /@types/eslint/8.4.3: 443 | resolution: {integrity: sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==} 444 | dependencies: 445 | '@types/estree': 0.0.51 446 | '@types/json-schema': 7.0.11 447 | dev: true 448 | 449 | /@types/estree/0.0.51: 450 | resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} 451 | dev: true 452 | 453 | /@types/express-serve-static-core/4.17.29: 454 | resolution: {integrity: sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==} 455 | dependencies: 456 | '@types/node': 18.0.0 457 | '@types/qs': 6.9.7 458 | '@types/range-parser': 1.2.4 459 | dev: true 460 | 461 | /@types/express/4.17.13: 462 | resolution: {integrity: sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==} 463 | dependencies: 464 | '@types/body-parser': 1.19.2 465 | '@types/express-serve-static-core': 4.17.29 466 | '@types/qs': 6.9.7 467 | '@types/serve-static': 1.13.10 468 | dev: true 469 | 470 | /@types/html-minifier-terser/6.1.0: 471 | resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} 472 | dev: true 473 | 474 | /@types/http-proxy/1.17.9: 475 | resolution: {integrity: sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==} 476 | dependencies: 477 | '@types/node': 18.0.0 478 | dev: true 479 | 480 | /@types/json-schema/7.0.11: 481 | resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} 482 | dev: true 483 | 484 | /@types/mime/1.3.2: 485 | resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} 486 | dev: true 487 | 488 | /@types/node/17.0.45: 489 | resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} 490 | dev: false 491 | 492 | /@types/node/18.0.0: 493 | resolution: {integrity: sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==} 494 | 495 | /@types/prop-types/15.7.5: 496 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 497 | 498 | /@types/qs/6.9.7: 499 | resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} 500 | dev: true 501 | 502 | /@types/range-parser/1.2.4: 503 | resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} 504 | dev: true 505 | 506 | /@types/react-dom/18.0.6: 507 | resolution: {integrity: sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==} 508 | dependencies: 509 | '@types/react': 18.0.14 510 | dev: false 511 | 512 | /@types/react/18.0.14: 513 | resolution: {integrity: sha512-x4gGuASSiWmo0xjDLpm5mPb52syZHJx02VKbqUKdLmKtAwIh63XClGsiTI1K6DO5q7ox4xAsQrU+Gl3+gGXF9Q==} 514 | dependencies: 515 | '@types/prop-types': 15.7.5 516 | '@types/scheduler': 0.16.2 517 | csstype: 3.1.0 518 | 519 | /@types/retry/0.12.0: 520 | resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} 521 | dev: true 522 | 523 | /@types/scheduler/0.16.2: 524 | resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} 525 | 526 | /@types/serve-index/1.9.1: 527 | resolution: {integrity: sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==} 528 | dependencies: 529 | '@types/express': 4.17.13 530 | dev: true 531 | 532 | /@types/serve-static/1.13.10: 533 | resolution: {integrity: sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==} 534 | dependencies: 535 | '@types/mime': 1.3.2 536 | '@types/node': 18.0.0 537 | dev: true 538 | 539 | /@types/sockjs/0.3.33: 540 | resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} 541 | dependencies: 542 | '@types/node': 18.0.0 543 | dev: true 544 | 545 | /@types/sqlite3/3.1.8: 546 | resolution: {integrity: sha512-sQMt/qnyUWnqiTcJXm5ZfNPIBeJ/DVvJDwxw+0tAxPJvadzfiP1QhryO1JOR6t1yfb8NpzQb/Rud06mob5laIA==} 547 | dependencies: 548 | '@types/node': 18.0.0 549 | dev: false 550 | 551 | /@types/ws/8.5.3: 552 | resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==} 553 | dependencies: 554 | '@types/node': 18.0.0 555 | dev: true 556 | 557 | /@webassemblyjs/ast/1.11.1: 558 | resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} 559 | dependencies: 560 | '@webassemblyjs/helper-numbers': 1.11.1 561 | '@webassemblyjs/helper-wasm-bytecode': 1.11.1 562 | dev: true 563 | 564 | /@webassemblyjs/floating-point-hex-parser/1.11.1: 565 | resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} 566 | dev: true 567 | 568 | /@webassemblyjs/helper-api-error/1.11.1: 569 | resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} 570 | dev: true 571 | 572 | /@webassemblyjs/helper-buffer/1.11.1: 573 | resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} 574 | dev: true 575 | 576 | /@webassemblyjs/helper-numbers/1.11.1: 577 | resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} 578 | dependencies: 579 | '@webassemblyjs/floating-point-hex-parser': 1.11.1 580 | '@webassemblyjs/helper-api-error': 1.11.1 581 | '@xtuc/long': 4.2.2 582 | dev: true 583 | 584 | /@webassemblyjs/helper-wasm-bytecode/1.11.1: 585 | resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} 586 | dev: true 587 | 588 | /@webassemblyjs/helper-wasm-section/1.11.1: 589 | resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} 590 | dependencies: 591 | '@webassemblyjs/ast': 1.11.1 592 | '@webassemblyjs/helper-buffer': 1.11.1 593 | '@webassemblyjs/helper-wasm-bytecode': 1.11.1 594 | '@webassemblyjs/wasm-gen': 1.11.1 595 | dev: true 596 | 597 | /@webassemblyjs/ieee754/1.11.1: 598 | resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} 599 | dependencies: 600 | '@xtuc/ieee754': 1.2.0 601 | dev: true 602 | 603 | /@webassemblyjs/leb128/1.11.1: 604 | resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} 605 | dependencies: 606 | '@xtuc/long': 4.2.2 607 | dev: true 608 | 609 | /@webassemblyjs/utf8/1.11.1: 610 | resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} 611 | dev: true 612 | 613 | /@webassemblyjs/wasm-edit/1.11.1: 614 | resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} 615 | dependencies: 616 | '@webassemblyjs/ast': 1.11.1 617 | '@webassemblyjs/helper-buffer': 1.11.1 618 | '@webassemblyjs/helper-wasm-bytecode': 1.11.1 619 | '@webassemblyjs/helper-wasm-section': 1.11.1 620 | '@webassemblyjs/wasm-gen': 1.11.1 621 | '@webassemblyjs/wasm-opt': 1.11.1 622 | '@webassemblyjs/wasm-parser': 1.11.1 623 | '@webassemblyjs/wast-printer': 1.11.1 624 | dev: true 625 | 626 | /@webassemblyjs/wasm-gen/1.11.1: 627 | resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} 628 | dependencies: 629 | '@webassemblyjs/ast': 1.11.1 630 | '@webassemblyjs/helper-wasm-bytecode': 1.11.1 631 | '@webassemblyjs/ieee754': 1.11.1 632 | '@webassemblyjs/leb128': 1.11.1 633 | '@webassemblyjs/utf8': 1.11.1 634 | dev: true 635 | 636 | /@webassemblyjs/wasm-opt/1.11.1: 637 | resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} 638 | dependencies: 639 | '@webassemblyjs/ast': 1.11.1 640 | '@webassemblyjs/helper-buffer': 1.11.1 641 | '@webassemblyjs/wasm-gen': 1.11.1 642 | '@webassemblyjs/wasm-parser': 1.11.1 643 | dev: true 644 | 645 | /@webassemblyjs/wasm-parser/1.11.1: 646 | resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} 647 | dependencies: 648 | '@webassemblyjs/ast': 1.11.1 649 | '@webassemblyjs/helper-api-error': 1.11.1 650 | '@webassemblyjs/helper-wasm-bytecode': 1.11.1 651 | '@webassemblyjs/ieee754': 1.11.1 652 | '@webassemblyjs/leb128': 1.11.1 653 | '@webassemblyjs/utf8': 1.11.1 654 | dev: true 655 | 656 | /@webassemblyjs/wast-printer/1.11.1: 657 | resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} 658 | dependencies: 659 | '@webassemblyjs/ast': 1.11.1 660 | '@xtuc/long': 4.2.2 661 | dev: true 662 | 663 | /@webpack-cli/configtest/1.2.0_77l47gmqkrqiei5z7sbwz5iaj4: 664 | resolution: {integrity: sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==} 665 | peerDependencies: 666 | webpack: 4.x.x || 5.x.x 667 | webpack-cli: 4.x.x 668 | dependencies: 669 | webpack: 5.73.0_webpack-cli@4.10.0 670 | webpack-cli: 4.10.0_hnfkmnck6ti4dm6ulhhz44v2ju 671 | dev: true 672 | 673 | /@webpack-cli/info/1.5.0_webpack-cli@4.10.0: 674 | resolution: {integrity: sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==} 675 | peerDependencies: 676 | webpack-cli: 4.x.x 677 | dependencies: 678 | envinfo: 7.8.1 679 | webpack-cli: 4.10.0_hnfkmnck6ti4dm6ulhhz44v2ju 680 | dev: true 681 | 682 | /@webpack-cli/serve/1.7.0_b6kp5g2s4uywsci7bb7pbu5to4: 683 | resolution: {integrity: sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==} 684 | peerDependencies: 685 | webpack-cli: 4.x.x 686 | webpack-dev-server: '*' 687 | peerDependenciesMeta: 688 | webpack-dev-server: 689 | optional: true 690 | dependencies: 691 | webpack-cli: 4.10.0_hnfkmnck6ti4dm6ulhhz44v2ju 692 | webpack-dev-server: 4.9.2_77l47gmqkrqiei5z7sbwz5iaj4 693 | dev: true 694 | 695 | /@xtuc/ieee754/1.2.0: 696 | resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} 697 | dev: true 698 | 699 | /@xtuc/long/4.2.2: 700 | resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} 701 | dev: true 702 | 703 | /abbrev/1.1.1: 704 | resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} 705 | dev: false 706 | 707 | /accepts/1.3.8: 708 | resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} 709 | engines: {node: '>= 0.6'} 710 | dependencies: 711 | mime-types: 2.1.35 712 | negotiator: 0.6.3 713 | dev: true 714 | 715 | /acorn-import-assertions/1.8.0_acorn@8.7.1: 716 | resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==} 717 | peerDependencies: 718 | acorn: ^8 719 | dependencies: 720 | acorn: 8.7.1 721 | dev: true 722 | 723 | /acorn/8.7.1: 724 | resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==} 725 | engines: {node: '>=0.4.0'} 726 | hasBin: true 727 | dev: true 728 | 729 | /ajv-formats/2.1.1: 730 | resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} 731 | peerDependenciesMeta: 732 | ajv: 733 | optional: true 734 | dependencies: 735 | ajv: 8.11.0 736 | dev: true 737 | 738 | /ajv-keywords/3.5.2_ajv@6.12.6: 739 | resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} 740 | peerDependencies: 741 | ajv: ^6.9.1 742 | dependencies: 743 | ajv: 6.12.6 744 | dev: true 745 | 746 | /ajv-keywords/5.1.0_ajv@8.11.0: 747 | resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} 748 | peerDependencies: 749 | ajv: ^8.8.2 750 | dependencies: 751 | ajv: 8.11.0 752 | fast-deep-equal: 3.1.3 753 | dev: true 754 | 755 | /ajv/6.12.6: 756 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 757 | dependencies: 758 | fast-deep-equal: 3.1.3 759 | fast-json-stable-stringify: 2.1.0 760 | json-schema-traverse: 0.4.1 761 | uri-js: 4.4.1 762 | dev: true 763 | 764 | /ajv/8.11.0: 765 | resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} 766 | dependencies: 767 | fast-deep-equal: 3.1.3 768 | json-schema-traverse: 1.0.0 769 | require-from-string: 2.0.2 770 | uri-js: 4.4.1 771 | dev: true 772 | 773 | /ansi-html-community/0.0.8: 774 | resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} 775 | engines: {'0': node >= 0.8.0} 776 | hasBin: true 777 | dev: true 778 | 779 | /ansi-regex/2.1.1: 780 | resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} 781 | engines: {node: '>=0.10.0'} 782 | dev: false 783 | 784 | /ansi-regex/5.0.1: 785 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 786 | engines: {node: '>=8'} 787 | dev: true 788 | 789 | /ansi-styles/3.2.1: 790 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 791 | engines: {node: '>=4'} 792 | dependencies: 793 | color-convert: 1.9.3 794 | dev: false 795 | 796 | /ansi-styles/4.3.0: 797 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 798 | engines: {node: '>=8'} 799 | dependencies: 800 | color-convert: 2.0.1 801 | dev: true 802 | 803 | /anymatch/3.1.2: 804 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 805 | engines: {node: '>= 8'} 806 | dependencies: 807 | normalize-path: 3.0.0 808 | picomatch: 2.3.1 809 | dev: true 810 | 811 | /aproba/1.2.0: 812 | resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} 813 | dev: false 814 | 815 | /are-we-there-yet/1.1.7: 816 | resolution: {integrity: sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==} 817 | dependencies: 818 | delegates: 1.0.0 819 | readable-stream: 2.3.7 820 | dev: false 821 | 822 | /argparse/2.0.1: 823 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 824 | dev: false 825 | 826 | /array-back/3.1.0: 827 | resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} 828 | engines: {node: '>=6'} 829 | dev: false 830 | 831 | /array-back/4.0.2: 832 | resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} 833 | engines: {node: '>=8'} 834 | dev: false 835 | 836 | /array-flatten/1.1.1: 837 | resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} 838 | dev: true 839 | 840 | /array-flatten/2.1.2: 841 | resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} 842 | dev: true 843 | 844 | /asap/1.0.0: 845 | resolution: {integrity: sha512-Ej9qjcXY+8Tuy1cNqiwNMwFRXOy9UwgTeMA8LxreodygIPV48lx8PU1ecFxb5ZeU1DpMKxiq6vGLTxcitWZPbA==} 846 | dev: false 847 | 848 | /balanced-match/1.0.2: 849 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 850 | 851 | /batch/0.6.1: 852 | resolution: {integrity: sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=} 853 | dev: true 854 | 855 | /big.js/5.2.2: 856 | resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} 857 | dev: true 858 | 859 | /binary-extensions/2.2.0: 860 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 861 | engines: {node: '>=8'} 862 | dev: true 863 | 864 | /body-parser/1.20.0: 865 | resolution: {integrity: sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==} 866 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 867 | dependencies: 868 | bytes: 3.1.2 869 | content-type: 1.0.4 870 | debug: 2.6.9 871 | depd: 2.0.0 872 | destroy: 1.2.0 873 | http-errors: 2.0.0 874 | iconv-lite: 0.4.24 875 | on-finished: 2.4.1 876 | qs: 6.10.3 877 | raw-body: 2.5.1 878 | type-is: 1.6.18 879 | unpipe: 1.0.0 880 | transitivePeerDependencies: 881 | - supports-color 882 | dev: true 883 | 884 | /bonjour-service/1.0.13: 885 | resolution: {integrity: sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==} 886 | dependencies: 887 | array-flatten: 2.1.2 888 | dns-equal: 1.0.0 889 | fast-deep-equal: 3.1.3 890 | multicast-dns: 7.2.5 891 | dev: true 892 | 893 | /boolbase/1.0.0: 894 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} 895 | dev: true 896 | 897 | /brace-expansion/1.1.11: 898 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 899 | dependencies: 900 | balanced-match: 1.0.2 901 | concat-map: 0.0.1 902 | 903 | /braces/3.0.2: 904 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 905 | engines: {node: '>=8'} 906 | dependencies: 907 | fill-range: 7.0.1 908 | dev: true 909 | 910 | /browserslist/4.20.4: 911 | resolution: {integrity: sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==} 912 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 913 | hasBin: true 914 | dependencies: 915 | caniuse-lite: 1.0.30001358 916 | electron-to-chromium: 1.4.164 917 | escalade: 3.1.1 918 | node-releases: 2.0.5 919 | picocolors: 1.0.0 920 | dev: true 921 | 922 | /buffer-from/1.1.2: 923 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 924 | dev: true 925 | 926 | /bytes/3.0.0: 927 | resolution: {integrity: sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=} 928 | engines: {node: '>= 0.8'} 929 | dev: true 930 | 931 | /bytes/3.1.2: 932 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 933 | engines: {node: '>= 0.8'} 934 | dev: true 935 | 936 | /call-bind/1.0.2: 937 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 938 | dependencies: 939 | function-bind: 1.1.1 940 | get-intrinsic: 1.1.2 941 | dev: true 942 | 943 | /camel-case/4.1.2: 944 | resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} 945 | dependencies: 946 | pascal-case: 3.1.2 947 | tslib: 2.4.0 948 | dev: true 949 | 950 | /caniuse-lite/1.0.30001358: 951 | resolution: {integrity: sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw==} 952 | dev: true 953 | 954 | /chalk/2.4.2: 955 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 956 | engines: {node: '>=4'} 957 | dependencies: 958 | ansi-styles: 3.2.1 959 | escape-string-regexp: 1.0.5 960 | supports-color: 5.5.0 961 | dev: false 962 | 963 | /chalk/4.1.2: 964 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 965 | engines: {node: '>=10'} 966 | dependencies: 967 | ansi-styles: 4.3.0 968 | supports-color: 7.2.0 969 | dev: true 970 | 971 | /chalk/5.0.1: 972 | resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==} 973 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 974 | dev: false 975 | 976 | /charenc/0.0.2: 977 | resolution: {integrity: sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=} 978 | dev: false 979 | 980 | /chokidar/3.5.3: 981 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 982 | engines: {node: '>= 8.10.0'} 983 | dependencies: 984 | anymatch: 3.1.2 985 | braces: 3.0.2 986 | glob-parent: 5.1.2 987 | is-binary-path: 2.1.0 988 | is-glob: 4.0.3 989 | normalize-path: 3.0.0 990 | readdirp: 3.6.0 991 | optionalDependencies: 992 | fsevents: 2.3.2 993 | dev: true 994 | 995 | /chownr/1.1.4: 996 | resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} 997 | dev: false 998 | 999 | /chrome-trace-event/1.0.3: 1000 | resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} 1001 | engines: {node: '>=6.0'} 1002 | dev: true 1003 | 1004 | /clean-css/5.3.0: 1005 | resolution: {integrity: sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==} 1006 | engines: {node: '>= 10.0'} 1007 | dependencies: 1008 | source-map: 0.6.1 1009 | dev: true 1010 | 1011 | /clone-deep/4.0.1: 1012 | resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} 1013 | engines: {node: '>=6'} 1014 | dependencies: 1015 | is-plain-object: 2.0.4 1016 | kind-of: 6.0.3 1017 | shallow-clone: 3.0.1 1018 | dev: true 1019 | 1020 | /code-point-at/1.1.0: 1021 | resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} 1022 | engines: {node: '>=0.10.0'} 1023 | dev: false 1024 | 1025 | /color-convert/1.9.3: 1026 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1027 | dependencies: 1028 | color-name: 1.1.3 1029 | dev: false 1030 | 1031 | /color-convert/2.0.1: 1032 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1033 | engines: {node: '>=7.0.0'} 1034 | dependencies: 1035 | color-name: 1.1.4 1036 | dev: true 1037 | 1038 | /color-name/1.1.3: 1039 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 1040 | dev: false 1041 | 1042 | /color-name/1.1.4: 1043 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1044 | dev: true 1045 | 1046 | /colorette/2.0.19: 1047 | resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} 1048 | dev: true 1049 | 1050 | /command-line-args/5.2.1: 1051 | resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} 1052 | engines: {node: '>=4.0.0'} 1053 | dependencies: 1054 | array-back: 3.1.0 1055 | find-replace: 3.0.0 1056 | lodash.camelcase: 4.3.0 1057 | typical: 4.0.0 1058 | dev: false 1059 | 1060 | /command-line-usage/6.1.3: 1061 | resolution: {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==} 1062 | engines: {node: '>=8.0.0'} 1063 | dependencies: 1064 | array-back: 4.0.2 1065 | chalk: 2.4.2 1066 | table-layout: 1.0.2 1067 | typical: 5.2.0 1068 | dev: false 1069 | 1070 | /commander/2.20.3: 1071 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 1072 | dev: true 1073 | 1074 | /commander/7.2.0: 1075 | resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} 1076 | engines: {node: '>= 10'} 1077 | dev: true 1078 | 1079 | /commander/8.3.0: 1080 | resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} 1081 | engines: {node: '>= 12'} 1082 | dev: true 1083 | 1084 | /compressible/2.0.18: 1085 | resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} 1086 | engines: {node: '>= 0.6'} 1087 | dependencies: 1088 | mime-db: 1.52.0 1089 | dev: true 1090 | 1091 | /compression/1.7.4: 1092 | resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} 1093 | engines: {node: '>= 0.8.0'} 1094 | dependencies: 1095 | accepts: 1.3.8 1096 | bytes: 3.0.0 1097 | compressible: 2.0.18 1098 | debug: 2.6.9 1099 | on-headers: 1.0.2 1100 | safe-buffer: 5.1.2 1101 | vary: 1.1.2 1102 | transitivePeerDependencies: 1103 | - supports-color 1104 | dev: true 1105 | 1106 | /concat-map/0.0.1: 1107 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 1108 | 1109 | /connect-history-api-fallback/1.6.0: 1110 | resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} 1111 | engines: {node: '>=0.8'} 1112 | dev: true 1113 | 1114 | /console-control-strings/1.1.0: 1115 | resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} 1116 | dev: false 1117 | 1118 | /content-disposition/0.5.4: 1119 | resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} 1120 | engines: {node: '>= 0.6'} 1121 | dependencies: 1122 | safe-buffer: 5.2.1 1123 | dev: true 1124 | 1125 | /content-type/1.0.4: 1126 | resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} 1127 | engines: {node: '>= 0.6'} 1128 | dev: true 1129 | 1130 | /cookie-signature/1.0.6: 1131 | resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} 1132 | dev: true 1133 | 1134 | /cookie/0.5.0: 1135 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 1136 | engines: {node: '>= 0.6'} 1137 | dev: true 1138 | 1139 | /core-util-is/1.0.3: 1140 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} 1141 | 1142 | /cross-spawn/7.0.3: 1143 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1144 | engines: {node: '>= 8'} 1145 | dependencies: 1146 | path-key: 3.1.1 1147 | shebang-command: 2.0.0 1148 | which: 2.0.2 1149 | dev: true 1150 | 1151 | /crypt/0.0.2: 1152 | resolution: {integrity: sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=} 1153 | dev: false 1154 | 1155 | /css-select/4.3.0: 1156 | resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} 1157 | dependencies: 1158 | boolbase: 1.0.0 1159 | css-what: 6.1.0 1160 | domhandler: 4.3.1 1161 | domutils: 2.8.0 1162 | nth-check: 2.1.1 1163 | dev: true 1164 | 1165 | /css-what/6.1.0: 1166 | resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} 1167 | engines: {node: '>= 6'} 1168 | dev: true 1169 | 1170 | /csstype/3.1.0: 1171 | resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==} 1172 | 1173 | /debug/2.6.9: 1174 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 1175 | peerDependencies: 1176 | supports-color: '*' 1177 | peerDependenciesMeta: 1178 | supports-color: 1179 | optional: true 1180 | dependencies: 1181 | ms: 2.0.0 1182 | dev: true 1183 | 1184 | /debug/3.2.7: 1185 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 1186 | peerDependencies: 1187 | supports-color: '*' 1188 | peerDependenciesMeta: 1189 | supports-color: 1190 | optional: true 1191 | dependencies: 1192 | ms: 2.1.3 1193 | dev: false 1194 | 1195 | /debug/4.3.4: 1196 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1197 | engines: {node: '>=6.0'} 1198 | peerDependencies: 1199 | supports-color: '*' 1200 | peerDependenciesMeta: 1201 | supports-color: 1202 | optional: true 1203 | dependencies: 1204 | ms: 2.1.2 1205 | dev: true 1206 | 1207 | /deep-extend/0.6.0: 1208 | resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} 1209 | engines: {node: '>=4.0.0'} 1210 | dev: false 1211 | 1212 | /default-gateway/6.0.3: 1213 | resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} 1214 | engines: {node: '>= 10'} 1215 | dependencies: 1216 | execa: 5.1.1 1217 | dev: true 1218 | 1219 | /define-lazy-prop/2.0.0: 1220 | resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} 1221 | engines: {node: '>=8'} 1222 | dev: true 1223 | 1224 | /delegates/1.0.0: 1225 | resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} 1226 | dev: false 1227 | 1228 | /depd/1.1.2: 1229 | resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} 1230 | engines: {node: '>= 0.6'} 1231 | dev: true 1232 | 1233 | /depd/2.0.0: 1234 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 1235 | engines: {node: '>= 0.8'} 1236 | dev: true 1237 | 1238 | /destroy/1.2.0: 1239 | resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 1240 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 1241 | dev: true 1242 | 1243 | /detect-libc/1.0.3: 1244 | resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} 1245 | engines: {node: '>=0.10'} 1246 | hasBin: true 1247 | dev: false 1248 | 1249 | /detect-node/2.1.0: 1250 | resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} 1251 | dev: true 1252 | 1253 | /dns-equal/1.0.0: 1254 | resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} 1255 | dev: true 1256 | 1257 | /dns-packet/5.4.0: 1258 | resolution: {integrity: sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==} 1259 | engines: {node: '>=6'} 1260 | dependencies: 1261 | '@leichtgewicht/ip-codec': 2.0.4 1262 | dev: true 1263 | 1264 | /dom-converter/0.2.0: 1265 | resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} 1266 | dependencies: 1267 | utila: 0.4.0 1268 | dev: true 1269 | 1270 | /dom-serializer/1.4.1: 1271 | resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} 1272 | dependencies: 1273 | domelementtype: 2.3.0 1274 | domhandler: 4.3.1 1275 | entities: 2.2.0 1276 | dev: true 1277 | 1278 | /domelementtype/2.3.0: 1279 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 1280 | dev: true 1281 | 1282 | /domhandler/4.3.1: 1283 | resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} 1284 | engines: {node: '>= 4'} 1285 | dependencies: 1286 | domelementtype: 2.3.0 1287 | dev: true 1288 | 1289 | /domutils/2.8.0: 1290 | resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} 1291 | dependencies: 1292 | dom-serializer: 1.4.1 1293 | domelementtype: 2.3.0 1294 | domhandler: 4.3.1 1295 | dev: true 1296 | 1297 | /dot-case/3.0.4: 1298 | resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} 1299 | dependencies: 1300 | no-case: 3.0.4 1301 | tslib: 2.4.0 1302 | dev: true 1303 | 1304 | /ee-first/1.1.1: 1305 | resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} 1306 | dev: true 1307 | 1308 | /electron-to-chromium/1.4.164: 1309 | resolution: {integrity: sha512-K7iy5y6XyP9Pzh3uaDti0KC4JUNT6T1tLG5RTOmesqq2YgAJpYYYJ32m+anvZYjCV35llPTEh87kvEV/uSsiyQ==} 1310 | dev: true 1311 | 1312 | /emojis-list/3.0.0: 1313 | resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} 1314 | engines: {node: '>= 4'} 1315 | dev: true 1316 | 1317 | /encodeurl/1.0.2: 1318 | resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} 1319 | engines: {node: '>= 0.8'} 1320 | dev: true 1321 | 1322 | /enhanced-resolve/5.9.3: 1323 | resolution: {integrity: sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==} 1324 | engines: {node: '>=10.13.0'} 1325 | dependencies: 1326 | graceful-fs: 4.2.10 1327 | tapable: 2.2.1 1328 | dev: true 1329 | 1330 | /entities/2.2.0: 1331 | resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} 1332 | dev: true 1333 | 1334 | /envinfo/7.8.1: 1335 | resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} 1336 | engines: {node: '>=4'} 1337 | hasBin: true 1338 | dev: true 1339 | 1340 | /es-module-lexer/0.9.3: 1341 | resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} 1342 | dev: true 1343 | 1344 | /escalade/3.1.1: 1345 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1346 | engines: {node: '>=6'} 1347 | dev: true 1348 | 1349 | /escape-html/1.0.3: 1350 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 1351 | dev: true 1352 | 1353 | /escape-string-regexp/1.0.5: 1354 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1355 | engines: {node: '>=0.8.0'} 1356 | dev: false 1357 | 1358 | /eslint-scope/5.1.1: 1359 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 1360 | engines: {node: '>=8.0.0'} 1361 | dependencies: 1362 | esrecurse: 4.3.0 1363 | estraverse: 4.3.0 1364 | dev: true 1365 | 1366 | /esrecurse/4.3.0: 1367 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1368 | engines: {node: '>=4.0'} 1369 | dependencies: 1370 | estraverse: 5.3.0 1371 | dev: true 1372 | 1373 | /estraverse/4.3.0: 1374 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1375 | engines: {node: '>=4.0'} 1376 | dev: true 1377 | 1378 | /estraverse/5.3.0: 1379 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1380 | engines: {node: '>=4.0'} 1381 | dev: true 1382 | 1383 | /etag/1.8.1: 1384 | resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 1385 | engines: {node: '>= 0.6'} 1386 | dev: true 1387 | 1388 | /eventemitter3/4.0.7: 1389 | resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} 1390 | dev: true 1391 | 1392 | /events/3.3.0: 1393 | resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 1394 | engines: {node: '>=0.8.x'} 1395 | dev: true 1396 | 1397 | /execa/5.1.1: 1398 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 1399 | engines: {node: '>=10'} 1400 | dependencies: 1401 | cross-spawn: 7.0.3 1402 | get-stream: 6.0.1 1403 | human-signals: 2.1.0 1404 | is-stream: 2.0.1 1405 | merge-stream: 2.0.0 1406 | npm-run-path: 4.0.1 1407 | onetime: 5.1.2 1408 | signal-exit: 3.0.7 1409 | strip-final-newline: 2.0.0 1410 | dev: true 1411 | 1412 | /express/4.18.1: 1413 | resolution: {integrity: sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==} 1414 | engines: {node: '>= 0.10.0'} 1415 | dependencies: 1416 | accepts: 1.3.8 1417 | array-flatten: 1.1.1 1418 | body-parser: 1.20.0 1419 | content-disposition: 0.5.4 1420 | content-type: 1.0.4 1421 | cookie: 0.5.0 1422 | cookie-signature: 1.0.6 1423 | debug: 2.6.9 1424 | depd: 2.0.0 1425 | encodeurl: 1.0.2 1426 | escape-html: 1.0.3 1427 | etag: 1.8.1 1428 | finalhandler: 1.2.0 1429 | fresh: 0.5.2 1430 | http-errors: 2.0.0 1431 | merge-descriptors: 1.0.1 1432 | methods: 1.1.2 1433 | on-finished: 2.4.1 1434 | parseurl: 1.3.3 1435 | path-to-regexp: 0.1.7 1436 | proxy-addr: 2.0.7 1437 | qs: 6.10.3 1438 | range-parser: 1.2.1 1439 | safe-buffer: 5.2.1 1440 | send: 0.18.0 1441 | serve-static: 1.15.0 1442 | setprototypeof: 1.2.0 1443 | statuses: 2.0.1 1444 | type-is: 1.6.18 1445 | utils-merge: 1.0.1 1446 | vary: 1.1.2 1447 | transitivePeerDependencies: 1448 | - supports-color 1449 | dev: true 1450 | 1451 | /fast-deep-equal/3.1.3: 1452 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1453 | dev: true 1454 | 1455 | /fast-json-stable-stringify/2.1.0: 1456 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1457 | dev: true 1458 | 1459 | /fastest-levenshtein/1.0.12: 1460 | resolution: {integrity: sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==} 1461 | dev: true 1462 | 1463 | /faye-websocket/0.11.4: 1464 | resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} 1465 | engines: {node: '>=0.8.0'} 1466 | dependencies: 1467 | websocket-driver: 0.7.4 1468 | dev: true 1469 | 1470 | /fill-range/7.0.1: 1471 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1472 | engines: {node: '>=8'} 1473 | dependencies: 1474 | to-regex-range: 5.0.1 1475 | dev: true 1476 | 1477 | /finalhandler/1.2.0: 1478 | resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} 1479 | engines: {node: '>= 0.8'} 1480 | dependencies: 1481 | debug: 2.6.9 1482 | encodeurl: 1.0.2 1483 | escape-html: 1.0.3 1484 | on-finished: 2.4.1 1485 | parseurl: 1.3.3 1486 | statuses: 2.0.1 1487 | unpipe: 1.0.0 1488 | transitivePeerDependencies: 1489 | - supports-color 1490 | dev: true 1491 | 1492 | /find-replace/3.0.0: 1493 | resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} 1494 | engines: {node: '>=4.0.0'} 1495 | dependencies: 1496 | array-back: 3.1.0 1497 | dev: false 1498 | 1499 | /find-up/4.1.0: 1500 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1501 | engines: {node: '>=8'} 1502 | dependencies: 1503 | locate-path: 5.0.0 1504 | path-exists: 4.0.0 1505 | dev: true 1506 | 1507 | /follow-redirects/1.15.1: 1508 | resolution: {integrity: sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==} 1509 | engines: {node: '>=4.0'} 1510 | peerDependencies: 1511 | debug: '*' 1512 | peerDependenciesMeta: 1513 | debug: 1514 | optional: true 1515 | dev: true 1516 | 1517 | /forwarded/0.2.0: 1518 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 1519 | engines: {node: '>= 0.6'} 1520 | dev: true 1521 | 1522 | /fresh/0.5.2: 1523 | resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=} 1524 | engines: {node: '>= 0.6'} 1525 | dev: true 1526 | 1527 | /fs-minipass/1.2.7: 1528 | resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==} 1529 | dependencies: 1530 | minipass: 2.9.0 1531 | dev: false 1532 | 1533 | /fs-monkey/1.0.3: 1534 | resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==} 1535 | dev: true 1536 | 1537 | /fs.realpath/1.0.0: 1538 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1539 | 1540 | /fsevents/2.3.2: 1541 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1542 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1543 | os: [darwin] 1544 | requiresBuild: true 1545 | dev: true 1546 | optional: true 1547 | 1548 | /function-bind/1.1.1: 1549 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1550 | dev: true 1551 | 1552 | /gauge/2.7.4: 1553 | resolution: {integrity: sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==} 1554 | dependencies: 1555 | aproba: 1.2.0 1556 | console-control-strings: 1.1.0 1557 | has-unicode: 2.0.1 1558 | object-assign: 4.1.1 1559 | signal-exit: 3.0.7 1560 | string-width: 1.0.2 1561 | strip-ansi: 3.0.1 1562 | wide-align: 1.1.5 1563 | dev: false 1564 | 1565 | /get-intrinsic/1.1.2: 1566 | resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==} 1567 | dependencies: 1568 | function-bind: 1.1.1 1569 | has: 1.0.3 1570 | has-symbols: 1.0.3 1571 | dev: true 1572 | 1573 | /get-stream/6.0.1: 1574 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1575 | engines: {node: '>=10'} 1576 | dev: true 1577 | 1578 | /glob-parent/5.1.2: 1579 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1580 | engines: {node: '>= 6'} 1581 | dependencies: 1582 | is-glob: 4.0.3 1583 | dev: true 1584 | 1585 | /glob-to-regexp/0.4.1: 1586 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 1587 | dev: true 1588 | 1589 | /glob/7.2.3: 1590 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1591 | dependencies: 1592 | fs.realpath: 1.0.0 1593 | inflight: 1.0.6 1594 | inherits: 2.0.4 1595 | minimatch: 3.1.2 1596 | once: 1.4.0 1597 | path-is-absolute: 1.0.1 1598 | 1599 | /graceful-fs/4.2.10: 1600 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 1601 | dev: true 1602 | 1603 | /handle-thing/2.0.1: 1604 | resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} 1605 | dev: true 1606 | 1607 | /has-flag/3.0.0: 1608 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1609 | engines: {node: '>=4'} 1610 | dev: false 1611 | 1612 | /has-flag/4.0.0: 1613 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1614 | engines: {node: '>=8'} 1615 | dev: true 1616 | 1617 | /has-symbols/1.0.3: 1618 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1619 | engines: {node: '>= 0.4'} 1620 | dev: true 1621 | 1622 | /has-unicode/2.0.1: 1623 | resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} 1624 | dev: false 1625 | 1626 | /has/1.0.3: 1627 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1628 | engines: {node: '>= 0.4.0'} 1629 | dependencies: 1630 | function-bind: 1.1.1 1631 | dev: true 1632 | 1633 | /he/1.2.0: 1634 | resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} 1635 | hasBin: true 1636 | dev: true 1637 | 1638 | /hpack.js/2.1.6: 1639 | resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} 1640 | dependencies: 1641 | inherits: 2.0.4 1642 | obuf: 1.1.2 1643 | readable-stream: 2.3.7 1644 | wbuf: 1.7.3 1645 | dev: true 1646 | 1647 | /html-entities/2.3.3: 1648 | resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} 1649 | dev: true 1650 | 1651 | /html-minifier-terser/6.1.0: 1652 | resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} 1653 | engines: {node: '>=12'} 1654 | hasBin: true 1655 | dependencies: 1656 | camel-case: 4.1.2 1657 | clean-css: 5.3.0 1658 | commander: 8.3.0 1659 | he: 1.2.0 1660 | param-case: 3.0.4 1661 | relateurl: 0.2.7 1662 | terser: 5.14.1 1663 | dev: true 1664 | 1665 | /html-webpack-plugin/5.5.0_webpack@5.73.0: 1666 | resolution: {integrity: sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==} 1667 | engines: {node: '>=10.13.0'} 1668 | peerDependencies: 1669 | webpack: ^5.20.0 1670 | dependencies: 1671 | '@types/html-minifier-terser': 6.1.0 1672 | html-minifier-terser: 6.1.0 1673 | lodash: 4.17.21 1674 | pretty-error: 4.0.0 1675 | tapable: 2.2.1 1676 | webpack: 5.73.0_webpack-cli@4.10.0 1677 | dev: true 1678 | 1679 | /htmlparser2/6.1.0: 1680 | resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} 1681 | dependencies: 1682 | domelementtype: 2.3.0 1683 | domhandler: 4.3.1 1684 | domutils: 2.8.0 1685 | entities: 2.2.0 1686 | dev: true 1687 | 1688 | /http-deceiver/1.2.7: 1689 | resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} 1690 | dev: true 1691 | 1692 | /http-errors/1.6.3: 1693 | resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} 1694 | engines: {node: '>= 0.6'} 1695 | dependencies: 1696 | depd: 1.1.2 1697 | inherits: 2.0.3 1698 | setprototypeof: 1.1.0 1699 | statuses: 1.5.0 1700 | dev: true 1701 | 1702 | /http-errors/2.0.0: 1703 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 1704 | engines: {node: '>= 0.8'} 1705 | dependencies: 1706 | depd: 2.0.0 1707 | inherits: 2.0.4 1708 | setprototypeof: 1.2.0 1709 | statuses: 2.0.1 1710 | toidentifier: 1.0.1 1711 | dev: true 1712 | 1713 | /http-parser-js/0.5.6: 1714 | resolution: {integrity: sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==} 1715 | dev: true 1716 | 1717 | /http-proxy-middleware/2.0.6_@types+express@4.17.13: 1718 | resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} 1719 | engines: {node: '>=12.0.0'} 1720 | peerDependencies: 1721 | '@types/express': ^4.17.13 1722 | peerDependenciesMeta: 1723 | '@types/express': 1724 | optional: true 1725 | dependencies: 1726 | '@types/express': 4.17.13 1727 | '@types/http-proxy': 1.17.9 1728 | http-proxy: 1.18.1 1729 | is-glob: 4.0.3 1730 | is-plain-obj: 3.0.0 1731 | micromatch: 4.0.5 1732 | transitivePeerDependencies: 1733 | - debug 1734 | dev: true 1735 | 1736 | /http-proxy/1.18.1: 1737 | resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} 1738 | engines: {node: '>=8.0.0'} 1739 | dependencies: 1740 | eventemitter3: 4.0.7 1741 | follow-redirects: 1.15.1 1742 | requires-port: 1.0.0 1743 | transitivePeerDependencies: 1744 | - debug 1745 | dev: true 1746 | 1747 | /human-signals/2.1.0: 1748 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1749 | engines: {node: '>=10.17.0'} 1750 | dev: true 1751 | 1752 | /iconv-lite/0.4.24: 1753 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1754 | engines: {node: '>=0.10.0'} 1755 | dependencies: 1756 | safer-buffer: 2.1.2 1757 | 1758 | /ignore-walk/3.0.4: 1759 | resolution: {integrity: sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==} 1760 | dependencies: 1761 | minimatch: 3.1.2 1762 | dev: false 1763 | 1764 | /import-local/3.1.0: 1765 | resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} 1766 | engines: {node: '>=8'} 1767 | hasBin: true 1768 | dependencies: 1769 | pkg-dir: 4.2.0 1770 | resolve-cwd: 3.0.0 1771 | dev: true 1772 | 1773 | /inflight/1.0.6: 1774 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1775 | dependencies: 1776 | once: 1.4.0 1777 | wrappy: 1.0.2 1778 | 1779 | /inherits/2.0.3: 1780 | resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} 1781 | dev: true 1782 | 1783 | /inherits/2.0.4: 1784 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1785 | 1786 | /ini/1.3.8: 1787 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 1788 | dev: false 1789 | 1790 | /interpret/2.2.0: 1791 | resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} 1792 | engines: {node: '>= 0.10'} 1793 | dev: true 1794 | 1795 | /ipaddr.js/1.9.1: 1796 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 1797 | engines: {node: '>= 0.10'} 1798 | dev: true 1799 | 1800 | /ipaddr.js/2.0.1: 1801 | resolution: {integrity: sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==} 1802 | engines: {node: '>= 10'} 1803 | dev: true 1804 | 1805 | /is-binary-path/2.1.0: 1806 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1807 | engines: {node: '>=8'} 1808 | dependencies: 1809 | binary-extensions: 2.2.0 1810 | dev: true 1811 | 1812 | /is-buffer/1.1.6: 1813 | resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} 1814 | dev: false 1815 | 1816 | /is-core-module/2.9.0: 1817 | resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} 1818 | dependencies: 1819 | has: 1.0.3 1820 | dev: true 1821 | 1822 | /is-docker/2.2.1: 1823 | resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} 1824 | engines: {node: '>=8'} 1825 | hasBin: true 1826 | dev: true 1827 | 1828 | /is-extglob/2.1.1: 1829 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1830 | engines: {node: '>=0.10.0'} 1831 | dev: true 1832 | 1833 | /is-fullwidth-code-point/1.0.0: 1834 | resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} 1835 | engines: {node: '>=0.10.0'} 1836 | dependencies: 1837 | number-is-nan: 1.0.1 1838 | dev: false 1839 | 1840 | /is-glob/4.0.3: 1841 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1842 | engines: {node: '>=0.10.0'} 1843 | dependencies: 1844 | is-extglob: 2.1.1 1845 | dev: true 1846 | 1847 | /is-number/7.0.0: 1848 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1849 | engines: {node: '>=0.12.0'} 1850 | dev: true 1851 | 1852 | /is-plain-obj/3.0.0: 1853 | resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} 1854 | engines: {node: '>=10'} 1855 | dev: true 1856 | 1857 | /is-plain-object/2.0.4: 1858 | resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} 1859 | engines: {node: '>=0.10.0'} 1860 | dependencies: 1861 | isobject: 3.0.1 1862 | dev: true 1863 | 1864 | /is-stream/2.0.1: 1865 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1866 | engines: {node: '>=8'} 1867 | dev: true 1868 | 1869 | /is-wsl/2.2.0: 1870 | resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} 1871 | engines: {node: '>=8'} 1872 | dependencies: 1873 | is-docker: 2.2.1 1874 | dev: true 1875 | 1876 | /isarray/1.0.0: 1877 | resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} 1878 | 1879 | /isexe/2.0.0: 1880 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1881 | dev: true 1882 | 1883 | /isobject/3.0.1: 1884 | resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} 1885 | engines: {node: '>=0.10.0'} 1886 | dev: true 1887 | 1888 | /jest-worker/27.5.1: 1889 | resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} 1890 | engines: {node: '>= 10.13.0'} 1891 | dependencies: 1892 | '@types/node': 18.0.0 1893 | merge-stream: 2.0.0 1894 | supports-color: 8.1.1 1895 | dev: true 1896 | 1897 | /js-tokens/4.0.0: 1898 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1899 | dev: false 1900 | 1901 | /json-parse-even-better-errors/2.3.1: 1902 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1903 | dev: true 1904 | 1905 | /json-schema-traverse/0.4.1: 1906 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1907 | dev: true 1908 | 1909 | /json-schema-traverse/1.0.0: 1910 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 1911 | dev: true 1912 | 1913 | /json5/2.2.1: 1914 | resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} 1915 | engines: {node: '>=6'} 1916 | hasBin: true 1917 | dev: true 1918 | 1919 | /kind-of/6.0.3: 1920 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} 1921 | engines: {node: '>=0.10.0'} 1922 | dev: true 1923 | 1924 | /loader-runner/4.3.0: 1925 | resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} 1926 | engines: {node: '>=6.11.5'} 1927 | dev: true 1928 | 1929 | /loader-utils/2.0.2: 1930 | resolution: {integrity: sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==} 1931 | engines: {node: '>=8.9.0'} 1932 | dependencies: 1933 | big.js: 5.2.2 1934 | emojis-list: 3.0.0 1935 | json5: 2.2.1 1936 | dev: true 1937 | 1938 | /locate-path/5.0.0: 1939 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 1940 | engines: {node: '>=8'} 1941 | dependencies: 1942 | p-locate: 4.1.0 1943 | dev: true 1944 | 1945 | /lodash.camelcase/4.3.0: 1946 | resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} 1947 | dev: false 1948 | 1949 | /lodash/4.17.21: 1950 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1951 | dev: true 1952 | 1953 | /loose-envify/1.4.0: 1954 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1955 | hasBin: true 1956 | dependencies: 1957 | js-tokens: 4.0.0 1958 | dev: false 1959 | 1960 | /lower-case/2.0.2: 1961 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} 1962 | dependencies: 1963 | tslib: 2.4.0 1964 | dev: true 1965 | 1966 | /lru-cache/6.0.0: 1967 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1968 | engines: {node: '>=10'} 1969 | dependencies: 1970 | yallist: 4.0.0 1971 | dev: true 1972 | 1973 | /md5/2.3.0: 1974 | resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} 1975 | dependencies: 1976 | charenc: 0.0.2 1977 | crypt: 0.0.2 1978 | is-buffer: 1.1.6 1979 | dev: false 1980 | 1981 | /media-typer/0.3.0: 1982 | resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} 1983 | engines: {node: '>= 0.6'} 1984 | dev: true 1985 | 1986 | /memfs/3.4.6: 1987 | resolution: {integrity: sha512-rH9mjopto6Wkr7RFuH9l9dk3qb2XGOcYKr7xMhaYqfzuJqOqhRrcFvfD7JMuPj6SLmPreh5+6eAuv36NFAU+Mw==} 1988 | engines: {node: '>= 4.0.0'} 1989 | dependencies: 1990 | fs-monkey: 1.0.3 1991 | dev: true 1992 | 1993 | /merge-descriptors/1.0.1: 1994 | resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=} 1995 | dev: true 1996 | 1997 | /merge-stream/2.0.0: 1998 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1999 | dev: true 2000 | 2001 | /methods/1.1.2: 2002 | resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} 2003 | engines: {node: '>= 0.6'} 2004 | dev: true 2005 | 2006 | /micromatch/4.0.5: 2007 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2008 | engines: {node: '>=8.6'} 2009 | dependencies: 2010 | braces: 3.0.2 2011 | picomatch: 2.3.1 2012 | dev: true 2013 | 2014 | /mime-db/1.52.0: 2015 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 2016 | engines: {node: '>= 0.6'} 2017 | dev: true 2018 | 2019 | /mime-types/2.1.35: 2020 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 2021 | engines: {node: '>= 0.6'} 2022 | dependencies: 2023 | mime-db: 1.52.0 2024 | dev: true 2025 | 2026 | /mime/1.6.0: 2027 | resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} 2028 | engines: {node: '>=4'} 2029 | hasBin: true 2030 | dev: true 2031 | 2032 | /mimic-fn/2.1.0: 2033 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 2034 | engines: {node: '>=6'} 2035 | dev: true 2036 | 2037 | /minimalistic-assert/1.0.1: 2038 | resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} 2039 | dev: true 2040 | 2041 | /minimatch/3.1.2: 2042 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2043 | dependencies: 2044 | brace-expansion: 1.1.11 2045 | 2046 | /minimist/1.2.6: 2047 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} 2048 | dev: false 2049 | 2050 | /minipass/2.9.0: 2051 | resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==} 2052 | dependencies: 2053 | safe-buffer: 5.2.1 2054 | yallist: 3.1.1 2055 | dev: false 2056 | 2057 | /minizlib/1.3.3: 2058 | resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==} 2059 | dependencies: 2060 | minipass: 2.9.0 2061 | dev: false 2062 | 2063 | /mkdirp/0.5.6: 2064 | resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} 2065 | hasBin: true 2066 | dependencies: 2067 | minimist: 1.2.6 2068 | dev: false 2069 | 2070 | /ms/2.0.0: 2071 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 2072 | dev: true 2073 | 2074 | /ms/2.1.2: 2075 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2076 | dev: true 2077 | 2078 | /ms/2.1.3: 2079 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 2080 | 2081 | /multicast-dns/7.2.5: 2082 | resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} 2083 | hasBin: true 2084 | dependencies: 2085 | dns-packet: 5.4.0 2086 | thunky: 1.1.0 2087 | dev: true 2088 | 2089 | /nan/2.16.0: 2090 | resolution: {integrity: sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==} 2091 | dev: false 2092 | 2093 | /nanoid/4.0.0: 2094 | resolution: {integrity: sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg==} 2095 | engines: {node: ^14 || ^16 || >=18} 2096 | hasBin: true 2097 | dev: false 2098 | 2099 | /needle/2.9.1: 2100 | resolution: {integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==} 2101 | engines: {node: '>= 4.4.x'} 2102 | hasBin: true 2103 | dependencies: 2104 | debug: 3.2.7 2105 | iconv-lite: 0.4.24 2106 | sax: 1.2.4 2107 | transitivePeerDependencies: 2108 | - supports-color 2109 | dev: false 2110 | 2111 | /negotiator/0.6.3: 2112 | resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 2113 | engines: {node: '>= 0.6'} 2114 | dev: true 2115 | 2116 | /neo-async/2.6.2: 2117 | resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} 2118 | dev: true 2119 | 2120 | /no-case/3.0.4: 2121 | resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} 2122 | dependencies: 2123 | lower-case: 2.0.2 2124 | tslib: 2.4.0 2125 | dev: true 2126 | 2127 | /node-forge/1.3.1: 2128 | resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} 2129 | engines: {node: '>= 6.13.0'} 2130 | dev: true 2131 | 2132 | /node-pre-gyp/0.11.0: 2133 | resolution: {integrity: sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==} 2134 | deprecated: 'Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future' 2135 | hasBin: true 2136 | dependencies: 2137 | detect-libc: 1.0.3 2138 | mkdirp: 0.5.6 2139 | needle: 2.9.1 2140 | nopt: 4.0.3 2141 | npm-packlist: 1.4.8 2142 | npmlog: 4.1.2 2143 | rc: 1.2.8 2144 | rimraf: 2.7.1 2145 | semver: 5.7.1 2146 | tar: 4.4.19 2147 | transitivePeerDependencies: 2148 | - supports-color 2149 | dev: false 2150 | 2151 | /node-releases/2.0.5: 2152 | resolution: {integrity: sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==} 2153 | dev: true 2154 | 2155 | /nopt/4.0.3: 2156 | resolution: {integrity: sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==} 2157 | hasBin: true 2158 | dependencies: 2159 | abbrev: 1.1.1 2160 | osenv: 0.1.5 2161 | dev: false 2162 | 2163 | /normalize-path/3.0.0: 2164 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2165 | engines: {node: '>=0.10.0'} 2166 | dev: true 2167 | 2168 | /npm-bundled/1.1.2: 2169 | resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} 2170 | dependencies: 2171 | npm-normalize-package-bin: 1.0.1 2172 | dev: false 2173 | 2174 | /npm-normalize-package-bin/1.0.1: 2175 | resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} 2176 | dev: false 2177 | 2178 | /npm-packlist/1.4.8: 2179 | resolution: {integrity: sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==} 2180 | dependencies: 2181 | ignore-walk: 3.0.4 2182 | npm-bundled: 1.1.2 2183 | npm-normalize-package-bin: 1.0.1 2184 | dev: false 2185 | 2186 | /npm-run-path/4.0.1: 2187 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 2188 | engines: {node: '>=8'} 2189 | dependencies: 2190 | path-key: 3.1.1 2191 | dev: true 2192 | 2193 | /npmlog/4.1.2: 2194 | resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==} 2195 | dependencies: 2196 | are-we-there-yet: 1.1.7 2197 | console-control-strings: 1.1.0 2198 | gauge: 2.7.4 2199 | set-blocking: 2.0.0 2200 | dev: false 2201 | 2202 | /nth-check/2.1.1: 2203 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 2204 | dependencies: 2205 | boolbase: 1.0.0 2206 | dev: true 2207 | 2208 | /number-is-nan/1.0.1: 2209 | resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} 2210 | engines: {node: '>=0.10.0'} 2211 | dev: false 2212 | 2213 | /object-assign/4.1.1: 2214 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 2215 | engines: {node: '>=0.10.0'} 2216 | dev: false 2217 | 2218 | /object-inspect/1.12.2: 2219 | resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} 2220 | dev: true 2221 | 2222 | /obuf/1.1.2: 2223 | resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} 2224 | dev: true 2225 | 2226 | /ohm-js/16.4.0: 2227 | resolution: {integrity: sha512-u1QI5h2w29I4838+/m32rzqfNNH1Qej9L6O1MTZZMx7bVOu09orc/TO0HRVeYh5jStieZ3INszM7oqbCdx2x7A==} 2228 | engines: {node: '>=0.12.1'} 2229 | dev: false 2230 | 2231 | /on-finished/2.4.1: 2232 | resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 2233 | engines: {node: '>= 0.8'} 2234 | dependencies: 2235 | ee-first: 1.1.1 2236 | dev: true 2237 | 2238 | /on-headers/1.0.2: 2239 | resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} 2240 | engines: {node: '>= 0.8'} 2241 | dev: true 2242 | 2243 | /once/1.4.0: 2244 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2245 | dependencies: 2246 | wrappy: 1.0.2 2247 | 2248 | /onetime/5.1.2: 2249 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 2250 | engines: {node: '>=6'} 2251 | dependencies: 2252 | mimic-fn: 2.1.0 2253 | dev: true 2254 | 2255 | /open/8.4.0: 2256 | resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} 2257 | engines: {node: '>=12'} 2258 | dependencies: 2259 | define-lazy-prop: 2.0.0 2260 | is-docker: 2.2.1 2261 | is-wsl: 2.2.0 2262 | dev: true 2263 | 2264 | /os-homedir/1.0.2: 2265 | resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} 2266 | engines: {node: '>=0.10.0'} 2267 | dev: false 2268 | 2269 | /os-tmpdir/1.0.2: 2270 | resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} 2271 | engines: {node: '>=0.10.0'} 2272 | dev: false 2273 | 2274 | /osenv/0.1.5: 2275 | resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} 2276 | dependencies: 2277 | os-homedir: 1.0.2 2278 | os-tmpdir: 1.0.2 2279 | dev: false 2280 | 2281 | /p-limit/2.3.0: 2282 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 2283 | engines: {node: '>=6'} 2284 | dependencies: 2285 | p-try: 2.2.0 2286 | dev: true 2287 | 2288 | /p-locate/4.1.0: 2289 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 2290 | engines: {node: '>=8'} 2291 | dependencies: 2292 | p-limit: 2.3.0 2293 | dev: true 2294 | 2295 | /p-retry/4.6.2: 2296 | resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} 2297 | engines: {node: '>=8'} 2298 | dependencies: 2299 | '@types/retry': 0.12.0 2300 | retry: 0.13.1 2301 | dev: true 2302 | 2303 | /p-try/2.2.0: 2304 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 2305 | engines: {node: '>=6'} 2306 | dev: true 2307 | 2308 | /param-case/3.0.4: 2309 | resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} 2310 | dependencies: 2311 | dot-case: 3.0.4 2312 | tslib: 2.4.0 2313 | dev: true 2314 | 2315 | /parseurl/1.3.3: 2316 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 2317 | engines: {node: '>= 0.8'} 2318 | dev: true 2319 | 2320 | /pascal-case/3.1.2: 2321 | resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} 2322 | dependencies: 2323 | no-case: 3.0.4 2324 | tslib: 2.4.0 2325 | dev: true 2326 | 2327 | /path-exists/4.0.0: 2328 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2329 | engines: {node: '>=8'} 2330 | dev: true 2331 | 2332 | /path-is-absolute/1.0.1: 2333 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2334 | engines: {node: '>=0.10.0'} 2335 | 2336 | /path-key/3.1.1: 2337 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2338 | engines: {node: '>=8'} 2339 | dev: true 2340 | 2341 | /path-parse/1.0.7: 2342 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2343 | dev: true 2344 | 2345 | /path-to-regexp/0.1.7: 2346 | resolution: {integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=} 2347 | dev: true 2348 | 2349 | /picocolors/1.0.0: 2350 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2351 | dev: true 2352 | 2353 | /picomatch/2.3.1: 2354 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2355 | engines: {node: '>=8.6'} 2356 | dev: true 2357 | 2358 | /pkg-dir/4.2.0: 2359 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 2360 | engines: {node: '>=8'} 2361 | dependencies: 2362 | find-up: 4.1.0 2363 | dev: true 2364 | 2365 | /prettier/2.7.1: 2366 | resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} 2367 | engines: {node: '>=10.13.0'} 2368 | hasBin: true 2369 | dev: false 2370 | 2371 | /pretty-error/4.0.0: 2372 | resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} 2373 | dependencies: 2374 | lodash: 4.17.21 2375 | renderkid: 3.0.0 2376 | dev: true 2377 | 2378 | /process-nextick-args/2.0.1: 2379 | resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} 2380 | 2381 | /promise/6.1.0: 2382 | resolution: {integrity: sha512-O+uwGKreKNKkshzZv2P7N64lk6EP17iXBn0PbUnNQhk+Q0AHLstiTrjkx3v5YBd3cxUe7Sq6KyRhl/A0xUjk7Q==} 2383 | dependencies: 2384 | asap: 1.0.0 2385 | dev: false 2386 | 2387 | /proxy-addr/2.0.7: 2388 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 2389 | engines: {node: '>= 0.10'} 2390 | dependencies: 2391 | forwarded: 0.2.0 2392 | ipaddr.js: 1.9.1 2393 | dev: true 2394 | 2395 | /punycode/2.1.1: 2396 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 2397 | engines: {node: '>=6'} 2398 | dev: true 2399 | 2400 | /qs/6.10.3: 2401 | resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==} 2402 | engines: {node: '>=0.6'} 2403 | dependencies: 2404 | side-channel: 1.0.4 2405 | dev: true 2406 | 2407 | /randombytes/2.1.0: 2408 | resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} 2409 | dependencies: 2410 | safe-buffer: 5.2.1 2411 | dev: true 2412 | 2413 | /range-parser/1.2.1: 2414 | resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 2415 | engines: {node: '>= 0.6'} 2416 | dev: true 2417 | 2418 | /raw-body/2.5.1: 2419 | resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} 2420 | engines: {node: '>= 0.8'} 2421 | dependencies: 2422 | bytes: 3.1.2 2423 | http-errors: 2.0.0 2424 | iconv-lite: 0.4.24 2425 | unpipe: 1.0.0 2426 | dev: true 2427 | 2428 | /raw-loader/4.0.2_webpack@5.73.0: 2429 | resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==} 2430 | engines: {node: '>= 10.13.0'} 2431 | peerDependencies: 2432 | webpack: ^4.0.0 || ^5.0.0 2433 | dependencies: 2434 | loader-utils: 2.0.2 2435 | schema-utils: 3.1.1 2436 | webpack: 5.73.0_webpack-cli@4.10.0 2437 | dev: true 2438 | 2439 | /rc/1.2.8: 2440 | resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} 2441 | hasBin: true 2442 | dependencies: 2443 | deep-extend: 0.6.0 2444 | ini: 1.3.8 2445 | minimist: 1.2.6 2446 | strip-json-comments: 2.0.1 2447 | dev: false 2448 | 2449 | /react-dom/18.2.0_react@18.2.0: 2450 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 2451 | peerDependencies: 2452 | react: ^18.2.0 2453 | dependencies: 2454 | loose-envify: 1.4.0 2455 | react: 18.2.0 2456 | scheduler: 0.23.0 2457 | dev: false 2458 | 2459 | /react/18.2.0: 2460 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 2461 | engines: {node: '>=0.10.0'} 2462 | dependencies: 2463 | loose-envify: 1.4.0 2464 | dev: false 2465 | 2466 | /readable-stream/2.3.7: 2467 | resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} 2468 | dependencies: 2469 | core-util-is: 1.0.3 2470 | inherits: 2.0.4 2471 | isarray: 1.0.0 2472 | process-nextick-args: 2.0.1 2473 | safe-buffer: 5.1.2 2474 | string_decoder: 1.1.1 2475 | util-deprecate: 1.0.2 2476 | 2477 | /readable-stream/3.6.0: 2478 | resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} 2479 | engines: {node: '>= 6'} 2480 | dependencies: 2481 | inherits: 2.0.4 2482 | string_decoder: 1.3.0 2483 | util-deprecate: 1.0.2 2484 | dev: true 2485 | 2486 | /readdirp/3.6.0: 2487 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2488 | engines: {node: '>=8.10.0'} 2489 | dependencies: 2490 | picomatch: 2.3.1 2491 | dev: true 2492 | 2493 | /rechoir/0.7.1: 2494 | resolution: {integrity: sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==} 2495 | engines: {node: '>= 0.10'} 2496 | dependencies: 2497 | resolve: 1.22.1 2498 | dev: true 2499 | 2500 | /reduce-flatten/2.0.0: 2501 | resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} 2502 | engines: {node: '>=6'} 2503 | dev: false 2504 | 2505 | /relateurl/0.2.7: 2506 | resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} 2507 | engines: {node: '>= 0.10'} 2508 | dev: true 2509 | 2510 | /renderkid/3.0.0: 2511 | resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} 2512 | dependencies: 2513 | css-select: 4.3.0 2514 | dom-converter: 0.2.0 2515 | htmlparser2: 6.1.0 2516 | lodash: 4.17.21 2517 | strip-ansi: 6.0.1 2518 | dev: true 2519 | 2520 | /require-from-string/2.0.2: 2521 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 2522 | engines: {node: '>=0.10.0'} 2523 | dev: true 2524 | 2525 | /requires-port/1.0.0: 2526 | resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} 2527 | dev: true 2528 | 2529 | /resolve-cwd/3.0.0: 2530 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} 2531 | engines: {node: '>=8'} 2532 | dependencies: 2533 | resolve-from: 5.0.0 2534 | dev: true 2535 | 2536 | /resolve-from/5.0.0: 2537 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 2538 | engines: {node: '>=8'} 2539 | dev: true 2540 | 2541 | /resolve-typescript-plugin/1.2.0_webpack@5.73.0: 2542 | resolution: {integrity: sha512-f0tu3fDdKcSmbgpLDNBKiMYPPG7D19tYCnph9B7GIlMMIWnbiLjAqqPXZVeO3POQSNF7ZYK4Ox+Gmvo116ERWQ==} 2543 | engines: {node: ^12 || ^14 || >=16} 2544 | peerDependencies: 2545 | webpack: ^4.0.0 || ^5.0.0 2546 | dependencies: 2547 | tslib: 2.3.1 2548 | webpack: 5.73.0_webpack-cli@4.10.0 2549 | dev: true 2550 | 2551 | /resolve/1.22.1: 2552 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 2553 | hasBin: true 2554 | dependencies: 2555 | is-core-module: 2.9.0 2556 | path-parse: 1.0.7 2557 | supports-preserve-symlinks-flag: 1.0.0 2558 | dev: true 2559 | 2560 | /retry/0.13.1: 2561 | resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} 2562 | engines: {node: '>= 4'} 2563 | dev: true 2564 | 2565 | /rimraf/2.7.1: 2566 | resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} 2567 | hasBin: true 2568 | dependencies: 2569 | glob: 7.2.3 2570 | dev: false 2571 | 2572 | /rimraf/3.0.2: 2573 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2574 | hasBin: true 2575 | dependencies: 2576 | glob: 7.2.3 2577 | dev: true 2578 | 2579 | /safe-buffer/5.1.2: 2580 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 2581 | 2582 | /safe-buffer/5.2.1: 2583 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 2584 | 2585 | /safer-buffer/2.1.2: 2586 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 2587 | 2588 | /sax/1.2.4: 2589 | resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} 2590 | dev: false 2591 | 2592 | /scheduler/0.23.0: 2593 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 2594 | dependencies: 2595 | loose-envify: 1.4.0 2596 | dev: false 2597 | 2598 | /schema-utils/3.1.1: 2599 | resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} 2600 | engines: {node: '>= 10.13.0'} 2601 | dependencies: 2602 | '@types/json-schema': 7.0.11 2603 | ajv: 6.12.6 2604 | ajv-keywords: 3.5.2_ajv@6.12.6 2605 | dev: true 2606 | 2607 | /schema-utils/4.0.0: 2608 | resolution: {integrity: sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==} 2609 | engines: {node: '>= 12.13.0'} 2610 | dependencies: 2611 | '@types/json-schema': 7.0.11 2612 | ajv: 8.11.0 2613 | ajv-formats: 2.1.1 2614 | ajv-keywords: 5.1.0_ajv@8.11.0 2615 | dev: true 2616 | 2617 | /select-hose/2.0.0: 2618 | resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} 2619 | dev: true 2620 | 2621 | /selfsigned/2.0.1: 2622 | resolution: {integrity: sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==} 2623 | engines: {node: '>=10'} 2624 | dependencies: 2625 | node-forge: 1.3.1 2626 | dev: true 2627 | 2628 | /semver/5.7.1: 2629 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} 2630 | hasBin: true 2631 | dev: false 2632 | 2633 | /semver/7.3.7: 2634 | resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} 2635 | engines: {node: '>=10'} 2636 | hasBin: true 2637 | dependencies: 2638 | lru-cache: 6.0.0 2639 | dev: true 2640 | 2641 | /send/0.18.0: 2642 | resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} 2643 | engines: {node: '>= 0.8.0'} 2644 | dependencies: 2645 | debug: 2.6.9 2646 | depd: 2.0.0 2647 | destroy: 1.2.0 2648 | encodeurl: 1.0.2 2649 | escape-html: 1.0.3 2650 | etag: 1.8.1 2651 | fresh: 0.5.2 2652 | http-errors: 2.0.0 2653 | mime: 1.6.0 2654 | ms: 2.1.3 2655 | on-finished: 2.4.1 2656 | range-parser: 1.2.1 2657 | statuses: 2.0.1 2658 | transitivePeerDependencies: 2659 | - supports-color 2660 | dev: true 2661 | 2662 | /serialize-javascript/6.0.0: 2663 | resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} 2664 | dependencies: 2665 | randombytes: 2.1.0 2666 | dev: true 2667 | 2668 | /serve-index/1.9.1: 2669 | resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} 2670 | engines: {node: '>= 0.8.0'} 2671 | dependencies: 2672 | accepts: 1.3.8 2673 | batch: 0.6.1 2674 | debug: 2.6.9 2675 | escape-html: 1.0.3 2676 | http-errors: 1.6.3 2677 | mime-types: 2.1.35 2678 | parseurl: 1.3.3 2679 | transitivePeerDependencies: 2680 | - supports-color 2681 | dev: true 2682 | 2683 | /serve-static/1.15.0: 2684 | resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} 2685 | engines: {node: '>= 0.8.0'} 2686 | dependencies: 2687 | encodeurl: 1.0.2 2688 | escape-html: 1.0.3 2689 | parseurl: 1.3.3 2690 | send: 0.18.0 2691 | transitivePeerDependencies: 2692 | - supports-color 2693 | dev: true 2694 | 2695 | /set-blocking/2.0.0: 2696 | resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} 2697 | dev: false 2698 | 2699 | /setprototypeof/1.1.0: 2700 | resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} 2701 | dev: true 2702 | 2703 | /setprototypeof/1.2.0: 2704 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 2705 | dev: true 2706 | 2707 | /shallow-clone/3.0.1: 2708 | resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} 2709 | engines: {node: '>=8'} 2710 | dependencies: 2711 | kind-of: 6.0.3 2712 | dev: true 2713 | 2714 | /shebang-command/2.0.0: 2715 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2716 | engines: {node: '>=8'} 2717 | dependencies: 2718 | shebang-regex: 3.0.0 2719 | dev: true 2720 | 2721 | /shebang-regex/3.0.0: 2722 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2723 | engines: {node: '>=8'} 2724 | dev: true 2725 | 2726 | /side-channel/1.0.4: 2727 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2728 | dependencies: 2729 | call-bind: 1.0.2 2730 | get-intrinsic: 1.1.2 2731 | object-inspect: 1.12.2 2732 | dev: true 2733 | 2734 | /signal-exit/3.0.7: 2735 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 2736 | 2737 | /sockjs/0.3.24: 2738 | resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} 2739 | dependencies: 2740 | faye-websocket: 0.11.4 2741 | uuid: 8.3.2 2742 | websocket-driver: 0.7.4 2743 | dev: true 2744 | 2745 | /source-map-support/0.5.21: 2746 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 2747 | dependencies: 2748 | buffer-from: 1.1.2 2749 | source-map: 0.6.1 2750 | dev: true 2751 | 2752 | /source-map/0.6.1: 2753 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2754 | engines: {node: '>=0.10.0'} 2755 | dev: true 2756 | 2757 | /spdy-transport/3.0.0: 2758 | resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} 2759 | dependencies: 2760 | debug: 4.3.4 2761 | detect-node: 2.1.0 2762 | hpack.js: 2.1.6 2763 | obuf: 1.1.2 2764 | readable-stream: 3.6.0 2765 | wbuf: 1.7.3 2766 | transitivePeerDependencies: 2767 | - supports-color 2768 | dev: true 2769 | 2770 | /spdy/4.0.2: 2771 | resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} 2772 | engines: {node: '>=6.0.0'} 2773 | dependencies: 2774 | debug: 4.3.4 2775 | handle-thing: 2.0.1 2776 | http-deceiver: 1.2.7 2777 | select-hose: 2.0.0 2778 | spdy-transport: 3.0.0 2779 | transitivePeerDependencies: 2780 | - supports-color 2781 | dev: true 2782 | 2783 | /sql-formatter/6.1.1: 2784 | resolution: {integrity: sha512-NiUP90vNb6NjQryWz0bPsvv4BTqe/wY75mRbh2E6M1kKZIoCKtueeKIDMQBB+RI8pjxVUQy7e35JUXQj6YYonQ==} 2785 | hasBin: true 2786 | dependencies: 2787 | argparse: 2.0.1 2788 | dev: false 2789 | 2790 | /sqlite3/4.2.0: 2791 | resolution: {integrity: sha512-roEOz41hxui2Q7uYnWsjMOTry6TcNUNmp8audCx18gF10P2NknwdpF+E+HKvz/F2NvPKGGBF4NGc+ZPQ+AABwg==} 2792 | requiresBuild: true 2793 | dependencies: 2794 | nan: 2.16.0 2795 | node-pre-gyp: 0.11.0 2796 | transitivePeerDependencies: 2797 | - supports-color 2798 | dev: false 2799 | 2800 | /statuses/1.5.0: 2801 | resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} 2802 | engines: {node: '>= 0.6'} 2803 | dev: true 2804 | 2805 | /statuses/2.0.1: 2806 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 2807 | engines: {node: '>= 0.8'} 2808 | dev: true 2809 | 2810 | /string-width/1.0.2: 2811 | resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} 2812 | engines: {node: '>=0.10.0'} 2813 | dependencies: 2814 | code-point-at: 1.1.0 2815 | is-fullwidth-code-point: 1.0.0 2816 | strip-ansi: 3.0.1 2817 | dev: false 2818 | 2819 | /string_decoder/1.1.1: 2820 | resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} 2821 | dependencies: 2822 | safe-buffer: 5.1.2 2823 | 2824 | /string_decoder/1.3.0: 2825 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 2826 | dependencies: 2827 | safe-buffer: 5.2.1 2828 | dev: true 2829 | 2830 | /strip-ansi/3.0.1: 2831 | resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} 2832 | engines: {node: '>=0.10.0'} 2833 | dependencies: 2834 | ansi-regex: 2.1.1 2835 | dev: false 2836 | 2837 | /strip-ansi/6.0.1: 2838 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2839 | engines: {node: '>=8'} 2840 | dependencies: 2841 | ansi-regex: 5.0.1 2842 | dev: true 2843 | 2844 | /strip-final-newline/2.0.0: 2845 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 2846 | engines: {node: '>=6'} 2847 | dev: true 2848 | 2849 | /strip-json-comments/2.0.1: 2850 | resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} 2851 | engines: {node: '>=0.10.0'} 2852 | dev: false 2853 | 2854 | /supports-color/5.5.0: 2855 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2856 | engines: {node: '>=4'} 2857 | dependencies: 2858 | has-flag: 3.0.0 2859 | dev: false 2860 | 2861 | /supports-color/7.2.0: 2862 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2863 | engines: {node: '>=8'} 2864 | dependencies: 2865 | has-flag: 4.0.0 2866 | dev: true 2867 | 2868 | /supports-color/8.1.1: 2869 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} 2870 | engines: {node: '>=10'} 2871 | dependencies: 2872 | has-flag: 4.0.0 2873 | dev: true 2874 | 2875 | /supports-preserve-symlinks-flag/1.0.0: 2876 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2877 | engines: {node: '>= 0.4'} 2878 | dev: true 2879 | 2880 | /suspend-react/0.0.8_react@18.2.0: 2881 | resolution: {integrity: sha512-ZC3r8Hu1y0dIThzsGw0RLZplnX9yXwfItcvaIzJc2VQVi8TGyGDlu92syMB5ulybfvGLHAI5Ghzlk23UBPF8xg==} 2882 | peerDependencies: 2883 | react: '>=17.0' 2884 | dependencies: 2885 | react: 18.2.0 2886 | dev: false 2887 | 2888 | /table-layout/1.0.2: 2889 | resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} 2890 | engines: {node: '>=8.0.0'} 2891 | dependencies: 2892 | array-back: 4.0.2 2893 | deep-extend: 0.6.0 2894 | typical: 5.2.0 2895 | wordwrapjs: 4.0.1 2896 | dev: false 2897 | 2898 | /tapable/2.2.1: 2899 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 2900 | engines: {node: '>=6'} 2901 | dev: true 2902 | 2903 | /tar/4.4.19: 2904 | resolution: {integrity: sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==} 2905 | engines: {node: '>=4.5'} 2906 | dependencies: 2907 | chownr: 1.1.4 2908 | fs-minipass: 1.2.7 2909 | minipass: 2.9.0 2910 | minizlib: 1.3.3 2911 | mkdirp: 0.5.6 2912 | safe-buffer: 5.2.1 2913 | yallist: 3.1.1 2914 | dev: false 2915 | 2916 | /terser-webpack-plugin/5.3.3_webpack@5.73.0: 2917 | resolution: {integrity: sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==} 2918 | engines: {node: '>= 10.13.0'} 2919 | peerDependencies: 2920 | '@swc/core': '*' 2921 | esbuild: '*' 2922 | uglify-js: '*' 2923 | webpack: ^5.1.0 2924 | peerDependenciesMeta: 2925 | '@swc/core': 2926 | optional: true 2927 | esbuild: 2928 | optional: true 2929 | uglify-js: 2930 | optional: true 2931 | dependencies: 2932 | '@jridgewell/trace-mapping': 0.3.13 2933 | jest-worker: 27.5.1 2934 | schema-utils: 3.1.1 2935 | serialize-javascript: 6.0.0 2936 | terser: 5.14.1 2937 | webpack: 5.73.0_webpack-cli@4.10.0 2938 | dev: true 2939 | 2940 | /terser/5.14.1: 2941 | resolution: {integrity: sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==} 2942 | engines: {node: '>=10'} 2943 | hasBin: true 2944 | dependencies: 2945 | '@jridgewell/source-map': 0.3.2 2946 | acorn: 8.7.1 2947 | commander: 2.20.3 2948 | source-map-support: 0.5.21 2949 | dev: true 2950 | 2951 | /then-queue/1.3.0: 2952 | resolution: {integrity: sha512-5p1q2me8gQFl+GBHoFh0M8Y56XUV0Xl44f71X4HAzCZZI92V1BiBhYDAD4qudC04ZxYoaYCFjOrRoPkO/qzEng==} 2953 | dependencies: 2954 | promise: 6.1.0 2955 | dev: false 2956 | 2957 | /thunky/1.1.0: 2958 | resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} 2959 | dev: true 2960 | 2961 | /to-regex-range/5.0.1: 2962 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2963 | engines: {node: '>=8.0'} 2964 | dependencies: 2965 | is-number: 7.0.0 2966 | dev: true 2967 | 2968 | /toidentifier/1.0.1: 2969 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 2970 | engines: {node: '>=0.6'} 2971 | dev: true 2972 | 2973 | /ts-loader/9.3.0_3o2jfq6vfqxns3sz6wn2nnc3ei: 2974 | resolution: {integrity: sha512-2kLLAdAD+FCKijvGKi9sS0OzoqxLCF3CxHpok7rVgCZ5UldRzH0TkbwG9XECKjBzHsAewntC5oDaI/FwKzEUog==} 2975 | engines: {node: '>=12.0.0'} 2976 | peerDependencies: 2977 | typescript: '*' 2978 | webpack: ^5.0.0 2979 | dependencies: 2980 | chalk: 4.1.2 2981 | enhanced-resolve: 5.9.3 2982 | micromatch: 4.0.5 2983 | semver: 7.3.7 2984 | typescript: 4.7.4 2985 | webpack: 5.73.0_webpack-cli@4.10.0 2986 | dev: true 2987 | 2988 | /tslib/2.3.1: 2989 | resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} 2990 | dev: true 2991 | 2992 | /tslib/2.4.0: 2993 | resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} 2994 | 2995 | /type-is/1.6.18: 2996 | resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} 2997 | engines: {node: '>= 0.6'} 2998 | dependencies: 2999 | media-typer: 0.3.0 3000 | mime-types: 2.1.35 3001 | dev: true 3002 | 3003 | /typescript/4.7.4: 3004 | resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} 3005 | engines: {node: '>=4.2.0'} 3006 | hasBin: true 3007 | 3008 | /typical/4.0.0: 3009 | resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} 3010 | engines: {node: '>=8'} 3011 | dev: false 3012 | 3013 | /typical/5.2.0: 3014 | resolution: {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==} 3015 | engines: {node: '>=8'} 3016 | dev: false 3017 | 3018 | /unpipe/1.0.0: 3019 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 3020 | engines: {node: '>= 0.8'} 3021 | dev: true 3022 | 3023 | /uri-js/4.4.1: 3024 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3025 | dependencies: 3026 | punycode: 2.1.1 3027 | dev: true 3028 | 3029 | /util-deprecate/1.0.2: 3030 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 3031 | 3032 | /utila/0.4.0: 3033 | resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} 3034 | dev: true 3035 | 3036 | /utils-merge/1.0.1: 3037 | resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} 3038 | engines: {node: '>= 0.4.0'} 3039 | dev: true 3040 | 3041 | /uuid/8.3.2: 3042 | resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} 3043 | hasBin: true 3044 | dev: true 3045 | 3046 | /vary/1.1.2: 3047 | resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 3048 | engines: {node: '>= 0.8'} 3049 | dev: true 3050 | 3051 | /watchpack/2.4.0: 3052 | resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} 3053 | engines: {node: '>=10.13.0'} 3054 | dependencies: 3055 | glob-to-regexp: 0.4.1 3056 | graceful-fs: 4.2.10 3057 | dev: true 3058 | 3059 | /wbuf/1.7.3: 3060 | resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} 3061 | dependencies: 3062 | minimalistic-assert: 1.0.1 3063 | dev: true 3064 | 3065 | /webpack-cli/4.10.0_hnfkmnck6ti4dm6ulhhz44v2ju: 3066 | resolution: {integrity: sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==} 3067 | engines: {node: '>=10.13.0'} 3068 | hasBin: true 3069 | peerDependencies: 3070 | '@webpack-cli/generators': '*' 3071 | '@webpack-cli/migrate': '*' 3072 | webpack: 4.x.x || 5.x.x 3073 | webpack-bundle-analyzer: '*' 3074 | webpack-dev-server: '*' 3075 | peerDependenciesMeta: 3076 | '@webpack-cli/generators': 3077 | optional: true 3078 | '@webpack-cli/migrate': 3079 | optional: true 3080 | webpack-bundle-analyzer: 3081 | optional: true 3082 | webpack-dev-server: 3083 | optional: true 3084 | dependencies: 3085 | '@discoveryjs/json-ext': 0.5.7 3086 | '@webpack-cli/configtest': 1.2.0_77l47gmqkrqiei5z7sbwz5iaj4 3087 | '@webpack-cli/info': 1.5.0_webpack-cli@4.10.0 3088 | '@webpack-cli/serve': 1.7.0_b6kp5g2s4uywsci7bb7pbu5to4 3089 | colorette: 2.0.19 3090 | commander: 7.2.0 3091 | cross-spawn: 7.0.3 3092 | fastest-levenshtein: 1.0.12 3093 | import-local: 3.1.0 3094 | interpret: 2.2.0 3095 | rechoir: 0.7.1 3096 | webpack: 5.73.0_webpack-cli@4.10.0 3097 | webpack-dev-server: 4.9.2_77l47gmqkrqiei5z7sbwz5iaj4 3098 | webpack-merge: 5.8.0 3099 | dev: true 3100 | 3101 | /webpack-dev-middleware/5.3.3_webpack@5.73.0: 3102 | resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} 3103 | engines: {node: '>= 12.13.0'} 3104 | peerDependencies: 3105 | webpack: ^4.0.0 || ^5.0.0 3106 | dependencies: 3107 | colorette: 2.0.19 3108 | memfs: 3.4.6 3109 | mime-types: 2.1.35 3110 | range-parser: 1.2.1 3111 | schema-utils: 4.0.0 3112 | webpack: 5.73.0_webpack-cli@4.10.0 3113 | dev: true 3114 | 3115 | /webpack-dev-server/4.9.2_77l47gmqkrqiei5z7sbwz5iaj4: 3116 | resolution: {integrity: sha512-H95Ns95dP24ZsEzO6G9iT+PNw4Q7ltll1GfJHV4fKphuHWgKFzGHWi4alTlTnpk1SPPk41X+l2RB7rLfIhnB9Q==} 3117 | engines: {node: '>= 12.13.0'} 3118 | hasBin: true 3119 | peerDependencies: 3120 | webpack: ^4.37.0 || ^5.0.0 3121 | webpack-cli: '*' 3122 | peerDependenciesMeta: 3123 | webpack-cli: 3124 | optional: true 3125 | dependencies: 3126 | '@types/bonjour': 3.5.10 3127 | '@types/connect-history-api-fallback': 1.3.5 3128 | '@types/express': 4.17.13 3129 | '@types/serve-index': 1.9.1 3130 | '@types/serve-static': 1.13.10 3131 | '@types/sockjs': 0.3.33 3132 | '@types/ws': 8.5.3 3133 | ansi-html-community: 0.0.8 3134 | bonjour-service: 1.0.13 3135 | chokidar: 3.5.3 3136 | colorette: 2.0.19 3137 | compression: 1.7.4 3138 | connect-history-api-fallback: 1.6.0 3139 | default-gateway: 6.0.3 3140 | express: 4.18.1 3141 | graceful-fs: 4.2.10 3142 | html-entities: 2.3.3 3143 | http-proxy-middleware: 2.0.6_@types+express@4.17.13 3144 | ipaddr.js: 2.0.1 3145 | open: 8.4.0 3146 | p-retry: 4.6.2 3147 | rimraf: 3.0.2 3148 | schema-utils: 4.0.0 3149 | selfsigned: 2.0.1 3150 | serve-index: 1.9.1 3151 | sockjs: 0.3.24 3152 | spdy: 4.0.2 3153 | webpack: 5.73.0_webpack-cli@4.10.0 3154 | webpack-cli: 4.10.0_hnfkmnck6ti4dm6ulhhz44v2ju 3155 | webpack-dev-middleware: 5.3.3_webpack@5.73.0 3156 | ws: 8.8.0 3157 | transitivePeerDependencies: 3158 | - bufferutil 3159 | - debug 3160 | - supports-color 3161 | - utf-8-validate 3162 | dev: true 3163 | 3164 | /webpack-merge/5.8.0: 3165 | resolution: {integrity: sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==} 3166 | engines: {node: '>=10.0.0'} 3167 | dependencies: 3168 | clone-deep: 4.0.1 3169 | wildcard: 2.0.0 3170 | dev: true 3171 | 3172 | /webpack-sources/3.2.3: 3173 | resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} 3174 | engines: {node: '>=10.13.0'} 3175 | dev: true 3176 | 3177 | /webpack/5.73.0_webpack-cli@4.10.0: 3178 | resolution: {integrity: sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==} 3179 | engines: {node: '>=10.13.0'} 3180 | hasBin: true 3181 | peerDependencies: 3182 | webpack-cli: '*' 3183 | peerDependenciesMeta: 3184 | webpack-cli: 3185 | optional: true 3186 | dependencies: 3187 | '@types/eslint-scope': 3.7.3 3188 | '@types/estree': 0.0.51 3189 | '@webassemblyjs/ast': 1.11.1 3190 | '@webassemblyjs/wasm-edit': 1.11.1 3191 | '@webassemblyjs/wasm-parser': 1.11.1 3192 | acorn: 8.7.1 3193 | acorn-import-assertions: 1.8.0_acorn@8.7.1 3194 | browserslist: 4.20.4 3195 | chrome-trace-event: 1.0.3 3196 | enhanced-resolve: 5.9.3 3197 | es-module-lexer: 0.9.3 3198 | eslint-scope: 5.1.1 3199 | events: 3.3.0 3200 | glob-to-regexp: 0.4.1 3201 | graceful-fs: 4.2.10 3202 | json-parse-even-better-errors: 2.3.1 3203 | loader-runner: 4.3.0 3204 | mime-types: 2.1.35 3205 | neo-async: 2.6.2 3206 | schema-utils: 3.1.1 3207 | tapable: 2.2.1 3208 | terser-webpack-plugin: 5.3.3_webpack@5.73.0 3209 | watchpack: 2.4.0 3210 | webpack-cli: 4.10.0_hnfkmnck6ti4dm6ulhhz44v2ju 3211 | webpack-sources: 3.2.3 3212 | transitivePeerDependencies: 3213 | - '@swc/core' 3214 | - esbuild 3215 | - uglify-js 3216 | dev: true 3217 | 3218 | /websocket-driver/0.7.4: 3219 | resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} 3220 | engines: {node: '>=0.8.0'} 3221 | dependencies: 3222 | http-parser-js: 0.5.6 3223 | safe-buffer: 5.2.1 3224 | websocket-extensions: 0.1.4 3225 | dev: true 3226 | 3227 | /websocket-extensions/0.1.4: 3228 | resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} 3229 | engines: {node: '>=0.8.0'} 3230 | dev: true 3231 | 3232 | /which/2.0.2: 3233 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3234 | engines: {node: '>= 8'} 3235 | hasBin: true 3236 | dependencies: 3237 | isexe: 2.0.0 3238 | dev: true 3239 | 3240 | /wide-align/1.1.5: 3241 | resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} 3242 | dependencies: 3243 | string-width: 1.0.2 3244 | dev: false 3245 | 3246 | /wildcard/2.0.0: 3247 | resolution: {integrity: sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==} 3248 | dev: true 3249 | 3250 | /wordwrapjs/4.0.1: 3251 | resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} 3252 | engines: {node: '>=8.0.0'} 3253 | dependencies: 3254 | reduce-flatten: 2.0.0 3255 | typical: 5.2.0 3256 | dev: false 3257 | 3258 | /wrappy/1.0.2: 3259 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 3260 | 3261 | /ws/8.8.0: 3262 | resolution: {integrity: sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==} 3263 | engines: {node: '>=10.0.0'} 3264 | peerDependencies: 3265 | bufferutil: ^4.0.1 3266 | utf-8-validate: ^5.0.2 3267 | peerDependenciesMeta: 3268 | bufferutil: 3269 | optional: true 3270 | utf-8-validate: 3271 | optional: true 3272 | dev: true 3273 | 3274 | /yallist/3.1.1: 3275 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 3276 | dev: false 3277 | 3278 | /yallist/4.0.0: 3279 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3280 | dev: true 3281 | 3282 | github.com/rhashimoto/wa-sqlite/5fdc80ff1c153aeb0dab65a5e23ca22938c827a3: 3283 | resolution: {tarball: https://codeload.github.com/rhashimoto/wa-sqlite/tar.gz/5fdc80ff1c153aeb0dab65a5e23ca22938c827a3} 3284 | name: wa-sqlite 3285 | version: 0.8.2 3286 | dev: false 3287 | -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import Todo from "./domain/Todo.js"; 2 | import * as React from "react"; 3 | import { useState, useCallback, memo } from "react"; 4 | import { useBind, useQuery } from "@aphro/react"; 5 | import { commit, P, UpdateType, sid } from "@aphro/runtime-ts"; 6 | import TodoList, { Data } from "./domain/TodoList.js"; 7 | 8 | type Filter = Data["filter"]; 9 | 10 | function Header({ todoList }: { todoList: TodoList }) { 11 | const [newText, setNewText] = useState(""); 12 | return ( 13 |
14 |

todos

15 | setNewText(e.target.value)} 22 | onKeyUp={(e) => { 23 | const target = e.target as HTMLInputElement; 24 | if (e.key === "Enter" && target.value.trim() !== "") { 25 | Todo.create(todoList.ctx, { 26 | id: sid("aaaa"), 27 | text: target.value, 28 | listId: todoList.id, 29 | completed: false, 30 | }).save(); 31 | setNewText(""); 32 | } 33 | }} 34 | /> 35 |
36 | ); 37 | } 38 | 39 | const TodoView = memo( 40 | ({ 41 | todo, 42 | editing, 43 | startEditing, 44 | saveTodo, 45 | }: { 46 | key?: any; 47 | todo: Todo; 48 | editing: boolean; 49 | startEditing: (t: Todo) => void; 50 | saveTodo: (todo: Todo, text: string) => void; 51 | }) => { 52 | let body; 53 | 54 | const [text, setText] = useState(todo.text); 55 | useBind(todo, ["text", "completed"]); 56 | const deleteTodo = () => todo.delete().save(); 57 | const toggleTodo = () => todo.update({ completed: !todo.completed }).save(); 58 | 59 | if (editing) { 60 | body = ( 61 | saveTodo(todo, text)} 67 | onKeyUp={(e) => e.key === "Enter" && saveTodo(todo, text)} 68 | onChange={(e) => setText(e.target.value)} 69 | /> 70 | ); 71 | } else { 72 | body = ( 73 |
74 | 80 | 81 |
83 | ); 84 | } 85 | return ( 86 |
  • 91 | {body} 92 |
  • 93 | ); 94 | } 95 | ); 96 | 97 | function Footer({ 98 | remaining, 99 | todos, 100 | clearCompleted, 101 | todoList, 102 | }: { 103 | remaining: number; 104 | todos: Todo[]; 105 | clearCompleted: () => void; 106 | todoList: TodoList; 107 | }) { 108 | let clearCompletedButton; 109 | if (remaining !== todos.length) { 110 | clearCompletedButton = ( 111 | 114 | ); 115 | } 116 | 117 | const updateFilter = (filter: Filter) => todoList.update({ filter }).save(); 118 | 119 | return ( 120 | 154 | ); 155 | } 156 | 157 | export default function App({ list }: { list: TodoList }) { 158 | const clearCompleted = () => 159 | commit( 160 | list.ctx, 161 | completeTodos.map((t) => t.delete()) 162 | ); 163 | const startEditing = useCallback( 164 | (todo: Todo) => list.update({ editing: todo.id }).save(), 165 | [list] 166 | ); 167 | const saveTodo = useCallback( 168 | (todo: Todo, text: string) => { 169 | commit( 170 | list.ctx, 171 | todo.update({ text: text }), 172 | list.update({ editing: null }) 173 | ); 174 | }, 175 | [list] 176 | ); 177 | const toggleAll = () => { 178 | if (remaining === 0) { 179 | // uncomplete all 180 | commit( 181 | list.ctx, 182 | completeTodos.map((t) => t.update({ completed: false })) 183 | ); 184 | } else { 185 | // complete all 186 | commit( 187 | list.ctx, 188 | activeTodos.map((t) => t.update({ completed: true })) 189 | ); 190 | } 191 | }; 192 | let toggleAllCheck; 193 | 194 | useBind(list, ["filter", "editing"]); 195 | const activeTodos = useQuery(() => 196 | list.queryTodos().whereCompleted(P.equals(false)) 197 | ).data; 198 | const completeTodos = useQuery(() => 199 | list.queryTodos().whereCompleted(P.equals(true)) 200 | ).data; 201 | const allTodos = useQuery(() => list.queryTodos(), [], { 202 | on: UpdateType.CREATE_OR_DELETE, 203 | }).data; 204 | 205 | const remaining = activeTodos.length; 206 | let todos = 207 | list.filter === "active" 208 | ? activeTodos 209 | : list.filter === "completed" 210 | ? completeTodos 211 | : allTodos; 212 | 213 | if (allTodos.length) { 214 | toggleAllCheck = ( 215 | <> 216 | 223 | 224 | 225 | ); 226 | } 227 | 228 | return ( 229 |
    230 |
    231 |
    0 ? {} : { display: "none" }} 234 | > 235 | {toggleAllCheck} 236 |
      237 | {todos.map((t) => ( 238 | 245 | ))} 246 |
    247 |
    253 |
    254 |
    255 | ); 256 | } 257 | -------------------------------------------------------------------------------- /src/domain.aphro: -------------------------------------------------------------------------------- 1 | engine: sqlite 2 | db: todomvc 3 | 4 | Todo as Node { 5 | 1 id: ID 6 | 2 listId: ID 7 | 3 text: string 8 | 4 completed: bool 9 | } 10 | 11 | TodoList as Node { 12 | 1 id: ID 13 | 2 filter: Enumeration 14 | 3 editing: ID | null 15 | } & OutboundEdges { 16 | todos: Edge 17 | } -------------------------------------------------------------------------------- /src/domain/Todo.ts: -------------------------------------------------------------------------------- 1 | import TodoBase from "./generated/TodoBase.js"; 2 | export { Data } from "./generated/TodoBase.js"; 3 | 4 | export default class Todo extends TodoBase { 5 | // insert any manual method you may have here 6 | } 7 | -------------------------------------------------------------------------------- /src/domain/TodoList.ts: -------------------------------------------------------------------------------- 1 | import TodoListBase from "./generated/TodoListBase.js"; 2 | export { Data } from "./generated/TodoListBase.js"; 3 | 4 | export default class TodoList extends TodoListBase { 5 | // insert any manual method you may have here 6 | } 7 | -------------------------------------------------------------------------------- /src/domain/generated/Todo.sqlite.sql: -------------------------------------------------------------------------------- 1 | -- SIGNED-SOURCE: <05c4d9565ec657beb4af11557ef31bd4> 2 | -- STATEMENT 3 | CREATE TABLE 4 | "todo" ( 5 | "id" 6 | /* n=1 */ 7 | , 8 | "listId" 9 | /* n=2 */ 10 | , 11 | "text" 12 | /* n=3 */ 13 | , 14 | "completed" 15 | /* n=4 */ 16 | , 17 | PRIMARY KEY ("id") 18 | ); -------------------------------------------------------------------------------- /src/domain/generated/TodoBase.ts: -------------------------------------------------------------------------------- 1 | // SIGNED-SOURCE: <6ca69fc65a5d5bc158e4a26e2056b046> 2 | /** 3 | * AUTO-GENERATED FILE 4 | * Do not modify. Update your schema and re-generate for changes. 5 | */ 6 | import Todo from "../Todo.js"; 7 | import { default as s } from "./TodoSpec.js"; 8 | import { P } from "@aphro/runtime-ts"; 9 | import { UpdateMutationBuilder } from "@aphro/runtime-ts"; 10 | import { CreateMutationBuilder } from "@aphro/runtime-ts"; 11 | import { DeleteMutationBuilder } from "@aphro/runtime-ts"; 12 | import { makeSavable } from "@aphro/runtime-ts"; 13 | import { modelGenMemo } from "@aphro/runtime-ts"; 14 | import { Node } from "@aphro/runtime-ts"; 15 | import { NodeSpecWithCreate } from "@aphro/runtime-ts"; 16 | import { SID_of } from "@aphro/runtime-ts"; 17 | import TodoQuery from "./TodoQuery.js"; 18 | import { Context } from "@aphro/runtime-ts"; 19 | import TodoList from "../TodoList.js"; 20 | 21 | export type Data = { 22 | id: SID_of; 23 | listId: SID_of; 24 | text: string; 25 | completed: boolean; 26 | }; 27 | 28 | // @Sealed(Todo) 29 | export default abstract class TodoBase extends Node { 30 | readonly spec = s as unknown as NodeSpecWithCreate; 31 | 32 | get id(): SID_of { 33 | return this.data.id as unknown as SID_of; 34 | } 35 | 36 | get listId(): SID_of { 37 | return this.data.listId; 38 | } 39 | 40 | get text(): string { 41 | return this.data.text; 42 | } 43 | 44 | get completed(): boolean { 45 | return this.data.completed; 46 | } 47 | 48 | static queryAll(ctx: Context): TodoQuery { 49 | return TodoQuery.create(ctx); 50 | } 51 | 52 | static genx = modelGenMemo( 53 | "todomvc", 54 | "todo", 55 | (ctx: Context, id: SID_of): Promise => 56 | this.queryAll(ctx).whereId(P.equals(id)).genxOnlyValue() 57 | ); 58 | 59 | static gen = modelGenMemo( 60 | "todomvc", 61 | "todo", 62 | // @ts-ignore #43 63 | (ctx: Context, id: SID_of): Promise => 64 | this.queryAll(ctx).whereId(P.equals(id)).genOnlyValue() 65 | ); 66 | 67 | update(data: Partial) { 68 | return makeSavable( 69 | this.ctx, 70 | new UpdateMutationBuilder(this.ctx, this.spec, this) 71 | .set(data) 72 | .toChangesets()[0] 73 | ); 74 | } 75 | 76 | static create(ctx: Context, data: Partial) { 77 | return makeSavable( 78 | ctx, 79 | new CreateMutationBuilder(ctx, s).set(data).toChangesets()[0] 80 | ); 81 | } 82 | 83 | delete() { 84 | return makeSavable( 85 | this.ctx, 86 | new DeleteMutationBuilder(this.ctx, this.spec, this).toChangesets()[0] 87 | ); 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /src/domain/generated/TodoList.sqlite.sql: -------------------------------------------------------------------------------- 1 | -- SIGNED-SOURCE: <7048e89aae20f31a325983182d690969> 2 | -- STATEMENT 3 | CREATE TABLE 4 | "todolist" ( 5 | "id" 6 | /* n=1 */ 7 | , 8 | "filter" 9 | /* n=2 */ 10 | , 11 | "editing" 12 | /* n=3 */ 13 | , 14 | PRIMARY KEY ("id") 15 | ); -------------------------------------------------------------------------------- /src/domain/generated/TodoListBase.ts: -------------------------------------------------------------------------------- 1 | // SIGNED-SOURCE: <2eeeabf58f0df27ad78fa7a0fc9163f0> 2 | /** 3 | * AUTO-GENERATED FILE 4 | * Do not modify. Update your schema and re-generate for changes. 5 | */ 6 | import TodoList from "../TodoList.js"; 7 | import { default as s } from "./TodoListSpec.js"; 8 | import { P } from "@aphro/runtime-ts"; 9 | import { UpdateMutationBuilder } from "@aphro/runtime-ts"; 10 | import { CreateMutationBuilder } from "@aphro/runtime-ts"; 11 | import { DeleteMutationBuilder } from "@aphro/runtime-ts"; 12 | import { makeSavable } from "@aphro/runtime-ts"; 13 | import { modelGenMemo } from "@aphro/runtime-ts"; 14 | import { Node } from "@aphro/runtime-ts"; 15 | import { NodeSpecWithCreate } from "@aphro/runtime-ts"; 16 | import { SID_of } from "@aphro/runtime-ts"; 17 | import TodoListQuery from "./TodoListQuery.js"; 18 | import { Context } from "@aphro/runtime-ts"; 19 | import TodoQuery from "./TodoQuery.js"; 20 | import Todo from "../Todo.js"; 21 | 22 | export type Data = { 23 | id: SID_of; 24 | filter: "all" | "active" | "completed"; 25 | editing: SID_of | null; 26 | }; 27 | 28 | // @Sealed(TodoList) 29 | export default abstract class TodoListBase extends Node { 30 | readonly spec = s as unknown as NodeSpecWithCreate; 31 | 32 | get id(): SID_of { 33 | return this.data.id as unknown as SID_of; 34 | } 35 | 36 | get filter(): "all" | "active" | "completed" { 37 | return this.data.filter; 38 | } 39 | 40 | get editing(): SID_of | null { 41 | return this.data.editing; 42 | } 43 | 44 | queryTodos(): TodoQuery { 45 | return TodoQuery.create(this.ctx).whereListId(P.equals(this.id as any)); 46 | } 47 | 48 | static queryAll(ctx: Context): TodoListQuery { 49 | return TodoListQuery.create(ctx); 50 | } 51 | 52 | static genx = modelGenMemo( 53 | "todomvc", 54 | "todolist", 55 | (ctx: Context, id: SID_of): Promise => 56 | this.queryAll(ctx).whereId(P.equals(id)).genxOnlyValue() 57 | ); 58 | 59 | static gen = modelGenMemo( 60 | "todomvc", 61 | "todolist", 62 | // @ts-ignore #43 63 | (ctx: Context, id: SID_of): Promise => 64 | this.queryAll(ctx).whereId(P.equals(id)).genOnlyValue() 65 | ); 66 | 67 | update(data: Partial) { 68 | return makeSavable( 69 | this.ctx, 70 | new UpdateMutationBuilder(this.ctx, this.spec, this) 71 | .set(data) 72 | .toChangesets()[0] 73 | ); 74 | } 75 | 76 | static create(ctx: Context, data: Partial) { 77 | return makeSavable( 78 | ctx, 79 | new CreateMutationBuilder(ctx, s).set(data).toChangesets()[0] 80 | ); 81 | } 82 | 83 | delete() { 84 | return makeSavable( 85 | this.ctx, 86 | new DeleteMutationBuilder(this.ctx, this.spec, this).toChangesets()[0] 87 | ); 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /src/domain/generated/TodoListQuery.ts: -------------------------------------------------------------------------------- 1 | // SIGNED-SOURCE: <9d0961e16b687321e8111ffbab374128> 2 | /** 3 | * AUTO-GENERATED FILE 4 | * Do not modify. Update your schema and re-generate for changes. 5 | */ 6 | import { Context } from "@aphro/runtime-ts"; 7 | import { DerivedQuery } from "@aphro/runtime-ts"; 8 | import { QueryFactory } from "@aphro/runtime-ts"; 9 | import { modelLoad } from "@aphro/runtime-ts"; 10 | import { filter } from "@aphro/runtime-ts"; 11 | import { Predicate } from "@aphro/runtime-ts"; 12 | import { take } from "@aphro/runtime-ts"; 13 | import { orderBy } from "@aphro/runtime-ts"; 14 | import { P } from "@aphro/runtime-ts"; 15 | import { ModelFieldGetter } from "@aphro/runtime-ts"; 16 | import { Expression } from "@aphro/runtime-ts"; 17 | import { EmptyQuery } from "@aphro/runtime-ts"; 18 | import { SID_of } from "@aphro/runtime-ts"; 19 | import TodoList from "../TodoList.js"; 20 | import { Data } from "./TodoListBase.js"; 21 | import TodoListSpec from "./TodoListSpec.js"; 22 | import Todo from "../Todo.js"; 23 | import TodoSpec from "./TodoSpec.js"; 24 | import TodoQuery from "./TodoQuery.js"; 25 | 26 | export default class TodoListQuery extends DerivedQuery { 27 | static create(ctx: Context) { 28 | return new TodoListQuery( 29 | ctx, 30 | QueryFactory.createSourceQueryFor(ctx, TodoListSpec), 31 | modelLoad(ctx, TodoListSpec.createFrom) 32 | ); 33 | } 34 | 35 | static empty(ctx: Context) { 36 | return new TodoListQuery(ctx, new EmptyQuery(ctx)); 37 | } 38 | 39 | protected derive(expression: Expression): TodoListQuery { 40 | return new TodoListQuery(this.ctx, this, expression); 41 | } 42 | 43 | static fromId(ctx: Context, id: SID_of) { 44 | return this.create(ctx).whereId(P.equals(id)); 45 | } 46 | 47 | whereId(p: Predicate) { 48 | return this.derive( 49 | // @ts-ignore #43 50 | filter(new ModelFieldGetter<"id", Data, TodoList>("id"), p) 51 | ); 52 | } 53 | 54 | whereFilter(p: Predicate) { 55 | return this.derive( 56 | // @ts-ignore #43 57 | filter(new ModelFieldGetter<"filter", Data, TodoList>("filter"), p) 58 | ); 59 | } 60 | 61 | whereEditing(p: Predicate) { 62 | return this.derive( 63 | // @ts-ignore #43 64 | filter(new ModelFieldGetter<"editing", Data, TodoList>("editing"), p) 65 | ); 66 | } 67 | queryTodos(): TodoQuery { 68 | return new TodoQuery( 69 | this.ctx, 70 | QueryFactory.createHopQueryFor( 71 | this.ctx, 72 | this, 73 | TodoListSpec.outboundEdges.todos 74 | ), 75 | modelLoad(this.ctx, TodoSpec.createFrom) 76 | ); 77 | } 78 | 79 | take(n: number) { 80 | return new TodoListQuery(this.ctx, this, take(n)); 81 | } 82 | 83 | orderById(direction: "asc" | "desc" = "asc") { 84 | return this.derive( 85 | orderBy(new ModelFieldGetter<"id", Data, TodoList>("id"), direction) 86 | ); 87 | } 88 | 89 | orderByFilter(direction: "asc" | "desc" = "asc") { 90 | return this.derive( 91 | orderBy( 92 | new ModelFieldGetter<"filter", Data, TodoList>("filter"), 93 | direction 94 | ) 95 | ); 96 | } 97 | 98 | orderByEditing(direction: "asc" | "desc" = "asc") { 99 | return this.derive( 100 | orderBy( 101 | new ModelFieldGetter<"editing", Data, TodoList>("editing"), 102 | direction 103 | ) 104 | ); 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /src/domain/generated/TodoListSpec.ts: -------------------------------------------------------------------------------- 1 | // SIGNED-SOURCE: <787b1a69dcc3e0b185d6c3554f27826a> 2 | /** 3 | * AUTO-GENERATED FILE 4 | * Do not modify. Update your schema and re-generate for changes. 5 | */ 6 | import { Context } from "@aphro/runtime-ts"; 7 | import { decodeModelData } from "@aphro/runtime-ts"; 8 | import { encodeModelData } from "@aphro/runtime-ts"; 9 | import { SID_of } from "@aphro/runtime-ts"; 10 | import { NodeSpecWithCreate } from "@aphro/runtime-ts"; 11 | import { default as TodoSpec } from "./TodoSpec.js"; 12 | import TodoList from "../TodoList.js"; 13 | import { Data } from "./TodoListBase.js"; 14 | 15 | const fields = { 16 | id: { 17 | encoding: "none", 18 | }, 19 | filter: { 20 | encoding: "none", 21 | }, 22 | editing: { 23 | encoding: "none", 24 | }, 25 | } as const; 26 | const TodoListSpec: NodeSpecWithCreate = { 27 | type: "node", 28 | createFrom(ctx: Context, data: Data, raw: boolean = true) { 29 | const existing = ctx.cache.get(data["id"], "todomvc", "todolist"); 30 | if (existing) { 31 | return existing; 32 | } 33 | if (raw) data = decodeModelData(data, fields); 34 | const result = new TodoList(ctx, data); 35 | ctx.cache.set(data["id"], result, "todomvc", "todolist"); 36 | return result; 37 | }, 38 | 39 | primaryKey: "id", 40 | 41 | storage: { 42 | engine: "sqlite", 43 | db: "todomvc", 44 | type: "sql", 45 | tablish: "todolist", 46 | }, 47 | 48 | fields, 49 | 50 | outboundEdges: { 51 | todos: { 52 | type: "foreignKey", 53 | sourceField: "id", 54 | destField: "listId", 55 | get source() { 56 | return TodoListSpec; 57 | }, 58 | get dest() { 59 | return TodoSpec; 60 | }, 61 | }, 62 | }, 63 | }; 64 | 65 | export default TodoListSpec; 66 | -------------------------------------------------------------------------------- /src/domain/generated/TodoQuery.ts: -------------------------------------------------------------------------------- 1 | // SIGNED-SOURCE: <09f55db7d7704140206e46aadbdb81d3> 2 | /** 3 | * AUTO-GENERATED FILE 4 | * Do not modify. Update your schema and re-generate for changes. 5 | */ 6 | import { Context } from "@aphro/runtime-ts"; 7 | import { DerivedQuery } from "@aphro/runtime-ts"; 8 | import { QueryFactory } from "@aphro/runtime-ts"; 9 | import { modelLoad } from "@aphro/runtime-ts"; 10 | import { filter } from "@aphro/runtime-ts"; 11 | import { Predicate } from "@aphro/runtime-ts"; 12 | import { take } from "@aphro/runtime-ts"; 13 | import { orderBy } from "@aphro/runtime-ts"; 14 | import { P } from "@aphro/runtime-ts"; 15 | import { ModelFieldGetter } from "@aphro/runtime-ts"; 16 | import { Expression } from "@aphro/runtime-ts"; 17 | import { EmptyQuery } from "@aphro/runtime-ts"; 18 | import { SID_of } from "@aphro/runtime-ts"; 19 | import Todo from "../Todo.js"; 20 | import { Data } from "./TodoBase.js"; 21 | import TodoSpec from "./TodoSpec.js"; 22 | import TodoList from "../TodoList.js"; 23 | 24 | export default class TodoQuery extends DerivedQuery { 25 | static create(ctx: Context) { 26 | return new TodoQuery( 27 | ctx, 28 | QueryFactory.createSourceQueryFor(ctx, TodoSpec), 29 | modelLoad(ctx, TodoSpec.createFrom) 30 | ); 31 | } 32 | 33 | static empty(ctx: Context) { 34 | return new TodoQuery(ctx, new EmptyQuery(ctx)); 35 | } 36 | 37 | protected derive(expression: Expression): TodoQuery { 38 | return new TodoQuery(this.ctx, this, expression); 39 | } 40 | 41 | static fromId(ctx: Context, id: SID_of) { 42 | return this.create(ctx).whereId(P.equals(id)); 43 | } 44 | 45 | whereId(p: Predicate) { 46 | return this.derive( 47 | // @ts-ignore #43 48 | filter(new ModelFieldGetter<"id", Data, Todo>("id"), p) 49 | ); 50 | } 51 | 52 | whereListId(p: Predicate) { 53 | return this.derive( 54 | // @ts-ignore #43 55 | filter(new ModelFieldGetter<"listId", Data, Todo>("listId"), p) 56 | ); 57 | } 58 | 59 | whereText(p: Predicate) { 60 | return this.derive( 61 | // @ts-ignore #43 62 | filter(new ModelFieldGetter<"text", Data, Todo>("text"), p) 63 | ); 64 | } 65 | 66 | whereCompleted(p: Predicate) { 67 | return this.derive( 68 | // @ts-ignore #43 69 | filter(new ModelFieldGetter<"completed", Data, Todo>("completed"), p) 70 | ); 71 | } 72 | 73 | take(n: number) { 74 | return new TodoQuery(this.ctx, this, take(n)); 75 | } 76 | 77 | orderById(direction: "asc" | "desc" = "asc") { 78 | return this.derive( 79 | orderBy(new ModelFieldGetter<"id", Data, Todo>("id"), direction) 80 | ); 81 | } 82 | 83 | orderByListId(direction: "asc" | "desc" = "asc") { 84 | return this.derive( 85 | orderBy(new ModelFieldGetter<"listId", Data, Todo>("listId"), direction) 86 | ); 87 | } 88 | 89 | orderByText(direction: "asc" | "desc" = "asc") { 90 | return this.derive( 91 | orderBy(new ModelFieldGetter<"text", Data, Todo>("text"), direction) 92 | ); 93 | } 94 | 95 | orderByCompleted(direction: "asc" | "desc" = "asc") { 96 | return this.derive( 97 | orderBy( 98 | new ModelFieldGetter<"completed", Data, Todo>("completed"), 99 | direction 100 | ) 101 | ); 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /src/domain/generated/TodoSpec.ts: -------------------------------------------------------------------------------- 1 | // SIGNED-SOURCE: <4936b0ac00e412b24b18ade6c520a198> 2 | /** 3 | * AUTO-GENERATED FILE 4 | * Do not modify. Update your schema and re-generate for changes. 5 | */ 6 | import { Context } from "@aphro/runtime-ts"; 7 | import { decodeModelData } from "@aphro/runtime-ts"; 8 | import { encodeModelData } from "@aphro/runtime-ts"; 9 | import { SID_of } from "@aphro/runtime-ts"; 10 | import { NodeSpecWithCreate } from "@aphro/runtime-ts"; 11 | import Todo from "../Todo.js"; 12 | import { Data } from "./TodoBase.js"; 13 | 14 | const fields = { 15 | id: { 16 | encoding: "none", 17 | }, 18 | listId: { 19 | encoding: "none", 20 | }, 21 | text: { 22 | encoding: "none", 23 | }, 24 | completed: { 25 | encoding: "none", 26 | }, 27 | } as const; 28 | const TodoSpec: NodeSpecWithCreate = { 29 | type: "node", 30 | createFrom(ctx: Context, data: Data, raw: boolean = true) { 31 | const existing = ctx.cache.get(data["id"], "todomvc", "todo"); 32 | if (existing) { 33 | return existing; 34 | } 35 | if (raw) data = decodeModelData(data, fields); 36 | const result = new Todo(ctx, data); 37 | ctx.cache.set(data["id"], result, "todomvc", "todo"); 38 | return result; 39 | }, 40 | 41 | primaryKey: "id", 42 | 43 | storage: { 44 | engine: "sqlite", 45 | db: "todomvc", 46 | type: "sql", 47 | tablish: "todo", 48 | }, 49 | 50 | fields, 51 | 52 | outboundEdges: {}, 53 | }; 54 | 55 | export default TodoSpec; 56 | -------------------------------------------------------------------------------- /src/domain/generated/exports-node-sql.ts: -------------------------------------------------------------------------------- 1 | // SIGNED-SOURCE: <5cfc16eee05ef13cb14a1570b0e4ca91> 2 | /** 3 | * AUTO-GENERATED FILE 4 | * Do not modify. Update your schema and re-generate for changes. 5 | */ 6 | 7 | // @ts-ignore 8 | import * as path from "path"; 9 | // @ts-ignore 10 | import * as fs from "fs"; 11 | 12 | // @ts-ignore 13 | import { fileURLToPath } from "url"; 14 | 15 | const __filename = fileURLToPath(import.meta.url); 16 | const __dirname = path.dirname(__filename); 17 | 18 | const [Todo, TodoList] = await Promise.all([ 19 | fs.promises.readFile(path.join(__dirname, "Todo.sqlite.sql"), { 20 | encoding: "utf8", 21 | }), 22 | fs.promises.readFile(path.join(__dirname, "TodoList.sqlite.sql"), { 23 | encoding: "utf8", 24 | }), 25 | ]); 26 | 27 | export default { 28 | sqlite: { 29 | todomvc: { 30 | Todo, 31 | TodoList, 32 | }, 33 | }, 34 | }; 35 | -------------------------------------------------------------------------------- /src/domain/generated/exports-sql.ts: -------------------------------------------------------------------------------- 1 | // SIGNED-SOURCE: 2 | /** 3 | * AUTO-GENERATED FILE 4 | * Do not modify. Update your schema and re-generate for changes. 5 | */ 6 | import Todo from "./Todo.sqlite.sql?raw"; 7 | import TodoList from "./TodoList.sqlite.sql?raw"; 8 | export default { 9 | sqlite: { 10 | todomvc: { 11 | Todo, 12 | TodoList, 13 | }, 14 | }, 15 | }; 16 | -------------------------------------------------------------------------------- /src/domain/generated/exports.ts: -------------------------------------------------------------------------------- 1 | // SIGNED-SOURCE: <43cba4e780321beb1a115a65c06ed92e> 2 | /** 3 | * AUTO-GENERATED FILE 4 | * Do not modify. Update your schema and re-generate for changes. 5 | */ 6 | export { default as Todo } from "../Todo.js"; 7 | export { default as TodoList } from "../TodoList.js"; 8 | -------------------------------------------------------------------------------- /src/domain/generated/types.d.ts: -------------------------------------------------------------------------------- 1 | // SIGNED-SOURCE: <7946820adce4295e4ffad7d91d8edf9a> 2 | /** 3 | * AUTO-GENERATED FILE 4 | * Do not modify. Update your schema and re-generate for changes. 5 | */ 6 | declare module "*.sql?raw"; 7 | -------------------------------------------------------------------------------- /src/global.d.ts: -------------------------------------------------------------------------------- 1 | declare module "*.sql"; 2 | -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Aphrodite • TodoMVC 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
    15 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import { createRoot } from "react-dom/client"; 3 | 4 | import { openDbAndCreateResolver } from "@aphro/wa-sqlite-connector"; 5 | import { anonymous, bootstrap, sql } from "@aphro/runtime-ts"; 6 | import TodoTable from "./domain/generated/Todo.sqlite.sql"; 7 | import TodoListTable from "./domain/generated/TodoList.sqlite.sql"; 8 | import { context, Context, sid } from "@aphro/runtime-ts"; 9 | import App from "./App.js"; 10 | import TodoList from "./domain/TodoList.js"; 11 | 12 | openDbAndCreateResolver("todomvc") 13 | .then((resolver) => { 14 | const ctx = context(anonymous(), resolver); 15 | start(ctx); 16 | }) 17 | .catch((e) => console.error(e)); 18 | 19 | async function setup(ctx: Context): Promise { 20 | await bootstrap.createAutomigrateIfExists(ctx.dbResolver, { 21 | sqlite: { 22 | todomvc: { 23 | TodoList: TodoListTable, 24 | Todo: TodoTable, 25 | }, 26 | }, 27 | }); 28 | 29 | let list = await TodoList.queryAll(ctx).genOnlyValue(); 30 | if (list == null) { 31 | list = TodoList.create(ctx, { 32 | id: sid("aaaa"), 33 | filter: "all", 34 | editing: null, 35 | }).save().optimistic; 36 | } 37 | 38 | return list; 39 | } 40 | 41 | async function start(ctx: Context) { 42 | const list = await setup(ctx); 43 | 44 | const root = createRoot(document.getElementById("container")!); 45 | root.render(); 46 | } 47 | -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | margin: 0; 4 | padding: 0; 5 | } 6 | 7 | button { 8 | margin: 0; 9 | padding: 0; 10 | border: 0; 11 | background: none; 12 | font-size: 100%; 13 | vertical-align: baseline; 14 | font-family: inherit; 15 | font-weight: inherit; 16 | color: inherit; 17 | -webkit-appearance: none; 18 | appearance: none; 19 | -webkit-font-smoothing: antialiased; 20 | -moz-osx-font-smoothing: grayscale; 21 | cursor: pointer; 22 | } 23 | 24 | body { 25 | font: 14px "Helvetica Neue", Helvetica, Arial, sans-serif; 26 | line-height: 1.4em; 27 | background: #f5f5f5; 28 | color: #111111; 29 | min-width: 230px; 30 | max-width: 550px; 31 | margin: 0 auto; 32 | -webkit-font-smoothing: antialiased; 33 | -moz-osx-font-smoothing: grayscale; 34 | font-weight: 300; 35 | } 36 | 37 | :focus { 38 | outline: 0; 39 | } 40 | 41 | .hidden { 42 | display: none; 43 | } 44 | 45 | .todoapp { 46 | background: #fff; 47 | margin: 130px 0 40px 0; 48 | position: relative; 49 | box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1); 50 | } 51 | 52 | .todoapp input::-webkit-input-placeholder { 53 | font-style: italic; 54 | font-weight: 300; 55 | color: rgba(0, 0, 0, 0.4); 56 | } 57 | 58 | .todoapp input::-moz-placeholder { 59 | font-style: italic; 60 | font-weight: 300; 61 | color: rgba(0, 0, 0, 0.4); 62 | } 63 | 64 | .todoapp input::input-placeholder { 65 | font-style: italic; 66 | font-weight: 300; 67 | color: rgba(0, 0, 0, 0.4); 68 | } 69 | 70 | .todoapp h1 { 71 | position: absolute; 72 | top: -140px; 73 | width: 100%; 74 | font-size: 80px; 75 | font-weight: 200; 76 | text-align: center; 77 | color: #b83f45; 78 | -webkit-text-rendering: optimizeLegibility; 79 | -moz-text-rendering: optimizeLegibility; 80 | text-rendering: optimizeLegibility; 81 | } 82 | 83 | .new-todo, 84 | .edit { 85 | position: relative; 86 | margin: 0; 87 | width: 100%; 88 | font-size: 24px; 89 | font-family: inherit; 90 | font-weight: inherit; 91 | line-height: 1.4em; 92 | color: inherit; 93 | padding: 6px; 94 | border: 1px solid #999; 95 | box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2); 96 | box-sizing: border-box; 97 | -webkit-font-smoothing: antialiased; 98 | -moz-osx-font-smoothing: grayscale; 99 | } 100 | 101 | .new-todo { 102 | padding: 16px 16px 16px 60px; 103 | border: none; 104 | background: rgba(0, 0, 0, 0.003); 105 | box-shadow: inset 0 -2px 1px rgba(0, 0, 0, 0.03); 106 | } 107 | 108 | .main { 109 | position: relative; 110 | z-index: 2; 111 | border-top: 1px solid #e6e6e6; 112 | } 113 | 114 | .toggle-all { 115 | width: 1px; 116 | height: 1px; 117 | border: none; /* Mobile Safari */ 118 | opacity: 0; 119 | position: absolute; 120 | right: 100%; 121 | bottom: 100%; 122 | } 123 | 124 | .toggle-all + label { 125 | width: 60px; 126 | height: 34px; 127 | font-size: 0; 128 | position: absolute; 129 | top: -52px; 130 | left: -13px; 131 | -webkit-transform: rotate(90deg); 132 | transform: rotate(90deg); 133 | } 134 | 135 | .toggle-all + label:before { 136 | content: "❯"; 137 | font-size: 22px; 138 | color: #e6e6e6; 139 | padding: 10px 27px 10px 27px; 140 | } 141 | 142 | .toggle-all:checked + label:before { 143 | color: #737373; 144 | } 145 | 146 | .todo-list { 147 | margin: 0; 148 | padding: 0; 149 | list-style: none; 150 | } 151 | 152 | .todo-list li { 153 | position: relative; 154 | font-size: 24px; 155 | border-bottom: 1px solid #ededed; 156 | } 157 | 158 | .todo-list li:last-child { 159 | border-bottom: none; 160 | } 161 | 162 | .todo-list li.editing { 163 | border-bottom: none; 164 | padding: 0; 165 | } 166 | 167 | .todo-list li.editing .edit { 168 | display: block; 169 | width: calc(100% - 43px); 170 | padding: 12px 16px; 171 | margin: 0 0 0 43px; 172 | } 173 | 174 | .todo-list li.editing .view { 175 | display: none; 176 | } 177 | 178 | .todo-list li .toggle { 179 | text-align: center; 180 | width: 40px; 181 | /* auto, since non-WebKit browsers doesn't support input styling */ 182 | height: auto; 183 | position: absolute; 184 | top: 0; 185 | bottom: 0; 186 | margin: auto 0; 187 | border: none; /* Mobile Safari */ 188 | -webkit-appearance: none; 189 | appearance: none; 190 | } 191 | 192 | .todo-list li .toggle { 193 | opacity: 0; 194 | } 195 | 196 | .todo-list li .toggle + label { 197 | /* 198 | Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433 199 | IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/ 200 | */ 201 | background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E"); 202 | background-repeat: no-repeat; 203 | background-position: center left; 204 | } 205 | 206 | .todo-list li .toggle:checked + label { 207 | background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E"); 208 | } 209 | 210 | .todo-list li label { 211 | word-break: break-all; 212 | padding: 15px 15px 15px 60px; 213 | display: block; 214 | line-height: 1.2; 215 | transition: color 0.4s; 216 | font-weight: 400; 217 | color: #4d4d4d; 218 | } 219 | 220 | .todo-list li.completed label { 221 | color: #cdcdcd; 222 | text-decoration: line-through; 223 | } 224 | 225 | .todo-list li .destroy { 226 | display: none; 227 | position: absolute; 228 | top: 0; 229 | right: 10px; 230 | bottom: 0; 231 | width: 40px; 232 | height: 40px; 233 | margin: auto 0; 234 | font-size: 30px; 235 | color: #cc9a9a; 236 | margin-bottom: 11px; 237 | transition: color 0.2s ease-out; 238 | } 239 | 240 | .todo-list li .destroy:hover { 241 | color: #af5b5e; 242 | } 243 | 244 | .todo-list li .destroy:after { 245 | content: "×"; 246 | } 247 | 248 | .todo-list li:hover .destroy { 249 | display: block; 250 | } 251 | 252 | .todo-list li .edit { 253 | display: none; 254 | } 255 | 256 | .todo-list li.editing:last-child { 257 | margin-bottom: -1px; 258 | } 259 | 260 | .footer { 261 | padding: 10px 15px; 262 | height: 20px; 263 | text-align: center; 264 | font-size: 15px; 265 | border-top: 1px solid #e6e6e6; 266 | } 267 | 268 | .footer:before { 269 | content: ""; 270 | position: absolute; 271 | right: 0; 272 | bottom: 0; 273 | left: 0; 274 | height: 50px; 275 | overflow: hidden; 276 | box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 277 | 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 278 | 0 17px 2px -6px rgba(0, 0, 0, 0.2); 279 | } 280 | 281 | .todo-count { 282 | float: left; 283 | text-align: left; 284 | } 285 | 286 | .todo-count strong { 287 | font-weight: 300; 288 | } 289 | 290 | .filters { 291 | margin: 0; 292 | padding: 0; 293 | list-style: none; 294 | position: absolute; 295 | right: 0; 296 | left: 0; 297 | } 298 | 299 | .filters li { 300 | display: inline; 301 | } 302 | 303 | .filters li a { 304 | color: inherit; 305 | margin: 3px; 306 | padding: 3px 7px; 307 | text-decoration: none; 308 | border: 1px solid transparent; 309 | border-radius: 3px; 310 | cursor: pointer; 311 | } 312 | 313 | .filters li a:hover { 314 | border-color: rgba(175, 47, 47, 0.1); 315 | } 316 | 317 | .filters li a.selected { 318 | border-color: rgba(175, 47, 47, 0.2); 319 | } 320 | 321 | .clear-completed, 322 | html .clear-completed:active { 323 | float: right; 324 | position: relative; 325 | line-height: 20px; 326 | text-decoration: none; 327 | cursor: pointer; 328 | } 329 | 330 | .clear-completed:hover { 331 | text-decoration: underline; 332 | } 333 | 334 | .info { 335 | margin: 65px auto 0; 336 | color: #4d4d4d; 337 | font-size: 11px; 338 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); 339 | text-align: center; 340 | } 341 | 342 | .info p { 343 | line-height: 1; 344 | } 345 | 346 | .info a { 347 | color: inherit; 348 | text-decoration: none; 349 | font-weight: 400; 350 | } 351 | 352 | .info a:hover { 353 | text-decoration: underline; 354 | } 355 | 356 | /* 357 | Hack to remove background from Mobile Safari. 358 | Can't use it globally since it destroys checkboxes in Firefox 359 | */ 360 | @media screen and (-webkit-min-device-pixel-ratio: 0) { 361 | .toggle-all, 362 | .todo-list li .toggle { 363 | background: none; 364 | } 365 | 366 | .todo-list li .toggle { 367 | height: 40px; 368 | } 369 | } 370 | 371 | @media (max-width: 430px) { 372 | .footer { 373 | height: 50px; 374 | } 375 | 376 | .filters { 377 | bottom: 10px; 378 | } 379 | } 380 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "outDir": "./dist/", // path to output directory 4 | "sourceMap": true, // allow sourcemap support 5 | "strictNullChecks": true, // enable strict null checks as a best practice 6 | "module": "esnext", // specify module code generation 7 | "target": "esnext", // specify ECMAScript target version 8 | "moduleResolution": "node", 9 | "rootDir": "./", 10 | "allowJs": true, 11 | "jsx": "react", 12 | "strict": true 13 | }, 14 | "include": ["./src/"] 15 | } 16 | -------------------------------------------------------------------------------- /wa-sqlite-async.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlcn-io/orm-browser-starter/f45530fbba7d13298e999eda217bfe19cd1f523d/wa-sqlite-async.wasm -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | import HtmlWebpackPlugin from "html-webpack-plugin"; 2 | import ResolveTypeScriptPlugin from "resolve-typescript-plugin"; 3 | import path from "path"; 4 | import { fileURLToPath } from "url"; 5 | 6 | const __filename = fileURLToPath(import.meta.url); 7 | const __dirname = path.dirname(__filename); 8 | 9 | export default { 10 | experiments: { 11 | topLevelAwait: true, 12 | }, 13 | devServer: { 14 | static: { 15 | directory: path.resolve(__dirname), 16 | publicPath: "/", 17 | }, 18 | allowedHosts: "all", 19 | hot: true, 20 | }, 21 | entry: "./src/index.tsx", 22 | mode: "development", 23 | resolve: { 24 | plugins: [new ResolveTypeScriptPlugin()], 25 | extensions: [".dev.js", ".js", ".json", ".wasm", "ts", "tsx"], 26 | fallback: { 27 | crypto: false, 28 | path: false, 29 | fs: false, 30 | }, 31 | }, 32 | plugins: [new HtmlWebpackPlugin({ template: "./src/index.html" })], 33 | module: { 34 | rules: [ 35 | { 36 | test: /\.sql$/i, 37 | use: "raw-loader", 38 | }, 39 | { 40 | test: /\.tsx?$/, 41 | use: "ts-loader", 42 | exclude: /node_modules/, 43 | }, 44 | ], 45 | }, 46 | }; 47 | --------------------------------------------------------------------------------