aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoromagdy7 <omar.professional8777@gmail.com>2023-11-02 23:55:13 +0200
committeromagdy7 <omar.professional8777@gmail.com>2023-11-02 23:55:13 +0200
commitc38d70c1752234bfc041c7fd5d762eec83cfbb9b (patch)
tree3a94ec905db50dc2f217d0390c718dc17272d2ba
downloadollama-logseq-c38d70c1752234bfc041c7fd5d762eec83cfbb9b.tar.xz
ollama-logseq-c38d70c1752234bfc041c7fd5d762eec83cfbb9b.zip
First commit
-rw-r--r--.gitignore94
-rw-r--r--README.md31
-rw-r--r--index.html14
-rw-r--r--index.ts89
-rw-r--r--package.json29
-rw-r--r--pnpm-lock.yaml1987
6 files changed, 2244 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..eabe0a3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,94 @@
+# See http://help.github.com/ignore-files/ for more about ignoring files.
+
+# compiled output
+/dist
+/tmp
+/out-tsc
+
+# parcel
+.parcel-cache
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# IDEs and editors
+.idea
+.project
+.classpath
+.c9/
+*.launch
+.settings/
+*.sublime-workspace
+
+# IDE - VSCode
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+
+# misc
+.sass-cache
+connect.lock
+typings
+
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variables file
+.env
+
+# next.js build output
+.next
+
+# Lerna
+lerna-debug.log
+
+# System Files
+.DS_Store
+Thumbs.db
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..5d17030
--- /dev/null
+++ b/README.md
@@ -0,0 +1,31 @@
+## Reddit Hot News Sample
+
+This is a sample that show you how to manipulate blocks :)
+
+### Demo
+
+![demo](./demo.gif)
+
+### API
+
+[![npm version](https://badge.fury.io/js/%40logseq%2Flibs.svg)](https://badge.fury.io/js/%40logseq%2Flibs)
+
+##### [Logseq.Editor](https://logseq.github.io/plugins/interfaces/ieditorproxy.html)
+
+- `insertBlock: (
+ srcBlock: BlockIdentity, content: string, opts?: Partial<{ before: boolean; sibling: boolean; properties: {} }>
+ ) => Promise<BlockEntity | null>`
+- `insertBatchBlock: (
+ srcBlock: BlockIdentity, batch: IBatchBlock | Array<IBatchBlock>, opts?: Partial<{ before: boolean, sibling: boolean }>
+ ) => Promise<Array<BlockEntity> | null>`
+- `updateBlock: (
+ srcBlock: BlockIdentity, content: string, opts?: Partial<{ properties: {} }>
+ ) => Promise<void>`
+- `removeBlock: (
+ srcBlock: BlockIdentity
+ )`
+
+### Running the Sample
+
+- `npm install && npm run build` in terminal to install dependencies.
+- `Load unpacked plugin` in Logseq Desktop client.
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..465c3f0
--- /dev/null
+++ b/index.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport"
+ content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
+ <meta http-equiv="X-UA-Compatible" content="ie=edge">
+ <title>r/logseq</title>
+</head>
+<body>
+<div id="app"></div>
+<script src="index.ts" type="module"></script>
+</body>
+</html>
diff --git a/index.ts b/index.ts
new file mode 100644
index 0000000..a6ec1b1
--- /dev/null
+++ b/index.ts
@@ -0,0 +1,89 @@
+import '@logseq/libs'
+import { LSPluginBaseInfo } from '@logseq/libs/dist/libs'
+
+const delay = (t = 100) => new Promise(r => setTimeout(r, t))
+
+async function loadRedditData () {
+ const endpoint = 'https://www.reddit.com/r/logseq/hot.json'
+
+ const { data: { children } } = await fetch(endpoint).then(res => res.json())
+ const ret = children || []
+
+ return ret.map(({ data }, i) => {
+ const { title, selftext, url, ups, downs, num_comments } = data
+
+ return `${i}. [${title}](${url}) [:small.opacity-50 "🔥 ${ups} 💬 ${num_comments}"]
+collapsed:: true
+> ${selftext}`
+ })
+}
+
+/**
+ * main entry
+ * @param baseInfo
+ */
+function main (baseInfo: LSPluginBaseInfo) {
+ let loading = false
+
+ logseq.provideModel({
+ async loadReddits () {
+
+ const info = await logseq.App.getUserConfigs()
+ if (loading) return
+
+ const pageName = 'reddit-logseq-hots-news'
+ const blockTitle = (new Date()).toLocaleString()
+
+ logseq.App.pushState('page', { name: pageName })
+
+ await delay(300)
+
+ loading = true
+
+ try {
+ const currentPage = await logseq.Editor.getCurrentPage()
+ if (currentPage?.originalName !== pageName) throw new Error('page error')
+
+ const pageBlocksTree = await logseq.Editor.getCurrentPageBlocksTree()
+ let targetBlock = pageBlocksTree[0]!
+
+ targetBlock = await logseq.Editor.insertBlock(targetBlock.uuid, '🚀 Fetching r/logseq ...', { before: true })
+
+ let blocks = await loadRedditData()
+
+ blocks = blocks.map(it => ({ content: it }))
+
+ await logseq.Editor.insertBatchBlock(targetBlock.uuid, blocks, {
+ sibling: false
+ })
+
+ await logseq.Editor.updateBlock(targetBlock.uuid, `## 🔖 r/logseq - ${blockTitle}`)
+ } catch (e) {
+ logseq.App.showMsg(e.toString(), 'warning')
+ console.error(e)
+ } finally {
+ loading = false
+ }
+ }
+ })
+
+ logseq.App.registerUIItem('toolbar', {
+ key: 'logseq-reddit',
+ template: `
+ <a data-on-click="loadReddits"
+ class="button">
+ <i class="ti ti-brand-reddit"></i>
+ </a>
+ `
+ })
+
+ logseq.provideStyle(`
+ [data-injected-ui=logseq-reddit-${baseInfo.id}] {
+ display: flex;
+ align-items: center;
+ }
+ `)
+}
+
+// bootstrap
+logseq.ready(main).catch(console.error)
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..84be998
--- /dev/null
+++ b/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "ollama-logseq",
+ "version": "0.0.1",
+ "description": "Integrate ollama with logseq and utilizing local LLMs",
+ "main": "dist/index.html",
+ "targets": {
+ "main": false
+ },
+ "default": "dist/index.html",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/omagdy7/ollama-logseq"
+ },
+ "author": "Logseq",
+ "scripts": {
+ "dev": "parcel ./index.html --public-url ./",
+ "build": "parcel build --public-url . --no-source-maps index.html"
+ },
+ "license": "MIT",
+ "logseq": {
+ "id": "_rw0rys037"
+ },
+ "dependencies": {
+ "@logseq/libs": "^0.0.1-alpha.22"
+ },
+ "devDependencies": {
+ "parcel": "^2.0.0"
+ }
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..2f0eb3c
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,1987 @@
+lockfileVersion: '6.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+dependencies:
+ '@logseq/libs':
+ specifier: ^0.0.1-alpha.22
+ version: 0.0.1-alpha.35
+
+devDependencies:
+ parcel:
+ specifier: ^2.0.0
+ version: 2.10.2
+
+packages:
+
+ /@babel/code-frame@7.22.13:
+ resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/highlight': 7.22.20
+ chalk: 2.4.2
+ dev: true
+
+ /@babel/helper-validator-identifier@7.22.20:
+ resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/highlight@7.22.20:
+ resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.22.20
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+ dev: true
+
+ /@lezer/common@1.1.0:
+ resolution: {integrity: sha512-XPIN3cYDXsoJI/oDWoR2tD++juVrhgIago9xyKhZ7IhGlzdDM9QgC8D8saKNCz5pindGcznFr2HBSsEQSWnSjw==}
+ dev: true
+
+ /@lezer/lr@1.3.14:
+ resolution: {integrity: sha512-z5mY4LStlA3yL7aHT/rqgG614cfcvklS+8oFRFBYrs4YaWLJyKKM4+nN6KopToX0o9Hj6zmH6M5kinOYuy06ug==}
+ dependencies:
+ '@lezer/common': 1.1.0
+ dev: true
+
+ /@lmdb/lmdb-darwin-arm64@2.8.5:
+ resolution: {integrity: sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw==}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@lmdb/lmdb-darwin-x64@2.8.5:
+ resolution: {integrity: sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug==}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@lmdb/lmdb-linux-arm64@2.8.5:
+ resolution: {integrity: sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@lmdb/lmdb-linux-arm@2.8.5:
+ resolution: {integrity: sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg==}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@lmdb/lmdb-linux-x64@2.8.5:
+ resolution: {integrity: sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@lmdb/lmdb-win32-x64@2.8.5:
+ resolution: {integrity: sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ==}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@logseq/libs@0.0.1-alpha.35:
+ resolution: {integrity: sha512-KikcqgolrTFqlEWoiprAdRsz9kwUX3XwcjzWa9usBGLwgGCpq6E/1UvvhQweJJAXAGDUVUHIzdJ6Cm6pvuOBWQ==}
+ dependencies:
+ csstype: 3.0.8
+ debug: 4.3.1
+ dompurify: 2.3.1
+ eventemitter3: 4.0.7
+ fast-deep-equal: 3.1.3
+ lodash-es: 4.17.21
+ path: 0.12.7
+ snake-case: 3.0.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@mischnic/json-sourcemap@0.1.1:
+ resolution: {integrity: sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w==}
+ engines: {node: '>=12.0.0'}
+ dependencies:
+ '@lezer/common': 1.1.0
+ '@lezer/lr': 1.3.14
+ json5: 2.2.3
+ dev: true
+
+ /@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2:
+ resolution: {integrity: sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2:
+ resolution: {integrity: sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2:
+ resolution: {integrity: sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2:
+ resolution: {integrity: sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2:
+ resolution: {integrity: sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2:
+ resolution: {integrity: sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@parcel/bundler-default@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-XlVGsScK5PgIFXNJ0Yx/+nHu1RFCuslCbrb8MIs0yqS790yzvyJF2QHX5WAr7Qc5powij/+2tfBHiViauWwVpA==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/diagnostic': 2.10.2
+ '@parcel/graph': 3.0.2
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/rust': 2.10.2
+ '@parcel/utils': 2.10.2
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/cache@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-B69e5n+bBzYoaJdUOviYeUT7N1iXI3IC5G8dAxKNZ9Zgn+pjZ5BwltbfmP47+NTfQ7LqM8Ea4UJxysQsLdwb+Q==}
+ engines: {node: '>= 12.0.0'}
+ peerDependencies:
+ '@parcel/core': ^2.10.2
+ dependencies:
+ '@parcel/core': 2.10.2
+ '@parcel/fs': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/logger': 2.10.2
+ '@parcel/utils': 2.10.2
+ lmdb: 2.8.5
+ dev: true
+
+ /@parcel/codeframe@2.10.2:
+ resolution: {integrity: sha512-EZrYSIlVg4qiBLHRRqC/BGN2MLG0SKnw4u7kpviwz63I+v36ghqmHGOomwfn4x13nDL+EgOFz4/+Q7QpbMTKug==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ chalk: 4.1.2
+ dev: true
+
+ /@parcel/compressor-raw@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-zIbtmL7vGfWkvBwD29zVdDosFR1eKHa29SpPOQXYLmDO0EVdwzYcTQq2OrlZM07o759QUqwXJfuAYxwcBNRTYg==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/config-default@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-BGn7G5MT6VXpnI5Rj8fzHT1ij0YElge3l2KVGSOJ5crho2Fmz7UKmm8kJ9kdcLrzHWOIH07T100YoQuAwKVQaA==}
+ peerDependencies:
+ '@parcel/core': ^2.10.2
+ dependencies:
+ '@parcel/bundler-default': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/compressor-raw': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/core': 2.10.2
+ '@parcel/namer-default': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/optimizer-css': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/optimizer-htmlnano': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/optimizer-image': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/optimizer-svgo': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/optimizer-swc': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/packager-css': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/packager-html': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/packager-js': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/packager-raw': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/packager-svg': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/packager-wasm': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/reporter-dev-server': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/resolver-default': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/runtime-browser-hmr': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/runtime-js': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/runtime-react-refresh': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/runtime-service-worker': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/transformer-babel': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/transformer-css': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/transformer-html': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/transformer-image': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/transformer-js': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/transformer-json': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/transformer-postcss': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/transformer-posthtml': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/transformer-raw': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/transformer-react-refresh-wrap': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/transformer-svg': 2.10.2(@parcel/core@2.10.2)
+ transitivePeerDependencies:
+ - '@swc/helpers'
+ - cssnano
+ - postcss
+ - purgecss
+ - relateurl
+ - srcset
+ - terser
+ - typescript
+ - uncss
+ dev: true
+
+ /@parcel/core@2.10.2:
+ resolution: {integrity: sha512-c6hh13oYk9w5creiQ9yCz9GLQ17ZRMonULhJ46J0yoFArynVhNTJ9B5xVst7rS/chOTY8jU0jSdJuxQCR4fjkg==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@mischnic/json-sourcemap': 0.1.1
+ '@parcel/cache': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/diagnostic': 2.10.2
+ '@parcel/events': 2.10.2
+ '@parcel/fs': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/graph': 3.0.2
+ '@parcel/logger': 2.10.2
+ '@parcel/package-manager': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/profiler': 2.10.2
+ '@parcel/rust': 2.10.2
+ '@parcel/source-map': 2.1.1
+ '@parcel/types': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/utils': 2.10.2
+ '@parcel/workers': 2.10.2(@parcel/core@2.10.2)
+ abortcontroller-polyfill: 1.7.5
+ base-x: 3.0.9
+ browserslist: 4.22.1
+ clone: 2.1.2
+ dotenv: 7.0.0
+ dotenv-expand: 5.1.0
+ json5: 2.2.3
+ msgpackr: 1.9.9
+ nullthrows: 1.1.1
+ semver: 7.5.4
+ dev: true
+
+ /@parcel/diagnostic@2.10.2:
+ resolution: {integrity: sha512-FwtphyiV/TJEiYIRYXBOloXp7XhTW37ifRSLr7RdLbDVyn/P9q/7l0+ORlnOL+WuKwbDQtY+dXYLh/ijTsq7qQ==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@mischnic/json-sourcemap': 0.1.1
+ nullthrows: 1.1.1
+ dev: true
+
+ /@parcel/events@2.10.2:
+ resolution: {integrity: sha512-Dp8Oqh5UvSuIASfiHP8jrEtdtzzmTKiOG/RkSL3mtp2tK3mu6dZLJZbcdJXrvBTg7smtRiznkrIOJCawALC7AQ==}
+ engines: {node: '>= 12.0.0'}
+ dev: true
+
+ /@parcel/fs@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-80SXdFGDJtil9tTbWrYiZRfQ5ehMAT/dq6eY4EYcFg+MvSiwBL/4GfYMfqXn6AamuSVeQlsFCPpunFLNl9YDDA==}
+ engines: {node: '>= 12.0.0'}
+ peerDependencies:
+ '@parcel/core': ^2.10.2
+ dependencies:
+ '@parcel/core': 2.10.2
+ '@parcel/rust': 2.10.2
+ '@parcel/types': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/utils': 2.10.2
+ '@parcel/watcher': 2.3.0
+ '@parcel/workers': 2.10.2(@parcel/core@2.10.2)
+ dev: true
+
+ /@parcel/graph@3.0.2:
+ resolution: {integrity: sha512-cPxCN3+QF+5l4BJ0wnLeb3DPJarWQoD3W984CfuEYy/8Zgo2oayd31soZzkevyTYtp7H4tJKo+I79i2TJdNq5Q==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ nullthrows: 1.1.1
+ dev: true
+
+ /@parcel/logger@2.10.2:
+ resolution: {integrity: sha512-5lufBuBnXDs3hjAaptmeEAxpH0eHe0+2hJvlVv5lE/RwHR7vDjh+FDwzPfCLWNM3TQhPQdZPdHcDsuA539GHcw==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@parcel/diagnostic': 2.10.2
+ '@parcel/events': 2.10.2
+ dev: true
+
+ /@parcel/markdown-ansi@2.10.2:
+ resolution: {integrity: sha512-uZrysHjJ+0vbQNK2bhKy8yoVso8KnoW6O/SW8MiGQ4lpDJdqHShkW08wZUKr4sjl7h/WVFdNsDdgvi2/ANwoRQ==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ chalk: 4.1.2
+ dev: true
+
+ /@parcel/namer-default@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-wjn3MCus0w9IOjCtQsp5fgb8hgITyxMr0OPF9cBVAhVJI1X9vvd4RurHuLJ3MjvlCqrP1en09yg3ME7VO1kPuA==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/diagnostic': 2.10.2
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/node-resolver-core@3.1.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-xvIBgYBRQGmCkfwK/yxVSDtPEvWDVH9poQcGpKHT1jqstYju5crXro0acni5nYF0hWZu7Kttrp9G9fXJQWBksw==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@mischnic/json-sourcemap': 0.1.1
+ '@parcel/diagnostic': 2.10.2
+ '@parcel/fs': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/rust': 2.10.2
+ '@parcel/utils': 2.10.2
+ nullthrows: 1.1.1
+ semver: 7.5.4
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/optimizer-css@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-05H/Ng90TErSFZkNaUwi7gNCf2gLWi3/w07oIzHu1wjRjjKjZidqaQqZtHTEYoO9ffmhK14Xwh9q4IpOTa0sbQ==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/diagnostic': 2.10.2
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/source-map': 2.1.1
+ '@parcel/utils': 2.10.2
+ browserslist: 4.22.1
+ lightningcss: 1.22.0
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/optimizer-htmlnano@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-9Sg2xLsfX7CPLd1AO3uVa/Kh9EROKVNHMnmNxlzmO2+LEOU/M1OHalvt4bhC7I+cNFPLN5BePdBv3QMYpO0yyA==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ htmlnano: 2.1.0(svgo@2.8.0)
+ nullthrows: 1.1.1
+ posthtml: 0.16.6
+ svgo: 2.8.0
+ transitivePeerDependencies:
+ - '@parcel/core'
+ - cssnano
+ - postcss
+ - purgecss
+ - relateurl
+ - srcset
+ - terser
+ - typescript
+ - uncss
+ dev: true
+
+ /@parcel/optimizer-image@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-X8q7mvWJEIXsEMYHYKbwIRUJvI0W41YWCEW7Ohmn0SSi+KuiO8BW5JEPKs7HboO9bX+i6Yxa/T1h9HgRXhdUug==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ peerDependencies:
+ '@parcel/core': ^2.10.2
+ dependencies:
+ '@parcel/core': 2.10.2
+ '@parcel/diagnostic': 2.10.2
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/rust': 2.10.2
+ '@parcel/utils': 2.10.2
+ '@parcel/workers': 2.10.2(@parcel/core@2.10.2)
+ dev: true
+
+ /@parcel/optimizer-svgo@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-Ws+xd6nbetMCZHmRj54tIF8wYuu/JwkEvn5BotLE69l3naf2ELtsQ+PHg9G5jUa+PnSNMHhykIhBOqjxhTeq/w==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/diagnostic': 2.10.2
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/utils': 2.10.2
+ svgo: 2.8.0
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/optimizer-swc@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-/4yMgMgLvF4yCHh0QnZlTUTpKobuFK/lNhB1i5yrtiipRaYcS+OgtakB83grfK+x1KwTbYjzXZBILwqu6GKJDQ==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/diagnostic': 2.10.2
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/source-map': 2.1.1
+ '@parcel/utils': 2.10.2
+ '@swc/core': 1.3.95
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - '@parcel/core'
+ - '@swc/helpers'
+ dev: true
+
+ /@parcel/package-manager@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-c91YYsIxjX3YhMvtPT7v2MpDOn/Qyw13bi1+0Ftd2JNjUZPlm8+xKizlmgvdi75dgs7dGIUVpvrGLU9LoKthCA==}
+ engines: {node: '>= 12.0.0'}
+ peerDependencies:
+ '@parcel/core': ^2.10.2
+ dependencies:
+ '@parcel/core': 2.10.2
+ '@parcel/diagnostic': 2.10.2
+ '@parcel/fs': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/logger': 2.10.2
+ '@parcel/node-resolver-core': 3.1.2(@parcel/core@2.10.2)
+ '@parcel/types': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/utils': 2.10.2
+ '@parcel/workers': 2.10.2(@parcel/core@2.10.2)
+ semver: 7.5.4
+ dev: true
+
+ /@parcel/packager-css@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-+X4dV7mBdOhXSHeg5gAkk0Qju6A1oezYIancqDC17zoFzbHUfD13nHNDOXrEfMNFVWy93lB8vLJwchH54MDMwQ==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/diagnostic': 2.10.2
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/source-map': 2.1.1
+ '@parcel/utils': 2.10.2
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/packager-html@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-GonfLzuzEkelJde89sq9P9LowLJrFNkuEt33nRokc1Q5TPNOWfTYb6difjuVIMr/j0c4nWlOzUrkGJsyo++F7w==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/types': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/utils': 2.10.2
+ nullthrows: 1.1.1
+ posthtml: 0.16.6
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/packager-js@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-SgKJqIvMt+UJM0x3F21yBVsgdHbTnOnBrNJ7VoY3nujQX5fa+pxTf0emWuX1vSUDbBaJOmO/pC9rKwWP5enqfQ==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/diagnostic': 2.10.2
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/rust': 2.10.2
+ '@parcel/source-map': 2.1.1
+ '@parcel/types': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/utils': 2.10.2
+ globals: 13.23.0
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/packager-raw@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-+/O2DeMIB9d+1+zCPOkaf2aTl2rN5TFod/UcMzG/HGFlDVqhkV9xgfwV4rV+Vso5TlyHA4p53BFgvGWQBQJAQw==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/packager-svg@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-eQx3VJpuuDcen+DcLxlPn95txlnbpEH8TES+Ezym/LFyD8oQQfok/VFHy/iGoG4r1CtH0/c7lFUJE8+LZdwYmQ==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/types': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/utils': 2.10.2
+ posthtml: 0.16.6
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/packager-wasm@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-Y/UyyOePb3WmWy2WtmXn4QLLrb7wjWL/ZhVgvhFiQft4lCbdGBGz1BiKEzhFkkN2IGdX06XZolmKCQieAM6zlQ==}
+ engines: {node: '>=12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/plugin@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-1u+GJhuqqlYjMAQLBbMExfFCbsbtuSAm6wXmMmTse5cBpFqxgsMumMeztAhcTy0oMnMhbZg2AKZV0XVSMrIgng==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@parcel/types': 2.10.2(@parcel/core@2.10.2)
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/profiler@2.10.2:
+ resolution: {integrity: sha512-YQugGhf12u83O0RJLWbhkPV772nePPxNZjvFJmV++7buPUpgJW2m1lVOrut/s/8ZZIPqcxJe8dyxSSOtvdG7OQ==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ '@parcel/diagnostic': 2.10.2
+ '@parcel/events': 2.10.2
+ chrome-trace-event: 1.0.3
+ dev: true
+
+ /@parcel/reporter-cli@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-6/cLuiGfMh1ny8ULNOXJkugIvJRVo4tV4XA3vJXH96SYqFSfiWxtHqb6MAVndBy8MezEAv0EsLqc7yR7ygdZJw==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/types': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/utils': 2.10.2
+ chalk: 4.1.2
+ term-size: 2.2.1
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/reporter-dev-server@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-mLEcZFPpw0ixlvbT846NwmPEVv1ej7H5dwCQ3r1Ca1nQjyXkmQMM06rdb5M+/gk12WVEDOuienWqBL44Xsz3NA==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/utils': 2.10.2
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/reporter-tracer@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-oreu3vIdN5u9ONSNhqypcK3nR91NoreR4B4vwD/1Rqod1ud2Vb9awJZv7QIrkdnEMmGcr5DQ/R872s7XYWeZnA==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/utils': 2.10.2
+ chrome-trace-event: 1.0.3
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/resolver-default@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-ENEq8f4wRQlU7p3tCelXWK6xIsL+57q9hQ+b4eRJOEctjfN1/BguxZDh+P+fIlJ1lkqiX4UB/PUkK97uSI5XTQ==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/node-resolver-core': 3.1.2(@parcel/core@2.10.2)
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/runtime-browser-hmr@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-ABlCzDYI16lAZLTTL2g3JZasU/dWuSzRGK5paC6JhIJJwQwPeTwu4PaUoEPKeyk0iE9PzVuXjkBbGuSLXQFmmA==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/utils': 2.10.2
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/runtime-js@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-a6TaMVg1Xgy+WJJ0a3sC/Taw5hkN4hmLnz00jg7G6LwoGbBpvjJn8pm4eovkMFJz13RCjmS9q0K+qZnvXh1WYA==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/diagnostic': 2.10.2
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/utils': 2.10.2
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/runtime-react-refresh@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-9xW3g4FH9iizHWscHD2yEWJOCfYkIYMbWsZoj0EOMILqrRd1OZxHH8FbLYBQKT6swRbZI2mM19veVVBBfxco/Q==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/utils': 2.10.2
+ react-error-overlay: 6.0.9
+ react-refresh: 0.9.0
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/runtime-service-worker@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-XY1GrY4r+zu0b/pZiTflZHdk9+I3XoxpExgPcZzep5hnq2UdyXbS4yDhmen7pTcqay5U9NmRw/62YrKL+yPang==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/utils': 2.10.2
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/rust@2.10.2:
+ resolution: {integrity: sha512-v/Cyf3iXlzSc6vgvPiEZzqdKAZ1jJ/aZX7y1YSupDh3RoqJI2bZ93kAOyEi+S7P3kshJkQM0px3YveJFOAMUOA==}
+ engines: {node: '>= 12.0.0'}
+ dev: true
+
+ /@parcel/source-map@2.1.1:
+ resolution: {integrity: sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==}
+ engines: {node: ^12.18.3 || >=14}
+ dependencies:
+ detect-libc: 1.0.3
+ dev: true
+
+ /@parcel/transformer-babel@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-lmuksSzEBdPL1nVTznsQi5hQ+4mJ7GP+jvOv/Tvx3MjnzIu1G6Fs5MvNpAwBRXmG/F1+0aw/Wa8J38HYfN05dA==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/diagnostic': 2.10.2
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/source-map': 2.1.1
+ '@parcel/utils': 2.10.2
+ browserslist: 4.22.1
+ json5: 2.2.3
+ nullthrows: 1.1.1
+ semver: 7.5.4
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/transformer-css@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-WxKe1YherQrX0vEfxAsBALEIsztGStmfXF0GAMeynE4q/w1iHQdTzu29tqLrJY7x532Ric8TxnwO8zR0r89DJg==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/diagnostic': 2.10.2
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/source-map': 2.1.1
+ '@parcel/utils': 2.10.2
+ browserslist: 4.22.1
+ lightningcss: 1.22.0
+ nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/transformer-html@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-Zkg1HHdYp14ecdtNF+s4d/e1lr8/PAQgBTYhyEVLVC1N7uivjjZ9XClxZlHuZImbQvX3q3PgZS+PocIizhY4rQ==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/diagnostic': 2.10.2
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/rust': 2.10.2
+ nullthrows: 1.1.1
+ posthtml: 0.16.6
+ posthtml-parser: 0.10.2
+ posthtml-render: 3.0.0
+ semver: 7.5.4
+ srcset: 4.0.0
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/transformer-image@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-sR2kTsPykYRujKR7ISn0d6Fhem1pMQoqm0cFTrtC9Te5pfIjZ72NfM9clP7jPK660Gd2DYudhUa48y+qKBfCAw==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ peerDependencies:
+ '@parcel/core': ^2.10.2
+ dependencies:
+ '@parcel/core': 2.10.2
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/utils': 2.10.2
+ '@parcel/workers': 2.10.2(@parcel/core@2.10.2)
+ nullthrows: 1.1.1
+ dev: true
+
+ /@parcel/transformer-js@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-qcVLyikhSVf3oHhzReECkKdPU5uHVH4L0TC5O9ahlsq2IUTqR8Swq+9wUgUN0S2aYFTWreH05bQwBCNrLzF/eQ==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ peerDependencies:
+ '@parcel/core': ^2.10.2
+ dependencies:
+ '@parcel/core': 2.10.2
+ '@parcel/diagnostic': 2.10.2
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ '@parcel/rust': 2.10.2
+ '@parcel/source-map': 2.1.1
+ '@parcel/utils': 2.10.2
+ '@parcel/workers': 2.10.2(@parcel/core@2.10.2)
+ '@swc/helpers': 0.5.3
+ browserslist: 4.22.1
+ nullthrows: 1.1.1
+ regenerator-runtime: 0.13.11
+ semver: 7.5.4
+ dev: true
+
+ /@parcel/transformer-json@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-iVgwuaLNqH3jgoBzMds63zd9FULvYb/s/5Hq9JZJ6pCZrOQoPruurgAW8A/t2IE4CSFkDDNoFvRpjsq1WBsSvA==}
+ engines: {node: '>= 12.0.0', parcel: ^2.10.2}
+ dependencies:
+ '@parcel/plugin': 2.10.2(@parcel/core@2.10.2)
+ json5: 2.2.3
+ transitivePeerDependencies:
+ - '@parcel/core'
+ dev: true
+
+ /@parcel/transformer-postcss@2.10.2(@parcel/core@2.10.2):
+ resolution: {integrity: sha512-2/ehCZgj5TOmsAIeGiLwrm6gO/M+X4fZ/O71MhpmXd8zr08j25T0VdSdw5UyopsBvtPYM7DI/F