From 05a5cd2b95414aaf5955fc566f143a4b9b0aa0f4 Mon Sep 17 00:00:00 2001 From: Gil Sousa Date: Wed, 25 Sep 2024 08:11:48 +0300 Subject: [PATCH 01/21] keep property languages if all --- src/vtcomposite.cpp | 49 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/src/vtcomposite.cpp b/src/vtcomposite.cpp index 9b2ceb0..c0b3894 100644 --- a/src/vtcomposite.cpp +++ b/src/vtcomposite.cpp @@ -652,6 +652,16 @@ struct LocalizeWorker : Napi::AsyncWorker return matching_worldviews; } + std::string remove_hidden_prefix(std::string property_key, std::string hidden_prefix) { + bool has_hidden_prefix = utils::startswith(hidden_prefix, property_key); + + if (has_hidden_prefix) { + return property_key.substr(hidden_prefix.length()); + } + + return property_key; + } + void Execute() override { try @@ -662,6 +672,7 @@ struct LocalizeWorker : Napi::AsyncWorker std::vector class_key_precedence; bool keep_every_language = true; std::vector language_key_precedence; + bool is_international_tile_with_all_languages; if (baton_data_->return_localized_tile) { @@ -675,6 +686,10 @@ struct LocalizeWorker : Napi::AsyncWorker keep_every_language = false; for (auto const& lang : baton_data_->languages) { + if (lang == "all") { + is_international_tile_with_all_languages = true; + } + language_key_precedence.push_back(baton_data_->language_property + "_" + lang); language_key_precedence.push_back(baton_data_->hidden_prefix + baton_data_->language_property + "_" + lang); } @@ -734,6 +749,9 @@ struct LocalizeWorker : Napi::AsyncWorker // collect final properties std::vector> final_properties; + + // collect the languages + std::vector> property_languages; while (auto property = feature.next_property()) { // if true, we've already encounterd a property that indicates @@ -816,10 +834,23 @@ struct LocalizeWorker : Napi::AsyncWorker // wait till we are done looping through all properties before we add class value to final_properties } + // property_key starts with "name" + // or property_key starts with "_mbx_" + "name" else if ( utils::startswith(property_key, baton_data_->language_property) || utils::startswith(property_key, baton_data_->hidden_prefix + baton_data_->language_property)) { + if (is_international_tile_with_all_languages && property_key != baton_data_->language_property) { + // add language property to the list of list of languages to add + std::string clean_property_key = remove_hidden_prefix(property_key, baton_data_->hidden_prefix); + + property_languages.emplace_back( + clean_property_key, + property.value() + ); + } + + // it's a langauge property // check if the property is of higher precedence that language key encountered so far std::uint32_t idx = static_cast(std::distance(language_key_precedence.begin(), std::find(language_key_precedence.begin(), language_key_precedence.end(), property_key))); if (idx < language_key_idx) @@ -849,7 +880,7 @@ struct LocalizeWorker : Napi::AsyncWorker } } else - { + { // @todo add the logic to add the extra languages if (keep_every_language) { if (!utils::startswith(property_key, baton_data_->hidden_prefix)) @@ -887,12 +918,15 @@ struct LocalizeWorker : Napi::AsyncWorker // use the language value of highest precedence if (language_value.valid()) { + std::string language_property_final_value; + // `local` language is "the original language in an acceptable script". if (omit_local_langauge) { // don't need to check if `local` is in the desired list of languages // because the script of the original language is not acceptable. final_properties.emplace_back(baton_data_->language_property, language_value); + language_property_final_value = language_value; } else { @@ -906,10 +940,23 @@ struct LocalizeWorker : Napi::AsyncWorker // already exists in the input tile, the code does not enter this if block. // {language_property}_local` and `{language_prefix}{language_property}_local` take precedence over the local language. final_properties.emplace_back(baton_data_->language_property, original_language_value); + language_property_final_value = original_language_value; } else { final_properties.emplace_back(baton_data_->language_property, language_value); + language_property_final_value = language_value; + } + + for (size_t i = 0; i < property_languages.size(); ++i) { + std::string langauge_key = roperty_languages[i].first; + std::string langauge_value = roperty_languages[i].second; + + if (langauge_value == original_language_value) { + continue; + } + + final_properties.emplace_back(langauge_key, langauge_value); } } } From bfb2d29f5b2426c62dda22852266e48ffe92a538 Mon Sep 17 00:00:00 2001 From: Gil Sousa Date: Wed, 25 Sep 2024 08:14:24 +0300 Subject: [PATCH 02/21] fix comments --- src/vtcomposite.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/vtcomposite.cpp b/src/vtcomposite.cpp index c0b3894..33840da 100644 --- a/src/vtcomposite.cpp +++ b/src/vtcomposite.cpp @@ -850,7 +850,6 @@ struct LocalizeWorker : Napi::AsyncWorker ); } - // it's a langauge property // check if the property is of higher precedence that language key encountered so far std::uint32_t idx = static_cast(std::distance(language_key_precedence.begin(), std::find(language_key_precedence.begin(), language_key_precedence.end(), property_key))); if (idx < language_key_idx) @@ -880,7 +879,7 @@ struct LocalizeWorker : Napi::AsyncWorker } } else - { // @todo add the logic to add the extra languages + { if (keep_every_language) { if (!utils::startswith(property_key, baton_data_->hidden_prefix)) From ed68938d975534f9f6ecd8e9a2645e91a81914ea Mon Sep 17 00:00:00 2001 From: Gil Sousa Date: Wed, 25 Sep 2024 08:22:07 +0300 Subject: [PATCH 03/21] fix typos --- src/vtcomposite.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vtcomposite.cpp b/src/vtcomposite.cpp index 33840da..9d45868 100644 --- a/src/vtcomposite.cpp +++ b/src/vtcomposite.cpp @@ -948,14 +948,14 @@ struct LocalizeWorker : Napi::AsyncWorker } for (size_t i = 0; i < property_languages.size(); ++i) { - std::string langauge_key = roperty_languages[i].first; - std::string langauge_value = roperty_languages[i].second; + std::string language_key = property_languages[i].first; + std::string language_value = property_languages[i].second; - if (langauge_value == original_language_value) { + if (language_value == original_language_value) { continue; } - final_properties.emplace_back(langauge_key, langauge_value); + final_properties.emplace_back(language_key, language_value); } } } From b31b73ccc9d49ee66a3fea99a2056f1772afe5dc Mon Sep 17 00:00:00 2001 From: Gil Sousa Date: Wed, 25 Sep 2024 08:24:58 +0300 Subject: [PATCH 04/21] skip language property if already added --- src/vtcomposite.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/vtcomposite.cpp b/src/vtcomposite.cpp index 9d45868..a0a4d0d 100644 --- a/src/vtcomposite.cpp +++ b/src/vtcomposite.cpp @@ -947,6 +947,8 @@ struct LocalizeWorker : Napi::AsyncWorker language_property_final_value = language_value; } + std::unordered_map added_languages; + for (size_t i = 0; i < property_languages.size(); ++i) { std::string language_key = property_languages[i].first; std::string language_value = property_languages[i].second; @@ -955,7 +957,13 @@ struct LocalizeWorker : Napi::AsyncWorker continue; } + // if current languages was already added to final properties skips it + if (added_languages.find(language_key) != hashmap.end()) { + continue; + } + final_properties.emplace_back(language_key, language_value); + added_languages[language_key] = true; } } } From e4d9a8f7938f62e9417b8ce23c3e25a38a258aa9 Mon Sep 17 00:00:00 2001 From: Kien Bui Date: Thu, 26 Sep 2024 15:32:29 +0300 Subject: [PATCH 05/21] localize returns all language properties if param languages=all --- src/vtcomposite.cpp | 85 ++++++++++++++--- test/vtcomposite-localize-language.test.js | 101 ++++++++++++++++++++- 2 files changed, 171 insertions(+), 15 deletions(-) diff --git a/src/vtcomposite.cpp b/src/vtcomposite.cpp index 9b2ceb0..56a8252 100644 --- a/src/vtcomposite.cpp +++ b/src/vtcomposite.cpp @@ -652,6 +652,16 @@ struct LocalizeWorker : Napi::AsyncWorker return matching_worldviews; } + static std::string remove_hidden_prefix(std::string property_key, std::string hidden_prefix) { + bool has_hidden_prefix = utils::startswith(property_key, hidden_prefix); + + if (has_hidden_prefix) { + return property_key.substr(hidden_prefix.length()); + } + + return property_key; + } + void Execute() override { try @@ -660,7 +670,8 @@ struct LocalizeWorker : Napi::AsyncWorker std::string incompatible_worldview_key; std::string compatible_worldview_key; std::vector class_key_precedence; - bool keep_every_language = true; + bool keep_all_non_hidden_languages = true; + bool is_international_tile_with_all_languages = false; std::vector language_key_precedence; if (baton_data_->return_localized_tile) @@ -672,13 +683,17 @@ struct LocalizeWorker : Napi::AsyncWorker class_key_precedence.push_back(baton_data_->hidden_prefix + baton_data_->class_property); class_key_precedence.push_back(baton_data_->class_property); - keep_every_language = false; - for (auto const& lang : baton_data_->languages) - { - language_key_precedence.push_back(baton_data_->language_property + "_" + lang); - language_key_precedence.push_back(baton_data_->hidden_prefix + baton_data_->language_property + "_" + lang); + keep_all_non_hidden_languages = false; + if(baton_data_->languages.size() == 1 && baton_data_->languages[0] == "all") { + is_international_tile_with_all_languages = true; + } else { + for (auto const& lang : baton_data_->languages) + { + language_key_precedence.push_back(baton_data_->language_property + "_" + lang); + language_key_precedence.push_back(baton_data_->hidden_prefix + baton_data_->language_property + "_" + lang); + } + language_key_precedence.push_back(baton_data_->language_property); } - language_key_precedence.push_back(baton_data_->language_property); } else { @@ -688,7 +703,7 @@ struct LocalizeWorker : Napi::AsyncWorker class_key_precedence.push_back(baton_data_->class_property); - keep_every_language = true; // reassign to the same value as default for clarity + keep_all_non_hidden_languages = true; // reassign to the same value as default for clarity language_key_precedence.push_back(baton_data_->language_property); } @@ -730,10 +745,14 @@ struct LocalizeWorker : Napi::AsyncWorker auto language_key_idx = static_cast(language_key_precedence.size()); vtzero::property_value language_value; vtzero::property_value original_language_value; - bool omit_local_langauge = false; + bool omit_local_language = false; // collect final properties std::vector> final_properties; + + // collect the languages + std::vector> language_properties_to_be_added_to_final_properties; + while (auto property = feature.next_property()) { // if true, we've already encounterd a property that indicates @@ -820,8 +839,34 @@ struct LocalizeWorker : Napi::AsyncWorker utils::startswith(property_key, baton_data_->language_property) || utils::startswith(property_key, baton_data_->hidden_prefix + baton_data_->language_property)) { + + if (is_international_tile_with_all_languages) { + std::string cleaned_property_key = remove_hidden_prefix(property_key, baton_data_->hidden_prefix); + + if(property_key == baton_data_->language_property) { + // add local language name to final properties + final_properties.emplace_back( + cleaned_property_key, + property.value() + ); + original_language_value = property.value(); + } else if(property_key != baton_data_->language_property + "_script") { + // add other languages to a temporary list + language_properties_to_be_added_to_final_properties.emplace_back( + cleaned_property_key, + property.value() + ); + } + + continue; + } + // check if the property is of higher precedence that language key encountered so far - std::uint32_t idx = static_cast(std::distance(language_key_precedence.begin(), std::find(language_key_precedence.begin(), language_key_precedence.end(), property_key))); + std::uint32_t idx = static_cast( + std::distance( + language_key_precedence.begin(), + std::find(language_key_precedence.begin(), language_key_precedence.end(), property_key) + )); if (idx < language_key_idx) { language_key_idx = idx; @@ -836,21 +881,21 @@ struct LocalizeWorker : Napi::AsyncWorker else if (property_key == baton_data_->language_property + "_script") { // true if script is in the omitted list - omit_local_langauge = std::any_of( + omit_local_language = std::any_of( baton_data_->omit_scripts.begin(), baton_data_->omit_scripts.end(), [&](const std::string& script) { return (script == property.value().string_value()); }); - if (keep_every_language) + if (keep_all_non_hidden_languages) { final_properties.emplace_back(property_key, property.value()); } } else { - if (keep_every_language) + if (keep_all_non_hidden_languages) { if (!utils::startswith(property_key, baton_data_->hidden_prefix)) { @@ -888,7 +933,7 @@ struct LocalizeWorker : Napi::AsyncWorker if (language_value.valid()) { // `local` language is "the original language in an acceptable script". - if (omit_local_langauge) + if (omit_local_language) { // don't need to check if `local` is in the desired list of languages // because the script of the original language is not acceptable. @@ -919,6 +964,18 @@ struct LocalizeWorker : Napi::AsyncWorker final_properties.emplace_back(baton_data_->language_property + "_local", original_language_value); } + // Check the list of languages to be added + // Only add the ones that are different from original local language to the final properties + if (is_international_tile_with_all_languages && original_language_value.valid()) { + for(const auto& language_property: language_properties_to_be_added_to_final_properties) { + std::string language_property_key = language_property.first; + vtzero::property_value language_property_value = language_property.second; + + if(language_property_value.string_value() != original_language_value.string_value()) + final_properties.emplace_back(language_property_key, language_property_value); + } + } + // build new feature(s) if (has_worldview_key) { diff --git a/test/vtcomposite-localize-language.test.js b/test/vtcomposite-localize-language.test.js index bb886c3..04ff672 100644 --- a/test/vtcomposite-localize-language.test.js +++ b/test/vtcomposite-localize-language.test.js @@ -8,7 +8,6 @@ const mvtFixtures = require('@mapbox/mvt-fixtures'); const test = require('tape'); const zlib = require('zlib'); - test('[localize] success: buffer size stays the same when no changes needed', (assert) => { const singlePointBuffer = mvtFixtures.get('002').buffer; const params = { @@ -861,3 +860,103 @@ test('[localize language] _mbx_name_local exists in the input tile', (assert) => assert.end(); }); }); + +test('[localize language] languages=all returns name, name_local and all name_xx(s) with _mbx_ dropped removed from property name', (assert) => { + const rawDataLanguageProperties = { + name: '你好', + name_script: 'Han', + 'name_zh-Hant': 'Nǐ hǎo', + name_en: 'hello', + name_de: 'hallo', + _mbx_name_it: 'ciao', + _mbx_name_fr: 'bonjour' + }; + const expectedLocalizedProperties = { + name: '你好', + name_local: '你好', + 'name_zh-Hant': 'Nǐ hǎo', + name_en: 'hello', + name_de: 'hallo', + name_it: 'ciao', + name_fr: 'bonjour' + }; + const params = { + buffer: mvtFixtures.create({ + layers: [ + { + version: 2, + name: 'places', + features: [ + { + id: 10, + tags: Object.keys(rawDataLanguageProperties).flatMap((_, index) => [index, index]), + type: 1, // point + geometry: [9, 54, 38] + } + ], + keys: Object.keys(rawDataLanguageProperties), + values: Object.values(rawDataLanguageProperties).map((value) => ({ string_value: value })), + extent: 4096 + } + ] + }).buffer, + languages: ['all'] + }; + + localize(params, (err, buffer) => { + assert.notOk(err); + const info = vtinfo(buffer); + const properties = info.layers.places.feature(0).properties; + assert.equal(info.layers.places.length, 1, 'expected number of features'); + assert.deepEqual(properties, expectedLocalizedProperties, 'expected properties'); + assert.end(); + }); +}); + +test('[localize language] languages=all returns only all name_xx(s) that are different from name', (assert) => { + const rawDataLanguageProperties = { + name: 'place', + name_script: 'Latin', + name_en: 'place', // same as `name`, expected to be dropped + name_de: 'place DE', + _mbx_name_it: 'place', // same as `name`, expected to be dropped + _mbx_name_fr: 'place FR', + }; + const expectedLocalizedProperties = { + name: 'place', + name_local: 'place', + name_de: 'place DE', + name_fr: 'place FR' + }; + const params = { + buffer: mvtFixtures.create({ + layers: [ + { + version: 2, + name: 'places', + features: [ + { + id: 10, + tags: Object.keys(rawDataLanguageProperties).flatMap((_, index) => [index, index]), + type: 1, // point + geometry: [9, 54, 38] + } + ], + keys: Object.keys(rawDataLanguageProperties), + values: Object.values(rawDataLanguageProperties).map((value) => ({ string_value: value })), + extent: 4096 + } + ] + }).buffer, + languages: ['all'] + }; + + localize(params, (err, buffer) => { + assert.notOk(err); + const info = vtinfo(buffer); + const properties = info.layers.places.feature(0).properties; + assert.equal(info.layers.places.length, 1, 'expected number of features'); + assert.deepEqual(properties, expectedLocalizedProperties, 'expected properties'); + assert.end(); + }); +}); From 284afd1bd06206c9977ea80f6ddbe8725d812404 Mon Sep 17 00:00:00 2001 From: Kien Bui Date: Fri, 27 Sep 2024 09:53:23 +0300 Subject: [PATCH 06/21] Bump version & update changelog --- CHANGELOG.md | 4 ++++ package-lock.json | 26 ++++++++++++++------------ package.json | 2 +- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9733d31..5e636a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# 2.2.0 + +- Add language code "all" [#136](https://github.com/mapbox/vtcomposite/pull/136) + # 2.1.0 - Add language code "local" [#133](https://github.com/mapbox/vtcomposite/pull/133) diff --git a/package-lock.json b/package-lock.json index 5182b7e..de0c0a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mapbox/vtcomposite", - "version": "2.1.0", + "version": "2.2.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mapbox/vtcomposite", - "version": "2.1.0", + "version": "2.2.0", "hasInstallScript": true, "license": "ISC", "dependencies": { @@ -3143,7 +3143,8 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "requires": {} }, "agent-base": { "version": "6.0.2", @@ -3631,7 +3632,8 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz", "integrity": "sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==", - "dev": true + "dev": true, + "requires": {} }, "eslint-scope": { "version": "7.1.1", @@ -4642,6 +4644,14 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -4685,14 +4695,6 @@ "es-abstract": "^1.19.5" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", - "requires": { - "safe-buffer": "~5.1.0" - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", diff --git a/package.json b/package.json index 3ffcae2..e4989a4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mapbox/vtcomposite", - "version": "2.1.0", + "version": "2.2.0", "description": "Compositing operations on Vector Tiles (c++ bindings using N-API)", "url": "http://github.com/mapbox/vtcomposite", "main": "./lib/index.js", From 3bded87197bbf5bb57ba493c2cf09b134d42ea57 Mon Sep 17 00:00:00 2001 From: Kien Bui Date: Tue, 1 Oct 2024 06:48:43 +0300 Subject: [PATCH 07/21] update README --- README.md | 1 + src/vtcomposite.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3ab278a..974dd4e 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,7 @@ A filtering function for modifying a tile's features and properties to support l - The script of `{language_property}`, if available, must be stored in the `{language_property}_script` property. - If `{language_property}_script` not in the `params.omit_scripts` list, use `{language_property}` when searching for matching translation. - If `{language_property}_script` is in the `params.omit_scripts` list, skip `{language_property}` when searching for matching translation. + - `all` language code returns `{language_property}`, `{language_property}_local` and all possible language properties that have different values than `{language_property}` - `params.omit_scripts` **Array>** array of scripts to skip `local` language code. - `params.language_property` **String** the primary property in features that identifies the feature in a language. - Default value: `name`. diff --git a/src/vtcomposite.cpp b/src/vtcomposite.cpp index fcacf95..d7132b5 100644 --- a/src/vtcomposite.cpp +++ b/src/vtcomposite.cpp @@ -974,7 +974,7 @@ struct LocalizeWorker : Napi::AsyncWorker // Check the list of languages to be added // Only add the ones that are different from original local language to the final properties - if (is_international_tile_with_all_languages && original_language_value.valid()) + if (is_international_tile_with_all_languages) { for (const auto& language_property : language_properties_to_be_added_to_final_properties) { From 6da594aa0c8431e6546b7fefa6cd1e68eac24f76 Mon Sep 17 00:00:00 2001 From: Kien Bui Date: Tue, 1 Oct 2024 06:55:14 +0300 Subject: [PATCH 08/21] 2.2.0-rc1 [publish binary] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index de0c0a8..88a1b32 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0", + "version": "2.2.0-rc1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mapbox/vtcomposite", - "version": "2.2.0", + "version": "2.2.0-rc1", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index e4989a4..4ecc21e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0", + "version": "2.2.0-rc1", "description": "Compositing operations on Vector Tiles (c++ bindings using N-API)", "url": "http://github.com/mapbox/vtcomposite", "main": "./lib/index.js", From 15befbfd33a43910c8668737875dfa444848aed2 Mon Sep 17 00:00:00 2001 From: Kien Bui Date: Tue, 1 Oct 2024 07:12:50 +0300 Subject: [PATCH 09/21] 2.2.0-i18n-dev1 [publish binary] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 88a1b32..13d8f6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-rc1", + "version": "2.2.0-i18n-dev1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mapbox/vtcomposite", - "version": "2.2.0-rc1", + "version": "2.2.0-i18n-dev1", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 4ecc21e..2d940fa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-rc1", + "version": "2.2.0-i18n-dev1", "description": "Compositing operations on Vector Tiles (c++ bindings using N-API)", "url": "http://github.com/mapbox/vtcomposite", "main": "./lib/index.js", From 3377af7f6dd5358cd6513e2445c456f9d81ca54e Mon Sep 17 00:00:00 2001 From: Kien Bui Date: Tue, 1 Oct 2024 10:57:24 +0300 Subject: [PATCH 10/21] 2.2.0-dev2 [publish binary] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 13d8f6f..01cde21 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-i18n-dev1", + "version": "2.2.0-dev2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mapbox/vtcomposite", - "version": "2.2.0-i18n-dev1", + "version": "2.2.0-dev2", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 2d940fa..a280000 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-i18n-dev1", + "version": "2.2.0-dev2", "description": "Compositing operations on Vector Tiles (c++ bindings using N-API)", "url": "http://github.com/mapbox/vtcomposite", "main": "./lib/index.js", From 48ac8eafb48d60f90563501efb6668f440865382 Mon Sep 17 00:00:00 2001 From: Kien Bui Date: Tue, 1 Oct 2024 14:21:05 +0300 Subject: [PATCH 11/21] 2.2.0-dev3 [publish binary] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 01cde21..fba19ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev2", + "version": "2.2.0-dev3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev2", + "version": "2.2.0-dev3", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index a280000..00a8643 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev2", + "version": "2.2.0-dev3", "description": "Compositing operations on Vector Tiles (c++ bindings using N-API)", "url": "http://github.com/mapbox/vtcomposite", "main": "./lib/index.js", From ba9b4cf702958348b9915e9ae4cf956f4703c187 Mon Sep 17 00:00:00 2001 From: Kien Bui Date: Tue, 1 Oct 2024 15:30:35 +0300 Subject: [PATCH 12/21] 2.2.0-dev4 [publish binary] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index fba19ad..fcb57a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev3", + "version": "2.2.0-dev4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev3", + "version": "2.2.0-dev4", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 00a8643..b8f01b2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev3", + "version": "2.2.0-dev4", "description": "Compositing operations on Vector Tiles (c++ bindings using N-API)", "url": "http://github.com/mapbox/vtcomposite", "main": "./lib/index.js", From 7994760859ddbeed3aed1b058436969989476092 Mon Sep 17 00:00:00 2001 From: Kien Bui Date: Tue, 1 Oct 2024 16:16:51 +0300 Subject: [PATCH 13/21] 2.2.0-dev5 [publish binary] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index fcb57a4..b6ac320 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev4", + "version": "2.2.0-dev5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev4", + "version": "2.2.0-dev5", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index b8f01b2..4b6562c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev4", + "version": "2.2.0-dev5", "description": "Compositing operations on Vector Tiles (c++ bindings using N-API)", "url": "http://github.com/mapbox/vtcomposite", "main": "./lib/index.js", From da51434026d466a532274c9b377e1f9b2e85bc0c Mon Sep 17 00:00:00 2001 From: Kien Bui Date: Tue, 1 Oct 2024 17:34:19 +0300 Subject: [PATCH 14/21] 2.2.0-dev6 [publish binary] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b6ac320..babb5f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev5", + "version": "2.2.0-dev6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev5", + "version": "2.2.0-dev6", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 4b6562c..0288498 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev5", + "version": "2.2.0-dev6", "description": "Compositing operations on Vector Tiles (c++ bindings using N-API)", "url": "http://github.com/mapbox/vtcomposite", "main": "./lib/index.js", From 3278c5c0fdad2e4c588631168303a2df7d4faf67 Mon Sep 17 00:00:00 2001 From: dylannguyen11195 Date: Tue, 1 Oct 2024 18:34:22 +0300 Subject: [PATCH 15/21] 2.2.0-dev7 [publish binary] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index babb5f5..6d548fe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev6", + "version": "2.2.0-dev7", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev6", + "version": "2.2.0-dev7", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 0288498..0419dde 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev6", + "version": "2.2.0-dev7", "description": "Compositing operations on Vector Tiles (c++ bindings using N-API)", "url": "http://github.com/mapbox/vtcomposite", "main": "./lib/index.js", From 3b32bcf1c84d58e5ee5562b9f2dfd90d3b3897f1 Mon Sep 17 00:00:00 2001 From: dylannguyen11195 Date: Wed, 2 Oct 2024 11:03:38 +0300 Subject: [PATCH 16/21] Pin node version in Travis config file --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index b3ec1b8..93488c7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,8 @@ language: node_js dist: bionic +node_js: 16 + # enable c++11/14 builds addons: apt: From 9b148acb96ac48c0324f65cd49ca090e46e865bc Mon Sep 17 00:00:00 2001 From: Kien Bui Date: Wed, 2 Oct 2024 11:51:58 +0300 Subject: [PATCH 17/21] 2.2.0-dev8 [publish binary] --- src/vtcomposite.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/vtcomposite.cpp b/src/vtcomposite.cpp index d7132b5..691902e 100644 --- a/src/vtcomposite.cpp +++ b/src/vtcomposite.cpp @@ -20,8 +20,8 @@ #include #include #include -#include #include +#include namespace vtile { @@ -653,7 +653,7 @@ struct LocalizeWorker : Napi::AsyncWorker return matching_worldviews; } - static std::string remove_hidden_prefix(std::string property_key, std::string hidden_prefix) + static std::string remove_hidden_prefix(std::string property_key, std::string& hidden_prefix) { bool has_hidden_prefix = utils::startswith(property_key, hidden_prefix); @@ -981,8 +981,9 @@ struct LocalizeWorker : Napi::AsyncWorker std::string language_property_key = language_property.first; vtzero::property_value language_property_value = language_property.second; - if (language_property_value.string_value() != original_language_value.string_value()) + if (language_property_value.string_value() != original_language_value.string_value()) { final_properties.emplace_back(language_property_key, language_property_value); + } } } From f76e60eb6dbf12ea584ff25572a37090754b2839 Mon Sep 17 00:00:00 2001 From: Kien Bui Date: Wed, 2 Oct 2024 11:57:21 +0300 Subject: [PATCH 18/21] 2.2.0-dev9 [publish binary] --- package-lock.json | 4 ++-- package.json | 2 +- src/vtcomposite.cpp | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6d548fe..3cdcec2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev7", + "version": "2.2.0-dev9", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev7", + "version": "2.2.0-dev9", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 0419dde..5d3076c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev7", + "version": "2.2.0-dev9", "description": "Compositing operations on Vector Tiles (c++ bindings using N-API)", "url": "http://github.com/mapbox/vtcomposite", "main": "./lib/index.js", diff --git a/src/vtcomposite.cpp b/src/vtcomposite.cpp index 691902e..228feea 100644 --- a/src/vtcomposite.cpp +++ b/src/vtcomposite.cpp @@ -19,8 +19,8 @@ // stl #include #include -#include #include +#include #include namespace vtile { @@ -981,7 +981,8 @@ struct LocalizeWorker : Napi::AsyncWorker std::string language_property_key = language_property.first; vtzero::property_value language_property_value = language_property.second; - if (language_property_value.string_value() != original_language_value.string_value()) { + if (language_property_value.string_value() != original_language_value.string_value()) + { final_properties.emplace_back(language_property_key, language_property_value); } } From ff2e787e1a790290cebe948583aa1eb6dd1b2b26 Mon Sep 17 00:00:00 2001 From: Kien Bui Date: Wed, 2 Oct 2024 12:09:25 +0300 Subject: [PATCH 19/21] 2.2.0-dev10 [publish binary] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3cdcec2..15ec944 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev9", + "version": "2.2.0-dev10", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev9", + "version": "2.2.0-dev10", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 5d3076c..3ba6ef1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev9", + "version": "2.2.0-dev10", "description": "Compositing operations on Vector Tiles (c++ bindings using N-API)", "url": "http://github.com/mapbox/vtcomposite", "main": "./lib/index.js", From 6886341e4c1b1b0c74eaf56fd7666fc27bc91a28 Mon Sep 17 00:00:00 2001 From: Kien Bui Date: Thu, 3 Oct 2024 10:43:49 +0300 Subject: [PATCH 20/21] Update test/vtcomposite-localize-language.test.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Ömer Furkan Tercan --- test/vtcomposite-localize-language.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/vtcomposite-localize-language.test.js b/test/vtcomposite-localize-language.test.js index 04dabcd..f7094c9 100644 --- a/test/vtcomposite-localize-language.test.js +++ b/test/vtcomposite-localize-language.test.js @@ -861,7 +861,7 @@ test('[localize language] _mbx_name_local exists in the input tile', (assert) => }); }); -test('[localize language] languages=all returns name, name_local and all name_xx(s) with _mbx_ dropped removed from property name', (assert) => { +test('[localize language] languages=all returns name, name_local and all name_xx(s) with _mbx_ removed from property name', (assert) => { const rawDataLanguageProperties = { name: '你好', name_script: 'Han', From f51f58dca24973daabc970c7c0064ada4b70d31c Mon Sep 17 00:00:00 2001 From: dylannguyen11195 Date: Mon, 7 Oct 2024 14:35:55 +0300 Subject: [PATCH 21/21] 2.2.0 [publish binary] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 15ec944..de0c0a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev10", + "version": "2.2.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev10", + "version": "2.2.0", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 3ba6ef1..e4989a4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mapbox/vtcomposite", - "version": "2.2.0-dev10", + "version": "2.2.0", "description": "Compositing operations on Vector Tiles (c++ bindings using N-API)", "url": "http://github.com/mapbox/vtcomposite", "main": "./lib/index.js",