@slicemachine/manager 0.17.8-beta.5 → 0.17.8

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 (347) hide show
  1. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/config.cjs +91 -0
  2. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/config.cjs.map +1 -0
  3. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/config.js +91 -0
  4. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/config.js.map +1 -0
  5. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/constants.cjs +17 -0
  6. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/constants.cjs.map +1 -0
  7. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/constants.js +17 -0
  8. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/constants.js.map +1 -0
  9. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/core-client.cjs +190 -0
  10. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/core-client.cjs.map +1 -0
  11. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/core-client.js +190 -0
  12. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/core-client.js.map +1 -0
  13. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/identify.cjs +90 -0
  14. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/identify.cjs.map +1 -0
  15. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/identify.js +90 -0
  16. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/identify.js.map +1 -0
  17. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/logger.cjs +64 -0
  18. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/logger.cjs.map +1 -0
  19. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/logger.js +64 -0
  20. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/logger.js.map +1 -0
  21. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/messages.cjs +17 -0
  22. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/messages.cjs.map +1 -0
  23. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/messages.js +17 -0
  24. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/messages.js.map +1 -0
  25. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/plugins/destination.cjs +323 -0
  26. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/plugins/destination.cjs.map +1 -0
  27. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/plugins/destination.js +323 -0
  28. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/plugins/destination.js.map +1 -0
  29. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/revenue.cjs +55 -0
  30. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/revenue.cjs.map +1 -0
  31. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/revenue.js +55 -0
  32. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/revenue.js.map +1 -0
  33. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/timeline.cjs +251 -0
  34. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/timeline.cjs.map +1 -0
  35. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/timeline.js +251 -0
  36. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/timeline.js.map +1 -0
  37. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/transports/base.cjs +103 -0
  38. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/transports/base.cjs.map +1 -0
  39. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/transports/base.js +103 -0
  40. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/transports/base.js.map +1 -0
  41. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/chunk.cjs +15 -0
  42. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/chunk.cjs.map +1 -0
  43. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/chunk.js +15 -0
  44. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/chunk.js.map +1 -0
  45. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/debug.cjs +126 -0
  46. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/debug.cjs.map +1 -0
  47. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/debug.js +126 -0
  48. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/debug.js.map +1 -0
  49. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/event-builder.cjs +34 -0
  50. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/event-builder.cjs.map +1 -0
  51. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/event-builder.js +34 -0
  52. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/event-builder.js.map +1 -0
  53. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/result-builder.cjs +14 -0
  54. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/result-builder.cjs.map +1 -0
  55. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/result-builder.js +14 -0
  56. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/result-builder.js.map +1 -0
  57. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/return-wrapper.cjs +9 -0
  58. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/return-wrapper.cjs.map +1 -0
  59. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/return-wrapper.js +9 -0
  60. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/return-wrapper.js.map +1 -0
  61. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/uuid.cjs +25 -0
  62. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/uuid.cjs.map +1 -0
  63. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/uuid.js +25 -0
  64. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/uuid.js.map +1 -0
  65. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/valid-properties.cjs +58 -0
  66. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/valid-properties.cjs.map +1 -0
  67. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/valid-properties.js +58 -0
  68. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/valid-properties.js.map +1 -0
  69. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/config.cjs +21 -0
  70. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/config.cjs.map +1 -0
  71. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/config.js +21 -0
  72. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/config.js.map +1 -0
  73. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/index.cjs +23 -0
  74. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/index.cjs.map +1 -0
  75. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/index.js +24 -0
  76. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/index.js.map +1 -0
  77. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/node-client.cjs +81 -0
  78. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/node-client.cjs.map +1 -0
  79. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/node-client.js +81 -0
  80. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/node-client.js.map +1 -0
  81. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/plugins/context.cjs +37 -0
  82. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/plugins/context.cjs.map +1 -0
  83. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/plugins/context.js +37 -0
  84. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/plugins/context.js.map +1 -0
  85. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/transports/http.cjs +85 -0
  86. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/transports/http.cjs.map +1 -0
  87. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/transports/http.js +67 -0
  88. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/transports/http.js.map +1 -0
  89. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/version.cjs +5 -0
  90. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/version.cjs.map +1 -0
  91. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/version.js +5 -0
  92. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/version.js.map +1 -0
  93. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/event.cjs +30 -0
  94. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/event.cjs.map +1 -0
  95. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/event.js +33 -0
  96. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/event.js.map +1 -0
  97. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/index.cjs +41 -0
  98. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/index.cjs.map +1 -0
  99. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/index.js +17 -0
  100. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/index.js.map +1 -0
  101. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/logger.cjs +11 -0
  102. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/logger.cjs.map +1 -0
  103. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/logger.js +12 -0
  104. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/logger.js.map +1 -0
  105. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/plugin.cjs +9 -0
  106. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/plugin.cjs.map +1 -0
  107. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/plugin.js +10 -0
  108. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/plugin.js.map +1 -0
  109. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/server-zone.cjs +9 -0
  110. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/server-zone.cjs.map +1 -0
  111. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/server-zone.js +10 -0
  112. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/server-zone.js.map +1 -0
  113. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/status.cjs +15 -0
  114. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/status.cjs.map +1 -0
  115. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/status.js +16 -0
  116. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/status.js.map +1 -0
  117. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/transport.cjs +9 -0
  118. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/transport.cjs.map +1 -0
  119. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/transport.js +10 -0
  120. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/transport.js.map +1 -0
  121. package/dist/_node_modules/@amplitude/experiment-core/dist/experiment-core.esm.cjs +1247 -0
  122. package/dist/_node_modules/@amplitude/experiment-core/dist/experiment-core.esm.cjs.map +1 -0
  123. package/dist/_node_modules/@amplitude/experiment-core/dist/experiment-core.esm.js +1247 -0
  124. package/dist/_node_modules/@amplitude/experiment-core/dist/experiment-core.esm.js.map +1 -0
  125. package/dist/_node_modules/@amplitude/experiment-node-server/dist/gen/version.cjs +7 -0
  126. package/dist/_node_modules/@amplitude/experiment-node-server/dist/gen/version.cjs.map +1 -0
  127. package/dist/_node_modules/@amplitude/experiment-node-server/dist/gen/version.js +8 -0
  128. package/dist/_node_modules/@amplitude/experiment-node-server/dist/gen/version.js.map +1 -0
  129. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-filter.cjs +29 -0
  130. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-filter.cjs.map +1 -0
  131. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-filter.js +30 -0
  132. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-filter.js.map +1 -0
  133. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-service.cjs +92 -0
  134. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-service.cjs.map +1 -0
  135. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-service.js +91 -0
  136. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-service.js.map +1 -0
  137. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment.cjs +25 -0
  138. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment.cjs.map +1 -0
  139. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment.js +26 -0
  140. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment.js.map +1 -0
  141. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/cookie.cjs +84 -0
  142. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/cookie.cjs.map +1 -0
  143. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/cookie.js +85 -0
  144. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/cookie.js.map +1 -0
  145. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/factory.cjs +37 -0
  146. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/factory.cjs.map +1 -0
  147. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/factory.js +38 -0
  148. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/factory.js.map +1 -0
  149. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/index.cjs +61 -0
  150. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/index.cjs.map +1 -0
  151. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/index.js +60 -0
  152. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/index.js.map +1 -0
  153. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/cache.cjs +87 -0
  154. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/cache.cjs.map +1 -0
  155. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/cache.js +88 -0
  156. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/cache.js.map +1 -0
  157. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/client.cjs +204 -0
  158. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/client.cjs.map +1 -0
  159. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/client.js +205 -0
  160. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/client.js.map +1 -0
  161. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/fetcher.cjs +82 -0
  162. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/fetcher.cjs.map +1 -0
  163. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/fetcher.js +83 -0
  164. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/fetcher.js.map +1 -0
  165. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/poller.cjs +121 -0
  166. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/poller.cjs.map +1 -0
  167. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/poller.js +122 -0
  168. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/poller.js.map +1 -0
  169. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/remote/client.cjs +166 -0
  170. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/remote/client.cjs.map +1 -0
  171. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/remote/client.js +167 -0
  172. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/remote/client.js.map +1 -0
  173. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/transport/http.cjs +105 -0
  174. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/transport/http.cjs.map +1 -0
  175. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/transport/http.js +106 -0
  176. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/transport/http.js.map +1 -0
  177. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/types/config.cjs +38 -0
  178. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/types/config.cjs.map +1 -0
  179. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/types/config.js +39 -0
  180. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/types/config.js.map +1 -0
  181. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/backoff.cjs +51 -0
  182. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/backoff.cjs.map +1 -0
  183. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/backoff.js +52 -0
  184. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/backoff.js.map +1 -0
  185. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/cache.cjs +92 -0
  186. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/cache.cjs.map +1 -0
  187. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/cache.js +93 -0
  188. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/cache.js.map +1 -0
  189. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/hash.cjs +18 -0
  190. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/hash.cjs.map +1 -0
  191. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/hash.js +19 -0
  192. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/hash.js.map +1 -0
  193. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/logger.cjs +20 -0
  194. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/logger.cjs.map +1 -0
  195. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/logger.js +21 -0
  196. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/logger.js.map +1 -0
  197. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/time.cjs +13 -0
  198. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/time.cjs.map +1 -0
  199. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/time.js +14 -0
  200. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/time.js.map +1 -0
  201. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/user.cjs +44 -0
  202. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/user.cjs.map +1 -0
  203. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/user.js +45 -0
  204. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/user.js.map +1 -0
  205. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/variant.cjs +39 -0
  206. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/variant.cjs.map +1 -0
  207. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/variant.js +38 -0
  208. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/variant.js.map +1 -0
  209. package/dist/_node_modules/cross-spawn/index.cjs +1 -1
  210. package/dist/_node_modules/cross-spawn/index.js +1 -1
  211. package/dist/_node_modules/execa/_node_modules/get-stream/index.cjs +1 -1
  212. package/dist/_node_modules/execa/_node_modules/get-stream/index.js +1 -1
  213. package/dist/_node_modules/path-key/index.cjs +1 -1
  214. package/dist/_node_modules/path-key/index.js +1 -1
  215. package/dist/_node_modules/signal-exit/index.cjs +1 -1
  216. package/dist/_node_modules/signal-exit/index.js +1 -1
  217. package/dist/_node_modules/tslib/tslib.es6.cjs +206 -0
  218. package/dist/_node_modules/tslib/tslib.es6.cjs.map +1 -0
  219. package/dist/_node_modules/tslib/tslib.es6.js +207 -0
  220. package/dist/_node_modules/tslib/tslib.es6.js.map +1 -0
  221. package/dist/_virtual/_commonjsHelpers.cjs +30 -0
  222. package/dist/_virtual/_commonjsHelpers.cjs.map +1 -1
  223. package/dist/_virtual/_commonjsHelpers.js +30 -0
  224. package/dist/_virtual/_commonjsHelpers.js.map +1 -1
  225. package/dist/_virtual/assignment-filter.cjs +5 -0
  226. package/dist/_virtual/assignment-filter.cjs.map +1 -0
  227. package/dist/_virtual/assignment-filter.js +5 -0
  228. package/dist/_virtual/assignment-filter.js.map +1 -0
  229. package/dist/_virtual/assignment-service.cjs +5 -0
  230. package/dist/_virtual/assignment-service.cjs.map +1 -0
  231. package/dist/_virtual/assignment-service.js +5 -0
  232. package/dist/_virtual/assignment-service.js.map +1 -0
  233. package/dist/_virtual/assignment.cjs +5 -0
  234. package/dist/_virtual/assignment.cjs.map +1 -0
  235. package/dist/_virtual/assignment.js +5 -0
  236. package/dist/_virtual/assignment.js.map +1 -0
  237. package/dist/_virtual/backoff.cjs +5 -0
  238. package/dist/_virtual/backoff.cjs.map +1 -0
  239. package/dist/_virtual/backoff.js +5 -0
  240. package/dist/_virtual/backoff.js.map +1 -0
  241. package/dist/_virtual/cache.cjs +5 -0
  242. package/dist/_virtual/cache.cjs.map +1 -0
  243. package/dist/_virtual/cache.js +5 -0
  244. package/dist/_virtual/cache.js.map +1 -0
  245. package/dist/_virtual/cache2.cjs +5 -0
  246. package/dist/_virtual/cache2.cjs.map +1 -0
  247. package/dist/_virtual/cache2.js +5 -0
  248. package/dist/_virtual/cache2.js.map +1 -0
  249. package/dist/_virtual/client.cjs +5 -0
  250. package/dist/_virtual/client.cjs.map +1 -0
  251. package/dist/_virtual/client.js +5 -0
  252. package/dist/_virtual/client.js.map +1 -0
  253. package/dist/_virtual/client2.cjs +5 -0
  254. package/dist/_virtual/client2.cjs.map +1 -0
  255. package/dist/_virtual/client2.js +5 -0
  256. package/dist/_virtual/client2.js.map +1 -0
  257. package/dist/_virtual/config.cjs +5 -0
  258. package/dist/_virtual/config.cjs.map +1 -0
  259. package/dist/_virtual/config.js +5 -0
  260. package/dist/_virtual/config.js.map +1 -0
  261. package/dist/_virtual/cookie.cjs +5 -0
  262. package/dist/_virtual/cookie.cjs.map +1 -0
  263. package/dist/_virtual/cookie.js +5 -0
  264. package/dist/_virtual/cookie.js.map +1 -0
  265. package/dist/_virtual/experiment-core.esm.cjs +6 -0
  266. package/dist/_virtual/experiment-core.esm.cjs.map +1 -0
  267. package/dist/_virtual/experiment-core.esm.js +7 -0
  268. package/dist/_virtual/experiment-core.esm.js.map +1 -0
  269. package/dist/_virtual/factory.cjs +5 -0
  270. package/dist/_virtual/factory.cjs.map +1 -0
  271. package/dist/_virtual/factory.js +5 -0
  272. package/dist/_virtual/factory.js.map +1 -0
  273. package/dist/_virtual/fetcher.cjs +5 -0
  274. package/dist/_virtual/fetcher.cjs.map +1 -0
  275. package/dist/_virtual/fetcher.js +5 -0
  276. package/dist/_virtual/fetcher.js.map +1 -0
  277. package/dist/_virtual/hash.cjs +5 -0
  278. package/dist/_virtual/hash.cjs.map +1 -0
  279. package/dist/_virtual/hash.js +5 -0
  280. package/dist/_virtual/hash.js.map +1 -0
  281. package/dist/_virtual/http.cjs +5 -0
  282. package/dist/_virtual/http.cjs.map +1 -0
  283. package/dist/_virtual/http.js +5 -0
  284. package/dist/_virtual/http.js.map +1 -0
  285. package/dist/_virtual/index.cjs +2 -2
  286. package/dist/_virtual/index.js +2 -2
  287. package/dist/_virtual/index2.cjs +4 -3
  288. package/dist/_virtual/index2.cjs.map +1 -1
  289. package/dist/_virtual/index2.js +4 -2
  290. package/dist/_virtual/index2.js.map +1 -1
  291. package/dist/_virtual/index3.cjs +2 -2
  292. package/dist/_virtual/index3.js +2 -2
  293. package/dist/_virtual/index4.cjs +2 -2
  294. package/dist/_virtual/index4.js +2 -2
  295. package/dist/_virtual/index5.cjs +5 -0
  296. package/dist/_virtual/index5.cjs.map +1 -0
  297. package/dist/_virtual/index5.js +5 -0
  298. package/dist/_virtual/index5.js.map +1 -0
  299. package/dist/_virtual/index6.cjs +5 -0
  300. package/dist/_virtual/index6.cjs.map +1 -0
  301. package/dist/_virtual/index6.js +5 -0
  302. package/dist/_virtual/index6.js.map +1 -0
  303. package/dist/_virtual/logger.cjs +5 -0
  304. package/dist/_virtual/logger.cjs.map +1 -0
  305. package/dist/_virtual/logger.js +5 -0
  306. package/dist/_virtual/logger.js.map +1 -0
  307. package/dist/_virtual/poller.cjs +5 -0
  308. package/dist/_virtual/poller.cjs.map +1 -0
  309. package/dist/_virtual/poller.js +5 -0
  310. package/dist/_virtual/poller.js.map +1 -0
  311. package/dist/_virtual/time.cjs +5 -0
  312. package/dist/_virtual/time.cjs.map +1 -0
  313. package/dist/_virtual/time.js +5 -0
  314. package/dist/_virtual/time.js.map +1 -0
  315. package/dist/_virtual/user.cjs +5 -0
  316. package/dist/_virtual/user.cjs.map +1 -0
  317. package/dist/_virtual/user.js +5 -0
  318. package/dist/_virtual/user.js.map +1 -0
  319. package/dist/_virtual/variant.cjs +5 -0
  320. package/dist/_virtual/variant.cjs.map +1 -0
  321. package/dist/_virtual/variant.js +5 -0
  322. package/dist/_virtual/variant.js.map +1 -0
  323. package/dist/_virtual/version.cjs +5 -0
  324. package/dist/_virtual/version.cjs.map +1 -0
  325. package/dist/_virtual/version.js +5 -0
  326. package/dist/_virtual/version.js.map +1 -0
  327. package/dist/constants/API_TOKENS.cjs +8 -2
  328. package/dist/constants/API_TOKENS.cjs.map +1 -1
  329. package/dist/constants/API_TOKENS.d.ts +1 -0
  330. package/dist/constants/API_TOKENS.js +8 -2
  331. package/dist/constants/API_TOKENS.js.map +1 -1
  332. package/dist/index.d.ts +1 -0
  333. package/dist/managers/telemetry/TelemetryManager.cjs +28 -0
  334. package/dist/managers/telemetry/TelemetryManager.cjs.map +1 -1
  335. package/dist/managers/telemetry/TelemetryManager.d.ts +4 -0
  336. package/dist/managers/telemetry/TelemetryManager.js +28 -0
  337. package/dist/managers/telemetry/TelemetryManager.js.map +1 -1
  338. package/dist/managers/telemetry/types.cjs +8 -2
  339. package/dist/managers/telemetry/types.cjs.map +1 -1
  340. package/dist/managers/telemetry/types.d.ts +11 -2
  341. package/dist/managers/telemetry/types.js +8 -2
  342. package/dist/managers/telemetry/types.js.map +1 -1
  343. package/package.json +4 -4
  344. package/src/constants/API_TOKENS.ts +9 -2
  345. package/src/index.ts +2 -0
  346. package/src/managers/telemetry/TelemetryManager.ts +42 -1
  347. package/src/managers/telemetry/types.ts +27 -1
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ const _commonjsHelpers = require("../../../../../../_virtual/_commonjsHelpers.cjs");
3
+ const poller = require("../../../../../../_virtual/poller.cjs");
4
+ require("../types/config.cjs");
5
+ require("../util/backoff.cjs");
6
+ require("../util/logger.cjs");
7
+ const config = require("../../../../../../_virtual/config.cjs");
8
+ const backoff = require("../../../../../../_virtual/backoff.cjs");
9
+ const logger = require("../../../../../../_virtual/logger.cjs");
10
+ var __awaiter = _commonjsHelpers.commonjsGlobal && _commonjsHelpers.commonjsGlobal.__awaiter || function(thisArg, _arguments, P, generator) {
11
+ function adopt(value) {
12
+ return value instanceof P ? value : new P(function(resolve) {
13
+ resolve(value);
14
+ });
15
+ }
16
+ return new (P || (P = Promise))(function(resolve, reject) {
17
+ function fulfilled(value) {
18
+ try {
19
+ step(generator.next(value));
20
+ } catch (e) {
21
+ reject(e);
22
+ }
23
+ }
24
+ function rejected(value) {
25
+ try {
26
+ step(generator["throw"](value));
27
+ } catch (e) {
28
+ reject(e);
29
+ }
30
+ }
31
+ function step(result) {
32
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
33
+ }
34
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
35
+ });
36
+ };
37
+ Object.defineProperty(poller.__exports, "__esModule", { value: true });
38
+ poller.__exports.FlagConfigPoller = void 0;
39
+ const config_1 = config.__exports;
40
+ const backoff_1 = backoff.__exports;
41
+ const logger_1 = logger.__exports;
42
+ const BACKOFF_POLICY = {
43
+ attempts: 5,
44
+ min: 1,
45
+ max: 1,
46
+ scalar: 1
47
+ };
48
+ class FlagConfigPoller {
49
+ constructor(fetcher, cache, pollingIntervalMillis = config_1.LocalEvaluationDefaults.flagConfigPollingIntervalMillis, debug = false) {
50
+ this.fetcher = fetcher;
51
+ this.cache = cache;
52
+ this.pollingIntervalMillis = pollingIntervalMillis;
53
+ this.logger = new logger_1.ConsoleLogger(debug);
54
+ }
55
+ /**
56
+ * Fetch initial flag configurations and start polling for updates.
57
+ *
58
+ * You must call this function to begin polling for flag config updates.
59
+ * The promise returned by this function is resolved when the initial call
60
+ * to fetch the flag configuration completes.
61
+ *
62
+ * Calling this function while the poller is already running does nothing.
63
+ */
64
+ start(onChange) {
65
+ return __awaiter(this, void 0, void 0, function* () {
66
+ if (!this.poller) {
67
+ this.logger.debug("[Experiment] poller - start");
68
+ this.poller = setInterval(() => __awaiter(this, void 0, void 0, function* () {
69
+ try {
70
+ yield this.update(onChange);
71
+ } catch (e) {
72
+ this.logger.debug("[Experiment] flag config update failed", e);
73
+ }
74
+ }), this.pollingIntervalMillis);
75
+ yield (0, backoff_1.doWithBackoff)(() => __awaiter(this, void 0, void 0, function* () {
76
+ yield this.update(onChange);
77
+ }), BACKOFF_POLICY);
78
+ }
79
+ });
80
+ }
81
+ /**
82
+ * Stop polling for flag configurations.
83
+ *
84
+ * Calling this function while the poller is not running will do nothing.
85
+ */
86
+ stop() {
87
+ if (this.poller) {
88
+ this.logger.debug("[Experiment] poller - stop");
89
+ clearTimeout(this.poller);
90
+ this.poller = void 0;
91
+ }
92
+ }
93
+ /**
94
+ * Force a flag config fetch and cache the update with an optional callback
95
+ * which gets called if the flag configs change in any way.
96
+ *
97
+ * @param onChange optional callback which will get called if the flag configs
98
+ * in the cache have changed.
99
+ */
100
+ update(onChange) {
101
+ return __awaiter(this, void 0, void 0, function* () {
102
+ this.logger.debug("[Experiment] updating flag configs");
103
+ const flagConfigs = yield this.fetcher.fetch();
104
+ let changed = false;
105
+ if (onChange) {
106
+ const current = yield this.cache.getAll();
107
+ if (!Object.is(current, flagConfigs)) {
108
+ changed = true;
109
+ }
110
+ }
111
+ yield this.cache.clear();
112
+ yield this.cache.putAll(flagConfigs);
113
+ if (changed) {
114
+ yield onChange(this.cache);
115
+ }
116
+ });
117
+ }
118
+ }
119
+ poller.__exports.FlagConfigPoller = FlagConfigPoller;
120
+ module.exports = poller.__exports;
121
+ //# sourceMappingURL=poller.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poller.cjs","sources":["../../../../../../../../../node_modules/@amplitude/experiment-node-server/dist/src/local/poller.js"],"sourcesContent":["\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FlagConfigPoller = void 0;\nconst config_1 = require(\"../types/config\");\nconst backoff_1 = require(\"../util/backoff\");\nconst logger_1 = require(\"../util/logger\");\nconst BACKOFF_POLICY = {\n attempts: 5,\n min: 1,\n max: 1,\n scalar: 1,\n};\nclass FlagConfigPoller {\n constructor(fetcher, cache, pollingIntervalMillis = config_1.LocalEvaluationDefaults.flagConfigPollingIntervalMillis, debug = false) {\n this.fetcher = fetcher;\n this.cache = cache;\n this.pollingIntervalMillis = pollingIntervalMillis;\n this.logger = new logger_1.ConsoleLogger(debug);\n }\n /**\n * Fetch initial flag configurations and start polling for updates.\n *\n * You must call this function to begin polling for flag config updates.\n * The promise returned by this function is resolved when the initial call\n * to fetch the flag configuration completes.\n *\n * Calling this function while the poller is already running does nothing.\n */\n start(onChange) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.poller) {\n this.logger.debug('[Experiment] poller - start');\n this.poller = setInterval(() => __awaiter(this, void 0, void 0, function* () {\n try {\n yield this.update(onChange);\n }\n catch (e) {\n this.logger.debug('[Experiment] flag config update failed', e);\n }\n }), this.pollingIntervalMillis);\n // Fetch initial flag configs and await the result.\n yield (0, backoff_1.doWithBackoff)(() => __awaiter(this, void 0, void 0, function* () {\n yield this.update(onChange);\n }), BACKOFF_POLICY);\n }\n });\n }\n /**\n * Stop polling for flag configurations.\n *\n * Calling this function while the poller is not running will do nothing.\n */\n stop() {\n if (this.poller) {\n this.logger.debug('[Experiment] poller - stop');\n clearTimeout(this.poller);\n this.poller = undefined;\n }\n }\n /**\n * Force a flag config fetch and cache the update with an optional callback\n * which gets called if the flag configs change in any way.\n *\n * @param onChange optional callback which will get called if the flag configs\n * in the cache have changed.\n */\n update(onChange) {\n return __awaiter(this, void 0, void 0, function* () {\n this.logger.debug('[Experiment] updating flag configs');\n const flagConfigs = yield this.fetcher.fetch();\n let changed = false;\n if (onChange) {\n const current = yield this.cache.getAll();\n if (!Object.is(current, flagConfigs)) {\n changed = true;\n }\n }\n yield this.cache.clear();\n yield this.cache.putAll(flagConfigs);\n if (changed) {\n yield onChange(this.cache);\n }\n });\n }\n}\nexports.FlagConfigPoller = FlagConfigPoller;\n"],"names":["this","poller","require$$0","require$$1","require$$2"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,122 @@
1
+ import { commonjsGlobal } from "../../../../../../_virtual/_commonjsHelpers.js";
2
+ import { __exports as poller } from "../../../../../../_virtual/poller.js";
3
+ import "../types/config.js";
4
+ import "../util/backoff.js";
5
+ import "../util/logger.js";
6
+ import { __exports as config } from "../../../../../../_virtual/config.js";
7
+ import { __exports as backoff } from "../../../../../../_virtual/backoff.js";
8
+ import { __exports as logger } from "../../../../../../_virtual/logger.js";
9
+ var __awaiter = commonjsGlobal && commonjsGlobal.__awaiter || function(thisArg, _arguments, P, generator) {
10
+ function adopt(value) {
11
+ return value instanceof P ? value : new P(function(resolve) {
12
+ resolve(value);
13
+ });
14
+ }
15
+ return new (P || (P = Promise))(function(resolve, reject) {
16
+ function fulfilled(value) {
17
+ try {
18
+ step(generator.next(value));
19
+ } catch (e) {
20
+ reject(e);
21
+ }
22
+ }
23
+ function rejected(value) {
24
+ try {
25
+ step(generator["throw"](value));
26
+ } catch (e) {
27
+ reject(e);
28
+ }
29
+ }
30
+ function step(result) {
31
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
32
+ }
33
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
34
+ });
35
+ };
36
+ Object.defineProperty(poller, "__esModule", { value: true });
37
+ poller.FlagConfigPoller = void 0;
38
+ const config_1 = config;
39
+ const backoff_1 = backoff;
40
+ const logger_1 = logger;
41
+ const BACKOFF_POLICY = {
42
+ attempts: 5,
43
+ min: 1,
44
+ max: 1,
45
+ scalar: 1
46
+ };
47
+ class FlagConfigPoller {
48
+ constructor(fetcher, cache, pollingIntervalMillis = config_1.LocalEvaluationDefaults.flagConfigPollingIntervalMillis, debug = false) {
49
+ this.fetcher = fetcher;
50
+ this.cache = cache;
51
+ this.pollingIntervalMillis = pollingIntervalMillis;
52
+ this.logger = new logger_1.ConsoleLogger(debug);
53
+ }
54
+ /**
55
+ * Fetch initial flag configurations and start polling for updates.
56
+ *
57
+ * You must call this function to begin polling for flag config updates.
58
+ * The promise returned by this function is resolved when the initial call
59
+ * to fetch the flag configuration completes.
60
+ *
61
+ * Calling this function while the poller is already running does nothing.
62
+ */
63
+ start(onChange) {
64
+ return __awaiter(this, void 0, void 0, function* () {
65
+ if (!this.poller) {
66
+ this.logger.debug("[Experiment] poller - start");
67
+ this.poller = setInterval(() => __awaiter(this, void 0, void 0, function* () {
68
+ try {
69
+ yield this.update(onChange);
70
+ } catch (e) {
71
+ this.logger.debug("[Experiment] flag config update failed", e);
72
+ }
73
+ }), this.pollingIntervalMillis);
74
+ yield (0, backoff_1.doWithBackoff)(() => __awaiter(this, void 0, void 0, function* () {
75
+ yield this.update(onChange);
76
+ }), BACKOFF_POLICY);
77
+ }
78
+ });
79
+ }
80
+ /**
81
+ * Stop polling for flag configurations.
82
+ *
83
+ * Calling this function while the poller is not running will do nothing.
84
+ */
85
+ stop() {
86
+ if (this.poller) {
87
+ this.logger.debug("[Experiment] poller - stop");
88
+ clearTimeout(this.poller);
89
+ this.poller = void 0;
90
+ }
91
+ }
92
+ /**
93
+ * Force a flag config fetch and cache the update with an optional callback
94
+ * which gets called if the flag configs change in any way.
95
+ *
96
+ * @param onChange optional callback which will get called if the flag configs
97
+ * in the cache have changed.
98
+ */
99
+ update(onChange) {
100
+ return __awaiter(this, void 0, void 0, function* () {
101
+ this.logger.debug("[Experiment] updating flag configs");
102
+ const flagConfigs = yield this.fetcher.fetch();
103
+ let changed = false;
104
+ if (onChange) {
105
+ const current = yield this.cache.getAll();
106
+ if (!Object.is(current, flagConfigs)) {
107
+ changed = true;
108
+ }
109
+ }
110
+ yield this.cache.clear();
111
+ yield this.cache.putAll(flagConfigs);
112
+ if (changed) {
113
+ yield onChange(this.cache);
114
+ }
115
+ });
116
+ }
117
+ }
118
+ poller.FlagConfigPoller = FlagConfigPoller;
119
+ export {
120
+ poller as default
121
+ };
122
+ //# sourceMappingURL=poller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poller.js","sources":["../../../../../../../../../node_modules/@amplitude/experiment-node-server/dist/src/local/poller.js"],"sourcesContent":["\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FlagConfigPoller = void 0;\nconst config_1 = require(\"../types/config\");\nconst backoff_1 = require(\"../util/backoff\");\nconst logger_1 = require(\"../util/logger\");\nconst BACKOFF_POLICY = {\n attempts: 5,\n min: 1,\n max: 1,\n scalar: 1,\n};\nclass FlagConfigPoller {\n constructor(fetcher, cache, pollingIntervalMillis = config_1.LocalEvaluationDefaults.flagConfigPollingIntervalMillis, debug = false) {\n this.fetcher = fetcher;\n this.cache = cache;\n this.pollingIntervalMillis = pollingIntervalMillis;\n this.logger = new logger_1.ConsoleLogger(debug);\n }\n /**\n * Fetch initial flag configurations and start polling for updates.\n *\n * You must call this function to begin polling for flag config updates.\n * The promise returned by this function is resolved when the initial call\n * to fetch the flag configuration completes.\n *\n * Calling this function while the poller is already running does nothing.\n */\n start(onChange) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.poller) {\n this.logger.debug('[Experiment] poller - start');\n this.poller = setInterval(() => __awaiter(this, void 0, void 0, function* () {\n try {\n yield this.update(onChange);\n }\n catch (e) {\n this.logger.debug('[Experiment] flag config update failed', e);\n }\n }), this.pollingIntervalMillis);\n // Fetch initial flag configs and await the result.\n yield (0, backoff_1.doWithBackoff)(() => __awaiter(this, void 0, void 0, function* () {\n yield this.update(onChange);\n }), BACKOFF_POLICY);\n }\n });\n }\n /**\n * Stop polling for flag configurations.\n *\n * Calling this function while the poller is not running will do nothing.\n */\n stop() {\n if (this.poller) {\n this.logger.debug('[Experiment] poller - stop');\n clearTimeout(this.poller);\n this.poller = undefined;\n }\n }\n /**\n * Force a flag config fetch and cache the update with an optional callback\n * which gets called if the flag configs change in any way.\n *\n * @param onChange optional callback which will get called if the flag configs\n * in the cache have changed.\n */\n update(onChange) {\n return __awaiter(this, void 0, void 0, function* () {\n this.logger.debug('[Experiment] updating flag configs');\n const flagConfigs = yield this.fetcher.fetch();\n let changed = false;\n if (onChange) {\n const current = yield this.cache.getAll();\n if (!Object.is(current, flagConfigs)) {\n changed = true;\n }\n }\n yield this.cache.clear();\n yield this.cache.putAll(flagConfigs);\n if (changed) {\n yield onChange(this.cache);\n }\n });\n }\n}\nexports.FlagConfigPoller = FlagConfigPoller;\n"],"names":["this","require$$0","require$$1","require$$2"],"mappings":";;;;;;;;AACA,IAAI,YAAaA,kBAAQA,eAAK,aAAc,SAAU,SAAS,YAAY,GAAG,WAAW;AACrF,WAAS,MAAM,OAAO;AAAE,WAAO,iBAAiB,IAAI,QAAQ,IAAI,EAAE,SAAU,SAAS;AAAE,cAAQ,KAAK;AAAA,IAAE,CAAE;AAAA,EAAI;AAC5G,SAAO,KAAK,MAAM,IAAI,UAAU,SAAU,SAAS,QAAQ;AACvD,aAAS,UAAU,OAAO;AAAE,UAAI;AAAE,aAAK,UAAU,KAAK,KAAK,CAAC;AAAA,MAAE,SAAU,GAAP;AAAY,eAAO,CAAC;AAAA;IAAM;AAC3F,aAAS,SAAS,OAAO;AAAE,UAAI;AAAE,aAAK,UAAU,OAAO,EAAE,KAAK,CAAC;AAAA,MAAI,SAAQ,GAAP;AAAY,eAAO,CAAC;AAAA;IAAM;AAC9F,aAAS,KAAK,QAAQ;AAAE,aAAO,OAAO,QAAQ,OAAO,KAAK,IAAI,MAAM,OAAO,KAAK,EAAE,KAAK,WAAW,QAAQ;AAAA,IAAI;AAC9G,UAAM,YAAY,UAAU,MAAM,SAAS,cAAc,CAAE,CAAA,GAAG,KAAI,CAAE;AAAA,EAC5E,CAAK;AACL;AACA,OAAO,eAAe,QAAS,cAAc,EAAE,OAAO,KAAI,CAAE;AACpC,OAAA,mBAAG;AAC3B,MAAM,WAAWC;AACjB,MAAM,YAAYC;AAClB,MAAM,WAAWC;AACjB,MAAM,iBAAiB;AAAA,EACnB,UAAU;AAAA,EACV,KAAK;AAAA,EACL,KAAK;AAAA,EACL,QAAQ;AACZ;AACA,MAAM,iBAAiB;AAAA,EACnB,YAAY,SAAS,OAAO,wBAAwB,SAAS,wBAAwB,iCAAiC,QAAQ,OAAO;AACjI,SAAK,UAAU;AACf,SAAK,QAAQ;AACb,SAAK,wBAAwB;AAC7B,SAAK,SAAS,IAAI,SAAS,cAAc,KAAK;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUD,MAAM,UAAU;AACZ,WAAO,UAAU,MAAM,QAAQ,QAAQ,aAAa;AAChD,UAAI,CAAC,KAAK,QAAQ;AACd,aAAK,OAAO,MAAM,6BAA6B;AAC/C,aAAK,SAAS,YAAY,MAAM,UAAU,MAAM,QAAQ,QAAQ,aAAa;AACzE,cAAI;AACA,kBAAM,KAAK,OAAO,QAAQ;AAAA,UAC7B,SACM,GAAP;AACI,iBAAK,OAAO,MAAM,0CAA0C,CAAC;AAAA,UAChE;AAAA,QACrB,CAAiB,GAAG,KAAK,qBAAqB;AAE9B,eAAU,GAAA,UAAU,eAAe,MAAM,UAAU,MAAM,QAAQ,QAAQ,aAAa;AAClF,gBAAM,KAAK,OAAO,QAAQ;AAAA,QAC9C,CAAiB,GAAG,cAAc;AAAA,MACrB;AAAA,IACb,CAAS;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,OAAO;AACH,QAAI,KAAK,QAAQ;AACb,WAAK,OAAO,MAAM,4BAA4B;AAC9C,mBAAa,KAAK,MAAM;AACxB,WAAK,SAAS;AAAA,IACjB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQD,OAAO,UAAU;AACb,WAAO,UAAU,MAAM,QAAQ,QAAQ,aAAa;AAChD,WAAK,OAAO,MAAM,oCAAoC;AACtD,YAAM,cAAc,MAAM,KAAK,QAAQ,MAAK;AAC5C,UAAI,UAAU;AACd,UAAI,UAAU;AACV,cAAM,UAAU,MAAM,KAAK,MAAM,OAAM;AACvC,YAAI,CAAC,OAAO,GAAG,SAAS,WAAW,GAAG;AAClC,oBAAU;AAAA,QACb;AAAA,MACJ;AACD,YAAM,KAAK,MAAM;AACjB,YAAM,KAAK,MAAM,OAAO,WAAW;AACnC,UAAI,SAAS;AACT,cAAM,SAAS,KAAK,KAAK;AAAA,MAC5B;AAAA,IACb,CAAS;AAAA,EACJ;AACL;AACA,OAAA,mBAA2B;","x_google_ignoreList":[0]}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ const _commonjsHelpers = require("../../../../../../_virtual/_commonjsHelpers.cjs");
3
+ const client = require("../../../../../../_virtual/client.cjs");
4
+ const experimentCore_esm = require("../../../../../../_virtual/experiment-core.esm.cjs");
5
+ require("../../gen/version.cjs");
6
+ require("../transport/http.cjs");
7
+ require("../types/config.cjs");
8
+ require("../util/time.cjs");
9
+ require("../util/variant.cjs");
10
+ const version = require("../../../../../../_virtual/version.cjs");
11
+ const http = require("../../../../../../_virtual/http.cjs");
12
+ const config = require("../../../../../../_virtual/config.cjs");
13
+ const time = require("../../../../../../_virtual/time.cjs");
14
+ const variant = require("../../../../../../_virtual/variant.cjs");
15
+ var __awaiter = _commonjsHelpers.commonjsGlobal && _commonjsHelpers.commonjsGlobal.__awaiter || function(thisArg, _arguments, P, generator) {
16
+ function adopt(value) {
17
+ return value instanceof P ? value : new P(function(resolve) {
18
+ resolve(value);
19
+ });
20
+ }
21
+ return new (P || (P = Promise))(function(resolve, reject) {
22
+ function fulfilled(value) {
23
+ try {
24
+ step(generator.next(value));
25
+ } catch (e) {
26
+ reject(e);
27
+ }
28
+ }
29
+ function rejected(value) {
30
+ try {
31
+ step(generator["throw"](value));
32
+ } catch (e) {
33
+ reject(e);
34
+ }
35
+ }
36
+ function step(result) {
37
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
38
+ }
39
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
40
+ });
41
+ };
42
+ Object.defineProperty(client.__exports, "__esModule", { value: true });
43
+ client.__exports.ExperimentClient = client.__exports.RemoteEvaluationClient = void 0;
44
+ const experiment_core_1 = experimentCore_esm;
45
+ const version_1 = version.__exports;
46
+ const http_1 = http.__exports;
47
+ const config_1 = config.__exports;
48
+ const time_1 = time.__exports;
49
+ const variant_1 = variant.__exports;
50
+ class RemoteEvaluationClient {
51
+ /**
52
+ * Creates a new RemoteEvaluationClient instance.
53
+ *
54
+ * @param apiKey The environment API Key
55
+ * @param config See {@link ExperimentConfig} for config options
56
+ */
57
+ constructor(apiKey, config2) {
58
+ var _a;
59
+ this.apiKey = apiKey;
60
+ this.config = Object.assign(Object.assign({}, config_1.RemoteEvaluationDefaults), config2);
61
+ this.evaluationApi = new experiment_core_1.SdkEvaluationApi(apiKey, this.config.serverUrl, new http_1.WrapperClient(new http_1.FetchHttpClient((_a = this.config) === null || _a === void 0 ? void 0 : _a.httpAgent)));
62
+ }
63
+ /**
64
+ * Fetch remote evaluated variants for a user. This function can
65
+ * automatically retry the request on failure (if configured), and will
66
+ * throw the original error if all retries fail.
67
+ *
68
+ * Unlike {@link fetch}, this function returns a default variant object
69
+ * if the flag or experiment was evaluated, but the user was not assigned a
70
+ * variant (i.e. 'off').
71
+ *
72
+ * @param user The user to fetch variants for.
73
+ * @param options Options to configure the fetch request.
74
+ */
75
+ fetchV2(user, options) {
76
+ return __awaiter(this, void 0, void 0, function* () {
77
+ if (!this.apiKey) {
78
+ throw Error("Experiment API key is empty");
79
+ }
80
+ this.debug("[Experiment] Fetching variants for user: ", user);
81
+ try {
82
+ return yield this.doFetch(user, this.config.fetchTimeoutMillis, options);
83
+ } catch (e) {
84
+ console.error("[Experiment] Fetch failed: ", e);
85
+ try {
86
+ return yield this.retryFetch(user, options);
87
+ } catch (e2) {
88
+ console.error(e2);
89
+ }
90
+ throw e;
91
+ }
92
+ });
93
+ }
94
+ /**
95
+ * Fetch all variants for a user.
96
+ *
97
+ * This method will automatically retry if configured (default).
98
+ *
99
+ * @param user The {@link ExperimentUser} context
100
+ * @param options The {@link FetchOptions} for this specific fetch request.
101
+ * @return The {@link Variants} for the user on success, empty
102
+ * {@link Variants} on error.
103
+ * @deprecated use fetchV2 instead
104
+ */
105
+ fetch(user, options) {
106
+ return __awaiter(this, void 0, void 0, function* () {
107
+ try {
108
+ const results = yield this.fetchV2(user, options);
109
+ return (0, variant_1.filterDefaultVariants)(results);
110
+ } catch (e) {
111
+ console.error("[Experiment] Failed to fetch variants: ", e);
112
+ return {};
113
+ }
114
+ });
115
+ }
116
+ doFetch(user, timeoutMillis, options) {
117
+ return __awaiter(this, void 0, void 0, function* () {
118
+ const userContext = this.addContext(user || {});
119
+ const results = yield this.evaluationApi.getVariants(userContext, {
120
+ flagKeys: options === null || options === void 0 ? void 0 : options.flagKeys,
121
+ timeoutMillis
122
+ });
123
+ this.debug("[Experiment] Fetched variants: ", results);
124
+ return (0, variant_1.evaluationVariantsToVariants)(results);
125
+ });
126
+ }
127
+ retryFetch(user, options) {
128
+ return __awaiter(this, void 0, void 0, function* () {
129
+ if (this.config.fetchRetries == 0) {
130
+ return {};
131
+ }
132
+ this.debug("[Experiment] Retrying fetch");
133
+ let err = null;
134
+ let delayMillis = this.config.fetchRetryBackoffMinMillis;
135
+ for (let i = 0; i < this.config.fetchRetries; i++) {
136
+ yield (0, time_1.sleep)(delayMillis);
137
+ try {
138
+ return yield this.doFetch(user, this.config.fetchRetryTimeoutMillis, options);
139
+ } catch (e) {
140
+ console.error("[Experiment] Retry falied: ", e);
141
+ err = e;
142
+ }
143
+ delayMillis = Math.min(delayMillis * this.config.fetchRetryBackoffScalar, this.config.fetchRetryBackoffMaxMillis);
144
+ }
145
+ throw err;
146
+ });
147
+ }
148
+ addContext(user) {
149
+ return Object.assign({ library: `experiment-node-server/${version_1.version}` }, user);
150
+ }
151
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
152
+ debug(message, ...optionalParams) {
153
+ if (this.config.debug) {
154
+ console.debug(message, ...optionalParams);
155
+ }
156
+ }
157
+ }
158
+ client.__exports.RemoteEvaluationClient = RemoteEvaluationClient;
159
+ class ExperimentClient extends RemoteEvaluationClient {
160
+ constructor(apiKey, config2) {
161
+ super(apiKey, config2);
162
+ }
163
+ }
164
+ client.__exports.ExperimentClient = ExperimentClient;
165
+ module.exports = client.__exports;
166
+ //# sourceMappingURL=client.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.cjs","sources":["../../../../../../../../../node_modules/@amplitude/experiment-node-server/dist/src/remote/client.js"],"sourcesContent":["\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExperimentClient = exports.RemoteEvaluationClient = void 0;\nconst experiment_core_1 = require(\"@amplitude/experiment-core\");\nconst version_1 = require(\"../../gen/version\");\nconst http_1 = require(\"../transport/http\");\nconst config_1 = require(\"../types/config\");\nconst time_1 = require(\"../util/time\");\nconst variant_1 = require(\"../util/variant\");\n/**\n * Experiment client for fetching variants for a user remotely.\n * @category Core Usage\n */\nclass RemoteEvaluationClient {\n /**\n * Creates a new RemoteEvaluationClient instance.\n *\n * @param apiKey The environment API Key\n * @param config See {@link ExperimentConfig} for config options\n */\n constructor(apiKey, config) {\n var _a;\n this.apiKey = apiKey;\n this.config = Object.assign(Object.assign({}, config_1.RemoteEvaluationDefaults), config);\n this.evaluationApi = new experiment_core_1.SdkEvaluationApi(apiKey, this.config.serverUrl, new http_1.WrapperClient(new http_1.FetchHttpClient((_a = this.config) === null || _a === void 0 ? void 0 : _a.httpAgent)));\n }\n /**\n * Fetch remote evaluated variants for a user. This function can\n * automatically retry the request on failure (if configured), and will\n * throw the original error if all retries fail.\n *\n * Unlike {@link fetch}, this function returns a default variant object\n * if the flag or experiment was evaluated, but the user was not assigned a\n * variant (i.e. 'off').\n *\n * @param user The user to fetch variants for.\n * @param options Options to configure the fetch request.\n */\n fetchV2(user, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.apiKey) {\n throw Error('Experiment API key is empty');\n }\n this.debug('[Experiment] Fetching variants for user: ', user);\n try {\n return yield this.doFetch(user, this.config.fetchTimeoutMillis, options);\n }\n catch (e) {\n console.error('[Experiment] Fetch failed: ', e);\n try {\n return yield this.retryFetch(user, options);\n }\n catch (e) {\n console.error(e);\n }\n throw e;\n }\n });\n }\n /**\n * Fetch all variants for a user.\n *\n * This method will automatically retry if configured (default).\n *\n * @param user The {@link ExperimentUser} context\n * @param options The {@link FetchOptions} for this specific fetch request.\n * @return The {@link Variants} for the user on success, empty\n * {@link Variants} on error.\n * @deprecated use fetchV2 instead\n */\n fetch(user, options) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const results = yield this.fetchV2(user, options);\n return (0, variant_1.filterDefaultVariants)(results);\n }\n catch (e) {\n console.error('[Experiment] Failed to fetch variants: ', e);\n return {};\n }\n });\n }\n doFetch(user, timeoutMillis, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const userContext = this.addContext(user || {});\n const results = yield this.evaluationApi.getVariants(userContext, {\n flagKeys: options === null || options === void 0 ? void 0 : options.flagKeys,\n timeoutMillis: timeoutMillis,\n });\n this.debug('[Experiment] Fetched variants: ', results);\n return (0, variant_1.evaluationVariantsToVariants)(results);\n });\n }\n retryFetch(user, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.config.fetchRetries == 0) {\n return {};\n }\n this.debug('[Experiment] Retrying fetch');\n let err = null;\n let delayMillis = this.config.fetchRetryBackoffMinMillis;\n for (let i = 0; i < this.config.fetchRetries; i++) {\n yield (0, time_1.sleep)(delayMillis);\n try {\n return yield this.doFetch(user, this.config.fetchRetryTimeoutMillis, options);\n }\n catch (e) {\n console.error('[Experiment] Retry falied: ', e);\n err = e;\n }\n delayMillis = Math.min(delayMillis * this.config.fetchRetryBackoffScalar, this.config.fetchRetryBackoffMaxMillis);\n }\n throw err;\n });\n }\n addContext(user) {\n return Object.assign({ library: `experiment-node-server/${version_1.version}` }, user);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n debug(message, ...optionalParams) {\n if (this.config.debug) {\n console.debug(message, ...optionalParams);\n }\n }\n}\nexports.RemoteEvaluationClient = RemoteEvaluationClient;\n/**\n * @deprecated use {@link RemoteEvaluationClient}.\n */\nclass ExperimentClient extends RemoteEvaluationClient {\n constructor(apiKey, config) {\n super(apiKey, config);\n }\n}\nexports.ExperimentClient = ExperimentClient;\n"],"names":["this","client","require$$0","require$$1","require$$2","require$$3","require$$4","require$$5","config","e"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,167 @@
1
+ import { commonjsGlobal } from "../../../../../../_virtual/_commonjsHelpers.js";
2
+ import { __exports as client } from "../../../../../../_virtual/client.js";
3
+ import require$$1 from "../../../../../../_virtual/experiment-core.esm.js";
4
+ import "../../gen/version.js";
5
+ import "../transport/http.js";
6
+ import "../types/config.js";
7
+ import "../util/time.js";
8
+ import "../util/variant.js";
9
+ import { __exports as version } from "../../../../../../_virtual/version.js";
10
+ import { __exports as http } from "../../../../../../_virtual/http.js";
11
+ import { __exports as config } from "../../../../../../_virtual/config.js";
12
+ import { __exports as time } from "../../../../../../_virtual/time.js";
13
+ import { __exports as variant } from "../../../../../../_virtual/variant.js";
14
+ var __awaiter = commonjsGlobal && commonjsGlobal.__awaiter || function(thisArg, _arguments, P, generator) {
15
+ function adopt(value) {
16
+ return value instanceof P ? value : new P(function(resolve) {
17
+ resolve(value);
18
+ });
19
+ }
20
+ return new (P || (P = Promise))(function(resolve, reject) {
21
+ function fulfilled(value) {
22
+ try {
23
+ step(generator.next(value));
24
+ } catch (e) {
25
+ reject(e);
26
+ }
27
+ }
28
+ function rejected(value) {
29
+ try {
30
+ step(generator["throw"](value));
31
+ } catch (e) {
32
+ reject(e);
33
+ }
34
+ }
35
+ function step(result) {
36
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
37
+ }
38
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
39
+ });
40
+ };
41
+ Object.defineProperty(client, "__esModule", { value: true });
42
+ client.ExperimentClient = client.RemoteEvaluationClient = void 0;
43
+ const experiment_core_1 = require$$1;
44
+ const version_1 = version;
45
+ const http_1 = http;
46
+ const config_1 = config;
47
+ const time_1 = time;
48
+ const variant_1 = variant;
49
+ class RemoteEvaluationClient {
50
+ /**
51
+ * Creates a new RemoteEvaluationClient instance.
52
+ *
53
+ * @param apiKey The environment API Key
54
+ * @param config See {@link ExperimentConfig} for config options
55
+ */
56
+ constructor(apiKey, config2) {
57
+ var _a;
58
+ this.apiKey = apiKey;
59
+ this.config = Object.assign(Object.assign({}, config_1.RemoteEvaluationDefaults), config2);
60
+ this.evaluationApi = new experiment_core_1.SdkEvaluationApi(apiKey, this.config.serverUrl, new http_1.WrapperClient(new http_1.FetchHttpClient((_a = this.config) === null || _a === void 0 ? void 0 : _a.httpAgent)));
61
+ }
62
+ /**
63
+ * Fetch remote evaluated variants for a user. This function can
64
+ * automatically retry the request on failure (if configured), and will
65
+ * throw the original error if all retries fail.
66
+ *
67
+ * Unlike {@link fetch}, this function returns a default variant object
68
+ * if the flag or experiment was evaluated, but the user was not assigned a
69
+ * variant (i.e. 'off').
70
+ *
71
+ * @param user The user to fetch variants for.
72
+ * @param options Options to configure the fetch request.
73
+ */
74
+ fetchV2(user, options) {
75
+ return __awaiter(this, void 0, void 0, function* () {
76
+ if (!this.apiKey) {
77
+ throw Error("Experiment API key is empty");
78
+ }
79
+ this.debug("[Experiment] Fetching variants for user: ", user);
80
+ try {
81
+ return yield this.doFetch(user, this.config.fetchTimeoutMillis, options);
82
+ } catch (e) {
83
+ console.error("[Experiment] Fetch failed: ", e);
84
+ try {
85
+ return yield this.retryFetch(user, options);
86
+ } catch (e2) {
87
+ console.error(e2);
88
+ }
89
+ throw e;
90
+ }
91
+ });
92
+ }
93
+ /**
94
+ * Fetch all variants for a user.
95
+ *
96
+ * This method will automatically retry if configured (default).
97
+ *
98
+ * @param user The {@link ExperimentUser} context
99
+ * @param options The {@link FetchOptions} for this specific fetch request.
100
+ * @return The {@link Variants} for the user on success, empty
101
+ * {@link Variants} on error.
102
+ * @deprecated use fetchV2 instead
103
+ */
104
+ fetch(user, options) {
105
+ return __awaiter(this, void 0, void 0, function* () {
106
+ try {
107
+ const results = yield this.fetchV2(user, options);
108
+ return (0, variant_1.filterDefaultVariants)(results);
109
+ } catch (e) {
110
+ console.error("[Experiment] Failed to fetch variants: ", e);
111
+ return {};
112
+ }
113
+ });
114
+ }
115
+ doFetch(user, timeoutMillis, options) {
116
+ return __awaiter(this, void 0, void 0, function* () {
117
+ const userContext = this.addContext(user || {});
118
+ const results = yield this.evaluationApi.getVariants(userContext, {
119
+ flagKeys: options === null || options === void 0 ? void 0 : options.flagKeys,
120
+ timeoutMillis
121
+ });
122
+ this.debug("[Experiment] Fetched variants: ", results);
123
+ return (0, variant_1.evaluationVariantsToVariants)(results);
124
+ });
125
+ }
126
+ retryFetch(user, options) {
127
+ return __awaiter(this, void 0, void 0, function* () {
128
+ if (this.config.fetchRetries == 0) {
129
+ return {};
130
+ }
131
+ this.debug("[Experiment] Retrying fetch");
132
+ let err = null;
133
+ let delayMillis = this.config.fetchRetryBackoffMinMillis;
134
+ for (let i = 0; i < this.config.fetchRetries; i++) {
135
+ yield (0, time_1.sleep)(delayMillis);
136
+ try {
137
+ return yield this.doFetch(user, this.config.fetchRetryTimeoutMillis, options);
138
+ } catch (e) {
139
+ console.error("[Experiment] Retry falied: ", e);
140
+ err = e;
141
+ }
142
+ delayMillis = Math.min(delayMillis * this.config.fetchRetryBackoffScalar, this.config.fetchRetryBackoffMaxMillis);
143
+ }
144
+ throw err;
145
+ });
146
+ }
147
+ addContext(user) {
148
+ return Object.assign({ library: `experiment-node-server/${version_1.version}` }, user);
149
+ }
150
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
151
+ debug(message, ...optionalParams) {
152
+ if (this.config.debug) {
153
+ console.debug(message, ...optionalParams);
154
+ }
155
+ }
156
+ }
157
+ client.RemoteEvaluationClient = RemoteEvaluationClient;
158
+ class ExperimentClient extends RemoteEvaluationClient {
159
+ constructor(apiKey, config2) {
160
+ super(apiKey, config2);
161
+ }
162
+ }
163
+ client.ExperimentClient = ExperimentClient;
164
+ export {
165
+ client as default
166
+ };
167
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sources":["../../../../../../../../../node_modules/@amplitude/experiment-node-server/dist/src/remote/client.js"],"sourcesContent":["\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExperimentClient = exports.RemoteEvaluationClient = void 0;\nconst experiment_core_1 = require(\"@amplitude/experiment-core\");\nconst version_1 = require(\"../../gen/version\");\nconst http_1 = require(\"../transport/http\");\nconst config_1 = require(\"../types/config\");\nconst time_1 = require(\"../util/time\");\nconst variant_1 = require(\"../util/variant\");\n/**\n * Experiment client for fetching variants for a user remotely.\n * @category Core Usage\n */\nclass RemoteEvaluationClient {\n /**\n * Creates a new RemoteEvaluationClient instance.\n *\n * @param apiKey The environment API Key\n * @param config See {@link ExperimentConfig} for config options\n */\n constructor(apiKey, config) {\n var _a;\n this.apiKey = apiKey;\n this.config = Object.assign(Object.assign({}, config_1.RemoteEvaluationDefaults), config);\n this.evaluationApi = new experiment_core_1.SdkEvaluationApi(apiKey, this.config.serverUrl, new http_1.WrapperClient(new http_1.FetchHttpClient((_a = this.config) === null || _a === void 0 ? void 0 : _a.httpAgent)));\n }\n /**\n * Fetch remote evaluated variants for a user. This function can\n * automatically retry the request on failure (if configured), and will\n * throw the original error if all retries fail.\n *\n * Unlike {@link fetch}, this function returns a default variant object\n * if the flag or experiment was evaluated, but the user was not assigned a\n * variant (i.e. 'off').\n *\n * @param user The user to fetch variants for.\n * @param options Options to configure the fetch request.\n */\n fetchV2(user, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.apiKey) {\n throw Error('Experiment API key is empty');\n }\n this.debug('[Experiment] Fetching variants for user: ', user);\n try {\n return yield this.doFetch(user, this.config.fetchTimeoutMillis, options);\n }\n catch (e) {\n console.error('[Experiment] Fetch failed: ', e);\n try {\n return yield this.retryFetch(user, options);\n }\n catch (e) {\n console.error(e);\n }\n throw e;\n }\n });\n }\n /**\n * Fetch all variants for a user.\n *\n * This method will automatically retry if configured (default).\n *\n * @param user The {@link ExperimentUser} context\n * @param options The {@link FetchOptions} for this specific fetch request.\n * @return The {@link Variants} for the user on success, empty\n * {@link Variants} on error.\n * @deprecated use fetchV2 instead\n */\n fetch(user, options) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const results = yield this.fetchV2(user, options);\n return (0, variant_1.filterDefaultVariants)(results);\n }\n catch (e) {\n console.error('[Experiment] Failed to fetch variants: ', e);\n return {};\n }\n });\n }\n doFetch(user, timeoutMillis, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const userContext = this.addContext(user || {});\n const results = yield this.evaluationApi.getVariants(userContext, {\n flagKeys: options === null || options === void 0 ? void 0 : options.flagKeys,\n timeoutMillis: timeoutMillis,\n });\n this.debug('[Experiment] Fetched variants: ', results);\n return (0, variant_1.evaluationVariantsToVariants)(results);\n });\n }\n retryFetch(user, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.config.fetchRetries == 0) {\n return {};\n }\n this.debug('[Experiment] Retrying fetch');\n let err = null;\n let delayMillis = this.config.fetchRetryBackoffMinMillis;\n for (let i = 0; i < this.config.fetchRetries; i++) {\n yield (0, time_1.sleep)(delayMillis);\n try {\n return yield this.doFetch(user, this.config.fetchRetryTimeoutMillis, options);\n }\n catch (e) {\n console.error('[Experiment] Retry falied: ', e);\n err = e;\n }\n delayMillis = Math.min(delayMillis * this.config.fetchRetryBackoffScalar, this.config.fetchRetryBackoffMaxMillis);\n }\n throw err;\n });\n }\n addContext(user) {\n return Object.assign({ library: `experiment-node-server/${version_1.version}` }, user);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n debug(message, ...optionalParams) {\n if (this.config.debug) {\n console.debug(message, ...optionalParams);\n }\n }\n}\nexports.RemoteEvaluationClient = RemoteEvaluationClient;\n/**\n * @deprecated use {@link RemoteEvaluationClient}.\n */\nclass ExperimentClient extends RemoteEvaluationClient {\n constructor(apiKey, config) {\n super(apiKey, config);\n }\n}\nexports.ExperimentClient = ExperimentClient;\n"],"names":["this","require$$0","require$$1","require$$2","require$$3","require$$4","require$$5","config","e"],"mappings":"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","x_google_ignoreList":[0]}