@milaboratories/pl-drivers 1.16.1 → 1.16.2

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 (239) hide show
  1. package/dist/clients/constructors.cjs.map +1 -1
  2. package/dist/clients/constructors.js.map +1 -1
  3. package/dist/clients/crc32c.cjs.map +1 -1
  4. package/dist/clients/crc32c.js.map +1 -1
  5. package/dist/clients/download.cjs +5 -3
  6. package/dist/clients/download.cjs.map +1 -1
  7. package/dist/clients/download.d.ts.map +1 -1
  8. package/dist/clients/download.js +2 -0
  9. package/dist/clients/download.js.map +1 -1
  10. package/dist/clients/download_url_cache.cjs +3 -1
  11. package/dist/clients/download_url_cache.cjs.map +1 -1
  12. package/dist/clients/download_url_cache.js +2 -1
  13. package/dist/clients/download_url_cache.js.map +1 -1
  14. package/dist/clients/logs.cjs +2 -1
  15. package/dist/clients/logs.cjs.map +1 -1
  16. package/dist/clients/logs.d.ts.map +1 -1
  17. package/dist/clients/logs.js +2 -0
  18. package/dist/clients/logs.js.map +1 -1
  19. package/dist/clients/ls_api.cjs +1 -1
  20. package/dist/clients/ls_api.cjs.map +1 -1
  21. package/dist/clients/ls_api.d.ts.map +1 -1
  22. package/dist/clients/ls_api.js +1 -0
  23. package/dist/clients/ls_api.js.map +1 -1
  24. package/dist/clients/progress.cjs +2 -1
  25. package/dist/clients/progress.cjs.map +1 -1
  26. package/dist/clients/progress.d.ts.map +1 -1
  27. package/dist/clients/progress.js +2 -0
  28. package/dist/clients/progress.js.map +1 -1
  29. package/dist/clients/upload.cjs +7 -5
  30. package/dist/clients/upload.cjs.map +1 -1
  31. package/dist/clients/upload.d.ts.map +1 -1
  32. package/dist/clients/upload.js +6 -4
  33. package/dist/clients/upload.js.map +1 -1
  34. package/dist/drivers/download_blob/blob_key.cjs +1 -1
  35. package/dist/drivers/download_blob/blob_key.cjs.map +1 -1
  36. package/dist/drivers/download_blob/blob_key.js.map +1 -1
  37. package/dist/drivers/download_blob/download_blob.cjs +17 -6
  38. package/dist/drivers/download_blob/download_blob.cjs.map +1 -1
  39. package/dist/drivers/download_blob/download_blob.d.ts.map +1 -1
  40. package/dist/drivers/download_blob/download_blob.js +11 -0
  41. package/dist/drivers/download_blob/download_blob.js.map +1 -1
  42. package/dist/drivers/download_blob/download_blob_task.cjs +9 -3
  43. package/dist/drivers/download_blob/download_blob_task.cjs.map +1 -1
  44. package/dist/drivers/download_blob/download_blob_task.js +6 -1
  45. package/dist/drivers/download_blob/download_blob_task.js.map +1 -1
  46. package/dist/drivers/download_blob/sparse_cache/cache.cjs +9 -1
  47. package/dist/drivers/download_blob/sparse_cache/cache.cjs.map +1 -1
  48. package/dist/drivers/download_blob/sparse_cache/cache.js +8 -0
  49. package/dist/drivers/download_blob/sparse_cache/cache.js.map +1 -1
  50. package/dist/drivers/download_blob/sparse_cache/file.cjs +2 -1
  51. package/dist/drivers/download_blob/sparse_cache/file.cjs.map +1 -1
  52. package/dist/drivers/download_blob/sparse_cache/file.js +1 -1
  53. package/dist/drivers/download_blob/sparse_cache/file.js.map +1 -1
  54. package/dist/drivers/download_blob/sparse_cache/ranges.cjs +3 -1
  55. package/dist/drivers/download_blob/sparse_cache/ranges.cjs.map +1 -1
  56. package/dist/drivers/download_blob/sparse_cache/ranges.js +1 -1
  57. package/dist/drivers/download_blob/sparse_cache/ranges.js.map +1 -1
  58. package/dist/drivers/download_blob_url/driver.cjs +6 -1
  59. package/dist/drivers/download_blob_url/driver.cjs.map +1 -1
  60. package/dist/drivers/download_blob_url/driver.d.ts.map +1 -1
  61. package/dist/drivers/download_blob_url/driver.js +5 -0
  62. package/dist/drivers/download_blob_url/driver.js.map +1 -1
  63. package/dist/drivers/download_blob_url/driver_id.cjs +0 -1
  64. package/dist/drivers/download_blob_url/driver_id.cjs.map +1 -1
  65. package/dist/drivers/download_blob_url/driver_id.js.map +1 -1
  66. package/dist/drivers/download_blob_url/snapshot.cjs +0 -1
  67. package/dist/drivers/download_blob_url/snapshot.cjs.map +1 -1
  68. package/dist/drivers/download_blob_url/snapshot.d.ts +1 -2
  69. package/dist/drivers/download_blob_url/snapshot.d.ts.map +1 -1
  70. package/dist/drivers/download_blob_url/snapshot.js.map +1 -1
  71. package/dist/drivers/download_blob_url/task.cjs +14 -6
  72. package/dist/drivers/download_blob_url/task.cjs.map +1 -1
  73. package/dist/drivers/download_blob_url/task.d.ts +1 -1
  74. package/dist/drivers/download_blob_url/task.d.ts.map +1 -1
  75. package/dist/drivers/download_blob_url/task.js +8 -1
  76. package/dist/drivers/download_blob_url/task.js.map +1 -1
  77. package/dist/drivers/download_url/driver.cjs +41 -19
  78. package/dist/drivers/download_url/driver.cjs.map +1 -1
  79. package/dist/drivers/download_url/driver.d.ts +10 -5
  80. package/dist/drivers/download_url/driver.d.ts.map +1 -1
  81. package/dist/drivers/download_url/driver.js +40 -18
  82. package/dist/drivers/download_url/driver.js.map +1 -1
  83. package/dist/drivers/download_url/task.cjs +39 -23
  84. package/dist/drivers/download_url/task.cjs.map +1 -1
  85. package/dist/drivers/download_url/task.d.ts +20 -6
  86. package/dist/drivers/download_url/task.d.ts.map +1 -1
  87. package/dist/drivers/download_url/task.js +36 -20
  88. package/dist/drivers/download_url/task.js.map +1 -1
  89. package/dist/drivers/helpers/download_local_handle.cjs.map +1 -1
  90. package/dist/drivers/helpers/download_local_handle.js.map +1 -1
  91. package/dist/drivers/helpers/download_remote_handle.cjs +0 -1
  92. package/dist/drivers/helpers/download_remote_handle.cjs.map +1 -1
  93. package/dist/drivers/helpers/download_remote_handle.js.map +1 -1
  94. package/dist/drivers/helpers/files_cache.cjs +1 -1
  95. package/dist/drivers/helpers/files_cache.cjs.map +1 -1
  96. package/dist/drivers/helpers/files_cache.js +1 -0
  97. package/dist/drivers/helpers/files_cache.js.map +1 -1
  98. package/dist/drivers/helpers/helpers.cjs +1 -0
  99. package/dist/drivers/helpers/helpers.cjs.map +1 -1
  100. package/dist/drivers/helpers/helpers.d.ts.map +1 -1
  101. package/dist/drivers/helpers/helpers.js +1 -0
  102. package/dist/drivers/helpers/helpers.js.map +1 -1
  103. package/dist/drivers/helpers/logs_handle.cjs +3 -1
  104. package/dist/drivers/helpers/logs_handle.cjs.map +1 -1
  105. package/dist/drivers/helpers/logs_handle.js +1 -1
  106. package/dist/drivers/helpers/logs_handle.js.map +1 -1
  107. package/dist/drivers/helpers/ls_remote_import_handle.cjs.map +1 -1
  108. package/dist/drivers/helpers/ls_remote_import_handle.js.map +1 -1
  109. package/dist/drivers/helpers/ls_storage_entry.cjs +2 -1
  110. package/dist/drivers/helpers/ls_storage_entry.cjs.map +1 -1
  111. package/dist/drivers/helpers/ls_storage_entry.js +1 -1
  112. package/dist/drivers/helpers/ls_storage_entry.js.map +1 -1
  113. package/dist/drivers/helpers/polling_ops.d.ts.map +1 -1
  114. package/dist/drivers/helpers/read_file.cjs +2 -2
  115. package/dist/drivers/helpers/read_file.cjs.map +1 -1
  116. package/dist/drivers/helpers/read_file.js.map +1 -1
  117. package/dist/drivers/logs.cjs +3 -1
  118. package/dist/drivers/logs.cjs.map +1 -1
  119. package/dist/drivers/logs.js +3 -0
  120. package/dist/drivers/logs.js.map +1 -1
  121. package/dist/drivers/logs_stream.cjs +8 -1
  122. package/dist/drivers/logs_stream.cjs.map +1 -1
  123. package/dist/drivers/logs_stream.d.ts.map +1 -1
  124. package/dist/drivers/logs_stream.js +8 -0
  125. package/dist/drivers/logs_stream.js.map +1 -1
  126. package/dist/drivers/ls.cjs +10 -3
  127. package/dist/drivers/ls.cjs.map +1 -1
  128. package/dist/drivers/ls.d.ts.map +1 -1
  129. package/dist/drivers/ls.js +8 -1
  130. package/dist/drivers/ls.js.map +1 -1
  131. package/dist/drivers/types.cjs +10 -1
  132. package/dist/drivers/types.cjs.map +1 -1
  133. package/dist/drivers/types.d.ts +3 -4
  134. package/dist/drivers/types.d.ts.map +1 -1
  135. package/dist/drivers/types.js +10 -0
  136. package/dist/drivers/types.js.map +1 -1
  137. package/dist/drivers/upload.cjs +5 -1
  138. package/dist/drivers/upload.cjs.map +1 -1
  139. package/dist/drivers/upload.d.ts.map +1 -1
  140. package/dist/drivers/upload.js +5 -0
  141. package/dist/drivers/upload.js.map +1 -1
  142. package/dist/drivers/upload_task.cjs +6 -1
  143. package/dist/drivers/upload_task.cjs.map +1 -1
  144. package/dist/drivers/upload_task.d.ts.map +1 -1
  145. package/dist/drivers/upload_task.js +5 -0
  146. package/dist/drivers/upload_task.js.map +1 -1
  147. package/dist/drivers/urls/url.cjs +1 -1
  148. package/dist/drivers/urls/url.cjs.map +1 -1
  149. package/dist/drivers/urls/url.js.map +1 -1
  150. package/dist/drivers/virtual_storages.cjs +3 -3
  151. package/dist/drivers/virtual_storages.cjs.map +1 -1
  152. package/dist/drivers/virtual_storages.d.ts.map +1 -1
  153. package/dist/drivers/virtual_storages.js.map +1 -1
  154. package/dist/helpers/download.cjs +1 -1
  155. package/dist/helpers/download.cjs.map +1 -1
  156. package/dist/helpers/download.d.ts.map +1 -1
  157. package/dist/helpers/download.js +1 -0
  158. package/dist/helpers/download.js.map +1 -1
  159. package/dist/helpers/download_errors.cjs.map +1 -1
  160. package/dist/helpers/download_errors.d.ts.map +1 -1
  161. package/dist/helpers/download_errors.js.map +1 -1
  162. package/dist/helpers/validate.cjs +1 -1
  163. package/dist/helpers/validate.cjs.map +1 -1
  164. package/dist/helpers/validate.d.ts.map +1 -1
  165. package/dist/helpers/validate.js.map +1 -1
  166. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.cjs +4 -2
  167. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.cjs.map +1 -1
  168. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.cjs +1 -1
  169. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.cjs.map +1 -1
  170. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.d.ts +3 -5
  171. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.d.ts.map +1 -1
  172. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.js +1 -0
  173. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.js.map +1 -1
  174. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.d.ts +1 -1
  175. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.d.ts.map +1 -1
  176. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.js +7 -3
  177. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.js.map +1 -1
  178. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.cjs +4 -2
  179. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.cjs.map +1 -1
  180. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.cjs +1 -1
  181. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.cjs.map +1 -1
  182. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.js +1 -0
  183. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.js.map +1 -1
  184. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.d.ts +1 -1
  185. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.d.ts.map +1 -1
  186. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.js +7 -3
  187. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.js.map +1 -1
  188. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.cjs +7 -3
  189. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.cjs.map +1 -1
  190. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.cjs +1 -1
  191. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.cjs.map +1 -1
  192. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.d.ts +3 -5
  193. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.d.ts.map +1 -1
  194. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.js +1 -0
  195. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.js.map +1 -1
  196. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.d.ts +1 -1
  197. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.d.ts.map +1 -1
  198. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.js +3 -3
  199. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.js.map +1 -1
  200. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.cjs +8 -5
  201. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.cjs.map +1 -1
  202. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.cjs +1 -1
  203. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.cjs.map +1 -1
  204. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.d.ts +3 -5
  205. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.d.ts.map +1 -1
  206. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.js +1 -0
  207. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.js.map +1 -1
  208. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.d.ts.map +1 -1
  209. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.js +5 -5
  210. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.js.map +1 -1
  211. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.cjs +17 -7
  212. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.cjs.map +1 -1
  213. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.cjs +1 -1
  214. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.cjs.map +1 -1
  215. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.js +1 -0
  216. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.js.map +1 -1
  217. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.d.ts.map +1 -1
  218. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.js +7 -7
  219. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.js.map +1 -1
  220. package/dist/proto-grpc/google/protobuf/duration.cjs +0 -1
  221. package/dist/proto-grpc/google/protobuf/duration.cjs.map +1 -1
  222. package/dist/proto-grpc/google/protobuf/duration.d.ts.map +1 -1
  223. package/dist/proto-grpc/google/protobuf/duration.js.map +1 -1
  224. package/dist/proto-grpc/google/protobuf/timestamp.cjs +0 -1
  225. package/dist/proto-grpc/google/protobuf/timestamp.cjs.map +1 -1
  226. package/dist/proto-grpc/google/protobuf/timestamp.d.ts.map +1 -1
  227. package/dist/proto-grpc/google/protobuf/timestamp.js.map +1 -1
  228. package/dist/proto-rest/downloadapi.d.ts +1 -1
  229. package/dist/proto-rest/downloadapi.d.ts.map +1 -1
  230. package/dist/proto-rest/index.d.ts +1 -1
  231. package/dist/proto-rest/index.d.ts.map +1 -1
  232. package/dist/proto-rest/progressapi.d.ts +1 -1
  233. package/dist/proto-rest/progressapi.d.ts.map +1 -1
  234. package/dist/proto-rest/streamingapi.d.ts +1 -1
  235. package/dist/proto-rest/streamingapi.d.ts.map +1 -1
  236. package/package.json +7 -7
  237. package/src/drivers/download_url/driver.ts +44 -19
  238. package/src/drivers/download_url/get_local_tgz.test.ts +106 -0
  239. package/src/drivers/download_url/task.ts +53 -30
@@ -1 +1 @@
1
- {"version":3,"file":"timestamp.cjs","names":["MessageType","PbLong","UnknownFieldHandler","WireType"],"sources":["../../../../src/proto-grpc/google/protobuf/timestamp.ts"],"sourcesContent":["// @generated by protobuf-ts 2.11.1 with parameter client_generic,optimize_speed,generate_dependencies,force_server_none\n// @generated from protobuf file \"google/protobuf/timestamp.proto\" (package \"google.protobuf\", syntax proto3)\n// tslint:disable\n//\n// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc. All rights reserved.\n// https://developers.google.com/protocol-buffers/\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\nimport type { BinaryWriteOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryWriter } from \"@protobuf-ts/runtime\";\nimport { WireType } from \"@protobuf-ts/runtime\";\nimport type { BinaryReadOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryReader } from \"@protobuf-ts/runtime\";\nimport { UnknownFieldHandler } from \"@protobuf-ts/runtime\";\nimport type { PartialMessage } from \"@protobuf-ts/runtime\";\nimport { reflectionMergePartial } from \"@protobuf-ts/runtime\";\nimport { typeofJsonValue } from \"@protobuf-ts/runtime\";\nimport type { JsonValue } from \"@protobuf-ts/runtime\";\nimport type { JsonReadOptions } from \"@protobuf-ts/runtime\";\nimport type { JsonWriteOptions } from \"@protobuf-ts/runtime\";\nimport { PbLong } from \"@protobuf-ts/runtime\";\nimport { MessageType } from \"@protobuf-ts/runtime\";\n/**\n * A Timestamp represents a point in time independent of any time zone or local\n * calendar, encoded as a count of seconds and fractions of seconds at\n * nanosecond resolution. The count is relative to an epoch at UTC midnight on\n * January 1, 1970, in the proleptic Gregorian calendar which extends the\n * Gregorian calendar backwards to year one.\n *\n * All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n * second table is needed for interpretation, using a [24-hour linear\n * smear](https://developers.google.com/time/smear).\n *\n * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n * restricting to that range, we ensure that we can convert to and from [RFC\n * 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n *\n * # Examples\n *\n * Example 1: Compute Timestamp from POSIX `time()`.\n *\n * Timestamp timestamp;\n * timestamp.set_seconds(time(NULL));\n * timestamp.set_nanos(0);\n *\n * Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n *\n * struct timeval tv;\n * gettimeofday(&tv, NULL);\n *\n * Timestamp timestamp;\n * timestamp.set_seconds(tv.tv_sec);\n * timestamp.set_nanos(tv.tv_usec * 1000);\n *\n * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n *\n * FILETIME ft;\n * GetSystemTimeAsFileTime(&ft);\n * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n *\n * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n * Timestamp timestamp;\n * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n *\n * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n *\n * long millis = System.currentTimeMillis();\n *\n * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n * .setNanos((int) ((millis % 1000) * 1000000)).build();\n *\n * Example 5: Compute Timestamp from Java `Instant.now()`.\n *\n * Instant now = Instant.now();\n *\n * Timestamp timestamp =\n * Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n * .setNanos(now.getNano()).build();\n *\n * Example 6: Compute Timestamp from current time in Python.\n *\n * timestamp = Timestamp()\n * timestamp.GetCurrentTime()\n *\n * # JSON Mapping\n *\n * In JSON format, the Timestamp type is encoded as a string in the\n * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n * format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n * where {year} is always expressed using four digits while {month}, {day},\n * {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n * seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n * are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n * is required. A proto3 JSON serializer should always use UTC (as indicated by\n * \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n * able to accept both UTC and other timezones (as indicated by an offset).\n *\n * For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n * 01:30 UTC on January 15, 2017.\n *\n * In JavaScript, one can convert a Date object to this format using the\n * standard\n * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n * method. In Python, a standard `datetime.datetime` object can be converted\n * to this format using\n * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n * the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n * the Joda Time's [`ISODateTimeFormat.dateTime()`](\n * http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()\n * ) to obtain a formatter capable of generating timestamps in this format.\n *\n *\n * @generated from protobuf message google.protobuf.Timestamp\n */\nexport interface Timestamp {\n /**\n * Represents seconds of UTC time since Unix epoch\n * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\n * 9999-12-31T23:59:59Z inclusive.\n *\n * @generated from protobuf field: int64 seconds = 1\n */\n seconds: bigint;\n /**\n * Non-negative fractions of a second at nanosecond resolution. Negative\n * second values with fractions must still have non-negative nanos values\n * that count forward in time. Must be from 0 to 999,999,999\n * inclusive.\n *\n * @generated from protobuf field: int32 nanos = 2\n */\n nanos: number;\n}\n// @generated message type with reflection information, may provide speed optimized methods\nclass Timestamp$Type extends MessageType<Timestamp> {\n constructor() {\n super(\"google.protobuf.Timestamp\", [\n { no: 1, name: \"seconds\", kind: \"scalar\", T: 3 /*ScalarType.INT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 2, name: \"nanos\", kind: \"scalar\", T: 5 /*ScalarType.INT32*/ }\n ]);\n }\n /**\n * Creates a new `Timestamp` for the current time.\n */\n now(): Timestamp {\n const msg = this.create();\n const ms = Date.now();\n msg.seconds = PbLong.from(Math.floor(ms / 1000)).toBigInt();\n msg.nanos = (ms % 1000) * 1000000;\n return msg;\n }\n /**\n * Converts a `Timestamp` to a JavaScript Date.\n */\n toDate(message: Timestamp): Date {\n return new Date(PbLong.from(message.seconds).toNumber() * 1000 + Math.ceil(message.nanos / 1000000));\n }\n /**\n * Converts a JavaScript Date to a `Timestamp`.\n */\n fromDate(date: Date): Timestamp {\n const msg = this.create();\n const ms = date.getTime();\n msg.seconds = PbLong.from(Math.floor(ms / 1000)).toBigInt();\n msg.nanos = ((ms % 1000) + (ms < 0 && ms % 1000 !== 0 ? 1000 : 0)) * 1000000;\n return msg;\n }\n /**\n * In JSON format, the `Timestamp` type is encoded as a string\n * in the RFC 3339 format.\n */\n internalJsonWrite(message: Timestamp, options: JsonWriteOptions): JsonValue {\n let ms = PbLong.from(message.seconds).toNumber() * 1000;\n if (ms < Date.parse(\"0001-01-01T00:00:00Z\") || ms > Date.parse(\"9999-12-31T23:59:59Z\"))\n throw new Error(\"Unable to encode Timestamp to JSON. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.\");\n if (message.nanos < 0)\n throw new Error(\"Unable to encode invalid Timestamp to JSON. Nanos must not be negative.\");\n let z = \"Z\";\n if (message.nanos > 0) {\n let nanosStr = (message.nanos + 1000000000).toString().substring(1);\n if (nanosStr.substring(3) === \"000000\")\n z = \".\" + nanosStr.substring(0, 3) + \"Z\";\n else if (nanosStr.substring(6) === \"000\")\n z = \".\" + nanosStr.substring(0, 6) + \"Z\";\n else\n z = \".\" + nanosStr + \"Z\";\n }\n return new Date(ms).toISOString().replace(\".000Z\", z);\n }\n /**\n * In JSON format, the `Timestamp` type is encoded as a string\n * in the RFC 3339 format.\n */\n internalJsonRead(json: JsonValue, options: JsonReadOptions, target?: Timestamp): Timestamp {\n if (typeof json !== \"string\")\n throw new Error(\"Unable to parse Timestamp from JSON \" + typeofJsonValue(json) + \".\");\n let matches = json.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);\n if (!matches)\n throw new Error(\"Unable to parse Timestamp from JSON. Invalid format.\");\n let ms = Date.parse(matches[1] + \"-\" + matches[2] + \"-\" + matches[3] + \"T\" + matches[4] + \":\" + matches[5] + \":\" + matches[6] + (matches[8] ? matches[8] : \"Z\"));\n if (Number.isNaN(ms))\n throw new Error(\"Unable to parse Timestamp from JSON. Invalid value.\");\n if (ms < Date.parse(\"0001-01-01T00:00:00Z\") || ms > Date.parse(\"9999-12-31T23:59:59Z\"))\n throw new globalThis.Error(\"Unable to parse Timestamp from JSON. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.\");\n if (!target)\n target = this.create();\n target.seconds = PbLong.from(ms / 1000).toBigInt();\n target.nanos = 0;\n if (matches[7])\n target.nanos = (parseInt(\"1\" + matches[7] + \"0\".repeat(9 - matches[7].length)) - 1000000000);\n return target;\n }\n create(value?: PartialMessage<Timestamp>): Timestamp {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.seconds = 0n;\n message.nanos = 0;\n if (value !== undefined)\n reflectionMergePartial<Timestamp>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Timestamp): Timestamp {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* int64 seconds */ 1:\n message.seconds = reader.int64().toBigInt();\n break;\n case /* int32 nanos */ 2:\n message.nanos = reader.int32();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: Timestamp, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* int64 seconds = 1; */\n if (message.seconds !== 0n)\n writer.tag(1, WireType.Varint).int64(message.seconds);\n /* int32 nanos = 2; */\n if (message.nanos !== 0)\n writer.tag(2, WireType.Varint).int32(message.nanos);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message google.protobuf.Timestamp\n */\nexport const Timestamp = new Timestamp$Type();\n"],"mappings":"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"}
1
+ {"version":3,"file":"timestamp.cjs","names":["MessageType","PbLong","UnknownFieldHandler","WireType"],"sources":["../../../../src/proto-grpc/google/protobuf/timestamp.ts"],"sourcesContent":["// @generated by protobuf-ts 2.11.1 with parameter client_generic,optimize_speed,generate_dependencies,force_server_none\n// @generated from protobuf file \"google/protobuf/timestamp.proto\" (package \"google.protobuf\", syntax proto3)\n// tslint:disable\n//\n// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc. All rights reserved.\n// https://developers.google.com/protocol-buffers/\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\nimport type { BinaryWriteOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryWriter } from \"@protobuf-ts/runtime\";\nimport { WireType } from \"@protobuf-ts/runtime\";\nimport type { BinaryReadOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryReader } from \"@protobuf-ts/runtime\";\nimport { UnknownFieldHandler } from \"@protobuf-ts/runtime\";\nimport type { PartialMessage } from \"@protobuf-ts/runtime\";\nimport { reflectionMergePartial } from \"@protobuf-ts/runtime\";\nimport { typeofJsonValue } from \"@protobuf-ts/runtime\";\nimport type { JsonValue } from \"@protobuf-ts/runtime\";\nimport type { JsonReadOptions } from \"@protobuf-ts/runtime\";\nimport type { JsonWriteOptions } from \"@protobuf-ts/runtime\";\nimport { PbLong } from \"@protobuf-ts/runtime\";\nimport { MessageType } from \"@protobuf-ts/runtime\";\n/**\n * A Timestamp represents a point in time independent of any time zone or local\n * calendar, encoded as a count of seconds and fractions of seconds at\n * nanosecond resolution. The count is relative to an epoch at UTC midnight on\n * January 1, 1970, in the proleptic Gregorian calendar which extends the\n * Gregorian calendar backwards to year one.\n *\n * All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n * second table is needed for interpretation, using a [24-hour linear\n * smear](https://developers.google.com/time/smear).\n *\n * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n * restricting to that range, we ensure that we can convert to and from [RFC\n * 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n *\n * # Examples\n *\n * Example 1: Compute Timestamp from POSIX `time()`.\n *\n * Timestamp timestamp;\n * timestamp.set_seconds(time(NULL));\n * timestamp.set_nanos(0);\n *\n * Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n *\n * struct timeval tv;\n * gettimeofday(&tv, NULL);\n *\n * Timestamp timestamp;\n * timestamp.set_seconds(tv.tv_sec);\n * timestamp.set_nanos(tv.tv_usec * 1000);\n *\n * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n *\n * FILETIME ft;\n * GetSystemTimeAsFileTime(&ft);\n * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n *\n * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n * Timestamp timestamp;\n * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n *\n * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n *\n * long millis = System.currentTimeMillis();\n *\n * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n * .setNanos((int) ((millis % 1000) * 1000000)).build();\n *\n * Example 5: Compute Timestamp from Java `Instant.now()`.\n *\n * Instant now = Instant.now();\n *\n * Timestamp timestamp =\n * Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n * .setNanos(now.getNano()).build();\n *\n * Example 6: Compute Timestamp from current time in Python.\n *\n * timestamp = Timestamp()\n * timestamp.GetCurrentTime()\n *\n * # JSON Mapping\n *\n * In JSON format, the Timestamp type is encoded as a string in the\n * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n * format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n * where {year} is always expressed using four digits while {month}, {day},\n * {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n * seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n * are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n * is required. A proto3 JSON serializer should always use UTC (as indicated by\n * \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n * able to accept both UTC and other timezones (as indicated by an offset).\n *\n * For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n * 01:30 UTC on January 15, 2017.\n *\n * In JavaScript, one can convert a Date object to this format using the\n * standard\n * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n * method. In Python, a standard `datetime.datetime` object can be converted\n * to this format using\n * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n * the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n * the Joda Time's [`ISODateTimeFormat.dateTime()`](\n * http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()\n * ) to obtain a formatter capable of generating timestamps in this format.\n *\n *\n * @generated from protobuf message google.protobuf.Timestamp\n */\nexport interface Timestamp {\n /**\n * Represents seconds of UTC time since Unix epoch\n * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\n * 9999-12-31T23:59:59Z inclusive.\n *\n * @generated from protobuf field: int64 seconds = 1\n */\n seconds: bigint;\n /**\n * Non-negative fractions of a second at nanosecond resolution. Negative\n * second values with fractions must still have non-negative nanos values\n * that count forward in time. Must be from 0 to 999,999,999\n * inclusive.\n *\n * @generated from protobuf field: int32 nanos = 2\n */\n nanos: number;\n}\n// @generated message type with reflection information, may provide speed optimized methods\nclass Timestamp$Type extends MessageType<Timestamp> {\n constructor() {\n super(\"google.protobuf.Timestamp\", [\n { no: 1, name: \"seconds\", kind: \"scalar\", T: 3 /*ScalarType.INT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 2, name: \"nanos\", kind: \"scalar\", T: 5 /*ScalarType.INT32*/ }\n ]);\n }\n /**\n * Creates a new `Timestamp` for the current time.\n */\n now(): Timestamp {\n const msg = this.create();\n const ms = Date.now();\n msg.seconds = PbLong.from(Math.floor(ms / 1000)).toBigInt();\n msg.nanos = (ms % 1000) * 1000000;\n return msg;\n }\n /**\n * Converts a `Timestamp` to a JavaScript Date.\n */\n toDate(message: Timestamp): Date {\n return new Date(PbLong.from(message.seconds).toNumber() * 1000 + Math.ceil(message.nanos / 1000000));\n }\n /**\n * Converts a JavaScript Date to a `Timestamp`.\n */\n fromDate(date: Date): Timestamp {\n const msg = this.create();\n const ms = date.getTime();\n msg.seconds = PbLong.from(Math.floor(ms / 1000)).toBigInt();\n msg.nanos = ((ms % 1000) + (ms < 0 && ms % 1000 !== 0 ? 1000 : 0)) * 1000000;\n return msg;\n }\n /**\n * In JSON format, the `Timestamp` type is encoded as a string\n * in the RFC 3339 format.\n */\n internalJsonWrite(message: Timestamp, options: JsonWriteOptions): JsonValue {\n let ms = PbLong.from(message.seconds).toNumber() * 1000;\n if (ms < Date.parse(\"0001-01-01T00:00:00Z\") || ms > Date.parse(\"9999-12-31T23:59:59Z\"))\n throw new Error(\"Unable to encode Timestamp to JSON. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.\");\n if (message.nanos < 0)\n throw new Error(\"Unable to encode invalid Timestamp to JSON. Nanos must not be negative.\");\n let z = \"Z\";\n if (message.nanos > 0) {\n let nanosStr = (message.nanos + 1000000000).toString().substring(1);\n if (nanosStr.substring(3) === \"000000\")\n z = \".\" + nanosStr.substring(0, 3) + \"Z\";\n else if (nanosStr.substring(6) === \"000\")\n z = \".\" + nanosStr.substring(0, 6) + \"Z\";\n else\n z = \".\" + nanosStr + \"Z\";\n }\n return new Date(ms).toISOString().replace(\".000Z\", z);\n }\n /**\n * In JSON format, the `Timestamp` type is encoded as a string\n * in the RFC 3339 format.\n */\n internalJsonRead(json: JsonValue, options: JsonReadOptions, target?: Timestamp): Timestamp {\n if (typeof json !== \"string\")\n throw new Error(\"Unable to parse Timestamp from JSON \" + typeofJsonValue(json) + \".\");\n let matches = json.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);\n if (!matches)\n throw new Error(\"Unable to parse Timestamp from JSON. Invalid format.\");\n let ms = Date.parse(matches[1] + \"-\" + matches[2] + \"-\" + matches[3] + \"T\" + matches[4] + \":\" + matches[5] + \":\" + matches[6] + (matches[8] ? matches[8] : \"Z\"));\n if (Number.isNaN(ms))\n throw new Error(\"Unable to parse Timestamp from JSON. Invalid value.\");\n if (ms < Date.parse(\"0001-01-01T00:00:00Z\") || ms > Date.parse(\"9999-12-31T23:59:59Z\"))\n throw new globalThis.Error(\"Unable to parse Timestamp from JSON. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.\");\n if (!target)\n target = this.create();\n target.seconds = PbLong.from(ms / 1000).toBigInt();\n target.nanos = 0;\n if (matches[7])\n target.nanos = (parseInt(\"1\" + matches[7] + \"0\".repeat(9 - matches[7].length)) - 1000000000);\n return target;\n }\n create(value?: PartialMessage<Timestamp>): Timestamp {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.seconds = 0n;\n message.nanos = 0;\n if (value !== undefined)\n reflectionMergePartial<Timestamp>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Timestamp): Timestamp {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* int64 seconds */ 1:\n message.seconds = reader.int64().toBigInt();\n break;\n case /* int32 nanos */ 2:\n message.nanos = reader.int32();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: Timestamp, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* int64 seconds = 1; */\n if (message.seconds !== 0n)\n writer.tag(1, WireType.Varint).int64(message.seconds);\n /* int32 nanos = 2; */\n if (message.nanos !== 0)\n writer.tag(2, WireType.Varint).int32(message.nanos);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message google.protobuf.Timestamp\n */\nexport const Timestamp = new Timestamp$Type();\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"timestamp.d.ts","names":[],"sources":["../../../../src/proto-grpc/google/protobuf/timestamp.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8RA;;;;;;;;;;;;;;UAhJiB,SAAA;;;;;;;;EAQb,OAAA;;;;;;;;;EASA,KAAA;AAAA;AAAA,cAGE,cAAA,SAAuB,WAAA,CAAY,SAAA;;;;;EAUrC,GAAA,CAAA,GAAO,SAAA;;;;EAUP,MAAA,CAAO,OAAA,EAAS,SAAA,GAAY,IAAA;;;;EAM5B,QAAA,CAAS,IAAA,EAAM,IAAA,GAAO,SAAA;;;;;EAWtB,iBAAA,CAAkB,OAAA,EAAS,SAAA,EAAW,OAAA,EAAS,gBAAA,GAAmB,SAAA;;;;;EAsBlE,gBAAA,CAAiB,IAAA,EAAM,SAAA,EAAW,OAAA,EAAS,eAAA,EAAiB,MAAA,GAAS,SAAA,GAAY,SAAA;EAmBjF,MAAA,CAAO,KAAA,GAAQ,cAAA,CAAe,SAAA,IAAa,SAAA;EAQ3C,kBAAA,CAAmB,MAAA,EAAQ,aAAA,EAAe,MAAA,UAAgB,OAAA,EAAS,iBAAA,EAAmB,MAAA,GAAS,SAAA,GAAY,SAAA;EAsB3G,mBAAA,CAAoB,OAAA,EAAS,SAAA,EAAW,MAAA,EAAQ,aAAA,EAAe,OAAA,EAAS,kBAAA,GAAqB,aAAA;AAAA;;;;cAgBpF,SAAA,EAAS,cAAA"}
1
+ {"version":3,"file":"timestamp.d.ts","names":[],"sources":["../../../../src/proto-grpc/google/protobuf/timestamp.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8Q8G;AAgB9G;;;;AAA6C;;;;;;;;;;UAhJ5B,SAAA;;;;;;;;EAQb,OAAA;;;;;;;;;EASA,KAAK;AAAA;AAAA,cAGH,cAAA,SAAuB,WAAA,CAAY,SAAA;;;;;EAUrC,GAAA,IAAO,SAAA;;;;EAUP,MAAA,CAAO,OAAA,EAAS,SAAA,GAAY,IAAA;;;;EAM5B,QAAA,CAAS,IAAA,EAAM,IAAA,GAAO,SAAA;;;;;EAWtB,iBAAA,CAAkB,OAAA,EAAS,SAAA,EAAW,OAAA,EAAS,gBAAA,GAAmB,SAAA;;;;;EAsBlE,gBAAA,CAAiB,IAAA,EAAM,SAAA,EAAW,OAAA,EAAS,eAAA,EAAiB,MAAA,GAAS,SAAA,GAAY,SAAA;EAmBjF,MAAA,CAAO,KAAA,GAAQ,cAAA,CAAe,SAAA,IAAa,SAAA;EAQ3C,kBAAA,CAAmB,MAAA,EAAQ,aAAA,EAAe,MAAA,UAAgB,OAAA,EAAS,iBAAA,EAAmB,MAAA,GAAS,SAAA,GAAY,SAAA;EAsB3G,mBAAA,CAAoB,OAAA,EAAS,SAAA,EAAW,MAAA,EAAQ,aAAA,EAAe,OAAA,EAAS,kBAAA,GAAqB,aAAA;AAAA;;;;cAgBpF,SAAA,EAAS,cAAuB"}
@@ -1 +1 @@
1
- {"version":3,"file":"timestamp.js","names":[],"sources":["../../../../src/proto-grpc/google/protobuf/timestamp.ts"],"sourcesContent":["// @generated by protobuf-ts 2.11.1 with parameter client_generic,optimize_speed,generate_dependencies,force_server_none\n// @generated from protobuf file \"google/protobuf/timestamp.proto\" (package \"google.protobuf\", syntax proto3)\n// tslint:disable\n//\n// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc. All rights reserved.\n// https://developers.google.com/protocol-buffers/\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\nimport type { BinaryWriteOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryWriter } from \"@protobuf-ts/runtime\";\nimport { WireType } from \"@protobuf-ts/runtime\";\nimport type { BinaryReadOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryReader } from \"@protobuf-ts/runtime\";\nimport { UnknownFieldHandler } from \"@protobuf-ts/runtime\";\nimport type { PartialMessage } from \"@protobuf-ts/runtime\";\nimport { reflectionMergePartial } from \"@protobuf-ts/runtime\";\nimport { typeofJsonValue } from \"@protobuf-ts/runtime\";\nimport type { JsonValue } from \"@protobuf-ts/runtime\";\nimport type { JsonReadOptions } from \"@protobuf-ts/runtime\";\nimport type { JsonWriteOptions } from \"@protobuf-ts/runtime\";\nimport { PbLong } from \"@protobuf-ts/runtime\";\nimport { MessageType } from \"@protobuf-ts/runtime\";\n/**\n * A Timestamp represents a point in time independent of any time zone or local\n * calendar, encoded as a count of seconds and fractions of seconds at\n * nanosecond resolution. The count is relative to an epoch at UTC midnight on\n * January 1, 1970, in the proleptic Gregorian calendar which extends the\n * Gregorian calendar backwards to year one.\n *\n * All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n * second table is needed for interpretation, using a [24-hour linear\n * smear](https://developers.google.com/time/smear).\n *\n * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n * restricting to that range, we ensure that we can convert to and from [RFC\n * 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n *\n * # Examples\n *\n * Example 1: Compute Timestamp from POSIX `time()`.\n *\n * Timestamp timestamp;\n * timestamp.set_seconds(time(NULL));\n * timestamp.set_nanos(0);\n *\n * Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n *\n * struct timeval tv;\n * gettimeofday(&tv, NULL);\n *\n * Timestamp timestamp;\n * timestamp.set_seconds(tv.tv_sec);\n * timestamp.set_nanos(tv.tv_usec * 1000);\n *\n * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n *\n * FILETIME ft;\n * GetSystemTimeAsFileTime(&ft);\n * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n *\n * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n * Timestamp timestamp;\n * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n *\n * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n *\n * long millis = System.currentTimeMillis();\n *\n * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n * .setNanos((int) ((millis % 1000) * 1000000)).build();\n *\n * Example 5: Compute Timestamp from Java `Instant.now()`.\n *\n * Instant now = Instant.now();\n *\n * Timestamp timestamp =\n * Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n * .setNanos(now.getNano()).build();\n *\n * Example 6: Compute Timestamp from current time in Python.\n *\n * timestamp = Timestamp()\n * timestamp.GetCurrentTime()\n *\n * # JSON Mapping\n *\n * In JSON format, the Timestamp type is encoded as a string in the\n * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n * format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n * where {year} is always expressed using four digits while {month}, {day},\n * {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n * seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n * are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n * is required. A proto3 JSON serializer should always use UTC (as indicated by\n * \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n * able to accept both UTC and other timezones (as indicated by an offset).\n *\n * For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n * 01:30 UTC on January 15, 2017.\n *\n * In JavaScript, one can convert a Date object to this format using the\n * standard\n * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n * method. In Python, a standard `datetime.datetime` object can be converted\n * to this format using\n * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n * the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n * the Joda Time's [`ISODateTimeFormat.dateTime()`](\n * http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()\n * ) to obtain a formatter capable of generating timestamps in this format.\n *\n *\n * @generated from protobuf message google.protobuf.Timestamp\n */\nexport interface Timestamp {\n /**\n * Represents seconds of UTC time since Unix epoch\n * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\n * 9999-12-31T23:59:59Z inclusive.\n *\n * @generated from protobuf field: int64 seconds = 1\n */\n seconds: bigint;\n /**\n * Non-negative fractions of a second at nanosecond resolution. Negative\n * second values with fractions must still have non-negative nanos values\n * that count forward in time. Must be from 0 to 999,999,999\n * inclusive.\n *\n * @generated from protobuf field: int32 nanos = 2\n */\n nanos: number;\n}\n// @generated message type with reflection information, may provide speed optimized methods\nclass Timestamp$Type extends MessageType<Timestamp> {\n constructor() {\n super(\"google.protobuf.Timestamp\", [\n { no: 1, name: \"seconds\", kind: \"scalar\", T: 3 /*ScalarType.INT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 2, name: \"nanos\", kind: \"scalar\", T: 5 /*ScalarType.INT32*/ }\n ]);\n }\n /**\n * Creates a new `Timestamp` for the current time.\n */\n now(): Timestamp {\n const msg = this.create();\n const ms = Date.now();\n msg.seconds = PbLong.from(Math.floor(ms / 1000)).toBigInt();\n msg.nanos = (ms % 1000) * 1000000;\n return msg;\n }\n /**\n * Converts a `Timestamp` to a JavaScript Date.\n */\n toDate(message: Timestamp): Date {\n return new Date(PbLong.from(message.seconds).toNumber() * 1000 + Math.ceil(message.nanos / 1000000));\n }\n /**\n * Converts a JavaScript Date to a `Timestamp`.\n */\n fromDate(date: Date): Timestamp {\n const msg = this.create();\n const ms = date.getTime();\n msg.seconds = PbLong.from(Math.floor(ms / 1000)).toBigInt();\n msg.nanos = ((ms % 1000) + (ms < 0 && ms % 1000 !== 0 ? 1000 : 0)) * 1000000;\n return msg;\n }\n /**\n * In JSON format, the `Timestamp` type is encoded as a string\n * in the RFC 3339 format.\n */\n internalJsonWrite(message: Timestamp, options: JsonWriteOptions): JsonValue {\n let ms = PbLong.from(message.seconds).toNumber() * 1000;\n if (ms < Date.parse(\"0001-01-01T00:00:00Z\") || ms > Date.parse(\"9999-12-31T23:59:59Z\"))\n throw new Error(\"Unable to encode Timestamp to JSON. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.\");\n if (message.nanos < 0)\n throw new Error(\"Unable to encode invalid Timestamp to JSON. Nanos must not be negative.\");\n let z = \"Z\";\n if (message.nanos > 0) {\n let nanosStr = (message.nanos + 1000000000).toString().substring(1);\n if (nanosStr.substring(3) === \"000000\")\n z = \".\" + nanosStr.substring(0, 3) + \"Z\";\n else if (nanosStr.substring(6) === \"000\")\n z = \".\" + nanosStr.substring(0, 6) + \"Z\";\n else\n z = \".\" + nanosStr + \"Z\";\n }\n return new Date(ms).toISOString().replace(\".000Z\", z);\n }\n /**\n * In JSON format, the `Timestamp` type is encoded as a string\n * in the RFC 3339 format.\n */\n internalJsonRead(json: JsonValue, options: JsonReadOptions, target?: Timestamp): Timestamp {\n if (typeof json !== \"string\")\n throw new Error(\"Unable to parse Timestamp from JSON \" + typeofJsonValue(json) + \".\");\n let matches = json.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);\n if (!matches)\n throw new Error(\"Unable to parse Timestamp from JSON. Invalid format.\");\n let ms = Date.parse(matches[1] + \"-\" + matches[2] + \"-\" + matches[3] + \"T\" + matches[4] + \":\" + matches[5] + \":\" + matches[6] + (matches[8] ? matches[8] : \"Z\"));\n if (Number.isNaN(ms))\n throw new Error(\"Unable to parse Timestamp from JSON. Invalid value.\");\n if (ms < Date.parse(\"0001-01-01T00:00:00Z\") || ms > Date.parse(\"9999-12-31T23:59:59Z\"))\n throw new globalThis.Error(\"Unable to parse Timestamp from JSON. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.\");\n if (!target)\n target = this.create();\n target.seconds = PbLong.from(ms / 1000).toBigInt();\n target.nanos = 0;\n if (matches[7])\n target.nanos = (parseInt(\"1\" + matches[7] + \"0\".repeat(9 - matches[7].length)) - 1000000000);\n return target;\n }\n create(value?: PartialMessage<Timestamp>): Timestamp {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.seconds = 0n;\n message.nanos = 0;\n if (value !== undefined)\n reflectionMergePartial<Timestamp>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Timestamp): Timestamp {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* int64 seconds */ 1:\n message.seconds = reader.int64().toBigInt();\n break;\n case /* int32 nanos */ 2:\n message.nanos = reader.int32();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: Timestamp, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* int64 seconds = 1; */\n if (message.seconds !== 0n)\n writer.tag(1, WireType.Varint).int64(message.seconds);\n /* int32 nanos = 2; */\n if (message.nanos !== 0)\n writer.tag(2, WireType.Varint).int32(message.nanos);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message google.protobuf.Timestamp\n */\nexport const Timestamp = new Timestamp$Type();\n"],"mappings":"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"}
1
+ {"version":3,"file":"timestamp.js","names":[],"sources":["../../../../src/proto-grpc/google/protobuf/timestamp.ts"],"sourcesContent":["// @generated by protobuf-ts 2.11.1 with parameter client_generic,optimize_speed,generate_dependencies,force_server_none\n// @generated from protobuf file \"google/protobuf/timestamp.proto\" (package \"google.protobuf\", syntax proto3)\n// tslint:disable\n//\n// Protocol Buffers - Google's data interchange format\n// Copyright 2008 Google Inc. All rights reserved.\n// https://developers.google.com/protocol-buffers/\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\nimport type { BinaryWriteOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryWriter } from \"@protobuf-ts/runtime\";\nimport { WireType } from \"@protobuf-ts/runtime\";\nimport type { BinaryReadOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryReader } from \"@protobuf-ts/runtime\";\nimport { UnknownFieldHandler } from \"@protobuf-ts/runtime\";\nimport type { PartialMessage } from \"@protobuf-ts/runtime\";\nimport { reflectionMergePartial } from \"@protobuf-ts/runtime\";\nimport { typeofJsonValue } from \"@protobuf-ts/runtime\";\nimport type { JsonValue } from \"@protobuf-ts/runtime\";\nimport type { JsonReadOptions } from \"@protobuf-ts/runtime\";\nimport type { JsonWriteOptions } from \"@protobuf-ts/runtime\";\nimport { PbLong } from \"@protobuf-ts/runtime\";\nimport { MessageType } from \"@protobuf-ts/runtime\";\n/**\n * A Timestamp represents a point in time independent of any time zone or local\n * calendar, encoded as a count of seconds and fractions of seconds at\n * nanosecond resolution. The count is relative to an epoch at UTC midnight on\n * January 1, 1970, in the proleptic Gregorian calendar which extends the\n * Gregorian calendar backwards to year one.\n *\n * All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n * second table is needed for interpretation, using a [24-hour linear\n * smear](https://developers.google.com/time/smear).\n *\n * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n * restricting to that range, we ensure that we can convert to and from [RFC\n * 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n *\n * # Examples\n *\n * Example 1: Compute Timestamp from POSIX `time()`.\n *\n * Timestamp timestamp;\n * timestamp.set_seconds(time(NULL));\n * timestamp.set_nanos(0);\n *\n * Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n *\n * struct timeval tv;\n * gettimeofday(&tv, NULL);\n *\n * Timestamp timestamp;\n * timestamp.set_seconds(tv.tv_sec);\n * timestamp.set_nanos(tv.tv_usec * 1000);\n *\n * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n *\n * FILETIME ft;\n * GetSystemTimeAsFileTime(&ft);\n * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n *\n * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n * Timestamp timestamp;\n * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n *\n * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n *\n * long millis = System.currentTimeMillis();\n *\n * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n * .setNanos((int) ((millis % 1000) * 1000000)).build();\n *\n * Example 5: Compute Timestamp from Java `Instant.now()`.\n *\n * Instant now = Instant.now();\n *\n * Timestamp timestamp =\n * Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n * .setNanos(now.getNano()).build();\n *\n * Example 6: Compute Timestamp from current time in Python.\n *\n * timestamp = Timestamp()\n * timestamp.GetCurrentTime()\n *\n * # JSON Mapping\n *\n * In JSON format, the Timestamp type is encoded as a string in the\n * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n * format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n * where {year} is always expressed using four digits while {month}, {day},\n * {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n * seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n * are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n * is required. A proto3 JSON serializer should always use UTC (as indicated by\n * \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n * able to accept both UTC and other timezones (as indicated by an offset).\n *\n * For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n * 01:30 UTC on January 15, 2017.\n *\n * In JavaScript, one can convert a Date object to this format using the\n * standard\n * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n * method. In Python, a standard `datetime.datetime` object can be converted\n * to this format using\n * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n * the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n * the Joda Time's [`ISODateTimeFormat.dateTime()`](\n * http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()\n * ) to obtain a formatter capable of generating timestamps in this format.\n *\n *\n * @generated from protobuf message google.protobuf.Timestamp\n */\nexport interface Timestamp {\n /**\n * Represents seconds of UTC time since Unix epoch\n * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\n * 9999-12-31T23:59:59Z inclusive.\n *\n * @generated from protobuf field: int64 seconds = 1\n */\n seconds: bigint;\n /**\n * Non-negative fractions of a second at nanosecond resolution. Negative\n * second values with fractions must still have non-negative nanos values\n * that count forward in time. Must be from 0 to 999,999,999\n * inclusive.\n *\n * @generated from protobuf field: int32 nanos = 2\n */\n nanos: number;\n}\n// @generated message type with reflection information, may provide speed optimized methods\nclass Timestamp$Type extends MessageType<Timestamp> {\n constructor() {\n super(\"google.protobuf.Timestamp\", [\n { no: 1, name: \"seconds\", kind: \"scalar\", T: 3 /*ScalarType.INT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 2, name: \"nanos\", kind: \"scalar\", T: 5 /*ScalarType.INT32*/ }\n ]);\n }\n /**\n * Creates a new `Timestamp` for the current time.\n */\n now(): Timestamp {\n const msg = this.create();\n const ms = Date.now();\n msg.seconds = PbLong.from(Math.floor(ms / 1000)).toBigInt();\n msg.nanos = (ms % 1000) * 1000000;\n return msg;\n }\n /**\n * Converts a `Timestamp` to a JavaScript Date.\n */\n toDate(message: Timestamp): Date {\n return new Date(PbLong.from(message.seconds).toNumber() * 1000 + Math.ceil(message.nanos / 1000000));\n }\n /**\n * Converts a JavaScript Date to a `Timestamp`.\n */\n fromDate(date: Date): Timestamp {\n const msg = this.create();\n const ms = date.getTime();\n msg.seconds = PbLong.from(Math.floor(ms / 1000)).toBigInt();\n msg.nanos = ((ms % 1000) + (ms < 0 && ms % 1000 !== 0 ? 1000 : 0)) * 1000000;\n return msg;\n }\n /**\n * In JSON format, the `Timestamp` type is encoded as a string\n * in the RFC 3339 format.\n */\n internalJsonWrite(message: Timestamp, options: JsonWriteOptions): JsonValue {\n let ms = PbLong.from(message.seconds).toNumber() * 1000;\n if (ms < Date.parse(\"0001-01-01T00:00:00Z\") || ms > Date.parse(\"9999-12-31T23:59:59Z\"))\n throw new Error(\"Unable to encode Timestamp to JSON. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.\");\n if (message.nanos < 0)\n throw new Error(\"Unable to encode invalid Timestamp to JSON. Nanos must not be negative.\");\n let z = \"Z\";\n if (message.nanos > 0) {\n let nanosStr = (message.nanos + 1000000000).toString().substring(1);\n if (nanosStr.substring(3) === \"000000\")\n z = \".\" + nanosStr.substring(0, 3) + \"Z\";\n else if (nanosStr.substring(6) === \"000\")\n z = \".\" + nanosStr.substring(0, 6) + \"Z\";\n else\n z = \".\" + nanosStr + \"Z\";\n }\n return new Date(ms).toISOString().replace(\".000Z\", z);\n }\n /**\n * In JSON format, the `Timestamp` type is encoded as a string\n * in the RFC 3339 format.\n */\n internalJsonRead(json: JsonValue, options: JsonReadOptions, target?: Timestamp): Timestamp {\n if (typeof json !== \"string\")\n throw new Error(\"Unable to parse Timestamp from JSON \" + typeofJsonValue(json) + \".\");\n let matches = json.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);\n if (!matches)\n throw new Error(\"Unable to parse Timestamp from JSON. Invalid format.\");\n let ms = Date.parse(matches[1] + \"-\" + matches[2] + \"-\" + matches[3] + \"T\" + matches[4] + \":\" + matches[5] + \":\" + matches[6] + (matches[8] ? matches[8] : \"Z\"));\n if (Number.isNaN(ms))\n throw new Error(\"Unable to parse Timestamp from JSON. Invalid value.\");\n if (ms < Date.parse(\"0001-01-01T00:00:00Z\") || ms > Date.parse(\"9999-12-31T23:59:59Z\"))\n throw new globalThis.Error(\"Unable to parse Timestamp from JSON. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.\");\n if (!target)\n target = this.create();\n target.seconds = PbLong.from(ms / 1000).toBigInt();\n target.nanos = 0;\n if (matches[7])\n target.nanos = (parseInt(\"1\" + matches[7] + \"0\".repeat(9 - matches[7].length)) - 1000000000);\n return target;\n }\n create(value?: PartialMessage<Timestamp>): Timestamp {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.seconds = 0n;\n message.nanos = 0;\n if (value !== undefined)\n reflectionMergePartial<Timestamp>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Timestamp): Timestamp {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* int64 seconds */ 1:\n message.seconds = reader.int64().toBigInt();\n break;\n case /* int32 nanos */ 2:\n message.nanos = reader.int32();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: Timestamp, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* int64 seconds = 1; */\n if (message.seconds !== 0n)\n writer.tag(1, WireType.Varint).int64(message.seconds);\n /* int32 nanos = 2; */\n if (message.nanos !== 0)\n writer.tag(2, WireType.Varint).int32(message.nanos);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message google.protobuf.Timestamp\n */\nexport const Timestamp = new Timestamp$Type();\n"],"mappings":"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"}
@@ -100,5 +100,5 @@ interface operations {
100
100
  };
101
101
  }
102
102
  //#endregion
103
- export { paths };
103
+ export { components, operations, paths };
104
104
  //# sourceMappingURL=downloadapi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"downloadapi.d.ts","names":[],"sources":["../../src/proto-rest/downloadapi.ts"],"mappings":";;AAKA;;;UAAiB,KAAA;EACf,sBAAA;IACE,UAAA;MACE,KAAA;MACA,MAAA;MACA,IAAA;MACA,MAAA;IAAA;IAEF,GAAA;IACA,GAAA;IACA,IAAA,EAAM,UAAA;IACN,MAAA;IACA,OAAA;IACA,IAAA;IACA,KAAA;IACA,KAAA;EAAA;AAAA;AAAA,UAIa,UAAA;EACf,OAAA;IACE,qCAAA;MACE,IAAA;MACA,KAAA;IAAA;IAEF,kCAAA;MACE,UAAA;MAAA;;;;MAKA,iBAAA;MAUA;;;;;MAJA,aAAA;IAAA;IAEF,mCAAA;MACE,WAAA;MACA,OAAA,EAAS,UAAA;IAAA,GAuBb;IApBE,iBAAA;MAsBF,uDApBI,OAAA;IAAA;MAAA,CAEC,GAAA;IAAA,GAsBoB;IAnBvB,MAAA;MA6BwB;;;;MAxBtB,IAAA,UAeJ;MAbI,OAAA,UAeA;MAbA,OAAA,EAAS,UAAA;IAAA;EAAA;EAGb,SAAA;EACA,UAAA;EACA,aAAA;EACA,OAAA;EACA,SAAA;AAAA;AAAA,UAGe,UAAA;EACf,uBAAA;IACE,UAAA;MACE,KAAA;MACA,MAAA;MACA,IAAA;MACA,MAAA;IAAA;IAEF,WAAA;MACE,OAAA;QACE,kBAAA,EAAoB,UAAA;MAAA;IAAA;IAGxB,SAAA;4BAEE,GAAA;QACE,OAAA;UAAA,CACG,IAAA;QAAA;QAEH,OAAA;UACE,kBAAA,EAAoB,UAAA;QAAA;MAAA;MAIxB,OAAA;QACE,OAAA;UAAA,CACG,IAAA;QAAA;QAEH,OAAA;UACE,kBAAA,EAAoB,UAAA;QAAA;MAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"downloadapi.d.ts","names":[],"sources":["../../src/proto-rest/downloadapi.ts"],"mappings":";;AAKA;;;UAAiB,KAAA;EACf,sBAAA;IACE,UAAA;MACE,KAAA;MACA,MAAA;MACA,IAAA;MACA,MAAA;IAAA;IAEF,GAAA;IACA,GAAA;IACA,IAAA,EAAM,UAAU;IAChB,MAAA;IACA,OAAA;IACA,IAAA;IACA,KAAA;IACA,KAAA;EAAA;AAAA;AAAA,UAIa,UAAA;EACf,OAAA;IACE,qCAAA;MACE,IAAA;MACA,KAAA;IAAA;IAEF,kCAAA;MACE,UAAA;MAAA;;;;MAKA,iBAAA;MAUA;;;;;MAJA,aAAA;IAAA;IAEF,mCAAA;MACE,WAAA;MACA,OAAA,EAAS,UAAA;IAAA,GAuBb;IApBE,iBAAA;MAsBF,uDApBI,OAAA;IAAA;MAAA,CAEC,GAAA;IAAA,GAsBoB;IAnBvB,MAAA;MA6BwB;;;;MAxBtB,IAAA,UAeJ;MAbI,OAAA,UAeA;MAbA,OAAA,EAAS,UAAU;IAAA;EAAA;EAGvB,SAAA;EACA,UAAA;EACA,aAAA;EACA,OAAA;EACA,SAAA;AAAA;AAAA,UAGe,UAAA;EACf,uBAAA;IACE,UAAA;MACE,KAAA;MACA,MAAA;MACA,IAAA;MACA,MAAA;IAAA;IAEF,WAAA;MACE,OAAA;QACE,kBAAA,EAAoB,UAAA;MAAA;IAAA;IAGxB,SAAA;4BAEE,GAAA;QACE,OAAA;UAAA,CACG,IAAA;QAAA;QAEH,OAAA;UACE,kBAAA,EAAoB,UAAA;QAAA;MAAA;MAIxB,OAAA;QACE,OAAA;UAAA,CACG,IAAA;QAAA;QAEH,OAAA;UACE,kBAAA,EAAoB,UAAA;QAAA;MAAA;IAAA;EAAA;AAAA"}
@@ -8,5 +8,5 @@ type DownloadRestClientType = Client<paths>;
8
8
  type ProgressRestClientType = Client<paths$1>;
9
9
  type StreamingRestClientType = Client<paths$2>;
10
10
  //#endregion
11
- export { DownloadRestClientType, ProgressRestClientType, StreamingRestClientType };
11
+ export { type paths as DownloadApiPaths, DownloadRestClientType, type paths$1 as ProgressApiPaths, ProgressRestClientType, type paths$2 as StreamingApiPaths, StreamingRestClientType };
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/proto-rest/index.ts"],"mappings":";;;;;;KAeY,sBAAA,GAAyB,MAAA,CAAO,KAAA;AAAA,KAShC,sBAAA,GAAyB,MAAA,CAAO,OAAA;AAAA,KAGhC,uBAAA,GAA0B,MAAA,CAAO,OAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/proto-rest/index.ts"],"mappings":";;;;;;KAeY,sBAAA,GAAyB,MAAM,CAAC,KAAA;AAAA,KAShC,sBAAA,GAAyB,MAAM,CAAC,OAAA;AAAA,KAGhC,uBAAA,GAA0B,MAAM,CAAC,OAAA"}
@@ -147,5 +147,5 @@ interface operations {
147
147
  };
148
148
  }
149
149
  //#endregion
150
- export { paths };
150
+ export { components, operations, paths };
151
151
  //# sourceMappingURL=progressapi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"progressapi.d.ts","names":[],"sources":["../../src/proto-rest/progressapi.ts"],"mappings":";;AAKA;;;UAAiB,KAAA;EACf,kBAAA;IACE,UAAA;MACE,KAAA;MACA,MAAA;MACA,IAAA;MACA,MAAA;IAAA;IAEF,GAAA;IACA,GAAA;IACA,IAAA,EAAM,UAAA;IACN,MAAA;IACA,OAAA;IACA,IAAA;IACA,KAAA;IACA,KAAA;EAAA;EAEF,uBAAA;IACE,UAAA;MACE,KAAA;MACA,MAAA;MACA,IAAA;MACA,MAAA;IAAA;IAEF,GAAA;IACA,GAAA;IACA,IAAA,EAAM,UAAA;IACN,MAAA;IACA,OAAA;IACA,IAAA;IACA,KAAA;IACA,KAAA;EAAA;AAAA;AAAA,UAIa,UAAA;EACf,OAAA;IAuBY,kIArBV,iBAAA;MA0CqB,uDAxCnB,OAAA;IAAA;MAAA,CAEC,GAAA;IAAA;IAEH,6BAAA;MACE,UAAA,UAAA;MAEA,iBAAA;IAAA;IAEF,8BAAA;MACE,MAAA,EAAQ,UAAA;IAAA;IAEV,kCAAA;MACE,UAAA,UAGA;MADA,iBAAA;MACA,cAAA;IAAA;IAEF,mCAAA;MACE,MAAA,EAAQ,UAAA;IAAA;IAEV,kBAAA;MAKE,oBAHA,QAAA;MACA,cAAA;MACA,UAAA;MACA,IAAA,WAcA;MAZA,IAAA;IAAA,GAgBJ;IAbE,MAAA;MAeF;;;;MAVI,IAAA,UAcqB;MAZrB,OAAA,UAsBsB;MApBtB,OAAA,EAAS,UAAA;IAAA;EAAA;EAGb,SAAA;EACA,UAAA;EACA,aAAA;EACA,OAAA;EACA,SAAA;AAAA;AAAA,UAGe,UAAA;EACf,kBAAA;IACE,UAAA;MACE,KAAA;MACA,MAAA;MACA,IAAA;MACA,MAAA;IAAA;IAEF,WAAA;MACE,OAAA;QACE,kBAAA,EAAoB,UAAA;MAAA;IAAA;IAGxB,SAAA;MAWE,sBATA,GAAA;QACE,OAAA;UAAA,CACG,IAAA;QAAA;QAEH,OAAA;UACE,kBAAA,EAAoB,UAAA;QAAA;MAAA,GAiBxB;MAbA,OAAA;QACE,OAAA;UAAA,CACG,IAAA;QAAA;QAEH,OAAA;UACE,kBAAA,EAAoB,UAAA;QAAA;MAAA;IAAA;EAAA;EAK5B,uBAAA;IACE,UAAA;MACE,KAAA;MACA,MAAA;MACA,IAAA;MACA,MAAA;IAAA;IAEF,WAAA;MACE,OAAA;QACE,kBAAA,EAAoB,UAAA;MAAA;IAAA;IAGxB,SAAA;4BAEE,GAAA;QACE,OAAA;UAAA,CACG,IAAA;QAAA;QAEH,OAAA;UACE,kBAAA,EAAoB,UAAA;QAAA;MAAA;MAIxB,OAAA;QACE,OAAA;UAAA,CACG,IAAA;QAAA;QAEH,OAAA;UACE,kBAAA,EAAoB,UAAA;QAAA;MAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"progressapi.d.ts","names":[],"sources":["../../src/proto-rest/progressapi.ts"],"mappings":";;AAKA;;;UAAiB,KAAA;EACf,kBAAA;IACE,UAAA;MACE,KAAA;MACA,MAAA;MACA,IAAA;MACA,MAAA;IAAA;IAEF,GAAA;IACA,GAAA;IACA,IAAA,EAAM,UAAA;IACN,MAAA;IACA,OAAA;IACA,IAAA;IACA,KAAA;IACA,KAAA;EAAA;EAEF,uBAAA;IACE,UAAA;MACE,KAAA;MACA,MAAA;MACA,IAAA;MACA,MAAA;IAAA;IAEF,GAAA;IACA,GAAA;IACA,IAAA,EAAM,UAAU;IAChB,MAAA;IACA,OAAA;IACA,IAAA;IACA,KAAA;IACA,KAAA;EAAA;AAAA;AAAA,UAIa,UAAA;EACf,OAAA;IAuBY,kIArBV,iBAAA;MA0CqB,uDAxCnB,OAAA;IAAA;MAAA,CAEC,GAAA;IAAA;IAEH,6BAAA;MACE,UAAA,UAAA;MAEA,iBAAA;IAAA;IAEF,8BAAA;MACE,MAAA,EAAQ,UAAA;IAAA;IAEV,kCAAA;MACE,UAAA,UAGA;MADA,iBAAA;MACA,cAAA;IAAA;IAEF,mCAAA;MACE,MAAA,EAAQ,UAAA;IAAA;IAEV,kBAAA;MAKE,oBAHA,QAAA;MACA,cAAA;MACA,UAAA;MACA,IAAA,WAcA;MAZA,IAAA;IAAA,GAgBJ;IAbE,MAAA;MAeF;;;AACS;MAXL,IAAA,UAcqB;MAZrB,OAAA,UAsBsB;MApBtB,OAAA,EAAS,UAAA;IAAA;EAAA;EAGb,SAAA;EACA,UAAA;EACA,aAAA;EACA,OAAA;EACA,SAAA;AAAA;AAAA,UAGe,UAAA;EACf,kBAAA;IACE,UAAA;MACE,KAAA;MACA,MAAA;MACA,IAAA;MACA,MAAA;IAAA;IAEF,WAAA;MACE,OAAA;QACE,kBAAA,EAAoB,UAAA;MAAA;IAAA;IAGxB,SAAA;MAWE,sBATA,GAAA;QACE,OAAA;UAAA,CACG,IAAA;QAAA;QAEH,OAAA;UACE,kBAAA,EAAoB,UAAA;QAAA;MAAA,GAiBxB;MAbA,OAAA;QACE,OAAA;UAAA,CACG,IAAA;QAAA;QAEH,OAAA;UACE,kBAAA,EAAoB,UAAA;QAAA;MAAA;IAAA;EAAA;EAK5B,uBAAA;IACE,UAAA;MACE,KAAA;MACA,MAAA;MACA,IAAA;MACA,MAAA;IAAA;IAEF,WAAA;MACE,OAAA;QACE,kBAAA,EAAoB,UAAA;MAAA;IAAA;IAGxB,SAAA;4BAEE,GAAA;QACE,OAAA;UAAA,CACG,IAAA;QAAA;QAEH,OAAA;UACE,kBAAA,EAAoB,UAAA;QAAA;MAAA;MAIxB,OAAA;QACE,OAAA;UAAA,CACG,IAAA;QAAA;QAEH,OAAA;UACE,kBAAA,EAAoB,UAAA;QAAA;MAAA;IAAA;EAAA;AAAA"}
@@ -305,5 +305,5 @@ interface operations {
305
305
  };
306
306
  }
307
307
  //#endregion
308
- export { paths };
308
+ export { components, operations, paths };
309
309
  //# sourceMappingURL=streamingapi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"streamingapi.d.ts","names":[],"sources":["../../src/proto-rest/streamingapi.ts"],"mappings":"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"}
1
+ {"version":3,"file":"streamingapi.d.ts","names":[],"sources":["../../src/proto-rest/streamingapi.ts"],"mappings":";;AAKA;;;UAAiB,KAAA;EACf,gBAAA;IACE,UAAA;MACE,KAAA;MACA,MAAA;MACA,IAAA;MACA,MAAA;IAAA;IAEF,GAAA;IACA,GAAA;IAHE;;;;;;;;;;IAcF,IAAA,EAAM,UAAA;IACN,MAAA;IACA,OAAA;IACA,IAAA;IACA,KAAA;IACA,KAAA;EAAA;EAEF,iBAAA;IACE,UAAA;MACE,KAAA;MACA,MAAA;MACA,IAAA;MACA,MAAA;IAAA;IAEF,GAAA;IACA,GAAA;IAeA;;;;;;IARA,IAAA,EAAM,UAAA;IACN,MAAA;IACA,OAAA;IACA,IAAA;IACA,KAAA;IACA,KAAA;EAAA;EAEF,eAAA;IACE,UAAA;MACE,KAAA;MACA,MAAA;MACA,IAAA;MACA,MAAA;IAAA;IAEF,GAAA;IACA,GAAA;IAqBE;;;;;;IAdF,IAAA,EAAM,UAAA;IACN,MAAA;IACA,OAAA;IACA,IAAA;IACA,KAAA;IACA,KAAA;EAAA;AAAA;AAAA,UAIa,UAAA;EACf,OAAA;IA+DI,kIA7DF,iBAAA;MAuEA,uDArEE,OAAA;IAAA;MAAA,CAEC,GAAA;IAAA,GAiGD;IA9FF,MAAA;MAsGA;;;;MAjGE,IAAA,UA2HJ;MAzHI,OAAA,UA2HJ;MAzHI,OAAA,EAAS,UAAU;IAAA;IAErB,sBAAA;MA2Ha,4FAzHX,UAAA;MAyHqB;;;;MApHrB,iBAAA;MAyKwB;;;;;;MAlKxB,MAAA;MA8GJ;;;;;MAxGI,SAAA;MA+GF;;;;;MAzGE,MAAA;MAiHE;;;;;MA3GF,QAAA;IAAA;IAEF,uBAAA;MAqHI,4FAnHF,UAAA;MAoHwB;;;;MA/GxB,iBAAA,UAwHA;MAtHA,MAAA;MAyHF;;;;;;;MAjHE,SAAA;IAAA;IAEF,qBAAA;MA2H0B,4FAzHxB,UAAA;MA8HE;;;;MAzHF,iBAAA;MAkIJ;;;;;MA5HI,MAAA;MAmIF;;;;;;;;;;MAxHE,SAAA;MAwIA;;;;;MAlIA,MAAA;MAuIkC;AAAA;;;;MAjIlC,QAAA;IAAA;IAEF,qBAAA;;;;;MAKE,IAAA;;;;;;;;MAQA,IAAA;;;;;;;;;MASA,SAAA;IAAA;EAAA;EAGJ,SAAA;EACA,UAAA;EACA,aAAA;EACA,OAAA;EACA,SAAA;AAAA;AAAA,UAGe,UAAA;EACf,mBAAA;IACE,UAAA;MACE,KAAA;MACA,MAAA;MACA,IAAA;MACA,MAAA;IAAA;IAEF,WAAA;MACE,OAAA;QACE,kBAAA,EAAoB,UAAA;MAAA;IAAA;IAGxB,SAAA;4BAEE,GAAA;QACE,OAAA;UAAA,CACG,IAAA;QAAA;QAEH,OAAA;UACE,kBAAA,EAAoB,UAAA;QAAA;MAAA;MAIxB,OAAA;QACE,OAAA;UAAA,CACG,IAAA;QAAA;QAEH,OAAA;UACE,kBAAA,EAAoB,UAAA;QAAA;MAAA;IAAA;EAAA;EAK5B,oBAAA;IACE,UAAA;MACE,KAAA;MACA,MAAA;MACA,IAAA;MACA,MAAA;IAAA;IAEF,WAAA;MACE,OAAA;QACE,kBAAA,EAAoB,UAAA;MAAA;IAAA;IAGxB,SAAA;4BAEE,GAAA;QACE,OAAA;UAAA,CACG,IAAA;QAAA;QAEH,OAAA;UACE,kBAAA,EAAoB,UAAA;QAAA;MAAA;MAIxB,OAAA;QACE,OAAA;UAAA,CACG,IAAA;QAAA;QAEH,OAAA;UACE,kBAAA,EAAoB,UAAA;QAAA;MAAA;IAAA;EAAA;EAK5B,kBAAA;IACE,UAAA;MACE,KAAA;MACA,MAAA;MACA,IAAA;MACA,MAAA;IAAA;IAEF,WAAA;MACE,OAAA;QACE,kBAAA,EAAoB,UAAA;MAAA;IAAA;IAGxB,SAAA;4BAEE,GAAA;QACE,OAAA;UAAA,CACG,IAAA;QAAA;QAEH,OAAA;UACE,kBAAA,EAAoB,UAAA;QAAA;MAAA;MAIxB,OAAA;QACE,OAAA;UAAA,CACG,IAAA;QAAA;QAEH,OAAA;UACE,kBAAA,EAAoB,UAAA;QAAA;MAAA;IAAA;EAAA;AAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/pl-drivers",
3
- "version": "1.16.1",
3
+ "version": "1.16.2",
4
4
  "description": "Drivers and a low-level clients for log streaming, downloading and uploading files from and to pl",
5
5
  "files": [
6
6
  "dist/**/*",
@@ -30,11 +30,11 @@
30
30
  "undici": "~7.16.0",
31
31
  "zod": "~3.25.76",
32
32
  "@milaboratories/computable": "2.9.5",
33
- "@milaboratories/pl-client": "3.11.5",
34
33
  "@milaboratories/helpers": "1.14.2",
35
- "@milaboratories/pl-tree": "1.12.13",
34
+ "@milaboratories/pl-model-common": "1.46.2",
35
+ "@milaboratories/pl-tree": "1.12.14",
36
36
  "@milaboratories/ts-helpers": "1.8.3",
37
- "@milaboratories/pl-model-common": "1.46.2"
37
+ "@milaboratories/pl-client": "3.12.0"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/decompress": "^4.2.7",
@@ -44,10 +44,10 @@
44
44
  "openapi-typescript": "^7.10.0",
45
45
  "typescript": "~5.9.3",
46
46
  "vitest": "^4.1.3",
47
- "@milaboratories/test-helpers": "1.2.2",
48
- "@milaboratories/ts-configs": "1.2.3",
49
47
  "@milaboratories/build-configs": "2.0.0",
50
- "@milaboratories/ts-builder": "1.5.2"
48
+ "@milaboratories/test-helpers": "1.2.2",
49
+ "@milaboratories/ts-builder": "1.6.0",
50
+ "@milaboratories/ts-configs": "1.3.0"
51
51
  },
52
52
  "engines": {
53
53
  "node": ">=22"
@@ -12,6 +12,7 @@ import { stringifyWithResourceId } from "@milaboratories/pl-client";
12
12
  import type { BlockUIURL, FrontendDriver } from "@milaboratories/pl-model-common";
13
13
  import { isBlockUIURL } from "@milaboratories/pl-model-common";
14
14
  import { getPathForBlockUIURL } from "../urls/url";
15
+ import type { DownloadSource } from "./task";
15
16
  import { DownloadByUrlTask, rmRFDir, URLAborted } from "./task";
16
17
 
17
18
  export interface DownloadUrlSyncReader {
@@ -50,7 +51,7 @@ export type DownloadUrlDriverOps = {
50
51
  export class DownloadUrlDriver implements DownloadUrlSyncReader, FrontendDriver {
51
52
  private readonly downloadHelper: RemoteFileDownloader;
52
53
 
53
- private urlToDownload: Map<string, DownloadByUrlTask> = new Map();
54
+ private taskByKey: Map<string, DownloadByUrlTask> = new Map();
54
55
  private downloadQueue: TaskProcessor;
55
56
 
56
57
  /** Writes and removes files to a hard drive and holds a counter for every
@@ -83,13 +84,36 @@ export class DownloadUrlDriver implements DownloadUrlSyncReader, FrontendDriver
83
84
  getUrl(url: URL, ctx?: ComputableCtx): Computable<UrlResult | undefined> | UrlResult | undefined {
84
85
  // wrap result as computable, if we were not given an existing computable context
85
86
  if (ctx === undefined) return Computable.make((c) => this.getUrl(url, c));
87
+ return this.getResult({ type: "url", url }, url.toString(), ctx);
88
+ }
89
+
90
+ getLocalTgz(path: string, mtime: string, ctx: ComputableCtx): UrlResult | undefined;
91
+ getLocalTgz(path: string, mtime: string): Computable<UrlResult | undefined>;
92
+
93
+ /** Mirror of {@link getUrl} for a local `.tgz` archive: lazily unpacks it
94
+ * into the recycled cache (so a live UI keeps the folder pinned) and returns
95
+ * a custom-protocol URL. Keyed on `path + ":" + mtime`, so the unpacked UI is
96
+ * re-derived when the source block changes. */
97
+ getLocalTgz(
98
+ path: string,
99
+ mtime: string,
100
+ ctx?: ComputableCtx,
101
+ ): Computable<UrlResult | undefined> | UrlResult | undefined {
102
+ if (ctx === undefined) return Computable.make((c) => this.getLocalTgz(path, mtime, c));
103
+ return this.getResult({ type: "local-tgz", path, mtime }, `${path}:${mtime}`, ctx);
104
+ }
86
105
 
106
+ private getResult(
107
+ source: DownloadSource,
108
+ key: string,
109
+ ctx: ComputableCtx,
110
+ ): UrlResult | undefined {
87
111
  const callerId = randomUUID();
88
112
 
89
113
  // read as ~ golang's defer
90
- ctx.addOnDestroy(() => this.releasePath(url, callerId));
114
+ ctx.addOnDestroy(() => this.releaseByKey(key, callerId));
91
115
 
92
- const result = this.getUrlNoCtx(url, ctx.watcher, callerId);
116
+ const result = this.getResultNoCtx(source, key, ctx.watcher, callerId);
93
117
  if (result?.url === undefined)
94
118
  ctx.markUnstable(
95
119
  `a path to the downloaded and untared archive might be undefined. The current result: ${result}`,
@@ -98,16 +122,15 @@ export class DownloadUrlDriver implements DownloadUrlSyncReader, FrontendDriver
98
122
  return result;
99
123
  }
100
124
 
101
- getUrlNoCtx(url: URL, w: Watcher, callerId: string) {
102
- const key = url.toString();
103
- const task = this.urlToDownload.get(key);
125
+ private getResultNoCtx(source: DownloadSource, key: string, w: Watcher, callerId: string) {
126
+ const task = this.taskByKey.get(key);
104
127
 
105
128
  if (task !== undefined) {
106
129
  task.attach(w, callerId);
107
130
  return task.getUrl();
108
131
  }
109
132
 
110
- const newTask = this.setNewTask(w, url, callerId);
133
+ const newTask = this.setNewTask(w, source, key, callerId);
111
134
  this.downloadQueue.push({
112
135
  fn: async () => this.downloadUrl(newTask, callerId),
113
136
  recoverableErrorPredicate: (e) => !(e instanceof URLAborted) && !isDownloadNetworkError400(e),
@@ -133,9 +156,8 @@ export class DownloadUrlDriver implements DownloadUrlSyncReader, FrontendDriver
133
156
 
134
157
  /** Removes a directory and aborts a downloading task when all callers
135
158
  * are not interested in it. */
136
- async releasePath(url: URL, callerId: string): Promise<void> {
137
- const key = url.toString();
138
- const task = this.urlToDownload.get(key);
159
+ async releaseByKey(key: string, callerId: string): Promise<void> {
160
+ const task = this.taskByKey.get(key);
139
161
  if (task == undefined) return;
140
162
 
141
163
  if (this.cache.existsFile(task.path)) {
@@ -169,7 +191,7 @@ export class DownloadUrlDriver implements DownloadUrlSyncReader, FrontendDriver
169
191
  this.downloadQueue.stop();
170
192
 
171
193
  await Promise.all(
172
- Array.from(this.urlToDownload.entries()).map(async ([, task]) => {
194
+ Array.from(this.taskByKey.entries()).map(async ([, task]) => {
173
195
  await rmRFDir(task.path);
174
196
  this.cache.removeCache(task);
175
197
 
@@ -181,28 +203,31 @@ export class DownloadUrlDriver implements DownloadUrlSyncReader, FrontendDriver
181
203
  );
182
204
  }
183
205
 
184
- private setNewTask(w: Watcher, url: URL, callerId: string) {
206
+ private setNewTask(w: Watcher, source: DownloadSource, key: string, callerId: string) {
185
207
  const result = new DownloadByUrlTask(
186
208
  this.logger,
187
- this.getFilePath(url),
188
- url,
209
+ this.getExtractionPath(key),
210
+ source,
211
+ key,
189
212
  this.signer,
190
213
  this.saveDir,
191
214
  );
192
215
  result.attach(w, callerId);
193
- this.urlToDownload.set(url.toString(), result);
216
+ this.taskByKey.set(key, result);
194
217
 
195
218
  return result;
196
219
  }
197
220
 
198
221
  private removeTask(task: DownloadByUrlTask, reason: string) {
199
222
  task.abort(reason);
200
- task.change.markChanged(`task for url ${task.url} removed: ${reason}`);
201
- this.urlToDownload.delete(task.url.toString());
223
+ task.change.markChanged(`task for ${task.key} removed: ${reason}`);
224
+ this.taskByKey.delete(task.key);
202
225
  }
203
226
 
204
- private getFilePath(url: URL): string {
205
- const sha256 = createHash("sha256").update(url.toString()).digest("hex");
227
+ /** Directory an archive (url or local file) is extracted into; keyed by a
228
+ * hash of the task key so the same source maps to a stable on-disk path. */
229
+ private getExtractionPath(key: string): string {
230
+ const sha256 = createHash("sha256").update(key).digest("hex");
206
231
  return path.join(this.saveDir, sha256);
207
232
  }
208
233
  }
@@ -0,0 +1,106 @@
1
+ import { ConsoleLoggerAdapter, HmacSha256Signer } from "@milaboratories/ts-helpers";
2
+ import * as os from "node:os";
3
+ import { createHash } from "node:crypto";
4
+ import { text } from "node:stream/consumers";
5
+ import { Readable } from "node:stream";
6
+ import { pipeline } from "node:stream/promises";
7
+ import * as fs from "node:fs";
8
+ import * as fsp from "node:fs/promises";
9
+ import * as path from "node:path";
10
+ import * as zlib from "node:zlib";
11
+ import * as tar from "tar-fs";
12
+ import { Agent } from "undici";
13
+ import { DownloadUrlDriver } from "./driver";
14
+ import { test, expect } from "vitest";
15
+
16
+ function genSigner() {
17
+ return new HmacSha256Signer(HmacSha256Signer.generateSecret());
18
+ }
19
+
20
+ /** Packs a tiny UI folder into a real gzipped `ui.tgz` at `tgzPath`. */
21
+ async function makeUiTgz(tgzPath: string): Promise<void> {
22
+ const srcDir = await fsp.mkdtemp(path.join(os.tmpdir(), "ui-src-"));
23
+ await fsp.writeFile(path.join(srcDir, "index.html"), "<html>hello local tgz</html>");
24
+ await fsp.writeFile(path.join(srcDir, "index.js"), "'use strict'; console.log('ui');");
25
+ await pipeline(tar.pack(srcDir), zlib.createGzip(), fs.createWriteStream(tgzPath));
26
+ }
27
+
28
+ test("getLocalTgz unpacks a local ui.tgz, serves a signed path, and caches by path:mtime", async () => {
29
+ const logger = new ConsoleLoggerAdapter();
30
+ const saveDir = await fsp.mkdtemp(path.join(os.tmpdir(), "local-tgz-save-"));
31
+ const tgzPath = path.join(await fsp.mkdtemp(path.join(os.tmpdir(), "local-tgz-src-")), "ui.tgz");
32
+ await makeUiTgz(tgzPath);
33
+
34
+ // local-tgz never touches the network; a bare dispatcher is enough.
35
+ const driver = new DownloadUrlDriver(logger, new Agent(), saveDir, genSigner());
36
+ const mtime = "1782150933623";
37
+
38
+ const c = driver.getLocalTgz(tgzPath, mtime);
39
+
40
+ const first = await c.getValue();
41
+ expect(first).toBeUndefined();
42
+
43
+ await c.awaitChange();
44
+
45
+ const result = await c.getValue();
46
+ expect(result?.error).toBeUndefined();
47
+ expect(result?.url).not.toBeUndefined();
48
+
49
+ // The served URL resolves to the unpacked index.html.
50
+ const u = new URL(result!.url!);
51
+ u.pathname = "index.html";
52
+ const indexPath = driver.getPathForBlockUI(u.toString());
53
+ const html = await text(Readable.toWeb(fs.createReadStream(indexPath)));
54
+ expect(html).toContain("hello local tgz");
55
+
56
+ // Cache key is sha256(path + ":" + mtime) — the extraction dir lives there.
57
+ const expectedDir = path.join(
58
+ saveDir,
59
+ createHash("sha256").update(`${tgzPath}:${mtime}`).digest("hex"),
60
+ );
61
+ expect(fs.existsSync(expectedDir)).toBe(true);
62
+
63
+ // A second call (same path:mtime) is a cache hit — same served folder, no
64
+ // re-unpack, refcount still held by the first computable.
65
+ const c2 = driver.getLocalTgz(tgzPath, mtime);
66
+ let hit = await c2.getValue();
67
+ if (hit === undefined) {
68
+ await c2.awaitChange();
69
+ hit = await c2.getValue();
70
+ }
71
+ expect(hit?.url).toBe(result!.url);
72
+
73
+ c.resetState();
74
+ c2.resetState();
75
+ await driver.releaseAll();
76
+ });
77
+
78
+ test("getLocalTgz re-derives the extraction dir when mtime changes", async () => {
79
+ const logger = new ConsoleLoggerAdapter();
80
+ const saveDir = await fsp.mkdtemp(path.join(os.tmpdir(), "local-tgz-save2-"));
81
+ const tgzPath = path.join(await fsp.mkdtemp(path.join(os.tmpdir(), "local-tgz-src2-")), "ui.tgz");
82
+ await makeUiTgz(tgzPath);
83
+
84
+ const driver = new DownloadUrlDriver(logger, new Agent(), saveDir, genSigner());
85
+
86
+ const dirFor = (mtime: string) =>
87
+ path.join(saveDir, createHash("sha256").update(`${tgzPath}:${mtime}`).digest("hex"));
88
+
89
+ const cA = driver.getLocalTgz(tgzPath, "1");
90
+ expect(await cA.getValue()).toBeUndefined();
91
+ await cA.awaitChange();
92
+ expect((await cA.getValue())?.url).not.toBeUndefined();
93
+
94
+ const cB = driver.getLocalTgz(tgzPath, "2");
95
+ expect(await cB.getValue()).toBeUndefined();
96
+ await cB.awaitChange();
97
+ expect((await cB.getValue())?.url).not.toBeUndefined();
98
+
99
+ expect(dirFor("1")).not.toBe(dirFor("2"));
100
+ expect(fs.existsSync(dirFor("1"))).toBe(true);
101
+ expect(fs.existsSync(dirFor("2"))).toBe(true);
102
+
103
+ cA.resetState();
104
+ cB.resetState();
105
+ await driver.releaseAll();
106
+ });