diff --git a/manifest.json b/manifest.json index fd901ee..89d88fd 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-excalidraw-plugin", "name": "Excalidraw", - "version": "1.8.22", + "version": "1.8.23", "minAppVersion": "1.1.6", "description": "An Obsidian plugin to edit and view Excalidraw drawings", "author": "Zsolt Viczian", diff --git a/package.json b/package.json index 95949bf..ec1437b 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "license": "MIT", "dependencies": { "@types/lz-string": "^1.3.34", - "@zsviczian/excalidraw": "0.14.2-obsidian-4", + "@zsviczian/excalidraw": "0.14.2-obsidian-5", "chroma-js": "^2.4.2", "clsx": "^1.2.1", "colormaster": "^1.2.1", diff --git a/src/EmbeddedFileLoader.ts b/src/EmbeddedFileLoader.ts index 30b3d1e..c3c8fbf 100644 --- a/src/EmbeddedFileLoader.ts +++ b/src/EmbeddedFileLoader.ts @@ -14,7 +14,6 @@ import { FRONTMATTER_KEY_MD_STYLE, IMAGE_TYPES, nanoid, - URLFETCHTIMEOUT, VIRGIL_FONT, } from "./Constants"; import { createSVG } from "./ExcalidrawAutomate"; @@ -70,6 +69,59 @@ export type Size = { width: number; }; +export interface ColorMap { + [color: string]: string; +}; + +/** + * Function takes an SVG and replaces all fill and stroke colors with the ones in the colorMap + * @param svg: SVGSVGElement + * @param colorMap: {[color: string]: string;} | null + * @returns svg with colors replaced + */ +const replaceSVGColors = (svg: SVGSVGElement | string, colorMap: ColorMap | null): SVGSVGElement | string => { + if(!colorMap) { + return svg; + } + + if(typeof svg === 'string') { + // Replace colors in the SVG string + for (const [oldColor, newColor] of Object.entries(colorMap)) { + const fillRegex = new RegExp(`fill="${oldColor}"`, 'g'); + svg = svg.replaceAll(fillRegex, `fill="${newColor}"`); + const strokeRegex = new RegExp(`stroke="${oldColor}"`, 'g'); + svg = svg.replaceAll(strokeRegex, `stroke="${newColor}"`); + } + return svg; + } + + // Modify the fill and stroke attributes of child nodes + const childNodes = (node: ChildNode) => { + if (node instanceof SVGElement) { + const oldFill = node.getAttribute('fill'); + const oldStroke = node.getAttribute('stroke'); + + if (oldFill && colorMap[oldFill]) { + node.setAttribute('fill', colorMap[oldFill]); + } + if (oldStroke && colorMap[oldStroke]) { + node.setAttribute('stroke', colorMap[oldStroke]); + } + } + for(const child of node.childNodes) { + childNodes(child); + } + } + + for (const child of svg.childNodes) { + childNodes(child); + } + + return svg; +} + + + export class EmbeddedFile { public file: TFile = null; public isSVGwithBitmap: boolean = false; @@ -84,10 +136,18 @@ export class EmbeddedFile { public attemptCounter: number = 0; public isHyperlink: boolean = false; public hyperlink:DataURL; + public colorMap: ColorMap | null = null; - constructor(plugin: ExcalidrawPlugin, hostPath: string, imgPath: string) { + constructor(plugin: ExcalidrawPlugin, hostPath: string, imgPath: string, colorMapJSON?: string) { this.plugin = plugin; this.resetImage(hostPath, imgPath); + if(this.file && (this.plugin.ea.isExcalidrawFile(this.file) || this.file.extension.toLowerCase() === "svg")) { + try { + this.colorMap = colorMapJSON ? JSON.parse(colorMapJSON) : null; + } catch (error) { + this.colorMap = null; + } + } } public resetImage(hostPath: string, imgPath: string) { @@ -284,19 +344,23 @@ export class EmbeddedFilesLoader { : false, withTheme: !!forceTheme, }; - const svg = await createSVG( - file.path, - true, - exportSettings, - this, - forceTheme, - null, - null, - [], - this.plugin, - depth+1, - getExportPadding(this.plugin, file), - ); + const svg = replaceSVGColors( + await createSVG( + file.path, + true, + exportSettings, + this, + forceTheme, + null, + null, + [], + this.plugin, + depth+1, + getExportPadding(this.plugin, file), + ), + inFile instanceof EmbeddedFile ? inFile.colorMap : null + ) as SVGSVGElement; + //https://stackoverflow.com/questions/51154171/remove-css-filter-on-child-elements const imageList = svg.querySelectorAll( "image:not([href^='data:image/svg'])", @@ -340,7 +404,7 @@ export class EmbeddedFilesLoader { ) : excalidrawSVG ?? (file.extension === "svg" - ? await getSVGData(app, file) + ? await getSVGData(app, file, inFile instanceof EmbeddedFile ? inFile.colorMap : null) : file.extension === "md" ? null : await getDataURL(ab, mimeType)); @@ -673,8 +737,8 @@ export class EmbeddedFilesLoader { }; } -const getSVGData = async (app: App, file: TFile): Promise => { - const svg = await app.vault.read(file); +const getSVGData = async (app: App, file: TFile, colorMap: ColorMap | null): Promise => { + const svg = replaceSVGColors(await app.vault.read(file), colorMap) as string; return svgToBase64(svg) as DataURL; }; diff --git a/src/ExcalidrawAutomate.ts b/src/ExcalidrawAutomate.ts index 845bfb0..532ec78 100644 --- a/src/ExcalidrawAutomate.ts +++ b/src/ExcalidrawAutomate.ts @@ -2443,7 +2443,7 @@ export const insertLaTeXToView = (view: ExcalidrawView) => { const prompt = new Prompt( app, t("ENTER_LATEX"), - "", + view.plugin.settings.latexBoilerplate, "\\color{red}\\oint_S {E_n dA = \\frac{1}{{\\varepsilon _0 }}} Q_{inside}", ); prompt.openAndGetValue(async (formula: string) => { diff --git a/src/ExcalidrawData.ts b/src/ExcalidrawData.ts index 1c8d9df..d231f28 100644 --- a/src/ExcalidrawData.ts +++ b/src/ExcalidrawData.ts @@ -19,7 +19,7 @@ import { FRONTMATTER_KEY_AUTOEXPORT, DEVICE, } from "./Constants"; -import { verifyMinimumPluginVersion, _measureText } from "./ExcalidrawAutomate"; +import { _measureText } from "./ExcalidrawAutomate"; import ExcalidrawPlugin from "./main"; import { JSON_parse } from "./Constants"; import { TextMode } from "./ExcalidrawView"; @@ -552,13 +552,14 @@ export class ExcalidrawData { data.indexOf("# Embedded files\n") + "# Embedded files\n".length, ); //Load Embedded files - const REG_FILEID_FILEPATH = /([\w\d]*):\s*\[\[([^\]]*)]]\n/gm; + const REG_FILEID_FILEPATH = /([\w\d]*):\s*\[\[([^\]]*)]]\s?(\{[^}]*})?\n/gm; res = data.matchAll(REG_FILEID_FILEPATH); while (!(parts = res.next()).done) { const embeddedFile = new EmbeddedFile( this.plugin, this.file.path, parts.value[2], + parts.value[3], ); this.setFile(parts.value[1] as FileId, embeddedFile); } @@ -1086,7 +1087,8 @@ export class ExcalidrawData { const path = ef.file ? ef.linkParts.original.replace(PATHREG,app.metadataCache.fileToLinktext(ef.file,this.file.path)) : ef.linkParts.original; - outString += `${key}: [[${path}]]\n`; + const colorMap = ef.colorMap ? " " + JSON.stringify(ef.colorMap) : ""; + outString += `${key}: [[${path}]]${colorMap}\n`; } } } @@ -1515,6 +1517,7 @@ export class ExcalidrawData { ? null : parts[1], hasSVGwithBitmap: data.isSVGwithBitmap, + colorMapJSON: data.colorMap ? JSON.stringify(data.colorMap) : null, }); } @@ -1573,7 +1576,8 @@ export class ExcalidrawData { this.file.path, (masterFile.blockrefData ? path + "#" + masterFile.blockrefData - : path) + (fixScale?"|100%":"") + : path) + (fixScale?"|100%":""), + masterFile.colorMapJSON ); this.files.set(fileId, embeddedFile); return true; diff --git a/src/ExcalidrawView.ts b/src/ExcalidrawView.ts index f3f12cf..cacbba5 100644 --- a/src/ExcalidrawView.ts +++ b/src/ExcalidrawView.ts @@ -333,7 +333,7 @@ export default class ExcalidrawView extends TextFileView { } } - public async exportExcalidraw() { + public async exportExcalidraw(selectedOnly?: boolean) { if (!this.getScene || !this.file) { return; } @@ -366,7 +366,7 @@ export default class ExcalidrawView extends TextFileView { } download( "data:text/plain;charset=utf-8", - encodeURIComponent(JSON.stringify(this.getScene(), null, "\t")), + encodeURIComponent(JSON.stringify(this.getScene(selectedOnly), null, "\t")), `${this.file.basename}.excalidraw`, ); } @@ -430,12 +430,12 @@ export default class ExcalidrawView extends TextFileView { } } - public async exportSVG(embedScene?: boolean):Promise { + public async exportSVG(embedScene?: boolean, selectedOnly?: boolean):Promise { if (!this.getScene || !this.file) { return; } - let svg = await this.svg(this.getScene(),undefined,embedScene); + let svg = await this.svg(this.getScene(selectedOnly),undefined,embedScene); if (!svg) { return; } @@ -503,12 +503,12 @@ export default class ExcalidrawView extends TextFileView { } } - public async exportPNGToClipboard(embedScene?:boolean) { + public async exportPNGToClipboard(embedScene?:boolean, selectedOnly?: boolean) { if (!this.getScene || !this.file) { return; } - const png = await this.png(this.getScene(), undefined, embedScene); + const png = await this.png(this.getScene(selectedOnly), undefined, embedScene); if (!png) { return; } @@ -527,12 +527,12 @@ export default class ExcalidrawView extends TextFileView { ]); } - public async exportPNG(embedScene?:boolean):Promise { + public async exportPNG(embedScene?:boolean, selectedOnly?: boolean):Promise { if (!this.getScene || !this.file) { return; } - const png = await this.png(this.getScene(), undefined, embedScene); + const png = await this.png(this.getScene(selectedOnly), undefined, embedScene); if (!png) { return; } @@ -725,6 +725,12 @@ export default class ExcalidrawView extends TextFileView { } } + toggleDisableBinding() { + const newState = !this.excalidrawAPI.getAppState().invertBindingBehaviour; + this.updateScene({appState: {invertBindingBehaviour:newState}}); + new Notice(newState ? "Inverted Mode: Default arrow binding is now disabled. Use CTRL/CMD to temporarily enable binding when needed." : "Normal Mode: Arrow binding is now enabled. Use CTRL/CMD to temporarily disable binding when needed."); + } + gotoFullscreen() { if(this.plugin.leafChangeTimeout) { clearTimeout(this.plugin.leafChangeTimeout); @@ -2134,6 +2140,7 @@ export default class ExcalidrawView extends TextFileView { private previousSceneVersion = 0; public previousBackgroundColor = ""; + public previousTheme = ""; private colorChangeTimer:NodeJS.Timeout = null; private async instantiateExcalidraw( @@ -2563,14 +2570,14 @@ export default class ExcalidrawView extends TextFileView { return true; }; - this.getScene = () => { + this.getScene = (selectedOnly?: boolean) => { const api = this.excalidrawAPI; if (!excalidrawRef?.current || !api) { return null; } - const el: ExcalidrawElement[] = api.getSceneElements(); + const el: ExcalidrawElement[] = selectedOnly ? this.getViewSelectedElements() : api.getSceneElements(); const st: AppState = api.getAppState(); - const files = api.getFiles(); + const files = {...api.getFiles()}; if (files) { const imgIds = el @@ -3021,9 +3028,14 @@ export default class ExcalidrawView extends TextFileView { } this.previousSceneVersion = this.getSceneVersion(et); this.previousBackgroundColor = st.viewBackgroundColor; + this.previousTheme = st.theme; canvasColorChangeHook(); return; } + if(st.theme !== this.previousTheme && this.file === this.excalidrawData.file) { + this.previousTheme = st.theme; + this.setDirty(5); + } if(st.viewBackgroundColor !== this.previousBackgroundColor && this.file === this.excalidrawData.file) { this.previousBackgroundColor = st.viewBackgroundColor; this.setDirty(6); diff --git a/src/LaTeX.ts b/src/LaTeX.ts index 9eccbe4..63799f8 100644 --- a/src/LaTeX.ts +++ b/src/LaTeX.ts @@ -95,6 +95,9 @@ export async function mathjaxSVG( const eq = plugin.mathjax.tex2svg(tex, { display: true, scale: 4 }); const svg = eq.querySelector("svg"); if (svg) { + if(svg.width.baseVal.valueInSpecifiedUnits < 2) { + svg.width.baseVal.valueAsString = `${(svg.width.baseVal.valueInSpecifiedUnits+1).toFixed(3)}ex`; + } const dataURL = svgToBase64(svg.outerHTML); return { mimeType: "image/svg+xml", diff --git a/src/dialogs/ExportDialog.ts b/src/dialogs/ExportDialog.ts index 98483ef..39cc342 100644 --- a/src/dialogs/ExportDialog.ts +++ b/src/dialogs/ExportDialog.ts @@ -16,6 +16,8 @@ export class ExportDialog extends Modal { public transparent: boolean; public saveSettings: boolean; public dirty: boolean = false; + private selectedOnlySetting: Setting; + private hasSelectedElements: boolean = false; private boundingBox: { topX: number; topY: number; @@ -23,6 +25,7 @@ export class ExportDialog extends Modal { height: number; }; public embedScene: boolean; + public exportSelectedOnly: boolean; public saveToVault: boolean; constructor( @@ -38,6 +41,7 @@ export class ExportDialog extends Modal { this.theme = getExportTheme(this.plugin, this.file, (this.api).getAppState().theme) this.boundingBox = this.ea.getBoundingBox(this.ea.getViewElements()); this.embedScene = false; + this.exportSelectedOnly = false; this.saveToVault = true; this.transparent = !getWithBackground(this.plugin, this.file); this.saveSettings = false; @@ -46,6 +50,9 @@ export class ExportDialog extends Modal { onOpen(): void { this.containerEl.classList.add("excalidraw-release"); this.titleEl.setText(`Export Image`); + this.hasSelectedElements = this.view.getViewSelectedElements().length > 0; + //@ts-ignore + this.selectedOnlySetting.setVisibility(this.hasSelectedElements); } async onClose() { @@ -96,99 +103,107 @@ export class ExportDialog extends Modal { }) ) - const themeMessage = () => `Export with ${this.theme} theme`; - const themeSetting = new Setting(this.contentEl) - .setName(themeMessage()) - .setDesc(fragWithHTML("Toggle on: Export with light theme
Toggle off: Export with dark theme")) - .addToggle(toggle => - toggle - .setValue(this.theme === "dark" ? false : true) + new Setting(this.contentEl) + .setName("Export theme") + .addDropdown(dropdown => + dropdown + .addOption("light","Light") + .addOption("dark","Dark") + .setValue(this.theme) .onChange(value => { - this.theme = value ? "light" : "dark"; - themeSetting.setName(themeMessage()); + this.theme = value; }) - ) + ) - const transparencyMessage = () => `Export with ${this.transparent ? "transparent ":""}background`; - const transparentSetting = new Setting(this.contentEl) - .setName(transparencyMessage()) - .setDesc(fragWithHTML("Toggle on: Export with transparent background
Toggle off: Export with background")) - .addToggle(toggle => - toggle - .setValue(this.transparent) + new Setting(this.contentEl) + .setName("Background color") + .addDropdown(dropdown => + dropdown + .addOption("transparent","Transparent") + .addOption("with-color","Use scene background color") + .setValue(this.transparent?"transparent":"with-color") .onChange(value => { - this.transparent = value; - transparentSetting.setName(transparencyMessage()) + this.transparent = value === "transparent"; }) - ) - - const saveSettingsMessage = () => this.saveSettings?"Save these settings as the preset for this image":"These are one-time settings" - const saveSettingsSetting= new Setting(this.contentEl) - .setName(saveSettingsMessage()) - .setDesc(fragWithHTML("Saving these settings as preset will override general export settings for this image.
Toggle on: Save as preset for this image
Toggle off: Don't save as preset")) - .addToggle(toggle => - toggle - .setValue(this.saveSettings) + ) + + new Setting(this.contentEl) + .setName("Save or one-time settings?") + .addDropdown(dropdown => + dropdown + .addOption("save","Save these settings as the preset for this image") + .addOption("one-time","These are one-time settings") + .setValue(this.saveSettings?"save":"one-time") .onChange(value => { - this.saveSettings = value; - saveSettingsSetting.setName(saveSettingsMessage()) + this.saveSettings = value === "save"; }) - ) + ) this.contentEl.createEl("h1",{text:"Export settings"}); - const embedSceneMessage = () => this.embedScene?"Embed scene":"Do not embed scene"; - const embedSetting = new Setting(this.contentEl) - .setName(embedSceneMessage()) - .setDesc(fragWithHTML("Embed the Excalidraw scene into the PNG or SVG image
Toggle on: Embed scene
Toggle off: Do not embed scene")) - .addToggle(toggle => - toggle - .setValue(this.embedScene) + new Setting(this.contentEl) + .setName("Embed the Excalidraw scene in the exported file?") + .addDropdown(dropdown => + dropdown + .addOption("embed","Embed scene") + .addOption("no-embed","Do not embed scene") + .setValue(this.embedScene?"embed":"no-embed") .onChange(value => { - this.embedScene = value; - embedSetting.setName(embedSceneMessage()) + this.embedScene = value === "embed"; }) - ) + ) if(DEVICE.isDesktop) { - const saveToMessage = () => this.saveToVault?"Save image to your Vault":"Export image outside your Vault"; - const saveToSetting = new Setting(this.contentEl) - .setName(saveToMessage()) - .setDesc(fragWithHTML("Toggle on: Save image to your Vault in the same folder as this drawing
Toggle off: Save image outside your Vault")) - .addToggle(toggle => - toggle - .setValue(this.saveToVault) - .onChange(value => { - this.saveToVault = value; - saveToSetting.setName(saveToMessage()) - }) - ) + new Setting(this.contentEl) + .setName("Where to save the image?") + .addDropdown(dropdown => + dropdown + .addOption("vault","Save image to your Vault") + .addOption("outside","Export image outside your Vault") + .setValue(this.saveToVault?"vault":"outside") + .onChange(value => { + this.saveToVault = value === "vault"; + }) + ) } + this.selectedOnlySetting = new Setting(this.contentEl) + .setName("Export entire scene or just selected elements?") + .addDropdown(dropdown => + dropdown + .addOption("all","Export entire scene") + .addOption("selected","Export selected elements") + .setValue(this.exportSelectedOnly?"selected":"all") + .onChange(value => { + this.exportSelectedOnly = value === "selected"; + }) + ) + + const div = this.contentEl.createDiv({cls: "excalidraw-prompt-buttons-div"}); const bPNG = div.createEl("button", { text: "PNG to File", cls: "excalidraw-prompt-button"}); bPNG.onclick = () => { this.saveToVault - ? this.view.savePNG() - : this.view.exportPNG(); + ? this.view.savePNG(this.view.getScene(this.hasSelectedElements && this.exportSelectedOnly)) + : this.view.exportPNG(this.embedScene,this.hasSelectedElements && this.exportSelectedOnly); this.close(); }; const bSVG = div.createEl("button", { text: "SVG to File", cls: "excalidraw-prompt-button" }); bSVG.onclick = () => { this.saveToVault - ? this.view.saveSVG() - : this.view.exportSVG(); + ? this.view.saveSVG(this.view.getScene(this.hasSelectedElements && this.exportSelectedOnly)) + : this.view.exportSVG(this.embedScene,this.hasSelectedElements && this.exportSelectedOnly); this.close(); }; const bExcalidraw = div.createEl("button", { text: "Excalidraw", cls: "excalidraw-prompt-button" }); bExcalidraw.onclick = () => { - this.view.exportExcalidraw(); + this.view.exportExcalidraw(this.hasSelectedElements && this.exportSelectedOnly); this.close(); }; if(DEVICE.isDesktop) { const bPNGClipboard = div.createEl("button", { text: "PNG to Clipboard", cls: "excalidraw-prompt-button" }); bPNGClipboard.onclick = () => { - this.view.exportPNGToClipboard(); + this.view.exportPNGToClipboard(this.embedScene, this.hasSelectedElements && this.exportSelectedOnly); this.close(); }; } diff --git a/src/dialogs/Messages.ts b/src/dialogs/Messages.ts index 5c5702b..a61279a 100644 --- a/src/dialogs/Messages.ts +++ b/src/dialogs/Messages.ts @@ -17,6 +17,25 @@ I develop this plugin as a hobby, spending my free time doing this. If you find
`, +"1.8.23": ` +## Fixes +- Fixed palm rejection to prevent unwanted spikes when using the freedraw tool. ([#1065](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1065)) +- Fixed issue where images disappeared when zoomed in. ([#6417](https://github.com/excalidraw/excalidraw/pull/6417)) +- Autosave will now save the drawing when you change the theme from dark to light or vice versa. ([#1080](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1080)) +- Added padding to short LaTeX formulas to prevent cropping. ([#1053](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1053)) + +## New Features +- Added a new command palette action: Toggle to invert default binding behavior. This new feature allows you to switch between normal and inverted mode. In normal mode, arrows will bind to objects unless you hold the CTRL/CMD key while drawing the arrow or moving objects. In inverted mode, arrows will not bind to objects unless you hold the CTRL/CMD key while drawing the arrow or moving objects. +- You can now set a template LaTeX formula in the plugin settings (under experimental features) to be used when creating a new LaTeX formula. ([#1090](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1090)) +- Redesigned the Image Export dialog. I hope dropdowns are now more intuitive than the toggles were. +- Added the ability to export only the selected part of a drawing. See the Export dialog for more information. +- Added a zigzag fill easter egg. See a demo of this feature [here](https://twitter.com/excalidraw/status/1645428942344445952?s=61&t=nivKLx2vgl6hdv2EbW4mZg). +- Added a new expert function: recolor embedded Excalidraw and SVG images (not JPG, PNG, BMP, WEBP, GIF). See a demo of this feature here: + +
+ +
+`, "1.8.22": ` ## Fixed - Styling of custom pen and script buttons in the side panel was inverted. diff --git a/src/lang/locale/en.ts b/src/lang/locale/en.ts index 6d7a5a0..5d597d3 100644 --- a/src/lang/locale/en.ts +++ b/src/lang/locale/en.ts @@ -413,6 +413,8 @@ FILENAME_HEAD: "Filename", MATHJAX_DESC: "If you are using LaTeX equiations in Excalidraw then the plugin needs to load a javascript library for that. " + "Some users are unable to access certain host servers. If you are experiencing issues try changing the host here. You may need to "+ "restart Obsidian after closing settings, for this change to take effect.", + LATEX_DEFAULT_NAME: "Default LaTeX formual for new equations", + LATEX_DEFAULT_DESC: "Leave empty if you don't want a default formula. You can add default formatting here such as \\color{white}.", NONSTANDARD_HEAD: "Non-Excalidraw.com supported features", NONSTANDARD_DESC: "These features are not available on excalidraw.com. When exporting the drawing to Excalidraw.com these features will appear different.", CUSTOM_PEN_NAME: "Number of custom pens", @@ -486,6 +488,7 @@ FILENAME_HEAD: "Filename", GOTO_FULLSCREEN: "Goto fullscreen mode", EXIT_FULLSCREEN: "Exit fullscreen mode", TOGGLE_FULLSCREEN: "Toggle fullscreen mode", + TOGGLE_DISABLEBINDING: "Toggle to invert default binding behavior", OPEN_LINK_CLICK: "Navigate to selected element link", OPEN_LINK_PROPS: "Open markdown-embed properties or open link in new window" }; diff --git a/src/main.ts b/src/main.ts index 5891c0b..3a76335 100644 --- a/src/main.ts +++ b/src/main.ts @@ -103,6 +103,7 @@ import { Packages } from "./types"; import { ScriptInstallPrompt } from "./dialogs/ScriptInstallPrompt"; import Taskbone from "./ocr/Taskbone"; import { emulateCTRLClickForLinks, linkClickModifierType, PaneTarget } from "./utils/ModifierkeyHelper"; +import { ColorMap } from "./EmbeddedFileLoader"; declare module "obsidian" { @@ -156,7 +157,7 @@ export default class ExcalidrawPlugin extends Plugin { public opencount: number = 0; public ea: ExcalidrawAutomate; //A master list of fileIds to facilitate copy / paste - public filesMaster: Map = + public filesMaster: Map = null; //fileId, path public equationsMaster: Map = null; //fileId, formula public mathjax: any = null; @@ -172,7 +173,7 @@ export default class ExcalidrawPlugin extends Plugin { super(app, manifest); this.filesMaster = new Map< FileId, - { isHyperlink: boolean; path: string; hasSVGwithBitmap: boolean; blockrefData: string } + { isHyperlink: boolean; path: string; hasSVGwithBitmap: boolean; blockrefData: string; colorMapJSON?: string } >(); this.equationsMaster = new Map(); } @@ -1032,6 +1033,24 @@ export default class ExcalidrawPlugin extends Plugin { }, }); + this.addCommand({ + id: "disable-binding", + name: t("TOGGLE_DISABLEBINDING"), + checkCallback: (checking: boolean) => { + if (checking) { + return ( + Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView)) + ); + } + const view = this.app.workspace.getActiveViewOfType(ExcalidrawView); + if (view) { + view.toggleDisableBinding(); + return true; + } + return false; + }, + }); + this.addCommand({ id: "export-png", name: t("EXPORT_PNG"), diff --git a/src/settings.ts b/src/settings.ts index 5382380..2534e96 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -120,6 +120,7 @@ export interface ExcalidrawSettings { showReleaseNotes: boolean; showNewVersionNotification: boolean; mathjaxSourceURL: string; + latexBoilerplate: string; taskboneEnabled: boolean; taskboneAPIkey: string; pinnedScripts: string[]; @@ -220,6 +221,7 @@ export const DEFAULT_SETTINGS: ExcalidrawSettings = { showReleaseNotes: true, showNewVersionNotification: true, mathjaxSourceURL: "https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js", + latexBoilerplate: "\\color{blue}", taskboneEnabled: false, taskboneAPIkey: "", pinnedScripts: [], @@ -1464,6 +1466,18 @@ export class ExcalidrawSettingTab extends PluginSettingTab { }) }) + new Setting(containerEl) + .setName(t("LATEX_DEFAULT_NAME")) + .setDesc(fragWithHTML(t("LATEX_DEFAULT_DESC"))) + .addText((text) => + text + .setValue(this.plugin.settings.latexBoilerplate) + .onChange( (value) => { + this.plugin.settings.latexBoilerplate = value; + this.applySettingsUpdate(); + }), + ); + new Setting(containerEl) .setName(t("FIELD_SUGGESTER_NAME")) .setDesc(fragWithHTML(t("FIELD_SUGGESTER_DESC"))) diff --git a/yarn.lock b/yarn.lock index dfec4a4..880abfa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1769,20 +1769,20 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^1.0.0": - "integrity" "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" - "resolved" "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz" - "version" "1.0.0" +"@types/estree@*", "@types/estree@0.0.39": + "integrity" "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz" + "version" "0.0.39" "@types/estree@^0.0.50": "integrity" "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz" "version" "0.0.50" -"@types/estree@0.0.39": - "integrity" "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" - "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz" - "version" "0.0.39" +"@types/estree@^1.0.0": + "integrity" "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + "resolved" "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz" + "version" "1.0.0" "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": "integrity" "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==" @@ -1896,6 +1896,11 @@ "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" "version" "4.0.0" +"@types/parse5@^6.0.3": + "integrity" "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==" + "resolved" "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz" + "version" "6.0.3" + "@types/prettier@^2.1.5": "integrity" "sha512-QzSuZMBuG5u8HqYz01qtMdg/Jfctlnvj1z/lYnIDXs/golxw0fxtRAHd9KrzjR7Yxz1qVeI00o0kiO3PmVdJ9w==" "resolved" "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.3.tgz" @@ -1999,6 +2004,13 @@ dependencies: "@types/node" "*" +"@types/xmlserializer@^0.6.3": + "integrity" "sha512-C4sPQn2oNQmXwk6oI1sY5mHcd1MJNOH2IXk4QFqxGBI9hSjrAOTP8Th/LsXqEU+E96dfaNrH+ZBTXfOWEGXOWQ==" + "resolved" "https://registry.npmjs.org/@types/xmlserializer/-/xmlserializer-0.6.3.tgz" + "version" "0.6.3" + dependencies: + "@types/parse5" "^6.0.3" + "@types/yargs-parser@*": "integrity" "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==" "resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz" @@ -2272,10 +2284,10 @@ dependencies: "@zerollup/ts-helpers" "^1.7.18" -"@zsviczian/excalidraw@0.14.2-obsidian-4": - "integrity" "sha512-MHgjnUJ9W9ny7FgE673ueozs3cZQHTGYtXNTHlXDGH/TgJuAo9Iwtohq4CskHN9/ylfatJN4Lkj+HI+lRgFDYQ==" - "resolved" "https://registry.npmjs.org/@zsviczian/excalidraw/-/excalidraw-0.14.2-obsidian-4.tgz" - "version" "0.14.2-obsidian-4" +"@zsviczian/excalidraw@0.14.2-obsidian-5": + "integrity" "sha512-Wav3VDhapWY60lFHF6UPFAwPPn1lCoRW/eesll8w4Xt4jBmz61NVtnsAmJmCEovwzZnFZwfsJ633Fbh1VYStyA==" + "resolved" "https://registry.npmjs.org/@zsviczian/excalidraw/-/excalidraw-0.14.2-obsidian-5.tgz" + "version" "0.14.2-obsidian-5" "abab@^2.0.3", "abab@^2.0.5": "integrity" "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" @@ -2430,7 +2442,7 @@ "uri-js" "^4.2.2" "alphanum-sort@^1.0.2": - "integrity" "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==" + "integrity" "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" "resolved" "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz" "version" "1.0.2" @@ -2468,14 +2480,7 @@ dependencies: "color-convert" "^1.9.0" -"ansi-styles@^4.0.0": - "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "color-convert" "^2.0.1" - -"ansi-styles@^4.1.0": +"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" "version" "4.3.0" @@ -2531,7 +2536,7 @@ "version" "2.1.2" "array-flatten@1.1.1": - "integrity" "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + "integrity" "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" "version" "1.1.1" @@ -2572,7 +2577,7 @@ "es-shim-unscopables" "^1.0.0" "asap@~2.0.6": - "integrity" "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + "integrity" "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" "resolved" "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" "version" "2.0.6" @@ -2589,12 +2594,12 @@ "lodash" "^4.17.14" "async@0.9.x": - "integrity" "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==" + "integrity" "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" "resolved" "https://registry.npmjs.org/async/-/async-0.9.2.tgz" "version" "0.9.2" "asynckit@^0.4.0": - "integrity" "sha1-x57Zf380y48robyXkLzDZkdLS3k= sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity" "sha1-x57Zf380y48robyXkLzDZkdLS3k=" "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" "version" "0.4.0" @@ -2777,7 +2782,7 @@ "babel-plugin-transform-react-remove-prop-types" "^0.4.24" "balanced-match@^1.0.0": - "integrity" "sha1-ibTRmasr7kneFk6gK4nORi1xt2c= sha512-9Y0g0Q8rmSt+H33DfKv7FOc3v+iRI+o1lbzt8jGcIosYW37IIW/2XVYq5NPdmaD5NQ59Nk26Kl/vZbwW9Fr8vg==" + "integrity" "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" "version" "1.0.0" @@ -2787,7 +2792,7 @@ "version" "1.0.2" "batch@0.6.1": - "integrity" "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + "integrity" "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" "resolved" "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" "version" "0.6.1" @@ -2833,7 +2838,7 @@ "type-is" "~1.6.18" "bonjour@^3.5.0": - "integrity" "sha1-jokKGD2O6aI5OzhExpGkK897yfU= sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==" + "integrity" "sha1-jokKGD2O6aI5OzhExpGkK897yfU=" "resolved" "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz" "version" "3.5.0" dependencies: @@ -2845,7 +2850,7 @@ "multicast-dns-service-types" "^1.1.0" "boolbase@^1.0.0", "boolbase@~1.0.0": - "integrity" "sha1-aN/1++YMUes3cl6p4+0xDcwed24= sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "integrity" "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" "version" "1.0.0" @@ -2909,7 +2914,7 @@ "version" "3.3.0" "bytes@3.0.0": - "integrity" "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" + "integrity" "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" "version" "3.0.0" @@ -3093,7 +3098,7 @@ "version" "1.2.1" "co@^4.6.0": - "integrity" "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" + "integrity" "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" "resolved" "https://registry.npmjs.org/co/-/co-4.6.0.tgz" "version" "4.6.0" @@ -3131,7 +3136,7 @@ "version" "1.1.4" "color-name@1.1.3": - "integrity" "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "integrity" "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" "version" "1.1.3" @@ -3188,7 +3193,7 @@ "version" "1.8.2" "commondir@^1.0.1": - "integrity" "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + "integrity" "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" "resolved" "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" "version" "1.0.1" @@ -3213,7 +3218,7 @@ "vary" "~1.1.2" "concat-map@0.0.1": - "integrity" "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "integrity" "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" "version" "0.0.1" @@ -3247,7 +3252,7 @@ "safe-buffer" "~5.1.1" "cookie-signature@1.0.6": - "integrity" "sha1-4wOogrNCzD7oylE6eZmXNNqzriw= sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + "integrity" "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" "version" "1.0.6" @@ -3595,7 +3600,7 @@ "version" "10.3.1" "dedent@^0.7.0": - "integrity" "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" + "integrity" "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" "resolved" "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" "version" "0.7.0" @@ -3612,7 +3617,7 @@ "regexp.prototype.flags" "^1.2.0" "deep-is@^0.1.3", "deep-is@~0.1.3": - "integrity" "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= sha512-GtxAN4HvBachZzm4OnWqc45ESpUCMwkYcsjnsPs23FwJbsO+k4t0k9bQCgOmzIlpHO28+WPK/KRbRk0DDHuuDw==" + "integrity" "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz" "version" "0.1.3" @@ -3642,7 +3647,7 @@ "object-keys" "^1.1.1" "defined@^1.0.0": - "integrity" "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==" + "integrity" "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" "resolved" "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz" "version" "1.0.0" @@ -3661,17 +3666,17 @@ "slash" "^3.0.0" "delayed-stream@~1.0.0": - "integrity" "sha1-3zrhmayt+31ECqrgsp4icrJOxhk= sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + "integrity" "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" "version" "1.0.0" "depd@~1.1.2": - "integrity" "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" + "integrity" "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" "version" "1.1.2" "destroy@~1.0.4": - "integrity" "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" + "integrity" "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" "version" "1.0.4" @@ -3730,7 +3735,7 @@ "version" "1.1.3" "dns-equal@^1.0.0": - "integrity" "sha1-s55/HabrCnW6nBcySzR1PEfgZU0= sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" + "integrity" "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" "resolved" "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" "version" "1.0.0" @@ -3743,7 +3748,7 @@ "safe-buffer" "^5.0.1" "dns-txt@^2.0.2": - "integrity" "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==" + "integrity" "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=" "resolved" "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz" "version" "2.0.2" dependencies: @@ -3852,7 +3857,7 @@ "version" "0.1.2" "ee-first@1.1.1": - "integrity" "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "integrity" "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" "version" "1.1.1" @@ -3889,7 +3894,7 @@ "version" "3.0.0" "encodeurl@~1.0.2": - "integrity" "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + "integrity" "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" "version" "1.0.2" @@ -3983,12 +3988,12 @@ "version" "3.1.1" "escape-html@~1.0.3": - "integrity" "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity" "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" "version" "1.0.3" "escape-string-regexp@^1.0.5": - "integrity" "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + "integrity" "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" "version" "1.0.5" @@ -4147,7 +4152,7 @@ dependencies: "@typescript-eslint/utils" "^5.13.0" -"eslint-scope@^5.1.1", "eslint-scope@5.1.1": +"eslint-scope@^5.1.1": "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" "version" "5.1.1" @@ -4163,6 +4168,14 @@ "esrecurse" "^4.3.0" "estraverse" "^5.2.0" +"eslint-scope@5.1.1": + "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "esrecurse" "^4.3.0" + "estraverse" "^4.1.1" + "eslint-utils@^3.0.0": "integrity" "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==" "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" @@ -4304,7 +4317,7 @@ "version" "2.0.3" "etag@~1.8.1": - "integrity" "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + "integrity" "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" "version" "1.8.1" @@ -4334,7 +4347,7 @@ "strip-final-newline" "^2.0.0" "exit@^0.1.2": - "integrity" "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==" + "integrity" "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" "resolved" "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" "version" "0.1.2" @@ -4411,7 +4424,7 @@ "version" "2.1.0" "fast-levenshtein@^2.0.6", "fast-levenshtein@~2.0.6": - "integrity" "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + "integrity" "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" "version" "2.0.6" @@ -4587,7 +4600,7 @@ "version" "4.1.2" "fresh@0.5.2": - "integrity" "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + "integrity" "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" "version" "0.5.2" @@ -4635,15 +4648,10 @@ "version" "1.0.3" "fs.realpath@^1.0.0": - "integrity" "sha1-FQStJSMVjKpA20onh8sBQRmU6k8= sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "integrity" "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" "version" "1.0.0" -"fsevents@^2.3.2", "fsevents@~2.3.2": - "integrity" "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" - "version" "2.3.2" - "function-bind@^1.1.1": "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" @@ -4660,7 +4668,7 @@ "functions-have-names" "^1.2.2" "functional-red-black-tree@^1.0.1": - "integrity" "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" + "integrity" "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" "resolved" "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" "version" "1.0.1" @@ -4716,81 +4724,33 @@ "resolved" "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz" "version" "3.4.3" -"glob-parent@^5.1.2": +"glob-parent@^5.1.2", "glob-parent@~5.1.2": "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" "version" "5.1.2" dependencies: "is-glob" "^4.0.1" -"glob-parent@^6.0.1", "glob-parent@^6.0.2": +"glob-parent@^6.0.1": "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" "version" "6.0.2" dependencies: "is-glob" "^4.0.3" -"glob-parent@~5.1.2": - "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - "version" "5.1.2" +"glob-parent@^6.0.2": + "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + "version" "6.0.2" dependencies: - "is-glob" "^4.0.1" + "is-glob" "^4.0.3" "glob-to-regexp@^0.4.1": "integrity" "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" "resolved" "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" "version" "0.4.1" -"glob@^7.1.1": - "integrity" "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" - "version" "7.1.6" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.0.4" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"glob@^7.1.2": - "integrity" "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" - "version" "7.1.6" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.0.4" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"glob@^7.1.3": - "integrity" "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" - "version" "7.1.6" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.0.4" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"glob@^7.1.4": - "integrity" "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" - "version" "7.1.6" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.0.4" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"glob@^7.1.6": +"glob@^7.1.1", "glob@^7.1.2", "glob@^7.1.3", "glob@^7.1.4", "glob@^7.1.6": "integrity" "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==" "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" "version" "7.1.6" @@ -4902,7 +4862,7 @@ "version" "1.0.2" "has-flag@^3.0.0": - "integrity" "sha1-tdRU3CGZriJWmfNGfloH87lVuv0= sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + "integrity" "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" "version" "3.0.0" @@ -4948,7 +4908,7 @@ "version" "0.1.4" "hpack.js@^2.1.6": - "integrity" "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==" + "integrity" "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=" "resolved" "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" "version" "2.1.6" dependencies: @@ -5017,12 +4977,12 @@ "entities" "^2.0.0" "http-deceiver@^1.2.7": - "integrity" "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + "integrity" "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" "resolved" "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" "version" "1.2.7" "http-errors@~1.6.2": - "integrity" "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==" + "integrity" "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=" "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" "version" "1.6.3" dependencies: @@ -5114,7 +5074,7 @@ "version" "6.1.5" "identity-obj-proxy@^3.0.0": - "integrity" "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==" + "integrity" "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=" "resolved" "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" "version" "3.0.0" dependencies: @@ -5125,7 +5085,17 @@ "resolved" "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" "version" "4.0.6" -"ignore@^5.1.1", "ignore@^5.1.8", "ignore@^5.2.0": +"ignore@^5.1.1": + "integrity" "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" + "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" + "version" "5.2.0" + +"ignore@^5.1.8": + "integrity" "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==" + "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz" + "version" "5.1.9" + +"ignore@^5.2.0": "integrity" "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" "version" "5.2.0" @@ -5152,7 +5122,7 @@ "resolve-cwd" "^3.0.0" "imurmurhash@^0.1.4": - "integrity" "sha1-khi5srkoojixPcT7a21XbyMUU+o= sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + "integrity" "sha1-khi5srkoojixPcT7a21XbyMUU+o=" "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" "version" "0.1.4" @@ -5162,7 +5132,7 @@ "version" "4.0.0" "inflight@^1.0.4": - "integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" + "integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" "version" "1.0.6" dependencies: @@ -5175,7 +5145,7 @@ "version" "2.0.4" "inherits@2.0.3": - "integrity" "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + "integrity" "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" "version" "2.0.3" @@ -5194,7 +5164,7 @@ "side-channel" "^1.0.4" "ip@^1.1.0": - "integrity" "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==" + "integrity" "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" "resolved" "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz" "version" "1.1.5" @@ -5217,7 +5187,7 @@ "has-tostringtag" "^1.0.0" "is-arrayish@^0.2.1": - "integrity" "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + "integrity" "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" "version" "0.2.1" @@ -5275,7 +5245,7 @@ "version" "2.2.1" "is-extglob@^2.1.1": - "integrity" "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + "integrity" "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" "version" "2.1.1" @@ -5297,7 +5267,7 @@ "is-extglob" "^2.1.1" "is-module@^1.0.0": - "integrity" "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" + "integrity" "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=" "resolved" "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" "version" "1.0.0" @@ -5319,7 +5289,7 @@ "version" "7.0.0" "is-obj@^1.0.1": - "integrity" "sha1-PkcprB9f3gJc19g6iW2rn09n2w8= sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==" + "integrity" "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" "version" "1.0.1" @@ -5364,7 +5334,7 @@ "has-tostringtag" "^1.0.0" "is-regexp@^1.0.0": - "integrity" "sha1-/S2INUXEa6xaYz57mgnof6LLUGk= sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==" + "integrity" "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" "resolved" "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" "version" "1.0.0" @@ -5400,7 +5370,7 @@ "has-symbols" "^1.0.2" "is-typedarray@^1.0.0": - "integrity" "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + "integrity" "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" "resolved" "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" "version" "1.0.0" @@ -5419,12 +5389,12 @@ "is-docker" "^2.0.0" "isarray@~1.0.0": - "integrity" "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "integrity" "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" "version" "1.0.0" "isexe@^2.0.0": - "integrity" "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "integrity" "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" "version" "2.0.0" @@ -5995,7 +5965,7 @@ "version" "0.4.0" "json-stable-stringify-without-jsonify@^1.0.1": - "integrity" "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + "integrity" "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" "version" "1.0.1" @@ -6012,7 +5982,7 @@ "version" "2.2.3" "jsonfile@^4.0.0": - "integrity" "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==" + "integrity" "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=" "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" "version" "4.0.0" optionalDependencies: @@ -6081,7 +6051,7 @@ "type-check" "~0.4.0" "levn@~0.3.0": - "integrity" "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==" + "integrity" "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=" "resolved" "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" "version" "0.3.0" dependencies: @@ -6157,12 +6127,12 @@ "p-locate" "^5.0.0" "lodash.debounce@^4.0.8": - "integrity" "sha1-gteb/zCmfEAF/9XiUVMArZyk168= sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + "integrity" "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" "resolved" "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" "version" "4.0.8" "lodash.memoize@^4.1.2": - "integrity" "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + "integrity" "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" "resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" "version" "4.1.2" @@ -6172,12 +6142,12 @@ "version" "4.6.2" "lodash.sortby@^4.7.0": - "integrity" "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" + "integrity" "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" "resolved" "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" "version" "4.7.0" "lodash.uniq@^4.5.0": - "integrity" "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + "integrity" "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" "resolved" "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" "version" "4.5.0" @@ -6215,24 +6185,17 @@ "yallist" "^4.0.0" "lz-string@^1.4.4": - "integrity" "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==" + "integrity" "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=" "resolved" "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz" "version" "1.4.4" -"magic-string@^0.25.0": +"magic-string@^0.25.0", "magic-string@^0.25.7": "integrity" "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==" "resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz" "version" "0.25.7" dependencies: "sourcemap-codec" "^1.4.4" -"magic-string@^0.25.7": - "integrity" "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==" - "resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" - "version" "0.25.9" - dependencies: - "sourcemap-codec" "^1.4.8" - "magic-string@^0.27.0": "integrity" "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==" "resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz" @@ -6270,7 +6233,7 @@ "version" "2.0.4" "media-typer@0.3.0": - "integrity" "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + "integrity" "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" "version" "0.3.0" @@ -6282,7 +6245,7 @@ "fs-monkey" "1.0.3" "merge-descriptors@1.0.1": - "integrity" "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "integrity" "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" "version" "1.0.1" @@ -6297,7 +6260,7 @@ "version" "1.4.1" "methods@~1.1.2": - "integrity" "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + "integrity" "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" "version" "1.1.2" @@ -6392,7 +6355,7 @@ "version" "2.1.2" "ms@2.0.0": - "integrity" "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity" "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" "version" "2.0.0" @@ -6402,7 +6365,7 @@ "version" "2.1.3" "multicast-dns-service-types@^1.1.0": - "integrity" "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==" + "integrity" "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" "resolved" "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz" "version" "1.1.0" @@ -6425,7 +6388,7 @@ "version" "4.0.0" "natural-compare@^1.4.0": - "integrity" "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + "integrity" "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" "version" "1.4.0" @@ -6453,7 +6416,7 @@ "version" "1.2.1" "node-int64@^0.4.0": - "integrity" "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" + "integrity" "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" "resolved" "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" "version" "0.4.0" @@ -6468,7 +6431,7 @@ "version" "3.0.0" "normalize-range@^0.1.2": - "integrity" "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" + "integrity" "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" "resolved" "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" "version" "0.1.2" @@ -6504,7 +6467,7 @@ "version" "2.2.0" "object-assign@^4.1.1": - "integrity" "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + "integrity" "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" "version" "4.1.1" @@ -6599,7 +6562,7 @@ "version" "1.1.2" "on-finished@~2.3.0": - "integrity" "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==" + "integrity" "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=" "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" "version" "2.3.0" dependencies: @@ -6611,7 +6574,7 @@ "version" "1.0.2" "once@^1.3.0": - "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E= sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" + "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" "version" "1.4.0" dependencies: @@ -6797,7 +6760,7 @@ "version" "4.0.0" "path-is-absolute@^1.0.0": - "integrity" "sha1-F0uSaHNVNP+8es5r9TpanhtcX18= sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + "integrity" "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" "version" "1.0.1" @@ -6812,7 +6775,7 @@ "version" "1.0.7" "path-to-regexp@0.1.7": - "integrity" "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "integrity" "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" "version" "0.1.7" @@ -6822,7 +6785,7 @@ "version" "4.0.0" "performance-now@^2.1.0": - "integrity" "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + "integrity" "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" "resolved" "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" "version" "2.1.0" @@ -7398,7 +7361,7 @@ "version" "1.2.1" "prelude-ls@~1.1.2": - "integrity" "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" + "integrity" "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" "version" "1.1.2" @@ -7489,7 +7452,7 @@ "version" "2.1.1" "q@^1.1.2": - "integrity" "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" + "integrity" "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" "resolved" "https://registry.npmjs.org/q/-/q-1.5.1.tgz" "version" "1.5.1" @@ -7773,7 +7736,7 @@ "jsesc" "~0.5.0" "relateurl@^0.2.7": - "integrity" "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" + "integrity" "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" "resolved" "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" "version" "0.2.7" @@ -7789,7 +7752,7 @@ "strip-ansi" "^6.0.1" "require-directory@^2.1.1": - "integrity" "sha1-jGStX9MNqxyXbiNE/+f3kqam30I= sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + "integrity" "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" "version" "2.1.1" @@ -7799,7 +7762,7 @@ "version" "2.0.2" "requires-port@^1.0.0": - "integrity" "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + "integrity" "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" "version" "1.0.0" @@ -8037,7 +8000,7 @@ "ajv-keywords" "^3.4.1" "select-hose@^2.0.0": - "integrity" "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + "integrity" "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" "resolved" "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" "version" "2.0.0" @@ -8115,7 +8078,7 @@ "randombytes" "^2.1.0" "serve-index@^1.9.1": - "integrity" "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==" + "integrity" "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=" "resolved" "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" "version" "1.9.1" dependencies: @@ -8266,7 +8229,7 @@ "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" "version" "0.6.1" -"sourcemap-codec@^1.4.4", "sourcemap-codec@^1.4.8": +"sourcemap-codec@^1.4.4": "integrity" "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" "resolved" "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" "version" "1.4.8" @@ -8295,7 +8258,7 @@ "spdy-transport" "^3.0.0" "sprintf-js@~1.0.2": - "integrity" "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "integrity" "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" "version" "1.0.3" @@ -8317,7 +8280,7 @@ "version" "1.2.0" "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", "statuses@~1.5.0": - "integrity" "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" + "integrity" "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" "version" "1.5.0" @@ -8447,7 +8410,12 @@ "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" "version" "2.0.0" -"strip-json-comments@^3.1.0", "strip-json-comments@^3.1.1": +"strip-json-comments@^3.1.0": + "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + "version" "3.1.1" + +"strip-json-comments@^3.1.1": "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" "version" "3.1.1" @@ -8649,7 +8617,7 @@ "utrie" "^1.0.2" "text-table@^0.2.0": - "integrity" "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "integrity" "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" "version" "0.2.0" @@ -8664,7 +8632,7 @@ "version" "1.1.0" "timsort@^0.3.0": - "integrity" "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==" + "integrity" "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" "resolved" "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz" "version" "0.3.0" @@ -8674,7 +8642,7 @@ "version" "1.0.5" "to-fast-properties@^2.0.0": - "integrity" "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + "integrity" "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" "version" "2.0.0" @@ -8700,7 +8668,7 @@ "universalify" "^0.1.2" "tr46@^1.0.1": - "integrity" "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==" + "integrity" "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=" "resolved" "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz" "version" "1.0.1" dependencies: @@ -8779,7 +8747,7 @@ "prelude-ls" "^1.2.1" "type-check@~0.3.2": - "integrity" "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==" + "integrity" "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=" "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" "version" "0.3.2" dependencies: @@ -8795,12 +8763,12 @@ "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz" "version" "0.16.0" -"type-fest@^0.20.2": +"type-fest@^0.20.2", "type-fest@>=0.17.0 <3.0.0": "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" "version" "0.20.2" -"type-fest@^0.21.3", "type-fest@>=0.17.0 <3.0.0": +"type-fest@^0.21.3": "integrity" "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" "version" "0.21.3" @@ -8881,12 +8849,12 @@ "version" "2.0.0" "unpipe@~1.0.0", "unpipe@1.0.0": - "integrity" "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + "integrity" "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" "version" "1.0.0" "unquote@~1.1.1": - "integrity" "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" + "integrity" "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" "resolved" "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz" "version" "1.1.1" @@ -8911,7 +8879,7 @@ "punycode" "^2.1.0" "util-deprecate@^1.0.1", "util-deprecate@^1.0.2", "util-deprecate@~1.0.1": - "integrity" "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity" "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" "version" "1.0.2" @@ -8926,12 +8894,12 @@ "object.getownpropertydescriptors" "^2.1.0" "utila@~0.4": - "integrity" "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + "integrity" "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" "resolved" "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" "version" "0.4.0" "utils-merge@1.0.1": - "integrity" "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + "integrity" "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" "version" "1.0.1" @@ -8967,7 +8935,7 @@ "source-map" "^0.7.3" "vary@~1.1.2": - "integrity" "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + "integrity" "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" "version" "1.1.2" @@ -9392,7 +9360,7 @@ "strip-ansi" "^6.0.0" "wrappy@1": - "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" "version" "1.0.2" @@ -9426,6 +9394,11 @@ "resolved" "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" "version" "2.2.0" +"xmlserializer@^0.6.1": + "integrity" "sha512-FNb0eEqqUUbnuvxuHqNuKH8qCGKqxu+558Zi8UzOoQk8Z9LdvpONK+v7m3gpKVHrk5Aq+0nNLsKxu/6OYh7Umw==" + "resolved" "https://registry.npmjs.org/xmlserializer/-/xmlserializer-0.6.1.tgz" + "version" "0.6.1" + "xtend@^4.0.2": "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz"