diff --git a/.yarnclean b/.yarnclean index b591611..90bcb8f 100644 --- a/.yarnclean +++ b/.yarnclean @@ -43,3 +43,8 @@ wercker.yml # misc *.md + +# exceptions + + +!**/yaml/dist/**/doc diff --git a/package.json b/package.json index 6b62f75..a6938fd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "description": "Pile", - "version": "0.3.1", + "version": "0.9.2", "keywords": [ "pile" ], @@ -30,9 +30,13 @@ "build": "concurrently \"npm run build:main\" \"npm run build:renderer\"", "build:main": "cross-env NODE_ENV=production TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.main.prod.ts", "build:renderer": "cross-env NODE_ENV=production TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.renderer.prod.ts", - "postinstall": "ts-node .erb/scripts/check-native-dep.js && electron-builder install-app-deps && cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.renderer.dev.dll.ts", + "postinstall": "patch-package && ts-node .erb/scripts/check-native-dep.js && electron-builder install-app-deps && cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.renderer.dev.dll.ts", "lint": "cross-env NODE_ENV=development eslint . --ext .js,.jsx,.ts,.tsx", - "package": "ts-node ./.erb/scripts/clean.js dist && npm run build && electron-builder build --mac --publish always", + "package": "ts-node ./.erb/scripts/clean.js dist && npm run build && electron-builder build --mac --publish never", + "package:mac": "ts-node ./.erb/scripts/clean.js dist && npm run build && electron-builder build --mac", + "publish:mac": "ts-node ./.erb/scripts/clean.js dist && npm run build && electron-builder build --mac --publish always", + "package:win": "ts-node ./.erb/scripts/clean.js dist && npm run build && electron-builder build --win", + "publish:win": "ts-node ./.erb/scripts/clean.js dist && npm run build && electron-builder build --win --publish always", "rebuild": "electron-rebuild --parallel --types prod,dev,optional --module-dir release/app", "start": "ts-node ./.erb/scripts/check-port-in-use.js && npm run start:renderer", "start:main": "cross-env NODE_ENV=development electronmon -r ts-node/register/transpile-only .", @@ -166,7 +170,9 @@ "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "mini-css-extract-plugin": "^2.7.6", + "patch-package": "^8.0.0", "postcss": "^8.4.31", + "postinstall-postinstall": "^2.1.0", "prettier": "^2.8.8", "react-refresh": "^0.14.0", "react-test-renderer": "^18.2.0", diff --git a/patches/pdf-parse+1.1.1.patch b/patches/pdf-parse+1.1.1.patch new file mode 100644 index 0000000..326ea25 --- /dev/null +++ b/patches/pdf-parse+1.1.1.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/pdf-parse/index.js b/node_modules/pdf-parse/index.js +index e9fc367..47fcd1e 100644 +--- a/node_modules/pdf-parse/index.js ++++ b/node_modules/pdf-parse/index.js +@@ -3,7 +3,7 @@ const Pdf = require('./lib/pdf-parse.js'); + + module.exports = Pdf; + +-let isDebugMode = !module.parent; ++let isDebugMode = false; + + //process.env.AUTO_KENT_DEBUG + diff --git a/release/app/package-lock.json b/release/app/package-lock.json index d8ec4be..07cfa51 100644 --- a/release/app/package-lock.json +++ b/release/app/package-lock.json @@ -1,12 +1,12 @@ { "name": "pile", - "version": "0.9.0", + "version": "0.9.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pile", - "version": "0.9.0", + "version": "0.9.1", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/src/main/handlers/file.ts b/src/main/handlers/file.ts index c4a8ff2..7545200 100644 --- a/src/main/handlers/file.ts +++ b/src/main/handlers/file.ts @@ -113,7 +113,7 @@ ipcMain.handle('open-file', async (event, data) => { const hours = String(currentDate.getHours()).padStart(2, '0'); const minutes = String(currentDate.getMinutes()).padStart(2, '0'); const seconds = String(currentDate.getSeconds()).padStart(2, '0'); - const selectedFileName = filePath.split('/').pop(); + const selectedFileName = filePath.split(/[/\\]/).pop(); if (!selectedFileName) continue; diff --git a/src/main/main.ts b/src/main/main.ts index 57afafe..11384d8 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -1,5 +1,5 @@ /* eslint global-require: off, no-console: off, promise/always-return: off */ -import { app, BrowserWindow, shell, protocol, net, Menu } from 'electron'; +import { app, BrowserWindow, shell, protocol, net, Menu, nativeTheme } from 'electron'; import { autoUpdater } from 'electron-updater'; import log from 'electron-log'; import MenuBuilder from './menu'; @@ -85,8 +85,13 @@ const createWindow = async () => { frame: false, titleBarStyle: 'hidden', trafficLightPosition: { x: 18, y: 16 }, - transparent: true, + transparent: process.platform === 'darwin', vibrancy: 'sidebar', + titleBarOverlay: { + color: '#00000000', + symbolColor: nativeTheme.shouldUseDarkColors ? 'white' : 'black', + height: 50, + }, }); mainWindow.loadURL(resolveHtmlPath('index.html')); diff --git a/src/main/preload.ts b/src/main/preload.ts index d30c2c4..d31c39d 100644 --- a/src/main/preload.ts +++ b/src/main/preload.ts @@ -55,6 +55,9 @@ const electronHandler = { fs.writeFile(path, data, 'utf-8', callback), joinPath: (...args: any) => path.join(...args), mkdir: (...args: any) => fs.mkdir(...args), + isMac: process.platform === 'darwin', + isWindows: process.platform === 'win32', + pathSeparator: path.sep, }; contextBridge.exposeInMainWorld('electron', electronHandler); diff --git a/src/main/utils/pileVectorIndex.js b/src/main/utils/pileVectorIndex.js index 629ff05..6e666aa 100644 --- a/src/main/utils/pileVectorIndex.js +++ b/src/main/utils/pileVectorIndex.js @@ -39,12 +39,17 @@ class PileVectorIndex { this.pilePath = pilePath; - await this.setAPIKeyToEnv(); - await this.setStorageContext(); - await this.setServiceContext(); - await this.initVectorStoreIndex(); - await this.initQueryEngine(); - await this.initChatEngine(); + try { + await this.setAPIKeyToEnv(); + await this.setStorageContext(); + await this.setServiceContext(); + await this.initVectorStoreIndex(); + await this.initQueryEngine(); + await this.initChatEngine(); + } catch (e) { + console.error(e); + return false; + } } async sendMessageToRenderer(channel = 'status', message) { @@ -57,8 +62,7 @@ class PileVectorIndex { async setAPIKeyToEnv() { const apikey = await keytar.getPassword('pile', 'aikey'); if (!apikey) { - console.error('API key not found. Please set it first.'); - throw new Error('API key not found'); + throw new Error('API key not found. Please set it first.'); } process.env['OPENAI_API_KEY'] = apikey; } @@ -136,7 +140,8 @@ class PileVectorIndex { // when new entries are created or when they are updated. async add(pilePath, relativeFilePath, parentRelativeFilePath = null) { // Initialize if needed - await this.initialize(pilePath); + const initialized = await this.initialize(pilePath); + if (!initialized) return; const filePath = path.join(pilePath, relativeFilePath); const fileContent = await fs.promises.readFile(filePath, 'utf-8'); @@ -263,7 +268,8 @@ class PileVectorIndex { if (!pilePath) return; // Setup or load the vector store - await this.initialize(pilePath); + const initialized = await this.initialize(pilePath); + if (!initialized) return; // Load the base index this.pilePath = pilePath; diff --git a/src/renderer/App.css b/src/renderer/App.css index fccae0d..a4d84e2 100644 --- a/src/renderer/App.css +++ b/src/renderer/App.css @@ -114,6 +114,8 @@ --bg-tertiary: #1a375f; --bg-color-secondary-hover: rgb(95, 100, 122); --bg-translucent: rgba(10, 15, 35, 0.45); */ + + color-scheme: dark; } } diff --git a/src/renderer/context/PilesContext.js b/src/renderer/context/PilesContext.js index cb3dbde..dc72897 100644 --- a/src/renderer/context/PilesContext.js +++ b/src/renderer/context/PilesContext.js @@ -32,7 +32,7 @@ export const PilesContextProvider = ({ children }) => { if (!location.pathname) return; if (!location.pathname.startsWith('/pile/')) return; - const currentPileName = location.pathname.split('/').pop(); + const currentPileName = location.pathname.split(/[/\\]/).pop(); changeCurrentPile(currentPileName); }, [location.pathname]); diff --git a/src/renderer/hooks/usePost.js b/src/renderer/hooks/usePost.js index bac3b8c..2952e5f 100644 --- a/src/renderer/hooks/usePost.js +++ b/src/renderer/hooks/usePost.js @@ -96,7 +96,7 @@ function usePost( } const postRelativePath = saveToPath.replace( - getCurrentPilePath() + '/', + getCurrentPilePath() + window.electron.pathSeparator, '' ); addIndex(postRelativePath, parentPostPath); // Add the file to the index @@ -110,7 +110,7 @@ function usePost( ); const addReplyToParent = async (parentPostPath, replyPostPath) => { - const relativeReplyPath = replyPostPath.split('/').slice(-3).join('/'); + const relativeReplyPath = window.electron.joinPath(...replyPostPath.split(/[/\\]/).slice(-3)); const fullParentPostPath = getCurrentPilePath(parentPostPath); const parentPost = await getPost(fullParentPostPath); const content = parentPost.content; diff --git a/src/renderer/hooks/usePostHelpers.js b/src/renderer/hooks/usePostHelpers.js index 459a66d..966c90e 100644 --- a/src/renderer/hooks/usePostHelpers.js +++ b/src/renderer/hooks/usePostHelpers.js @@ -48,7 +48,7 @@ export const attachToPostCreator = // Attachments are stored relative to the base path from the // base directory of the pile const correctedPaths = newAttachments.map((path) => { - const pathArr = path.split('/').slice(-4); + const pathArr = path.split(/[/\\]/).slice(-4); const newPath = window.electron.joinPath(...pathArr); return newPath; diff --git a/src/renderer/index.tsx b/src/renderer/index.tsx index efbd603..d537f17 100644 --- a/src/renderer/index.tsx +++ b/src/renderer/index.tsx @@ -4,9 +4,13 @@ import { MemoryRouter as Router } from 'react-router-dom'; const container = document.getElementById('root') as HTMLElement; const root = createRoot(container); +const wrapperStyle = { + background: window.electron.isMac ? 'var(--bg-translucent)' : 'var(--bg)', +} + root.render( -
+
diff --git a/src/renderer/pages/CreatePile/index.tsx b/src/renderer/pages/CreatePile/index.tsx index d649393..1721a7c 100644 --- a/src/renderer/pages/CreatePile/index.tsx +++ b/src/renderer/pages/CreatePile/index.tsx @@ -43,7 +43,7 @@ export default function CreatePile() { const renderPiles = () => { return pilesList.map((pile) => { - const name = pile.split('/').pop(); + const name = pile.split(/[/\\]/).pop(); return (
diff --git a/src/renderer/pages/Home/Home.module.scss b/src/renderer/pages/Home/Home.module.scss index 60b7f6e..3706a72 100644 --- a/src/renderer/pages/Home/Home.module.scss +++ b/src/renderer/pages/Home/Home.module.scss @@ -148,6 +148,7 @@ font-size: 0.8em; border-radius: 12px; overflow: hidden; + opacity: 0.999; // Having the opacity set to 1 interferes with 'overflow: hidden' .pile { -webkit-app-region: none; diff --git a/src/renderer/pages/Pile/Editor/Attachments/index.jsx b/src/renderer/pages/Pile/Editor/Attachments/index.jsx index 0c75f33..e5bab48 100644 --- a/src/renderer/pages/Pile/Editor/Attachments/index.jsx +++ b/src/renderer/pages/Pile/Editor/Attachments/index.jsx @@ -16,7 +16,8 @@ const Attachments = ({ return post.data.attachments.map((attachment) => { const image_exts = ['jpg', 'jpeg', 'png', 'gif', 'svg']; const extension = attachment.split('.').pop(); - const imgPath = 'local://' + getCurrentPilePath() + '/' + attachment; + const sep = window.electron.pathSeparator; + const imgPath = 'local:' + sep + sep + getCurrentPilePath() + sep + attachment; if (image_exts.includes(extension)) { return ( diff --git a/src/renderer/pages/Pile/Layout.tsx b/src/renderer/pages/Pile/Layout.tsx index f789da6..5f95ccb 100644 --- a/src/renderer/pages/Pile/Layout.tsx +++ b/src/renderer/pages/Pile/Layout.tsx @@ -3,7 +3,7 @@ import styles from './PileLayout.module.scss'; import { HomeIcon } from 'renderer/icons'; import Sidebar from './Sidebar/Timeline/index'; import { useIndexContext } from 'renderer/context/IndexContext'; -import { useEffect, useCallback, useState } from 'react'; +import { useEffect, useState, useMemo } from 'react'; import { DateTime } from 'luxon'; import Settings from './Settings'; import HighlightsDialog from './Highlights'; @@ -37,7 +37,7 @@ export default function PileLayout({ children }) { window.scrollTo(0, 0); }, []); - const themeStyles = useCallback(() => { + const themeStyles = useMemo(() => { switch (currentTheme) { case 'purple': return styles.purpleTheme; @@ -50,8 +50,13 @@ export default function PileLayout({ children }) { } }, [currentTheme]); + const osStyles = useMemo( + () => (window.electron.isMac ? styles.mac : styles.win), + [] + ); + return ( -
+
diff --git a/src/renderer/pages/Pile/NewPost/index.jsx b/src/renderer/pages/Pile/NewPost/index.jsx index 708bdc6..c682e78 100644 --- a/src/renderer/pages/Pile/NewPost/index.jsx +++ b/src/renderer/pages/Pile/NewPost/index.jsx @@ -14,7 +14,7 @@ const NewPost = memo(() => { return (
-
at this moment
+ {/*
at this moment
*/}
diff --git a/src/renderer/pages/Pile/PileLayout.module.scss b/src/renderer/pages/Pile/PileLayout.module.scss index fb121a7..71433e7 100644 --- a/src/renderer/pages/Pile/PileLayout.module.scss +++ b/src/renderer/pages/Pile/PileLayout.module.scss @@ -167,7 +167,6 @@ position: sticky; top: 0; z-index: 4; - width: 100%; height: var(--nav-height); font-size: 0.85em; background: var(--bg); @@ -373,10 +372,22 @@ opacity: 0.5; transition: all ease-in-out 120ms; font-size: 13px; + } + } +} - @media only screen and (max-width: 909px) { - margin-left: 86px; - } +// OS Styles + +.mac { + .nav { + @media only screen and (max-width: 909px) { + padding-left: 86px; } } +} + +.win { + .nav { + padding-right: 130px; + } } \ No newline at end of file diff --git a/src/renderer/pages/Pile/Reflections/Reflections.module.scss b/src/renderer/pages/Pile/Reflections/Reflections.module.scss index 0d9bf8c..c7528e3 100644 --- a/src/renderer/pages/Pile/Reflections/Reflections.module.scss +++ b/src/renderer/pages/Pile/Reflections/Reflections.module.scss @@ -86,8 +86,9 @@ input { } .DialogTitle { - display: inline-flex; - align-items: center; + display: flex; + justify-content: space-between; + width: 100%; color: var(--active); font-weight: 400; border-radius: 7px; @@ -95,15 +96,41 @@ input { font-size: 15px; line-height: 1.5; mix-blend-mode: soft-light; +} - .icon { - height: 28px; - width: 28px; - margin-right: 9px; +.close { + font-family: inherit; + border-radius: 90px; + height: 32px; + width: 32px; + display: inline-flex; + align-items: center; + justify-content: center; + transition: all ease-in-out 120ms; + stroke-width: 2px; + background: var(--bg-tertiary); + color: var(--secondary); + margin-left: 12px; + position: fixed; + top: 16px; + right: 16px; + + &:hover { + cursor: pointer; + color: var(--primary); } -} + &:active { + transform: scale(0.9); + } + &.win { + position: relative; + margin: -5px 0 0 0; + top: 0; + left: 0; + } +} .textarea { display: block; @@ -190,34 +217,6 @@ input { } -.close { - font-family: inherit; - border-radius: 90px; - height: 32px; - width: 32px; - display: inline-flex; - align-items: center; - justify-content: center; - transition: all ease-in-out 120ms; - stroke-width: 2px; - background: var(--bg-tertiary); - color: var(--secondary); - margin-left: 12px; - position: fixed; - top: 16px; - right: 16px; - - &:hover { - cursor: pointer; - color: var(--primary); - } - - &:active { - transform: scale(0.9); - } -} - - .answer { padding-bottom: 50px; padding-right: 50px; @@ -226,8 +225,6 @@ input { color: var(--secondary); } - - .text { font-size: 1.6em; line-height: 1.45; diff --git a/src/renderer/pages/Pile/Reflections/index.jsx b/src/renderer/pages/Pile/Reflections/index.jsx index 82a829d..689cd72 100644 --- a/src/renderer/pages/Pile/Reflections/index.jsx +++ b/src/renderer/pages/Pile/Reflections/index.jsx @@ -8,7 +8,7 @@ import { DownloadIcon, FlameIcon, } from 'renderer/icons'; -import { useEffect, useState } from 'react'; +import { useEffect, useState, useMemo } from 'react'; import * as Dialog from '@radix-ui/react-dialog'; import { useAIContext } from 'renderer/context/AIContext'; import { @@ -76,6 +76,11 @@ export default function Reflections() { }); }; + const osStyles = useMemo( + () => (window.electron.isMac ? styles.mac : styles.win), + [] + ); + return ( <> @@ -90,6 +95,14 @@ export default function Reflections() {
+ + + - - -
diff --git a/src/renderer/utils/fileOperations.js b/src/renderer/utils/fileOperations.js index abcd669..a81955f 100644 --- a/src/renderer/utils/fileOperations.js +++ b/src/renderer/utils/fileOperations.js @@ -13,9 +13,9 @@ const postFormat = { }; const getDirectoryPath = (filePath) => { - const pathArr = filePath.split('/'); + const pathArr = filePath.split(/[/\\]/); pathArr.pop(); - return pathArr.join('/'); + return window.electron.joinPath(...pathArr); }; const getFormattedTimestamp = () => { diff --git a/yarn.lock b/yarn.lock index ad6ba9e..0ca18c5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3199,6 +3199,11 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + abab@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" @@ -4149,7 +4154,7 @@ chromium-pickle-js@^0.2.0: resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" integrity sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw== -ci-info@^3.2.0: +ci-info@^3.2.0, ci-info@^3.7.0: version "3.9.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== @@ -6027,6 +6032,13 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" +find-yarn-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== + dependencies: + micromatch "^4.0.2" + flat-cache@^3.0.4: version "3.1.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" @@ -6386,7 +6398,7 @@ got@^11.7.0, got@^11.8.5: p-cancelable "^2.0.0" responselike "^2.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -7093,7 +7105,7 @@ is-weakset@^2.0.1: call-bind "^1.0.2" get-intrinsic "^1.1.1" -is-wsl@^2.2.0: +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -7688,6 +7700,16 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +json-stable-stringify@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.1.0.tgz#43d39c7c8da34bfaf785a61a56808b0def9f747d" + integrity sha512-zfA+5SuwYN2VWqN1/5HZaDzQKLJHaBVMZIIM+wuYjdptkaQsqzDdqjqf+lZZJUuJq1aanHiY8LhH8LmH+qBYJA== + dependencies: + call-bind "^1.0.5" + isarray "^2.0.5" + jsonify "^0.0.1" + object-keys "^1.1.1" + json-stringify-safe@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -7728,6 +7750,11 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== + "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: version "3.3.5" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" @@ -7770,6 +7797,13 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== + dependencies: + graceful-fs "^4.1.11" + kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -8729,6 +8763,14 @@ onetime@^6.0.0: dependencies: mimic-fn "^4.0.0" +open@^7.4.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + open@^8.0.9: version "8.4.2" resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" @@ -8819,6 +8861,11 @@ orderedmap@^2.0.0: resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-2.1.1.tgz#61481269c44031c449915497bf5a4ad273c512d2" integrity sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g== +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + p-cancelable@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" @@ -8935,6 +8982,27 @@ pascal-case@^3.1.2: no-case "^3.0.4" tslib "^2.0.3" +patch-package@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61" + integrity sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^4.1.2" + ci-info "^3.7.0" + cross-spawn "^7.0.3" + find-yarn-workspace-root "^2.0.0" + fs-extra "^9.0.0" + json-stable-stringify "^1.0.2" + klaw-sync "^6.0.0" + minimist "^1.2.6" + open "^7.4.2" + rimraf "^2.6.3" + semver "^7.5.3" + slash "^2.0.0" + tmp "^0.0.33" + yaml "^2.2.2" + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -9280,6 +9348,11 @@ postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" +postinstall-postinstall@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" + integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -9996,6 +10069,13 @@ rfdc@^1.3.0: resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -10366,6 +10446,11 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -10889,6 +10974,13 @@ tmp-promise@^3.0.2: dependencies: tmp "^0.2.0" +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + tmp@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" @@ -11788,6 +11880,11 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml@^2.2.2: + version "2.3.4" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" + integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== + yargs-parser@^21.0.1, yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"