diff --git a/TODO.md b/TODO.md index 102321c..29fafe7 100644 --- a/TODO.md +++ b/TODO.md @@ -5,7 +5,7 @@ - Add "files" to legacy excalidraw export [ ] PNG preview -[ ] markdown embed SVG +[ ] markdown embed SVG 190 [ ] markdown embed PNG [ ] embed Excalidraw into other Excalidraw diff --git a/src/ExcalidrawAutomate.ts b/src/ExcalidrawAutomate.ts index 58cf03b..3278eed 100644 --- a/src/ExcalidrawAutomate.ts +++ b/src/ExcalidrawAutomate.ts @@ -10,7 +10,7 @@ import { TFile } from "obsidian" import ExcalidrawView from "./ExcalidrawView"; -import { getJSON } from "./ExcalidrawData"; +import { getJSON, getSVGString } from "./ExcalidrawData"; import { FRONTMATTER, nanoid, @@ -813,7 +813,13 @@ export function measureText (newText:string, fontSize:number, fontFamily:number) return {w: width, h: height, baseline: baseline }; }; -async function getTemplate(fileWithPath: string):Promise<{elements: any,appState: any, frontmatter: string}> { +async function getTemplate(fileWithPath:string, loadFiles:boolean = false):Promise<{ + elements: any, + appState: any, + frontmatter: string, + files: any, + svgSnapshot: string +}> { const app = window.ExcalidrawAutomate.plugin.app; const vault = app.vault; const file = app.metadataCache.getFirstLinkpathDest(normalizePath(fileWithPath),''); @@ -823,17 +829,24 @@ async function getTemplate(fileWithPath: string):Promise<{elements: any,appState let trimLocation = data.search("# Text Elements\n"); if(trimLocation == -1) trimLocation = data.search("# Drawing\n"); - const excalidrawData = JSON_parse(getJSON(data)[0]); + const [scene,pos] = getJSON(data); + const svgSnapshot = getSVGString(data.substr(pos+scene.length)); + + const excalidrawData = JSON_parse(scene); return { elements: excalidrawData.elements, appState: excalidrawData.appState, - frontmatter: data.substring(0,trimLocation) + frontmatter: data.substring(0,trimLocation), + files: null, + svgSnapshot: svgSnapshot }; }; return { elements: [], appState: {}, - frontmatter: null + frontmatter: null, + files: [], + svgSnapshot: null, } } diff --git a/src/ExcalidrawView.ts b/src/ExcalidrawView.ts index eeea7fe..60bd003 100644 --- a/src/ExcalidrawView.ts +++ b/src/ExcalidrawView.ts @@ -36,9 +36,10 @@ import ExcalidrawPlugin from './main'; import {ExcalidrawAutomate, repositionElementsToCursor} from './ExcalidrawAutomate'; import { t } from "./lang/helpers"; import { ExcalidrawData, REG_LINKINDEX_HYPERLINK, REGEX_LINK } from "./ExcalidrawData"; -import { checkAndCreateFolder, download, generateSVGString, getNewOrAdjacentLeaf, getNewUniqueFilepath, getObsidianImage, getPNG, getSVG, rotatedDimensions, splitFolderAndFilename, svgToBase64, viewportCoordsToSceneCoords } from "./Utils"; +import { checkAndCreateFolder, download, generateSVGString, getNewOrAdjacentLeaf, getNewUniqueFilepath, getObsidianImage, getPNG, getSVG, loadSceneFiles, rotatedDimensions, splitFolderAndFilename, svgToBase64, viewportCoordsToSceneCoords } from "./Utils"; import { Prompt } from "./Prompt"; import { ClipboardData } from "@zsviczian/excalidraw/types/clipboard"; +import { sceneCoordsToViewportCoords } from "@zsviczian/excalidraw/types/utils"; declare let window: ExcalidrawAutomate; @@ -434,14 +435,17 @@ export default class ExcalidrawView extends TextFileView { if((this.app.workspace.activeLeaf === this.leaf) && this.excalidrawWrapperRef) { this.excalidrawWrapperRef.current.focus(); } + loadSceneFiles(this.app,this.excalidrawData.files,this.excalidrawRef.current.addFiles); } else { this.instantiateExcalidraw({ elements: excalidrawData.elements, appState: excalidrawData.appState, libraryItems: await this.getLibrary(), }); + setTimeout(()=>loadSceneFiles(this.app,this.excalidrawData.files,this.excalidrawRef.current.addFiles),1000); } + /* //load files this.excalidrawData.files.forEach((value,key)=> { const file = this.app.vault.getAbstractFileByPath(value); @@ -458,7 +462,8 @@ export default class ExcalidrawView extends TextFileView { this.excalidrawRef.current.addFiles(files); }); } - }); + });*/ + } //Compatibility mode with .excalidraw files @@ -629,7 +634,6 @@ export default class ExcalidrawView extends TextFileView { return () => window.removeEventListener("resize", onResize); }, [excalidrawWrapperRef]); - this.getSelectedTextElement = ():{id: string, text:string} => { if(!excalidrawRef?.current) return {id:null,text:null}; if(this.excalidrawRef.current.getAppState().viewModeEnabled) { @@ -1114,7 +1118,10 @@ export default class ExcalidrawView extends TextFileView { ); }); - ReactDOM.render(reactElement,this.contentEl,()=>this.excalidrawWrapperRef.current.focus()); + + ReactDOM.render(reactElement,this.contentEl,()=>{ + this.excalidrawWrapperRef.current.focus(); + }); } public zoomToFit(delay:boolean = true) { diff --git a/src/Utils.ts b/src/Utils.ts index 888ab33..0941f9e 100644 --- a/src/Utils.ts +++ b/src/Utils.ts @@ -1,7 +1,7 @@ import Excalidraw,{exportToSvg} from "@zsviczian/excalidraw"; import { App, normalizePath, TAbstractFile, TFile, TFolder, Vault, WorkspaceLeaf } from "obsidian"; import { Random } from "roughjs/bin/math"; -import { DataURL, Zoom } from "@zsviczian/excalidraw/types/types"; +import { BinaryFileData, DataURL, Zoom } from "@zsviczian/excalidraw/types/types"; import { nanoid } from "nanoid"; import { IMAGE_TYPES } from "./constants"; import {ExcalidrawAutomate} from './ExcalidrawAutomate'; @@ -350,4 +350,28 @@ export const getPNG = async (scene:any, exportSettings:ExportSettings, scale:num } catch (error) { return null; } +} + +export const loadSceneFiles = async (app:App, filesMap: Map,addFiles:Function) => { + const entries = filesMap.entries(); + let entry; + let files:BinaryFileData[] = []; + while(!(entry = entries.next()).done) { + const file = app.vault.getAbstractFileByPath(entry.value[1]); + if(file && file instanceof TFile) { + const data = await getObsidianImage(app,file); + files.push({ + mimeType : data.mimeType, + id: entry.value[0], + dataURL: data.dataURL, + created: data.created + }); + } + } + + try { //in try block because by the time files are loaded the user may have closed the view + addFiles(files); + } catch(e) { + + } } \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index 511dae6..0b01117 100644 --- a/src/main.ts +++ b/src/main.ts @@ -57,7 +57,6 @@ import { around } from "monkey-around"; import { t } from "./lang/helpers"; import { MigrationPrompt } from "./MigrationPrompt"; import { checkAndCreateFolder, download, generateSVGString, getAttachmentsFolderAndFilePath, getIMGPathFromExcalidrawFile, getNewUniqueFilepath, getPNG, getSVG, splitFolderAndFilename, svgToBase64 } from "./Utils"; -import { directive } from "@babel/types"; declare module "obsidian" { interface App { @@ -225,7 +224,10 @@ export default class ExcalidrawPlugin extends Plugin { const [scene,pos] = getJSON(content); const svgSnapshot = getSVGString(content.substr(pos+scene.length)); - if(!this.settings.displaySVGInPreview) { + //Removed in 1.4.0 when implementing ImageElement. Key reason for removing this + //is to use SVG snapshot in file, to avoid resource intensive process to generating PNG + //due to the need to load excalidraw plus all linked images +/* if(!this.settings.displaySVGInPreview) { const width = parseInt(imgAttributes.fwidth); let scale = 1; if(width>=800) scale = 2; @@ -235,10 +237,9 @@ export default class ExcalidrawPlugin extends Plugin { if(!png) return null; img.src = URL.createObjectURL(png); return img; - } + }*/ let svg:SVGSVGElement = null; if(svgSnapshot) { - console.log("using snapshot"); const el = document.createElement('div'); el.innerHTML = svgSnapshot; const firstChild = el.firstChild; diff --git a/src/settings.ts b/src/settings.ts index c01c5eb..31365bd 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -15,7 +15,7 @@ export interface ExcalidrawSettings { templateFilePath: string, drawingFilenamePrefix: string, drawingFilenameDateTime: string, - displaySVGInPreview: boolean, + //displaySVGInPreview: boolean, width: string, matchTheme: boolean, zoomToFitOnResize: boolean, @@ -49,7 +49,7 @@ export const DEFAULT_SETTINGS: ExcalidrawSettings = { templateFilePath: 'Excalidraw/Template.excalidraw', drawingFilenamePrefix: 'Drawing ', drawingFilenameDateTime: 'YYYY-MM-DD HH.mm.ss', - displaySVGInPreview: true, + //displaySVGInPreview: true, width: '400', matchTheme: false, zoomToFitOnResize: true, @@ -307,8 +307,8 @@ export class ExcalidrawSettingTab extends PluginSettingTab { this.containerEl.createEl('h1', {text: t("EMBED_HEAD")}); - - new Setting(containerEl) +//Removed in 1.4.0 when implementing ImageElement. +/* new Setting(containerEl) .setName(t("EMBED_PREVIEW_SVG_NAME")) .setDesc(t("EMBED_PREVIEW_SVG_DESC")) .addToggle(toggle => toggle @@ -316,8 +316,7 @@ export class ExcalidrawSettingTab extends PluginSettingTab { .onChange(async (value) => { this.plugin.settings.displaySVGInPreview = value; this.applySettingsUpdate(); - })); - + }));*/ new Setting(containerEl) .setName(t("EMBED_WIDTH_NAME")) diff --git a/yarn.lock b/yarn.lock index 36a440c..30714be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2750,34 +2750,7 @@ "strip-ansi" "^3.0.0" "supports-color" "^2.0.0" -"chalk@^2.0.0": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^2.0.1": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^2.1.0": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^2.4.1": +"chalk@^2.0.0", "chalk@^2.0.1", "chalk@^2.1.0", "chalk@^2.4.1": "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" "version" "2.4.2" @@ -3888,21 +3861,25 @@ "is-arrayish" "^0.2.1" "es-abstract@^1.18.0-next.2": - "integrity" "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==" - "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz" - "version" "1.18.3" + "integrity" "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==" + "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz" + "version" "1.19.1" dependencies: "call-bind" "^1.0.2" "es-to-primitive" "^1.2.1" "function-bind" "^1.1.1" "get-intrinsic" "^1.1.1" + "get-symbol-description" "^1.0.0" "has" "^1.0.3" "has-symbols" "^1.0.2" - "is-callable" "^1.2.3" + "internal-slot" "^1.0.3" + "is-callable" "^1.2.4" "is-negative-zero" "^2.0.1" - "is-regex" "^1.1.3" - "is-string" "^1.0.6" - "object-inspect" "^1.10.3" + "is-regex" "^1.1.4" + "is-shared-array-buffer" "^1.0.1" + "is-string" "^1.0.7" + "is-weakref" "^1.0.1" + "object-inspect" "^1.11.0" "object-keys" "^1.1.1" "object.assign" "^4.1.2" "string.prototype.trimend" "^1.0.4" @@ -4712,7 +4689,7 @@ "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" "version" "2.0.5" -"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.1": +"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.0", "get-intrinsic@^1.1.1": "integrity" "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==" "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" "version" "1.1.1" @@ -4731,6 +4708,14 @@ "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz" "version" "3.0.0" +"get-symbol-description@^1.0.0": + "integrity" "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==" + "resolved" "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.1.1" + "get-value@^2.0.3", "get-value@^2.0.6": "integrity" "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" "resolved" "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" @@ -4946,6 +4931,13 @@ "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" "version" "1.0.2" +"has-tostringtag@^1.0.0": + "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" + "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "has-symbols" "^1.0.2" + "has-value@^0.3.1": "integrity" "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=" "resolved" "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" @@ -5275,6 +5267,15 @@ dependencies: "meow" "^3.3.0" +"internal-slot@^1.0.3": + "integrity" "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==" + "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "get-intrinsic" "^1.1.0" + "has" "^1.0.3" + "side-channel" "^1.0.4" + "interpret@^1.0.0": "integrity" "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" "resolved" "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" @@ -5371,10 +5372,10 @@ dependencies: "builtin-modules" "^1.0.0" -"is-callable@^1.1.4", "is-callable@^1.2.3": - "integrity" "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" - "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz" - "version" "1.2.3" +"is-callable@^1.1.4", "is-callable@^1.2.4": + "integrity" "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz" + "version" "1.2.4" "is-ci@^1.0.10": "integrity" "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==" @@ -5631,13 +5632,13 @@ dependencies: "@types/estree" "*" -"is-regex@^1.0.4", "is-regex@^1.1.3": - "integrity" "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==" - "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz" - "version" "1.1.3" +"is-regex@^1.0.4", "is-regex@^1.1.4": + "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" + "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + "version" "1.1.4" dependencies: "call-bind" "^1.0.2" - "has-symbols" "^1.0.2" + "has-tostringtag" "^1.0.0" "is-resolvable@^1.0.0": "integrity" "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" @@ -5654,15 +5655,22 @@ "resolved" "https://registry.npmjs.org/is-root/-/is-root-1.0.0.tgz" "version" "1.0.0" +"is-shared-array-buffer@^1.0.1": + "integrity" "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" + "resolved" "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz" + "version" "1.0.1" + "is-stream@^1.0.0", "is-stream@^1.1.0": "integrity" "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" "version" "1.1.0" -"is-string@^1.0.5", "is-string@^1.0.6": - "integrity" "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==" - "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz" - "version" "1.0.6" +"is-string@^1.0.5", "is-string@^1.0.7": + "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" + "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "has-tostringtag" "^1.0.0" "is-svg@^2.0.0": "integrity" "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=" @@ -5688,6 +5696,13 @@ "resolved" "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" "version" "0.2.1" +"is-weakref@^1.0.1": + "integrity" "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==" + "resolved" "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "call-bind" "^1.0.0" + "is-windows@^1.0.1", "is-windows@^1.0.2": "integrity" "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" "resolved" "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" @@ -6930,10 +6945,10 @@ "resolved" "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz" "version" "1.3.1" -"object-inspect@^1.10.3": - "integrity" "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==" - "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz" - "version" "1.10.3" +"object-inspect@^1.11.0", "object-inspect@^1.9.0": + "integrity" "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" + "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz" + "version" "1.11.0" "object-is@^1.0.1": "integrity" "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==" @@ -8766,6 +8781,15 @@ "resolved" "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz" "version" "0.1.1" +"side-channel@^1.0.4": + "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" + "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "call-bind" "^1.0.0" + "get-intrinsic" "^1.0.2" + "object-inspect" "^1.9.0" + "sigmund@^1.0.1": "integrity" "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" "resolved" "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" @@ -9198,14 +9222,7 @@ dependencies: "has-flag" "^2.0.0" -"supports-color@^5.1.0": - "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "has-flag" "^3.0.0" - -"supports-color@^5.3.0", "supports-color@^5.4.0": +"supports-color@^5.1.0", "supports-color@^5.3.0", "supports-color@^5.4.0": "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" "version" "5.5.0"