diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 482adf80e..0bf2f73d4 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -9,6 +9,9 @@ body: - Issues in this repository are for tracking problems with the Twine application. "How do I?" type questions are better answered on community resources like the Intfiction.org forums, Reddit, or Discord. - If you are having problems with your Twine story when it is being played, then you should report the problem with the story format you are using, not here. + - For those using the **Harlowe** story format (the default format), reports should be filed at [its issue tracker](https://foss.heptapod.net/games/harlowe/-/issues). Guidelines for bug reports are listed [here](https://twine2.neocities.org/#introduction_report-bugs-and-suggest-features). + - For those using the **SugarCube** format, reports should be filed at [its issue tracker](https://github.com/tmedwards/sugarcube-2/issues). + - For those using the **Chapbook** format, reports should be filed at [its issue tracker](https://github.com/klembot/chapbook/issues). - In order for your issue to be addressed, someone else will need to be able to cause the bug to occur on their own computer in a predictable fashion. Otherwise, it will be impossible to tell if it was actually fixed when it's worked on. Please be as detailed as you can in your description below. - Usually, new issues are reviewed around once a month. It may take longer. - If work begins on your bug report, it will be added to a project in this repository. You can track the status of its implementation there. diff --git a/docs/en/src/editing-stories/editing-passages.md b/docs/en/src/editing-stories/editing-passages.md index 0791de530..7f11c081b 100644 --- a/docs/en/src/editing-stories/editing-passages.md +++ b/docs/en/src/editing-stories/editing-passages.md @@ -23,6 +23,19 @@ extensions](../story-formats/extensions.md). Twine automatically saves your changes to a passage after you stop typing for a moment. +## Automatically-Created Links + +As you enter text in a passage, Twine will detect when you've added new links. +If the destination passage doesn't already exist, it will create an empty +passage for you. Deleting the link will delete this empty passage. + +Twine won't delete an empty passage while editing if any of the criteria below are true: + +- It is linked to from another passage +- It has any tags +- It has a different size than the default +- It is the story start + ## Text Formatting, Code, Images, Sound, Video... Basically Everything Cool You should consult the documentation of the story format you are using for how diff --git a/docs/en/src/editing-stories/navigating.md b/docs/en/src/editing-stories/navigating.md index 72fb2b1fd..d001e52a7 100644 --- a/docs/en/src/editing-stories/navigating.md +++ b/docs/en/src/editing-stories/navigating.md @@ -14,6 +14,19 @@ In one corner of the Story Map, you'll see three buttons showing squares of different sizes. These let you zoom in and out of the map, showing different levels of detail in your passages. +## Empty Passages + +An empty passage is one you haven't written any text in (usually). These show up +in the Story Map as translucent cards with a dotted border. Twine automatically +creates and deletes empty passages when you [edit links in +passages](./editing-passages.md). + +## Tags + +If you have [assigned colors to passage tags](tagging.md), passages with those +tags will have a small stripe of that color at their top. Tags that do not have +colors assigned will not show a stripe. + ## The Story Start The story's start passage is drawn in the map with a green rocket icon connected diff --git a/docs/en/src/getting-started/getting-around.md b/docs/en/src/getting-started/getting-around.md index ac70e02db..93e3e51ea 100644 --- a/docs/en/src/getting-started/getting-around.md +++ b/docs/en/src/getting-started/getting-around.md @@ -47,9 +47,16 @@ Certain actions in Twine will open dialog boxes along one side of the screen with more detail about a particular action. For example, editing a passage will open a dialog box with the passage text. -Dialog boxes have an x button in their corner that closes the dialog. They also -have a chevron (›) button on the opposite side that collapses the dialog so that -only its title bar is visible. - -You can have as many dialogs open as you have room onscreen from. Right now, the -order of dialogs can't be changed, nor can the size of dialogs onscreen. \ No newline at end of file +Dialog boxes have a few controls in their title bar: + +- An x button in their corner that closes the dialog. +- A chevron (›) button on the opposite side that collapses the dialog so that + only its title bar is visible. +- Some dialogs have a maximize button beside their close button which allows a + dialog to fill the available space. To restore a maximized dialog's original + size, use the maximize button again. Only one dialog can be maximized at a + time. + +You can have as many dialogs open as you have room onscreen for. Right now, the +order of dialogs can't be changed, nor can their position onscreen be changed. +The width of dialogs can be changed in [preferences](../preferences). \ No newline at end of file diff --git a/docs/en/src/preferences/index.md b/docs/en/src/preferences/index.md index 04f728f3b..9695de0b0 100644 --- a/docs/en/src/preferences/index.md +++ b/docs/en/src/preferences/index.md @@ -18,6 +18,12 @@ uses the theme that matches your system's theme setting, if Twine can determine it. If Twine can't determine whether your system is using a dark or light theme, it will default to a light theme. +## Changing Dialogs + +The _Dialog Width_ menu controls the width of dialogs. The placement of dialogs +onscreen (e.g. switching them from the right side of the window) cannot be +changed. + ## Changing Edit Dialogs The _Blinking Cursor in Editors_ checkbox controls whether the cursor blinks in diff --git a/electron-builder.config.js b/electron-builder.config.js index fa9f47271..bd86c050c 100644 --- a/electron-builder.config.js +++ b/electron-builder.config.js @@ -1,9 +1,25 @@ +const child_process = require('child_process'); const pkg = require('./package.json'); const isPreview = /alpha|beta|pre/.test(pkg.version) || process.env.FORCE_PREVIEW; module.exports = { + afterSign(context) { + // This step is necessary to ad hoc sign the app. Otherwise, on Apple + // Silicon you get repeated prompts for file access. + // + // If/when we are able to sign the app for real, this must be removed. + // + // This was cribbed from https://github.com/alacritty/alacritty/issues/5840. + + if (context.packager.platform.name === 'mac') { + console.log('Ad hoc signing Mac app...'); + child_process.execSync( + 'codesign --force --deep --sign - dist/electron/mac-universal/Twine.app' + ); + } + }, directories: { output: 'dist/electron' }, @@ -26,7 +42,7 @@ module.exports = { }, win: { artifactName: `Twine-${pkg.version}-Windows.exe`, - icon: `icons/app-${isPreview ? 'preview' : 'release'}.ico`, - target: 'nsis' + icon: `icons/app-${isPreview ? 'preview' : 'release'}-no-padding.ico`, + target: {arch: ['x64'], target: 'nsis'} } }; diff --git a/icons/app-preview-no-padding.ico b/icons/app-preview-no-padding.ico new file mode 100644 index 000000000..ba44ccf12 Binary files /dev/null and b/icons/app-preview-no-padding.ico differ diff --git a/icons/app-preview-no-padding.png b/icons/app-preview-no-padding.png new file mode 100644 index 000000000..b339d955f Binary files /dev/null and b/icons/app-preview-no-padding.png differ diff --git a/icons/app-release-no-padding.ico b/icons/app-release-no-padding.ico new file mode 100644 index 000000000..10fda75a3 Binary files /dev/null and b/icons/app-release-no-padding.ico differ diff --git a/icons/app-release-no-padding.png b/icons/app-release-no-padding.png new file mode 100644 index 000000000..037d704ce Binary files /dev/null and b/icons/app-release-no-padding.png differ diff --git a/package-lock.json b/package-lock.json index eaf79ca39..0d9e8819a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "Twine", - "version": "2.4.0", + "version": "2.4.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "Twine", - "version": "2.4.0", + "version": "2.4.1", "license": "GPL-3.0", "dependencies": { "@popperjs/core": "^2.9.1", @@ -77,8 +77,8 @@ "cpy": "^8.1.2", "cpy-cli": "^3.1.1", "cross-var": "^1.1.0", - "electron": "^17.4.10", - "electron-builder": "^23.0.2", + "electron": "^18.3.6", + "electron-builder": "^23.3.3", "faker": "^5.4.0", "history": "^5.1.0", "jest-axe": "^4.1.0", @@ -1720,9 +1720,9 @@ } }, "node_modules/@electron/universal": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.0.tgz", - "integrity": "sha512-eu20BwNsrMPKoe2bZ3/l9c78LclDvxg3PlVXrQf3L50NaUuW5M59gbPytI+V4z7/QMrohUHetQaU0ou+p1UG9Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", + "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==", "dev": true, "dependencies": { "@malept/cross-spawn-promise": "^1.1.0", @@ -1796,6 +1796,15 @@ "node": ">= 4" } }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@hapi/address": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", @@ -2151,6 +2160,15 @@ "node": ">=8" } }, + "node_modules/@jest/core/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/environment": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", @@ -2386,6 +2404,15 @@ "node": ">=8" } }, + "node_modules/@jest/reporters/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/source-map": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", @@ -2637,6 +2664,64 @@ "node": ">=8" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@malept/cross-spawn-promise": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", @@ -4013,9 +4098,9 @@ } }, "node_modules/@types/verror": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.5.tgz", - "integrity": "sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw==", + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.6.tgz", + "integrity": "sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ==", "dev": true, "optional": true }, @@ -4733,35 +4818,36 @@ "dev": true }, "node_modules/app-builder-lib": { - "version": "23.0.2", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.0.2.tgz", - "integrity": "sha512-2ytlOKavGQVvVujsGajJURtyrXHRXWIqHTzzZKUtYNrJUbDG2HcPZN7aktf+SDBeoXX0Lp/QA6dBpBpSRuG6rQ==", + "version": "23.3.3", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.3.3.tgz", + "integrity": "sha512-m0+M53+HYMzqKxwNQZT143K7WwXEGUy9LY31l8dJphXx2P/FQod615mVbxHyqbDCG4J5bHdWm21qZ0e2DVY6CQ==", "dev": true, "dependencies": { "@develar/schema-utils": "~2.6.5", - "@electron/universal": "1.2.0", + "@electron/universal": "1.2.1", "@malept/flatpak-bundler": "^0.4.0", "7zip-bin": "~5.1.1", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "23.0.2", - "builder-util-runtime": "9.0.0", + "builder-util": "23.3.3", + "builder-util-runtime": "9.0.3", "chromium-pickle-js": "^0.2.0", - "debug": "^4.3.2", - "ejs": "^3.1.6", + "debug": "^4.3.4", + "ejs": "^3.1.7", "electron-osx-sign": "^0.6.0", - "electron-publish": "23.0.2", + "electron-publish": "23.3.3", "form-data": "^4.0.0", - "fs-extra": "^10.0.0", - "hosted-git-info": "^4.0.2", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", "is-ci": "^3.0.0", - "isbinaryfile": "^4.0.8", + "isbinaryfile": "^4.0.10", "js-yaml": "^4.1.0", "lazy-val": "^1.0.5", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "read-config-file": "6.2.0", "sanitize-filename": "^1.6.3", - "semver": "^7.3.5", + "semver": "^7.3.7", + "tar": "^6.1.11", "temp-file": "^3.4.0" }, "engines": { @@ -4775,18 +4861,18 @@ "dev": true }, "node_modules/app-builder-lib/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", + "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", "dev": true }, "node_modules/app-builder-lib/node_modules/ejs": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", - "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", "dev": true, "dependencies": { - "jake": "^10.6.1" + "jake": "^10.8.5" }, "bin": { "ejs": "bin/cli.js" @@ -4809,6 +4895,20 @@ "node": ">= 6" } }, + "node_modules/app-builder-lib/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/app-builder-lib/node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -4845,6 +4945,18 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/app-builder-lib/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -5009,9 +5121,9 @@ "dev": true }, "node_modules/asar": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/asar/-/asar-3.1.0.tgz", - "integrity": "sha512-vyxPxP5arcAqN4F/ebHd/HhwnAiZtwhglvdmc7BR2f0ywbVNTOpSeyhLDbGXtE/y58hv1oC75TaNIXutnsOZsQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-3.2.0.tgz", + "integrity": "sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg==", "dev": true, "dependencies": { "chromium-pickle-js": "^0.2.0", @@ -5124,9 +5236,9 @@ } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" @@ -7406,7 +7518,7 @@ "node_modules/buffer-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", "dev": true, "engines": { "node": ">=0.4.0" @@ -7415,7 +7527,7 @@ "node_modules/buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", "dev": true }, "node_modules/buffer-from": { @@ -7443,9 +7555,9 @@ "dev": true }, "node_modules/builder-util": { - "version": "23.0.2", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.0.2.tgz", - "integrity": "sha512-HaNHL3axNW/Ms8O1mDx3I07G+ZnZ/TKSWWvorOAPau128cdt9S+lNx5ocbx8deSaHHX4WFXSZVHh3mxlaKJNgg==", + "version": "23.3.3", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.3.3.tgz", + "integrity": "sha512-MJZlUiq2PY5hjYv9+XNaoYdsITqvLgRDoHSFg/4nzpInbNxNjLQOolL04Zsyp+hgfcbFvMC4h0KkR1CMPHLWbA==", "dev": true, "dependencies": { "@types/debug": "^4.1.6", @@ -7453,10 +7565,10 @@ "7zip-bin": "~5.1.1", "app-builder-bin": "4.0.0", "bluebird-lst": "^1.0.9", - "builder-util-runtime": "9.0.0", + "builder-util-runtime": "9.0.3", "chalk": "^4.1.1", "cross-spawn": "^7.0.3", - "debug": "^4.3.2", + "debug": "^4.3.4", "fs-extra": "^10.0.0", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", @@ -7468,12 +7580,12 @@ } }, "node_modules/builder-util-runtime": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.0.0.tgz", - "integrity": "sha512-SkpEtSmTkREDHRJnxKEv43aAYp8sYWY8fxYBhGLBLOBIRXeaIp6Kv3lBgSD7uR8jQtC7CA659sqJrpSV6zNvSA==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.0.3.tgz", + "integrity": "sha512-SfG2wnyjpUbbdtpnqDpWwklujofC6GarGpvdWrEkg9p5AD/xJmTF2buTNaqs3qtsNBEVQDDjZz9xc2GGpVyMfA==", "dev": true, "dependencies": { - "debug": "^4.3.2", + "debug": "^4.3.4", "sax": "^1.2.4" }, "engines": { @@ -7518,9 +7630,9 @@ } }, "node_modules/builder-util/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", + "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", "dev": true }, "node_modules/builder-util/node_modules/color-convert": { @@ -7911,14 +8023,20 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001307", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001307.tgz", - "integrity": "sha512-+MXEMczJ4FuxJAUp0jvAl6Df0NI/OfW1RWEE61eSmzS7hw6lz4IKutbhbXendwq8BljfFuHtu26VWsg4afQ7Ng==", + "version": "1.0.30001377", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001377.tgz", + "integrity": "sha512-I5XeHI1x/mRSGl96LFOaSk528LA/yZG3m3iQgImGujjO8gotd/DL8QaI1R1h1dg5ATeI2jqPblMpKq4Tr5iKfQ==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] }, "node_modules/capture-exit": { "version": "2.0.0", @@ -8022,7 +8140,7 @@ "node_modules/chromium-pickle-js": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", - "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", "dev": true }, "node_modules/ci-info": { @@ -8309,7 +8427,7 @@ "node_modules/colors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", "dev": true, "engines": { "node": ">=0.1.90" @@ -8354,7 +8472,7 @@ "node_modules/compare-version": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", - "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", "dev": true, "engines": { "node": ">=0.10.0" @@ -9732,9 +9850,9 @@ } }, "node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -10153,7 +10271,7 @@ "node_modules/dir-compare/node_modules/commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", "dev": true, "dependencies": { "graceful-readlink": ">= 1.0.0" @@ -10175,20 +10293,20 @@ } }, "node_modules/dmg-builder": { - "version": "23.0.2", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.0.2.tgz", - "integrity": "sha512-kfJZRKbIN6kM/Vuzrme8SGSA+M/F0VvNrSGa6idWXbqtxIbGZZMF1QxVrXJbxSayf0Jh4hPy6NUNZAfbX9/m3g==", + "version": "23.3.3", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.3.3.tgz", + "integrity": "sha512-ECwAjt+ZWyOvddrkDx1xRD6IVUCZb5SV6vSMHZd+Va3G2sUXHrnglR1cGDKRF4oYRQm8SYVrpLZKbi8npyDcAQ==", "dev": true, "dependencies": { - "app-builder-lib": "23.0.2", - "builder-util": "23.0.2", - "builder-util-runtime": "9.0.0", + "app-builder-lib": "23.3.3", + "builder-util": "23.3.3", + "builder-util-runtime": "9.0.3", "fs-extra": "^10.0.0", "iconv-lite": "^0.6.2", "js-yaml": "^4.1.0" }, "optionalDependencies": { - "dmg-license": "^1.0.9" + "dmg-license": "^1.0.11" } }, "node_modules/dmg-builder/node_modules/argparse": { @@ -10225,7 +10343,6 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", - "deprecated": "Disk image license agreements are deprecated by Apple and will probably be removed in a future macOS release. Discussion at: https://github.com/argv-minus-one/dmg-license/issues/11", "dev": true, "optional": true, "os": [ @@ -10516,14 +10633,14 @@ } }, "node_modules/electron": { - "version": "17.4.10", - "resolved": "https://registry.npmjs.org/electron/-/electron-17.4.10.tgz", - "integrity": "sha512-4v5Xwa4rZjWf0LmpYOaBXG8ZQ1rpPEpww+MCe4uuwenFsx3QSLSXmek720EY7drQa/O1YyvcZ1pr2sDBMIq0mA==", + "version": "18.3.6", + "resolved": "https://registry.npmjs.org/electron/-/electron-18.3.6.tgz", + "integrity": "sha512-o1cArbCDkRKOJRKk+UXiBv7/wVa0jA0k0U3LGfMcYaq+M3m20EQ5hUxC5xCHxyLYSdkriAjEp3VDaGP9EwjBsQ==", "dev": true, "hasInstallScript": true, "dependencies": { "@electron/get": "^1.13.0", - "@types/node": "^14.6.2", + "@types/node": "^16.11.26", "extract-zip": "^1.0.3" }, "bin": { @@ -10534,17 +10651,17 @@ } }, "node_modules/electron-builder": { - "version": "23.0.2", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.0.2.tgz", - "integrity": "sha512-NG8ywuoHZpq6uk/2fEo9XVKBnjyGwNCnCyPxgGLdEk6xLAXr6nkF54+kqdhrDw4E8alwxc/TPHxUY3G0B8k/Dw==", + "version": "23.3.3", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.3.3.tgz", + "integrity": "sha512-mFYYdhoFPKevP6y5uaaF3dusmB2OtQ/HnwwpyOePeU7QDS0SEIAUokQsHUanAiJAZcBqtY7iyLBgX18QybdFFw==", "dev": true, "dependencies": { "@types/yargs": "^17.0.1", - "app-builder-lib": "23.0.2", - "builder-util": "23.0.2", - "builder-util-runtime": "9.0.0", + "app-builder-lib": "23.3.3", + "builder-util": "23.3.3", + "builder-util-runtime": "9.0.3", "chalk": "^4.1.1", - "dmg-builder": "23.0.2", + "dmg-builder": "23.3.3", "fs-extra": "^10.0.0", "is-ci": "^3.0.0", "lazy-val": "^1.0.5", @@ -10766,18 +10883,18 @@ "node_modules/electron-osx-sign/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/electron-publish": { - "version": "23.0.2", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.0.2.tgz", - "integrity": "sha512-8gMYgWqv96lc83FCm85wd+tEyxNTJQK7WKyPkNkO8GxModZqt1GO8S+/vAnFGxilS/7vsrVRXFfqiCDUCSuxEg==", + "version": "23.3.3", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.3.3.tgz", + "integrity": "sha512-1dX17eE5xVXedTxjC+gjsP74oC0+sIHgqysp0ryTlF9+yfQUyXjBk6kcK+zhtBA2SsHMSglDtM+JPxDD/WpPTQ==", "dev": true, "dependencies": { "@types/fs-extra": "^9.0.11", - "builder-util": "23.0.2", - "builder-util-runtime": "9.0.0", + "builder-util": "23.3.3", + "builder-util-runtime": "9.0.3", "chalk": "^4.1.1", "fs-extra": "^10.0.0", "lazy-val": "^1.0.5", @@ -10873,9 +10990,9 @@ "dev": true }, "node_modules/electron/node_modules/@types/node": { - "version": "14.18.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.21.tgz", - "integrity": "sha512-x5W9s+8P4XteaxT/jKF0PSb7XEvo5VmqEWgsMlyeY4ZlLK8I6aH6g5TPPyDlLAep+GYf4kefb7HFyc7PAO3m+Q==", + "version": "16.11.47", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.47.tgz", + "integrity": "sha512-fpP+jk2zJ4VW66+wAMFoBJlx1bxmBKx4DUFf68UHgdGCOuyUTDlLWqsaNPJh7xhNDykyJ9eIzAygilP/4WoN8g==", "dev": true }, "node_modules/element-closest": { @@ -12011,6 +12128,15 @@ "node": ">=8" } }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/eslint/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -13540,7 +13666,7 @@ "node_modules/graceful-readlink": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", "dev": true }, "node_modules/growly": { @@ -14304,9 +14430,9 @@ "dev": true }, "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "dependencies": { "agent-base": "6", @@ -15206,9 +15332,9 @@ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, "node_modules/isbinaryfile": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", - "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true, "engines": { "node": ">= 8.0.0" @@ -15367,13 +15493,13 @@ } }, "node_modules/jake": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", - "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", "dev": true, "dependencies": { - "async": "0.9.x", - "chalk": "^2.4.2", + "async": "^3.2.3", + "chalk": "^4.0.2", "filelist": "^1.0.1", "minimatch": "^3.0.4" }, @@ -15381,15 +15507,85 @@ "jake": "bin/cli.js" }, "engines": { - "node": "*" + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jake/node_modules/async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/jake/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest": { "version": "26.6.0", "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.0.tgz", @@ -15899,6 +16095,15 @@ "node": ">=8" } }, + "node_modules/jest-config/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-diff": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", @@ -16653,6 +16858,15 @@ "node": ">=8" } }, + "node_modules/jest-resolve/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-runner": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", @@ -16820,6 +17034,15 @@ "node": ">=8" } }, + "node_modules/jest-runner/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-runtime": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", @@ -17000,6 +17223,15 @@ "node": ">=8" } }, + "node_modules/jest-runtime/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-serializer": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", @@ -17176,6 +17408,15 @@ "node": ">=8" } }, + "node_modules/jest-snapshot/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-useragent-mock": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jest-useragent-mock/-/jest-useragent-mock-0.1.1.tgz", @@ -18471,18 +18712,6 @@ "node": ">=8" } }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -20352,27 +20581,18 @@ } }, "node_modules/plist": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz", - "integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz", + "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==", "dev": true, "dependencies": { "base64-js": "^1.5.1", - "xmlbuilder": "^9.0.7" + "xmlbuilder": "^15.1.1" }, "engines": { "node": ">=6" } }, - "node_modules/plist/node_modules/xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/pnp-webpack-plugin": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", @@ -24044,9 +24264,9 @@ } }, "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -24146,19 +24366,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/serialize-error/node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/serialize-javascript": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", @@ -24878,9 +25085,9 @@ } }, "node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "dependencies": { "buffer-from": "^1.0.0", @@ -25651,9 +25858,9 @@ } }, "node_modules/tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", "dev": true, "dependencies": { "chownr": "^2.0.0", @@ -25763,9 +25970,9 @@ } }, "node_modules/terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, "dependencies": { "commander": "^2.20.0", @@ -25806,6 +26013,18 @@ "webpack": "^4.0.0 || ^5.0.0" } }, + "node_modules/terser-webpack-plugin/node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/terser-webpack-plugin/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -25908,14 +26127,15 @@ } }, "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", - "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" + "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" @@ -25924,15 +26144,6 @@ "node": ">=10" } }, - "node_modules/terser-webpack-plugin/node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -26220,7 +26431,7 @@ "node_modules/truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", "dev": true, "dependencies": { "utf8-byte-length": "^1.0.1" @@ -26353,12 +26564,15 @@ } }, "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/type-is": { @@ -26858,7 +27072,7 @@ "node_modules/utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", + "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==", "dev": true }, "node_modules/util": { @@ -27758,15 +27972,6 @@ "node": ">=6" } }, - "node_modules/webpack-dev-server/node_modules/is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/webpack-dev-server/node_modules/is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", @@ -28974,7 +29179,6 @@ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", "dev": true, - "optional": true, "engines": { "node": ">=8.0" } @@ -30413,9 +30617,9 @@ } }, "@electron/universal": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.0.tgz", - "integrity": "sha512-eu20BwNsrMPKoe2bZ3/l9c78LclDvxg3PlVXrQf3L50NaUuW5M59gbPytI+V4z7/QMrohUHetQaU0ou+p1UG9Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", + "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==", "dev": true, "requires": { "@malept/cross-spawn-promise": "^1.1.0", @@ -30472,6 +30676,12 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true } } }, @@ -30755,6 +30965,12 @@ "requires": { "has-flag": "^4.0.0" } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true } } }, @@ -30945,6 +31161,12 @@ "requires": { "has-flag": "^4.0.0" } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true } } }, @@ -31142,6 +31364,55 @@ } } }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "@malept/cross-spawn-promise": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", @@ -32230,9 +32501,9 @@ } }, "@types/verror": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.5.tgz", - "integrity": "sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw==", + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.6.tgz", + "integrity": "sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ==", "dev": true, "optional": true }, @@ -32802,35 +33073,36 @@ "dev": true }, "app-builder-lib": { - "version": "23.0.2", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.0.2.tgz", - "integrity": "sha512-2ytlOKavGQVvVujsGajJURtyrXHRXWIqHTzzZKUtYNrJUbDG2HcPZN7aktf+SDBeoXX0Lp/QA6dBpBpSRuG6rQ==", + "version": "23.3.3", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.3.3.tgz", + "integrity": "sha512-m0+M53+HYMzqKxwNQZT143K7WwXEGUy9LY31l8dJphXx2P/FQod615mVbxHyqbDCG4J5bHdWm21qZ0e2DVY6CQ==", "dev": true, "requires": { "@develar/schema-utils": "~2.6.5", - "@electron/universal": "1.2.0", + "@electron/universal": "1.2.1", "@malept/flatpak-bundler": "^0.4.0", "7zip-bin": "~5.1.1", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "23.0.2", - "builder-util-runtime": "9.0.0", + "builder-util": "23.3.3", + "builder-util-runtime": "9.0.3", "chromium-pickle-js": "^0.2.0", - "debug": "^4.3.2", - "ejs": "^3.1.6", + "debug": "^4.3.4", + "ejs": "^3.1.7", "electron-osx-sign": "^0.6.0", - "electron-publish": "23.0.2", + "electron-publish": "23.3.3", "form-data": "^4.0.0", - "fs-extra": "^10.0.0", - "hosted-git-info": "^4.0.2", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", "is-ci": "^3.0.0", - "isbinaryfile": "^4.0.8", + "isbinaryfile": "^4.0.10", "js-yaml": "^4.1.0", "lazy-val": "^1.0.5", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "read-config-file": "6.2.0", "sanitize-filename": "^1.6.3", - "semver": "^7.3.5", + "semver": "^7.3.7", + "tar": "^6.1.11", "temp-file": "^3.4.0" }, "dependencies": { @@ -32841,18 +33113,18 @@ "dev": true }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", + "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", "dev": true }, "ejs": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", - "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", "dev": true, "requires": { - "jake": "^10.6.1" + "jake": "^10.8.5" } }, "form-data": { @@ -32866,6 +33138,17 @@ "mime-types": "^2.1.12" } }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, "hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -32892,6 +33175,15 @@ "requires": { "argparse": "^2.0.1" } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } } } }, @@ -33017,9 +33309,9 @@ "dev": true }, "asar": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/asar/-/asar-3.1.0.tgz", - "integrity": "sha512-vyxPxP5arcAqN4F/ebHd/HhwnAiZtwhglvdmc7BR2f0ywbVNTOpSeyhLDbGXtE/y58hv1oC75TaNIXutnsOZsQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-3.2.0.tgz", + "integrity": "sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg==", "dev": true, "requires": { "@types/glob": "^7.1.1", @@ -33118,9 +33410,9 @@ "dev": true }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" @@ -35146,13 +35438,13 @@ "buffer-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", "dev": true }, "buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", "dev": true }, "buffer-from": { @@ -35174,9 +35466,9 @@ "dev": true }, "builder-util": { - "version": "23.0.2", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.0.2.tgz", - "integrity": "sha512-HaNHL3axNW/Ms8O1mDx3I07G+ZnZ/TKSWWvorOAPau128cdt9S+lNx5ocbx8deSaHHX4WFXSZVHh3mxlaKJNgg==", + "version": "23.3.3", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.3.3.tgz", + "integrity": "sha512-MJZlUiq2PY5hjYv9+XNaoYdsITqvLgRDoHSFg/4nzpInbNxNjLQOolL04Zsyp+hgfcbFvMC4h0KkR1CMPHLWbA==", "dev": true, "requires": { "@types/debug": "^4.1.6", @@ -35184,10 +35476,10 @@ "7zip-bin": "~5.1.1", "app-builder-bin": "4.0.0", "bluebird-lst": "^1.0.9", - "builder-util-runtime": "9.0.0", + "builder-util-runtime": "9.0.3", "chalk": "^4.1.1", "cross-spawn": "^7.0.3", - "debug": "^4.3.2", + "debug": "^4.3.4", "fs-extra": "^10.0.0", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", @@ -35224,9 +35516,9 @@ } }, "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", + "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", "dev": true }, "color-convert": { @@ -35321,12 +35613,12 @@ } }, "builder-util-runtime": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.0.0.tgz", - "integrity": "sha512-SkpEtSmTkREDHRJnxKEv43aAYp8sYWY8fxYBhGLBLOBIRXeaIp6Kv3lBgSD7uR8jQtC7CA659sqJrpSV6zNvSA==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.0.3.tgz", + "integrity": "sha512-SfG2wnyjpUbbdtpnqDpWwklujofC6GarGpvdWrEkg9p5AD/xJmTF2buTNaqs3qtsNBEVQDDjZz9xc2GGpVyMfA==", "dev": true, "requires": { - "debug": "^4.3.2", + "debug": "^4.3.4", "sax": "^1.2.4" } }, @@ -35540,9 +35832,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001307", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001307.tgz", - "integrity": "sha512-+MXEMczJ4FuxJAUp0jvAl6Df0NI/OfW1RWEE61eSmzS7hw6lz4IKutbhbXendwq8BljfFuHtu26VWsg4afQ7Ng==", + "version": "1.0.30001377", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001377.tgz", + "integrity": "sha512-I5XeHI1x/mRSGl96LFOaSk528LA/yZG3m3iQgImGujjO8gotd/DL8QaI1R1h1dg5ATeI2jqPblMpKq4Tr5iKfQ==", "dev": true }, "capture-exit": { @@ -35624,7 +35916,7 @@ "chromium-pickle-js": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", - "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", "dev": true }, "ci-info": { @@ -35865,7 +36157,7 @@ "colors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", "dev": true }, "combined-stream": { @@ -35898,7 +36190,7 @@ "compare-version": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", - "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", "dev": true }, "component-emitter": { @@ -37024,9 +37316,9 @@ } }, "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -37364,7 +37656,7 @@ "commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", "dev": true, "requires": { "graceful-readlink": ">= 1.0.0" @@ -37382,15 +37674,15 @@ } }, "dmg-builder": { - "version": "23.0.2", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.0.2.tgz", - "integrity": "sha512-kfJZRKbIN6kM/Vuzrme8SGSA+M/F0VvNrSGa6idWXbqtxIbGZZMF1QxVrXJbxSayf0Jh4hPy6NUNZAfbX9/m3g==", + "version": "23.3.3", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.3.3.tgz", + "integrity": "sha512-ECwAjt+ZWyOvddrkDx1xRD6IVUCZb5SV6vSMHZd+Va3G2sUXHrnglR1cGDKRF4oYRQm8SYVrpLZKbi8npyDcAQ==", "dev": true, "requires": { - "app-builder-lib": "23.0.2", - "builder-util": "23.0.2", - "builder-util-runtime": "9.0.0", - "dmg-license": "^1.0.9", + "app-builder-lib": "23.3.3", + "builder-util": "23.3.3", + "builder-util-runtime": "9.0.3", + "dmg-license": "^1.0.11", "fs-extra": "^10.0.0", "iconv-lite": "^0.6.2", "js-yaml": "^4.1.0" @@ -37686,36 +37978,36 @@ "dev": true }, "electron": { - "version": "17.4.10", - "resolved": "https://registry.npmjs.org/electron/-/electron-17.4.10.tgz", - "integrity": "sha512-4v5Xwa4rZjWf0LmpYOaBXG8ZQ1rpPEpww+MCe4uuwenFsx3QSLSXmek720EY7drQa/O1YyvcZ1pr2sDBMIq0mA==", + "version": "18.3.6", + "resolved": "https://registry.npmjs.org/electron/-/electron-18.3.6.tgz", + "integrity": "sha512-o1cArbCDkRKOJRKk+UXiBv7/wVa0jA0k0U3LGfMcYaq+M3m20EQ5hUxC5xCHxyLYSdkriAjEp3VDaGP9EwjBsQ==", "dev": true, "requires": { "@electron/get": "^1.13.0", - "@types/node": "^14.6.2", + "@types/node": "^16.11.26", "extract-zip": "^1.0.3" }, "dependencies": { "@types/node": { - "version": "14.18.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.21.tgz", - "integrity": "sha512-x5W9s+8P4XteaxT/jKF0PSb7XEvo5VmqEWgsMlyeY4ZlLK8I6aH6g5TPPyDlLAep+GYf4kefb7HFyc7PAO3m+Q==", + "version": "16.11.47", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.47.tgz", + "integrity": "sha512-fpP+jk2zJ4VW66+wAMFoBJlx1bxmBKx4DUFf68UHgdGCOuyUTDlLWqsaNPJh7xhNDykyJ9eIzAygilP/4WoN8g==", "dev": true } } }, "electron-builder": { - "version": "23.0.2", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.0.2.tgz", - "integrity": "sha512-NG8ywuoHZpq6uk/2fEo9XVKBnjyGwNCnCyPxgGLdEk6xLAXr6nkF54+kqdhrDw4E8alwxc/TPHxUY3G0B8k/Dw==", + "version": "23.3.3", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.3.3.tgz", + "integrity": "sha512-mFYYdhoFPKevP6y5uaaF3dusmB2OtQ/HnwwpyOePeU7QDS0SEIAUokQsHUanAiJAZcBqtY7iyLBgX18QybdFFw==", "dev": true, "requires": { "@types/yargs": "^17.0.1", - "app-builder-lib": "23.0.2", - "builder-util": "23.0.2", - "builder-util-runtime": "9.0.0", + "app-builder-lib": "23.3.3", + "builder-util": "23.3.3", + "builder-util-runtime": "9.0.3", "chalk": "^4.1.1", - "dmg-builder": "23.0.2", + "dmg-builder": "23.3.3", "fs-extra": "^10.0.0", "is-ci": "^3.0.0", "lazy-val": "^1.0.5", @@ -37883,20 +38175,20 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } }, "electron-publish": { - "version": "23.0.2", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.0.2.tgz", - "integrity": "sha512-8gMYgWqv96lc83FCm85wd+tEyxNTJQK7WKyPkNkO8GxModZqt1GO8S+/vAnFGxilS/7vsrVRXFfqiCDUCSuxEg==", + "version": "23.3.3", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.3.3.tgz", + "integrity": "sha512-1dX17eE5xVXedTxjC+gjsP74oC0+sIHgqysp0ryTlF9+yfQUyXjBk6kcK+zhtBA2SsHMSglDtM+JPxDD/WpPTQ==", "dev": true, "requires": { "@types/fs-extra": "^9.0.11", - "builder-util": "23.0.2", - "builder-util-runtime": "9.0.0", + "builder-util": "23.3.3", + "builder-util-runtime": "9.0.3", "chalk": "^4.1.1", "fs-extra": "^10.0.0", "lazy-val": "^1.0.5", @@ -38443,6 +38735,12 @@ "has-flag": "^4.0.0" } }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -40088,7 +40386,7 @@ "graceful-readlink": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", "dev": true }, "growly": { @@ -40733,9 +41031,9 @@ "dev": true }, "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "requires": { "agent-base": "6", @@ -41385,9 +41683,9 @@ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, "isbinaryfile": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", - "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true }, "isexe": { @@ -41507,22 +41805,71 @@ } }, "jake": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", - "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", "dev": true, "requires": { - "async": "0.9.x", - "chalk": "^2.4.2", + "async": "^3.2.3", + "chalk": "^4.0.2", "filelist": "^1.0.1", "minimatch": "^3.0.4" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -41974,6 +42321,12 @@ "requires": { "has-flag": "^4.0.0" } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true } } }, @@ -42544,6 +42897,12 @@ "requires": { "has-flag": "^4.0.0" } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true } } }, @@ -42687,6 +43046,12 @@ "requires": { "has-flag": "^4.0.0" } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true } } }, @@ -42826,6 +43191,12 @@ "requires": { "has-flag": "^4.0.0" } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true } } }, @@ -42966,6 +43337,12 @@ "requires": { "has-flag": "^4.0.0" } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true } } }, @@ -43934,12 +44311,6 @@ "dev": true } } - }, - "type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true } } }, @@ -45441,21 +45812,13 @@ } }, "plist": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz", - "integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz", + "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==", "dev": true, "requires": { "base64-js": "^1.5.1", - "xmlbuilder": "^9.0.7" - }, - "dependencies": { - "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", - "dev": true - } + "xmlbuilder": "^15.1.1" } }, "pnp-webpack-plugin": { @@ -48439,9 +48802,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "requires": { "lru-cache": "^6.0.0" } @@ -48524,15 +48887,6 @@ "optional": true, "requires": { "type-fest": "^0.13.1" - }, - "dependencies": { - "type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "optional": true - } } }, "serialize-javascript": { @@ -49126,9 +49480,9 @@ } }, "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -49760,9 +50114,9 @@ "dev": true }, "tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", "dev": true, "requires": { "chownr": "^2.0.0", @@ -49848,9 +50202,9 @@ } }, "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, "requires": { "commander": "^2.20.0", @@ -49889,6 +50243,12 @@ "webpack-sources": "^1.4.3" }, "dependencies": { + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -49957,22 +50317,15 @@ "dev": true }, "terser": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", - "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } + "source-map-support": "~0.5.20" } } } @@ -50210,7 +50563,7 @@ "truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", "dev": true, "requires": { "utf8-byte-length": "^1.0.1" @@ -50316,9 +50669,9 @@ "dev": true }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", "dev": true }, "type-is": { @@ -50695,7 +51048,7 @@ "utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", + "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==", "dev": true }, "util": { @@ -51692,12 +52045,6 @@ "resolve-cwd": "^2.0.0" } }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true - }, "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", @@ -52462,8 +52809,7 @@ "version": "15.1.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", - "dev": true, - "optional": true + "dev": true }, "xmlchars": { "version": "2.2.0", diff --git a/package.json b/package.json index 5a4c5b791..28be4a478 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Twine", - "version": "2.4.1", + "version": "2.5.0", "description": "a GUI for creating nonlinear stories", "author": "Chris Klimas ", "license": "GPL-3.0", @@ -82,8 +82,8 @@ "cpy": "^8.1.2", "cpy-cli": "^3.1.1", "cross-var": "^1.1.0", - "electron": "^17.4.10", - "electron-builder": "^23.0.2", + "electron": "^18.3.6", + "electron-builder": "^23.3.3", "faker": "^5.4.0", "history": "^5.1.0", "jest-axe": "^4.1.0", diff --git a/public/locales/de.json b/public/locales/de.json index 96a609217..cb2394971 100644 --- a/public/locales/de.json +++ b/public/locales/de.json @@ -304,7 +304,7 @@ "addStoryFormatButton": { "addPreview": "{{storyFormatName}} {{storyFormatVersion}} wird hinzugefügt.", "alreadyAdded": "{{storyFormatName}} {{storyFormatVersion}} ist bereits vorhanden.", - "fetchError": "Das Geschichtsformat an dieser Adresse konnte nicht abgerufen werden ({errorMessage}).", + "fetchError": "Das Geschichtsformat an dieser Adresse konnte nicht abgerufen werden ({{errorMessage}}).", "invalidUrl": "Bitte eine gültige URL eingeben.", "prompt": "Um ein Geschichtsformat hinzuzufügen, gebe unten die Adresse ein." }, diff --git a/public/locales/en-US.json b/public/locales/en-US.json index 7a8585dae..f0c64b0ec 100644 --- a/public/locales/en-US.json +++ b/public/locales/en-US.json @@ -26,6 +26,7 @@ "editCount": "Edit ({{count}})", "help": "Help", "import": "Import", + "maximize": "Maximize", "more": "More", "new": "New", "next": "Next", @@ -48,6 +49,7 @@ "twine": "Twine", "undo": "Undo", "undoChange": "Undo {{change}}", + "unmaximize": "Restore Size", "view": "View" }, "components": { @@ -155,6 +157,12 @@ "appPrefs": { "codeEditorFont": "Code Editor Font", "codeEditorFontScale": "Code Editor Font Size", + "dialogWidth": "Dialog Width", + "dialogWidths": { + "default": "Default", + "wider": "Wider", + "widest": "Widest" + }, "editorCursorBlinks": "Blinking Cursor in Editors", "fontExplanation": "Changing the font here only affects the Twine editor. It will not change the font a story uses when played.", "language": "Language", @@ -304,7 +312,7 @@ "addStoryFormatButton": { "addPreview": "{{storyFormatName}} {{storyFormatVersion}} will be added.", "alreadyAdded": "{{storyFormatName}} {{storyFormatVersion}} has already been added.", - "fetchError": "The story format at this address could not be retrieved ({errorMessage}).", + "fetchError": "The story format at this address could not be retrieved ({{errorMessage}}).", "invalidUrl": "Please enter a valid URL.", "prompt": "To add a story format, enter its address below." }, diff --git a/public/locales/fr.json b/public/locales/fr.json index 2aefc6141..ef5c5cf1c 100644 --- a/public/locales/fr.json +++ b/public/locales/fr.json @@ -1,5 +1,13 @@ { - "colors": {}, + "colors": { + "none": "Aucune", + "red": "Rouge", + "orange": "Orange", + "yellow": "Jaune", + "green": "Vert", + "blue": "Bleu", + "purple": "Violet" + }, "common": { "add": "Ajouter", "appName": "Twine", @@ -14,50 +22,256 @@ "skip": "Passer", "storyFormat": "Format d'Histoire", "tag": "Balise", - "test": "Test", - "undo": "Annuler" + "test": "Tester", + "undo": "Annuler", + "back": "Précédent", + "build": "Build", + "close": "Fermer", + "color": "Couleur", + "create": "Créer", + "custom": "Personnalisé", + "deleteCount": "Supprimer ({{count}})", + "details": "Détails", + "editCount": "Modifier ({{count}})", + "help": "Aide", + "import": "Import", + "more": "Plus", + "new": "Nouveau", + "next": "Suivant", + "passage": "Passage", + "preferences": "Préferences", + "publishToFile": "Publier vers un Fichier", + "redo": "Répéter", + "redoChange": "Répéter {{change}}", + "renamePrompt": "Comment souhaitez-vous renommer “{{name}}” ?", + "selectAll": "Choisir Tout", + "story": "Histoire", + "twine": "Twine", + "undoChange": "Annuler {{change}}", + "view": "Affichage" }, "components": { "addStoryFormatButton": {}, - "addTagButton": {}, - "fontSelect": {"fonts": {}}, - "indentButtons": {}, - "localStorageQuota": {}, + "addTagButton": { + "alreadyAdded": "Cette balise existe déjà.", + "addLabel": "Ajouter balise", + "invalidName": "Veuillez entrer un nom de balise valide.", + "newTag": "Nouvelle balise", + "tagColorLabel": "Couleur de la balise", + "tagNameLabel": "Nom de la balise" + }, + "fontSelect": { + "customScaleDetail": "Veuillez entrer un pourcentage uniquement.", + "customFamilyDetail": "Veuillez entrer le nom de la police uniquement.", + "familyEmpty": "Veuillez entrer un nom de police.", + "font": "Police d'écriture", + "fonts": { + "monospaced": "Mono-espacé", + "serif": "Serif", + "system": "Système" + }, + "fontSize": "Taille de police", + "percentage": "{{percent}}%", + "percentageIsntNumber": "Veuillez entrer un nombre.", + "percentageNotPositive": "Veuillez entrer un nombre supérieur à 0." + }, + "indentButtons": { + "indent": "Indenter", + "unindent": "Désindenter" + }, + "localStorageQuota": { + "measureAgain": "Mesurer de nouveau l'espace disponible", + "percentAvailable": "{percent}% d'espace disponible" + }, "passageCard": { "placeholderClick": "Double-cliquez sur ce passage pour le modifier.", "placeholderTouch": "Cliquez sur ce passage, puis sur l'icône du crayon pour le modifier." }, - "renamePassageButton": {"emptyName": "Veuillez entrer un nom."}, - "renameStoryButton": {"emptyName": "Veuillez entrer un nom."}, - "safariWarningCard": {}, - "storyCard": {}, - "storyFormatCard": {}, - "storyFormatSelect": {}, - "tagEditor": {} + "renamePassageButton": { + "emptyName": "Veuillez entrer un nom.", + "nameAlreadyUsed": "Un passage de cette histoire utilise déjà ce nom." + }, + "renameStoryButton": { + "emptyName": "Veuillez entrer un nom.", + "nameAlreadyUsed": "Une autre histoire a déjà ce nom." + }, + "safariWarningCard": { + "archiveAndUseAnotherBrowser": "Veuillez archiver vos histoires et utiliser un autre navigateur.", + "addToHomeScreen": "Ajoutez ce site à votre page d'accueil pour contourner cette limitation.", + "howToAddToHomeScreen": "Comment ajouter ce site à ma page d'accueil ?", + "learnMore": "En savoir plus", + "message": "Le navigateur que vous utilisez actuellement supprimera toutes vos histoires dans un délai de sept jours suivant votre dernière visite sur ce site web." + }, + "storyCard": { + "lastUpdated": "Dernière modification le {{date}}", + "passageCount": "1 passage", + "passageCount_plural": "{{count}} passages" + }, + "storyFormatCard": { + "author": "par {{author}}", + "builtIn": "Formatté En", + "defaultFormat": "Utilisé par Défaut", + "editorExtensionsDisabled": "Extensions de l'Éditeur désactivées", + "license": "License: {{license}}", + "loadingFormat": "Chargement du format de l'histoire...", + "loadError": "Ce format d'histoire n'a pas pu être chargé ({{errorMessage}}).", + "name": "{{name}} {{version}}", + "proofing": "Vérification", + "proofingFormat": "Utilisé pour la Vérification", + "useEditorExtensions": "Utiliser les Extensions de l'Éditeur", + "useFormat": "Utiliser en tant que format d'histoire par défaut", + "useProofingFormat": "Utiliser en tant que Format de Vérification" + }, + "storyFormatSelect": { + "loadingCount": "Chargement d'un Format d'Histoire...", + "loadingCount_plural": "Charement de {{loadingCount}} Formats d'Histoire..." + }, + "tagEditor": { + "alreadyExists": "Une balise portant ce nom existe déjà." + }, + "dialogCard": { + "contentsCrashed": "Un problème est survenu avec cette boîte de dialogue. Essayez de la fermer et de l'ouvrir à nouveau." + }, + "storageQuota": { + "freeSpace": "{{percent}}% d'espace disponible" + } }, "dialogs": { - "aboutTwine": {"donateToTwine": "Aidez Twine à Grandir Grâce À Un Don"}, - "appDonation": {"noThanks": "Non Merci"}, - "appPrefs": {"language": "Langue"}, - "passageEdit": {}, - "passageTags": {}, - "storyInfo": {"stats": {"title": "Statistiques de l'Histoire"}}, + "aboutTwine": { + "donateToTwine": "Aidez Twine à Grandir Grâce À Un Don", + "codeHeader": "Code", + "codeRepo": "Visiter le Dépôt du code source", + "license": "Cette application est publiée sous la licence GPL v3, mais toute oeuvre créée par son biais peut être publiée selon n'importe quel terme, y compris des termes commerciaux.", + "localizationHeader": "Localisations", + "title": "À Propos de Twine {{version}}", + "twineDescription": "Twine est une application open-source servant à la création d'histoires intéractives et non-linéaires." + }, + "appDonation": { + "donate": "Faire un don pour le développement de Twine", + "onlyOnce": "(Ce message ne sera affiché qu'une seule fois. Si vous désirez faire un don pour le développement de Twine à l'avenir, un lien à cet effet se trouve dans la fenêtre 'À Propos de Twine'.)", + "supportMessage": "Si vous aimez Twine, pensez à aider notre travail avec un don. Twine est un projet open-source, qui restera gratuit et dynamique grâce à votre soutien.", + "noThanks": "Non Merci", + "title": "Aider le développement de Twine." + }, + "appPrefs": { + "codeEditorFont": "Police de l'éditeur de code", + "codeEditorFontScale": "Taille de la police de l'éditeur de code", + "editorCursorBlinks": "Curseur clignotant dans les éditeurs", + "fontExplanation": "Modifier la police d'écriture ici affectera uniquement l'éditeur Twine. Cela ne modifiera pas la police utilisée par une histoire lorsqu'elle est jouée.", + "language": "Langue", + "passageEditorFont": "Police de l'éditeur de passage", + "passageEditorFontScale": "Taille de la police de l'éditeur de passage", + "themeLight": "Clair", + "themeDark": "Sombre", + "themeSystem": "Système", + "theme": "Thème", + "title": "Préférences" + }, + "passageEdit": { + "editorCrashed": "Un problème est survenu avec cet éditeur. Essayez de le fermer et d'éditeur à nouveau ce passage.", + "passageTextEditorLabel": "Texte du Passage", + "passageTextPlaceholder": "Entrez le corps de votre passage ici. Pour faire un lien avec un autre passage, entourez son nom entre deux paires de crochets, [[comme ceci]].", + "setAsStart": "Commencez votre histoire ici", + "size": "Taille", + "sizeLarge": "Grand", + "sizeSmall": "Petit", + "sizeTall": "Long", + "sizeWide": "Large" + }, + "passageTags": { + "noTags": "Aucune balise n'a été ajoutée aux passages de cette histoire.", + "title": "Balises du passage" + }, + "storyInfo": { + "stats": { + "title": "Statistiques de l'Histoire" + } + }, "storyJavaScript": { + "editorLabel": "JavaScript de l'histoire", + "title": "JavaScript de l'histoire", "explanation": "Tout JavaScript ajouté ici sera lancé dès que votre histoire sera ouverte dans un navigateur Web." }, "storySearch": { "title": "Chercher et Remplacer", - "replaceWith": "Remplacer Par" + "find": "Rechercher", + "includePassageNames": "Inclure les noms des passages", + "matchCase": "Casse exacte", + "matchCount": "{{count}} passage trouvé", + "matchCount_plural": "{{count}} passages trouvés", + "noMatches": "Aucun passage trouvé", + "replaceAll": "Remplacer dans tous les Passages", + "replaceWith": "Remplacer Par", + "useRegexes": "Utiliser une Expression Régulière" }, "storyStylesheet": { + "editorLabel": "Feuille de style de l'histoire", + "title": "Feuille de style de l'histoire", "explanation": "Tout CSS ajouté ici remplacera l'apparence par défaut de votre histoire" }, - "storyTags": {} + "storyTags": { + "noTags": "Aucune balise n'a été ajoutée à votre histoire.", + "title": "Balises de l'histoire" + }, + + "storyImport": { + "deselectAll": "Désélectionner tout", + "filePrompt": "Pour importer une histoire dans Twine, téléchargez une archive ou une histoire publiée.", + "importDifferentFile": "Importer un autre fichier", + "importSelected": "Importer les fichiers sélectionnés", + "importThisStory": "Importer cette histoire", + "noStoriesInFile": "Le fichier que vous avez chargé ne semble contenir aucune histoire Twine. Veuillez choisir un autre fichier.", + "storiesPrompt": "Choisissez les histoires à importer:", + "title": "Importer les histoires", + "willReplaceExisting": "Une histoire au nom similaire dans votre bibliothèque sera écrasée." + }, + "storyDetails": { + "storyFormatExplanation": "Qu'est-ce qu'un format d'histoire ?", + "snapToGrid": "Ajuster à la grille", + "stats": { + "brokenLinks": "Liens cassés", + "characters": "Caractères", + "title": "Statistiques de l'histoire", + "ifid": "L'IFID de cette histoire est {{ifid}}.", + "ifidExplanation": "Qu'est-ce qu'un IFID?", + "lastUpdate": "Dernière modification de cette histoire le {{date}}.", + "links": "Liens", + "passages": "Passages", + "words": "Mots" + } + } }, "electron": { - "errors": {"storyFileChangedExternally": {}}, - "menuBar": {"edit": "Modifier"}, - "storiesDirectoryName": "Histoires" + "backupsDirectoryName": "Sauvegardes", + "errors": { + "jsonSave": "Un problème est survenu durant la sauvegarde d'un fichier de paramètres.", + "storyFileChangedExternally": { + "message": "Le fichier “{{fileName}}” dans votre bibliothèque a été modifié en-dehors de Twine.", + "detail": "Sauvegarder des modifications écrasera ce fichier. Si vous souhaitez utiliser ce fichier au lieu de sa version dans Twine, Twine redémarrera et votre travail sera écrasé par le fichier.", + "overwriteChoice": "Sauvegarder les modifications dans Twine", + "relaunchChoice": "Utiliser le fichier et redémarrer" + }, + "storyDelete": "Un problème est survenu durant la suppression d'une histoire.", + "storyRename": "Un problème est survenu durant le renommage d'une histoire.", + "storySave": "Un problème est survenu durant la sauvegarde d'une histoire." + }, + "menuBar": { + "checkForUpdates": "Vérification des mises à jour...", + "edit": "Modifier", + "showDevTools": "Afficher la console de debug", + "showStoryLibrary": "Afficher la bibliothèque d'histoires", + "speech": "Discours", + "troubleshooting": "Résolution de problèmes", + "twineHelp": "Aide Twine", + "view": "Afficher" + }, + "storiesDirectoryName": "Histoires", + "updateCheck": { + "download": "Téléchargement", + "error": "Un problème est survenu durant la vérification des mises à jour de Twine.", + "updateAvailable": "Une nouvelle version de Twine est disponible.", + "upToDate": "Vous avez la version la plus récente de Twine." + } }, "routes": { "storyEdit": { @@ -67,15 +281,50 @@ "editStylesheet": "Modifier la Feuille de Style de l'Histoire", "findAndReplace": "Chercher et Remplacer", "proofStory": "Voir Épreuve de Correction", - "publishToFile": "Publier vers un Fichier" + "publishToFile": "Publier vers un Fichier", + "selectAllPassages": "Selectionner tous les Passages" + }, + "toolbar": { + "findAndReplace": "Chercher et Remplacer", + "javaScript": "JavaScript", + "passageTags": "Balises du passage", + "snapToGrid": "Ajuster à la grille", + "startStoryHere": "Commencer l'histoire ici", + "stylesheet": "Feuille de style", + "testFromHere": "Tester à partir d'ici" + }, + "zoomButtons": { + "storyStructure": "Afficher la structure de l'histoire uniquement", + "passageNames": "Afficher les noms des passage uniquement", + "passageNamesAndExcerpts": "Afficher les noms des passages et leurs résumés" } }, "storyFormatList": { - "title": {}, - "storyFormatExplanation": "Les formats d'histoire contrôlent l'apparence et le comportement des histoires durant la lecture." + "noneVisible": "Aucun des formats d'histoire ne correspond aux critères choisis.", + "show": "Afficher...", + "title": { + "all": "Tous les formats d'histoire", + "current": "Formats d'histoire actuels", + "user": "Formats d'histoire ajoutés par l'utilisateur" + }, + "toolbar": { + "addStoryFormatButton": { + "addPreview": "{{storyFormatName}} {{storyFormatVersion}} sera ajouté.", + "alreadyAdded": "{{storyFormatName}} {{storyFormatVersion}} a déjà été ajouté.", + "fetchError": "Le format d'histoire à cette adresse n'a pas pu être récupéré ({errorMessage}).", + "invalidUrl": "Veuillez entrer une URL valide.", + "prompt": "Pour ajouter un format d'histoire, entrez son adresse ci-dessous." + }, + "disableFormatExtensions": "Désactiver les extensions de l'éditeur", + "enableFormatExtensions": "Activer les extensions de l'éditeur", + "useAsDefaultFormat": "Utiliser en tant que format par défaut", + "useAsProofingFormat": "Utiliser pour vérifier les histoires" + }, + "storyFormatExplanation": "Story formats control the appearance and behavior of stories during play." }, "storyImport": {}, "storyList": { + "library": "Bibliothèque", "noStories": "Il n'y a aucune histoire sauvegardée dans Twine pour le moment. Pour commencer, vous pouvez soit créer une nouvelle histoire soit en importer une depuis un fichier.", "titleGeneric": "Histoires", "topBar": { @@ -85,6 +334,32 @@ "help": "Aide", "sortName": "Nom", "storyFormats": "Formats" + }, + "taggedTitleCount": "1 Histoire balisée", + "taggedTitleCount_0": "Aucune histoire balisée", + "taggedTitleCount_plural": "{{count}} histoires balisées", + "titleCount": "1 histoire", + "titleCount_0": "Aucune histoire", + "titleCount_plural": "{{count}} histoires", + "toolbar": { + "archive": "Archive", + "createStoryButton": { + "prompt": "Comment appelerez-vous votre histoire ? Vous pouvez changer ce nom ultérieurement.", + "emptyName": "Veuillez entrer un titre.", + "nameConflict": "Ce titre est déjà utilisé par une autre histoire." + }, + "deleteStoryButton": { + "warning": { + "electron": "Voulez-vous vraiment supprimer “{{storyName}}”? L'histoire sera mise à la corbeille.", + "web": "Voulez-vous vraiment supprimer “{{storyName}}”? L'histoire sera définitevement supprimée. Vous ne pourrez pas revenir en arrière." + } + }, + "showAllStories": "Afficher toutes les histoires", + "showTags": "Afficher les balises", + "sort": "Trier par", + "sortByDate": "Dernière modification", + "sortByName": "Titre", + "storyTags": "Balises de l'histoire" } }, "welcome": { @@ -92,17 +367,61 @@ "doneTitle": "C'est tout !", "gotoStoryList": "Aller à la Liste des Histoires", "greetingTitle": "Salut !", + "greeting": "

Twine est une application open-source servant à la création d'histoires intéractives et non-linéaires. Il y a quelques petites choses à savoir avant de commencer.

", "tellMeMore": "En Savoir Plus", - "helpTitle": "Nouveau venu ?" + "helpTitle": "Nouveau venu ?", + "help": "

Si vous n'avez jamais utilisé Twine auparavant, bienvenue ! Le Livre de Recettes Twine est une ressource très utilse pour apprendre à l'utiliser. Si vous n'avez jamais utilisé Twine auparavant, c'est un bon endroit pour commencer.

", + "autosave": "

Un dossier appelé 'Twine' se trouve désormais dans votre répertoire 'Documents'. Un répertoire 'Stories' se trouve à l'intérieur, et servira à contenir toutes vos sauvegardes. Twine sauvegarde automatiquement votre travail, vous n'avez donc pas à vous soucier de sauvegarder manuellement. Vous pouvez toujours ouvrir le dossier dans lequel vos histoires sont sauvegardées en utilisant le bouton Afficher la bibliothèque dans le menu de Twine Twine.

Comme Twine sauvegarde constamment votre travail, les fichiers de votre bibliothèque seront vérouillés en écriture tant que Twine est ouvert.

Si vous souhaitez ouvrir un fichier d'histoire Twine que vous avez reçu d'un tiers, vous pouvez l'importer dans votre bibliothèque en utilisant le bouton Importer depuis un fichier dans la liste des histoires.

", + "browserStorage": "

Cela signifie que vous n'avez pas besoin de créer un compte pour utiliser Twine 2, et que tout ce que vous créez n'est pas stocké sur un serveur distant—tout est conservé dans votre navigateur.

Deux choses très importantes sont à retenir, cependant. Comme votre travail n'est sauvegardé que sur votre navigateur, effacer vos données signifiera perdre votre travail! Souvenez-vous d'Archiver régulièrement votre travail. Vous pouvez également publier vos histoires dans des fichiers, en utilisant l'option correspondante dans le menu de chaque histoire dans la liste des histoires. Les archives et les fichiers d'histoire peuvent être réimportées dans Twine à n'importe quel moment.

D'autre part, toute personne utilisant ce navigateur peut voir et éditeur votre travail. Si vous avez un petit frère qui aime mettre son nez partout, considérez la création d'un profil à part pour vous-même.

", + "browserStorageTitle": "Votre travail est uniquement sauvegardé dans votre navigateur", + "done": "

Merci d'avoir lu, et amusez-vous bien avec Twine.

" + } + }, + "routeActions": { + "app": { + "aboutApp": "À propos de Twine", + "preferences": "Préférences", + "reportBug": "Signaler un Bug", + "storyFormats": "Formats d'histoire" + }, + "build": { + "play": "Jouer", + "proof": "Vérifier", + "publishToFile": "Publier dans un fichier", + "test": "Tester" } }, "store": { - "errors": {}, + "archiveFilename": "{{timestamp}} Twine Archive.html", + "errors": { + "cantPersistPrefs": "Un problème est survenu durant la sauvegardes de vos préférences ({{error}}).", + "cantPersistStories": "Un problème est survenu durant la sauvegardes de vos histoires ({{error}}).", + "cantPersistStoryFormats": "Un problème est survenu durant la sauvegardes de vos formats d'histoires ({{error}}).", + "electronRemediation": "Redémarrer cette application peut aider.", + "webRemediation": "Recharger cette page peut aider." + }, "passageDefaults": { "name": "Passage sans titre" }, - "storyDefaults": {"name": "Histoire sans Titre."}, - "storyFormatDefaults": {"name": "Format d'Histoire sans Titre."} + "storyDefaults": { + "name": "Histoire sans Titre" + }, + "storyFormatDefaults": { + "name": "Format d'Histoire sans Titre" + } }, - "undoChange": {"replaceAllText": "Remplacer Tout"} + "undoChange": { + "addTag": "Ajouter balise", + "changeTagColor": "Changer la couleur de la balise", + "newPassage": "Nouveau Passage", + "deletePassage": "Supprimer le Passage", + "deletePassages": "Supprimer les Passages", + "movePassage": "Déplacer le Passage", + "movePassages": "Déplacer les Passages", + "imortTag": "Supprimer la balise", + "renamePassage": "Renommer le Passage", + "removeTag": "Supprimer la balise", + "renameTag": "Renommer la balise", + "replaceAllText": "Remplacer Tout" + } } diff --git a/public/locales/pt-br.json b/public/locales/pt-BR.json similarity index 100% rename from public/locales/pt-br.json rename to public/locales/pt-BR.json diff --git a/public/locales/pt-PT.json b/public/locales/pt-PT.json new file mode 100644 index 000000000..72726d247 --- /dev/null +++ b/public/locales/pt-PT.json @@ -0,0 +1,411 @@ +{ + "colors": { + "none": "Sem Cor", + "red": "Vermelho", + "orange": "Laranja", + "yellow": "Amarelo", + "green": "Verde", + "blue": "Azul", + "purple": "Roxo" + }, + "common": { + "add": "Acrescentar", + "appName": "Twine", + "back": "Voltar", + "build": "Criar", + "cancel": "Cancelar", + "close": "Fechar", + "color": "Cor", + "create": "Criar", + "custom": "Personalizar", + "delete": "Apagar", + "deleteCount": "Apagar ({{count}})", + "details": "Detalhes", + "duplicate": "Duplicar", + "edit": "Editar", + "editCount": "Editar ({{count}})", + "help": "Ajuda", + "import": "Importar", + "more": "Mais", + "new": "Novo", + "next": "Seguinte", + "ok": "OK", + "passage": "Passagem", + "play": "Jogar", + "preferences": "Preferências", + "publishToFile": "Publicar para Ficheiro", + "redo": "Refazer", + "redoChange": "Refazer {{change}}", + "rename": "Mudar o Título", + "renamePrompt": "Qual será o novo título da história “{{name}}”?", + "remove": "Remover", + "selectAll": "Escolher Tudo", + "skip": "Saltar", + "story": "História", + "storyFormat": "Formato de História", + "tag": "Etiqueta", + "test": "Testar", + "twine": "Twine", + "undo": "Anular", + "undoChange": "Anular {{change}}", + "view": "Ver" + }, + "components": { + "addTagButton": { + "alreadyAdded": "Este nome de etiqueta já está a ser usado.", + "addLabel": "Acrescentar etiqueta", + "invalidName": "Introduz um nome válido para a etiqueta.", + "newTag": "Nova Etiqueta", + "tagColorLabel": "Cor da Etiqueta", + "tagNameLabel": "Nome da Etiqueta" + }, + "dialogCard": { + "contentsCrashed": "Alguma coisa correu mal com esta caixa de texto. Tenta fechá-la e abri-la outra vez." + }, + "fontSelect": { + "customScaleDetail": "Só valores em percentagem, por favor.", + "customFamilyDetail": "Introduz apenas o nome da fonte.", + "familyEmpty": "Introduz o nome da fonte.", + "font": "Fonte", + "fonts": { + "monospaced": "Monoespaçada", + "serif": "Serifada", + "system": "Sistema" + }, + "fontSize": "Tamanho da Fonte", + "percentage": "{{percent}}%", + "percentageIsntNumber": "Introduz um número.", + "percentageNotPositive": "Introduz um número maior do que 0." + }, + "indentButtons": { + "indent": "Indentar", + "unindent": "Remover Indentação" + }, + "localStorageQuota": { + "measureAgain": "Calcular o espaço disponível novamente", + "percentAvailable": "{percent}% de espaço disponível" + }, + "passageCard": { + "placeholderClick": "Faz duplo clique sobre esta passagem para editá-la.", + "placeholderTouch": "Toca nesta passagem, depois escolhe Editar no Separador Passagem para editá-la." + }, + "renamePassageButton": { + "emptyName": "Introduz um título.", + "nameAlreadyUsed": "Já há uma passagem com esse título nesta história." + }, + "renameStoryButton": { + "emptyName": "Introduz o título da história.", + "nameAlreadyUsed": "Já há uma história com esse título." + }, + "safariWarningCard": { + "archiveAndUseAnotherBrowser": "Arquiva as tuas histórias e usa outra plataforma.", + "addToHomeScreen": "Acrescenta esta página ao teu ecrã principal para contornar esta limitação.", + "howToAddToHomeScreen": "Como é que eu acrescento esta página ao meu ecrã principal?", + "learnMore": "Saber mais", + "message": "O navegador que estás a usar vai apagar todas as tuas histórias se não visitares esta página durante sete dias." + }, + "storageQuota": { + "freeSpace": "{{percent}}% de espaço disponível" + }, + "storyCard": { + "lastUpdated": "Editada pela última vez em {{date}}", + "passageCount": "1 passagem", + "passageCount_plural": "{{count}} passagens" + }, + "storyFormatCard": { + "author": "de {{author}}", + "builtIn": "Criado em", + "defaultFormat": "Usado por Defeito", + "editorExtensionsDisabled": "Extensões do Editor Desligadas", + "license": "Licença: {{license}}", + "loadingFormat": "A carregar o formato de história...", + "loadError": "O formato de história não pôde ser carregado. Deu este erro: ({{errorMessage}}).", + "name": "{{name}} {{version}}", + "proofing": "Revisão", + "proofingFormat": "Usado para a Revisão", + "useEditorExtensions": "Usar as Extensões do Editor", + "useFormat": "Usar como Formato de História por defeito", + "useProofingFormat": "Usar como Formato de Revisão" + }, + "storyFormatSelect": { + "loadingCount": "A carregar 1 Formato de História...", + "loadingCount_plural": "A carregar {{loadingCount}} Formatos de História..." + }, + "tagEditor": { + "alreadyExists": "Já existe uma etiqueta com esse nome." + } + }, + "dialogs": { + "aboutTwine": { + "donateToTwine": "Ajuda o Twine a Crescer com uma Doação", + "codeHeader": "Código", + "codeRepo": "Visitar o Repositório do Código-Fonte", + "license": "Esta aplicação está publicada de acordo com a licença GPL v3, mas qualquer obra criada pode ser publicada de acordo com quaisquer outras condições, incluindo comerciais.", + "localizationHeader": "Localizações", + "title": "Sobre o Twine {{version}}", + "twineDescription": "O Twine é uma aplicação de código-fonte aberto para contar histórias interativas e não lineares." + }, + "appDonation": { + "donate": "Doar para o desenvolvimento do Twine", + "onlyOnce": "(Esta mensagem só te será apresentada uma vez. Se quiseres fazer uma doação para o desenvolvimento do Twine, há uma hiperligação para o efeito na caixa de diálogo Sobre o Twine.)", + "supportMessage": "Se não podes viver sem o Twine, talvez o possas ajudar a crescer, fazendo uma doação. O Twine é um projeto de código-fonte aberto que será sempre gratuito — e graças à tua ajuda, o Twine poderá continuar a crescer.", + "noThanks": "Obrigado, mas não.", + "title": "Apoiar o Desenvolviment do Twine" + }, + "appPrefs": { + "codeEditorFont": "Fonte do Editor de Código", + "codeEditorFontScale": "Tamanho da Fonte do Editor de Código", + "editorCursorBlinks": "O Cursor Pisca nos Editores", + "fontExplanation": "Alterar a fonte aqui, afeta apenas o editor do Twine. A fonte usada na história não será alterada.", + "language": "Língua", + "passageEditorFont": "Fonte do Editor de Passagem", + "passageEditorFontScale": "Tamanho da Fonte do Editor de Passagem", + "themeLight": "Claro", + "themeDark": "Escuro", + "themeSystem": "Sistema", + "theme": "Tema", + "title": "Preferências" + }, + "passageEdit": { + "editorCrashed": "Alguma coisa esquisita aconteceu com o editor. Tenta fechá-lo e editar a passagem outra vez.", + "passageTextEditorLabel": "Texto da Passagem", + "passageTextPlaceholder": "Escreve o texto da passagem aqui. Para ligares a outra passagem, envolve uma letra, palavra ou expressão com dois colchetes, [[desta maneira]].", + "setAsStart": "Começar a História Aqui", + "size": "Tamanho", + "sizeLarge": "Grande", + "sizeSmall": "Pequena", + "sizeTall": "Alta", + "sizeWide": "Larga" + }, + "passageTags": { + "noTags": "Ainda não foram adicionadas etiquetas a passagens nesta história.", + "title": "Etiquetas das Passagens" + }, + "storyImport": { + "deselectAll": "Desmarcar Tudo", + "filePrompt": "Para importar histórias para o Twine, carrega, em baixo, um ficheiro de arquivo ou um ficheiro de uma história publicada.", + "importDifferentFile": "Importar um Ficheiro Diferente", + "importSelected": "Importar os Ficheiros Marcados", + "importThisStory": "Importar Esta História", + "noStoriesInFile": "Parece-me que não há histórias Twine no ficheiro que carregaste. Tenta com outro ficheiro.", + "storiesPrompt": "Escolhe as histórias que queres importar:", + "title": "Importar Histórias", + "willReplaceExisting": "Uma história da biblioteca com o mesmo título vai ser substituída." + }, + "storyDetails": { + "storyFormatExplanation": "O que é um formato de história?", + "snapToGrid": "Alinhar à Grelha", + "stats": { + "brokenLinks": "Ligações cortadas", + "characters": "Caracteres", + "title": "Estatísticas da História", + "ifid": "O IFID desta história é {{ifid}}.", + "ifidExplanation": "O que é um IFID?", + "lastUpdate": "Esta história foi alterada pela última vez em {{date}}.", + "links": "Ligações", + "passages": "Passagens", + "words": "Palavras" + } + }, + "storyJavaScript": { + "editorLabel": "JavaScript da História", + "title": "JavaScript da História", + "explanation": "O código JavaScript introduzido aqui vai correr assim que a história for aberta num navegador." + }, + "storySearch": { + "title": "Encontrar e Substituir", + "find": "Encontrar", + "includePassageNames": "Incluir os Títulos das Passagens", + "matchCase": "Sensível a maiúsculas/minúsculas", + "matchCount": "{{count}} passagem correspondente", + "matchCount_plural": "{{count}} passagens correspondentes", + "noMatches": "Sem passagens correspondentes", + "replaceAll": "Substituir em todas as passagens", + "replaceWith": "Substituir por", + "useRegexes": "Usar Expressões Regulares" + }, + "storyStylesheet": { + "editorLabel": "Folha de Estilos da História", + "title": "Folha de Estilos da História", + "explanation": "Qualquer trecho de código CSS introduzido aqui irá alterar a aparência padrão da história." + }, + "storyTags": { + "noTags": "Não foram ainda dadas etiquetas às tuas histórias.", + "title": "Etiquetas de História" + } + }, + "electron": { + "backupsDirectoryName": "Cópias de Segurança", + "errors": { + "jsonSave": "Alguma coisa correu mal durante a gravação do ficheiro com as configurações.", + "storyFileChangedExternally": { + "message": "O ficheiro “{{fileName}}” da tua biblioteca de histórias foi alterado fora do Twine.", + "detail": "As alterações vão ser gravadas por cima deste ficheiro. Se quiseres usar este ficheiro em vez da versão que já está no Twine, o Twine vai reiniciar, e o teu trabalho vai ser substituído pelo do ficheiro.", + "overwriteChoice": "Gravar as Alterações no Twine", + "relaunchChoice": "Usar o Ficheiro e Reiniciar" + }, + "storyDelete": "Alguma coisa correu mal ao apagarmos a história.", + "storyRename": "Alguma coisa correu mal ao alterarmos o título da história.", + "storySave": "Alguma coisa correu mal ao gravarmos a história." + }, + "menuBar": { + "checkForUpdates": "Verificar se há atualizações...", + "edit": "Editar", + "showDevTools": "Mostrar a Consola de Depuração", + "showStoryLibrary": "Mostrar a Biblioteca de Histórias", + "speech": "Fala", + "troubleshooting": "Resolução de Problemas", + "twineHelp": "Ajuda do Twine", + "view": "Ver" + }, + "storiesDirectoryName": "Histórias", + "updateCheck": { + "download": "Descarregar", + "error": "Alguma coisa correu mal ao tentarmos verificar se há uma nova versão do Twine.", + "updateAvailable": "Está disponível uma versão mais recente do Twine.", + "upToDate": "Estás a usar a versão mais recente do Twine." + } + }, + "routes": { + "storyEdit": { + "toolbar": { + "findAndReplace": "Encontrar e Substituir", + "javaScript": "JavaScript", + "passageTags": "Etiquetas das Passagens", + "snapToGrid": "Alinhar à Grelha", + "startStoryHere": "Começar a História Aqui", + "stylesheet": "Folha de Estilos", + "testFromHere": "Testar a partir daqui" + }, + "topBar": { + "editJavaScript": "Editar o código JavaScript da História", + "editStylesheet": "Editar a Folha de Estilos da História", + "findAndReplace": "Encontrar e Substituir", + "passageTags": "Editar as Etiquetas das Passagens", + "proofStory": "Ver uma Cópia para Revisão", + "publishToFile": "Publicar para Ficheiro", + "selectAllPassages": "Marcar Todas as Passagens" + }, + "zoomButtons": { + "storyStructure": "Mostrar apenas a Estrutura da História", + "passageNames": "Mostrar apenas os Títulos das Passagens", + "passageNamesAndExcerpts": "Mostrar os Títulos das Passagens e os Excertos" + } + }, + "storyFormatList": { + "noneVisible": "Não há formatos de história que correspondam aos critérios escolhidos.", + "show": "Mostrar...", + "title": { + "all": "Todos os Formatos de História", + "current": "Formatos de História Disponíveis", + "user": "Formatos de História Adicionados pelo Utilizador" + }, + "toolbar": { + "addStoryFormatButton": { + "addPreview": "O formato {{storyFormatName}} {{storyFormatVersion}} vai ser acrescentado.", + "alreadyAdded": "O formato {{storyFormatName}} {{storyFormatVersion}} já foi acrescentado. ", + "fetchError": "O formato de história no endereço apresentado não pôde ser descarregado: ({errorMessage}).", + "invalidUrl": "Introduz um URL válido.", + "prompt": "Para acrescentares um formato de história, introduz o seu endereço em baixo." + }, + "disableFormatExtensions": "Desligar as Extensões do Editor", + "enableFormatExtensions": "Ligar as Extensões do Editor", + "useAsDefaultFormat": "Usar como Formato por Defeito", + "useAsProofingFormat": "Usar para a Revisão das Histórias" + }, + "storyFormatExplanation": "Os formatos de história controlam o aspeto visual e o comportamento das histórias durante o jogo." + }, + "storyList": { + "library": "Biblioteca", + "noStories": "Não há histórias gravadas no Twine neste momento. Para começares, podes criar uma nova história ou importar uma de um ficheiro.", + "taggedTitleCount": "1 História Etiquetada", + "taggedTitleCount_0": "Não Há Histórias Etiquetadas", + "taggedTitleCount_plural": "{{count}} Histórias Etiquetadas", + "titleCount": "1 História", + "titleCount_0": "Não há Histórias", + "titleCount_plural": "{{count}} Histórias", + "titleGeneric": "Histórias", + "toolbar": { + "archive": "Arquivar", + "createStoryButton": { + "prompt": "Que título vais dar à tua história? Podes mudá-lo mais tarde.", + "emptyName": "Introduz um título.", + "nameConflict": "Já há uma história com esse título." + }, + "deleteStoryButton": { + "warning": { + "electron": "Queres mesmo apagar a história “{{storyName}}”? Vai ser movida para o caixote de lixo.", + "web": "Queres mesmo apagar a história “{{storyName}}”? Vai ser apagada para sempre. Não podes reverter esta decisão." + } + }, + "showAllStories": "Mostrar Todas as Histórias", + "showTags": "Mostrar Etiquetas", + "sort": "Ordenar por", + "sortByDate": "Última atualização", + "sortByName": "Título", + "storyTags": "Etiquetas de História" + } + }, + "welcome": { + "autosave": "

Agora tens uma pasta chamada Twine na pasta dos teus Documentos. Dentro dela há uma pasta intitulada Stories, onde as tuas histórias serão gravadas. O Twine grava a história à medida que vais trabalhando, por isso não tens de te preocupar em gravá-la. Podes sempre abrir a pasta em que as tuas histórias são gravadas através do item Mostrar Biblioteca no menu do Twine.

Como o Twine está sempre a gravar o teu trabalho, os ficheiros da tua biblioteca de histórias vão estar trancados e não poderão ser editados enquanto o Twine estiver aberto.

Se quiseres abrir um ficheiro de uma história Twine que recebeste de alguém, podes importá-lo para a tua biblioteca, fazendo uso da ligação Importar de Ficheiro na lista de histórias.

", + "autosaveTitle": "O teu trabalho é automaticamente gravado.", + "browserStorage": "

Isto significa que não precisas de criar uma conta para usar o Twine 2, e tudo o que criares não ficará guardado num servidor sabe-se lá onde—fica sempre aqui no teu navegador.

Mas não te esqueças de duas coisas muito importantes. Como o teu trabalho é gravado apenas no teu navegador, se limpares os dados guardados, irás perder tudo! Não queremos isso. Lembra-te de usar frequentemente o botão Arquivar. Podes também publicar histórias individuais como ficheiros, usando o menu em cada história na lista de histórias. Tanto os arquivos como os ficheiros de história podem ser sempre importados de volta para o Twine.

Segundo, qualquer pessoa que puder usar este navegador pode ver as tuas histórias e alterá-las. Portanto, se tiveres um irmão abelhudo aí por casa, talvez seja boa ideia aprenderes a criar um perfil separado, só para ti.

", + "browserStorageTitle": "O teu trabalho fica apenas gravado no teu navegador", + "done": "

Obrigado pela leitura, e diverte-te com o Twine.

", + "doneTitle": "E é isto!", + "gotoStoryList": "Ir para a Lista de Histórias", + "greeting": "

O Twine é uma ferramenta de código-fonte aberto para contar histórias interativas e não lineares. Há algumas coisas que deves saber antes de começar.

", + "greetingTitle": "Alô!", + "tellMeMore": "Quero saber mais", + "help": "

Se nunca antes usaste o Twine, deixa dar-te as boas-vindas! O Livro de Receitas do Twine é um ótimo recurso para aprender a usar o Twine. Se nunca escreveste com o Twine, é um bom sítio para começar.

", + "helpTitle": "É a tua primeira vez aqui?" + } + }, + "routeActions": { + "app": { + "aboutApp": "Sobre o Twine", + "preferences": "Preferências", + "reportBug": "Reportar um Problema", + "storyFormats": "Formatos de História" + }, + "build": { + "play": "Jogar", + "proof": "Rever", + "publishToFile": "Publicar para Ficheiro", + "test": "Testar" + } + }, + "store": { + "archiveFilename": "{{timestamp}} Arquivo do Twine.html", + "errors": { + "cantPersistPrefs": "Alguma coisa correu mal ao gravarmos as tuas preferências: ({{error}}).", + "cantPersistStories": "Alguma coisa correu mal ao gravarmos as tuas histórias: ({{error}}).", + "cantPersistStoryFormats": "Alguma coisa correu mal ao gravamos os formatos de história: ({{error}}).", + "electronRemediation": "Reiniciar a aplicação poderá ajudar.", + "webRemediation": "Recarregar esta página poderá ajudar." + }, + "passageDefaults": { + "name": "Passagem sem Título" + }, + "storyDefaults": { + "name": "História sem Título" + }, + "storyFormatDefaults": { + "name": "Formato de História sem Título" + } + }, + "undoChange": { + "addTag": "Acrescentar Etiqueta", + "changeTagColor": "Mudar a Cor da Etiqueta", + "newPassage": "Nova Passagem", + "deletePassage": "Apagar a Passagem", + "deletePassages": "Apagar as Passagens", + "movePassage": "Mover a Passagem", + "movePassages": "Mover as Passagens", + "imortTag": "Remover a Etiqueta", + "renamePassage": "Mudar o Título da Passagem", + "removeTag": "Remover a Etiqueta", + "renameTag": "Mudar o Nome da Etiqueta", + "replaceAllText": "Substituir Tudo" + } +} diff --git a/public/locales/pt-pt.json b/public/locales/pt-pt.json deleted file mode 100644 index df6096553..000000000 --- a/public/locales/pt-pt.json +++ /dev/null @@ -1,338 +0,0 @@ -{ - "colors": { - "blue": "Azul", - "green": "Verde", - "none": "Sem cor", - "orange": "Laranja", - "purple": "Roxo", - "red": "Vermelho", - "yellow": "Amarelo" - }, - "common": { - "add": "Adicionar", - "appName": "Twine", - "cancel": "Cancelar", - "close": "Fechar", - "color": "Cor", - "custom": "Personalizado", - "delete": "Apagar", - "deleteCount": "Apagar ({{count}})", - "duplicate": "Duplicar", - "edit": "Editar", - "editCount": "Editar ({{count}})", - "import": "Importar", - "more": "Mais", - "next": "Próximo", - "ok": "OK", - "play": "Jogar", - "preferences": "Preferências", - "publishToFile": "Publicar como ficheiro", - "redo": "Refazer", - "redoChange": "Refazer {{change}}", - "remove": "Remover", - "rename": "Mudar o nome", - "renamePrompt": "Que novo nome queres dar a “{{name}}”?", - "skip": "Saltar", - "storyFormat": "Formato de história", - "tag": "Etiqueta", - "test": "Testar", - "undo": "Desfazer", - "undoChange": "Desfazer {{change}}" - }, - "components": { - "addStoryFormatButton": { - "addPreview": "O {{storyFormatName}} {{storyFormatVersion}} vai ser adicionado.", - "alreadyAdded": "O {{storyFormatName}} {{storyFormatVersion}} já foi adicionado.", - "fetchError": "Ocorreu um erro ao transferir este formato ( {{errorMessage}} ).", - "invalidUrl": "O endereço que introduziste não é um URL válido.", - "prompt": "Para adicionares um formato de história, introduz o seu endereço em baixo." - }, - "addTagButton": { - "addLabel": "Adicionar etiqueta", - "alreadyAdded": "Esta etiqueta já foi adicionada.", - "invalidName": "Por favor, introduz um nome válido para a etiqueta.", - "newTag": "Nova Etiqueta", - "tagColorLabel": "Cor da etiqueta", - "tagNameLabel": "Nome da etiqueta" - }, - "fontSelect": { - "customFamilyDetail": "Por favor, introduz apenas o nome da fonte.", - "customScaleDetail": "Por favor, introduz apenas uma percentagem.", - "familyEmpty": "Por favor, introduz um nome de fonte.", - "font": "Fonte", - "fontSize": "Tamanho da Fonte", - "fonts": { - "monospaced": "Monoespaçado", - "serif": "Serifa", - "system": "Sistema" - }, - "percentage": "{{percent}}%", - "percentageIsntNumber": "Por favor, introduz um número.", - "percentageNotPositive": "Introduz, por favor, um número maior do que 0." - }, - "indentButtons": { - "indent": "Indentar", - "unindent": "Retirar indentação" - }, - "localStorageQuota": { - "measureAgain": "Avaliar o espaço disponível novamente", - "percentAvailable": "{percent}% de espaço disponível" - }, - "passageCard": { - "placeholderClick": "Faz duplo-clique nesta passagem para editá-la.", - "placeholderTouch": "Toca nesta passagem e, em seguida, no ícone do lápis para editá-la." - }, - "renamePassageButton": { - "emptyName": "Indica um nome, por favor.", - "nameAlreadyUsed": "A história já tem uma passagem com esse nome." - }, - "renameStoryButton": { - "emptyName": "Indica um nome, por favor.", - "nameAlreadyUsed": "Já há uma história com esse nome." - }, - "safariWarningCard": { - "addToHomeScreen": "Adiciona esta página ao teu ecrã inicial para evitares esta limitação.", - "archiveAndUseAnotherBrowser": "Arquiva as tuas histórias e usa outra plataforma, por favor.", - "howToAddToHomeScreen": "Como é que eu adiciono isto ao meu ecrã inicial?", - "learnMore": "Saber mais", - "message": "O navegador que estás a usar vai apagar todas as tuas histórias se passares sete dias sem visitar este site." - }, - "storyCard": { - "lastUpdated": "Última edição em {{date}}", - "passageCount": "1 passagem", - "passageCount_plural": "{{count}} passagens" - }, - "storyFormatCard": { - "author": "por {{author}}", - "license": "Licença: {{license}}", - "loadError": "Este formato de história não pôde ser carregado ( {{errorMessage}} ).", - "loadingFormat": "A carregar este formato de história...", - "name": "{{version}} {{name}}", - "useFormat": "Usar como formato de história por defeito", - "useProofingFormat": "Usar como formato de revisão" - }, - "storyFormatSelect": { - "loadingCount": "A carregar 1 formato de história ...", - "loadingCount_plural": "A carregar {{loadingCount}} formatos de história..." - }, - "tagEditor": { - "alreadyExists": "Já existe uma etiqueta com esse nome." - } - }, - "dialogs": { - "aboutTwine": { - "codeHeader": "Código", - "codeRepo": "Visitar o repositório do código-fonte", - "donateToTwine": "Ajuda o Twine a crescer com uma doação", - "license": "Esta aplicação é lançada de acordo com a licença GPL v3 , mas qualquer trabalho criado com ela, pode ser lançado sob quaisquer termos, incluindo comerciais.", - "localizationHeader": "Localizações", - "title": "Sobre o {{version}}", - "twineDescription": "O Twine é uma aplicação de código-fonte aberto para contar histórias interativas e não lineares." - }, - "appDonation": { - "donate": "Doar para o desenvolvimento do Twine", - "noThanks": "Não, obrigado", - "onlyOnce": "(Esta mensagem só te será apresentada uma vez. Se quiseres fazer uma doação para o desenvolvimento do Twine, há um \"link\" na caixa de diálogo \"Sobre o Twine\".)", - "supportMessage": "Se não podes viver sem o Twine, talvez o possas ajudar a crescer, fazendo uma doação. O Twine é um projeto de código-fonte aberto que será sempre gratuito — e graças à tua ajuda, o Twine poderá continuar a prosperar.", - "title": "Apoiar o desenvolvimento do Twine" - }, - "appPrefs": { - "codeEditorFont": "Fonte do editor de código", - "codeEditorFontScale": "Tamanho da fonte do editor de código", - "fontExplanation": "Alterar a fonte aqui, afeta apenas o editor do Twine. A fonte usada na história não será alterada.", - "language": "Idioma", - "passageEditorFont": "Fonte do editor de passagem", - "passageEditorFontScale": "Tamanho da fonte do editor de passagens", - "theme": "Tema", - "themeDark": "Escuro", - "themeLight": "Claro", - "themeSystem": "Sistema", - "title": "Preferências" - }, - "passageEdit": { - "setAsStart": "Começar a história aqui", - "size": "Tamanho", - "sizeLarge": "Larga", - "sizeSmall": "Pequeno", - "sizeTall": "Estreita", - "sizeWide": "Larga" - }, - "passageTags": { - "noTags": "Não foram adicionadas etiquetas às passagens desta história.", - "title": "Etiquetas da passagem" - }, - "storyInfo": { - "setStoryFormat": "Definir o formato de história", - "snapToGrid": "Ajustar à grelha", - "stats": { - "brokenLinks": "Links quebrados", - "characters": "Personagens", - "ifid": "O IFID desta história é {{ifid}}.", - "ifidExplanation": "O que é um IFID?", - "lastUpdate": "Esta história foi alterada pela última vez em {{date}} .", - "links": "Links", - "passages": "Passagens", - "title": "Estatísticas da história", - "words": "Palavras" - }, - "storyFormatExplanation": "O que é um formato de história?" - }, - "storyJavaScript": { - "explanation": "Qualquer código de JavaScript aqui introduzido vai correr assim que a história for aberta no navegador.", - "title": "JavaScript da História" - }, - "storySearch": { - "find": "Encontrar", - "includePassageNames": "Incluir os nomes das passagens", - "matchCase": "Sensível a maiúsculas/minúsculas", - "matchCount": "{{count}} passagem correspondente", - "matchCount_plural": "{{count}} passagens correspondentes", - "noMatches": "Sem passagens correspondentes", - "replaceAll": "Substituir em todas as passagens", - "replaceWith": "Substituir por", - "title": "Encontrar e Substituir", - "useRegexes": "Usar expressões regulares" - }, - "storyStylesheet": { - "explanation": "Qualquer fragmento de código CSS introduzido aqui irá alterar a aparência padrão da sua história.", - "title": "Folha de estilos da história" - }, - "storyTags": { - "noTags": "Não foram adicionadas etiquetas às tuas histórias.", - "title": "Etiquetas de história" - } - }, - "electron": { - "backupsDirectoryName": "Cópias de segurança", - "errors": { - "jsonSave": "Ocorreu um erro ao gravar o ficheiro de configurações.", - "storyDelete": "Ocorreu um erro ao apagar a história.", - "storyFileChangedExternally": { - "detail": "As alterações vão ser gravadas por cima deste ficheiro. Se quiseres usar este ficheiro em vez da versão que está no Twine, o Twine vai reiniciar, e teu trabalho será substituído pelo do ficheiro.", - "message": "O ficheiro “ {{fileName}} ” da tua biblioteca de histórias foi alterado fora do Twine.", - "overwriteChoice": "Gravar alterações no Twine", - "relaunchChoice": "Usar o ficheiro e reiniciar" - }, - "storyRename": "Ocorreu um erro ao renomear a história.", - "storySave": "Ocorreu um erro ao gravar a história." - }, - "menuBar": { - "edit": "Editar", - "showDevTools": "Mostrar consola de depuração", - "showStoryLibrary": "Mostrar a biblioteca de histórias", - "speech": "Fala", - "troubleshooting": "Solução de problemas", - "twineHelp": "Ajuda do Twine", - "view": "Visualizar" - }, - "storiesDirectoryName": "Histórias" - }, - "routes": { - "storyEdit": { - "topBar": { - "addPassage": "Passagem", - "editJavaScript": "Editar o código JavaScript da história", - "editStylesheet": "Editar a folha de estilos da história", - "findAndReplace": "Encontrar e substituir", - "passageTags": "Editar Etiquetas da Passagem", - "proofStory": "Ver uma cópia para revisão", - "publishToFile": "Publicar como ficheiro", - "selectAllPassages": "Marcar todas as passagens", - "storyInfo": "Informações sobre a história", - "zoomIn": "Aumentar zoom", - "zoomOut": "Reduzir o zoom" - } - }, - "storyFormatList": { - "noneVisible": "Nenhum formato de história corresponde aos critérios que selecionaste.", - "show": "Mostrar...", - "storyFormatExplanation": "Os formatos de história controlam a aparência e o comportamento das histórias durante o jogo.", - "title": { - "all": "Todos os formatos de história", - "current": "Formatos de história disponíveis", - "user": "Formatos de história adicionados pelo utilizador" - } - }, - "storyImport": { - "choosePrompt": "Escolhe as histórias que queres importar do arquivo que carregaste:", - "deselectAll": "Desmarcar tudo", - "importDifferentFile": "Importar um ficheiro diferente", - "importSelected": "Importar os ficheiros selecionados", - "importThisStory": "Importar esta história", - "noStoriesInFile": "Não encontrámos nenhumas histórias do Twine no ficheiro que carregaste. Tenta, por favor, um outro ficheiro.", - "selectAll": "Marcar tudo", - "title": "Importar histórias", - "uploadPrompt": "Para importar histórias para o Twine, carrega, em baixo, um ficheiro de arquivo de histórias ou um ficheiro de uma história.", - "willReplaceExisting": "A história da tua biblioteca com esse mesmo nome será substituída." - }, - "storyList": { - "noStories": "Neste momento, não há histórias gravadas no Twine. Para começares, cria uma história nova ou importa uma de um ficheiro.", - "taggedTitleCount": "1 história etiquetada", - "taggedTitleCount_0": "Sem histórias etiquetadas", - "taggedTitleCount_plural": "{{count}} histórias etiquetadas", - "titleCount": "1 história", - "titleCount_0": "Sem histórias", - "titleCount_plural": "{{count}} Histórias", - "titleGeneric": "Histórias", - "topBar": { - "about": "Sobre o Twine", - "archive": "Arquivo", - "createStory": "História", - "help": "Ajuda", - "reportBug": "Reportar um erro", - "showAllStories": "Todas as histórias", - "showTags": "Mostrar etiquetas...", - "sort": "Ordenar por...", - "sortDate": "Data", - "sortName": "Nome", - "storyFormats": "Formatos", - "storyTags": "Editar as etiquetas da história" - } - }, - "welcome": { - "autosave": "

Agora já tens uma pasta chamada Twine na tua pasta de Documentos. Dentro da pasta Twine, criámos uma pasta chamada Histórias, onde todos os teus trabalhos serão gravados. O Twine grava automaticamente enquanto trabalhas, portanto não precisas de te preocupar em gravar a tua história. Podes sempre abrir a pasta em que as tuas histórias estão gravadas através da opção Mostrar biblioteca no menu do Twine.

Como o Twine está sempre a gravar o teu trabalho, os ficheiros da tua biblioteca de histórias não podem ser editados enquanto o Twine estiver aberto.

Se quiseres abrir o ficheiro de uma história do Twine que recebeste de uma outra pessoa, podes importá-lo para a tua biblioteca usando a opção Importar ficheiro na lista de histórias.

", - "autosaveTitle": "O teu trabalho é gravado automaticamente.", - "browserStorage": "

Isto significa que não precisas de criar uma conta para usar o Twine 2, e tudo o que criares não fica armazenado num servidor sabe-se lá onde — fica aqui no teu navegador.

No entanto, há duas coisas muito importantes de que tens de te lembrar. Como o teu trabalho fica apenas gravado no teu navegador, se limpares os dados do navegador, vais perder o teu trabalho! O que não é nada bom. Lembra-te de usar o botão Arquivar com frequência. Também podes publicar cada história separadamente num ficheiro, usando a opção disponível em cada história, na lista de histórias. Tanto os ficheiros de arquivo, como os ficheiros individuais de história podem ser reimportados, a qualquer momento, para o Twine.

Em segundo lugar, qualquer pessoa que usar este navegador, pode ver e fazer alterações ao teu trabalho. Portanto, se tiveres um irmão mais novo abelhudo, talvez seja boa ideia criares um perfil separado só para ti.

", - "browserStorageTitle": "O teu trabalho fica apenas gravado no navegador", - "done": "

Obrigado por leres, e diverte-te com o Twine.

", - "doneTitle": "E é isto!", - "gotoStoryList": "Ir para a lista de histórias", - "greeting": "

O Twine é uma ferramenta de código-fonte aberto para contar histórias interativas e não lineares. Há algumas coisas que é importante saberes antes de começar.

", - "greetingTitle": "Olá!", - "help": "

Se nunca usaste o Twine antes, bem-vinda(o)! O O Livro de Receitas do Twine é um ótimo recurso para aprenderes a usar o programa. Se nunca usaste o Twine, é um ótimo lugar para começar.

", - "helpTitle": "É a primeira vez aqui?", - "tellMeMore": "Quero saber mais" - } - }, - "store": { - "archiveFilename": "{{timestamp}} Arquivo_do_Twine.html", - "errors": { - "cantPersistPrefs": "Erro ao gravar as preferências ( {{error}} ).", - "cantPersistStories": "Erro ao gravar as tuas histórias ( {{error}} ).", - "cantPersistStoryFormats": "Erro ao gravar os formatos de história ( {{error}} ).", - "electronRemediation": "Reiniciar a aplicação poderá ajudar.", - "webRemediation": "Recarregar esta página poderá ajudar." - }, - "passageDefaults": { - "name": "Passagem sem título" - }, - "storyDefaults": { - "name": "História sem título" - }, - "storyFormatDefaults": { - "name": "Formato de história sem título" - } - }, - "undoChange": { - "changeTagColor": "Mudar a cor da etiqueta", - "createPassage": "Criar passagem", - "deletePassage": "Apagar passagem", - "deletePassages": "Apagar passagens", - "movePassage": "Mover passagem", - "movePassages": "Mover passagens", - "removeTag": "Remover etiqueta", - "renamePassage": "Renomear passagem", - "renameTag": "Renomear etiqueta", - "replaceAllText": "Substituir tudo" - } -} diff --git a/public/locales/zh-cn.json b/public/locales/zh-CN.json similarity index 98% rename from public/locales/zh-cn.json rename to public/locales/zh-CN.json index 7174b5159..8acf0aae6 100644 --- a/public/locales/zh-cn.json +++ b/public/locales/zh-CN.json @@ -297,9 +297,9 @@ "useAsProofingFormat": "用于校对故事", "useAsDefaultFormat": "设为默认格式", "addStoryFormatButton": { - "addPreview": "将添加 {storyFormatName} {storyFormatVersion}。", - "alreadyAdded": "已添加 {storyFormatName} {storyFormatVersion}。", - "fetchError": "无法读取该位置的故事格式({errorMessage})。", + "addPreview": "将添加 {{storyFormatName}} {{storyFormatVersion}}。", + "alreadyAdded": "已添加 {{storyFormatName}} {{storyFormatVersion}}。", + "fetchError": "无法读取该位置的故事格式({{errorMessage}})。", "invalidUrl": "请输入有效的 URL。", "prompt": "要添加故事格式,请在下方输入地址。" }, diff --git a/public/story-formats/harlowe-3.3.1/format.js b/public/story-formats/harlowe-3.3.1/format.js deleted file mode 100644 index a8dea51a0..000000000 --- a/public/story-formats/harlowe-3.3.1/format.js +++ /dev/null @@ -1,2 +0,0 @@ -window.storyFormat({"name":"Harlowe","version":"3.3.1","author":"Leon Arnott","description":"The default story format for Twine 2, with numerous programming features and a rich passage editor. No HTML, JS or CSS experience required. Consult its documentation.","image":"icon.svg","url":"http://twinery.org/","license":"Zlib","proofing":false,"source":"\n\n\n\n\n{{STORY_NAME}}\n\n\n\n\n{{STORY_DATA}}\n\n\n\n\n","setup": function(){"use strict";function _createForOfIteratorHelper(a,t){var r,o="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!o){if(Array.isArray(a)||(o=_unsupportedIterableToArray(a))||t&&a&&"number"==typeof a.length)return o&&(a=o),r=0,{s:t=function F(){},n:function n(){return r>=a.length?{done:!0}:{done:!1,value:a[r++]}},e:function e(a){throw a},f:t};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,c=!0,l=!1;return{s:function s(){o=o.call(a)},n:function n(){var e=o.next();return c=e.done,e},e:function e(a){l=!0,i=a},f:function f(){try{c||null==o.return||o.return()}finally{if(l)throw i}}}}function _toArray(e){return _arrayWithHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableRest()}function _slicedToArray(e,a){return _arrayWithHoles(e)||_iterableToArrayLimit(e,a)||_unsupportedIterableToArray(e,a)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArrayLimit(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,o,n=[],i=!0,s=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(n.push(r.value),!a||n.length!==a);i=!0);}catch(e){s=!0,o=e}finally{try{i||null==t.return||t.return()}finally{if(s)throw o}}return n}}function _arrayWithHoles(e){if(Array.isArray(e))return e}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,a){if(e){if("string"==typeof e)return _arrayLikeToArray(e,a);var t=Object.prototype.toString.call(e).slice(8,-1);return"Map"===(t="Object"===t&&e.constructor?e.constructor.name:t)||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(e,a):void 0}}function _iterableToArray(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _arrayLikeToArray(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,r=new Array(a);t=r.length)&&!u.isFront)continue}n=this.end)return null;if(this.children.length)for(var a=0;a=this.end)return[];var a=[];if(this.children.length)for(var t=0;t=this.end?null:this.children?this.children.reduce(function(e,a){return e||(t>=a.start&&t|<=+|=+><=+|<==+>)"+o+l,l=o+"(=+\\|+|\\|+=+|=+\\|+=+|\\|=+\\|)"+o+l,p={opener:"\\[\\[(?!\\[)",text:"("+function notChars(){return"[^"+Array.apply(0,arguments).map(escape).join("")+"]*"}("]")+")",rightSeparator:a("\\->","\\|"),leftSeparator:"<\\-",closer:"\\]\\]",legacySeparator:"\\|",legacyText:"("+a("[^\\|\\]]","\\]"+t("\\]"))+"+)"},g=c+"*"+c.replace("\\w","a-zA-Z")+c+"*",b="\\$("+g+")",y="_("+g+")",f="'s"+n+"("+g+")",w="("+g+")"+n+"of"+i+t("it\\b"),k="'s"+n,v=a("it","time","turns?","visits?","exits?","pos")+i,x="its"+n+"("+g+")",T="("+g+")"+n+"of"+n+"it"+i,C="of"+n+"it"+i,S={opener:"\\(",name:"("+a("\\$","_")+"?"+s+"+):"+t("\\/"),closer:"\\)"},A=a("=<","=>","[gl]te?\\b","n?eq\\b","isnot\\b","are\\b","x\\b","isa\\b","or"+n+"a"+i),N="[a-zA-Z][\\w\\-]*",_="(?:\"[^\"]*\"|'[^']*'|[^'\">])*?",O="\\|("+s+"+)(>|\\))",L="(<|\\()("+s+"+)\\|",P="((?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+\\-]?\\d+)?)"+t("m?s")+i;p.main=p.opener+a(p.text+p.rightSeparator,p.text.replace("*","*?")+p.leftSeparator)+p.text,e={upperLetter:"[A-Z\\u00c0-\\u00de\\u0150\\u0170]",lowerLetter:"[a-z0-9_\\-\\u00df-\\u00ff\\u0151\\u0171]",anyLetter:s,anyLetterStrict:c,whitespace:n.replace("[","[\\n\\r"),escapedLine:"\\\\\\n\\\\?|\\n\\\\",br:"\\n(?!\\\\)",tag:"<\\/?"+N+_+">",scriptStyleTag:"<("+a("script","style","textarea")+")"+_+">[^]*?<\\/\\1>",scriptStyleTagOpener:"<",url:"("+a("https?","mailto","javascript","ftp","data")+":\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])",bullet:"\\*",hr:m,heading:"[ \\f\\t\\v\\u00a0\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000]*(#{1,6})[ \\f\\t\\v\\u00a0\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000]*",align:u,column:l,bulleted:h,numbered:d,verbatimOpener:"`+",hookAppendedFront:"\\["+t("=+"),hookPrependedFront:O+"\\["+t("=+"),hookFront:"\\["+t("=+"),hookBack:"\\]"+t(L),hookAppendedBack:"\\]"+L,unclosedHook:"\\[=+",unclosedHookPrepended:O+"\\[=+",unclosedCollapsed:"\\{=+",passageLink:p.main+p.closer,legacyLink:p.opener+p.legacyText+p.legacySeparator+p.legacyText+p.closer,simpleLink:p.opener+p.legacyText+p.closer,macroFront:S.opener+r(S.name),macroName:S.name,groupingFront:"\\("+t(S.name),twine1Macro:"<<[^>\\s]+\\s*(?:\\\\.|'(?:[^'\\\\]*\\\\.)*[^'\\\\]*'|\"(?:[^\"\\\\]*\\\\.)*[^\"\\\\]*\"|[^'\"\\\\>]|>(?!>))*>>",validPropertyName:g,property:f,belongingProperty:w,possessiveOperator:k,belongingOperator:"of\\b",itsOperator:"its\\b",belongingItOperator:C,variable:b,tempVariable:y,hookName:"\\?("+s+"+)\\b",cssTime:"(\\d+\\.?\\d*|\\d*\\.?\\d+)(m?s)\\b",colour:a(a("Red","Orange","Yellow","Lime","Green","Cyan","Aqua","Blue","Navy","Purple","Fuchsia","Magenta","White","Gray","Grey","Black","Transparent"),"#[\\dA-Fa-f]{3}(?:[\\dA-Fa-f]{3})?"),datatype:a("alnum","alphanumeric","any(?:case)?","array","bool(?:ean)?","changer","codehook","colou?r","const","command","dm","data"+a("map","type","set"),"ds","digit","gradient","empty","even","int"+t("o")+"(?:eger)?","lambda","lowercase","macro","linebreak","newline","num(?:ber)?","odd","str(?:ing)?","uppercase","whitespace")+i,number:P,boolean:a("true","false")+i,identifier:v,itsProperty:x,belongingItProperty:T,escapedStringChar:"\\\\[^\\n]",singleStringOpener:"'",doubleStringOpener:'"',singleStringCloser:"'",doubleStringCloser:'"',is:"is"+t(n+"not"+i,n+"an?"+i,n+"in"+i,n+"<",n+">")+i,isNot:"is"+n+"not"+t(n+a("an?","in")+i)+i,isA:"is"+n+"an?"+i,isNotA:"is"+n+"not"+n+"an?"+i,matches:"matches\\b",doesNotMatch:"does"+n+"not"+n+"match"+i,and:"and\\b",or:"or\\b",not:"not\\b",inequality:"((?:is(?:"+n+"not)?"+o+")*)("+a("<(?!=)","<=",">(?!=)",">=")+")",isIn:"is"+n+"in"+i,contains:"contains\\b",doesNotContain:"does"+n+"not"+n+"contain"+i,isNotIn:"is"+n+"not"+n+"in"+i,addition:escape("+")+t("="),subtraction:escape("-")+t("=","type"),multiplication:escape("*")+t("="),division:a("/","%")+t("="),spread:"\\.\\.\\."+t("\\."),to:a("to\\b","="),into:"into\\b",making:"making\\b",where:"where\\b",when:"when\\b",via:"via\\b",each:"each\\b",augmentedAssign:a("\\+","\\-","\\*","\\/","%")+"=",bind:"2?bind\\b",typeSignature:escape("-type")+i,incorrectOperator:A,PlainCompare:{comma:",",commentFront:"\x3c!--",commentBack:"--\x3e",strikeOpener:"~~",italicOpener:"//",boldOpener:"''",supOpener:"^^",strongFront:"**",strongBack:"**",emFront:"*",emBack:"*",collapsedFront:"{",collapsedBack:"}",groupingBack:")"}},"object"===("undefined"==typeof module?"undefined":_typeof(module))?module.exports=e:"function"==typeof define&&define.amd?define("patterns",[],function(){return e}):this&&this.loaded?(this.modules||(this.modules={}),this.modules.Patterns=e):this.Patterns=e}.call(eval("this")||("undefined"!=typeof global?global:window)),!function(){Object.assign=Object.assign||function polyfilledAssign(e){for(var a=1;a<");return~t?25===(a=Math.round(t/(e.length-2)*50))&&(a="center"):"<"===e[0]&&">"===e.slice(-1)?a="justify":-1")?a="right":-1":">=","=<":"<=",gte:">=",lte:"<=",gt:">",lt:"<",eq:"is",isnot:"is not",neq:"is not",isa:"is a",are:"is",x:"*","or a":"or"}[e[0].toLowerCase().replace(/\s+/g," ")];return{type:"error",message:"Please say "+(a?"'"+a+"'":"something else")+" instead of '"+e[0]+"'.",explanation:"In the interests of readability, I want certain operators to be in a specific form."}},cannotFollowText:!0}},["boolean","is","to","into","where","when","via","making","each","and","or","not","isNot","contains","doesNotContain","isIn","isA","isNotA","isNotIn","matches","doesNotMatch","bind"].reduce(function(e,a){return e[a]={fn:t,cannotFollowText:!0},e},{}),["comma","spread","typeSignature","addition","subtraction","multiplication","division"].reduce(function(e,a){return e[a]={fn:t},e},{}))),h=setupRules(o,{singleStringCloser:l.singleStringOpener,doubleStringCloser:l.doubleStringOpener,escapedStringChar:l.escapedStringChar}),d=(r.push.apply(r,_toConsumableArray(u(n)).concat(_toConsumableArray(u(c)),_toConsumableArray(u(s)))),a.push.apply(a,_toConsumableArray(u(c)).concat(_toConsumableArray(u(l)))),o.push.apply(o,_toConsumableArray(u(h))),p({},n,s,c,l,h));return u(d).forEach(function(e){m.PlainCompare[e]?(d[e].pattern=m.PlainCompare[e],d[e].plainCompare=!0):d[e].pattern=RegExp("^(?:"+m[e]+")","i")}),p(e.rules,d),(s=e.modes).start=s.markup=r,s.macro=a,s.string=o,e}(e).lex,Patterns:m})}"object"===("undefined"==typeof module?"undefined":_typeof(module))?(m=require("./patterns"),module.exports=exporter(require("./lexer"))):"function"==typeof define&&define.amd?define("markup",["lexer","patterns"],function(e,a){return m=a,exporter(e)}):this&&this.loaded&&this.modules?(m=this.modules.Patterns,this.modules.Markup=exporter(this.modules.Lexer)):(m=this.Patterns,this.Markup=exporter(this.Lexer))}.call(eval("this")||("undefined"!=typeof global?global:window)),!function(){var a=Math.round,e=function insensitiveName(e){return(e+"").toLowerCase().replace(/-|_/g,"")},t={"#e61919":"red","#e68019":"orange","#e5e619":"yellow","#80e619":"lime","#19e619":"green","#19e5e6":"cyan","#197fe6":"blue","#1919e6":"navy","#7f19e6":"purple","#e619e5":"magenta","#ffffff":"white","#000000":"black","#888888":"grey"},r=function fontIcon(e){var a=1')},o=function GCD(e,a){return e?a?a