@slicemachine/manager 0.17.8-beta.5 → 0.17.8-beta.6
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.
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/config.cjs +91 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/config.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/config.js +91 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/config.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/constants.cjs +17 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/constants.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/constants.js +17 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/constants.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/core-client.cjs +190 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/core-client.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/core-client.js +190 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/core-client.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/identify.cjs +90 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/identify.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/identify.js +90 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/identify.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/logger.cjs +64 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/logger.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/logger.js +64 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/logger.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/messages.cjs +17 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/messages.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/messages.js +17 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/messages.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/plugins/destination.cjs +323 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/plugins/destination.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/plugins/destination.js +323 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/plugins/destination.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/revenue.cjs +55 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/revenue.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/revenue.js +55 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/revenue.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/timeline.cjs +251 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/timeline.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/timeline.js +251 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/timeline.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/transports/base.cjs +103 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/transports/base.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/transports/base.js +103 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/transports/base.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/chunk.cjs +15 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/chunk.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/chunk.js +15 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/chunk.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/debug.cjs +126 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/debug.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/debug.js +126 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/debug.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/event-builder.cjs +34 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/event-builder.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/event-builder.js +34 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/event-builder.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/result-builder.cjs +14 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/result-builder.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/result-builder.js +14 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/result-builder.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/return-wrapper.cjs +9 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/return-wrapper.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/return-wrapper.js +9 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/return-wrapper.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/uuid.cjs +25 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/uuid.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/uuid.js +25 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/uuid.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/valid-properties.cjs +58 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/valid-properties.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/valid-properties.js +58 -0
- package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/valid-properties.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/config.cjs +21 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/config.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/config.js +21 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/config.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/index.cjs +23 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/index.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/index.js +24 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/index.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/node-client.cjs +81 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/node-client.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/node-client.js +81 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/node-client.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/plugins/context.cjs +37 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/plugins/context.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/plugins/context.js +37 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/plugins/context.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/transports/http.cjs +85 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/transports/http.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/transports/http.js +67 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/transports/http.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/version.cjs +5 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/version.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/version.js +5 -0
- package/dist/_node_modules/@amplitude/analytics-node/lib/esm/version.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/event.cjs +30 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/event.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/event.js +33 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/event.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/index.cjs +41 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/index.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/index.js +17 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/index.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/logger.cjs +11 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/logger.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/logger.js +12 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/logger.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/plugin.cjs +9 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/plugin.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/plugin.js +10 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/plugin.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/server-zone.cjs +9 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/server-zone.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/server-zone.js +10 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/server-zone.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/status.cjs +15 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/status.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/status.js +16 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/status.js.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/transport.cjs +9 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/transport.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/transport.js +10 -0
- package/dist/_node_modules/@amplitude/analytics-types/lib/esm/transport.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-core/dist/experiment-core.esm.cjs +1247 -0
- package/dist/_node_modules/@amplitude/experiment-core/dist/experiment-core.esm.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-core/dist/experiment-core.esm.js +1247 -0
- package/dist/_node_modules/@amplitude/experiment-core/dist/experiment-core.esm.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/gen/version.cjs +7 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/gen/version.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/gen/version.js +8 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/gen/version.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-filter.cjs +29 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-filter.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-filter.js +30 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-filter.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-service.cjs +92 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-service.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-service.js +91 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-service.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment.cjs +25 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment.js +26 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/cookie.cjs +84 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/cookie.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/cookie.js +85 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/cookie.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/factory.cjs +37 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/factory.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/factory.js +38 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/factory.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/index.cjs +61 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/index.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/index.js +60 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/index.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/cache.cjs +87 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/cache.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/cache.js +88 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/cache.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/client.cjs +204 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/client.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/client.js +205 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/client.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/fetcher.cjs +82 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/fetcher.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/fetcher.js +83 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/fetcher.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/poller.cjs +121 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/poller.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/poller.js +122 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/poller.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/remote/client.cjs +166 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/remote/client.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/remote/client.js +167 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/remote/client.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/transport/http.cjs +105 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/transport/http.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/transport/http.js +106 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/transport/http.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/types/config.cjs +38 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/types/config.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/types/config.js +39 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/types/config.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/backoff.cjs +51 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/backoff.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/backoff.js +52 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/backoff.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/cache.cjs +92 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/cache.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/cache.js +93 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/cache.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/hash.cjs +18 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/hash.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/hash.js +19 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/hash.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/logger.cjs +20 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/logger.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/logger.js +21 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/logger.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/time.cjs +13 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/time.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/time.js +14 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/time.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/user.cjs +44 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/user.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/user.js +45 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/user.js.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/variant.cjs +39 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/variant.cjs.map +1 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/variant.js +38 -0
- package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/variant.js.map +1 -0
- package/dist/_node_modules/cross-spawn/index.cjs +1 -1
- package/dist/_node_modules/cross-spawn/index.js +1 -1
- package/dist/_node_modules/execa/_node_modules/get-stream/index.cjs +1 -1
- package/dist/_node_modules/execa/_node_modules/get-stream/index.js +1 -1
- package/dist/_node_modules/path-key/index.cjs +1 -1
- package/dist/_node_modules/path-key/index.js +1 -1
- package/dist/_node_modules/signal-exit/index.cjs +1 -1
- package/dist/_node_modules/signal-exit/index.js +1 -1
- package/dist/_node_modules/tslib/tslib.es6.cjs +206 -0
- package/dist/_node_modules/tslib/tslib.es6.cjs.map +1 -0
- package/dist/_node_modules/tslib/tslib.es6.js +207 -0
- package/dist/_node_modules/tslib/tslib.es6.js.map +1 -0
- package/dist/_virtual/_commonjsHelpers.cjs +30 -0
- package/dist/_virtual/_commonjsHelpers.cjs.map +1 -1
- package/dist/_virtual/_commonjsHelpers.js +30 -0
- package/dist/_virtual/_commonjsHelpers.js.map +1 -1
- package/dist/_virtual/assignment-filter.cjs +5 -0
- package/dist/_virtual/assignment-filter.cjs.map +1 -0
- package/dist/_virtual/assignment-filter.js +5 -0
- package/dist/_virtual/assignment-filter.js.map +1 -0
- package/dist/_virtual/assignment-service.cjs +5 -0
- package/dist/_virtual/assignment-service.cjs.map +1 -0
- package/dist/_virtual/assignment-service.js +5 -0
- package/dist/_virtual/assignment-service.js.map +1 -0
- package/dist/_virtual/assignment.cjs +5 -0
- package/dist/_virtual/assignment.cjs.map +1 -0
- package/dist/_virtual/assignment.js +5 -0
- package/dist/_virtual/assignment.js.map +1 -0
- package/dist/_virtual/backoff.cjs +5 -0
- package/dist/_virtual/backoff.cjs.map +1 -0
- package/dist/_virtual/backoff.js +5 -0
- package/dist/_virtual/backoff.js.map +1 -0
- package/dist/_virtual/cache.cjs +5 -0
- package/dist/_virtual/cache.cjs.map +1 -0
- package/dist/_virtual/cache.js +5 -0
- package/dist/_virtual/cache.js.map +1 -0
- package/dist/_virtual/cache2.cjs +5 -0
- package/dist/_virtual/cache2.cjs.map +1 -0
- package/dist/_virtual/cache2.js +5 -0
- package/dist/_virtual/cache2.js.map +1 -0
- package/dist/_virtual/client.cjs +5 -0
- package/dist/_virtual/client.cjs.map +1 -0
- package/dist/_virtual/client.js +5 -0
- package/dist/_virtual/client.js.map +1 -0
- package/dist/_virtual/client2.cjs +5 -0
- package/dist/_virtual/client2.cjs.map +1 -0
- package/dist/_virtual/client2.js +5 -0
- package/dist/_virtual/client2.js.map +1 -0
- package/dist/_virtual/config.cjs +5 -0
- package/dist/_virtual/config.cjs.map +1 -0
- package/dist/_virtual/config.js +5 -0
- package/dist/_virtual/config.js.map +1 -0
- package/dist/_virtual/cookie.cjs +5 -0
- package/dist/_virtual/cookie.cjs.map +1 -0
- package/dist/_virtual/cookie.js +5 -0
- package/dist/_virtual/cookie.js.map +1 -0
- package/dist/_virtual/experiment-core.esm.cjs +6 -0
- package/dist/_virtual/experiment-core.esm.cjs.map +1 -0
- package/dist/_virtual/experiment-core.esm.js +7 -0
- package/dist/_virtual/experiment-core.esm.js.map +1 -0
- package/dist/_virtual/factory.cjs +5 -0
- package/dist/_virtual/factory.cjs.map +1 -0
- package/dist/_virtual/factory.js +5 -0
- package/dist/_virtual/factory.js.map +1 -0
- package/dist/_virtual/fetcher.cjs +5 -0
- package/dist/_virtual/fetcher.cjs.map +1 -0
- package/dist/_virtual/fetcher.js +5 -0
- package/dist/_virtual/fetcher.js.map +1 -0
- package/dist/_virtual/hash.cjs +5 -0
- package/dist/_virtual/hash.cjs.map +1 -0
- package/dist/_virtual/hash.js +5 -0
- package/dist/_virtual/hash.js.map +1 -0
- package/dist/_virtual/http.cjs +5 -0
- package/dist/_virtual/http.cjs.map +1 -0
- package/dist/_virtual/http.js +5 -0
- package/dist/_virtual/http.js.map +1 -0
- package/dist/_virtual/index.cjs +2 -2
- package/dist/_virtual/index.js +2 -2
- package/dist/_virtual/index2.cjs +4 -3
- package/dist/_virtual/index2.cjs.map +1 -1
- package/dist/_virtual/index2.js +4 -2
- package/dist/_virtual/index2.js.map +1 -1
- package/dist/_virtual/index3.cjs +2 -2
- package/dist/_virtual/index3.js +2 -2
- package/dist/_virtual/index4.cjs +2 -2
- package/dist/_virtual/index4.js +2 -2
- package/dist/_virtual/index5.cjs +5 -0
- package/dist/_virtual/index5.cjs.map +1 -0
- package/dist/_virtual/index5.js +5 -0
- package/dist/_virtual/index5.js.map +1 -0
- package/dist/_virtual/index6.cjs +5 -0
- package/dist/_virtual/index6.cjs.map +1 -0
- package/dist/_virtual/index6.js +5 -0
- package/dist/_virtual/index6.js.map +1 -0
- package/dist/_virtual/logger.cjs +5 -0
- package/dist/_virtual/logger.cjs.map +1 -0
- package/dist/_virtual/logger.js +5 -0
- package/dist/_virtual/logger.js.map +1 -0
- package/dist/_virtual/poller.cjs +5 -0
- package/dist/_virtual/poller.cjs.map +1 -0
- package/dist/_virtual/poller.js +5 -0
- package/dist/_virtual/poller.js.map +1 -0
- package/dist/_virtual/time.cjs +5 -0
- package/dist/_virtual/time.cjs.map +1 -0
- package/dist/_virtual/time.js +5 -0
- package/dist/_virtual/time.js.map +1 -0
- package/dist/_virtual/user.cjs +5 -0
- package/dist/_virtual/user.cjs.map +1 -0
- package/dist/_virtual/user.js +5 -0
- package/dist/_virtual/user.js.map +1 -0
- package/dist/_virtual/variant.cjs +5 -0
- package/dist/_virtual/variant.cjs.map +1 -0
- package/dist/_virtual/variant.js +5 -0
- package/dist/_virtual/variant.js.map +1 -0
- package/dist/_virtual/version.cjs +5 -0
- package/dist/_virtual/version.cjs.map +1 -0
- package/dist/_virtual/version.js +5 -0
- package/dist/_virtual/version.js.map +1 -0
- package/dist/constants/API_TOKENS.cjs +8 -2
- package/dist/constants/API_TOKENS.cjs.map +1 -1
- package/dist/constants/API_TOKENS.d.ts +1 -0
- package/dist/constants/API_TOKENS.js +8 -2
- package/dist/constants/API_TOKENS.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/managers/telemetry/TelemetryManager.cjs +28 -0
- package/dist/managers/telemetry/TelemetryManager.cjs.map +1 -1
- package/dist/managers/telemetry/TelemetryManager.d.ts +4 -0
- package/dist/managers/telemetry/TelemetryManager.js +28 -0
- package/dist/managers/telemetry/TelemetryManager.js.map +1 -1
- package/dist/managers/telemetry/types.cjs +8 -2
- package/dist/managers/telemetry/types.cjs.map +1 -1
- package/dist/managers/telemetry/types.d.ts +11 -2
- package/dist/managers/telemetry/types.js +8 -2
- package/dist/managers/telemetry/types.js.map +1 -1
- package/package.json +3 -2
- package/src/constants/API_TOKENS.ts +9 -2
- package/src/index.ts +2 -0
- package/src/managers/telemetry/TelemetryManager.ts +42 -1
- package/src/managers/telemetry/types.ts +27 -1
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const tslib_es6 = require("../../../../../tslib/tslib.es6.cjs");
|
|
4
|
+
const messages = require("../messages.cjs");
|
|
5
|
+
const constants = require("../constants.cjs");
|
|
6
|
+
const chunk = require("../utils/chunk.cjs");
|
|
7
|
+
const resultBuilder = require("../utils/result-builder.cjs");
|
|
8
|
+
const config = require("../config.cjs");
|
|
9
|
+
const plugin = require("../../../../analytics-types/lib/esm/plugin.cjs");
|
|
10
|
+
const status = require("../../../../analytics-types/lib/esm/status.cjs");
|
|
11
|
+
function getErrorMessage(error) {
|
|
12
|
+
if (error instanceof Error)
|
|
13
|
+
return error.message;
|
|
14
|
+
return String(error);
|
|
15
|
+
}
|
|
16
|
+
function getResponseBodyString(res) {
|
|
17
|
+
var responseBodyString = "";
|
|
18
|
+
try {
|
|
19
|
+
if ("body" in res) {
|
|
20
|
+
responseBodyString = JSON.stringify(res.body);
|
|
21
|
+
}
|
|
22
|
+
} catch (_a) {
|
|
23
|
+
}
|
|
24
|
+
return responseBodyString;
|
|
25
|
+
}
|
|
26
|
+
var Destination = (
|
|
27
|
+
/** @class */
|
|
28
|
+
function() {
|
|
29
|
+
function Destination2() {
|
|
30
|
+
this.name = "amplitude";
|
|
31
|
+
this.type = plugin.PluginType.DESTINATION;
|
|
32
|
+
this.retryTimeout = 1e3;
|
|
33
|
+
this.throttleTimeout = 3e4;
|
|
34
|
+
this.storageKey = "";
|
|
35
|
+
this.scheduled = null;
|
|
36
|
+
this.queue = [];
|
|
37
|
+
}
|
|
38
|
+
Destination2.prototype.setup = function(config2) {
|
|
39
|
+
var _a;
|
|
40
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function() {
|
|
41
|
+
var unsent;
|
|
42
|
+
var _this = this;
|
|
43
|
+
return tslib_es6.__generator(this, function(_b) {
|
|
44
|
+
switch (_b.label) {
|
|
45
|
+
case 0:
|
|
46
|
+
this.config = config2;
|
|
47
|
+
this.storageKey = "".concat(constants.STORAGE_PREFIX, "_").concat(this.config.apiKey.substring(0, 10));
|
|
48
|
+
return [4, (_a = this.config.storageProvider) === null || _a === void 0 ? void 0 : _a.get(this.storageKey)];
|
|
49
|
+
case 1:
|
|
50
|
+
unsent = _b.sent();
|
|
51
|
+
this.saveEvents();
|
|
52
|
+
if (unsent && unsent.length > 0) {
|
|
53
|
+
void Promise.all(unsent.map(function(event) {
|
|
54
|
+
return _this.execute(event);
|
|
55
|
+
})).catch();
|
|
56
|
+
}
|
|
57
|
+
return [2, Promise.resolve(void 0)];
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
Destination2.prototype.execute = function(event) {
|
|
63
|
+
var _this = this;
|
|
64
|
+
return new Promise(function(resolve) {
|
|
65
|
+
var context = {
|
|
66
|
+
event,
|
|
67
|
+
attempts: 0,
|
|
68
|
+
callback: function(result) {
|
|
69
|
+
return resolve(result);
|
|
70
|
+
},
|
|
71
|
+
timeout: 0
|
|
72
|
+
};
|
|
73
|
+
void _this.addToQueue(context);
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
Destination2.prototype.addToQueue = function() {
|
|
77
|
+
var _this = this;
|
|
78
|
+
var list = [];
|
|
79
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
80
|
+
list[_i] = arguments[_i];
|
|
81
|
+
}
|
|
82
|
+
var tryable = list.filter(function(context) {
|
|
83
|
+
if (context.attempts < _this.config.flushMaxRetries) {
|
|
84
|
+
context.attempts += 1;
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
void _this.fulfillRequest([context], 500, messages.MAX_RETRIES_EXCEEDED_MESSAGE);
|
|
88
|
+
return false;
|
|
89
|
+
});
|
|
90
|
+
tryable.forEach(function(context) {
|
|
91
|
+
_this.queue = _this.queue.concat(context);
|
|
92
|
+
if (context.timeout === 0) {
|
|
93
|
+
_this.schedule(_this.config.flushIntervalMillis);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
setTimeout(function() {
|
|
97
|
+
context.timeout = 0;
|
|
98
|
+
_this.schedule(0);
|
|
99
|
+
}, context.timeout);
|
|
100
|
+
});
|
|
101
|
+
this.saveEvents();
|
|
102
|
+
};
|
|
103
|
+
Destination2.prototype.schedule = function(timeout) {
|
|
104
|
+
var _this = this;
|
|
105
|
+
if (this.scheduled)
|
|
106
|
+
return;
|
|
107
|
+
this.scheduled = setTimeout(function() {
|
|
108
|
+
void _this.flush(true).then(function() {
|
|
109
|
+
if (_this.queue.length > 0) {
|
|
110
|
+
_this.schedule(timeout);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}, timeout);
|
|
114
|
+
};
|
|
115
|
+
Destination2.prototype.flush = function(useRetry) {
|
|
116
|
+
if (useRetry === void 0) {
|
|
117
|
+
useRetry = false;
|
|
118
|
+
}
|
|
119
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function() {
|
|
120
|
+
var list, later, batches;
|
|
121
|
+
var _this = this;
|
|
122
|
+
return tslib_es6.__generator(this, function(_a) {
|
|
123
|
+
switch (_a.label) {
|
|
124
|
+
case 0:
|
|
125
|
+
list = [];
|
|
126
|
+
later = [];
|
|
127
|
+
this.queue.forEach(function(context) {
|
|
128
|
+
return context.timeout === 0 ? list.push(context) : later.push(context);
|
|
129
|
+
});
|
|
130
|
+
this.queue = later;
|
|
131
|
+
if (this.scheduled) {
|
|
132
|
+
clearTimeout(this.scheduled);
|
|
133
|
+
this.scheduled = null;
|
|
134
|
+
}
|
|
135
|
+
batches = chunk.chunk(list, this.config.flushQueueSize);
|
|
136
|
+
return [4, Promise.all(batches.map(function(batch) {
|
|
137
|
+
return _this.send(batch, useRetry);
|
|
138
|
+
}))];
|
|
139
|
+
case 1:
|
|
140
|
+
_a.sent();
|
|
141
|
+
return [
|
|
142
|
+
2
|
|
143
|
+
/*return*/
|
|
144
|
+
];
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
};
|
|
149
|
+
Destination2.prototype.send = function(list, useRetry) {
|
|
150
|
+
if (useRetry === void 0) {
|
|
151
|
+
useRetry = true;
|
|
152
|
+
}
|
|
153
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function() {
|
|
154
|
+
var payload, serverUrl, res, e_1, errorMessage;
|
|
155
|
+
return tslib_es6.__generator(this, function(_a) {
|
|
156
|
+
switch (_a.label) {
|
|
157
|
+
case 0:
|
|
158
|
+
if (!this.config.apiKey) {
|
|
159
|
+
return [2, this.fulfillRequest(list, 400, messages.MISSING_API_KEY_MESSAGE)];
|
|
160
|
+
}
|
|
161
|
+
payload = {
|
|
162
|
+
api_key: this.config.apiKey,
|
|
163
|
+
events: list.map(function(context) {
|
|
164
|
+
var _a2 = context.event;
|
|
165
|
+
_a2.extra;
|
|
166
|
+
var eventWithoutExtra = tslib_es6.__rest(_a2, ["extra"]);
|
|
167
|
+
return eventWithoutExtra;
|
|
168
|
+
}),
|
|
169
|
+
options: {
|
|
170
|
+
min_id_length: this.config.minIdLength
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
_a.label = 1;
|
|
174
|
+
case 1:
|
|
175
|
+
_a.trys.push([1, 3, , 4]);
|
|
176
|
+
serverUrl = config.createServerConfig(this.config.serverUrl, this.config.serverZone, this.config.useBatch).serverUrl;
|
|
177
|
+
return [4, this.config.transportProvider.send(serverUrl, payload)];
|
|
178
|
+
case 2:
|
|
179
|
+
res = _a.sent();
|
|
180
|
+
if (res === null) {
|
|
181
|
+
this.fulfillRequest(list, 0, messages.UNEXPECTED_ERROR_MESSAGE);
|
|
182
|
+
return [
|
|
183
|
+
2
|
|
184
|
+
/*return*/
|
|
185
|
+
];
|
|
186
|
+
}
|
|
187
|
+
if (!useRetry) {
|
|
188
|
+
if ("body" in res) {
|
|
189
|
+
this.fulfillRequest(list, res.statusCode, "".concat(res.status, ": ").concat(getResponseBodyString(res)));
|
|
190
|
+
} else {
|
|
191
|
+
this.fulfillRequest(list, res.statusCode, res.status);
|
|
192
|
+
}
|
|
193
|
+
return [
|
|
194
|
+
2
|
|
195
|
+
/*return*/
|
|
196
|
+
];
|
|
197
|
+
}
|
|
198
|
+
this.handleResponse(res, list);
|
|
199
|
+
return [3, 4];
|
|
200
|
+
case 3:
|
|
201
|
+
e_1 = _a.sent();
|
|
202
|
+
this.config.loggerProvider.error(e_1);
|
|
203
|
+
errorMessage = getErrorMessage(e_1);
|
|
204
|
+
this.fulfillRequest(list, 0, errorMessage);
|
|
205
|
+
return [3, 4];
|
|
206
|
+
case 4:
|
|
207
|
+
return [
|
|
208
|
+
2
|
|
209
|
+
/*return*/
|
|
210
|
+
];
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
};
|
|
215
|
+
Destination2.prototype.handleResponse = function(res, list) {
|
|
216
|
+
var status$1 = res.status;
|
|
217
|
+
switch (status$1) {
|
|
218
|
+
case status.Status.Success: {
|
|
219
|
+
this.handleSuccessResponse(res, list);
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
222
|
+
case status.Status.Invalid: {
|
|
223
|
+
this.handleInvalidResponse(res, list);
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
case status.Status.PayloadTooLarge: {
|
|
227
|
+
this.handlePayloadTooLargeResponse(res, list);
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
case status.Status.RateLimit: {
|
|
231
|
+
this.handleRateLimitResponse(res, list);
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
default: {
|
|
235
|
+
this.config.loggerProvider.warn(`{code: 0, error: "Status '`.concat(status$1, "' provided for ").concat(list.length, ' events"}'));
|
|
236
|
+
this.handleOtherResponse(list);
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
Destination2.prototype.handleSuccessResponse = function(res, list) {
|
|
242
|
+
this.fulfillRequest(list, res.statusCode, messages.SUCCESS_MESSAGE);
|
|
243
|
+
};
|
|
244
|
+
Destination2.prototype.handleInvalidResponse = function(res, list) {
|
|
245
|
+
var _this = this;
|
|
246
|
+
if (res.body.missingField || res.body.error.startsWith(messages.INVALID_API_KEY)) {
|
|
247
|
+
this.fulfillRequest(list, res.statusCode, res.body.error);
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
var dropIndex = tslib_es6.__spreadArray(tslib_es6.__spreadArray(tslib_es6.__spreadArray(tslib_es6.__spreadArray([], tslib_es6.__read(Object.values(res.body.eventsWithInvalidFields)), false), tslib_es6.__read(Object.values(res.body.eventsWithMissingFields)), false), tslib_es6.__read(Object.values(res.body.eventsWithInvalidIdLengths)), false), tslib_es6.__read(res.body.silencedEvents), false).flat();
|
|
251
|
+
var dropIndexSet = new Set(dropIndex);
|
|
252
|
+
var retry = list.filter(function(context, index) {
|
|
253
|
+
if (dropIndexSet.has(index)) {
|
|
254
|
+
_this.fulfillRequest([context], res.statusCode, res.body.error);
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
return true;
|
|
258
|
+
});
|
|
259
|
+
if (retry.length > 0) {
|
|
260
|
+
this.config.loggerProvider.warn(getResponseBodyString(res));
|
|
261
|
+
}
|
|
262
|
+
this.addToQueue.apply(this, tslib_es6.__spreadArray([], tslib_es6.__read(retry), false));
|
|
263
|
+
};
|
|
264
|
+
Destination2.prototype.handlePayloadTooLargeResponse = function(res, list) {
|
|
265
|
+
if (list.length === 1) {
|
|
266
|
+
this.fulfillRequest(list, res.statusCode, res.body.error);
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
this.config.loggerProvider.warn(getResponseBodyString(res));
|
|
270
|
+
this.config.flushQueueSize /= 2;
|
|
271
|
+
this.addToQueue.apply(this, tslib_es6.__spreadArray([], tslib_es6.__read(list), false));
|
|
272
|
+
};
|
|
273
|
+
Destination2.prototype.handleRateLimitResponse = function(res, list) {
|
|
274
|
+
var _this = this;
|
|
275
|
+
var dropUserIds = Object.keys(res.body.exceededDailyQuotaUsers);
|
|
276
|
+
var dropDeviceIds = Object.keys(res.body.exceededDailyQuotaDevices);
|
|
277
|
+
var throttledIndex = res.body.throttledEvents;
|
|
278
|
+
var dropUserIdsSet = new Set(dropUserIds);
|
|
279
|
+
var dropDeviceIdsSet = new Set(dropDeviceIds);
|
|
280
|
+
var throttledIndexSet = new Set(throttledIndex);
|
|
281
|
+
var retry = list.filter(function(context, index) {
|
|
282
|
+
if (context.event.user_id && dropUserIdsSet.has(context.event.user_id) || context.event.device_id && dropDeviceIdsSet.has(context.event.device_id)) {
|
|
283
|
+
_this.fulfillRequest([context], res.statusCode, res.body.error);
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
if (throttledIndexSet.has(index)) {
|
|
287
|
+
context.timeout = _this.throttleTimeout;
|
|
288
|
+
}
|
|
289
|
+
return true;
|
|
290
|
+
});
|
|
291
|
+
if (retry.length > 0) {
|
|
292
|
+
this.config.loggerProvider.warn(getResponseBodyString(res));
|
|
293
|
+
}
|
|
294
|
+
this.addToQueue.apply(this, tslib_es6.__spreadArray([], tslib_es6.__read(retry), false));
|
|
295
|
+
};
|
|
296
|
+
Destination2.prototype.handleOtherResponse = function(list) {
|
|
297
|
+
var _this = this;
|
|
298
|
+
this.addToQueue.apply(this, tslib_es6.__spreadArray([], tslib_es6.__read(list.map(function(context) {
|
|
299
|
+
context.timeout = context.attempts * _this.retryTimeout;
|
|
300
|
+
return context;
|
|
301
|
+
})), false));
|
|
302
|
+
};
|
|
303
|
+
Destination2.prototype.fulfillRequest = function(list, code, message) {
|
|
304
|
+
this.saveEvents();
|
|
305
|
+
list.forEach(function(context) {
|
|
306
|
+
return context.callback(resultBuilder.buildResult(context.event, code, message));
|
|
307
|
+
});
|
|
308
|
+
};
|
|
309
|
+
Destination2.prototype.saveEvents = function() {
|
|
310
|
+
if (!this.config.storageProvider) {
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
var events = Array.from(this.queue.map(function(context) {
|
|
314
|
+
return context.event;
|
|
315
|
+
}));
|
|
316
|
+
void this.config.storageProvider.set(this.storageKey, events);
|
|
317
|
+
};
|
|
318
|
+
return Destination2;
|
|
319
|
+
}()
|
|
320
|
+
);
|
|
321
|
+
exports.Destination = Destination;
|
|
322
|
+
exports.getResponseBodyString = getResponseBodyString;
|
|
323
|
+
//# sourceMappingURL=destination.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"destination.cjs","sources":["../../../../../../../../../node_modules/@amplitude/analytics-core/lib/esm/plugins/destination.js"],"sourcesContent":["import { __awaiter, __generator, __read, __rest, __spreadArray } from \"tslib\";\nimport { PluginType, Status, } from '@amplitude/analytics-types';\nimport { INVALID_API_KEY, MAX_RETRIES_EXCEEDED_MESSAGE, MISSING_API_KEY_MESSAGE, SUCCESS_MESSAGE, UNEXPECTED_ERROR_MESSAGE, } from '../messages';\nimport { STORAGE_PREFIX } from '../constants';\nimport { chunk } from '../utils/chunk';\nimport { buildResult } from '../utils/result-builder';\nimport { createServerConfig } from '../config';\nfunction getErrorMessage(error) {\n if (error instanceof Error)\n return error.message;\n return String(error);\n}\nexport function getResponseBodyString(res) {\n var responseBodyString = '';\n try {\n if ('body' in res) {\n responseBodyString = JSON.stringify(res.body);\n }\n }\n catch (_a) {\n // to avoid crash, but don't care about the error, add comment to avoid empty block lint error\n }\n return responseBodyString;\n}\nvar Destination = /** @class */ (function () {\n function Destination() {\n this.name = 'amplitude';\n this.type = PluginType.DESTINATION;\n this.retryTimeout = 1000;\n this.throttleTimeout = 30000;\n this.storageKey = '';\n this.scheduled = null;\n this.queue = [];\n }\n Destination.prototype.setup = function (config) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var unsent;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.config = config;\n this.storageKey = \"\".concat(STORAGE_PREFIX, \"_\").concat(this.config.apiKey.substring(0, 10));\n return [4 /*yield*/, ((_a = this.config.storageProvider) === null || _a === void 0 ? void 0 : _a.get(this.storageKey))];\n case 1:\n unsent = _b.sent();\n this.saveEvents(); // sets storage to '[]'\n if (unsent && unsent.length > 0) {\n void Promise.all(unsent.map(function (event) { return _this.execute(event); })).catch();\n }\n return [2 /*return*/, Promise.resolve(undefined)];\n }\n });\n });\n };\n Destination.prototype.execute = function (event) {\n var _this = this;\n return new Promise(function (resolve) {\n var context = {\n event: event,\n attempts: 0,\n callback: function (result) { return resolve(result); },\n timeout: 0,\n };\n void _this.addToQueue(context);\n });\n };\n Destination.prototype.addToQueue = function () {\n var _this = this;\n var list = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n list[_i] = arguments[_i];\n }\n var tryable = list.filter(function (context) {\n if (context.attempts < _this.config.flushMaxRetries) {\n context.attempts += 1;\n return true;\n }\n void _this.fulfillRequest([context], 500, MAX_RETRIES_EXCEEDED_MESSAGE);\n return false;\n });\n tryable.forEach(function (context) {\n _this.queue = _this.queue.concat(context);\n if (context.timeout === 0) {\n _this.schedule(_this.config.flushIntervalMillis);\n return;\n }\n setTimeout(function () {\n context.timeout = 0;\n _this.schedule(0);\n }, context.timeout);\n });\n this.saveEvents();\n };\n Destination.prototype.schedule = function (timeout) {\n var _this = this;\n if (this.scheduled)\n return;\n this.scheduled = setTimeout(function () {\n void _this.flush(true).then(function () {\n if (_this.queue.length > 0) {\n _this.schedule(timeout);\n }\n });\n }, timeout);\n };\n Destination.prototype.flush = function (useRetry) {\n if (useRetry === void 0) { useRetry = false; }\n return __awaiter(this, void 0, void 0, function () {\n var list, later, batches;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n list = [];\n later = [];\n this.queue.forEach(function (context) { return (context.timeout === 0 ? list.push(context) : later.push(context)); });\n this.queue = later;\n if (this.scheduled) {\n clearTimeout(this.scheduled);\n this.scheduled = null;\n }\n batches = chunk(list, this.config.flushQueueSize);\n return [4 /*yield*/, Promise.all(batches.map(function (batch) { return _this.send(batch, useRetry); }))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Destination.prototype.send = function (list, useRetry) {\n if (useRetry === void 0) { useRetry = true; }\n return __awaiter(this, void 0, void 0, function () {\n var payload, serverUrl, res, e_1, errorMessage;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.config.apiKey) {\n return [2 /*return*/, this.fulfillRequest(list, 400, MISSING_API_KEY_MESSAGE)];\n }\n payload = {\n api_key: this.config.apiKey,\n events: list.map(function (context) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var _a = context.event, extra = _a.extra, eventWithoutExtra = __rest(_a, [\"extra\"]);\n return eventWithoutExtra;\n }),\n options: {\n min_id_length: this.config.minIdLength,\n },\n };\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n serverUrl = createServerConfig(this.config.serverUrl, this.config.serverZone, this.config.useBatch).serverUrl;\n return [4 /*yield*/, this.config.transportProvider.send(serverUrl, payload)];\n case 2:\n res = _a.sent();\n if (res === null) {\n this.fulfillRequest(list, 0, UNEXPECTED_ERROR_MESSAGE);\n return [2 /*return*/];\n }\n if (!useRetry) {\n if ('body' in res) {\n this.fulfillRequest(list, res.statusCode, \"\".concat(res.status, \": \").concat(getResponseBodyString(res)));\n }\n else {\n this.fulfillRequest(list, res.statusCode, res.status);\n }\n return [2 /*return*/];\n }\n this.handleResponse(res, list);\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n this.config.loggerProvider.error(e_1);\n errorMessage = getErrorMessage(e_1);\n this.fulfillRequest(list, 0, errorMessage);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n Destination.prototype.handleResponse = function (res, list) {\n var status = res.status;\n switch (status) {\n case Status.Success: {\n this.handleSuccessResponse(res, list);\n break;\n }\n case Status.Invalid: {\n this.handleInvalidResponse(res, list);\n break;\n }\n case Status.PayloadTooLarge: {\n this.handlePayloadTooLargeResponse(res, list);\n break;\n }\n case Status.RateLimit: {\n this.handleRateLimitResponse(res, list);\n break;\n }\n default: {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(\"{code: 0, error: \\\"Status '\".concat(status, \"' provided for \").concat(list.length, \" events\\\"}\"));\n this.handleOtherResponse(list);\n break;\n }\n }\n };\n Destination.prototype.handleSuccessResponse = function (res, list) {\n this.fulfillRequest(list, res.statusCode, SUCCESS_MESSAGE);\n };\n Destination.prototype.handleInvalidResponse = function (res, list) {\n var _this = this;\n if (res.body.missingField || res.body.error.startsWith(INVALID_API_KEY)) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n var dropIndex = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(Object.values(res.body.eventsWithInvalidFields)), false), __read(Object.values(res.body.eventsWithMissingFields)), false), __read(Object.values(res.body.eventsWithInvalidIdLengths)), false), __read(res.body.silencedEvents), false).flat();\n var dropIndexSet = new Set(dropIndex);\n var retry = list.filter(function (context, index) {\n if (dropIndexSet.has(index)) {\n _this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n return true;\n });\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n this.addToQueue.apply(this, __spreadArray([], __read(retry), false));\n };\n Destination.prototype.handlePayloadTooLargeResponse = function (res, list) {\n if (list.length === 1) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n this.config.flushQueueSize /= 2;\n this.addToQueue.apply(this, __spreadArray([], __read(list), false));\n };\n Destination.prototype.handleRateLimitResponse = function (res, list) {\n var _this = this;\n var dropUserIds = Object.keys(res.body.exceededDailyQuotaUsers);\n var dropDeviceIds = Object.keys(res.body.exceededDailyQuotaDevices);\n var throttledIndex = res.body.throttledEvents;\n var dropUserIdsSet = new Set(dropUserIds);\n var dropDeviceIdsSet = new Set(dropDeviceIds);\n var throttledIndexSet = new Set(throttledIndex);\n var retry = list.filter(function (context, index) {\n if ((context.event.user_id && dropUserIdsSet.has(context.event.user_id)) ||\n (context.event.device_id && dropDeviceIdsSet.has(context.event.device_id))) {\n _this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n if (throttledIndexSet.has(index)) {\n context.timeout = _this.throttleTimeout;\n }\n return true;\n });\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n this.addToQueue.apply(this, __spreadArray([], __read(retry), false));\n };\n Destination.prototype.handleOtherResponse = function (list) {\n var _this = this;\n this.addToQueue.apply(this, __spreadArray([], __read(list.map(function (context) {\n context.timeout = context.attempts * _this.retryTimeout;\n return context;\n })), false));\n };\n Destination.prototype.fulfillRequest = function (list, code, message) {\n this.saveEvents();\n list.forEach(function (context) { return context.callback(buildResult(context.event, code, message)); });\n };\n /**\n * Saves events to storage\n * This is called on\n * 1) new events are added to queue; or\n * 2) response comes back for a request\n */\n Destination.prototype.saveEvents = function () {\n if (!this.config.storageProvider) {\n return;\n }\n var events = Array.from(this.queue.map(function (context) { return context.event; }));\n void this.config.storageProvider.set(this.storageKey, events);\n };\n return Destination;\n}());\nexport { Destination };\n//# sourceMappingURL=destination.js.map"],"names":["Destination","PluginType","config","__awaiter","__generator","STORAGE_PREFIX","MAX_RETRIES_EXCEEDED_MESSAGE","chunk","MISSING_API_KEY_MESSAGE","_a","__rest","createServerConfig","UNEXPECTED_ERROR_MESSAGE","status","Status","SUCCESS_MESSAGE","INVALID_API_KEY","__spreadArray","__read","buildResult"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
import { __awaiter, __generator, __rest, __spreadArray, __read } from "../../../../../tslib/tslib.es6.js";
|
|
2
|
+
import { MAX_RETRIES_EXCEEDED_MESSAGE, UNEXPECTED_ERROR_MESSAGE, MISSING_API_KEY_MESSAGE, SUCCESS_MESSAGE, INVALID_API_KEY } from "../messages.js";
|
|
3
|
+
import { STORAGE_PREFIX } from "../constants.js";
|
|
4
|
+
import { chunk } from "../utils/chunk.js";
|
|
5
|
+
import { buildResult } from "../utils/result-builder.js";
|
|
6
|
+
import { createServerConfig } from "../config.js";
|
|
7
|
+
import { PluginType } from "../../../../analytics-types/lib/esm/plugin.js";
|
|
8
|
+
import { Status } from "../../../../analytics-types/lib/esm/status.js";
|
|
9
|
+
function getErrorMessage(error) {
|
|
10
|
+
if (error instanceof Error)
|
|
11
|
+
return error.message;
|
|
12
|
+
return String(error);
|
|
13
|
+
}
|
|
14
|
+
function getResponseBodyString(res) {
|
|
15
|
+
var responseBodyString = "";
|
|
16
|
+
try {
|
|
17
|
+
if ("body" in res) {
|
|
18
|
+
responseBodyString = JSON.stringify(res.body);
|
|
19
|
+
}
|
|
20
|
+
} catch (_a) {
|
|
21
|
+
}
|
|
22
|
+
return responseBodyString;
|
|
23
|
+
}
|
|
24
|
+
var Destination = (
|
|
25
|
+
/** @class */
|
|
26
|
+
function() {
|
|
27
|
+
function Destination2() {
|
|
28
|
+
this.name = "amplitude";
|
|
29
|
+
this.type = PluginType.DESTINATION;
|
|
30
|
+
this.retryTimeout = 1e3;
|
|
31
|
+
this.throttleTimeout = 3e4;
|
|
32
|
+
this.storageKey = "";
|
|
33
|
+
this.scheduled = null;
|
|
34
|
+
this.queue = [];
|
|
35
|
+
}
|
|
36
|
+
Destination2.prototype.setup = function(config) {
|
|
37
|
+
var _a;
|
|
38
|
+
return __awaiter(this, void 0, void 0, function() {
|
|
39
|
+
var unsent;
|
|
40
|
+
var _this = this;
|
|
41
|
+
return __generator(this, function(_b) {
|
|
42
|
+
switch (_b.label) {
|
|
43
|
+
case 0:
|
|
44
|
+
this.config = config;
|
|
45
|
+
this.storageKey = "".concat(STORAGE_PREFIX, "_").concat(this.config.apiKey.substring(0, 10));
|
|
46
|
+
return [4, (_a = this.config.storageProvider) === null || _a === void 0 ? void 0 : _a.get(this.storageKey)];
|
|
47
|
+
case 1:
|
|
48
|
+
unsent = _b.sent();
|
|
49
|
+
this.saveEvents();
|
|
50
|
+
if (unsent && unsent.length > 0) {
|
|
51
|
+
void Promise.all(unsent.map(function(event) {
|
|
52
|
+
return _this.execute(event);
|
|
53
|
+
})).catch();
|
|
54
|
+
}
|
|
55
|
+
return [2, Promise.resolve(void 0)];
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
Destination2.prototype.execute = function(event) {
|
|
61
|
+
var _this = this;
|
|
62
|
+
return new Promise(function(resolve) {
|
|
63
|
+
var context = {
|
|
64
|
+
event,
|
|
65
|
+
attempts: 0,
|
|
66
|
+
callback: function(result) {
|
|
67
|
+
return resolve(result);
|
|
68
|
+
},
|
|
69
|
+
timeout: 0
|
|
70
|
+
};
|
|
71
|
+
void _this.addToQueue(context);
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
Destination2.prototype.addToQueue = function() {
|
|
75
|
+
var _this = this;
|
|
76
|
+
var list = [];
|
|
77
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
78
|
+
list[_i] = arguments[_i];
|
|
79
|
+
}
|
|
80
|
+
var tryable = list.filter(function(context) {
|
|
81
|
+
if (context.attempts < _this.config.flushMaxRetries) {
|
|
82
|
+
context.attempts += 1;
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
void _this.fulfillRequest([context], 500, MAX_RETRIES_EXCEEDED_MESSAGE);
|
|
86
|
+
return false;
|
|
87
|
+
});
|
|
88
|
+
tryable.forEach(function(context) {
|
|
89
|
+
_this.queue = _this.queue.concat(context);
|
|
90
|
+
if (context.timeout === 0) {
|
|
91
|
+
_this.schedule(_this.config.flushIntervalMillis);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
setTimeout(function() {
|
|
95
|
+
context.timeout = 0;
|
|
96
|
+
_this.schedule(0);
|
|
97
|
+
}, context.timeout);
|
|
98
|
+
});
|
|
99
|
+
this.saveEvents();
|
|
100
|
+
};
|
|
101
|
+
Destination2.prototype.schedule = function(timeout) {
|
|
102
|
+
var _this = this;
|
|
103
|
+
if (this.scheduled)
|
|
104
|
+
return;
|
|
105
|
+
this.scheduled = setTimeout(function() {
|
|
106
|
+
void _this.flush(true).then(function() {
|
|
107
|
+
if (_this.queue.length > 0) {
|
|
108
|
+
_this.schedule(timeout);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}, timeout);
|
|
112
|
+
};
|
|
113
|
+
Destination2.prototype.flush = function(useRetry) {
|
|
114
|
+
if (useRetry === void 0) {
|
|
115
|
+
useRetry = false;
|
|
116
|
+
}
|
|
117
|
+
return __awaiter(this, void 0, void 0, function() {
|
|
118
|
+
var list, later, batches;
|
|
119
|
+
var _this = this;
|
|
120
|
+
return __generator(this, function(_a) {
|
|
121
|
+
switch (_a.label) {
|
|
122
|
+
case 0:
|
|
123
|
+
list = [];
|
|
124
|
+
later = [];
|
|
125
|
+
this.queue.forEach(function(context) {
|
|
126
|
+
return context.timeout === 0 ? list.push(context) : later.push(context);
|
|
127
|
+
});
|
|
128
|
+
this.queue = later;
|
|
129
|
+
if (this.scheduled) {
|
|
130
|
+
clearTimeout(this.scheduled);
|
|
131
|
+
this.scheduled = null;
|
|
132
|
+
}
|
|
133
|
+
batches = chunk(list, this.config.flushQueueSize);
|
|
134
|
+
return [4, Promise.all(batches.map(function(batch) {
|
|
135
|
+
return _this.send(batch, useRetry);
|
|
136
|
+
}))];
|
|
137
|
+
case 1:
|
|
138
|
+
_a.sent();
|
|
139
|
+
return [
|
|
140
|
+
2
|
|
141
|
+
/*return*/
|
|
142
|
+
];
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
};
|
|
147
|
+
Destination2.prototype.send = function(list, useRetry) {
|
|
148
|
+
if (useRetry === void 0) {
|
|
149
|
+
useRetry = true;
|
|
150
|
+
}
|
|
151
|
+
return __awaiter(this, void 0, void 0, function() {
|
|
152
|
+
var payload, serverUrl, res, e_1, errorMessage;
|
|
153
|
+
return __generator(this, function(_a) {
|
|
154
|
+
switch (_a.label) {
|
|
155
|
+
case 0:
|
|
156
|
+
if (!this.config.apiKey) {
|
|
157
|
+
return [2, this.fulfillRequest(list, 400, MISSING_API_KEY_MESSAGE)];
|
|
158
|
+
}
|
|
159
|
+
payload = {
|
|
160
|
+
api_key: this.config.apiKey,
|
|
161
|
+
events: list.map(function(context) {
|
|
162
|
+
var _a2 = context.event;
|
|
163
|
+
_a2.extra;
|
|
164
|
+
var eventWithoutExtra = __rest(_a2, ["extra"]);
|
|
165
|
+
return eventWithoutExtra;
|
|
166
|
+
}),
|
|
167
|
+
options: {
|
|
168
|
+
min_id_length: this.config.minIdLength
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
_a.label = 1;
|
|
172
|
+
case 1:
|
|
173
|
+
_a.trys.push([1, 3, , 4]);
|
|
174
|
+
serverUrl = createServerConfig(this.config.serverUrl, this.config.serverZone, this.config.useBatch).serverUrl;
|
|
175
|
+
return [4, this.config.transportProvider.send(serverUrl, payload)];
|
|
176
|
+
case 2:
|
|
177
|
+
res = _a.sent();
|
|
178
|
+
if (res === null) {
|
|
179
|
+
this.fulfillRequest(list, 0, UNEXPECTED_ERROR_MESSAGE);
|
|
180
|
+
return [
|
|
181
|
+
2
|
|
182
|
+
/*return*/
|
|
183
|
+
];
|
|
184
|
+
}
|
|
185
|
+
if (!useRetry) {
|
|
186
|
+
if ("body" in res) {
|
|
187
|
+
this.fulfillRequest(list, res.statusCode, "".concat(res.status, ": ").concat(getResponseBodyString(res)));
|
|
188
|
+
} else {
|
|
189
|
+
this.fulfillRequest(list, res.statusCode, res.status);
|
|
190
|
+
}
|
|
191
|
+
return [
|
|
192
|
+
2
|
|
193
|
+
/*return*/
|
|
194
|
+
];
|
|
195
|
+
}
|
|
196
|
+
this.handleResponse(res, list);
|
|
197
|
+
return [3, 4];
|
|
198
|
+
case 3:
|
|
199
|
+
e_1 = _a.sent();
|
|
200
|
+
this.config.loggerProvider.error(e_1);
|
|
201
|
+
errorMessage = getErrorMessage(e_1);
|
|
202
|
+
this.fulfillRequest(list, 0, errorMessage);
|
|
203
|
+
return [3, 4];
|
|
204
|
+
case 4:
|
|
205
|
+
return [
|
|
206
|
+
2
|
|
207
|
+
/*return*/
|
|
208
|
+
];
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
};
|
|
213
|
+
Destination2.prototype.handleResponse = function(res, list) {
|
|
214
|
+
var status = res.status;
|
|
215
|
+
switch (status) {
|
|
216
|
+
case Status.Success: {
|
|
217
|
+
this.handleSuccessResponse(res, list);
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
case Status.Invalid: {
|
|
221
|
+
this.handleInvalidResponse(res, list);
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
case Status.PayloadTooLarge: {
|
|
225
|
+
this.handlePayloadTooLargeResponse(res, list);
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
case Status.RateLimit: {
|
|
229
|
+
this.handleRateLimitResponse(res, list);
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
default: {
|
|
233
|
+
this.config.loggerProvider.warn(`{code: 0, error: "Status '`.concat(status, "' provided for ").concat(list.length, ' events"}'));
|
|
234
|
+
this.handleOtherResponse(list);
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
Destination2.prototype.handleSuccessResponse = function(res, list) {
|
|
240
|
+
this.fulfillRequest(list, res.statusCode, SUCCESS_MESSAGE);
|
|
241
|
+
};
|
|
242
|
+
Destination2.prototype.handleInvalidResponse = function(res, list) {
|
|
243
|
+
var _this = this;
|
|
244
|
+
if (res.body.missingField || res.body.error.startsWith(INVALID_API_KEY)) {
|
|
245
|
+
this.fulfillRequest(list, res.statusCode, res.body.error);
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
var dropIndex = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(Object.values(res.body.eventsWithInvalidFields)), false), __read(Object.values(res.body.eventsWithMissingFields)), false), __read(Object.values(res.body.eventsWithInvalidIdLengths)), false), __read(res.body.silencedEvents), false).flat();
|
|
249
|
+
var dropIndexSet = new Set(dropIndex);
|
|
250
|
+
var retry = list.filter(function(context, index) {
|
|
251
|
+
if (dropIndexSet.has(index)) {
|
|
252
|
+
_this.fulfillRequest([context], res.statusCode, res.body.error);
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
return true;
|
|
256
|
+
});
|
|
257
|
+
if (retry.length > 0) {
|
|
258
|
+
this.config.loggerProvider.warn(getResponseBodyString(res));
|
|
259
|
+
}
|
|
260
|
+
this.addToQueue.apply(this, __spreadArray([], __read(retry), false));
|
|
261
|
+
};
|
|
262
|
+
Destination2.prototype.handlePayloadTooLargeResponse = function(res, list) {
|
|
263
|
+
if (list.length === 1) {
|
|
264
|
+
this.fulfillRequest(list, res.statusCode, res.body.error);
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
this.config.loggerProvider.warn(getResponseBodyString(res));
|
|
268
|
+
this.config.flushQueueSize /= 2;
|
|
269
|
+
this.addToQueue.apply(this, __spreadArray([], __read(list), false));
|
|
270
|
+
};
|
|
271
|
+
Destination2.prototype.handleRateLimitResponse = function(res, list) {
|
|
272
|
+
var _this = this;
|
|
273
|
+
var dropUserIds = Object.keys(res.body.exceededDailyQuotaUsers);
|
|
274
|
+
var dropDeviceIds = Object.keys(res.body.exceededDailyQuotaDevices);
|
|
275
|
+
var throttledIndex = res.body.throttledEvents;
|
|
276
|
+
var dropUserIdsSet = new Set(dropUserIds);
|
|
277
|
+
var dropDeviceIdsSet = new Set(dropDeviceIds);
|
|
278
|
+
var throttledIndexSet = new Set(throttledIndex);
|
|
279
|
+
var retry = list.filter(function(context, index) {
|
|
280
|
+
if (context.event.user_id && dropUserIdsSet.has(context.event.user_id) || context.event.device_id && dropDeviceIdsSet.has(context.event.device_id)) {
|
|
281
|
+
_this.fulfillRequest([context], res.statusCode, res.body.error);
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
if (throttledIndexSet.has(index)) {
|
|
285
|
+
context.timeout = _this.throttleTimeout;
|
|
286
|
+
}
|
|
287
|
+
return true;
|
|
288
|
+
});
|
|
289
|
+
if (retry.length > 0) {
|
|
290
|
+
this.config.loggerProvider.warn(getResponseBodyString(res));
|
|
291
|
+
}
|
|
292
|
+
this.addToQueue.apply(this, __spreadArray([], __read(retry), false));
|
|
293
|
+
};
|
|
294
|
+
Destination2.prototype.handleOtherResponse = function(list) {
|
|
295
|
+
var _this = this;
|
|
296
|
+
this.addToQueue.apply(this, __spreadArray([], __read(list.map(function(context) {
|
|
297
|
+
context.timeout = context.attempts * _this.retryTimeout;
|
|
298
|
+
return context;
|
|
299
|
+
})), false));
|
|
300
|
+
};
|
|
301
|
+
Destination2.prototype.fulfillRequest = function(list, code, message) {
|
|
302
|
+
this.saveEvents();
|
|
303
|
+
list.forEach(function(context) {
|
|
304
|
+
return context.callback(buildResult(context.event, code, message));
|
|
305
|
+
});
|
|
306
|
+
};
|
|
307
|
+
Destination2.prototype.saveEvents = function() {
|
|
308
|
+
if (!this.config.storageProvider) {
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
var events = Array.from(this.queue.map(function(context) {
|
|
312
|
+
return context.event;
|
|
313
|
+
}));
|
|
314
|
+
void this.config.storageProvider.set(this.storageKey, events);
|
|
315
|
+
};
|
|
316
|
+
return Destination2;
|
|
317
|
+
}()
|
|
318
|
+
);
|
|
319
|
+
export {
|
|
320
|
+
Destination,
|
|
321
|
+
getResponseBodyString
|
|
322
|
+
};
|
|
323
|
+
//# sourceMappingURL=destination.js.map
|