@zowe/cli 8.37.1 → 8.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/lib/zosfiles/edit/Edit.utils.d.ts.map +1 -1
  2. package/lib/zosfiles/edit/Edit.utils.js.map +1 -1
  3. package/node_modules/@zowe/core-for-zowe-sdk/lib/constants/Core.constants.d.ts +8 -0
  4. package/node_modules/@zowe/core-for-zowe-sdk/lib/constants/Core.constants.d.ts.map +1 -1
  5. package/node_modules/@zowe/core-for-zowe-sdk/lib/constants/Core.constants.js +31 -0
  6. package/node_modules/@zowe/core-for-zowe-sdk/lib/constants/Core.constants.js.map +1 -1
  7. package/node_modules/@zowe/core-for-zowe-sdk/package.json +3 -3
  8. package/node_modules/@zowe/imperative/lib/config/src/ProfileCredentials.d.ts.map +1 -1
  9. package/node_modules/@zowe/imperative/lib/config/src/ProfileCredentials.js +15 -1
  10. package/node_modules/@zowe/imperative/lib/config/src/ProfileCredentials.js.map +1 -1
  11. package/node_modules/@zowe/imperative/lib/imperative/src/config/cmd/report-env/EnvQuery.d.ts.map +1 -1
  12. package/node_modules/@zowe/imperative/lib/imperative/src/config/cmd/report-env/EnvQuery.js +1 -2
  13. package/node_modules/@zowe/imperative/lib/imperative/src/config/cmd/report-env/EnvQuery.js.map +1 -1
  14. package/node_modules/@zowe/imperative/lib/rest/index.d.ts +1 -0
  15. package/node_modules/@zowe/imperative/lib/rest/index.d.ts.map +1 -1
  16. package/node_modules/@zowe/imperative/lib/rest/index.js +1 -0
  17. package/node_modules/@zowe/imperative/lib/rest/index.js.map +1 -1
  18. package/node_modules/@zowe/imperative/lib/rest/src/session/AbstractSession.d.ts +16 -2
  19. package/node_modules/@zowe/imperative/lib/rest/src/session/AbstractSession.d.ts.map +1 -1
  20. package/node_modules/@zowe/imperative/lib/rest/src/session/AbstractSession.js +57 -9
  21. package/node_modules/@zowe/imperative/lib/rest/src/session/AbstractSession.js.map +1 -1
  22. package/node_modules/@zowe/imperative/lib/rest/src/session/SessConstants.d.ts +29 -0
  23. package/node_modules/@zowe/imperative/lib/rest/src/session/SessConstants.d.ts.map +1 -1
  24. package/node_modules/@zowe/imperative/lib/rest/src/session/SessConstants.js +32 -1
  25. package/node_modules/@zowe/imperative/lib/rest/src/session/SessConstants.js.map +1 -1
  26. package/node_modules/@zowe/imperative/lib/rest/src/session/doc/IApimlDecision.d.ts +44 -0
  27. package/node_modules/@zowe/imperative/lib/rest/src/session/doc/IApimlDecision.d.ts.map +1 -0
  28. package/node_modules/@zowe/imperative/lib/rest/src/session/doc/IApimlDecision.js +40 -0
  29. package/node_modules/@zowe/imperative/lib/rest/src/session/doc/IApimlDecision.js.map +1 -0
  30. package/node_modules/@zowe/imperative/lib/rest/src/session/doc/ISession.d.ts +11 -0
  31. package/node_modules/@zowe/imperative/lib/rest/src/session/doc/ISession.d.ts.map +1 -1
  32. package/node_modules/@zowe/imperative/package.json +2 -2
  33. package/node_modules/@zowe/imperative/web-help/package-lock.json +62 -61
  34. package/node_modules/@zowe/provisioning-for-zowe-sdk/package.json +4 -4
  35. package/node_modules/@zowe/secrets-for-zowe-sdk/package.json +1 -1
  36. package/node_modules/@zowe/secrets-for-zowe-sdk/prebuilds/keyring.darwin-arm64.node +0 -0
  37. package/node_modules/@zowe/secrets-for-zowe-sdk/prebuilds/keyring.darwin-x64.node +0 -0
  38. package/node_modules/@zowe/secrets-for-zowe-sdk/prebuilds/keyring.linux-arm-gnueabihf.node +0 -0
  39. package/node_modules/@zowe/secrets-for-zowe-sdk/prebuilds/keyring.linux-arm64-gnu.node +0 -0
  40. package/node_modules/@zowe/secrets-for-zowe-sdk/prebuilds/keyring.linux-arm64-musl.node +0 -0
  41. package/node_modules/@zowe/secrets-for-zowe-sdk/prebuilds/keyring.linux-ia32-gnu.node +0 -0
  42. package/node_modules/@zowe/secrets-for-zowe-sdk/prebuilds/keyring.linux-x64-gnu.node +0 -0
  43. package/node_modules/@zowe/secrets-for-zowe-sdk/prebuilds/keyring.linux-x64-musl.node +0 -0
  44. package/node_modules/@zowe/secrets-for-zowe-sdk/prebuilds/keyring.win32-arm64-msvc.node +0 -0
  45. package/node_modules/@zowe/secrets-for-zowe-sdk/prebuilds/keyring.win32-ia32-msvc.node +0 -0
  46. package/node_modules/@zowe/secrets-for-zowe-sdk/prebuilds/keyring.win32-x64-msvc.node +0 -0
  47. package/node_modules/@zowe/secrets-for-zowe-sdk/src/keyring/index.js +86 -18
  48. package/node_modules/@zowe/zos-console-for-zowe-sdk/package.json +4 -4
  49. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/constants/ZosFiles.messages.d.ts.map +1 -1
  50. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/constants/ZosFiles.messages.js +27 -0
  51. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/constants/ZosFiles.messages.js.map +1 -1
  52. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/methods/create/Create.d.ts.map +1 -1
  53. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/methods/create/Create.js +57 -2
  54. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/methods/create/Create.js.map +1 -1
  55. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/methods/delete/Delete.d.ts.map +1 -1
  56. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/methods/delete/Delete.js +1 -0
  57. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/methods/delete/Delete.js.map +1 -1
  58. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/methods/list/List.d.ts.map +1 -1
  59. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/methods/list/List.js +1 -0
  60. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/methods/list/List.js.map +1 -1
  61. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/methods/utilities/Utilities.d.ts +10 -0
  62. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/methods/utilities/Utilities.d.ts.map +1 -1
  63. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/methods/utilities/Utilities.js +43 -17
  64. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/methods/utilities/Utilities.js.map +1 -1
  65. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/utils/ZosFilesUtils.d.ts +25 -0
  66. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/utils/ZosFilesUtils.d.ts.map +1 -1
  67. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/utils/ZosFilesUtils.js +53 -0
  68. package/node_modules/@zowe/zos-files-for-zowe-sdk/lib/utils/ZosFilesUtils.js.map +1 -1
  69. package/node_modules/@zowe/zos-files-for-zowe-sdk/package.json +5 -5
  70. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/CancelJobs.d.ts.map +1 -1
  71. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/CancelJobs.js +2 -0
  72. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/CancelJobs.js.map +1 -1
  73. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/DeleteJobs.d.ts.map +1 -1
  74. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/DeleteJobs.js +2 -0
  75. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/DeleteJobs.js.map +1 -1
  76. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/DownloadJobs.d.ts.map +1 -1
  77. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/DownloadJobs.js +3 -0
  78. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/DownloadJobs.js.map +1 -1
  79. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/GetJobs.d.ts.map +1 -1
  80. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/GetJobs.js +8 -0
  81. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/GetJobs.js.map +1 -1
  82. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/JobsMessages.d.ts.map +1 -1
  83. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/JobsMessages.js +24 -0
  84. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/JobsMessages.js.map +1 -1
  85. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/JobsUtils.d.ts +39 -0
  86. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/JobsUtils.d.ts.map +1 -0
  87. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/JobsUtils.js +72 -0
  88. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/JobsUtils.js.map +1 -0
  89. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/ModifyJobs.d.ts.map +1 -1
  90. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/ModifyJobs.js +2 -0
  91. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/ModifyJobs.js.map +1 -1
  92. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/SearchJobs.d.ts.map +1 -1
  93. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/SearchJobs.js +3 -0
  94. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/lib/SearchJobs.js.map +1 -1
  95. package/node_modules/@zowe/zos-jobs-for-zowe-sdk/package.json +5 -5
  96. package/node_modules/@zowe/zos-logs-for-zowe-sdk/package.json +4 -4
  97. package/node_modules/@zowe/zos-tso-for-zowe-sdk/package.json +5 -5
  98. package/node_modules/@zowe/zos-uss-for-zowe-sdk/lib/Shell.d.ts.map +1 -1
  99. package/node_modules/@zowe/zos-uss-for-zowe-sdk/lib/Shell.js +1 -1
  100. package/node_modules/@zowe/zos-uss-for-zowe-sdk/lib/Shell.js.map +1 -1
  101. package/node_modules/@zowe/zos-uss-for-zowe-sdk/lib/SshSession.d.ts.map +1 -1
  102. package/node_modules/@zowe/zos-uss-for-zowe-sdk/lib/SshSession.js.map +1 -1
  103. package/node_modules/@zowe/zos-uss-for-zowe-sdk/lib/doc/ISshSession.d.ts +14 -0
  104. package/node_modules/@zowe/zos-uss-for-zowe-sdk/lib/doc/ISshSession.d.ts.map +1 -1
  105. package/node_modules/@zowe/zos-uss-for-zowe-sdk/package.json +3 -3
  106. package/node_modules/@zowe/zos-workflows-for-zowe-sdk/lib/Create.d.ts.map +1 -1
  107. package/node_modules/@zowe/zos-workflows-for-zowe-sdk/lib/Create.js +3 -2
  108. package/node_modules/@zowe/zos-workflows-for-zowe-sdk/lib/Create.js.map +1 -1
  109. package/node_modules/@zowe/zos-workflows-for-zowe-sdk/package.json +5 -5
  110. package/node_modules/@zowe/zosmf-for-zowe-sdk/lib/constants/Zosmf.profile.d.ts.map +1 -1
  111. package/node_modules/@zowe/zosmf-for-zowe-sdk/lib/constants/Zosmf.profile.js +9 -0
  112. package/node_modules/@zowe/zosmf-for-zowe-sdk/lib/constants/Zosmf.profile.js.map +1 -1
  113. package/node_modules/@zowe/zosmf-for-zowe-sdk/package.json +4 -4
  114. package/node_modules/brace-expansion/dist/commonjs/index.d.ts +4 -0
  115. package/node_modules/brace-expansion/dist/commonjs/index.d.ts.map +1 -1
  116. package/node_modules/brace-expansion/dist/commonjs/index.js +69 -25
  117. package/node_modules/brace-expansion/dist/commonjs/index.js.map +1 -1
  118. package/node_modules/brace-expansion/dist/esm/index.d.ts +4 -0
  119. package/node_modules/brace-expansion/dist/esm/index.d.ts.map +1 -1
  120. package/node_modules/brace-expansion/dist/esm/index.js +68 -24
  121. package/node_modules/brace-expansion/dist/esm/index.js.map +1 -1
  122. package/node_modules/brace-expansion/package.json +2 -1
  123. package/node_modules/cpu-features/.github/workflows/ci.yml +15 -9
  124. package/node_modules/cpu-features/.github/workflows/lint.yml +2 -2
  125. package/node_modules/cpu-features/deps/cpu_features/cpu_features.gyp +1 -0
  126. package/node_modules/cpu-features/package.json +2 -2
  127. package/node_modules/markdown-it/dist/index.cjs.js +3696 -5376
  128. package/node_modules/markdown-it/dist/index.cjs.js.map +1 -0
  129. package/node_modules/markdown-it/dist/markdown-it.js +1446 -4481
  130. package/node_modules/markdown-it/dist/markdown-it.js.map +1 -0
  131. package/node_modules/markdown-it/dist/markdown-it.min.js +3 -2
  132. package/node_modules/markdown-it/dist/markdown-it.min.js.map +1 -0
  133. package/node_modules/markdown-it/lib/common/html_re.mjs +9 -9
  134. package/node_modules/markdown-it/lib/common/utils.mjs +2 -11
  135. package/node_modules/markdown-it/lib/helpers/parse_link_destination.mjs +1 -1
  136. package/node_modules/markdown-it/lib/parser_block.mjs +9 -9
  137. package/node_modules/markdown-it/lib/parser_core.mjs +7 -7
  138. package/node_modules/markdown-it/lib/parser_inline.mjs +16 -16
  139. package/node_modules/markdown-it/lib/renderer.mjs +2 -2
  140. package/node_modules/markdown-it/lib/rules_block/blockquote.mjs +6 -6
  141. package/node_modules/markdown-it/lib/rules_block/code.mjs +2 -2
  142. package/node_modules/markdown-it/lib/rules_block/fence.mjs +4 -4
  143. package/node_modules/markdown-it/lib/rules_block/heading.mjs +7 -7
  144. package/node_modules/markdown-it/lib/rules_block/hr.mjs +2 -2
  145. package/node_modules/markdown-it/lib/rules_block/html_block.mjs +6 -6
  146. package/node_modules/markdown-it/lib/rules_block/lheading.mjs +8 -8
  147. package/node_modules/markdown-it/lib/rules_block/list.mjs +6 -6
  148. package/node_modules/markdown-it/lib/rules_block/paragraph.mjs +5 -5
  149. package/node_modules/markdown-it/lib/rules_block/reference.mjs +1 -1
  150. package/node_modules/markdown-it/lib/rules_block/state_block.mjs +6 -6
  151. package/node_modules/markdown-it/lib/rules_block/table.mjs +4 -4
  152. package/node_modules/markdown-it/lib/rules_core/block.mjs +3 -3
  153. package/node_modules/markdown-it/lib/rules_core/linkify.mjs +46 -20
  154. package/node_modules/markdown-it/lib/rules_core/normalize.mjs +2 -2
  155. package/node_modules/markdown-it/lib/rules_core/smartquotes.mjs +48 -27
  156. package/node_modules/markdown-it/lib/rules_inline/autolink.mjs +17 -17
  157. package/node_modules/markdown-it/lib/rules_inline/balance_pairs.mjs +2 -2
  158. package/node_modules/markdown-it/lib/rules_inline/emphasis.mjs +8 -8
  159. package/node_modules/markdown-it/lib/rules_inline/entity.mjs +7 -7
  160. package/node_modules/markdown-it/lib/rules_inline/escape.mjs +15 -1
  161. package/node_modules/markdown-it/lib/rules_inline/html_inline.mjs +1 -1
  162. package/node_modules/markdown-it/lib/rules_inline/link.mjs +1 -1
  163. package/node_modules/markdown-it/lib/rules_inline/linkify.mjs +27 -9
  164. package/node_modules/markdown-it/lib/rules_inline/state_inline.mjs +2 -2
  165. package/node_modules/markdown-it/lib/rules_inline/strikethrough.mjs +10 -10
  166. package/node_modules/markdown-it/lib/token.mjs +12 -12
  167. package/node_modules/markdown-it/package.json +27 -34
  168. package/node_modules/nan/.github/workflows/ci.yml +46 -0
  169. package/node_modules/nan/.pre-commit-config.yaml +8 -0
  170. package/node_modules/nan/CHANGELOG.md +56 -1
  171. package/node_modules/nan/README.md +7 -6
  172. package/node_modules/nan/doc/methods.md +17 -0
  173. package/node_modules/nan/doc/string_bytes.md +19 -0
  174. package/node_modules/nan/doc/v8_internals.md +16 -4
  175. package/node_modules/nan/nan.h +274 -26
  176. package/node_modules/nan/nan_callbacks.h +50 -1
  177. package/node_modules/nan/nan_callbacks_12_inl.h +294 -50
  178. package/node_modules/nan/nan_callbacks_pre_12_inl.h +10 -2
  179. package/node_modules/nan/nan_implementation_12_inl.h +19 -3
  180. package/node_modules/nan/nan_maybe_43_inl.h +7 -2
  181. package/node_modules/nan/nan_maybe_pre_43_inl.h +1 -1
  182. package/node_modules/nan/nan_scriptorigin.h +22 -1
  183. package/node_modules/nan/nan_typedarray_contents.h +1 -1
  184. package/node_modules/nan/nan_weak.h +16 -0
  185. package/node_modules/nan/package.json +5 -5
  186. package/package.json +16 -14
@@ -9,9 +9,45 @@
9
9
  #ifndef NAN_CALLBACKS_12_INL_H_
10
10
  #define NAN_CALLBACKS_12_INL_H_
11
11
 
12
+ #if defined(V8_MAJOR_VERSION) && \
13
+ (V8_MAJOR_VERSION > 14 || \
14
+ (V8_MAJOR_VERSION == 14 && \
15
+ defined(V8_MINOR_VERSION) && V8_MINOR_VERSION >= 6))
16
+ # define NAN_HAS_PROPERTY_CALLBACK_INFO_HOLDER_V2 1
17
+ #endif
18
+
19
+ // 14.7 renamed HolderV2()/SetPrototypeV2() to Holder()/SetPrototype(); the V2
20
+ // names were removed in 15.3.
21
+ #if defined(V8_MAJOR_VERSION) && \
22
+ (V8_MAJOR_VERSION > 14 || \
23
+ (V8_MAJOR_VERSION == 14 && \
24
+ defined(V8_MINOR_VERSION) && V8_MINOR_VERSION >= 7))
25
+ # define NAN_HAS_PROPERTY_CALLBACK_INFO_HOLDER_V2_AS_HOLDER 1
26
+ #endif
27
+
28
+ // 14.8 added setter callbacks taking PropertyCallbackInfo<v8::Boolean>; the
29
+ // PropertyCallbackInfo<void> ones were removed in 15.3.
30
+ #if defined(V8_MAJOR_VERSION) && \
31
+ (V8_MAJOR_VERSION > 14 || \
32
+ (V8_MAJOR_VERSION == 14 && \
33
+ defined(V8_MINOR_VERSION) && V8_MINOR_VERSION >= 8))
34
+ # define NAN_HAS_PROPERTY_CALLBACK_INFO_BOOLEAN_SETTER 1
35
+ #endif
36
+
37
+ namespace imp {
38
+ // The V8 value type behind Nan::PropertyCallbackInfo<T> and
39
+ // Nan::ReturnValue<T>. Setters keep PropertyCallbackInfo<void> in Nan's API.
40
+ template<typename T> struct PropertyCallbackValue { typedef T Type; };
41
+ #if defined(NAN_HAS_PROPERTY_CALLBACK_INFO_BOOLEAN_SETTER)
42
+ template<> struct PropertyCallbackValue<void> { typedef v8::Boolean Type; };
43
+ #endif
44
+ typedef v8::PropertyCallbackInfo<PropertyCallbackValue<void>::Type>
45
+ SetterPropertyCallbackInfo;
46
+ } // end of namespace imp
47
+
12
48
  template<typename T>
13
49
  class ReturnValue {
14
- v8::ReturnValue<T> value_;
50
+ v8::ReturnValue<typename imp::PropertyCallbackValue<T>::Type> value_;
15
51
 
16
52
  public:
17
53
  template <class S>
@@ -89,6 +125,12 @@ class ReturnValue {
89
125
  inline void Set(S *whatever) { TYPE_CHECK(S*, v8::Primitive); }
90
126
  };
91
127
 
128
+ #if defined(NAN_HAS_PROPERTY_CALLBACK_INFO_HOLDER_V2)
129
+ template<>
130
+ template <typename S>
131
+ inline void ReturnValue<void>::Set(const v8::Local<S> &) {}
132
+ #endif
133
+
92
134
  template<typename T>
93
135
  class FunctionCallbackInfo {
94
136
  const v8::FunctionCallbackInfo<T> &info_;
@@ -106,10 +148,24 @@ class FunctionCallbackInfo {
106
148
  }
107
149
 
108
150
  #if NODE_MAJOR_VERSION < 10
109
- inline v8::Local<v8::Function> Callee() const { return info_.Callee(); }
151
+ NAN_DEPRECATED inline v8::Local<v8::Function> Callee() const {
152
+ return info_.Callee();
153
+ }
110
154
  #endif
111
155
  inline v8::Local<v8::Value> Data() const { return data_; }
112
- inline v8::Local<v8::Object> Holder() const { return info_.Holder(); }
156
+ inline v8::Local<v8::Object> Holder() const {
157
+ #if defined(V8_MAJOR_VERSION) && \
158
+ (V8_MAJOR_VERSION > 12 || \
159
+ (V8_MAJOR_VERSION == 12 && \
160
+ (defined(V8_MINOR_VERSION) && \
161
+ (V8_MINOR_VERSION > 5 || \
162
+ (V8_MINOR_VERSION == 5 && defined(V8_BUILD_NUMBER) && \
163
+ V8_BUILD_NUMBER >= 214)))))
164
+ return info_.This();
165
+ #else
166
+ return info_.Holder();
167
+ #endif
168
+ }
113
169
  inline bool IsConstructCall() const { return info_.IsConstructCall(); }
114
170
  inline int Length() const { return info_.Length(); }
115
171
  inline v8::Local<v8::Value> operator[](int i) const { return info_[i]; }
@@ -133,20 +189,37 @@ class FunctionCallbackInfo {
133
189
 
134
190
  template<typename T>
135
191
  class PropertyCallbackInfo {
136
- const v8::PropertyCallbackInfo<T> &info_;
192
+ typedef v8::PropertyCallbackInfo<
193
+ typename imp::PropertyCallbackValue<T>::Type> Info;
194
+ const Info &info_;
137
195
  const v8::Local<v8::Value> data_;
138
196
 
139
197
  public:
140
198
  explicit inline PropertyCallbackInfo(
141
- const v8::PropertyCallbackInfo<T> &info
199
+ const Info &info
142
200
  , const v8::Local<v8::Value> data) :
143
201
  info_(info)
144
202
  , data_(data) {}
145
203
 
146
204
  inline v8::Isolate* GetIsolate() const { return info_.GetIsolate(); }
147
205
  inline v8::Local<v8::Value> Data() const { return data_; }
148
- inline v8::Local<v8::Object> This() const { return info_.This(); }
149
- inline v8::Local<v8::Object> Holder() const { return info_.Holder(); }
206
+ inline v8::Local<v8::Object> This() const {
207
+ #if defined(NAN_HAS_PROPERTY_CALLBACK_INFO_HOLDER_V2_AS_HOLDER)
208
+ return info_.Holder();
209
+ #elif defined(NAN_HAS_PROPERTY_CALLBACK_INFO_HOLDER_V2)
210
+ return info_.HolderV2();
211
+ #else
212
+ return info_.This();
213
+ #endif
214
+ }
215
+ inline v8::Local<v8::Object> Holder() const {
216
+ #if defined(NAN_HAS_PROPERTY_CALLBACK_INFO_HOLDER_V2) && \
217
+ !defined(NAN_HAS_PROPERTY_CALLBACK_INFO_HOLDER_V2_AS_HOLDER)
218
+ return info_.HolderV2();
219
+ #else
220
+ return info_.Holder();
221
+ #endif
222
+ }
150
223
  inline ReturnValue<T> GetReturnValue() const {
151
224
  return ReturnValue<T>(info_.GetReturnValue());
152
225
  }
@@ -164,14 +237,27 @@ class PropertyCallbackInfo {
164
237
  NAN_DISALLOW_ASSIGN_COPY_MOVE(PropertyCallbackInfo)
165
238
  };
166
239
 
240
+ // Gated on V8_EXTERNAL_POINTER_TAG_COUNT (defined alongside the tagged
241
+ // Value() API) rather than a V8_MAJOR_VERSION cutoff, since Node and
242
+ // Chromium/Electron ship divergent V8 snapshots under the same major.
243
+ // Tag must match the one used by imp::NewExternal.
244
+ inline void* GetExternalValue(v8::Local<v8::External> ext) {
245
+ #ifdef V8_EXTERNAL_POINTER_TAG_COUNT
246
+ return ext->Value(v8::kExternalPointerTypeTagDefault);
247
+ #else
248
+ return ext->Value();
249
+ #endif
250
+ }
251
+
167
252
  namespace imp {
253
+
168
254
  static
169
255
  void FunctionCallbackWrapper(const v8::FunctionCallbackInfo<v8::Value> &info) {
170
256
  v8::Local<v8::Object> obj = info.Data().As<v8::Object>();
171
257
  FunctionCallback callback = reinterpret_cast<FunctionCallback>(
172
258
  reinterpret_cast<intptr_t>(
173
- obj->GetInternalField(kFunctionIndex)
174
- .As<v8::Value>().As<v8::External>()->Value()));
259
+ Nan::GetExternalValue(obj->GetInternalField(kFunctionIndex)
260
+ .As<v8::Value>().As<v8::External>())));
175
261
  FunctionCallbackInfo<v8::Value>
176
262
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
177
263
  callback(cbinfo);
@@ -189,8 +275,8 @@ void GetterCallbackWrapper(
189
275
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
190
276
  GetterCallback callback = reinterpret_cast<GetterCallback>(
191
277
  reinterpret_cast<intptr_t>(
192
- obj->GetInternalField(kGetterIndex)
193
- .As<v8::Value>().As<v8::External>()->Value()));
278
+ Nan::GetExternalValue(obj->GetInternalField(kGetterIndex)
279
+ .As<v8::Value>().As<v8::External>())));
194
280
  callback(property.As<v8::String>(), cbinfo);
195
281
  }
196
282
 
@@ -201,21 +287,21 @@ static
201
287
  void SetterCallbackWrapper(
202
288
  v8::Local<v8::Name> property
203
289
  , v8::Local<v8::Value> value
204
- , const v8::PropertyCallbackInfo<void> &info) {
290
+ , const SetterPropertyCallbackInfo &info) {
205
291
  v8::Local<v8::Object> obj = info.Data().As<v8::Object>();
206
292
  PropertyCallbackInfo<void>
207
293
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
208
294
  SetterCallback callback = reinterpret_cast<SetterCallback>(
209
295
  reinterpret_cast<intptr_t>(
210
- obj->GetInternalField(kSetterIndex)
211
- .As<v8::Value>().As<v8::External>()->Value()));
296
+ Nan::GetExternalValue(obj->GetInternalField(kSetterIndex)
297
+ .As<v8::Value>().As<v8::External>())));
212
298
  callback(property.As<v8::String>(), value, cbinfo);
213
299
  }
214
300
 
215
301
  typedef void (*NativeSetter)(
216
302
  v8::Local<v8::Name>
217
303
  , v8::Local<v8::Value>
218
- , const v8::PropertyCallbackInfo<void> &);
304
+ , const SetterPropertyCallbackInfo &);
219
305
  #else
220
306
  static
221
307
  void GetterCallbackWrapper(
@@ -226,8 +312,8 @@ void GetterCallbackWrapper(
226
312
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
227
313
  GetterCallback callback = reinterpret_cast<GetterCallback>(
228
314
  reinterpret_cast<intptr_t>(
229
- obj->GetInternalField(kGetterIndex)
230
- .As<v8::Value>().As<v8::External>()->Value()));
315
+ Nan::GetExternalValue(obj->GetInternalField(kGetterIndex)
316
+ .As<v8::Value>().As<v8::External>())));
231
317
  callback(property, cbinfo);
232
318
  }
233
319
 
@@ -244,8 +330,8 @@ void SetterCallbackWrapper(
244
330
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
245
331
  SetterCallback callback = reinterpret_cast<SetterCallback>(
246
332
  reinterpret_cast<intptr_t>(
247
- obj->GetInternalField(kSetterIndex)
248
- .As<v8::Value>().As<v8::External>()->Value()));
333
+ Nan::GetExternalValue(obj->GetInternalField(kSetterIndex)
334
+ .As<v8::Value>().As<v8::External>())));
249
335
  callback(property, value, cbinfo);
250
336
  }
251
337
 
@@ -256,6 +342,47 @@ typedef void (*NativeSetter)(
256
342
  #endif
257
343
 
258
344
  #if NODE_MODULE_VERSION > NODE_0_12_MODULE_VERSION
345
+
346
+ #if defined(V8_MAJOR_VERSION) && (V8_MAJOR_VERSION > 12 || \
347
+ (V8_MAJOR_VERSION == 12 && defined(V8_MINOR_VERSION) && V8_MINOR_VERSION > 4))
348
+ static
349
+ v8::Intercepted PropertyGetterCallbackWrapper(
350
+ v8::Local<v8::Name> property
351
+ , const v8::PropertyCallbackInfo<v8::Value> &info) {
352
+ v8::Local<v8::Object> obj = info.Data().As<v8::Object>();
353
+ PropertyCallbackInfo<v8::Value>
354
+ cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
355
+ PropertyGetterCallback callback = reinterpret_cast<PropertyGetterCallback>(
356
+ reinterpret_cast<intptr_t>(
357
+ Nan::GetExternalValue(obj->GetInternalField(kPropertyGetterIndex)
358
+ .As<v8::Value>().As<v8::External>())));
359
+ return callback(property.As<v8::String>(), cbinfo);
360
+ }
361
+
362
+ typedef v8::Intercepted (*NativePropertyGetter)
363
+ (v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value> &);
364
+
365
+ static
366
+ v8::Intercepted PropertySetterCallbackWrapper(
367
+ v8::Local<v8::Name> property
368
+ , v8::Local<v8::Value> value
369
+ , const SetterPropertyCallbackInfo &info) {
370
+ v8::Local<v8::Object> obj = info.Data().As<v8::Object>();
371
+ PropertyCallbackInfo<void>
372
+ cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
373
+ PropertySetterCallback callback = reinterpret_cast<PropertySetterCallback>(
374
+ reinterpret_cast<intptr_t>(
375
+ Nan::GetExternalValue(obj->GetInternalField(kPropertySetterIndex)
376
+ .As<v8::Value>().As<v8::External>())));
377
+ return callback(property.As<v8::String>(), value, cbinfo);
378
+ }
379
+
380
+ typedef v8::Intercepted (*NativePropertySetter)(
381
+ v8::Local<v8::Name>
382
+ , v8::Local<v8::Value>
383
+ , const SetterPropertyCallbackInfo &);
384
+
385
+ #else
259
386
  static
260
387
  void PropertyGetterCallbackWrapper(
261
388
  v8::Local<v8::Name> property
@@ -265,8 +392,8 @@ void PropertyGetterCallbackWrapper(
265
392
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
266
393
  PropertyGetterCallback callback = reinterpret_cast<PropertyGetterCallback>(
267
394
  reinterpret_cast<intptr_t>(
268
- obj->GetInternalField(kPropertyGetterIndex)
269
- .As<v8::Value>().As<v8::External>()->Value()));
395
+ Nan::GetExternalValue(obj->GetInternalField(kPropertyGetterIndex)
396
+ .As<v8::Value>().As<v8::External>())));
270
397
  callback(property.As<v8::String>(), cbinfo);
271
398
  }
272
399
 
@@ -283,8 +410,8 @@ void PropertySetterCallbackWrapper(
283
410
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
284
411
  PropertySetterCallback callback = reinterpret_cast<PropertySetterCallback>(
285
412
  reinterpret_cast<intptr_t>(
286
- obj->GetInternalField(kPropertySetterIndex)
287
- .As<v8::Value>().As<v8::External>()->Value()));
413
+ Nan::GetExternalValue(obj->GetInternalField(kPropertySetterIndex)
414
+ .As<v8::Value>().As<v8::External>())));
288
415
  callback(property.As<v8::String>(), value, cbinfo);
289
416
  }
290
417
 
@@ -292,6 +419,7 @@ typedef void (*NativePropertySetter)(
292
419
  v8::Local<v8::Name>
293
420
  , v8::Local<v8::Value>
294
421
  , const v8::PropertyCallbackInfo<v8::Value> &);
422
+ #endif
295
423
 
296
424
  static
297
425
  void PropertyEnumeratorCallbackWrapper(
@@ -301,14 +429,51 @@ void PropertyEnumeratorCallbackWrapper(
301
429
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
302
430
  PropertyEnumeratorCallback callback =
303
431
  reinterpret_cast<PropertyEnumeratorCallback>(reinterpret_cast<intptr_t>(
304
- obj->GetInternalField(kPropertyEnumeratorIndex)
305
- .As<v8::Value>().As<v8::External>()->Value()));
432
+ Nan::GetExternalValue(obj->GetInternalField(kPropertyEnumeratorIndex)
433
+ .As<v8::Value>().As<v8::External>())));
306
434
  callback(cbinfo);
307
435
  }
308
436
 
309
437
  typedef void (*NativePropertyEnumerator)
310
438
  (const v8::PropertyCallbackInfo<v8::Array> &);
311
439
 
440
+ #if defined(V8_MAJOR_VERSION) && (V8_MAJOR_VERSION > 12 || \
441
+ (V8_MAJOR_VERSION == 12 && defined(V8_MINOR_VERSION) && V8_MINOR_VERSION > 4))
442
+ static
443
+ v8::Intercepted PropertyDeleterCallbackWrapper(
444
+ v8::Local<v8::Name> property
445
+ , const v8::PropertyCallbackInfo<v8::Boolean> &info) {
446
+ v8::Local<v8::Object> obj = info.Data().As<v8::Object>();
447
+ PropertyCallbackInfo<v8::Boolean>
448
+ cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
449
+ PropertyDeleterCallback callback = reinterpret_cast<PropertyDeleterCallback>(
450
+ reinterpret_cast<intptr_t>(
451
+ Nan::GetExternalValue(obj->GetInternalField(kPropertyDeleterIndex)
452
+ .As<v8::Value>().As<v8::External>())));
453
+ return callback(property.As<v8::String>(), cbinfo);
454
+ }
455
+
456
+ typedef v8::Intercepted (NativePropertyDeleter)
457
+ (v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Boolean> &);
458
+
459
+
460
+ static
461
+ v8::Intercepted PropertyQueryCallbackWrapper(
462
+ v8::Local<v8::Name> property
463
+ , const v8::PropertyCallbackInfo<v8::Integer> &info) {
464
+ v8::Local<v8::Object> obj = info.Data().As<v8::Object>();
465
+ PropertyCallbackInfo<v8::Integer>
466
+ cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
467
+ PropertyQueryCallback callback = reinterpret_cast<PropertyQueryCallback>(
468
+ reinterpret_cast<intptr_t>(
469
+ Nan::GetExternalValue(obj->GetInternalField(kPropertyQueryIndex)
470
+ .As<v8::Value>().As<v8::External>())));
471
+ return callback(property.As<v8::String>(), cbinfo);
472
+ }
473
+
474
+ typedef v8::Intercepted (*NativePropertyQuery)
475
+ (v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Integer> &);
476
+ #else
312
477
  static
313
478
  void PropertyDeleterCallbackWrapper(
314
479
  v8::Local<v8::Name> property
@@ -318,8 +483,8 @@ void PropertyDeleterCallbackWrapper(
318
483
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
319
484
  PropertyDeleterCallback callback = reinterpret_cast<PropertyDeleterCallback>(
320
485
  reinterpret_cast<intptr_t>(
321
- obj->GetInternalField(kPropertyDeleterIndex)
322
- .As<v8::Value>().As<v8::External>()->Value()));
486
+ Nan::GetExternalValue(obj->GetInternalField(kPropertyDeleterIndex)
487
+ .As<v8::Value>().As<v8::External>())));
323
488
  callback(property.As<v8::String>(), cbinfo);
324
489
  }
325
490
 
@@ -335,13 +500,14 @@ void PropertyQueryCallbackWrapper(
335
500
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
336
501
  PropertyQueryCallback callback = reinterpret_cast<PropertyQueryCallback>(
337
502
  reinterpret_cast<intptr_t>(
338
- obj->GetInternalField(kPropertyQueryIndex)
339
- .As<v8::Value>().As<v8::External>()->Value()));
503
+ Nan::GetExternalValue(obj->GetInternalField(kPropertyQueryIndex)
504
+ .As<v8::Value>().As<v8::External>())));
340
505
  callback(property.As<v8::String>(), cbinfo);
341
506
  }
342
507
 
343
508
  typedef void (*NativePropertyQuery)
344
509
  (v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Integer> &);
510
+ #endif
345
511
  #else
346
512
  static
347
513
  void PropertyGetterCallbackWrapper(
@@ -352,8 +518,8 @@ void PropertyGetterCallbackWrapper(
352
518
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
353
519
  PropertyGetterCallback callback = reinterpret_cast<PropertyGetterCallback>(
354
520
  reinterpret_cast<intptr_t>(
355
- obj->GetInternalField(kPropertyGetterIndex)
356
- .As<v8::Value>().As<v8::External>()->Value()));
521
+ Nan::GetExternalValue(obj->GetInternalField(kPropertyGetterIndex)
522
+ .As<v8::Value>().As<v8::External>())));
357
523
  callback(property, cbinfo);
358
524
  }
359
525
 
@@ -370,8 +536,8 @@ void PropertySetterCallbackWrapper(
370
536
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
371
537
  PropertySetterCallback callback = reinterpret_cast<PropertySetterCallback>(
372
538
  reinterpret_cast<intptr_t>(
373
- obj->GetInternalField(kPropertySetterIndex)
374
- .As<v8::Value>().As<v8::External>()->Value()));
539
+ Nan::GetExternalValue(obj->GetInternalField(kPropertySetterIndex)
540
+ .As<v8::Value>().As<v8::External>())));
375
541
  callback(property, value, cbinfo);
376
542
  }
377
543
 
@@ -388,8 +554,8 @@ void PropertyEnumeratorCallbackWrapper(
388
554
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
389
555
  PropertyEnumeratorCallback callback =
390
556
  reinterpret_cast<PropertyEnumeratorCallback>(reinterpret_cast<intptr_t>(
391
- obj->GetInternalField(kPropertyEnumeratorIndex)
392
- .As<v8::Value>().As<v8::External>()->Value()));
557
+ Nan::GetExternalValue(obj->GetInternalField(kPropertyEnumeratorIndex)
558
+ .As<v8::Value>().As<v8::External>())));
393
559
  callback(cbinfo);
394
560
  }
395
561
 
@@ -405,8 +571,8 @@ void PropertyDeleterCallbackWrapper(
405
571
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
406
572
  PropertyDeleterCallback callback = reinterpret_cast<PropertyDeleterCallback>(
407
573
  reinterpret_cast<intptr_t>(
408
- obj->GetInternalField(kPropertyDeleterIndex)
409
- .As<v8::Value>().As<v8::External>()->Value()));
574
+ Nan::GetExternalValue(obj->GetInternalField(kPropertyDeleterIndex)
575
+ .As<v8::Value>().As<v8::External>())));
410
576
  callback(property, cbinfo);
411
577
  }
412
578
 
@@ -422,8 +588,8 @@ void PropertyQueryCallbackWrapper(
422
588
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
423
589
  PropertyQueryCallback callback = reinterpret_cast<PropertyQueryCallback>(
424
590
  reinterpret_cast<intptr_t>(
425
- obj->GetInternalField(kPropertyQueryIndex)
426
- .As<v8::Value>().As<v8::External>()->Value()));
591
+ Nan::GetExternalValue(obj->GetInternalField(kPropertyQueryIndex)
592
+ .As<v8::Value>().As<v8::External>())));
427
593
  callback(property, cbinfo);
428
594
  }
429
595
 
@@ -431,6 +597,45 @@ typedef void (*NativePropertyQuery)
431
597
  (v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Integer> &);
432
598
  #endif
433
599
 
600
+ #if defined(V8_MAJOR_VERSION) && (V8_MAJOR_VERSION > 12 || \
601
+ (V8_MAJOR_VERSION == 12 && defined(V8_MINOR_VERSION) && V8_MINOR_VERSION > 4))
602
+ static
603
+ v8::Intercepted IndexGetterCallbackWrapper(
604
+ uint32_t index, const v8::PropertyCallbackInfo<v8::Value> &info) {
605
+ v8::Local<v8::Object> obj = info.Data().As<v8::Object>();
606
+ PropertyCallbackInfo<v8::Value>
607
+ cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
608
+ IndexGetterCallback callback = reinterpret_cast<IndexGetterCallback>(
609
+ reinterpret_cast<intptr_t>(
610
+ Nan::GetExternalValue(obj->GetInternalField(kIndexPropertyGetterIndex)
611
+ .As<v8::Value>().As<v8::External>())));
612
+ return callback(index, cbinfo);
613
+ }
614
+
615
+ typedef v8::Intercepted (*NativeIndexGetter)
616
+ (uint32_t, const v8::PropertyCallbackInfo<v8::Value> &);
617
+
618
+ static
619
+ v8::Intercepted IndexSetterCallbackWrapper(
620
+ uint32_t index
621
+ , v8::Local<v8::Value> value
622
+ , const SetterPropertyCallbackInfo &info) {
623
+ v8::Local<v8::Object> obj = info.Data().As<v8::Object>();
624
+ PropertyCallbackInfo<void>
625
+ cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
626
+ IndexSetterCallback callback = reinterpret_cast<IndexSetterCallback>(
627
+ reinterpret_cast<intptr_t>(
628
+ Nan::GetExternalValue(obj->GetInternalField(kIndexPropertySetterIndex)
629
+ .As<v8::Value>().As<v8::External>())));
630
+ return callback(index, value, cbinfo);
631
+ }
632
+
633
+ typedef v8::Intercepted (*NativeIndexSetter)(
634
+ uint32_t
635
+ , v8::Local<v8::Value>
636
+ , const SetterPropertyCallbackInfo &);
637
+
638
+ #else
434
639
  static
435
640
  void IndexGetterCallbackWrapper(
436
641
  uint32_t index, const v8::PropertyCallbackInfo<v8::Value> &info) {
@@ -439,14 +644,13 @@ void IndexGetterCallbackWrapper(
439
644
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
440
645
  IndexGetterCallback callback = reinterpret_cast<IndexGetterCallback>(
441
646
  reinterpret_cast<intptr_t>(
442
- obj->GetInternalField(kIndexPropertyGetterIndex)
443
- .As<v8::Value>().As<v8::External>()->Value()));
647
+ Nan::GetExternalValue(obj->GetInternalField(kIndexPropertyGetterIndex)
648
+ .As<v8::Value>().As<v8::External>())));
444
649
  callback(index, cbinfo);
445
650
  }
446
651
 
447
652
  typedef void (*NativeIndexGetter)
448
653
  (uint32_t, const v8::PropertyCallbackInfo<v8::Value> &);
449
-
450
654
  static
451
655
  void IndexSetterCallbackWrapper(
452
656
  uint32_t index
@@ -457,8 +661,8 @@ void IndexSetterCallbackWrapper(
457
661
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
458
662
  IndexSetterCallback callback = reinterpret_cast<IndexSetterCallback>(
459
663
  reinterpret_cast<intptr_t>(
460
- obj->GetInternalField(kIndexPropertySetterIndex)
461
- .As<v8::Value>().As<v8::External>()->Value()));
664
+ Nan::GetExternalValue(obj->GetInternalField(kIndexPropertySetterIndex)
665
+ .As<v8::Value>().As<v8::External>())));
462
666
  callback(index, value, cbinfo);
463
667
  }
464
668
 
@@ -467,6 +671,8 @@ typedef void (*NativeIndexSetter)(
467
671
  , v8::Local<v8::Value>
468
672
  , const v8::PropertyCallbackInfo<v8::Value> &);
469
673
 
674
+ #endif
675
+
470
676
  static
471
677
  void IndexEnumeratorCallbackWrapper(
472
678
  const v8::PropertyCallbackInfo<v8::Array> &info) {
@@ -475,15 +681,50 @@ void IndexEnumeratorCallbackWrapper(
475
681
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
476
682
  IndexEnumeratorCallback callback = reinterpret_cast<IndexEnumeratorCallback>(
477
683
  reinterpret_cast<intptr_t>(
478
- obj->GetInternalField(
684
+ Nan::GetExternalValue(obj->GetInternalField(
479
685
  kIndexPropertyEnumeratorIndex)
480
- .As<v8::Value>().As<v8::External>()->Value()));
686
+ .As<v8::Value>().As<v8::External>())));
481
687
  callback(cbinfo);
482
688
  }
483
689
 
484
690
  typedef void (*NativeIndexEnumerator)
485
691
  (const v8::PropertyCallbackInfo<v8::Array> &);
486
692
 
693
+ #if defined(V8_MAJOR_VERSION) && (V8_MAJOR_VERSION > 12 || \
694
+ (V8_MAJOR_VERSION == 12 && defined(V8_MINOR_VERSION) && V8_MINOR_VERSION > 4))
695
+ static
696
+ v8::Intercepted IndexDeleterCallbackWrapper(
697
+ uint32_t index, const v8::PropertyCallbackInfo<v8::Boolean> &info) {
698
+ v8::Local<v8::Object> obj = info.Data().As<v8::Object>();
699
+ PropertyCallbackInfo<v8::Boolean>
700
+ cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
701
+ IndexDeleterCallback callback = reinterpret_cast<IndexDeleterCallback>(
702
+ reinterpret_cast<intptr_t>(
703
+ Nan::GetExternalValue(obj->GetInternalField(
704
+ kIndexPropertyDeleterIndex)
705
+ .As<v8::Value>().As<v8::External>())));
706
+ return callback(index, cbinfo);
707
+ }
708
+
709
+ typedef v8::Intercepted (*NativeIndexDeleter)
710
+ (uint32_t, const v8::PropertyCallbackInfo<v8::Boolean> &);
711
+
712
+ static
713
+ v8::Intercepted IndexQueryCallbackWrapper(
714
+ uint32_t index, const v8::PropertyCallbackInfo<v8::Integer> &info) {
715
+ v8::Local<v8::Object> obj = info.Data().As<v8::Object>();
716
+ PropertyCallbackInfo<v8::Integer>
717
+ cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
718
+ IndexQueryCallback callback = reinterpret_cast<IndexQueryCallback>(
719
+ reinterpret_cast<intptr_t>(
720
+ Nan::GetExternalValue(obj->GetInternalField(kIndexPropertyQueryIndex)
721
+ .As<v8::Value>().As<v8::External>())));
722
+ return callback(index, cbinfo);
723
+ }
724
+
725
+ typedef v8::Intercepted (*NativeIndexQuery)
726
+ (uint32_t, const v8::PropertyCallbackInfo<v8::Integer> &);
727
+ #else
487
728
  static
488
729
  void IndexDeleterCallbackWrapper(
489
730
  uint32_t index, const v8::PropertyCallbackInfo<v8::Boolean> &info) {
@@ -492,8 +733,9 @@ void IndexDeleterCallbackWrapper(
492
733
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
493
734
  IndexDeleterCallback callback = reinterpret_cast<IndexDeleterCallback>(
494
735
  reinterpret_cast<intptr_t>(
495
- obj->GetInternalField(kIndexPropertyDeleterIndex)
496
- .As<v8::Value>().As<v8::External>()->Value()));
736
+ Nan::GetExternalValue(obj->GetInternalField(
737
+ kIndexPropertyDeleterIndex)
738
+ .As<v8::Value>().As<v8::External>())));
497
739
  callback(index, cbinfo);
498
740
  }
499
741
 
@@ -508,13 +750,15 @@ void IndexQueryCallbackWrapper(
508
750
  cbinfo(info, obj->GetInternalField(kDataIndex).As<v8::Value>());
509
751
  IndexQueryCallback callback = reinterpret_cast<IndexQueryCallback>(
510
752
  reinterpret_cast<intptr_t>(
511
- obj->GetInternalField(kIndexPropertyQueryIndex)
512
- .As<v8::Value>().As<v8::External>()->Value()));
753
+ Nan::GetExternalValue(obj->GetInternalField(kIndexPropertyQueryIndex)
754
+ .As<v8::Value>().As<v8::External>())));
513
755
  callback(index, cbinfo);
514
756
  }
515
757
 
516
758
  typedef void (*NativeIndexQuery)
517
759
  (uint32_t, const v8::PropertyCallbackInfo<v8::Integer> &);
760
+
761
+ #endif
518
762
  } // end of namespace imp
519
763
 
520
764
  #endif // NAN_CALLBACKS_12_INL_H_
@@ -136,9 +136,13 @@ class FunctionCallbackInfo {
136
136
  return ReturnValue<T>(return_value_);
137
137
  }
138
138
 
139
- inline v8::Local<v8::Function> Callee() const { return args_.Callee(); }
139
+ NAN_DEPRECATED inline v8::Local<v8::Function> Callee() const {
140
+ return args_.Callee();
141
+ }
140
142
  inline v8::Local<v8::Value> Data() const { return data_; }
141
- inline v8::Local<v8::Object> Holder() const { return args_.Holder(); }
143
+ inline v8::Local<v8::Object> Holder() const {
144
+ return args_.Holder();
145
+ }
142
146
  inline bool IsConstructCall() const { return args_.IsConstructCall(); }
143
147
  inline int Length() const { return args_.Length(); }
144
148
  inline v8::Local<v8::Value> operator[](int i) const { return args_[i]; }
@@ -283,6 +287,10 @@ class PropertyCallbackInfo<v8::Integer> :
283
287
  }
284
288
  };
285
289
 
290
+ inline void* GetExternalValue(v8::Local<v8::External> ext) {
291
+ return ext->Value();
292
+ }
293
+
286
294
  namespace imp {
287
295
  template<typename T>
288
296
  class ReturnValueImp : public ReturnValue<T> {
@@ -14,6 +14,22 @@
14
14
 
15
15
  namespace imp {
16
16
 
17
+ // Recent V8 versions (currently Chromium/Electron's V8 snapshot; not yet in
18
+ // any released Node) gained an ExternalPointerTypeTag parameter on
19
+ // v8::External::New(). Detect that API via the V8_EXTERNAL_POINTER_TAG_COUNT
20
+ // macro (defined in <v8-internal.h> alongside the new signature) rather than
21
+ // a V8_MAJOR_VERSION cutoff, since Node and Chromium ship divergent V8
22
+ // snapshots under the same major version. Externals created via this helper
23
+ // are read back through imp::GetExternalPointer in nan_callbacks_12_inl.h,
24
+ // which uses the matching kExternalPointerTypeTagDefault tag.
25
+ inline v8::Local<v8::External> NewExternal(v8::Isolate* isolate, void* value) {
26
+ #ifdef V8_EXTERNAL_POINTER_TAG_COUNT
27
+ return v8::External::New(isolate, value, v8::kExternalPointerTypeTagDefault);
28
+ #else
29
+ return v8::External::New(isolate, value);
30
+ #endif
31
+ }
32
+
17
33
  //=== Array ====================================================================
18
34
 
19
35
  Factory<v8::Array>::return_t
@@ -76,7 +92,7 @@ Factory<v8::Date>::New(double value) {
76
92
 
77
93
  Factory<v8::External>::return_t
78
94
  Factory<v8::External>::New(void * value) {
79
- return v8::External::New(v8::Isolate::GetCurrent(), value);
95
+ return imp::NewExternal(v8::Isolate::GetCurrent(), value);
80
96
  }
81
97
 
82
98
  //=== Function =================================================================
@@ -92,7 +108,7 @@ Factory<v8::Function>::New( FunctionCallback callback
92
108
 
93
109
  obj->SetInternalField(
94
110
  imp::kFunctionIndex
95
- , v8::External::New(isolate, reinterpret_cast<void *>(callback)));
111
+ , imp::NewExternal(isolate, reinterpret_cast<void *>(callback)));
96
112
 
97
113
  v8::Local<v8::Value> val = v8::Local<v8::Value>::New(isolate, data);
98
114
 
@@ -128,7 +144,7 @@ Factory<v8::FunctionTemplate>::New( FunctionCallback callback
128
144
 
129
145
  obj->SetInternalField(
130
146
  imp::kFunctionIndex
131
- , v8::External::New(isolate, reinterpret_cast<void *>(callback)));
147
+ , imp::NewExternal(isolate, reinterpret_cast<void *>(callback)));
132
148
  v8::Local<v8::Value> val = v8::Local<v8::Value>::New(isolate, data);
133
149
 
134
150
  if (!val.IsEmpty()) {