diff --git a/package-lock.json b/package-lock.json index 72e4018783..16aab58b80 100644 --- a/package-lock.json +++ b/package-lock.json @@ -92,6 +92,7 @@ "file-loader": "^6.2.0", "html-webpack-plugin": "^5.1.0", "husky": "^1.3.1", + "i18n-strings-files": "^2.0.0", "intl-messageformat": "^9.12.0", "istanbul": "^0.4.5", "karma": "^6.3.16", @@ -101,6 +102,7 @@ "karma-webpack": "^5.0.0", "minimist": "^1.2.6", "node-fetch": "^3.3.0", + "node-gyp": "^9.4.0", "outline-i18n": "Jigsaw-Code/outline-i18n#v0.0.7", "postcss": "^7.0.39", "postcss-rtl": "^1.7.3", @@ -1987,6 +1989,102 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -3156,6 +3254,145 @@ "read-package-json-fast": "^2.0.1" } }, + "node_modules/@npmcli/run-script/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/@npmcli/run-script/node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/node-gyp": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/run-script/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/run-script/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@oozcitak/dom": { "version": "1.15.10", "resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.10.tgz", @@ -3223,6 +3460,16 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@pkgr/utils": { "version": "2.3.0", "dev": true, @@ -5419,12 +5666,30 @@ "license": "ISC" }, "node_modules/are-we-there-yet": { - "version": "1.1.7", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, - "license": "ISC", "dependencies": { "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/argparse": { @@ -6771,6 +7036,15 @@ "dev": true, "license": "MIT" }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, "node_modules/colorette": { "version": "2.0.19", "dev": true, @@ -7094,8 +7368,9 @@ }, "node_modules/console-control-strings": { "version": "1.1.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true }, "node_modules/construct-style-sheets-polyfill": { "version": "3.1.0", @@ -9107,6 +9382,12 @@ "dev": true, "license": "MIT" }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "dev": true, @@ -10341,6 +10622,12 @@ "version": "0.1.12", "dev": true }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true + }, "node_modules/express": { "version": "4.18.1", "dev": true, @@ -10825,6 +11112,34 @@ } } }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "dev": true, @@ -10983,61 +11298,22 @@ } }, "node_modules/gauge": { - "version": "2.7.4", - "dev": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/gauge/node_modules/ansi-regex": { - "version": "2.1.1", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/string-width": { - "version": "1.0.2", - "dev": true, - "license": "MIT", "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/strip-ansi": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" }, "engines": { - "node": ">=0.10.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/gensync": { @@ -11472,8 +11748,9 @@ }, "node_modules/has-unicode": { "version": "2.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true }, "node_modules/hasha": { "version": "2.2.0", @@ -12189,6 +12466,18 @@ "which": "bin/which" } }, + "node_modules/i18n-strings-files": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/i18n-strings-files/-/i18n-strings-files-2.0.0.tgz", + "integrity": "sha512-0Ii7DcVmoPscrzDAEsIvQuBalmwkEgc60oGg8FcdMq1Da/paov0mpRZGqEnVa3Hv8hBMYmHP7JnXrB7jtB3NjA==", + "dev": true, + "dependencies": { + "iconv": "^3.0.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/icon-gen": { "version": "2.0.0", "dev": true, @@ -12207,6 +12496,16 @@ "node": ">= 8" } }, + "node_modules/iconv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/iconv/-/iconv-3.0.1.tgz", + "integrity": "sha512-lJnFLxVc0d82R7GfU7a9RujKVUQ3Eee19tPKWZWBJtAEGRHVEyFzCtbNl3GPKuDnHBBRT4/nDS4Ru9AIDT72qA==", + "dev": true, + "hasInstallScript": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/iconv-corefoundation": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", @@ -13278,6 +13577,24 @@ "which": "bin/which" } }, + "node_modules/jackspeak": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.3.tgz", + "integrity": "sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jake": { "version": "10.8.5", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", @@ -15046,26 +15363,254 @@ } }, "node_modules/node-gyp": { - "version": "7.1.2", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz", + "integrity": "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==", "dev": true, - "license": "MIT", "dependencies": { "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", "glob": "^7.1.4", - "graceful-fs": "^4.2.3", - "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "request": "^2.88.2", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^11.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", "rimraf": "^3.0.2", - "semver": "^7.3.2", - "tar": "^6.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", "which": "^2.0.2" }, "bin": { "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": ">= 10.12.0" + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp/node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/node-gyp/node_modules/cacache": { + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/cacache/node_modules/glob": { + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz", + "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/cacache/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/node-gyp/node_modules/cacache/node_modules/minipass": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/node-gyp/node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/fs-minipass/node_modules/minipass": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/node-gyp/node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "node_modules/node-gyp/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/node-gyp/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-gyp/node_modules/minipass-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/node-gyp/node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/node-gyp/node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/node-gyp/node_modules/rimraf": { @@ -15096,6 +15641,79 @@ "node": ">=10" } }, + "node_modules/node-gyp/node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/node-gyp/node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/node-gyp/node_modules/ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/ssri/node_modules/minipass": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/node-gyp/node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/node-releases": { "version": "2.0.6", "license": "MIT" @@ -15318,14 +15936,18 @@ } }, "node_modules/npmlog": { - "version": "4.1.2", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, - "license": "ISC", "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/nth-check": { @@ -15926,6 +16548,40 @@ "dev": true, "license": "MIT" }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/path-to-regexp": { "version": "0.1.7", "dev": true, @@ -18887,6 +19543,21 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.codepointat": { "version": "0.2.1", "dev": true, @@ -18948,6 +19619,19 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "4.0.0", "dev": true, @@ -20930,8 +21614,9 @@ }, "node_modules/wide-align": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } @@ -21016,6 +21701,24 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "dev": true, @@ -22420,6 +23123,71 @@ "version": "1.2.1", "dev": true }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -23301,6 +24069,117 @@ "@npmcli/promise-spawn": "^1.3.2", "node-gyp": "^7.1.0", "read-package-json-fast": "^2.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "node-gyp": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } } }, "@oozcitak/dom": { @@ -23357,6 +24236,13 @@ } } }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, "@pkgr/utils": { "version": "2.3.0", "dev": true, @@ -25052,11 +25938,26 @@ "dev": true }, "are-we-there-yet": { - "version": "1.1.7", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, "requires": { "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "readable-stream": "^3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "argparse": { @@ -25948,6 +26849,12 @@ "version": "1.1.4", "dev": true }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, "colorette": { "version": "2.0.19", "dev": true @@ -26180,6 +27087,8 @@ }, "console-control-strings": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "dev": true }, "construct-style-sheets-polyfill": { @@ -27542,6 +28451,12 @@ "version": "0.1.1", "dev": true }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "ecc-jsbn": { "version": "0.1.2", "dev": true, @@ -28388,6 +29303,12 @@ "version": "0.1.12", "dev": true }, + "exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true + }, "express": { "version": "4.18.1", "dev": true, @@ -28718,6 +29639,24 @@ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + } + } + }, "forever-agent": { "version": "0.6.1", "dev": true @@ -28825,46 +29764,19 @@ "dev": true }, "gauge": { - "version": "2.7.4", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" } }, "gensync": { @@ -29156,6 +30068,8 @@ }, "has-unicode": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true }, "hasha": { @@ -29622,6 +30536,15 @@ } } }, + "i18n-strings-files": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/i18n-strings-files/-/i18n-strings-files-2.0.0.tgz", + "integrity": "sha512-0Ii7DcVmoPscrzDAEsIvQuBalmwkEgc60oGg8FcdMq1Da/paov0mpRZGqEnVa3Hv8hBMYmHP7JnXrB7jtB3NjA==", + "dev": true, + "requires": { + "iconv": "^3.0.1" + } + }, "icon-gen": { "version": "2.0.0", "dev": true, @@ -29633,6 +30556,12 @@ "uuid": "^3.3.2" } }, + "iconv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/iconv/-/iconv-3.0.1.tgz", + "integrity": "sha512-lJnFLxVc0d82R7GfU7a9RujKVUQ3Eee19tPKWZWBJtAEGRHVEyFzCtbNl3GPKuDnHBBRT4/nDS4Ru9AIDT72qA==", + "dev": true + }, "iconv-corefoundation": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", @@ -30310,6 +31239,16 @@ "istanbul-lib-report": "^3.0.0" } }, + "jackspeak": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.3.tgz", + "integrity": "sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, "jake": { "version": "10.8.5", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", @@ -31517,21 +32456,196 @@ "dev": true }, "node-gyp": { - "version": "7.1.2", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz", + "integrity": "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==", "dev": true, "requires": { "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", "glob": "^7.1.4", - "graceful-fs": "^4.2.3", - "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "request": "^2.88.2", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^11.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", "rimraf": "^3.0.2", - "semver": "^7.3.2", - "tar": "^6.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", "which": "^2.0.2" }, "dependencies": { + "@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "requires": { + "semver": "^7.3.5" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "cacache": { + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", + "dev": true, + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "dependencies": { + "glob": { + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz", + "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true + }, + "minipass": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "dev": true + } + } + }, + "fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, + "requires": { + "minipass": "^7.0.3" + }, + "dependencies": { + "minipass": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "dev": true + } + } + }, + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true + } + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + }, + "minipass-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "dependencies": { + "minipass": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "dev": true + } + } + }, + "nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "requires": { + "abbrev": "^1.0.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, "rimraf": { "version": "3.0.2", "dev": true, @@ -31545,6 +32659,62 @@ "requires": { "lru-cache": "^6.0.0" } + }, + "socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "dev": true, + "requires": { + "minipass": "^7.0.3" + }, + "dependencies": { + "minipass": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "dev": true + } + } + }, + "unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "requires": { + "unique-slug": "^4.0.0" + } + }, + "unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } } } }, @@ -31701,13 +32871,15 @@ } }, "npmlog": { - "version": "4.1.2", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" } }, "nth-check": { @@ -32101,6 +33273,30 @@ "version": "1.0.7", "dev": true }, + "path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "requires": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "dev": true + }, + "minipass": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "dev": true + } + } + }, "path-to-regexp": { "version": "0.1.7", "dev": true @@ -34143,6 +35339,17 @@ "strip-ansi": "^6.0.1" } }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, "string.prototype.codepointat": { "version": "0.2.1", "dev": true @@ -34185,6 +35392,15 @@ "ansi-regex": "^5.0.1" } }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "strip-bom": { "version": "4.0.0", "dev": true @@ -35463,6 +36679,8 @@ }, "wide-align": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, "requires": { "string-width": "^1.0.2 || 2 || 3 || 4" @@ -35523,6 +36741,17 @@ "strip-ansi": "^6.0.0" } }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "wrappy": { "version": "1.0.2", "dev": true diff --git a/package.json b/package.json index 0cb08e84ee..24eb10d9fc 100644 --- a/package.json +++ b/package.json @@ -103,6 +103,7 @@ "file-loader": "^6.2.0", "html-webpack-plugin": "^5.1.0", "husky": "^1.3.1", + "i18n-strings-files": "^2.0.0", "intl-messageformat": "^9.12.0", "istanbul": "^0.4.5", "karma": "^6.3.16", @@ -112,6 +113,7 @@ "karma-webpack": "^5.0.0", "minimist": "^1.2.6", "node-fetch": "^3.3.0", + "node-gyp": "^9.4.0", "outline-i18n": "Jigsaw-Code/outline-i18n#v0.0.7", "postcss": "^7.0.39", "postcss-rtl": "^1.7.3", diff --git a/src/cordova/android/get_native_locale.mjs b/src/cordova/android/get_native_locale.mjs deleted file mode 100644 index 07bf1231aa..0000000000 --- a/src/cordova/android/get_native_locale.mjs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2023 The Outline Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -export const getNativeLocale = polymerLang => { - switch (polymerLang) { - case 'es-419': - return 'es'; - case 'sr-Latn': - return 'b+sr+Latn'; - default: - return polymerLang.replace('-', '-r'); - } -}; diff --git a/src/cordova/android/import_messages.mjs b/src/cordova/android/import_messages.mjs new file mode 100644 index 0000000000..14faab98f4 --- /dev/null +++ b/src/cordova/android/import_messages.mjs @@ -0,0 +1,84 @@ +// Copyright 2023 The Outline Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import {readFile, writeFile} from 'fs/promises'; +import path from 'path'; +import XML from 'xmlbuilder2'; + +const STRINGS_DIR = ['src', 'cordova', 'plugin', 'android', 'resources', 'strings']; +const STRINGS_FILENAME = 'strings.xml'; +const XML_STRING_ID_PROPERTY = '@name'; +const XML_TEXT_CONTENT = '#'; + +function escapeXmlCharacters(str) { + return str + .replace(/"/g, '\\"') + .replace(/'/g, "\\'") + .replace(//g, '\\>;') + .replace(/&/g, '\\&'); +} + +function getNativeLocale(locale) { + switch (locale) { + case 'es-419': + return 'es'; + case 'sr-Latn': + return 'b+sr+Latn'; + default: + return locale.replace('-', '-r'); + } +} + +/** + * Retrieves a filepath for a given locale to read/write strings to. + * @param {string} locale A locale for which to get a strings filepath. + * @returns {string} The filepath. + */ +export function getStringsFilepath(locale) { + const localeSuffix = locale ? `-${getNativeLocale(locale)}` : ''; + return path.join(...STRINGS_DIR, `values${localeSuffix}`, STRINGS_FILENAME); +} + +/** + * Reads messages that require translations. + * @return {Map} messages The messages to translate. + */ +export async function readMessages() { + const strings = await XML.create(await readFile(getStringsFilepath(), 'utf8')).end({format: 'object'}).resources + .string; + return strings.reduce((acc, string) => { + return acc.set(string[XML_STRING_ID_PROPERTY], string[XML_TEXT_CONTENT]); + }, new Map()); +} + +/** + * Writes output messages to a given path in the Android expected format. + * @param {string} path The path to write the messages to. + * @param {Map} messages The messages to write. + */ +export async function writeMessages(path, messages) { + const output = Object.entries(messages).reduce((acc, [key, value]) => { + acc.push({ + [XML_STRING_ID_PROPERTY]: key, + [XML_TEXT_CONTENT]: escapeXmlCharacters(value), + }); + return acc; + }, []); + + await writeFile( + path, + XML.create({encoding: 'UTF-8'}, {resources: {string: output}}).end({prettyPrint: true, wellFormed: true}) + ); +} diff --git a/src/cordova/apple/OutlineAppleLib/Package.swift b/src/cordova/apple/OutlineAppleLib/Package.swift index 0219c673d4..fbb04078cb 100644 --- a/src/cordova/apple/OutlineAppleLib/Package.swift +++ b/src/cordova/apple/OutlineAppleLib/Package.swift @@ -5,6 +5,7 @@ import PackageDescription let package = Package( name: "OutlineAppleLib", + defaultLocalization: "en", products: [ .library( name: "OutlineAppleLib", diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/af.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/af.lproj/Localizable.strings new file mode 100644 index 0000000000..562cff67dc --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/af.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Gekoppel"; +"disconnected_server_state" = "Ontkoppel"; +"tray_open_window" = "Oop"; +"quit" = "Verlaat"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/am.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/am.lproj/Localizable.strings new file mode 100644 index 0000000000..540e6c3a8d --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/am.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "ተገናኝቷል"; +"disconnected_server_state" = "ተቋርጧል"; +"tray_open_window" = "ክፈት"; +"quit" = "ጨርስ"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ar.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ar.lproj/Localizable.strings new file mode 100644 index 0000000000..9a8e7bc75d --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ar.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "متصل"; +"disconnected_server_state" = "غير متصل"; +"tray_open_window" = "فتح"; +"quit" = "إنهاء"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/az.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/az.lproj/Localizable.strings new file mode 100644 index 0000000000..49462b2920 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/az.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Qoşuldu"; +"disconnected_server_state" = "Bağlantı kəsildi"; +"tray_open_window" = "Açın"; +"quit" = "Çıxın"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/bg.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/bg.lproj/Localizable.strings new file mode 100644 index 0000000000..11fc114a56 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/bg.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Установена е връзка"; +"disconnected_server_state" = "Връзката бе прекратена"; +"tray_open_window" = "Отваряне"; +"quit" = "Излизане"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/bn.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/bn.lproj/Localizable.strings new file mode 100644 index 0000000000..912be51a14 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/bn.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "কানেক্ট করা আছে"; +"disconnected_server_state" = "ডিসকানেক্ট হয়ে গেছে"; +"tray_open_window" = "খুলুন"; +"quit" = "বেরিয়ে আসুন"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/bs.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/bs.lproj/Localizable.strings new file mode 100644 index 0000000000..affe08c2e8 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/bs.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Povezano"; +"disconnected_server_state" = "Veza je prekinuta"; +"tray_open_window" = "Otvori"; +"quit" = "Napusti"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ca.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ca.lproj/Localizable.strings new file mode 100644 index 0000000000..d4c7a90d86 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ca.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Connectat"; +"disconnected_server_state" = "Desconnectat"; +"tray_open_window" = "Obre"; +"quit" = "Surt"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/cs.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/cs.lproj/Localizable.strings new file mode 100644 index 0000000000..5cac0448d9 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/cs.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Připojeno"; +"disconnected_server_state" = "Odpojeno"; +"tray_open_window" = "Otevřít"; +"quit" = "Zavřít"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/da.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/da.lproj/Localizable.strings new file mode 100644 index 0000000000..b78d28690e --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/da.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Tilsluttet"; +"disconnected_server_state" = "Forbindelsen er afbrudt"; +"tray_open_window" = "Åbn"; +"quit" = "Luk"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/de.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/de.lproj/Localizable.strings new file mode 100644 index 0000000000..a2ebfd6429 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/de.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Verbunden"; +"disconnected_server_state" = "Nicht verbunden"; +"tray_open_window" = "Öffnen"; +"quit" = "Beenden"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/el.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/el.lproj/Localizable.strings new file mode 100644 index 0000000000..cc0c591cb3 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/el.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Συνδεδεμένος"; +"disconnected_server_state" = "Αποσυνδεδεμένος"; +"tray_open_window" = "Άνοιγμα"; +"quit" = "Έξοδος"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/en-GB.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/en-GB.lproj/Localizable.strings new file mode 100644 index 0000000000..86f8327c40 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/en-GB.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Connected"; +"disconnected_server_state" = "Disconnected"; +"tray_open_window" = "Open"; +"quit" = "Exit"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/en.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/en.lproj/Localizable.strings new file mode 100644 index 0000000000..e6a71d0952 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/en.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Connected"; +"disconnected_server_state" = "Disconnected"; +"tray_open_window" = "Open"; +"quit" = "Quit"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/es-419.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/es-419.lproj/Localizable.strings new file mode 100644 index 0000000000..0f6d046007 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/es-419.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Conectado"; +"disconnected_server_state" = "Desconectado"; +"tray_open_window" = "Abrir"; +"quit" = "Salir"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/es.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/es.lproj/Localizable.strings new file mode 100644 index 0000000000..a9b5eecd3e --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/es.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Conectado"; +"disconnected_server_state" = "Desconectado"; +"tray_open_window" = "Abrir"; +"quit" = "Cerrar"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/et.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/et.lproj/Localizable.strings new file mode 100644 index 0000000000..bc4c1fbc74 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/et.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Ühendatud"; +"disconnected_server_state" = "Ühendus on katkestatud"; +"tray_open_window" = "Ava"; +"quit" = "Välju"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/fa.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/fa.lproj/Localizable.strings new file mode 100644 index 0000000000..9a2fb79ec1 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/fa.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "وصل شدید"; +"disconnected_server_state" = "اتصال قطع شد"; +"tray_open_window" = "باز کردن"; +"quit" = "خروج"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/fi.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/fi.lproj/Localizable.strings new file mode 100644 index 0000000000..cf5b9c1eb4 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/fi.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Yhdistetty"; +"disconnected_server_state" = "Yhteys katkaistu"; +"tray_open_window" = "Avaa"; +"quit" = "Sulje"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/fil.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/fil.lproj/Localizable.strings new file mode 100644 index 0000000000..b26f74cea7 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/fil.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Nakakonekta na"; +"disconnected_server_state" = "Nadiskonekta"; +"tray_open_window" = "Buksan"; +"quit" = "Umalis"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/fr.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/fr.lproj/Localizable.strings new file mode 100644 index 0000000000..8fbba6d51e --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/fr.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Connecté"; +"disconnected_server_state" = "Déconnecté"; +"tray_open_window" = "Ouvrir"; +"quit" = "Quitter"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/he.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/he.lproj/Localizable.strings new file mode 100644 index 0000000000..8c26519c6b --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/he.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "מחובר"; +"disconnected_server_state" = "מנותק"; +"tray_open_window" = "פתיחה"; +"quit" = "יציאה"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/hi.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/hi.lproj/Localizable.strings new file mode 100644 index 0000000000..3756f197c2 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/hi.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "कनेक्ट किया गया"; +"disconnected_server_state" = "डिसकनेक्ट किया गया"; +"tray_open_window" = "खोलें"; +"quit" = "छोड़ें"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/hr.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/hr.lproj/Localizable.strings new file mode 100644 index 0000000000..1d00708220 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/hr.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Povezano"; +"disconnected_server_state" = "Veza je prekinuta"; +"tray_open_window" = "Otvori"; +"quit" = "Zatvori"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/hu.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/hu.lproj/Localizable.strings new file mode 100644 index 0000000000..156cc4c456 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/hu.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Csatlakoztatva"; +"disconnected_server_state" = "Leválasztva"; +"tray_open_window" = "Megnyitás"; +"quit" = "Kilépés"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/hy.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/hy.lproj/Localizable.strings new file mode 100644 index 0000000000..10433d476f --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/hy.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Միացված է"; +"disconnected_server_state" = "Անջատված է"; +"tray_open_window" = "Բացել"; +"quit" = "Փակել"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/id.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/id.lproj/Localizable.strings new file mode 100644 index 0000000000..050c940662 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/id.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Terhubung"; +"disconnected_server_state" = "Sambungan terputus"; +"tray_open_window" = "Buka"; +"quit" = "Tutup"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/is.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/is.lproj/Localizable.strings new file mode 100644 index 0000000000..f7a913ac6f --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/is.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Tengt"; +"disconnected_server_state" = "Aftengt"; +"tray_open_window" = "Opna"; +"quit" = "Hætta"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/it.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/it.lproj/Localizable.strings new file mode 100644 index 0000000000..20af395b1a --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/it.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Connesso"; +"disconnected_server_state" = "Server disconnesso"; +"tray_open_window" = "Apri"; +"quit" = "Esci"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ja.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ja.lproj/Localizable.strings new file mode 100644 index 0000000000..ba823c0db8 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ja.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "接続しました"; +"disconnected_server_state" = "接続が切断されました"; +"tray_open_window" = "開く"; +"quit" = "終了"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ka.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ka.lproj/Localizable.strings new file mode 100644 index 0000000000..36fcecd9b1 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ka.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "დაკავშირებულია"; +"disconnected_server_state" = "კავშირი გაწყვეტილია"; +"tray_open_window" = "ღიაა"; +"quit" = "გასვლა"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/kk.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/kk.lproj/Localizable.strings new file mode 100644 index 0000000000..d27eb93724 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/kk.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Байланыс орнатылды."; +"disconnected_server_state" = "Ажыратылған"; +"tray_open_window" = "Ашу"; +"quit" = "Шығу"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/km.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/km.lproj/Localizable.strings new file mode 100644 index 0000000000..3e31bab5a7 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/km.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "បានភ្ជាប់"; +"disconnected_server_state" = "បានផ្ដាច់"; +"tray_open_window" = "បើក"; +"quit" = "ចាកចេញ"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ko.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ko.lproj/Localizable.strings new file mode 100644 index 0000000000..06c02d33e4 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ko.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "연결됨"; +"disconnected_server_state" = "연결 해제됨"; +"tray_open_window" = "열기"; +"quit" = "종료"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/lo.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/lo.lproj/Localizable.strings new file mode 100644 index 0000000000..c37d6edce8 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/lo.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "ເຊື່ອມຕໍ່ແລ້ວ"; +"disconnected_server_state" = "ຕັດການເຊື່ອມຕໍ່ແລ້ວ"; +"tray_open_window" = "ເປີດ"; +"quit" = "ປິດ"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/lt.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/lt.lproj/Localizable.strings new file mode 100644 index 0000000000..cdfe88b29b --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/lt.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Prisijungta"; +"disconnected_server_state" = "Atsijungta"; +"tray_open_window" = "Atidaryti"; +"quit" = "Išeiti"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/lv.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/lv.lproj/Localizable.strings new file mode 100644 index 0000000000..1602a5a55c --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/lv.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Savienojums izveidots"; +"disconnected_server_state" = "Savienojums pārtraukts"; +"tray_open_window" = "Atvērt"; +"quit" = "Aizvērt"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/mk.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/mk.lproj/Localizable.strings new file mode 100644 index 0000000000..a324ca2148 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/mk.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Поврзано"; +"disconnected_server_state" = "Не е поврзано"; +"tray_open_window" = "Отвори"; +"quit" = "Излези"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/mn.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/mn.lproj/Localizable.strings new file mode 100644 index 0000000000..b471f3727a --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/mn.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Холбогдсон"; +"disconnected_server_state" = "Салсан"; +"tray_open_window" = "Нээх"; +"quit" = "Гарах"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/mr.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/mr.lproj/Localizable.strings new file mode 100644 index 0000000000..ad18d96f25 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/mr.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "कनेक्ट केले आहे"; +"disconnected_server_state" = "डिस्कनेक्ट केले"; +"tray_open_window" = "उघडा"; +"quit" = "बाहेर पडा"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ms.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ms.lproj/Localizable.strings new file mode 100644 index 0000000000..df9d5973df --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ms.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Disambungkan"; +"disconnected_server_state" = "Diputuskan sambungan"; +"tray_open_window" = "Buka"; +"quit" = "Keluar"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/my.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/my.lproj/Localizable.strings new file mode 100644 index 0000000000..15ec3796f1 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/my.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "ချိတ်ဆက်ထားသည်"; +"disconnected_server_state" = "ချိတ်ဆက်မထားပါ"; +"tray_open_window" = "ဖွင့်ရန်"; +"quit" = "ထွက်ရန်"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ne.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ne.lproj/Localizable.strings new file mode 100644 index 0000000000..74cd0ba595 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ne.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "कनेक्ट गरिएको छ"; +"disconnected_server_state" = "डिस्कनेक्ट गरिएको छ"; +"tray_open_window" = "खोल्नुहोस्"; +"quit" = "बाहिरिनुहोस्"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/nl.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/nl.lproj/Localizable.strings new file mode 100644 index 0000000000..1a6eb68335 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/nl.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Verbonden"; +"disconnected_server_state" = "Verbinding verbroken"; +"tray_open_window" = "Openen"; +"quit" = "Sluiten"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/no.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/no.lproj/Localizable.strings new file mode 100644 index 0000000000..6b6f8323bf --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/no.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Tilkoblet"; +"disconnected_server_state" = "Koblet fra"; +"tray_open_window" = "Åpne"; +"quit" = "Avslutt"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/pl.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/pl.lproj/Localizable.strings new file mode 100644 index 0000000000..c1b4ead70f --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/pl.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Połączono"; +"disconnected_server_state" = "Odłączono"; +"tray_open_window" = "Otwórz"; +"quit" = "Zamknij"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/pt-BR.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/pt-BR.lproj/Localizable.strings new file mode 100644 index 0000000000..2f61bb2a25 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/pt-BR.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Conectado"; +"disconnected_server_state" = "Desconectado"; +"tray_open_window" = "Abrir"; +"quit" = "Sair"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/pt-PT.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/pt-PT.lproj/Localizable.strings new file mode 100644 index 0000000000..2aa7c0cc75 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/pt-PT.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Ligado"; +"disconnected_server_state" = "Desligado"; +"tray_open_window" = "Abrir"; +"quit" = "Sair"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ro.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ro.lproj/Localizable.strings new file mode 100644 index 0000000000..853d5a8be8 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ro.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Conectat"; +"disconnected_server_state" = "Deconectat"; +"tray_open_window" = "Deschideți"; +"quit" = "Ieșiți"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ru.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ru.lproj/Localizable.strings new file mode 100644 index 0000000000..a62a95aa57 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ru.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Подключен"; +"disconnected_server_state" = "Отключен"; +"tray_open_window" = "Открыть"; +"quit" = "Выйти"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/si.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/si.lproj/Localizable.strings new file mode 100644 index 0000000000..01c358b760 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/si.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "සම්බන්‍ධයි"; +"disconnected_server_state" = "විසන්‍ධි විය"; +"tray_open_window" = "විවෘතයි"; +"quit" = "ඉවත් වන්න"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sk.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sk.lproj/Localizable.strings new file mode 100644 index 0000000000..5b0fa004e6 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sk.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Pripojené"; +"disconnected_server_state" = "Odpojené"; +"tray_open_window" = "Otvoriť"; +"quit" = "Ukončiť"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sl.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sl.lproj/Localizable.strings new file mode 100644 index 0000000000..1e2d86f32d --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sl.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Povezava je vzpostavljena"; +"disconnected_server_state" = "Povezava je prekinjena"; +"tray_open_window" = "Odpri"; +"quit" = "Zapri"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sq.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sq.lproj/Localizable.strings new file mode 100644 index 0000000000..7b50f40ee5 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sq.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Lidhur"; +"disconnected_server_state" = "Shkëputur"; +"tray_open_window" = "Hap"; +"quit" = "Dil"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sr-Latn.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sr-Latn.lproj/Localizable.strings new file mode 100644 index 0000000000..bde239c5a6 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sr-Latn.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Povezano je"; +"disconnected_server_state" = "Veza je prekinuta"; +"tray_open_window" = "Otvori"; +"quit" = "Zatvori"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sr.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sr.lproj/Localizable.strings new file mode 100644 index 0000000000..574eb81981 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sr.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Повезано је"; +"disconnected_server_state" = "Веза је прекинута"; +"tray_open_window" = "Отвори"; +"quit" = "Затвори"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sv.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sv.lproj/Localizable.strings new file mode 100644 index 0000000000..e884fb1968 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sv.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Ansluten"; +"disconnected_server_state" = "Frånkopplad"; +"tray_open_window" = "Öppna"; +"quit" = "Avsluta"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sw.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sw.lproj/Localizable.strings new file mode 100644 index 0000000000..cce7ce82fd --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/sw.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Imeunganishwa"; +"disconnected_server_state" = "Imetenganishwa"; +"tray_open_window" = "Fungua"; +"quit" = "Funga"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ta.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ta.lproj/Localizable.strings new file mode 100644 index 0000000000..f386f754f2 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ta.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "இணைக்கப்பட்டது"; +"disconnected_server_state" = "இணைப்பு துண்டிக்கப்பட்டது"; +"tray_open_window" = "திற"; +"quit" = "வெளியேறு"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/th.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/th.lproj/Localizable.strings new file mode 100644 index 0000000000..023a662b6b --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/th.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "เชื่อมต่อแล้ว"; +"disconnected_server_state" = "ยกเลิกการเชื่อมต่อแล้ว"; +"tray_open_window" = "เปิด"; +"quit" = "ปิด"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/tr.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/tr.lproj/Localizable.strings new file mode 100644 index 0000000000..72c09beb52 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/tr.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Bağlanıldı"; +"disconnected_server_state" = "Bağlantı kesildi"; +"tray_open_window" = "Aç"; +"quit" = "Çık"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/uk.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/uk.lproj/Localizable.strings new file mode 100644 index 0000000000..8a107d05c9 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/uk.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Підключено"; +"disconnected_server_state" = "Відключено"; +"tray_open_window" = "Відкрити"; +"quit" = "Вийти"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ur.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ur.lproj/Localizable.strings new file mode 100644 index 0000000000..76ac7c63d1 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/ur.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "منسلک ہے"; +"disconnected_server_state" = "غیر منسلک ہے"; +"tray_open_window" = "کھولیں"; +"quit" = "بند کریں"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/vi.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/vi.lproj/Localizable.strings new file mode 100644 index 0000000000..c2c69cf0a9 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/vi.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "Đã kết nối"; +"disconnected_server_state" = "Đã ngắt kết nối"; +"tray_open_window" = "Mở"; +"quit" = "Thoát"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/zh-Hans.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/zh-Hans.lproj/Localizable.strings new file mode 100644 index 0000000000..5ddd80cb55 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/zh-Hans.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "已连接"; +"disconnected_server_state" = "已断开连接"; +"tray_open_window" = "打开"; +"quit" = "退出"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/zh-Hant.lproj/Localizable.strings b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/zh-Hant.lproj/Localizable.strings new file mode 100644 index 0000000000..4756037279 --- /dev/null +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/Resources/Strings/zh-Hant.lproj/Localizable.strings @@ -0,0 +1,4 @@ +"connected_server_state" = "已連線"; +"disconnected_server_state" = "已中斷連線"; +"tray_open_window" = "開啟"; +"quit" = "退出"; diff --git a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/StatusItemController.swift b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/StatusItemController.swift index 90308f96af..e053c3f3c7 100644 --- a/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/StatusItemController.swift +++ b/src/cordova/apple/OutlineAppleLib/Sources/OutlineAppKitBridge/StatusItemController.swift @@ -29,12 +29,23 @@ static let statusDisconnected = getImage(name: "status_bar_button_image") } - // TODO: Internationalize these user-facing strings. private enum MenuTitle { - static let open = "Open" - static let quit = "Quit" - static let statusConnected = "Connected" - static let statusDisconnected = "Disconnected" + static let open = NSLocalizedString( + "tray_open_window", + bundle: .module, + comment: "Tray menu entry to show the application window.") + static let quit = NSLocalizedString( + "quit", + bundle: .module, + comment: "Tray menu entry to quit the application.") + static let statusConnected = NSLocalizedString( + "connected_server_state", + bundle: .module, + comment: "Tray menu entry indicating a server is currently connected and in use.") + static let statusDisconnected = NSLocalizedString( + "disconnected_server_state", + bundle: .module, + comment: "Tray menu entry indicating no server is currently connected.") } override init() { diff --git a/src/cordova/apple/import_messages.mjs b/src/cordova/apple/import_messages.mjs new file mode 100644 index 0000000000..dcabcff4e6 --- /dev/null +++ b/src/cordova/apple/import_messages.mjs @@ -0,0 +1,57 @@ +// Copyright 2023 The Outline Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import path from 'path'; +import I18N from 'i18n-strings-files'; + +const STRINGS_DIR = ['src', 'cordova', 'apple', 'OutlineAppleLib', 'Sources', 'OutlineAppKitBridge', 'Resources', 'Strings']; +const STRINGS_FILENAME = 'Localizable.strings'; + +function getNativeLocale(locale) { + switch (locale) { + case 'zh-CN': + return 'zh-Hans'; + case 'zh-TW': + return 'zh-Hant'; + default: + return locale; + } +} + +/** + * Retrieves a filepath for a given locale to read/write strings to. + * @param {string} locale A locale for which to get a strings filepath. + * @returns {string} The filepath. + */ +export function getStringsFilepath(locale) { + return path.join(...STRINGS_DIR, `${getNativeLocale(locale)}.lproj`, STRINGS_FILENAME); +} + +/** + * Reads messages that require translations. + * @return {Map} messages The messages to translate. + */ +export async function readMessages() { + const messages = I18N.readFileSync(getStringsFilepath('en'), {encoding: 'UTF-8'}); + return new Map(Object.entries(messages)); +} + +/** + * Writes output messages to a given path in the Apple expected format. + * @param {string} path The path to write the messages to. + * @param {Map} messages The messages to write. + */ +export async function writeMessages(path, messages) { + I18N.writeFileSync(path, messages, {encoding: 'UTF-8'}); +} diff --git a/src/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj b/src/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj index 429ab77cf8..6ac1e5cf3e 100755 --- a/src/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj +++ b/src/cordova/apple/xcode/ios/Outline.xcodeproj/project.pbxproj @@ -495,10 +495,9 @@ }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Outline" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 1; knownRegions = ( - English, en, Base, ); diff --git a/src/cordova/apple/xcode/ios/Outline/Outline-Info.plist b/src/cordova/apple/xcode/ios/Outline/Outline-Info.plist index 22020f35c0..0ae48e9d84 100644 --- a/src/cordova/apple/xcode/ios/Outline/Outline-Info.plist +++ b/src/cordova/apple/xcode/ios/Outline/Outline-Info.plist @@ -2,12 +2,8 @@ - CFBundleShortVersionString - 0.0.0-debug - CFBundleVersion - 0 CFBundleDevelopmentRegion - English + $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName Outline CFBundleExecutable @@ -24,6 +20,8 @@ ${PRODUCT_NAME} CFBundlePackageType APPL + CFBundleShortVersionString + 0.0.0-debug CFBundleSignature ???? CFBundleURLTypes @@ -36,10 +34,14 @@ - LSRequiresIPhoneOS - + CFBundleVersion + 0 ITSAppUsesNonExemptEncryption + CFBundleAllowMixedLocalizations + + LSRequiresIPhoneOS + LSUIElement NSAppTransportSecurity diff --git a/src/cordova/apple/xcode/ios/Outline/VpnExtension-Info.plist b/src/cordova/apple/xcode/ios/Outline/VpnExtension-Info.plist index 5d3ca566bb..e4e1e2a439 100644 --- a/src/cordova/apple/xcode/ios/Outline/VpnExtension-Info.plist +++ b/src/cordova/apple/xcode/ios/Outline/VpnExtension-Info.plist @@ -2,16 +2,10 @@ - CFBundleShortVersionString - 0.0.0-debug - CFBundleVersion - 0 CFBundleDevelopmentRegion - en + $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName VpnExtension - ITSAppUsesNonExemptEncryption - CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -22,6 +16,12 @@ $(PRODUCT_NAME) CFBundlePackageType XPC! + CFBundleShortVersionString + 0.0.0-debug + CFBundleVersion + 0 + ITSAppUsesNonExemptEncryption + NSExtension NSExtensionPointIdentifier diff --git a/src/cordova/import_messages.action.mjs b/src/cordova/import_messages.action.mjs index 7fa226afcb..da3f6899fa 100644 --- a/src/cordova/import_messages.action.mjs +++ b/src/cordova/import_messages.action.mjs @@ -13,73 +13,112 @@ // limitations under the License. import chalk from 'chalk'; +import minimist from 'minimist'; import path from 'path'; -import rmfr from 'rmfr'; import url from 'url'; import {getRootDir} from '../build/get_root_dir.mjs'; -import {readFile, readdir, writeFile, mkdir} from 'fs/promises'; -import {getNativeLocale as getNativeAndroidLocale} from './android/get_native_locale.mjs'; -import XML from 'xmlbuilder2'; - -const ANDROID_STRINGS_DIR = 'src/cordova/plugin/android/resources/strings/'; -const ANDROID_STRINGS_FILENAME = 'strings.xml'; -const ANDROID_XML_STRING_ID_PROPERTY = '@name'; -const ANDROID_XML_TEXT_CONTENT = '#'; - -function escapeXmlCharacters(str) { - return str - .replace(/"/g, '\\"') - .replace(/'/g, "\\'") - .replace(//g, '\\>;') - .replace(/&/g, '\\&'); -} +import {readFile, readdir, mkdir} from 'fs/promises'; +import * as ANDROID_IMPORTER from './android/import_messages.mjs'; +import * as IOS_IMPORTER from './apple/import_messages.mjs'; -export async function main() { - const outputDir = path.join(getRootDir(), ANDROID_STRINGS_DIR); - const requiredAndroidStrings = XML.create( - await readFile(path.join(outputDir, 'values', ANDROID_STRINGS_FILENAME), 'utf8') - ).end({format: 'object'}).resources.string; +const ANDROID = 'android'; +const IOS = 'ios'; +const VALID_PLATFORMS = [ANDROID, IOS]; - // Clear all existing locales first, so languages we stop supporting get - // cleared. - await rmfr(path.join(outputDir, 'values-*'), {glob: true}); +const SOURCE_MESSAGES_DIR = 'www/messages'; - console.group(chalk.white(`▶ importing Android messages:`)); +/** + * Parses and verifies the action parameters and returns the specified platform. + * @param {string[]} parameters The list of action arguments passed in. + * @returns {Object} Object containing the specified platform. + */ +function getActionParameters(cliArguments) { + const { + _: [platform = ''], + } = minimist(cliArguments); - const messagesDir = path.join(getRootDir(), 'www/messages'); - for (const messagesFilename of await readdir(messagesDir)) { - const polymerLang = path.basename(messagesFilename, path.extname(messagesFilename)); - console.log(chalk.gray(`Importing \`${polymerLang}\``)); + if (!VALID_PLATFORMS.includes(platform)) { + throw new TypeError( + `Platform "${platform}" is not a valid target for importing messages. ` + + `Must be one of "${VALID_PLATFORMS.join('", "')}"` + ); + } - const androidLocale = getNativeAndroidLocale(polymerLang); - const localeDir = path.join(outputDir, `values-${androidLocale}`); + return {platform}; +} +/** + * Retrieves the source messages in all available translations. + * @returns {Map} A map of locale->messages. + */ +async function loadMessages() { + const messages = new Map(); + + const messagesDir = path.join(getRootDir(), SOURCE_MESSAGES_DIR); + for (const messagesFilename of await readdir(messagesDir)) { + const lang = path.basename(messagesFilename, path.extname(messagesFilename)); const messagesFilepath = path.join(messagesDir, messagesFilename); const messageData = JSON.parse(await readFile(messagesFilepath, 'utf8')); + messages.set(lang, messageData); + } - const androidStrings = []; - for (const requiredString of requiredAndroidStrings) { - const messageId = requiredString[ANDROID_XML_STRING_ID_PROPERTY].replaceAll('_', '-'); - const fallbackContent = requiredString[ANDROID_XML_TEXT_CONTENT]; + return messages; +} - androidStrings.push({ - [ANDROID_XML_STRING_ID_PROPERTY]: requiredString[ANDROID_XML_STRING_ID_PROPERTY], - [ANDROID_XML_TEXT_CONTENT]: escapeXmlCharacters(messageData[messageId] ?? fallbackContent), - }); +/** + * Imports message translations. + * @param {function(string): string} getStringsFilepath A function to get a + * filepath to read/write strings for a given locale. + * @param {function(): Map} readMessages A function to read + * required messages. + * @param {function(string, Map)} writeMessages A function to + * write the output messages. + */ +async function importMessages(getStringsFilepath, readMessages, writeMessages) { + const requiredMessages = await readMessages(); + + for (const [locale, messageData] of await loadMessages()) { + console.log(chalk.gray(`Importing \`${locale}\``)); + + const outputMessages = {}; + for (const [key, value] of requiredMessages.entries()) { + const messageId = key.replaceAll('_', '-'); + outputMessages[key] = messageData[messageId] ?? value; } - const outputPath = path.join(localeDir, ANDROID_STRINGS_FILENAME); - console.log(chalk.gray(`Writing ${androidStrings.length} messages to ` + `\`${outputPath}\``)); - await mkdir(localeDir, {recursive: true}); - await writeFile( - outputPath, - XML.create({encoding: 'UTF-8'}, {resources: {string: androidStrings}}).end({prettyPrint: true, wellFormed: true}) - ); + const outputPath = getStringsFilepath(locale); + console.log(chalk.gray(`Writing ${Object.values(outputMessages).length} messages to \`${outputPath}\``)); + await mkdir(path.dirname(outputPath), {recursive: true}); + writeMessages(outputPath, outputMessages); + } +} + +/** + * Imports message translations for the specified Cordova project. + * @param {string[]} parameters The list of action arguments passed in. + */ +async function main(...parameters) { + const {platform} = getActionParameters(parameters); + console.group(chalk.white(`▶ importing ${platform} messages:`)); + + switch (platform) { + case ANDROID: + await importMessages( + ANDROID_IMPORTER.getStringsFilepath, + ANDROID_IMPORTER.readMessages, + ANDROID_IMPORTER.writeMessages + ); + break; + case IOS: + await importMessages(IOS_IMPORTER.getStringsFilepath, IOS_IMPORTER.readMessages, IOS_IMPORTER.writeMessages); + break; + default: + throw new Error(`Message import not implemented for platform "${platform}"`); } + console.groupEnd(); } if (import.meta.url === url.pathToFileURL(process.argv[1]).href) { - await main(); + await main(...process.argv.slice(2)); }