@crimson-education/browser-logger 3.0.3-pinpoint-proxy.5 → 3.0.3
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amplifyReporter.d.ts","sourceRoot":"","sources":["../../src/reporters/amplifyReporter.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,SAAS,EACT,QAAQ,EAER,kBAAkB,EAGlB,WAAW,EACZ,MAAM,UAAU,CAAC;AAIlB,aAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;AAE7D,aAAK,sBAAsB,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/D,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,cAAc,EAAE,MAAM,GAAG,KAAK,CAAC;IAC/B;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,eAAe,CAAC,CAAC,MAAM,EAAE,sBAAsB,GAAG,QAAQ,GAAG,SAAS,CAAC;IAEvE;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,SAAS,CAAC,EAAE,8BAA8B,CAAC;CAC5C;AAED;;;;GAIG;AACH,aAAK,8BAA8B,GAAG;IACpC,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAqB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"amplifyReporter.d.ts","sourceRoot":"","sources":["../../src/reporters/amplifyReporter.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,SAAS,EACT,QAAQ,EAER,kBAAkB,EAGlB,WAAW,EACZ,MAAM,UAAU,CAAC;AAIlB,aAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;AAE7D,aAAK,sBAAsB,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/D,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,cAAc,EAAE,MAAM,GAAG,KAAK,CAAC;IAC/B;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,eAAe,CAAC,CAAC,MAAM,EAAE,sBAAsB,GAAG,QAAQ,GAAG,SAAS,CAAC;IAEvE;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,SAAS,CAAC,EAAE,8BAA8B,CAAC;CAC5C;AAED;;;;GAIG;AACH,aAAK,8BAA8B,GAAG;IACpC,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAqB,GAAG,SAAS,CAqH3F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,UAAO,GAAG,YAAY,CAqBhG;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,SAAS,GAAE,MAAM,GAAG,SAAqB,EACzC,WAAW,UAAO,GACjB,YAAY,CAsBd"}
|
|
@@ -58,41 +58,7 @@ function amplifyReporter(info, config) {
|
|
|
58
58
|
});
|
|
59
59
|
}
|
|
60
60
|
if (config.proxyUrl) {
|
|
61
|
-
|
|
62
|
-
// Pinpoint client isn't available synchronously because it is instantiated when events get sent out,
|
|
63
|
-
// and then reinstantiated whenever the API credentials change. We need to hook `_initClients` to ensure
|
|
64
|
-
// that the Pinpoint client being used is always patched with our custom endpoint.
|
|
65
|
-
const provider = analytics_1.Analytics.getPluggable('AWSPinpoint');
|
|
66
|
-
if (provider) {
|
|
67
|
-
const proxyUrl = new URL(config.proxyUrl);
|
|
68
|
-
if (typeof provider._initClients === 'function') {
|
|
69
|
-
const originalInitClients = provider._initClients;
|
|
70
|
-
const requestMiddleware = (next) => (args) => {
|
|
71
|
-
// Add proxyUrl.pathname to final request url if it was provided
|
|
72
|
-
if (proxyUrl.pathname !== '/' && protocol_http_1.HttpRequest.isInstance(args.request)) {
|
|
73
|
-
const shouldStripSlash = proxyUrl.pathname.endsWith('/');
|
|
74
|
-
args.request.path = `${proxyUrl.pathname}${args.request.path.slice(shouldStripSlash ? 1 : 0)}`;
|
|
75
|
-
}
|
|
76
|
-
return next(args);
|
|
77
|
-
};
|
|
78
|
-
provider._initClients = async (credentials) => {
|
|
79
|
-
const result = await originalInitClients.call(provider, credentials);
|
|
80
|
-
const pinpointClient = provider.pinpointClient;
|
|
81
|
-
if (pinpointClient) {
|
|
82
|
-
pinpointClient.config.endpoint = () => Promise.resolve({
|
|
83
|
-
hostname: proxyUrl.hostname,
|
|
84
|
-
// Passing proxyUrl.pathname here doesn't work; it gets overridden
|
|
85
|
-
path: '/',
|
|
86
|
-
port: undefined,
|
|
87
|
-
protocol: proxyUrl.protocol,
|
|
88
|
-
});
|
|
89
|
-
pinpointClient.middlewareStack.remove(requestMiddleware);
|
|
90
|
-
pinpointClient.middlewareStack.add(requestMiddleware, { step: 'finalizeRequest' });
|
|
91
|
-
}
|
|
92
|
-
return result;
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
}
|
|
61
|
+
installPinpointProxy(new URL(config.proxyUrl));
|
|
96
62
|
}
|
|
97
63
|
const reporter = {
|
|
98
64
|
trackEvent: function (event) {
|
|
@@ -198,4 +164,44 @@ function buildAttributeMap(values, parentKey = undefined, groupValues = true) {
|
|
|
198
164
|
return valuesWithStringArrays;
|
|
199
165
|
}
|
|
200
166
|
exports.buildAttributeMap = buildAttributeMap;
|
|
167
|
+
function installPinpointProxy(proxyUrl) {
|
|
168
|
+
// No public API for overriding where the Pinpoint client sends events to... 🤮
|
|
169
|
+
// In theory you can pass in an `endpoint` to the Pinpoint client's constructor like any other AWS
|
|
170
|
+
// client, but Amplify's analytics doesn't expose anything we can use to get an endpoint threaded
|
|
171
|
+
// down to the Pinpoint client's constructor.
|
|
172
|
+
//
|
|
173
|
+
// The Pinpoint client _also_ isn't available synchronously because it is instantiated when events
|
|
174
|
+
// get sent out, and then reconfigured whenever the API credentials change. We need to hook `_initClients`
|
|
175
|
+
// to ensure that the Pinpoint client being used is always patched with our custom endpoint.
|
|
176
|
+
const provider = analytics_1.Analytics.getPluggable('AWSPinpoint');
|
|
177
|
+
if (!provider || typeof provider._initClients !== 'function') {
|
|
178
|
+
logger_1.logger.error('Installation of the Pinpoint proxy failed. This likely means the internals of the @aws-amplify/analytics package have changed.');
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const originalInitClients = provider._initClients;
|
|
182
|
+
const requestMiddleware = (next) => (args) => {
|
|
183
|
+
// Add proxyUrl.pathname to final request url if it was provided
|
|
184
|
+
if (proxyUrl.pathname !== '/' && protocol_http_1.HttpRequest.isInstance(args.request)) {
|
|
185
|
+
const shouldStripSlash = proxyUrl.pathname.endsWith('/');
|
|
186
|
+
args.request.path = `${proxyUrl.pathname}${args.request.path.slice(shouldStripSlash ? 1 : 0)}`;
|
|
187
|
+
}
|
|
188
|
+
return next(args);
|
|
189
|
+
};
|
|
190
|
+
provider._initClients = async (credentials) => {
|
|
191
|
+
const result = await originalInitClients.call(provider, credentials);
|
|
192
|
+
const pinpointClient = provider.pinpointClient;
|
|
193
|
+
if (pinpointClient) {
|
|
194
|
+
pinpointClient.config.endpoint = () => Promise.resolve({
|
|
195
|
+
hostname: proxyUrl.hostname,
|
|
196
|
+
// Passing proxyUrl.pathname here doesn't work; it gets overridden
|
|
197
|
+
path: '/',
|
|
198
|
+
port: undefined,
|
|
199
|
+
protocol: proxyUrl.protocol,
|
|
200
|
+
});
|
|
201
|
+
pinpointClient.middlewareStack.remove(requestMiddleware);
|
|
202
|
+
pinpointClient.middlewareStack.add(requestMiddleware, { step: 'finalizeRequest' });
|
|
203
|
+
}
|
|
204
|
+
return result;
|
|
205
|
+
};
|
|
206
|
+
}
|
|
201
207
|
//# sourceMappingURL=amplifyReporter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amplifyReporter.js","sourceRoot":"","sources":["../../src/reporters/amplifyReporter.ts"],"names":[],"mappings":";;;AAAA,4CAAyC;AACzC,sDAAmD;AAEnD,0DAAqD;AAYrD,sCAAmC;AAkFnC,SAAgB,eAAe,CAAC,IAAiB,EAAE,MAA6B;;IAC9E,IAAI,MAAM,CAAC,cAAc,KAAK,KAAK,EAAE;QACnC,WAAI,CAAC,SAAS,CAAC;YACb,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;SAChD,CAAC,CAAC;KACJ;IAED,MAAM,uBAAuB,GAAG,CAAC,MAA8B,EAAE,EAAE;QACjE,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;QACnC,OAAO,OAAO,eAAe,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,WAAC,OAAA,MAAA,eAAe,CAAC,MAAM,CAAC,mCAAI,EAAE,CAAA,EAAA,CAAC,CAAC,CAAC,SAAS,CAAC;IACjG,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,cAAc,CAAC;QACjC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;QAC5B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;IAEH,qBAAS,CAAC,SAAS,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,cAAc;QAC5B,QAAQ,EAAE;YACR,UAAU,EAAE,WAAW;SACxB;QACD,GAAG,MAAM,CAAC,SAAS;KACpB,CAAC,CAAC;IAEH,+FAA+F;IAC/F,wGAAwG;IACxG,wFAAwF;IACxF,qBAAS,CAAC,SAAS,CAAC,SAAS,EAAE;QAC7B,MAAM,EAAE,MAAM,CAAC,iBAAiB,KAAK,IAAI;QACzC,UAAU,EAAE,uBAAuB,CAAC,SAAS,CAAC;KAC/C,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,kBAAkB,EAAE;QAC7B,qBAAS,CAAC,SAAS,CAAC,UAAU,EAAE;YAC9B,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,UAAU;YACrB,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,aAAa;YACvB,UAAU,EAAE,uBAAuB,CAAC,UAAU,CAAC;SAChD,CAAC,CAAC;KACJ;IAED,IAAI,MAAM,CAAC,eAAe,EAAE;QAC1B,qBAAS,CAAC,SAAS,CAAC,OAAO,EAAE;YAC3B,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,MAAA,MAAM,CAAC,cAAc,mCAAI,iBAAiB;YAC1D,UAAU,EAAE,uBAAuB,CAAC,OAAO,CAAC;SAC7C,CAAC,CAAC;KACJ;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE;QACnB
|
|
1
|
+
{"version":3,"file":"amplifyReporter.js","sourceRoot":"","sources":["../../src/reporters/amplifyReporter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -154,48 +154,7 @@ export function amplifyReporter(info: ServiceInfo, config: AmplifyReporterConfig
|
|
|
154
154
|
}
|
|
155
155
|
|
|
156
156
|
if (config.proxyUrl) {
|
|
157
|
-
|
|
158
|
-
// Pinpoint client isn't available synchronously because it is instantiated when events get sent out,
|
|
159
|
-
// and then reinstantiated whenever the API credentials change. We need to hook `_initClients` to ensure
|
|
160
|
-
// that the Pinpoint client being used is always patched with our custom endpoint.
|
|
161
|
-
const provider = Analytics.getPluggable('AWSPinpoint') as any;
|
|
162
|
-
if (provider) {
|
|
163
|
-
const proxyUrl = new URL(config.proxyUrl);
|
|
164
|
-
if (typeof provider._initClients === 'function') {
|
|
165
|
-
const originalInitClients = provider._initClients;
|
|
166
|
-
|
|
167
|
-
const requestMiddleware: FinalizeRequestMiddleware<ServiceInputTypes, ServiceOutputTypes> =
|
|
168
|
-
(next) => (args) => {
|
|
169
|
-
// Add proxyUrl.pathname to final request url if it was provided
|
|
170
|
-
if (proxyUrl.pathname !== '/' && HttpRequest.isInstance(args.request)) {
|
|
171
|
-
const shouldStripSlash = proxyUrl.pathname.endsWith('/');
|
|
172
|
-
args.request.path = `${proxyUrl.pathname}${args.request.path.slice(shouldStripSlash ? 1 : 0)}`;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
return next(args);
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
provider._initClients = async (credentials: unknown) => {
|
|
179
|
-
const result = await originalInitClients.call(provider, credentials);
|
|
180
|
-
const pinpointClient = provider.pinpointClient as PinpointClient | undefined;
|
|
181
|
-
|
|
182
|
-
if (pinpointClient) {
|
|
183
|
-
pinpointClient.config.endpoint = (): Promise<Endpoint> =>
|
|
184
|
-
Promise.resolve({
|
|
185
|
-
hostname: proxyUrl.hostname,
|
|
186
|
-
// Passing proxyUrl.pathname here doesn't work; it gets overridden
|
|
187
|
-
path: '/',
|
|
188
|
-
port: undefined,
|
|
189
|
-
protocol: proxyUrl.protocol,
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
pinpointClient.middlewareStack.remove(requestMiddleware);
|
|
193
|
-
pinpointClient.middlewareStack.add(requestMiddleware, { step: 'finalizeRequest' });
|
|
194
|
-
}
|
|
195
|
-
return result;
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
}
|
|
157
|
+
installPinpointProxy(new URL(config.proxyUrl));
|
|
199
158
|
}
|
|
200
159
|
|
|
201
160
|
const reporter: IReporter = {
|
|
@@ -313,3 +272,52 @@ export function buildAttributeMap(
|
|
|
313
272
|
|
|
314
273
|
return valuesWithStringArrays;
|
|
315
274
|
}
|
|
275
|
+
|
|
276
|
+
function installPinpointProxy(proxyUrl: URL) {
|
|
277
|
+
// No public API for overriding where the Pinpoint client sends events to... 🤮
|
|
278
|
+
// In theory you can pass in an `endpoint` to the Pinpoint client's constructor like any other AWS
|
|
279
|
+
// client, but Amplify's analytics doesn't expose anything we can use to get an endpoint threaded
|
|
280
|
+
// down to the Pinpoint client's constructor.
|
|
281
|
+
//
|
|
282
|
+
// The Pinpoint client _also_ isn't available synchronously because it is instantiated when events
|
|
283
|
+
// get sent out, and then reconfigured whenever the API credentials change. We need to hook `_initClients`
|
|
284
|
+
// to ensure that the Pinpoint client being used is always patched with our custom endpoint.
|
|
285
|
+
const provider = Analytics.getPluggable('AWSPinpoint') as any;
|
|
286
|
+
if (!provider || typeof provider._initClients !== 'function') {
|
|
287
|
+
logger.error(
|
|
288
|
+
'Installation of the Pinpoint proxy failed. This likely means the internals of the @aws-amplify/analytics package have changed.',
|
|
289
|
+
);
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
const originalInitClients = provider._initClients;
|
|
294
|
+
const requestMiddleware: FinalizeRequestMiddleware<ServiceInputTypes, ServiceOutputTypes> = (next) => (args) => {
|
|
295
|
+
// Add proxyUrl.pathname to final request url if it was provided
|
|
296
|
+
if (proxyUrl.pathname !== '/' && HttpRequest.isInstance(args.request)) {
|
|
297
|
+
const shouldStripSlash = proxyUrl.pathname.endsWith('/');
|
|
298
|
+
args.request.path = `${proxyUrl.pathname}${args.request.path.slice(shouldStripSlash ? 1 : 0)}`;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
return next(args);
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
provider._initClients = async (credentials: unknown) => {
|
|
305
|
+
const result = await originalInitClients.call(provider, credentials);
|
|
306
|
+
const pinpointClient = provider.pinpointClient as PinpointClient | undefined;
|
|
307
|
+
|
|
308
|
+
if (pinpointClient) {
|
|
309
|
+
pinpointClient.config.endpoint = (): Promise<Endpoint> =>
|
|
310
|
+
Promise.resolve({
|
|
311
|
+
hostname: proxyUrl.hostname,
|
|
312
|
+
// Passing proxyUrl.pathname here doesn't work; it gets overridden
|
|
313
|
+
path: '/',
|
|
314
|
+
port: undefined,
|
|
315
|
+
protocol: proxyUrl.protocol,
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
pinpointClient.middlewareStack.remove(requestMiddleware);
|
|
319
|
+
pinpointClient.middlewareStack.add(requestMiddleware, { step: 'finalizeRequest' });
|
|
320
|
+
}
|
|
321
|
+
return result;
|
|
322
|
+
};
|
|
323
|
+
}
|