| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 2b72a45 commit c231aae
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -105,18 +105,43 @@ MaybeLocal<Object> CreateProcessObject(Realm* realm) { | |||
| 105 | 105 | READONLY_PROPERTY( | |
| 106 | 106 | process, "version", FIXED_ONE_BYTE_STRING(isolate, NODE_VERSION)); | |
| 107 | 107 | ||
| 108 | - // process.versions | ||
| 109 | 108 | Local<Object> versions = Object::New(isolate); | |
| 110 | - READONLY_PROPERTY(process, "versions", versions); | ||
| 109 | + // Node.js version is always on the top | ||
| 110 | + READONLY_STRING_PROPERTY( | ||
| 111 | + versions, "node", per_process::metadata.versions.node); | ||
| 112 | + | ||
| 113 | + #define V(key) +1 | ||
| 114 | + std::pair<std::string_view, std::string_view> | ||
| 115 | + versions_array[NODE_VERSIONS_KEYS(V)]; | ||
| 116 | + #undef V | ||
| 117 | + auto* slot = &versions_array[0]; | ||
| 111 | 118 | ||
| 112 | 119 | #define V(key) \ | |
| 113 | - if (!per_process::metadata.versions.key.empty()) { \ | ||
| 114 | - READONLY_STRING_PROPERTY( \ | ||
| 115 | - versions, #key, per_process::metadata.versions.key); \ | ||
| 116 | - } | ||
| 120 | + do { \ | ||
| 121 | + *slot++ = std::pair<std::string_view, std::string_view>( \ | ||
| 122 | + #key, per_process::metadata.versions.key); \ | ||
| 123 | + } while (0); | ||
| 117 | 124 | NODE_VERSIONS_KEYS(V) | |
| 118 | 125 | #undef V | |
| 119 | 126 | ||
| 127 | + std::sort(&versions_array[0], | ||
| 128 | + &versions_array[arraysize(versions_array)], | ||
| 129 | + [](auto& a, auto& b) { return a.first < b.first; }); | ||
| 130 | + | ||
| 131 | + for (const auto& version : versions_array) { | ||
| 132 | + versions | ||
| 133 | + ->DefineOwnProperty( | ||
| 134 | + context, | ||
| 135 | + OneByteString(isolate, version.first.data(), version.first.size()), | ||
| 136 | + OneByteString( | ||
| 137 | + isolate, version.second.data(), version.second.size()), | ||
| 138 | + v8::ReadOnly) | ||
| 139 | + .Check(); | ||
| 140 | + } | ||
| 141 | + | ||
| 142 | + // process.versions | ||
| 143 | + READONLY_PROPERTY(process, "versions", versions); | ||
| 144 | + | ||
| 120 | 145 | // process.arch | |
| 121 | 146 | READONLY_STRING_PROPERTY(process, "arch", per_process::metadata.arch); | |
| 122 | 147 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -794,10 +794,26 @@ static void PrintComponentVersions(JSONWriter* writer) { | |||
| 794 | 794 | ||
| 795 | 795 | writer->json_objectstart("componentVersions"); | |
| 796 | 796 | ||
| 797 | - #define V(key) writer->json_keyvalue(#key, per_process::metadata.versions.key); | ||
| 797 | + #define V(key) +1 | ||
| 798 | + std::pair<std::string, std::string> versions_array[NODE_VERSIONS_KEYS(V)]; | ||
| 799 | + #undef V | ||
| 800 | + auto* slot = &versions_array[0]; | ||
| 801 | + | ||
| 802 | + #define V(key) \ | ||
| 803 | + do { \ | ||
| 804 | + *slot++ = std::make_pair(#key, per_process::metadata.versions.key); \ | ||
| 805 | + } while (0); | ||
| 798 | 806 | NODE_VERSIONS_KEYS(V) | |
| 799 | 807 | #undef V | |
| 800 | 808 | ||
| 809 | + std::sort(&versions_array[0], | ||
| 810 | + &versions_array[arraysize(versions_array)], | ||
| 811 | + [](auto& a, auto& b) { return a.first < b.first; }); | ||
| 812 | + | ||
| 813 | + for (const auto& version : versions_array) { | ||
| 814 | + writer->json_keyvalue(version.first, version.second); | ||
| 815 | + } | ||
| 816 | + | ||
| 801 | 817 | writer->json_objectend(); | |
| 802 | 818 | } | |
| 803 | 819 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -9,7 +9,6 @@ const expected_keys = [ | |||
| 9 | 9 | 'ares', | |
| 10 | 10 | 'brotli', | |
| 11 | 11 | 'modules', | |
| 12 | - 'node', | ||
| 13 | 12 | 'uv', | |
| 14 | 13 | 'v8', | |
| 15 | 14 | 'zlib', | |
@@ -44,7 +43,9 @@ if (common.hasIntl) { | |||
| 44 | 43 | } | |
| 45 | 44 | ||
| 46 | 45 | expected_keys.sort(); | |
| 47 | - const actual_keys = Object.keys(process.versions).sort(); | ||
| 46 | + expected_keys.unshift('node'); | ||
| 47 | + | ||
| 48 | + const actual_keys = Object.keys(process.versions); | ||
| 48 | 49 | ||
| 49 | 50 | assert.deepStrictEqual(actual_keys, expected_keys); | |
| 50 | 51 | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments