diff --git a/package-lock.json b/package-lock.json index b1ab4f4..c78c092 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,11 +9,11 @@ "version": "3.0.12", "license": "MIT", "devDependencies": { + "fast-xml-parser": "^4.3.6", "prettier": "^1.18.2", "promptly": "^3.2.0", "tape": "^5.1.1", - "unicode-emoji-json": "0.6.0", - "xml2json": "^0.7.1" + "unicode-emoji-json": "0.6.0" } }, "node_modules/array-filter": { @@ -40,15 +40,6 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -180,11 +171,27 @@ "node": ">= 0.4" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true + "node_modules/fast-xml-parser": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.6.tgz", + "integrity": "sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } }, "node_modules/for-each": { "version": "0.3.3", @@ -479,23 +486,6 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "node_modules/nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", - "dev": true - }, - "node_modules/node-expat": { - "version": "2.3.18", - "resolved": "https://registry.npmjs.org/node-expat/-/node-expat-2.3.18.tgz", - "integrity": "sha512-9dIrDxXePa9HSn+hhlAg1wXkvqOjxefEbMclGxk2cEnq/Y3U7Qo5HNNqeo3fQ4bVmLhcdt3YN1TZy7WMZy4MHw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.13.2" - } - }, "node_modules/object-inspect": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", @@ -696,6 +686,12 @@ "define-properties": "^1.1.3" } }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "dev": true + }, "node_modules/tape": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/tape/-/tape-5.1.1.tgz", @@ -807,18 +803,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true - }, - "node_modules/xml2json": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/xml2json/-/xml2json-0.7.1.tgz", - "integrity": "sha512-fUSy56zWLkSDGcP71Uc8Tgy7tOZ0pLbBdPsQlV3q9xz0qMyezXcMUzKyknbiDW0uZz32iKC+MCFbgR7nZpoJ0w==", - "dev": true, - "dependencies": { - "node-expat": "^2.3.7" - }, - "bin": { - "xml2json": "bin/xml2json" - } } }, "dependencies": { @@ -843,15 +827,6 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -971,11 +946,14 @@ "is-symbol": "^1.0.2" } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true + "fast-xml-parser": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.6.tgz", + "integrity": "sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==", + "dev": true, + "requires": { + "strnum": "^1.0.5" + } }, "for-each": { "version": "0.3.3", @@ -1227,22 +1205,6 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", - "dev": true - }, - "node-expat": { - "version": "2.3.18", - "resolved": "https://registry.npmjs.org/node-expat/-/node-expat-2.3.18.tgz", - "integrity": "sha512-9dIrDxXePa9HSn+hhlAg1wXkvqOjxefEbMclGxk2cEnq/Y3U7Qo5HNNqeo3fQ4bVmLhcdt3YN1TZy7WMZy4MHw==", - "dev": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.13.2" - } - }, "object-inspect": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", @@ -1415,6 +1377,12 @@ "define-properties": "^1.1.3" } }, + "strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "dev": true + }, "tape": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/tape/-/tape-5.1.1.tgz", @@ -1519,15 +1487,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true - }, - "xml2json": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/xml2json/-/xml2json-0.7.1.tgz", - "integrity": "sha512-fUSy56zWLkSDGcP71Uc8Tgy7tOZ0pLbBdPsQlV3q9xz0qMyezXcMUzKyknbiDW0uZz32iKC+MCFbgR7nZpoJ0w==", - "dev": true, - "requires": { - "node-expat": "^2.3.7" - } } } } diff --git a/package.json b/package.json index bb1d268..cc6b68e 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,6 @@ "promptly": "^3.2.0", "tape": "^5.1.1", "unicode-emoji-json": "0.6.0", - "xml2json": "^0.7.1" + "fast-xml-parser": "^4.3.6" } } diff --git a/scripts/i18n.js b/scripts/i18n.js index be254da..c5e3b39 100644 --- a/scripts/i18n.js +++ b/scripts/i18n.js @@ -48,11 +48,11 @@ function createFileFromCldr() { } function parse(content) { - const parser = require('xml2json') + const parser = new (require('fast-xml-parser')).XMLParser() const data = require(`../${basefilePath}`) Object.keys(data).forEach(k => (data[k] = [])) - for (const group of JSON.parse(parser.toJson(content)).ldml.annotations.annotation) { + for (const group of parser.parse(content).ldml.annotations.annotation) { const emoji = group.cp const emojiWithOptionalVariation16 = data[emoji] ? emoji : emoji + VARIATION_16 if (!data[emojiWithOptionalVariation16]) continue