node-red-contrib-tak-registration 0.14.1 → 0.16.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 (458) hide show
  1. package/README.md +1 -1
  2. package/node_modules/@types/geojson/README.md +1 -1
  3. package/node_modules/@types/geojson/index.d.ts +36 -2
  4. package/node_modules/@types/geojson/package.json +2 -2
  5. package/node_modules/@types/node/README.md +2 -2
  6. package/node_modules/@types/node/assert.d.ts +14 -0
  7. package/node_modules/@types/node/async_hooks.d.ts +64 -2
  8. package/node_modules/@types/node/buffer.buffer.d.ts +117 -39
  9. package/node_modules/@types/node/buffer.d.ts +6 -13
  10. package/node_modules/@types/node/cluster.d.ts +1 -1
  11. package/node_modules/@types/node/constants.d.ts +14 -12
  12. package/node_modules/@types/node/crypto.d.ts +44 -10
  13. package/node_modules/@types/node/dgram.d.ts +10 -7
  14. package/node_modules/@types/node/diagnostics_channel.d.ts +20 -1
  15. package/node_modules/@types/node/fs/promises.d.ts +23 -26
  16. package/node_modules/@types/node/fs.d.ts +166 -125
  17. package/node_modules/@types/node/globals.d.ts +141 -338
  18. package/node_modules/@types/node/http.d.ts +25 -3
  19. package/node_modules/@types/node/http2.d.ts +3 -4
  20. package/node_modules/@types/node/https.d.ts +3 -1
  21. package/node_modules/@types/node/inspector.d.ts +36 -0
  22. package/node_modules/@types/node/module.d.ts +599 -236
  23. package/node_modules/@types/node/net.d.ts +44 -13
  24. package/node_modules/@types/node/package.json +9 -4
  25. package/node_modules/@types/node/perf_hooks.d.ts +5 -0
  26. package/node_modules/@types/node/process.d.ts +69 -2
  27. package/node_modules/@types/node/querystring.d.ts +2 -3
  28. package/node_modules/@types/node/readline.d.ts +6 -1
  29. package/node_modules/@types/node/sea.d.ts +1 -1
  30. package/node_modules/@types/node/sqlite.d.ts +291 -17
  31. package/node_modules/@types/node/stream/consumers.d.ts +32 -6
  32. package/node_modules/@types/node/stream/web.d.ts +9 -4
  33. package/node_modules/@types/node/stream.d.ts +936 -1000
  34. package/node_modules/@types/node/test.d.ts +169 -137
  35. package/node_modules/@types/node/timers/promises.d.ts +24 -13
  36. package/node_modules/@types/node/timers.d.ts +159 -112
  37. package/node_modules/@types/node/tls.d.ts +34 -1
  38. package/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +110 -35
  39. package/node_modules/@types/node/util.d.ts +323 -110
  40. package/node_modules/@types/node/v8.d.ts +81 -0
  41. package/node_modules/@types/node/vm.d.ts +21 -6
  42. package/node_modules/@types/node/worker_threads.d.ts +1 -0
  43. package/node_modules/@types/node/zlib.d.ts +167 -36
  44. package/node_modules/axios/CHANGELOG.md +165 -0
  45. package/node_modules/axios/README.md +55 -33
  46. package/node_modules/axios/dist/axios.js +85 -43
  47. package/node_modules/axios/dist/axios.js.map +1 -1
  48. package/node_modules/axios/dist/axios.min.js +2 -1
  49. package/node_modules/axios/dist/axios.min.js.map +1 -1
  50. package/node_modules/axios/dist/browser/axios.cjs +92 -47
  51. package/node_modules/axios/dist/browser/axios.cjs.map +1 -1
  52. package/node_modules/axios/dist/esm/axios.js +92 -47
  53. package/node_modules/axios/dist/esm/axios.js.map +1 -1
  54. package/node_modules/axios/dist/esm/axios.min.js +2 -1
  55. package/node_modules/axios/dist/esm/axios.min.js.map +1 -1
  56. package/node_modules/axios/dist/node/axios.cjs +123 -51
  57. package/node_modules/axios/dist/node/axios.cjs.map +1 -1
  58. package/node_modules/axios/index.d.cts +17 -5
  59. package/node_modules/axios/index.d.ts +6 -3
  60. package/node_modules/axios/lib/adapters/fetch.js +2 -2
  61. package/node_modules/axios/lib/adapters/http.js +1 -1
  62. package/node_modules/axios/lib/core/Axios.js +13 -4
  63. package/node_modules/axios/lib/core/AxiosHeaders.js +15 -3
  64. package/node_modules/axios/lib/core/buildFullPath.js +3 -2
  65. package/node_modules/axios/lib/core/mergeConfig.js +1 -1
  66. package/node_modules/axios/lib/env/data.js +1 -1
  67. package/node_modules/axios/lib/helpers/formDataToStream.js +4 -3
  68. package/node_modules/axios/lib/helpers/resolveConfig.js +1 -1
  69. package/node_modules/axios/lib/helpers/throttle.js +1 -1
  70. package/node_modules/axios/lib/helpers/toFormData.js +4 -0
  71. package/node_modules/axios/lib/helpers/toURLEncodedForm.js +4 -3
  72. package/node_modules/axios/lib/platform/node/index.js +26 -0
  73. package/node_modules/axios/lib/utils.js +48 -28
  74. package/node_modules/axios/package.json +14 -5
  75. package/node_modules/bignumber.js/CHANGELOG.md +82 -1
  76. package/node_modules/bignumber.js/LICENCE.md +1 -1
  77. package/node_modules/bignumber.js/README.md +6 -4
  78. package/node_modules/bignumber.js/bignumber.d.mts +6 -0
  79. package/node_modules/bignumber.js/bignumber.d.ts +3 -1829
  80. package/node_modules/bignumber.js/bignumber.js +3 -3
  81. package/node_modules/bignumber.js/bignumber.mjs +3 -3
  82. package/node_modules/bignumber.js/package.json +17 -7
  83. package/node_modules/bignumber.js/types.d.ts +1821 -0
  84. package/node_modules/call-bind-apply-helpers/.eslintrc +17 -0
  85. package/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
  86. package/node_modules/call-bind-apply-helpers/.nycrc +9 -0
  87. package/node_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
  88. package/node_modules/call-bind-apply-helpers/LICENSE +21 -0
  89. package/node_modules/call-bind-apply-helpers/README.md +62 -0
  90. package/node_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
  91. package/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
  92. package/node_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
  93. package/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
  94. package/node_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
  95. package/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
  96. package/node_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
  97. package/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
  98. package/node_modules/call-bind-apply-helpers/index.d.ts +64 -0
  99. package/node_modules/call-bind-apply-helpers/index.js +15 -0
  100. package/node_modules/call-bind-apply-helpers/package.json +85 -0
  101. package/node_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
  102. package/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
  103. package/node_modules/call-bind-apply-helpers/test/index.js +63 -0
  104. package/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
  105. package/node_modules/dunder-proto/.eslintrc +5 -0
  106. package/node_modules/dunder-proto/.github/FUNDING.yml +12 -0
  107. package/node_modules/dunder-proto/.nycrc +13 -0
  108. package/node_modules/dunder-proto/CHANGELOG.md +24 -0
  109. package/node_modules/dunder-proto/LICENSE +21 -0
  110. package/node_modules/dunder-proto/README.md +54 -0
  111. package/node_modules/dunder-proto/get.d.ts +5 -0
  112. package/node_modules/dunder-proto/get.js +30 -0
  113. package/node_modules/dunder-proto/package.json +76 -0
  114. package/node_modules/dunder-proto/set.d.ts +5 -0
  115. package/node_modules/dunder-proto/set.js +35 -0
  116. package/node_modules/dunder-proto/test/get.js +34 -0
  117. package/node_modules/dunder-proto/test/index.js +4 -0
  118. package/node_modules/dunder-proto/test/set.js +50 -0
  119. package/node_modules/dunder-proto/tsconfig.json +9 -0
  120. package/node_modules/es-define-property/.eslintrc +13 -0
  121. package/node_modules/es-define-property/.github/FUNDING.yml +12 -0
  122. package/node_modules/es-define-property/.nycrc +9 -0
  123. package/node_modules/es-define-property/CHANGELOG.md +29 -0
  124. package/node_modules/es-define-property/LICENSE +21 -0
  125. package/node_modules/es-define-property/README.md +49 -0
  126. package/node_modules/es-define-property/index.d.ts +3 -0
  127. package/node_modules/es-define-property/index.js +14 -0
  128. package/node_modules/es-define-property/package.json +81 -0
  129. package/node_modules/es-define-property/test/index.js +56 -0
  130. package/node_modules/es-define-property/tsconfig.json +10 -0
  131. package/node_modules/es-errors/.eslintrc +5 -0
  132. package/node_modules/es-errors/.github/FUNDING.yml +12 -0
  133. package/node_modules/es-errors/CHANGELOG.md +40 -0
  134. package/node_modules/es-errors/LICENSE +21 -0
  135. package/node_modules/es-errors/README.md +55 -0
  136. package/node_modules/es-errors/eval.d.ts +3 -0
  137. package/node_modules/es-errors/eval.js +4 -0
  138. package/node_modules/es-errors/index.d.ts +3 -0
  139. package/node_modules/es-errors/index.js +4 -0
  140. package/node_modules/es-errors/package.json +80 -0
  141. package/node_modules/es-errors/range.d.ts +3 -0
  142. package/node_modules/es-errors/range.js +4 -0
  143. package/node_modules/es-errors/ref.d.ts +3 -0
  144. package/node_modules/es-errors/ref.js +4 -0
  145. package/node_modules/es-errors/syntax.d.ts +3 -0
  146. package/node_modules/es-errors/syntax.js +4 -0
  147. package/node_modules/es-errors/test/index.js +19 -0
  148. package/node_modules/es-errors/tsconfig.json +49 -0
  149. package/node_modules/es-errors/type.d.ts +3 -0
  150. package/node_modules/es-errors/type.js +4 -0
  151. package/node_modules/es-errors/uri.d.ts +3 -0
  152. package/node_modules/es-errors/uri.js +4 -0
  153. package/node_modules/es-object-atoms/.eslintrc +16 -0
  154. package/node_modules/es-object-atoms/.github/FUNDING.yml +12 -0
  155. package/node_modules/es-object-atoms/CHANGELOG.md +37 -0
  156. package/node_modules/es-object-atoms/LICENSE +21 -0
  157. package/node_modules/es-object-atoms/README.md +63 -0
  158. package/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
  159. package/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
  160. package/node_modules/es-object-atoms/ToObject.d.ts +7 -0
  161. package/node_modules/es-object-atoms/ToObject.js +10 -0
  162. package/node_modules/es-object-atoms/index.d.ts +3 -0
  163. package/node_modules/es-object-atoms/index.js +4 -0
  164. package/node_modules/es-object-atoms/isObject.d.ts +3 -0
  165. package/node_modules/es-object-atoms/isObject.js +6 -0
  166. package/node_modules/es-object-atoms/package.json +80 -0
  167. package/node_modules/es-object-atoms/test/index.js +38 -0
  168. package/node_modules/es-object-atoms/tsconfig.json +6 -0
  169. package/node_modules/es-set-tostringtag/.eslintrc +13 -0
  170. package/node_modules/es-set-tostringtag/.nycrc +9 -0
  171. package/node_modules/es-set-tostringtag/CHANGELOG.md +67 -0
  172. package/node_modules/es-set-tostringtag/LICENSE +21 -0
  173. package/node_modules/es-set-tostringtag/README.md +53 -0
  174. package/node_modules/es-set-tostringtag/index.d.ts +10 -0
  175. package/node_modules/es-set-tostringtag/index.js +35 -0
  176. package/node_modules/es-set-tostringtag/package.json +78 -0
  177. package/node_modules/es-set-tostringtag/test/index.js +85 -0
  178. package/node_modules/es-set-tostringtag/tsconfig.json +9 -0
  179. package/node_modules/fast-xml-parser/CHANGELOG.md +70 -0
  180. package/node_modules/fast-xml-parser/README.md +37 -51
  181. package/node_modules/fast-xml-parser/lib/fxbuilder.min.js +2 -0
  182. package/node_modules/fast-xml-parser/lib/fxbuilder.min.js.map +1 -0
  183. package/node_modules/fast-xml-parser/lib/fxp.cjs +1 -0
  184. package/node_modules/fast-xml-parser/lib/fxp.d.cts +458 -0
  185. package/node_modules/fast-xml-parser/lib/fxp.min.js +2 -0
  186. package/node_modules/fast-xml-parser/lib/fxp.min.js.map +1 -0
  187. package/node_modules/fast-xml-parser/lib/fxparser.min.js +2 -0
  188. package/node_modules/fast-xml-parser/lib/fxparser.min.js.map +1 -0
  189. package/node_modules/fast-xml-parser/lib/fxvalidator.min.js +2 -0
  190. package/node_modules/fast-xml-parser/lib/fxvalidator.min.js.map +1 -0
  191. package/node_modules/fast-xml-parser/package.json +36 -19
  192. package/node_modules/fast-xml-parser/src/cli/cli.js +16 -12
  193. package/node_modules/fast-xml-parser/src/cli/man.js +6 -1
  194. package/node_modules/fast-xml-parser/src/cli/read.js +30 -79
  195. package/node_modules/fast-xml-parser/src/fxp.d.ts +33 -6
  196. package/node_modules/fast-xml-parser/src/fxp.js +11 -8
  197. package/node_modules/fast-xml-parser/src/ignoreAttributes.js +2 -4
  198. package/node_modules/fast-xml-parser/src/util.js +14 -18
  199. package/node_modules/fast-xml-parser/src/{v5 → v6}/CharsSymbol.js +1 -1
  200. package/node_modules/fast-xml-parser/src/{v5 → v6}/EntitiesParser.js +3 -6
  201. package/node_modules/fast-xml-parser/src/{v5 → v6}/OptionsBuilder.js +3 -6
  202. package/node_modules/fast-xml-parser/src/{v5 → v6}/OutputBuilders/BaseOutputBuilder.js +1 -3
  203. package/node_modules/fast-xml-parser/src/{v5 → v6}/OutputBuilders/JsArrBuilder.js +3 -3
  204. package/node_modules/fast-xml-parser/src/{v5 → v6}/OutputBuilders/JsMinArrBuilder.js +3 -5
  205. package/node_modules/fast-xml-parser/src/{v5 → v6}/OutputBuilders/JsObjBuilder.js +3 -5
  206. package/node_modules/fast-xml-parser/src/{v5 → v6}/OutputBuilders/ParserOptionsBuilder.js +6 -11
  207. package/node_modules/fast-xml-parser/src/{v5 → v6}/TagPath.js +1 -1
  208. package/node_modules/fast-xml-parser/src/{v5 → v6}/TagPathMatcher.js +3 -5
  209. package/node_modules/fast-xml-parser/src/{v5 → v6}/XMLParser.js +3 -5
  210. package/node_modules/fast-xml-parser/src/{v5 → v6}/Xml2JsParser.js +8 -10
  211. package/node_modules/fast-xml-parser/src/{v5 → v6}/XmlPartReader.js +4 -10
  212. package/node_modules/fast-xml-parser/src/{v5 → v6}/XmlSpecialTagsReader.js +5 -12
  213. package/node_modules/fast-xml-parser/src/{v5 → v6}/inputSource/BufferSource.js +1 -3
  214. package/node_modules/fast-xml-parser/src/{v5 → v6}/inputSource/StringSource.js +1 -3
  215. package/node_modules/fast-xml-parser/src/{v5 → v6}/valueParsers/EntitiesParser.js +3 -5
  216. package/node_modules/fast-xml-parser/src/{v5 → v6}/valueParsers/booleanParser.js +1 -2
  217. package/node_modules/fast-xml-parser/src/{v5 → v6}/valueParsers/booleanParserExt.js +1 -2
  218. package/node_modules/fast-xml-parser/src/{v5 → v6}/valueParsers/currency.js +1 -3
  219. package/node_modules/fast-xml-parser/src/{v5 → v6}/valueParsers/join.js +1 -2
  220. package/node_modules/fast-xml-parser/src/{v5 → v6}/valueParsers/number.js +2 -4
  221. package/node_modules/fast-xml-parser/src/{v5 → v6}/valueParsers/trim.js +1 -3
  222. package/node_modules/fast-xml-parser/src/validator.js +5 -5
  223. package/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js +5 -4
  224. package/node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js +1 -2
  225. package/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js +287 -71
  226. package/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js +3 -5
  227. package/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js +23 -23
  228. package/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js +21 -8
  229. package/node_modules/fast-xml-parser/src/xmlparser/node2json.js +8 -2
  230. package/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js +22 -7
  231. package/node_modules/form-data/CHANGELOG.md +601 -0
  232. package/node_modules/form-data/{Readme.md → README.md} +34 -37
  233. package/node_modules/form-data/lib/browser.js +3 -1
  234. package/node_modules/form-data/lib/form_data.js +140 -147
  235. package/node_modules/form-data/lib/populate.js +5 -5
  236. package/node_modules/form-data/package.json +34 -23
  237. package/node_modules/function-bind/.eslintrc +21 -0
  238. package/node_modules/function-bind/.github/FUNDING.yml +12 -0
  239. package/node_modules/function-bind/.github/SECURITY.md +3 -0
  240. package/node_modules/function-bind/.nycrc +13 -0
  241. package/node_modules/function-bind/CHANGELOG.md +136 -0
  242. package/node_modules/function-bind/LICENSE +20 -0
  243. package/node_modules/function-bind/README.md +46 -0
  244. package/node_modules/function-bind/implementation.js +84 -0
  245. package/node_modules/function-bind/index.js +5 -0
  246. package/node_modules/function-bind/package.json +87 -0
  247. package/node_modules/function-bind/test/.eslintrc +9 -0
  248. package/node_modules/function-bind/test/index.js +252 -0
  249. package/node_modules/get-intrinsic/.eslintrc +42 -0
  250. package/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
  251. package/node_modules/get-intrinsic/.nycrc +9 -0
  252. package/node_modules/get-intrinsic/CHANGELOG.md +186 -0
  253. package/node_modules/get-intrinsic/LICENSE +21 -0
  254. package/node_modules/get-intrinsic/README.md +71 -0
  255. package/node_modules/get-intrinsic/index.js +378 -0
  256. package/node_modules/get-intrinsic/package.json +97 -0
  257. package/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
  258. package/node_modules/get-proto/.eslintrc +10 -0
  259. package/node_modules/get-proto/.github/FUNDING.yml +12 -0
  260. package/node_modules/get-proto/.nycrc +9 -0
  261. package/node_modules/get-proto/CHANGELOG.md +21 -0
  262. package/node_modules/get-proto/LICENSE +21 -0
  263. package/node_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
  264. package/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
  265. package/node_modules/get-proto/README.md +50 -0
  266. package/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
  267. package/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
  268. package/node_modules/get-proto/index.d.ts +5 -0
  269. package/node_modules/get-proto/index.js +27 -0
  270. package/node_modules/get-proto/package.json +81 -0
  271. package/node_modules/get-proto/test/index.js +68 -0
  272. package/node_modules/get-proto/tsconfig.json +9 -0
  273. package/node_modules/gopd/.eslintrc +16 -0
  274. package/node_modules/gopd/.github/FUNDING.yml +12 -0
  275. package/node_modules/gopd/CHANGELOG.md +45 -0
  276. package/node_modules/gopd/LICENSE +21 -0
  277. package/node_modules/gopd/README.md +40 -0
  278. package/node_modules/gopd/gOPD.d.ts +1 -0
  279. package/node_modules/gopd/gOPD.js +4 -0
  280. package/node_modules/gopd/index.d.ts +5 -0
  281. package/node_modules/gopd/index.js +15 -0
  282. package/node_modules/gopd/package.json +77 -0
  283. package/node_modules/gopd/test/index.js +36 -0
  284. package/node_modules/gopd/tsconfig.json +9 -0
  285. package/node_modules/has-symbols/.eslintrc +11 -0
  286. package/node_modules/has-symbols/.github/FUNDING.yml +12 -0
  287. package/node_modules/has-symbols/.nycrc +9 -0
  288. package/node_modules/has-symbols/CHANGELOG.md +91 -0
  289. package/node_modules/has-symbols/LICENSE +21 -0
  290. package/node_modules/has-symbols/README.md +46 -0
  291. package/node_modules/has-symbols/index.d.ts +3 -0
  292. package/node_modules/has-symbols/index.js +14 -0
  293. package/node_modules/has-symbols/package.json +111 -0
  294. package/node_modules/has-symbols/shams.d.ts +3 -0
  295. package/node_modules/has-symbols/shams.js +45 -0
  296. package/node_modules/has-symbols/test/index.js +22 -0
  297. package/node_modules/has-symbols/test/shams/core-js.js +29 -0
  298. package/node_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
  299. package/node_modules/has-symbols/test/tests.js +58 -0
  300. package/node_modules/has-symbols/tsconfig.json +10 -0
  301. package/node_modules/has-tostringtag/.eslintrc +5 -0
  302. package/node_modules/has-tostringtag/.github/FUNDING.yml +12 -0
  303. package/node_modules/has-tostringtag/.nycrc +13 -0
  304. package/node_modules/has-tostringtag/CHANGELOG.md +42 -0
  305. package/node_modules/has-tostringtag/LICENSE +21 -0
  306. package/node_modules/has-tostringtag/README.md +46 -0
  307. package/node_modules/has-tostringtag/index.d.ts +3 -0
  308. package/node_modules/has-tostringtag/index.js +8 -0
  309. package/node_modules/has-tostringtag/package.json +108 -0
  310. package/node_modules/has-tostringtag/shams.d.ts +3 -0
  311. package/node_modules/has-tostringtag/shams.js +8 -0
  312. package/node_modules/has-tostringtag/test/index.js +21 -0
  313. package/node_modules/has-tostringtag/test/shams/core-js.js +31 -0
  314. package/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js +30 -0
  315. package/node_modules/has-tostringtag/test/tests.js +15 -0
  316. package/node_modules/has-tostringtag/tsconfig.json +49 -0
  317. package/node_modules/hasown/.eslintrc +5 -0
  318. package/node_modules/hasown/.github/FUNDING.yml +12 -0
  319. package/node_modules/hasown/.nycrc +13 -0
  320. package/node_modules/hasown/CHANGELOG.md +40 -0
  321. package/node_modules/hasown/LICENSE +21 -0
  322. package/node_modules/hasown/README.md +40 -0
  323. package/node_modules/hasown/index.d.ts +3 -0
  324. package/node_modules/hasown/index.js +8 -0
  325. package/node_modules/hasown/package.json +92 -0
  326. package/node_modules/hasown/tsconfig.json +6 -0
  327. package/node_modules/long/README.md +93 -87
  328. package/node_modules/long/index.d.ts +2 -2
  329. package/node_modules/long/index.js +360 -246
  330. package/node_modules/long/package.json +12 -4
  331. package/node_modules/long/types.d.ts +474 -0
  332. package/node_modules/long/umd/index.d.ts +2 -456
  333. package/node_modules/long/umd/index.js +1585 -1395
  334. package/node_modules/long/umd/types.d.ts +474 -0
  335. package/node_modules/math-intrinsics/.eslintrc +16 -0
  336. package/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
  337. package/node_modules/math-intrinsics/CHANGELOG.md +24 -0
  338. package/node_modules/math-intrinsics/LICENSE +21 -0
  339. package/node_modules/math-intrinsics/README.md +50 -0
  340. package/node_modules/math-intrinsics/abs.d.ts +1 -0
  341. package/node_modules/math-intrinsics/abs.js +4 -0
  342. package/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
  343. package/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
  344. package/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
  345. package/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
  346. package/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
  347. package/node_modules/math-intrinsics/constants/maxValue.js +5 -0
  348. package/node_modules/math-intrinsics/floor.d.ts +1 -0
  349. package/node_modules/math-intrinsics/floor.js +4 -0
  350. package/node_modules/math-intrinsics/isFinite.d.ts +3 -0
  351. package/node_modules/math-intrinsics/isFinite.js +12 -0
  352. package/node_modules/math-intrinsics/isInteger.d.ts +3 -0
  353. package/node_modules/math-intrinsics/isInteger.js +16 -0
  354. package/node_modules/math-intrinsics/isNaN.d.ts +1 -0
  355. package/node_modules/math-intrinsics/isNaN.js +6 -0
  356. package/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
  357. package/node_modules/math-intrinsics/isNegativeZero.js +6 -0
  358. package/node_modules/math-intrinsics/max.d.ts +1 -0
  359. package/node_modules/math-intrinsics/max.js +4 -0
  360. package/node_modules/math-intrinsics/min.d.ts +1 -0
  361. package/node_modules/math-intrinsics/min.js +4 -0
  362. package/node_modules/math-intrinsics/mod.d.ts +3 -0
  363. package/node_modules/math-intrinsics/mod.js +9 -0
  364. package/node_modules/math-intrinsics/package.json +86 -0
  365. package/node_modules/math-intrinsics/pow.d.ts +1 -0
  366. package/node_modules/math-intrinsics/pow.js +4 -0
  367. package/node_modules/math-intrinsics/round.d.ts +1 -0
  368. package/node_modules/math-intrinsics/round.js +4 -0
  369. package/node_modules/math-intrinsics/sign.d.ts +3 -0
  370. package/node_modules/math-intrinsics/sign.js +11 -0
  371. package/node_modules/math-intrinsics/test/index.js +192 -0
  372. package/node_modules/math-intrinsics/tsconfig.json +3 -0
  373. package/node_modules/protobufjs/dist/light/protobuf.js +532 -80
  374. package/node_modules/protobufjs/dist/light/protobuf.js.map +1 -1
  375. package/node_modules/protobufjs/dist/light/protobuf.min.js +3 -3
  376. package/node_modules/protobufjs/dist/light/protobuf.min.js.map +1 -1
  377. package/node_modules/protobufjs/dist/minimal/protobuf.js +2 -2
  378. package/node_modules/protobufjs/dist/minimal/protobuf.min.js +2 -2
  379. package/node_modules/protobufjs/dist/protobuf.js +672 -144
  380. package/node_modules/protobufjs/dist/protobuf.js.map +1 -1
  381. package/node_modules/protobufjs/dist/protobuf.min.js +3 -3
  382. package/node_modules/protobufjs/dist/protobuf.min.js.map +1 -1
  383. package/node_modules/protobufjs/ext/descriptor/index.js +179 -69
  384. package/node_modules/protobufjs/google/protobuf/descriptor.json +659 -16
  385. package/node_modules/protobufjs/google/protobuf/descriptor.proto +254 -6
  386. package/node_modules/protobufjs/index.d.ts +71 -13
  387. package/node_modules/protobufjs/package.json +4 -2
  388. package/node_modules/protobufjs/src/decoder.js +8 -10
  389. package/node_modules/protobufjs/src/encoder.js +1 -1
  390. package/node_modules/protobufjs/src/enum.js +25 -0
  391. package/node_modules/protobufjs/src/field.js +104 -28
  392. package/node_modules/protobufjs/src/namespace.js +126 -13
  393. package/node_modules/protobufjs/src/object.js +139 -4
  394. package/node_modules/protobufjs/src/oneof.js +19 -0
  395. package/node_modules/protobufjs/src/parse.js +139 -63
  396. package/node_modules/protobufjs/src/root.js +51 -15
  397. package/node_modules/protobufjs/src/service.js +23 -1
  398. package/node_modules/protobufjs/src/type.js +29 -4
  399. package/node_modules/protobufjs/src/util.js +4 -1
  400. package/node_modules/strnum/.github/SECURITY.md +5 -0
  401. package/node_modules/strnum/CHANGELOG.md +33 -0
  402. package/node_modules/strnum/README.md +14 -3
  403. package/node_modules/strnum/algo.stflow +84 -0
  404. package/node_modules/strnum/package.json +9 -2
  405. package/node_modules/strnum/strnum.js +72 -67
  406. package/node_modules/strnum/strnum.test.js +29 -6
  407. package/node_modules/strnum/test.js +9 -0
  408. package/node_modules/undici-types/dispatcher.d.ts +1 -0
  409. package/node_modules/undici-types/package.json +1 -1
  410. package/node_modules/undici-types/readable.d.ts +5 -0
  411. package/node_modules/undici-types/webidl.d.ts +6 -0
  412. package/node_modules/uuid/README.md +12 -12
  413. package/node_modules/uuid/dist/cjs/types.d.ts +1 -1
  414. package/node_modules/uuid/dist/cjs/v1.d.ts +1 -1
  415. package/node_modules/uuid/dist/cjs/v1.js +1 -1
  416. package/node_modules/uuid/dist/cjs/v3.d.ts +1 -1
  417. package/node_modules/uuid/dist/cjs/v35.d.ts +1 -1
  418. package/node_modules/uuid/dist/cjs/v4.d.ts +1 -1
  419. package/node_modules/uuid/dist/cjs/v5.d.ts +1 -1
  420. package/node_modules/uuid/dist/cjs/v6.d.ts +1 -1
  421. package/node_modules/uuid/dist/cjs/v7.d.ts +1 -1
  422. package/node_modules/uuid/dist/cjs/v7.js +1 -1
  423. package/node_modules/uuid/dist/cjs-browser/types.d.ts +1 -1
  424. package/node_modules/uuid/dist/cjs-browser/v1.d.ts +1 -1
  425. package/node_modules/uuid/dist/cjs-browser/v1.js +1 -1
  426. package/node_modules/uuid/dist/cjs-browser/v3.d.ts +1 -1
  427. package/node_modules/uuid/dist/cjs-browser/v35.d.ts +1 -1
  428. package/node_modules/uuid/dist/cjs-browser/v4.d.ts +1 -1
  429. package/node_modules/uuid/dist/cjs-browser/v5.d.ts +1 -1
  430. package/node_modules/uuid/dist/cjs-browser/v6.d.ts +1 -1
  431. package/node_modules/uuid/dist/cjs-browser/v7.d.ts +1 -1
  432. package/node_modules/uuid/dist/cjs-browser/v7.js +1 -1
  433. package/node_modules/uuid/dist/esm/types.d.ts +1 -1
  434. package/node_modules/uuid/dist/esm/v1.d.ts +1 -1
  435. package/node_modules/uuid/dist/esm/v1.js +1 -1
  436. package/node_modules/uuid/dist/esm/v3.d.ts +1 -1
  437. package/node_modules/uuid/dist/esm/v35.d.ts +1 -1
  438. package/node_modules/uuid/dist/esm/v4.d.ts +1 -1
  439. package/node_modules/uuid/dist/esm/v5.d.ts +1 -1
  440. package/node_modules/uuid/dist/esm/v6.d.ts +1 -1
  441. package/node_modules/uuid/dist/esm/v7.d.ts +1 -1
  442. package/node_modules/uuid/dist/esm/v7.js +1 -1
  443. package/node_modules/uuid/dist/esm-browser/types.d.ts +1 -1
  444. package/node_modules/uuid/dist/esm-browser/v1.d.ts +1 -1
  445. package/node_modules/uuid/dist/esm-browser/v1.js +1 -1
  446. package/node_modules/uuid/dist/esm-browser/v3.d.ts +1 -1
  447. package/node_modules/uuid/dist/esm-browser/v35.d.ts +1 -1
  448. package/node_modules/uuid/dist/esm-browser/v4.d.ts +1 -1
  449. package/node_modules/uuid/dist/esm-browser/v5.d.ts +1 -1
  450. package/node_modules/uuid/dist/esm-browser/v6.d.ts +1 -1
  451. package/node_modules/uuid/dist/esm-browser/v7.d.ts +1 -1
  452. package/node_modules/uuid/dist/esm-browser/v7.js +1 -1
  453. package/node_modules/uuid/package.json +1 -1
  454. package/package.json +7 -7
  455. package/tak-registration.html +4 -4
  456. package/tak-registration.js +19 -10
  457. package/node_modules/axios/SECURITY.md +0 -6
  458. /package/node_modules/fast-xml-parser/src/{v5 → v6}/Report.js +0 -0
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * protobuf.js v7.4.0 (c) 2016, daniel wirtz
3
- * compiled thu, 22 aug 2024 20:30:39 utc
2
+ * protobuf.js v7.5.3 (c) 2016, daniel wirtz
3
+ * compiled wed, 28 may 2025 22:23:47 utc
4
4
  * licensed under the bsd-3-clause license
5
5
  * see: https://github.com/dcodeio/protobuf.js for details
6
6
  */
@@ -1430,16 +1430,14 @@ function missing(field) {
1430
1430
  */
1431
1431
  function decoder(mtype) {
1432
1432
  /* eslint-disable no-unexpected-multiline */
1433
- var gen = util.codegen(["r", "l"], mtype.name + "$decode")
1433
+ var gen = util.codegen(["r", "l", "e"], mtype.name + "$decode")
1434
1434
  ("if(!(r instanceof Reader))")
1435
1435
  ("r=Reader.create(r)")
1436
1436
  ("var c=l===undefined?r.len:r.pos+l,m=new this.ctor" + (mtype.fieldsArray.filter(function(field) { return field.map; }).length ? ",k,value" : ""))
1437
1437
  ("while(r.pos<c){")
1438
- ("var t=r.uint32()");
1439
- if (mtype.group) gen
1440
- ("if((t&7)===4)")
1441
- ("break");
1442
- gen
1438
+ ("var t=r.uint32()")
1439
+ ("if(t===e)")
1440
+ ("break")
1443
1441
  ("switch(t>>>3){");
1444
1442
 
1445
1443
  var i = 0;
@@ -1505,15 +1503,15 @@ function decoder(mtype) {
1505
1503
  ("}else");
1506
1504
 
1507
1505
  // Non-packed
1508
- if (types.basic[type] === undefined) gen(field.resolvedType.group
1509
- ? "%s.push(types[%i].decode(r))"
1506
+ if (types.basic[type] === undefined) gen(field.delimited
1507
+ ? "%s.push(types[%i].decode(r,undefined,((t&~7)|4)))"
1510
1508
  : "%s.push(types[%i].decode(r,r.uint32()))", ref, i);
1511
1509
  else gen
1512
1510
  ("%s.push(r.%s())", ref, type);
1513
1511
 
1514
1512
  // Non-repeated
1515
- } else if (types.basic[type] === undefined) gen(field.resolvedType.group
1516
- ? "%s=types[%i].decode(r)"
1513
+ } else if (types.basic[type] === undefined) gen(field.delimited
1514
+ ? "%s=types[%i].decode(r,undefined,((t&~7)|4))"
1517
1515
  : "%s=types[%i].decode(r,r.uint32())", ref, i);
1518
1516
  else gen
1519
1517
  ("%s=r.%s()", ref, type);
@@ -1560,7 +1558,7 @@ var Enum = require(14),
1560
1558
  * @ignore
1561
1559
  */
1562
1560
  function genTypePartial(gen, field, fieldIndex, ref) {
1563
- return field.resolvedType.group
1561
+ return field.delimited
1564
1562
  ? gen("types[%i].encode(%s,w.uint32(%i)).uint32(%i)", fieldIndex, ref, (field.id << 3 | 3) >>> 0, (field.id << 3 | 4) >>> 0)
1565
1563
  : gen("types[%i].encode(%s,w.uint32(%i).fork()).ldelim()", fieldIndex, ref, (field.id << 3 | 2) >>> 0);
1566
1564
  }
@@ -1703,6 +1701,12 @@ function Enum(name, values, options, comment, comments, valuesOptions) {
1703
1701
  */
1704
1702
  this.valuesOptions = valuesOptions;
1705
1703
 
1704
+ /**
1705
+ * Resolved values features, if any
1706
+ * @type {Object<string, Object<string, *>>|undefined}
1707
+ */
1708
+ this._valuesFeatures = {};
1709
+
1706
1710
  /**
1707
1711
  * Reserved ranges, if any.
1708
1712
  * @type {Array.<number[]|string>}
@@ -1719,6 +1723,21 @@ function Enum(name, values, options, comment, comments, valuesOptions) {
1719
1723
  this.valuesById[ this.values[keys[i]] = values[keys[i]] ] = keys[i];
1720
1724
  }
1721
1725
 
1726
+ /**
1727
+ * @override
1728
+ */
1729
+ Enum.prototype._resolveFeatures = function _resolveFeatures(edition) {
1730
+ edition = this._edition || edition;
1731
+ ReflectionObject.prototype._resolveFeatures.call(this, edition);
1732
+
1733
+ Object.keys(this.values).forEach(key => {
1734
+ var parentFeaturesCopy = Object.assign({}, this._features);
1735
+ this._valuesFeatures[key] = Object.assign(parentFeaturesCopy, this.valuesOptions && this.valuesOptions[key] && this.valuesOptions[key].features);
1736
+ });
1737
+
1738
+ return this;
1739
+ };
1740
+
1722
1741
  /**
1723
1742
  * Enum descriptor.
1724
1743
  * @interface IEnum
@@ -1736,6 +1755,9 @@ function Enum(name, values, options, comment, comments, valuesOptions) {
1736
1755
  Enum.fromJSON = function fromJSON(name, json) {
1737
1756
  var enm = new Enum(name, json.values, json.options, json.comment, json.comments);
1738
1757
  enm.reserved = json.reserved;
1758
+ if (json.edition)
1759
+ enm._edition = json.edition;
1760
+ enm._defaultEdition = "proto3"; // For backwards-compatibility.
1739
1761
  return enm;
1740
1762
  };
1741
1763
 
@@ -1747,6 +1769,7 @@ Enum.fromJSON = function fromJSON(name, json) {
1747
1769
  Enum.prototype.toJSON = function toJSON(toJSONOptions) {
1748
1770
  var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;
1749
1771
  return util.toObject([
1772
+ "edition" , this._editionToJSON(),
1750
1773
  "options" , this.options,
1751
1774
  "valuesOptions" , this.valuesOptions,
1752
1775
  "values" , this.values,
@@ -1882,7 +1905,11 @@ var ruleRe = /^required|optional|repeated$/;
1882
1905
  * @throws {TypeError} If arguments are invalid
1883
1906
  */
1884
1907
  Field.fromJSON = function fromJSON(name, json) {
1885
- return new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment);
1908
+ var field = new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment);
1909
+ if (json.edition)
1910
+ field._edition = json.edition;
1911
+ field._defaultEdition = "proto3"; // For backwards-compatibility.
1912
+ return field;
1886
1913
  };
1887
1914
 
1888
1915
  /**
@@ -1952,18 +1979,6 @@ function Field(name, id, type, rule, extend, options, comment) {
1952
1979
  */
1953
1980
  this.extend = extend || undefined; // toJSON
1954
1981
 
1955
- /**
1956
- * Whether this field is required.
1957
- * @type {boolean}
1958
- */
1959
- this.required = rule === "required";
1960
-
1961
- /**
1962
- * Whether this field is optional.
1963
- * @type {boolean}
1964
- */
1965
- this.optional = !this.required;
1966
-
1967
1982
  /**
1968
1983
  * Whether this field is repeated.
1969
1984
  * @type {boolean}
@@ -2030,13 +2045,6 @@ function Field(name, id, type, rule, extend, options, comment) {
2030
2045
  */
2031
2046
  this.declaringField = null;
2032
2047
 
2033
- /**
2034
- * Internally remembers whether this field is packed.
2035
- * @type {boolean|null}
2036
- * @private
2037
- */
2038
- this._packed = null;
2039
-
2040
2048
  /**
2041
2049
  * Comment for this field.
2042
2050
  * @type {string|null}
@@ -2045,17 +2053,69 @@ function Field(name, id, type, rule, extend, options, comment) {
2045
2053
  }
2046
2054
 
2047
2055
  /**
2048
- * Determines whether this field is packed. Only relevant when repeated and working with proto2.
2056
+ * Determines whether this field is required.
2057
+ * @name Field#required
2058
+ * @type {boolean}
2059
+ * @readonly
2060
+ */
2061
+ Object.defineProperty(Field.prototype, "required", {
2062
+ get: function() {
2063
+ return this._features.field_presence === "LEGACY_REQUIRED";
2064
+ }
2065
+ });
2066
+
2067
+ /**
2068
+ * Determines whether this field is not required.
2069
+ * @name Field#optional
2070
+ * @type {boolean}
2071
+ * @readonly
2072
+ */
2073
+ Object.defineProperty(Field.prototype, "optional", {
2074
+ get: function() {
2075
+ return !this.required;
2076
+ }
2077
+ });
2078
+
2079
+ /**
2080
+ * Determines whether this field uses tag-delimited encoding. In proto2 this
2081
+ * corresponded to group syntax.
2082
+ * @name Field#delimited
2083
+ * @type {boolean}
2084
+ * @readonly
2085
+ */
2086
+ Object.defineProperty(Field.prototype, "delimited", {
2087
+ get: function() {
2088
+ return this.resolvedType instanceof Type &&
2089
+ this._features.message_encoding === "DELIMITED";
2090
+ }
2091
+ });
2092
+
2093
+ /**
2094
+ * Determines whether this field is packed. Only relevant when repeated.
2049
2095
  * @name Field#packed
2050
2096
  * @type {boolean}
2051
2097
  * @readonly
2052
2098
  */
2053
2099
  Object.defineProperty(Field.prototype, "packed", {
2054
2100
  get: function() {
2055
- // defaults to packed=true if not explicity set to false
2056
- if (this._packed === null)
2057
- this._packed = this.getOption("packed") !== false;
2058
- return this._packed;
2101
+ return this._features.repeated_field_encoding === "PACKED";
2102
+ }
2103
+ });
2104
+
2105
+ /**
2106
+ * Determines whether this field tracks presence.
2107
+ * @name Field#hasPresence
2108
+ * @type {boolean}
2109
+ * @readonly
2110
+ */
2111
+ Object.defineProperty(Field.prototype, "hasPresence", {
2112
+ get: function() {
2113
+ if (this.repeated || this.map) {
2114
+ return false;
2115
+ }
2116
+ return this.partOf || // oneofs
2117
+ this.declaringField || this.extensionField || // extensions
2118
+ this._features.field_presence !== "IMPLICIT";
2059
2119
  }
2060
2120
  });
2061
2121
 
@@ -2063,8 +2123,6 @@ Object.defineProperty(Field.prototype, "packed", {
2063
2123
  * @override
2064
2124
  */
2065
2125
  Field.prototype.setOption = function setOption(name, value, ifNotSet) {
2066
- if (name === "packed") // clear cached before setting
2067
- this._packed = null;
2068
2126
  return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);
2069
2127
  };
2070
2128
 
@@ -2092,6 +2150,7 @@ Field.prototype.setOption = function setOption(name, value, ifNotSet) {
2092
2150
  Field.prototype.toJSON = function toJSON(toJSONOptions) {
2093
2151
  var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;
2094
2152
  return util.toObject([
2153
+ "edition" , this._editionToJSON(),
2095
2154
  "rule" , this.rule !== "optional" && this.rule || undefined,
2096
2155
  "type" , this.type,
2097
2156
  "id" , this.id,
@@ -2131,7 +2190,7 @@ Field.prototype.resolve = function resolve() {
2131
2190
 
2132
2191
  // remove unnecessary options
2133
2192
  if (this.options) {
2134
- if (this.options.packed === true || this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum))
2193
+ if (this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum))
2135
2194
  delete this.options.packed;
2136
2195
  if (!Object.keys(this.options).length)
2137
2196
  this.options = undefined;
@@ -2169,6 +2228,46 @@ Field.prototype.resolve = function resolve() {
2169
2228
  return ReflectionObject.prototype.resolve.call(this);
2170
2229
  };
2171
2230
 
2231
+ /**
2232
+ * Infers field features from legacy syntax that may have been specified differently.
2233
+ * in older editions.
2234
+ * @param {string|undefined} edition The edition this proto is on, or undefined if pre-editions
2235
+ * @returns {object} The feature values to override
2236
+ */
2237
+ Field.prototype._inferLegacyProtoFeatures = function _inferLegacyProtoFeatures(edition) {
2238
+ if (edition !== "proto2" && edition !== "proto3") {
2239
+ return {};
2240
+ }
2241
+
2242
+ var features = {};
2243
+
2244
+ if (this.rule === "required") {
2245
+ features.field_presence = "LEGACY_REQUIRED";
2246
+ }
2247
+ if (this.parent && types.defaults[this.type] === undefined) {
2248
+ // We can't use resolvedType because types may not have been resolved yet. However,
2249
+ // legacy groups are always in the same scope as the field so we don't have to do a
2250
+ // full scan of the tree.
2251
+ var type = this.parent.get(this.type.split(".").pop());
2252
+ if (type && type instanceof Type && type.group) {
2253
+ features.message_encoding = "DELIMITED";
2254
+ }
2255
+ }
2256
+ if (this.getOption("packed") === true) {
2257
+ features.repeated_field_encoding = "PACKED";
2258
+ } else if (this.getOption("packed") === false) {
2259
+ features.repeated_field_encoding = "EXPANDED";
2260
+ }
2261
+ return features;
2262
+ };
2263
+
2264
+ /**
2265
+ * @override
2266
+ */
2267
+ Field.prototype._resolveFeatures = function _resolveFeatures(edition) {
2268
+ return ReflectionObject.prototype._resolveFeatures.call(this, this._edition || edition);
2269
+ };
2270
+
2172
2271
  /**
2173
2272
  * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript).
2174
2273
  * @typedef FieldDecorator
@@ -2908,10 +3007,40 @@ function Namespace(name, options) {
2908
3007
  * @private
2909
3008
  */
2910
3009
  this._nestedArray = null;
3010
+
3011
+ /**
3012
+ * Cache lookup calls for any objects contains anywhere under this namespace.
3013
+ * This drastically speeds up resolve for large cross-linked protos where the same
3014
+ * types are looked up repeatedly.
3015
+ * @type {Object.<string,ReflectionObject|null>}
3016
+ * @private
3017
+ */
3018
+ this._lookupCache = {};
3019
+
3020
+ /**
3021
+ * Whether or not objects contained in this namespace need feature resolution.
3022
+ * @type {boolean}
3023
+ * @protected
3024
+ */
3025
+ this._needsRecursiveFeatureResolution = true;
3026
+
3027
+ /**
3028
+ * Whether or not objects contained in this namespace need a resolve.
3029
+ * @type {boolean}
3030
+ * @protected
3031
+ */
3032
+ this._needsRecursiveResolve = true;
2911
3033
  }
2912
3034
 
2913
3035
  function clearCache(namespace) {
2914
3036
  namespace._nestedArray = null;
3037
+ namespace._lookupCache = {};
3038
+
3039
+ // Also clear parent caches, since they include nested lookups.
3040
+ var parent = namespace;
3041
+ while(parent = parent.parent) {
3042
+ parent._lookupCache = {};
3043
+ }
2915
3044
  return namespace;
2916
3045
  }
2917
3046
 
@@ -3040,6 +3169,25 @@ Namespace.prototype.add = function add(object) {
3040
3169
  }
3041
3170
  }
3042
3171
  this.nested[object.name] = object;
3172
+
3173
+ if (!(this instanceof Type || this instanceof Service || this instanceof Enum || this instanceof Field)) {
3174
+ // This is a package or a root namespace.
3175
+ if (!object._edition) {
3176
+ // Make sure that some edition is set if it hasn't already been specified.
3177
+ object._edition = object._defaultEdition;
3178
+ }
3179
+ }
3180
+
3181
+ this._needsRecursiveFeatureResolution = true;
3182
+ this._needsRecursiveResolve = true;
3183
+
3184
+ // Also clear parent caches, since they need to recurse down.
3185
+ var parent = this;
3186
+ while(parent = parent.parent) {
3187
+ parent._needsRecursiveFeatureResolution = true;
3188
+ parent._needsRecursiveResolve = true;
3189
+ }
3190
+
3043
3191
  object.onAdd(this);
3044
3192
  return clearCache(this);
3045
3193
  };
@@ -3101,13 +3249,35 @@ Namespace.prototype.define = function define(path, json) {
3101
3249
  * @returns {Namespace} `this`
3102
3250
  */
3103
3251
  Namespace.prototype.resolveAll = function resolveAll() {
3252
+ if (!this._needsRecursiveResolve) return this;
3253
+
3254
+ this._resolveFeaturesRecursive(this._edition);
3255
+
3104
3256
  var nested = this.nestedArray, i = 0;
3257
+ this.resolve();
3105
3258
  while (i < nested.length)
3106
3259
  if (nested[i] instanceof Namespace)
3107
3260
  nested[i++].resolveAll();
3108
3261
  else
3109
3262
  nested[i++].resolve();
3110
- return this.resolve();
3263
+ this._needsRecursiveResolve = false;
3264
+ return this;
3265
+ };
3266
+
3267
+ /**
3268
+ * @override
3269
+ */
3270
+ Namespace.prototype._resolveFeaturesRecursive = function _resolveFeaturesRecursive(edition) {
3271
+ if (!this._needsRecursiveFeatureResolution) return this;
3272
+ this._needsRecursiveFeatureResolution = false;
3273
+
3274
+ edition = this._edition || edition;
3275
+
3276
+ ReflectionObject.prototype._resolveFeaturesRecursive.call(this, edition);
3277
+ this.nestedArray.forEach(nested => {
3278
+ nested._resolveFeaturesRecursive(edition);
3279
+ });
3280
+ return this;
3111
3281
  };
3112
3282
 
3113
3283
  /**
@@ -3118,7 +3288,6 @@ Namespace.prototype.resolveAll = function resolveAll() {
3118
3288
  * @returns {ReflectionObject|null} Looked up object or `null` if none could be found
3119
3289
  */
3120
3290
  Namespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChecked) {
3121
-
3122
3291
  /* istanbul ignore next */
3123
3292
  if (typeof filterTypes === "boolean") {
3124
3293
  parentAlreadyChecked = filterTypes;
@@ -3133,29 +3302,72 @@ Namespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChe
3133
3302
  } else if (!path.length)
3134
3303
  return this;
3135
3304
 
3305
+ var flatPath = path.join(".");
3306
+
3136
3307
  // Start at root if path is absolute
3137
3308
  if (path[0] === "")
3138
3309
  return this.root.lookup(path.slice(1), filterTypes);
3139
3310
 
3311
+ // Early bailout for objects with matching absolute paths
3312
+ var found = this.root._fullyQualifiedObjects && this.root._fullyQualifiedObjects["." + flatPath];
3313
+ if (found && (!filterTypes || filterTypes.indexOf(found.constructor) > -1)) {
3314
+ return found;
3315
+ }
3316
+
3317
+ // Do a regular lookup at this namespace and below
3318
+ found = this._lookupImpl(path, flatPath);
3319
+ if (found && (!filterTypes || filterTypes.indexOf(found.constructor) > -1)) {
3320
+ return found;
3321
+ }
3322
+
3323
+ if (parentAlreadyChecked)
3324
+ return null;
3325
+
3326
+ // If there hasn't been a match, walk up the tree and look more broadly
3327
+ var current = this;
3328
+ while (current.parent) {
3329
+ found = current.parent._lookupImpl(path, flatPath);
3330
+ if (found && (!filterTypes || filterTypes.indexOf(found.constructor) > -1)) {
3331
+ return found;
3332
+ }
3333
+ current = current.parent;
3334
+ }
3335
+ return null;
3336
+ };
3337
+
3338
+ /**
3339
+ * Internal helper for lookup that handles searching just at this namespace and below along with caching.
3340
+ * @param {string[]} path Path to look up
3341
+ * @param {string} flatPath Flattened version of the path to use as a cache key
3342
+ * @returns {ReflectionObject|null} Looked up object or `null` if none could be found
3343
+ * @private
3344
+ */
3345
+ Namespace.prototype._lookupImpl = function lookup(path, flatPath) {
3346
+ if(Object.prototype.hasOwnProperty.call(this._lookupCache, flatPath)) {
3347
+ return this._lookupCache[flatPath];
3348
+ }
3349
+
3140
3350
  // Test if the first part matches any nested object, and if so, traverse if path contains more
3141
3351
  var found = this.get(path[0]);
3352
+ var exact = null;
3142
3353
  if (found) {
3143
3354
  if (path.length === 1) {
3144
- if (!filterTypes || filterTypes.indexOf(found.constructor) > -1)
3145
- return found;
3146
- } else if (found instanceof Namespace && (found = found.lookup(path.slice(1), filterTypes, true)))
3147
- return found;
3355
+ exact = found;
3356
+ } else if (found instanceof Namespace) {
3357
+ path = path.slice(1);
3358
+ exact = found._lookupImpl(path, path.join("."));
3359
+ }
3148
3360
 
3149
3361
  // Otherwise try each nested namespace
3150
- } else
3362
+ } else {
3151
3363
  for (var i = 0; i < this.nestedArray.length; ++i)
3152
- if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i].lookup(path, filterTypes, true)))
3153
- return found;
3364
+ if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i]._lookupImpl(path, flatPath)))
3365
+ exact = found;
3366
+ }
3154
3367
 
3155
- // If there hasn't been a match, try again at the parent
3156
- if (this.parent === null || parentAlreadyChecked)
3157
- return null;
3158
- return this.parent.lookup(path, filterTypes);
3368
+ // Set this even when null, so that when we walk up the tree we can quickly bail on repeated checks back down.
3369
+ this._lookupCache[flatPath] = exact;
3370
+ return exact;
3159
3371
  };
3160
3372
 
3161
3373
  /**
@@ -3238,10 +3450,17 @@ module.exports = ReflectionObject;
3238
3450
 
3239
3451
  ReflectionObject.className = "ReflectionObject";
3240
3452
 
3453
+ const OneOf = require(23);
3241
3454
  var util = require(33);
3242
3455
 
3243
3456
  var Root; // cyclic
3244
3457
 
3458
+ /* eslint-disable no-warning-comments */
3459
+ // TODO: Replace with embedded proto.
3460
+ var editions2023Defaults = {enum_type: "OPEN", field_presence: "EXPLICIT", json_format: "ALLOW", message_encoding: "LENGTH_PREFIXED", repeated_field_encoding: "PACKED", utf8_validation: "VERIFY"};
3461
+ var proto2Defaults = {enum_type: "CLOSED", field_presence: "EXPLICIT", json_format: "LEGACY_BEST_EFFORT", message_encoding: "LENGTH_PREFIXED", repeated_field_encoding: "EXPANDED", utf8_validation: "NONE"};
3462
+ var proto3Defaults = {enum_type: "OPEN", field_presence: "IMPLICIT", json_format: "ALLOW", message_encoding: "LENGTH_PREFIXED", repeated_field_encoding: "PACKED", utf8_validation: "VERIFY"};
3463
+
3245
3464
  /**
3246
3465
  * Constructs a new reflection object instance.
3247
3466
  * @classdesc Base class of all reflection objects.
@@ -3276,6 +3495,35 @@ function ReflectionObject(name, options) {
3276
3495
  */
3277
3496
  this.name = name;
3278
3497
 
3498
+ /**
3499
+ * The edition specified for this object. Only relevant for top-level objects.
3500
+ * @type {string}
3501
+ * @private
3502
+ */
3503
+ this._edition = null;
3504
+
3505
+ /**
3506
+ * The default edition to use for this object if none is specified. For legacy reasons,
3507
+ * this is proto2 except in the JSON parsing case where it was proto3.
3508
+ * @type {string}
3509
+ * @private
3510
+ */
3511
+ this._defaultEdition = "proto2";
3512
+
3513
+ /**
3514
+ * Resolved Features.
3515
+ * @type {object}
3516
+ * @private
3517
+ */
3518
+ this._features = {};
3519
+
3520
+ /**
3521
+ * Whether or not features have been resolved.
3522
+ * @type {boolean}
3523
+ * @private
3524
+ */
3525
+ this._featuresResolved = false;
3526
+
3279
3527
  /**
3280
3528
  * Parent namespace.
3281
3529
  * @type {Namespace|null}
@@ -3386,6 +3634,83 @@ ReflectionObject.prototype.resolve = function resolve() {
3386
3634
  return this;
3387
3635
  };
3388
3636
 
3637
+ /**
3638
+ * Resolves this objects editions features.
3639
+ * @param {string} edition The edition we're currently resolving for.
3640
+ * @returns {ReflectionObject} `this`
3641
+ */
3642
+ ReflectionObject.prototype._resolveFeaturesRecursive = function _resolveFeaturesRecursive(edition) {
3643
+ return this._resolveFeatures(this._edition || edition);
3644
+ };
3645
+
3646
+ /**
3647
+ * Resolves child features from parent features
3648
+ * @param {string} edition The edition we're currently resolving for.
3649
+ * @returns {undefined}
3650
+ */
3651
+ ReflectionObject.prototype._resolveFeatures = function _resolveFeatures(edition) {
3652
+ if (this._featuresResolved) {
3653
+ return;
3654
+ }
3655
+
3656
+ var defaults = {};
3657
+
3658
+ /* istanbul ignore if */
3659
+ if (!edition) {
3660
+ throw new Error("Unknown edition for " + this.fullName);
3661
+ }
3662
+
3663
+ var protoFeatures = Object.assign(this.options ? Object.assign({}, this.options.features) : {},
3664
+ this._inferLegacyProtoFeatures(edition));
3665
+
3666
+ if (this._edition) {
3667
+ // For a namespace marked with a specific edition, reset defaults.
3668
+ /* istanbul ignore else */
3669
+ if (edition === "proto2") {
3670
+ defaults = Object.assign({}, proto2Defaults);
3671
+ } else if (edition === "proto3") {
3672
+ defaults = Object.assign({}, proto3Defaults);
3673
+ } else if (edition === "2023") {
3674
+ defaults = Object.assign({}, editions2023Defaults);
3675
+ } else {
3676
+ throw new Error("Unknown edition: " + edition);
3677
+ }
3678
+ this._features = Object.assign(defaults, protoFeatures || {});
3679
+ this._featuresResolved = true;
3680
+ return;
3681
+ }
3682
+
3683
+ // fields in Oneofs aren't actually children of them, so we have to
3684
+ // special-case it
3685
+ /* istanbul ignore else */
3686
+ if (this.partOf instanceof OneOf) {
3687
+ var lexicalParentFeaturesCopy = Object.assign({}, this.partOf._features);
3688
+ this._features = Object.assign(lexicalParentFeaturesCopy, protoFeatures || {});
3689
+ } else if (this.declaringField) {
3690
+ // Skip feature resolution of sister fields.
3691
+ } else if (this.parent) {
3692
+ var parentFeaturesCopy = Object.assign({}, this.parent._features);
3693
+ this._features = Object.assign(parentFeaturesCopy, protoFeatures || {});
3694
+ } else {
3695
+ throw new Error("Unable to find a parent for " + this.fullName);
3696
+ }
3697
+ if (this.extensionField) {
3698
+ // Sister fields should have the same features as their extensions.
3699
+ this.extensionField._features = this._features;
3700
+ }
3701
+ this._featuresResolved = true;
3702
+ };
3703
+
3704
+ /**
3705
+ * Infers features from legacy syntax that may have been specified differently.
3706
+ * in older editions.
3707
+ * @param {string|undefined} edition The edition this proto is on, or undefined if pre-editions
3708
+ * @returns {object} The feature values to override
3709
+ */
3710
+ ReflectionObject.prototype._inferLegacyProtoFeatures = function _inferLegacyProtoFeatures(/*edition*/) {
3711
+ return {};
3712
+ };
3713
+
3389
3714
  /**
3390
3715
  * Gets an option value.
3391
3716
  * @param {string} name Option name
@@ -3401,12 +3726,19 @@ ReflectionObject.prototype.getOption = function getOption(name) {
3401
3726
  * Sets an option.
3402
3727
  * @param {string} name Option name
3403
3728
  * @param {*} value Option value
3404
- * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set
3729
+ * @param {boolean|undefined} [ifNotSet] Sets the option only if it isn't currently set
3405
3730
  * @returns {ReflectionObject} `this`
3406
3731
  */
3407
3732
  ReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) {
3408
- if (!ifNotSet || !this.options || this.options[name] === undefined)
3409
- (this.options || (this.options = {}))[name] = value;
3733
+ if (!this.options)
3734
+ this.options = {};
3735
+ if (/^features\./.test(name)) {
3736
+ util.setProperty(this.options, name, value, ifNotSet);
3737
+ } else if (!ifNotSet || this.options[name] === undefined) {
3738
+ if (this.getOption(name) !== value) this.resolved = false;
3739
+ this.options[name] = value;
3740
+ }
3741
+
3410
3742
  return this;
3411
3743
  };
3412
3744
 
@@ -3430,10 +3762,11 @@ ReflectionObject.prototype.setParsedOption = function setParsedOption(name, valu
3430
3762
  });
3431
3763
  if (opt) {
3432
3764
  // If we found an existing option - just merge the property value
3765
+ // (If it's a feature, will just write over)
3433
3766
  var newValue = opt[name];
3434
3767
  util.setProperty(newValue, propName, value);
3435
3768
  } else {
3436
- // otherwise, create a new option, set it's property and add it to the list
3769
+ // otherwise, create a new option, set its property and add it to the list
3437
3770
  opt = {};
3438
3771
  opt[name] = util.setProperty({}, propName, value);
3439
3772
  parsedOptions.push(opt);
@@ -3444,6 +3777,7 @@ ReflectionObject.prototype.setParsedOption = function setParsedOption(name, valu
3444
3777
  newOpt[name] = value;
3445
3778
  parsedOptions.push(newOpt);
3446
3779
  }
3780
+
3447
3781
  return this;
3448
3782
  };
3449
3783
 
@@ -3472,12 +3806,25 @@ ReflectionObject.prototype.toString = function toString() {
3472
3806
  return className;
3473
3807
  };
3474
3808
 
3809
+ /**
3810
+ * Converts the edition this object is pinned to for JSON format.
3811
+ * @returns {string|undefined} The edition string for JSON representation
3812
+ */
3813
+ ReflectionObject.prototype._editionToJSON = function _editionToJSON() {
3814
+ if (!this._edition || this._edition === "proto3") {
3815
+ // Avoid emitting proto3 since we need to default to it for backwards
3816
+ // compatibility anyway.
3817
+ return undefined;
3818
+ }
3819
+ return this._edition;
3820
+ };
3821
+
3475
3822
  // Sets up cyclic dependencies (called in index-light)
3476
3823
  ReflectionObject._configure = function(Root_) {
3477
3824
  Root = Root_;
3478
3825
  };
3479
3826
 
3480
- },{"33":33}],23:[function(require,module,exports){
3827
+ },{"23":23,"33":33}],23:[function(require,module,exports){
3481
3828
  "use strict";
3482
3829
  module.exports = OneOf;
3483
3830
 
@@ -3651,6 +3998,25 @@ OneOf.prototype.onRemove = function onRemove(parent) {
3651
3998
  ReflectionObject.prototype.onRemove.call(this, parent);
3652
3999
  };
3653
4000
 
4001
+ /**
4002
+ * Determines whether this field corresponds to a synthetic oneof created for
4003
+ * a proto3 optional field. No behavioral logic should depend on this, but it
4004
+ * can be relevant for reflection.
4005
+ * @name OneOf#isProto3Optional
4006
+ * @type {boolean}
4007
+ * @readonly
4008
+ */
4009
+ Object.defineProperty(OneOf.prototype, "isProto3Optional", {
4010
+ get: function() {
4011
+ if (this.fieldsArray == null || this.fieldsArray.length !== 1) {
4012
+ return false;
4013
+ }
4014
+
4015
+ var field = this.fieldsArray[0];
4016
+ return field.options != null && field.options["proto3_optional"] === true;
4017
+ }
4018
+ });
4019
+
3654
4020
  /**
3655
4021
  * Decorator function as returned by {@link OneOf.d} (TypeScript).
3656
4022
  * @typedef OneOfDecorator
@@ -4191,11 +4557,25 @@ function Root(options) {
4191
4557
  * @type {string[]}
4192
4558
  */
4193
4559
  this.files = [];
4560
+
4561
+ /**
4562
+ * Edition, defaults to proto2 if unspecified.
4563
+ * @type {string}
4564
+ * @private
4565
+ */
4566
+ this._edition = "proto2";
4567
+
4568
+ /**
4569
+ * Global lookup cache of fully qualified names.
4570
+ * @type {Object.<string,ReflectionObject>}
4571
+ * @private
4572
+ */
4573
+ this._fullyQualifiedObjects = {};
4194
4574
  }
4195
4575
 
4196
4576
  /**
4197
4577
  * Loads a namespace descriptor into a root namespace.
4198
- * @param {INamespace} json Nameespace descriptor
4578
+ * @param {INamespace} json Namespace descriptor
4199
4579
  * @param {Root} [root] Root namespace, defaults to create a new one if omitted
4200
4580
  * @returns {Root} Root namespace
4201
4581
  */
@@ -4204,7 +4584,7 @@ Root.fromJSON = function fromJSON(json, root) {
4204
4584
  root = new Root();
4205
4585
  if (json.options)
4206
4586
  root.setOptions(json.options);
4207
- return root.addJSON(json.nested);
4587
+ return root.addJSON(json.nested).resolveAll();
4208
4588
  };
4209
4589
 
4210
4590
  /**
@@ -4244,18 +4624,24 @@ Root.prototype.load = function load(filename, options, callback) {
4244
4624
  options = undefined;
4245
4625
  }
4246
4626
  var self = this;
4247
- if (!callback)
4627
+ if (!callback) {
4248
4628
  return util.asPromise(load, self, filename, options);
4629
+ }
4249
4630
 
4250
4631
  var sync = callback === SYNC; // undocumented
4251
4632
 
4252
4633
  // Finishes loading by calling the callback (exactly once)
4253
4634
  function finish(err, root) {
4254
4635
  /* istanbul ignore if */
4255
- if (!callback)
4636
+ if (!callback) {
4256
4637
  return;
4257
- if (sync)
4638
+ }
4639
+ if (sync) {
4258
4640
  throw err;
4641
+ }
4642
+ if (root) {
4643
+ root.resolveAll();
4644
+ }
4259
4645
  var cb = callback;
4260
4646
  callback = null;
4261
4647
  cb(err, root);
@@ -4295,8 +4681,9 @@ Root.prototype.load = function load(filename, options, callback) {
4295
4681
  } catch (err) {
4296
4682
  finish(err);
4297
4683
  }
4298
- if (!sync && !queued)
4684
+ if (!sync && !queued) {
4299
4685
  finish(null, self); // only once anyway
4686
+ }
4300
4687
  }
4301
4688
 
4302
4689
  // Fetches a single file
@@ -4304,15 +4691,16 @@ Root.prototype.load = function load(filename, options, callback) {
4304
4691
  filename = getBundledFileName(filename) || filename;
4305
4692
 
4306
4693
  // Skip if already loaded / attempted
4307
- if (self.files.indexOf(filename) > -1)
4694
+ if (self.files.indexOf(filename) > -1) {
4308
4695
  return;
4696
+ }
4309
4697
  self.files.push(filename);
4310
4698
 
4311
4699
  // Shortcut bundled definitions
4312
4700
  if (filename in common) {
4313
- if (sync)
4701
+ if (sync) {
4314
4702
  process(filename, common[filename]);
4315
- else {
4703
+ } else {
4316
4704
  ++queued;
4317
4705
  setTimeout(function() {
4318
4706
  --queued;
@@ -4338,8 +4726,9 @@ Root.prototype.load = function load(filename, options, callback) {
4338
4726
  self.fetch(filename, function(err, source) {
4339
4727
  --queued;
4340
4728
  /* istanbul ignore if */
4341
- if (!callback)
4729
+ if (!callback) {
4342
4730
  return; // terminated meanwhile
4731
+ }
4343
4732
  if (err) {
4344
4733
  /* istanbul ignore else */
4345
4734
  if (!weak)
@@ -4356,17 +4745,21 @@ Root.prototype.load = function load(filename, options, callback) {
4356
4745
 
4357
4746
  // Assembling the root namespace doesn't require working type
4358
4747
  // references anymore, so we can load everything in parallel
4359
- if (util.isString(filename))
4748
+ if (util.isString(filename)) {
4360
4749
  filename = [ filename ];
4750
+ }
4361
4751
  for (var i = 0, resolved; i < filename.length; ++i)
4362
4752
  if (resolved = self.resolvePath("", filename[i]))
4363
4753
  fetch(resolved);
4364
-
4365
- if (sync)
4754
+ if (sync) {
4755
+ self.resolveAll();
4366
4756
  return self;
4367
- if (!queued)
4757
+ }
4758
+ if (!queued) {
4368
4759
  finish(null, self);
4369
- return undefined;
4760
+ }
4761
+
4762
+ return self;
4370
4763
  };
4371
4764
  // function load(filename:string, options:IParseOptions, callback:LoadCallback):undefined
4372
4765
 
@@ -4408,6 +4801,8 @@ Root.prototype.loadSync = function loadSync(filename, options) {
4408
4801
  * @override
4409
4802
  */
4410
4803
  Root.prototype.resolveAll = function resolveAll() {
4804
+ if (!this._needsRecursiveResolve) return this;
4805
+
4411
4806
  if (this.deferred.length)
4412
4807
  throw Error("unresolvable extensions: " + this.deferred.map(function(field) {
4413
4808
  return "'extend " + field.extend + "' in " + field.parent.fullName;
@@ -4474,6 +4869,11 @@ Root.prototype._handleAdd = function _handleAdd(object) {
4474
4869
  object.parent[object.name] = object; // expose namespace as property of its parent
4475
4870
  }
4476
4871
 
4872
+ if (object instanceof Type || object instanceof Enum || object instanceof Field) {
4873
+ // Only store types and enums for quick lookup during resolve.
4874
+ this._fullyQualifiedObjects[object.fullName] = object;
4875
+ }
4876
+
4477
4877
  // The above also adds uppercased (and thus conflict-free) nested types, services and enums as
4478
4878
  // properties of namespaces just like static code does. This allows using a .d.ts generated for
4479
4879
  // a static module with reflection-based solutions where the condition is met.
@@ -4514,6 +4914,8 @@ Root.prototype._handleRemove = function _handleRemove(object) {
4514
4914
  delete object.parent[object.name]; // unexpose namespaces
4515
4915
 
4516
4916
  }
4917
+
4918
+ delete this._fullyQualifiedObjects[object.fullName];
4517
4919
  };
4518
4920
 
4519
4921
  // Sets up cyclic dependencies (called in index-light)
@@ -4785,7 +5187,10 @@ Service.fromJSON = function fromJSON(name, json) {
4785
5187
  service.add(Method.fromJSON(names[i], json.methods[names[i]]));
4786
5188
  if (json.nested)
4787
5189
  service.addJSON(json.nested);
5190
+ if (json.edition)
5191
+ service._edition = json.edition;
4788
5192
  service.comment = json.comment;
5193
+ service._defaultEdition = "proto3"; // For backwards-compatibility.
4789
5194
  return service;
4790
5195
  };
4791
5196
 
@@ -4798,6 +5203,7 @@ Service.prototype.toJSON = function toJSON(toJSONOptions) {
4798
5203
  var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);
4799
5204
  var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;
4800
5205
  return util.toObject([
5206
+ "edition" , this._editionToJSON(),
4801
5207
  "options" , inherited && inherited.options || undefined,
4802
5208
  "methods" , Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ {},
4803
5209
  "nested" , inherited && inherited.nested || undefined,
@@ -4834,10 +5240,28 @@ Service.prototype.get = function get(name) {
4834
5240
  * @override
4835
5241
  */
4836
5242
  Service.prototype.resolveAll = function resolveAll() {
5243
+ if (!this._needsRecursiveResolve) return this;
5244
+
5245
+ Namespace.prototype.resolve.call(this);
4837
5246
  var methods = this.methodsArray;
4838
5247
  for (var i = 0; i < methods.length; ++i)
4839
5248
  methods[i].resolve();
4840
- return Namespace.prototype.resolve.call(this);
5249
+ return this;
5250
+ };
5251
+
5252
+ /**
5253
+ * @override
5254
+ */
5255
+ Service.prototype._resolveFeaturesRecursive = function _resolveFeaturesRecursive(edition) {
5256
+ if (!this._needsRecursiveFeatureResolution) return this;
5257
+
5258
+ edition = this._edition || edition;
5259
+
5260
+ Namespace.prototype._resolveFeaturesRecursive.call(this, edition);
5261
+ this.methodsArray.forEach(method => {
5262
+ method._resolveFeaturesRecursive(edition);
5263
+ });
5264
+ return this;
4841
5265
  };
4842
5266
 
4843
5267
  /**
@@ -5169,6 +5593,9 @@ Type.fromJSON = function fromJSON(name, json) {
5169
5593
  type.group = true;
5170
5594
  if (json.comment)
5171
5595
  type.comment = json.comment;
5596
+ if (json.edition)
5597
+ type._edition = json.edition;
5598
+ type._defaultEdition = "proto3"; // For backwards-compatibility.
5172
5599
  return type;
5173
5600
  };
5174
5601
 
@@ -5181,6 +5608,7 @@ Type.prototype.toJSON = function toJSON(toJSONOptions) {
5181
5608
  var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);
5182
5609
  var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;
5183
5610
  return util.toObject([
5611
+ "edition" , this._editionToJSON(),
5184
5612
  "options" , inherited && inherited.options || undefined,
5185
5613
  "oneofs" , Namespace.arrayToJSON(this.oneofsArray, toJSONOptions),
5186
5614
  "fields" , Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; }), toJSONOptions) || {},
@@ -5196,13 +5624,34 @@ Type.prototype.toJSON = function toJSON(toJSONOptions) {
5196
5624
  * @override
5197
5625
  */
5198
5626
  Type.prototype.resolveAll = function resolveAll() {
5199
- var fields = this.fieldsArray, i = 0;
5200
- while (i < fields.length)
5201
- fields[i++].resolve();
5627
+ if (!this._needsRecursiveResolve) return this;
5628
+
5629
+ Namespace.prototype.resolveAll.call(this);
5202
5630
  var oneofs = this.oneofsArray; i = 0;
5203
5631
  while (i < oneofs.length)
5204
5632
  oneofs[i++].resolve();
5205
- return Namespace.prototype.resolveAll.call(this);
5633
+ var fields = this.fieldsArray, i = 0;
5634
+ while (i < fields.length)
5635
+ fields[i++].resolve();
5636
+ return this;
5637
+ };
5638
+
5639
+ /**
5640
+ * @override
5641
+ */
5642
+ Type.prototype._resolveFeaturesRecursive = function _resolveFeaturesRecursive(edition) {
5643
+ if (!this._needsRecursiveFeatureResolution) return this;
5644
+
5645
+ edition = this._edition || edition;
5646
+
5647
+ Namespace.prototype._resolveFeaturesRecursive.call(this, edition);
5648
+ this.oneofsArray.forEach(oneof => {
5649
+ oneof._resolveFeatures(edition);
5650
+ });
5651
+ this.fieldsArray.forEach(field => {
5652
+ field._resolveFeatures(edition);
5653
+ });
5654
+ return this;
5206
5655
  };
5207
5656
 
5208
5657
  /**
@@ -5857,9 +6306,10 @@ util.decorateEnum = function decorateEnum(object) {
5857
6306
  * @param {Object.<string,*>} dst Destination object
5858
6307
  * @param {string} path dot '.' delimited path of the property to set
5859
6308
  * @param {Object} value the value to set
6309
+ * @param {boolean|undefined} [ifNotSet] Sets the option only if it isn't currently set
5860
6310
  * @returns {Object.<string,*>} Destination object
5861
6311
  */
5862
- util.setProperty = function setProperty(dst, path, value) {
6312
+ util.setProperty = function setProperty(dst, path, value, ifNotSet) {
5863
6313
  function setProp(dst, path, value) {
5864
6314
  var part = path.shift();
5865
6315
  if (part === "__proto__" || part === "prototype") {
@@ -5869,6 +6319,8 @@ util.setProperty = function setProperty(dst, path, value) {
5869
6319
  dst[part] = setProp(dst[part] || {}, path, value);
5870
6320
  } else {
5871
6321
  var prevValue = dst[part];
6322
+ if (prevValue && ifNotSet)
6323
+ return dst;
5872
6324
  if (prevValue)
5873
6325
  value = [].concat(prevValue).concat(value);
5874
6326
  dst[part] = value;