From 64abd17a12f51d512909eb7068b796d9a7387626 Mon Sep 17 00:00:00 2001 From: purocean Date: Tue, 10 May 2022 22:12:52 +0800 Subject: [PATCH] upd: remove lucksheet --- package.json | 2 - src/renderer/plugins/markdown-luckysheet.ts | 454 ++------------------ src/renderer/shims-vue.d.ts | 1 - src/share/i18n/languages/en.ts | 5 - src/share/i18n/languages/zh-CN.ts | 5 - vite.config.ts | 20 - yarn.lock | 83 ---- 7 files changed, 25 insertions(+), 545 deletions(-) diff --git a/package.json b/package.json index cc11b6ef..d720feeb 100644 --- a/package.json +++ b/package.json @@ -108,8 +108,6 @@ "juice": "^8.0.0", "katex": "^0.15.3", "lodash-es": "^4.17.21", - "luckyexcel": "^1.0.1", - "luckysheet": "^2.1.13", "markdown-it": "^12.3.2", "markdown-it-abbr": "^1.0.4", "markdown-it-attributes": "^0.0.8", diff --git a/src/renderer/plugins/markdown-luckysheet.ts b/src/renderer/plugins/markdown-luckysheet.ts index 21f4d5b0..890d2fce 100644 --- a/src/renderer/plugins/markdown-luckysheet.ts +++ b/src/renderer/plugins/markdown-luckysheet.ts @@ -1,311 +1,34 @@ -import { defineComponent, h, ref, watch } from 'vue' +import { h } from 'vue' import Markdown from 'markdown-it' import { Plugin } from '@fe/context' -import { getLogger } from '@fe/utils' -import type { Doc } from '@fe/types' -import { useModal } from '@fe/support/ui/modal' -import { useToast } from '@fe/support/ui/toast' -import { dirname, join } from '@fe/utils/path' -import { isElectron, openWindow } from '@fe/support/env' import store from '@fe/support/store' -import * as api from '@fe/support/api' -import { refreshTree } from '@fe/services/tree' -import { buildSrc, IFrame } from '@fe/support/embed' -import { getCurrentLanguage, t, useI18n } from '@fe/services/i18n' -import { DOM_ATTR_NAME, FLAG_DEMO } from '@fe/support/args' -import Mask from '@fe/components/Mask.vue' - -const logger = getLogger('plugin-markdown-luckysheet') - -const fileExt = '.luckysheet' - -function buildSrcdoc (repo: string, path: string, full: boolean) { - if (!path.endsWith('.luckysheet')) { - return 'Error: support luckysheet file only' - } - - const lang = getCurrentLanguage() === 'zh-CN' ? 'zh' : 'en' - const options = { container: 'lucky-sheet', lang, plugins: ['chart'], showtoolbarConfig: { print: false } } - let onload = '' - - if (full) { - onload = ` - const btn = document.createElement('button'); - btn.style = 'border-radius: 4px;border: 0; background: #d3d4d5; cursor: pointer; margin-left: 10px; color: #24292f; padding: 4px 8px;'; - btn.innerText = '${t('save')}' - btn.onclick = save - document.querySelector('.luckysheet_info_detail .sheet-name').after(btn) - document.querySelector('.luckysheet_info_detail .luckysheet_info_detail_update').innerText = '${path}' - setStatus('${t('file-status.loaded')}') - - ${isElectron - ? ` - let closeWindow = false - const remote = window.nodeRequire && window.nodeRequire('@electron/remote') - window.onbeforeunload = evt => { - if (saved() || closeWindow) return null - - if (!remote) { - return true - } - - evt.returnValue = true - - setTimeout(() => { - let result = remote.dialog.showMessageBoxSync({ - type: 'question', - cancelId: 1, - message: '${t('quit-check-dialog.desc')}', - buttons: ['${t('quit-check-dialog.buttons.discard')}', '${t('quit-check-dialog.buttons.cancel')}'] - }) - - if (result === 0) { - closeWindow = true - remote.getCurrentWindow().close() - } - }) - }` : 'window.onbeforeunload = () => saved() ? null : true' - } - - window.addEventListener('keydown', e => { - const isMacOS = /macintosh|mac os x/i.test(navigator.userAgent) - const ctrl = isMacOS ? e.metaKey : e.ctrlKey - if (ctrl && e.code === 'KeyS') { - save() - e.stopPropagation() - e.preventDefault() - } - }) - ` - Object.assign(options, {}) - } else { - Object.assign(options, { - showtoolbar: false, - showinfobar: false, - allowEdit: false, - showsheetbarConfig: { - add: false, - menu: false, - sheet: true - }, - sheetRightClickConfig: { - delete: false, - copy: false, - rename: false, - color: false, - hide: false, - move: false, - }, - }) - } - - return ` - - - - - - -
- - - - ` -} - -const LuckyComponent = defineComponent({ - name: 'lucky-sheet', - props: { - repo: String, - path: String - }, - setup (props) { - logger.debug('setup', props) - - useI18n() - - const srcdoc = ref('') - const refIFrame = ref() - const refFullIFrame = ref() - const fullScreen = ref(false) - - const update = () => { - srcdoc.value = buildSrcdoc(props.repo!, props.path!, false) - } - - const reload = () => { - refIFrame.value.reload() - } - - const open = () => { - fullScreen.value = true - } - - const close = async () => { - try { - refFullIFrame.value.close() - fullScreen.value = false - } catch { - if (await useModal().confirm({ title: t('quit-check-dialog.title'), content: t('quit-check-dialog.desc') })) { - fullScreen.value = false - } - } - } - - watch(props, update, { immediate: true }) - - if (FLAG_DEMO) { - watch([refFullIFrame, refIFrame], () => { - if (refIFrame.value) { - refIFrame.value.reload = () => { - useToast().show('warning', t('demo-tips')) - } - } - - document.querySelectorAll('iframe.lucky-sheet').forEach(x => { - (x as any).contentWindow.fetch = window.fetch - }) - }) - } - - const button = (text: string, onClick: any) => h('button', { - class: 'small', - onClick - }, text) - - const topOffset = isElectron ? '30px' : '0px' - - const buildIFrame = (full: boolean) => h(IFrame, { - ref: full ? refFullIFrame : refIFrame, - html: buildSrcdoc(props.repo!, props.path!, full), - debounce: 1000, - iframeProps: { - class: 'lucky-sheet', - style: 'background: #fff; margin: 0;display:block;height: ' + (full ? `calc(100vh - ${topOffset})` : '500px'), - width: '100%' - } - }) - - return () => [ - fullScreen.value && h(Mask, { - show: true, - maskCloseable: false, - escCloseable: false, - style: { paddingTop: topOffset } - }, [ - h( - 'div', - { - class: 'skip-print', - style: 'position: absolute; right: 10px; margin-top: 15px; z-index: 1;' - }, - button(t('close'), close), - ), - buildIFrame(true), - ]), - - h('div', { class: 'lucky-sheet-wrapper reduce-brightness', style: 'position: relative' }, [ - h( - 'div', - { class: 'lucky-sheet-action skip-print' }, - [ - button(t('reload'), reload), - button(t('edit'), open), - button(t('open-in-new-window'), () => { - const html = buildSrcdoc(props.repo!, props.path!, true) - openWindow(buildSrc(html, t('lucky-sheet.edit-sheet'), false), '_blank', { alwaysOnTop: false }) - }), - ] - ), - buildIFrame(false) - ]) - ] - } -}) +import { DOM_ATTR_NAME } from '@fe/support/args' +import { getInitialized, getLoadStatus } from '@fe/others/extension' +import { t } from '@fe/services/i18n' const MarkdownItPlugin = (md: Markdown) => { + const extensionId = '@yank-note/extension-luckysheet' + + const checkExtensionLoaded = () => !!getLoadStatus(extensionId).version + + const render = () => { + if (!getInitialized()) { + return null + } + + return h('p', h( + 'a', + { href: `javascript:ctx.showExtensionManager('${extensionId}')` }, + h('i', t('install-extension-tips', 'Luckyseet')) + )) + } + const linkTemp = md.renderer.rules.link_open!.bind(md.renderer.rules) md.renderer.rules.link_open = (tokens, idx, options, env, slf) => { + if (checkExtensionLoaded()) { + return linkTemp(tokens, idx, options, env, slf) + } + const token = tokens[idx] if (token.attrGet('link-type') !== 'luckysheet') { @@ -322,99 +45,12 @@ const MarkdownItPlugin = (md: Markdown) => { return linkTemp(tokens, idx, options, env, slf) } - const path = join(dirname(currentFile.path), url) - const nextToken = tokens[idx + 1] if (nextToken && nextToken.type === 'text') { nextToken.content = '' } - return h(LuckyComponent, { repo: currentFile.repo, path }) as any - } -} - -async function createLuckysheet (node: Doc) { - const currentPath = node.path - - let filename = await useModal().input({ - title: t('lucky-sheet.create-dialog-title'), - hint: t('document.create-dialog.hint'), - content: t('document.current-path', currentPath), - value: 'new-sheet' + fileExt, - select: true - }) - - if (!filename) { - return - } - - if (!filename.endsWith(fileExt)) { - filename = filename.replace(/\/$/, '') + fileExt - } - - const path = join(currentPath, filename) - - if (!path) { - throw new Error('Need Path') - } - - const file: Doc = { repo: node.repo, path: path, type: 'file', name: '', contentHash: 'new' } - - if (typeof file.content !== 'string') { - file.content = JSON.stringify([{ - name: 'Sheet1', - color: '', - status: 1, - order: 0, - data: Array(20).fill(Array(14).fill(null)), - config: { - merge: {}, - rowlen: {}, - rowhidden: {} - }, - index: 0, - jfgird_select_save: [], - luckysheet_select_save: [{ - row: [0, 0], - column: [0, 0], - row_focus: 0, - column_focus: 0, - left: 0, - width: 73, - top: 0, - height: 19, - left_move: 0, - width_move: 73, - top_move: 0, - height_move: 19 - }], - visibledatarow: [], - visibledatacolumn: [], - ch_width: 4560, - rh_height: 1760, - luckysheet_selection_range: [], - zoomRatio: 1, - scrollLeft: 0, - scrollTop: 0, - calcChain: [], - filter_select: null, - filter: null, - luckysheet_conditionformat_save: [], - luckysheet_alternateformat_save: [], - dataVerification: {}, - hyperlink: {}, - celldata: [] - }]) - } - - try { - await api.writeFile(file, file.content) - const srcdoc = buildSrcdoc(file.repo, file.path, true) - openWindow(buildSrc(srcdoc, t('lucky-sheet.edit-sheet'), false), '_blank', { alwaysOnTop: false }) - refreshTree() - } catch (error: any) { - useToast().show('warning', error.message) - console.error(error) + return render() as any } } @@ -422,45 +58,5 @@ export default { name: 'markdown-luckysheet', register: ctx => { ctx.markdown.registerPlugin(MarkdownItPlugin) - - ctx.theme.addStyles(` - .markdown-view .markdown-body .lucky-sheet-wrapper .lucky-sheet-action { - position: absolute; - right: 10px; - top: 3px; - z-index: 1; - opacity: 0; - transition: opacity .2s; - } - - .markdown-view .markdown-body .lucky-sheet-wrapper:hover .lucky-sheet-action { - opacity: 1; - } - `) - - ctx.registerHook('TREE_NODE_SELECT', async ({ node }) => { - if (node.path.toLowerCase().endsWith(fileExt)) { - const srcdoc = buildSrcdoc(node.repo, node.path, true) - openWindow(buildSrc(srcdoc, t('lucky-sheet.edit-sheet'), false), '_blank', { alwaysOnTop: false }) - - return true - } - - return false - }) - - ctx.tree.tapContextMenus((items, node) => { - if (node.type === 'dir') { - items.push( - { type: 'separator' }, - { - id: 'create-luckysheet', - type: 'normal', - label: t('lucky-sheet.create-dialog-title'), - onClick: () => createLuckysheet(node) - } - ) - } - }) } } as Plugin diff --git a/src/renderer/shims-vue.d.ts b/src/renderer/shims-vue.d.ts index 66c70782..13c937f8 100644 --- a/src/renderer/shims-vue.d.ts +++ b/src/renderer/shims-vue.d.ts @@ -19,7 +19,6 @@ declare module 'monaco-editor/esm/vs/basic-languages/markdown/markdown.js' declare module 'monaco-editor/esm/vs/editor/contrib/folding/indentRangeProvider.js' declare module 'filenamify/browser' declare module 'katex' -declare module 'luckyexcel' declare module 'xterm-theme' declare module 'parse-author' declare module 'js-untar' diff --git a/src/share/i18n/languages/en.ts b/src/share/i18n/languages/en.ts index 778343ca..f0dbe9c8 100644 --- a/src/share/i18n/languages/en.ts +++ b/src/share/i18n/languages/en.ts @@ -433,11 +433,6 @@ const data = { 'delete-col': 'Delete Column', }, }, - 'lucky-sheet': { - 'saved-at': 'Saved at', - 'edit-sheet': 'Edit Sheet', - 'create-dialog-title': 'Create Luckysheet File', - }, 'markdown-link': { 'convert-to-titled-link': 'Convert to Titled Link', }, diff --git a/src/share/i18n/languages/zh-CN.ts b/src/share/i18n/languages/zh-CN.ts index 04b1920e..cbc9ae18 100644 --- a/src/share/i18n/languages/zh-CN.ts +++ b/src/share/i18n/languages/zh-CN.ts @@ -434,11 +434,6 @@ const data: BaseLanguage = { 'delete-col': '删除列', }, }, - 'lucky-sheet': { - 'saved-at': '保存于', - 'edit-sheet': '编辑表格', - 'create-dialog-title': '创建 Luckysheet 文件', - }, 'markdown-link': { 'convert-to-titled-link': '转换为带标题的链接', }, diff --git a/vite.config.ts b/vite.config.ts index 77cd9de5..215478c1 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -13,26 +13,6 @@ if (!fs.existsSync(vsDist)) { ) } -// copy lucky-sheet -// must use embed dir -const luckySheetDist = path.resolve(__dirname, 'src/renderer/public/embed') -if (!fs.existsSync(path.join(luckySheetDist, 'luckysheet.umd.js'))) { - fs.copySync( - path.resolve(__dirname, 'node_modules/luckysheet/dist'), - luckySheetDist, - { - filter: src => { - if (src.includes('demoData') || src.includes('esm.js') || src.includes('index.html')) { - return false - } - - return true - } - } - - ) -} - // https://vitejs.dev/config/ export default defineConfig({ plugins: [vue(), vueJsx()], diff --git a/yarn.lock b/yarn.lock index 10241e1e..f2955b7b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -516,13 +516,6 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-typescript" "^7.16.7" -"@babel/runtime@^7.12.1": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.6.tgz#535203bc0892efc7dec60bdc27b2ecf6e409062d" - integrity sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg== - dependencies: - regenerator-runtime "^0.13.4" - "@babel/template@^7.0.0", "@babel/template@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" @@ -3616,11 +3609,6 @@ dayjs@^1.10.5: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.5.tgz#5600df4548fc2453b3f163ebb2abbe965ccfb986" integrity sha512-BUFis41ikLz+65iH6LHQCDm4YPMj5r1YFLdupPIyM4SGcXMmtiLQ7U37i+hGS8urIuqe7I/ou3IS1jVc4nbN4g== -dayjs@^1.9.6: - version "1.10.6" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.6.tgz#288b2aa82f2d8418a6c9d4df5898c0737ad02a63" - integrity sha512-AztC/IOW4L1Q41A86phW5Thhcrco3xuAA+YX/BLpLWWjRcTj5TOt/QImBLmCKlrF7u7k47arTnOyL6GnbG8Hvw== - debounce-fn@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/debounce-fn/-/debounce-fn-3.0.1.tgz#034afe8b904d985d1ec1aa589cd15f388741d680" @@ -4875,11 +4863,6 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" -flatpickr@^4.6.6: - version "4.6.9" - resolved "https://registry.yarnpkg.com/flatpickr/-/flatpickr-4.6.9.tgz#9a13383e8a6814bda5d232eae3fcdccb97dc1499" - integrity sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw== - flatted@^3.1.0: version "3.2.4" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" @@ -5454,11 +5437,6 @@ ignore@^5.1.1, ignore@^5.1.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= - import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -6303,11 +6281,6 @@ jest@^27.4.5: import-local "^3.0.2" jest-cli "^27.4.5" -jquery@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-2.2.4.tgz#2c89d6889b5eac522a7eea32c14521559c6cbf02" - integrity sha1-LInWiJterFIqfuoywUUhVZxsvwI= - js-stringify@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" @@ -6505,16 +6478,6 @@ jstransformer@1.0.0: is-promise "^2.0.0" promise "^7.0.1" -jszip@^3.5.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.7.1.tgz#bd63401221c15625a1228c556ca8a68da6fda3d9" - integrity sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg== - dependencies: - lie "~3.3.0" - pako "~1.0.2" - readable-stream "~2.3.6" - set-immediate-shim "~1.0.1" - juice@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/juice/-/juice-8.0.0.tgz#ac77d3372373409b06a875aee425b9d381f645fe" @@ -6670,13 +6633,6 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lie@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" - integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== - dependencies: - immediate "~3.0.5" - lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -6828,25 +6784,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -luckyexcel@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/luckyexcel/-/luckyexcel-1.0.1.tgz#55791f28bb5393e9dff8ba77c11f9c05f9ceb5ae" - integrity sha512-hvbJmCXNp/vST/huA6sieDn32Ib8bd80L9aIu5ZGxniJvZle7VlpHZrl6weLGaEnX99+t7cPAoYGqrqbfZp/AQ== - dependencies: - jszip "^3.5.0" - -luckysheet@^2.1.13: - version "2.1.13" - resolved "https://registry.yarnpkg.com/luckysheet/-/luckysheet-2.1.13.tgz#685d5fc790efddb12d8562294d5f4e41c5ba032d" - integrity sha512-ZotItRKh3fxEtYz0GrZxkf97jeQSGsJpFNAu1I0NMDQ6rVrHAWKeggFak5pClGQ3DP62Gi8kd+8rzOpyY/UNZw== - dependencies: - "@babel/runtime" "^7.12.1" - dayjs "^1.9.6" - flatpickr "^4.6.6" - jquery "^2.2.4" - numeral "^2.0.6" - pako "^1.0.11" - lunr@^2.3.9: version "2.3.9" resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" @@ -7253,11 +7190,6 @@ nth-check@^2.0.1: dependencies: boolbase "^1.0.0" -numeral@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/numeral/-/numeral-2.0.6.tgz#4ad080936d443c2561aed9f2197efffe25f4e506" - integrity sha1-StCAk21EPCVhrtnyGX7//iX05QY= - nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" @@ -7433,11 +7365,6 @@ package-json@^6.3.0: registry-url "^5.0.0" semver "^6.2.0" -pako@^1.0.11, pako@~1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - pako@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/pako/-/pako-2.0.4.tgz#6cebc4bbb0b6c73b0d5b8d7e8476e2b2fbea576d" @@ -7975,11 +7902,6 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - regexpp@^3.0.0, regexpp@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" @@ -8219,11 +8141,6 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-immediate-shim@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= - setprototypeof@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"