@esri/telemetry-amazon 1.0.0-beta.3 → 1.0.1
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/LICENSE +13 -0
- package/README.md +119 -28
- package/dist/esm/auth.js +47 -0
- package/dist/esm/auth.js.map +1 -0
- package/dist/esm/auth.test.js +100 -0
- package/dist/esm/auth.test.js.map +1 -0
- package/dist/esm/build-access-properties.js +16 -0
- package/dist/esm/build-access-properties.js.map +1 -0
- package/dist/esm/build-access-properties.test.js +40 -0
- package/dist/esm/build-access-properties.test.js.map +1 -0
- package/dist/esm/create-event-log.js +31 -0
- package/dist/esm/create-event-log.js.map +1 -0
- package/dist/esm/create-event-log.test.js +273 -0
- package/dist/esm/create-event-log.test.js.map +1 -0
- package/dist/esm/create-page-view-log.js +19 -0
- package/dist/esm/create-page-view-log.js.map +1 -0
- package/dist/esm/create-page-view-log.test.js +69 -0
- package/dist/esm/create-page-view-log.test.js.map +1 -0
- package/dist/esm/format-telemetry-attributes.js +32 -0
- package/dist/esm/format-telemetry-attributes.js.map +1 -0
- package/dist/esm/format-telemetry-metrics.js +27 -0
- package/dist/esm/format-telemetry-metrics.js.map +1 -0
- package/dist/esm/format-telemetry-metrics.test.js +22 -0
- package/dist/esm/format-telemetry-metrics.test.js.map +1 -0
- package/dist/esm/get-portal-item-access-permissions.js +8 -0
- package/dist/esm/get-portal-item-access-permissions.js.map +1 -0
- package/dist/esm/get-portal-item-access-permissions.test.js +55 -0
- package/dist/esm/get-portal-item-access-permissions.test.js.map +1 -0
- package/dist/esm/index.js +63 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/index.test.js +196 -0
- package/dist/esm/index.test.js.map +1 -0
- package/dist/esm/set-portal-item-access-permissions.js +20 -0
- package/dist/esm/set-portal-item-access-permissions.js.map +1 -0
- package/dist/esm/set-portal-item-access-permissions.test.js +177 -0
- package/dist/esm/set-portal-item-access-permissions.test.js.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/node/auth.js +51 -0
- package/dist/node/auth.js.map +1 -0
- package/dist/node/auth.test.js +103 -0
- package/dist/node/auth.test.js.map +1 -0
- package/dist/node/build-access-properties.js +20 -0
- package/dist/node/build-access-properties.js.map +1 -0
- package/dist/node/build-access-properties.test.js +42 -0
- package/dist/node/build-access-properties.test.js.map +1 -0
- package/dist/node/create-event-log.js +35 -0
- package/dist/node/create-event-log.js.map +1 -0
- package/dist/node/create-event-log.test.js +275 -0
- package/dist/node/create-event-log.test.js.map +1 -0
- package/dist/node/create-page-view-log.js +23 -0
- package/dist/node/create-page-view-log.js.map +1 -0
- package/dist/node/create-page-view-log.test.js +71 -0
- package/dist/node/create-page-view-log.test.js.map +1 -0
- package/dist/node/format-telemetry-attributes.js +36 -0
- package/dist/node/format-telemetry-attributes.js.map +1 -0
- package/dist/node/format-telemetry-metrics.js +31 -0
- package/dist/node/format-telemetry-metrics.js.map +1 -0
- package/dist/node/format-telemetry-metrics.test.js +24 -0
- package/dist/node/format-telemetry-metrics.test.js.map +1 -0
- package/dist/node/get-portal-item-access-permissions.js +12 -0
- package/dist/node/get-portal-item-access-permissions.js.map +1 -0
- package/dist/node/get-portal-item-access-permissions.test.js +58 -0
- package/dist/node/get-portal-item-access-permissions.test.js.map +1 -0
- package/dist/node/index.js +68 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/index.test.js +199 -0
- package/dist/node/index.test.js.map +1 -0
- package/dist/node/set-portal-item-access-permissions.js +24 -0
- package/dist/node/set-portal-item-access-permissions.js.map +1 -0
- package/dist/node/set-portal-item-access-permissions.test.js +180 -0
- package/dist/node/set-portal-item-access-permissions.test.js.map +1 -0
- package/dist/node/types.js +3 -0
- package/dist/node/types.js.map +1 -0
- package/dist/types/auth.d.ts +2 -0
- package/dist/types/auth.test.d.ts +1 -0
- package/dist/types/build-access-properties.d.ts +2 -0
- package/dist/types/build-access-properties.test.d.ts +1 -0
- package/dist/types/create-event-log.d.ts +6 -0
- package/dist/types/create-event-log.test.d.ts +1 -0
- package/dist/types/create-page-view-log.d.ts +8 -0
- package/dist/types/create-page-view-log.test.d.ts +1 -0
- package/dist/types/format-telemetry-attributes.d.ts +5 -0
- package/dist/types/format-telemetry-metrics.d.ts +2 -0
- package/dist/types/format-telemetry-metrics.test.d.ts +1 -0
- package/dist/types/get-portal-item-access-permissions.d.ts +2 -0
- package/dist/types/get-portal-item-access-permissions.test.d.ts +1 -0
- package/dist/types/index.d.ts +16 -0
- package/dist/types/index.test.d.ts +1 -0
- package/dist/types/set-portal-item-access-permissions.d.ts +3 -0
- package/dist/types/set-portal-item-access-permissions.test.d.ts +1 -0
- package/dist/types/types.d.ts +77 -0
- package/dist/umd/telemetry-amazon.js +6844 -0
- package/dist/umd/telemetry-amazon.js.map +1 -0
- package/dist/umd/telemetry-amazon.min.js +6844 -0
- package/dist/umd/telemetry-amazon.min.js.map +1 -0
- package/package.json +23 -6
- package/dist/telemetry-amazon.js.amd.js +0 -363
- package/dist/telemetry-amazon.js.amd.js.map +0 -1
- package/dist/telemetry-amazon.js.amd.min.js +0 -2
- package/dist/telemetry-amazon.js.amd.min.js.map +0 -1
- package/dist/telemetry-amazon.js.dojo.js +0 -363
- package/dist/telemetry-amazon.js.dojo.js.map +0 -1
- package/dist/telemetry-amazon.js.dojo.min.js +0 -2
- package/dist/telemetry-amazon.js.dojo.min.js.map +0 -1
- package/dist/telemetry-amazon.js.js +0 -367
- package/dist/telemetry-amazon.js.js.map +0 -1
- package/dist/telemetry-amazon.js.min.js +0 -2
- package/dist/telemetry-amazon.js.min.js.map +0 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Copyright 2017 Environmental Systems Research Institute, Inc.
|
|
2
|
+
|
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License.
|
|
5
|
+
You may obtain a copy of the License at
|
|
6
|
+
|
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
|
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
See the License for the specific language governing permissions and
|
|
13
|
+
limitations under the License.
|
package/README.md
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
|
-
# `
|
|
1
|
+
# `@esri/telemetry-amazon`
|
|
2
2
|
|
|
3
|
-
This
|
|
3
|
+
> This is a plugin for the `Telemetry.js` package to interact with an AWS Analytics store. This package uses the third-party libraries, [analytics](https://github.com/DavidWells/analytics) and [@analytics/aws-pinpoint](https://github.com/DavidWells/analytics/tree/master/packages/analytics-plugin-aws-pinpoint) packages.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [`@esri/telemetry-amazon`](#esritelemetry-amazon)
|
|
8
|
+
- [Table of Contents](#table-of-contents)
|
|
9
|
+
- [How to Use](#how-to-use)
|
|
10
|
+
- [Amazon Configuration](#amazon-configuration)
|
|
11
|
+
- [Example](#example)
|
|
12
|
+
- [`telemetry.logEvent(event)`](#telemetrylogeventevent)
|
|
13
|
+
- [Telemetry Sharing Permissions](#telemetry-sharing-permissions)
|
|
14
|
+
- [Portal Items](#portal-items)
|
|
15
|
+
- [Usage](#usage)
|
|
16
|
+
- [Issues](#issues)
|
|
17
|
+
- [Contributing](#contributing)
|
|
18
|
+
- [License](#license)
|
|
6
19
|
|
|
7
20
|
```sh
|
|
8
21
|
npm install @esri/telemetry
|
|
@@ -11,13 +24,13 @@ npm install @esri/telemetry-amazon
|
|
|
11
24
|
|
|
12
25
|
## How to Use
|
|
13
26
|
|
|
14
|
-
`@esri/telemetry-amazon` packages works in the client-side browser and
|
|
27
|
+
`@esri/telemetry-amazon` packages works in the client-side browser and server-side Node.js. To use, install the package, include it in your project, create an instance of the plugin, and add it to the `plugins` array with [@esri/telemetry](../../README.md)
|
|
15
28
|
|
|
16
29
|
Below is an example of how to use the telemetry-amazon plugin.
|
|
17
30
|
|
|
18
31
|
```js
|
|
19
|
-
import Telemetry from '@esri/telemetry'
|
|
20
|
-
import Amazon from '@esri/telemetry-amazon'
|
|
32
|
+
import { Telemetry } from '@esri/telemetry';
|
|
33
|
+
import { Amazon } from '@esri/telemetry-amazon';
|
|
21
34
|
|
|
22
35
|
const amazonTracker = new Amazon({
|
|
23
36
|
userPoolID: USER_POOL_ID,
|
|
@@ -27,7 +40,7 @@ const amazonTracker = new Amazon({
|
|
|
27
40
|
id: APP_ID,
|
|
28
41
|
version: APP_VERSION,
|
|
29
42
|
},
|
|
30
|
-
})
|
|
43
|
+
});
|
|
31
44
|
|
|
32
45
|
const telemetryOptions = {
|
|
33
46
|
plugins: [amazonTracker],
|
|
@@ -35,45 +48,63 @@ const telemetryOptions = {
|
|
|
35
48
|
subscriptionInfo: {},
|
|
36
49
|
user: {},
|
|
37
50
|
},
|
|
38
|
-
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const telemetry = new Telemetry(telemetryOptions);
|
|
39
54
|
|
|
40
|
-
|
|
55
|
+
telemetry.logPageView();
|
|
41
56
|
|
|
42
|
-
telemetry.
|
|
43
|
-
telemetry.logEvent()
|
|
57
|
+
telemetry.logEvent();
|
|
44
58
|
```
|
|
45
59
|
|
|
46
|
-
After initializing `Telemetry.js`with the `telemetry-amazon`plugin, telemetry data will be sent to the AWS Pinpoint instance of the provided App.
|
|
60
|
+
After initializing `Telemetry.js` with the `telemetry-amazon` plugin, telemetry data will be sent to the AWS Pinpoint instance of the provided App.
|
|
47
61
|
|
|
48
|
-
|
|
62
|
+
## Amazon Configuration
|
|
49
63
|
|
|
50
64
|
- Get your app and user pool ID from AWS Pinpoint instance
|
|
51
|
-
- Pass in options
|
|
65
|
+
- Pass in options object to create an instance of the plugin
|
|
52
66
|
- the `fips` option determines if AWS FIPS endpoints are used for cognito and pinpoint requests
|
|
67
|
+
- Pass in an object containing the mapping for your custom dimensions and metrics
|
|
68
|
+
|
|
69
|
+
```js
|
|
70
|
+
// or if you are using optional custom dimensions and/or custom metrics
|
|
71
|
+
const googleTracker = new Amazon({
|
|
72
|
+
dimensions: {
|
|
73
|
+
datasetID: 1,
|
|
74
|
+
attribute: 2,
|
|
75
|
+
serviceQuery: 3,
|
|
76
|
+
},
|
|
77
|
+
metrics: {
|
|
78
|
+
duration: 1,
|
|
79
|
+
size: 2,
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
```
|
|
53
83
|
|
|
54
84
|
If you need to disable tracking you can set `disabled: true` when initializing the `Telemetry` object. Then you can continue to call the methods on your instance of `Telemetry` without throwing exceptions or logging errors.
|
|
55
85
|
|
|
56
86
|
Additionally, you can disable individual trackers when initializing the `Telemetry` object by passing `disabled: true` in the tracker options.
|
|
57
87
|
|
|
58
88
|
```js
|
|
59
|
-
{
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
...
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
89
|
+
const amazonTracker = new Amazon({
|
|
90
|
+
disabled: true,
|
|
91
|
+
});
|
|
66
92
|
```
|
|
67
93
|
|
|
68
94
|
Post initialization, it is possible to disable & enable specific trackers using `disableTracker` and `enableTracker` methods.
|
|
69
95
|
|
|
70
96
|
```js
|
|
71
|
-
telemetry.disableTracker('amazon')
|
|
72
|
-
|
|
73
|
-
telemetry.
|
|
74
|
-
|
|
75
|
-
telemetry.
|
|
76
|
-
|
|
97
|
+
telemetry.disableTracker('amazon');
|
|
98
|
+
|
|
99
|
+
telemetry.logPageView(); // no amazon page view logged
|
|
100
|
+
|
|
101
|
+
telemetry.logEvent(); // no amazon event logged
|
|
102
|
+
|
|
103
|
+
telemetry.enableTracker('amazon');
|
|
104
|
+
|
|
105
|
+
telemetry.logPageView(); // amazon page view logged
|
|
106
|
+
|
|
107
|
+
telemetry.logEvent(); // amazon event logged
|
|
77
108
|
```
|
|
78
109
|
|
|
79
110
|
## Example
|
|
@@ -94,7 +125,67 @@ const event = {
|
|
|
94
125
|
datasetID: '1ef',
|
|
95
126
|
attribute: 'crime_type',
|
|
96
127
|
user: 'amazing_map_woman',
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
telemetry.logEvent(event);
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Telemetry Sharing Permissions
|
|
134
|
+
|
|
135
|
+
### Portal Items
|
|
136
|
+
|
|
137
|
+
`telemetry-amazon` contains static methods for setting and getting telemetry access for portal items.
|
|
138
|
+
|
|
139
|
+
### Usage
|
|
140
|
+
|
|
141
|
+
```js
|
|
142
|
+
import { Amazon } from '@esri/telemetry-amazon'
|
|
143
|
+
...
|
|
144
|
+
|
|
145
|
+
const getAccessParams = {
|
|
146
|
+
id: '1ef',
|
|
147
|
+
authentication: PortalUserSession,
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const access = await Amazon.getAccessPermissions(getAccessParams: IGetAccessPermissionsParams)
|
|
151
|
+
|
|
152
|
+
const setAccessParams = {
|
|
153
|
+
id: '1ef',
|
|
154
|
+
authentication: PortalUserSession,
|
|
155
|
+
username: 'dev_pre_a_hub_admin',
|
|
156
|
+
accessChangeset: [
|
|
157
|
+
{
|
|
158
|
+
action: 'add',
|
|
159
|
+
targetProperty: 'public',
|
|
160
|
+
}
|
|
161
|
+
]
|
|
97
162
|
}
|
|
98
163
|
|
|
99
|
-
|
|
164
|
+
const result = await Amazon.setAccessPermissions(setAccessParams: ISetAccessPermissionsParams)
|
|
100
165
|
```
|
|
166
|
+
|
|
167
|
+
## Issues
|
|
168
|
+
|
|
169
|
+
If something isn't working, please take a look at [previously logged issues](https://devtopia.esri.com/WebGIS/arcgis-telemetry.js/issues) first. Have you found a new bug? Create an issue [here](https://devtopia.esri.com/WebGIS/arcgis-telemetry.js/issues/new).
|
|
170
|
+
|
|
171
|
+
## Contributing
|
|
172
|
+
|
|
173
|
+
Esri welcomes contributions from anyone and everyone. Please see our [guidelines for contributing](../../CONTRIBUTING.md).
|
|
174
|
+
|
|
175
|
+
## License
|
|
176
|
+
|
|
177
|
+
Copyright © 2022 Esri
|
|
178
|
+
|
|
179
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
180
|
+
you may not use this file except in compliance with the License.
|
|
181
|
+
You may obtain a copy of the License at
|
|
182
|
+
|
|
183
|
+
> http://www.apache.org/licenses/LICENSE-2.0
|
|
184
|
+
|
|
185
|
+
Unless required by applicable law or agreed to in writing, software
|
|
186
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
187
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
188
|
+
See the License for the specific language governing permissions and
|
|
189
|
+
limitations under the License.
|
|
190
|
+
|
|
191
|
+
A copy of the license is available in the repository's [LICENSE](../../LICENSE) file.
|
package/dist/esm/auth.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { storage } from '@esri/telemetry';
|
|
2
|
+
const COGNITO_KEY = 'TELEMETRY_COGNITO_CREDENTIALS';
|
|
3
|
+
export function getCredentials(IdentityPoolId, options = {}) {
|
|
4
|
+
const fipsSubdomainSuffix = options.fips === true ? '-fips' : '';
|
|
5
|
+
const COGNITO_URL = `https://cognito-identity${fipsSubdomainSuffix}.us-east-1.amazonaws.com/`;
|
|
6
|
+
let cached = storage.get(COGNITO_KEY);
|
|
7
|
+
if (cached && Date.now() / 1000 < cached.Expiration)
|
|
8
|
+
return Promise.resolve(cached);
|
|
9
|
+
const fetchOptions = {
|
|
10
|
+
method: 'POST',
|
|
11
|
+
headers: {
|
|
12
|
+
'Content-type': 'application/x-amz-json-1.1',
|
|
13
|
+
'X-Amz-Target': 'AWSCognitoIdentityService.GetId',
|
|
14
|
+
},
|
|
15
|
+
body: JSON.stringify({ IdentityPoolId }),
|
|
16
|
+
};
|
|
17
|
+
return fetch(COGNITO_URL, fetchOptions)
|
|
18
|
+
.then((response) => {
|
|
19
|
+
if (!response.ok) {
|
|
20
|
+
throw new Error(response.statusText);
|
|
21
|
+
}
|
|
22
|
+
return response.json();
|
|
23
|
+
})
|
|
24
|
+
.then((response) => {
|
|
25
|
+
const { IdentityId } = response;
|
|
26
|
+
const options = {
|
|
27
|
+
method: 'POST',
|
|
28
|
+
headers: {
|
|
29
|
+
'Content-type': 'application/x-amz-json-1.1',
|
|
30
|
+
'X-Amz-Target': 'AWSCognitoIdentityService.GetCredentialsForIdentity',
|
|
31
|
+
},
|
|
32
|
+
body: JSON.stringify({ IdentityId }),
|
|
33
|
+
};
|
|
34
|
+
return fetch(COGNITO_URL, options);
|
|
35
|
+
})
|
|
36
|
+
.then((response) => {
|
|
37
|
+
if (!response.ok) {
|
|
38
|
+
throw new Error(response.statusText);
|
|
39
|
+
}
|
|
40
|
+
return response.json();
|
|
41
|
+
})
|
|
42
|
+
.then(({ Credentials }) => {
|
|
43
|
+
storage.set(COGNITO_KEY, Credentials);
|
|
44
|
+
return Credentials;
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,GAAG,+BAA+B,CAAC;AAEpD,MAAM,UAAU,cAAc,CAC5B,cAAsB,EACtB,UAA2C,EAAE;IAE7C,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,WAAW,GAAG,2BAA2B,mBAAmB,2BAA2B,CAAC;IAC9F,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,MAAM,CAAC,UAAU;QACjD,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjC,MAAM,YAAY,GAAG;QACnB,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,4BAA4B;YAC5C,cAAc,EAAE,iCAAiC;SAClD;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;KACzC,CAAC;IAEF,OAAO,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC;SACpC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACjB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;SACtC;QACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACjB,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC;QAChC,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,4BAA4B;gBAC5C,cAAc,EAAE,qDAAqD;aACtE;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;SACrC,CAAC;QACF,OAAO,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACjB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;SACtC;QACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACtC,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import 'cross-fetch/polyfill';
|
|
2
|
+
import { getCredentials } from './auth';
|
|
3
|
+
import fetchMock from 'fetch-mock';
|
|
4
|
+
const expectedIdFetchOptions = {
|
|
5
|
+
method: 'POST',
|
|
6
|
+
headers: {
|
|
7
|
+
'Content-type': 'application/x-amz-json-1.1',
|
|
8
|
+
'X-Amz-Target': 'AWSCognitoIdentityService.GetId',
|
|
9
|
+
},
|
|
10
|
+
body: '{"IdentityPoolId":"us-east-1:hello-world"}',
|
|
11
|
+
};
|
|
12
|
+
const expectedCredsFetchOptions = {
|
|
13
|
+
method: 'POST',
|
|
14
|
+
headers: {
|
|
15
|
+
'Content-type': 'application/x-amz-json-1.1',
|
|
16
|
+
'X-Amz-Target': 'AWSCognitoIdentityService.GetCredentialsForIdentity',
|
|
17
|
+
},
|
|
18
|
+
body: '{"IdentityId":"abcdefg"}',
|
|
19
|
+
};
|
|
20
|
+
describe('auth - getCredentials', () => {
|
|
21
|
+
test('no FIPS urls', async (done) => {
|
|
22
|
+
fetchMock.post({
|
|
23
|
+
url: 'https://cognito-identity.us-east-1.amazonaws.com/',
|
|
24
|
+
}, (_, { headers }) => {
|
|
25
|
+
if (headers['X-Amz-Target'] === 'AWSCognitoIdentityService.GetId') {
|
|
26
|
+
return { status: 200, body: { IdentityId: 'abcdefg' } };
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
status: 200,
|
|
30
|
+
body: {
|
|
31
|
+
Credentials: {
|
|
32
|
+
AccessKeyId: '12345',
|
|
33
|
+
SecretKey: '56789',
|
|
34
|
+
SessionToken: 'abcdef',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
const fetchSpy = jest.spyOn(global, 'fetch');
|
|
40
|
+
const creds = await getCredentials('us-east-1:hello-world', {});
|
|
41
|
+
expect(creds).toEqual({
|
|
42
|
+
AccessKeyId: '12345',
|
|
43
|
+
SecretKey: '56789',
|
|
44
|
+
SessionToken: 'abcdef',
|
|
45
|
+
});
|
|
46
|
+
expect(fetchSpy.mock.calls.length).toBe(2);
|
|
47
|
+
const [identityIdFetch, credsFetch] = fetchSpy.mock.calls;
|
|
48
|
+
// Ensure session-start fetches made as expected
|
|
49
|
+
expect(identityIdFetch).toEqual([
|
|
50
|
+
'https://cognito-identity.us-east-1.amazonaws.com/',
|
|
51
|
+
expectedIdFetchOptions,
|
|
52
|
+
]);
|
|
53
|
+
expect(credsFetch).toEqual([
|
|
54
|
+
'https://cognito-identity.us-east-1.amazonaws.com/',
|
|
55
|
+
expectedCredsFetchOptions,
|
|
56
|
+
]);
|
|
57
|
+
fetchMock.restore();
|
|
58
|
+
done();
|
|
59
|
+
});
|
|
60
|
+
test('FIPS urls', async (done) => {
|
|
61
|
+
fetchMock.post({
|
|
62
|
+
url: 'https://cognito-identity-fips.us-east-1.amazonaws.com/',
|
|
63
|
+
}, (_, { headers }) => {
|
|
64
|
+
if (headers['X-Amz-Target'] === 'AWSCognitoIdentityService.GetId') {
|
|
65
|
+
return { status: 200, body: { IdentityId: 'abcdefg' } };
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
status: 200,
|
|
69
|
+
body: {
|
|
70
|
+
Credentials: {
|
|
71
|
+
AccessKeyId: '12345',
|
|
72
|
+
SecretKey: '56789',
|
|
73
|
+
SessionToken: 'abcdef',
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
});
|
|
78
|
+
const fetchSpy = jest.spyOn(global, 'fetch');
|
|
79
|
+
const creds = await getCredentials('us-east-1:hello-world', { fips: true });
|
|
80
|
+
expect(creds).toEqual({
|
|
81
|
+
AccessKeyId: '12345',
|
|
82
|
+
SecretKey: '56789',
|
|
83
|
+
SessionToken: 'abcdef',
|
|
84
|
+
});
|
|
85
|
+
expect(fetchSpy.mock.calls.length).toBe(2);
|
|
86
|
+
const [identityIdFetch, credsFetch] = fetchSpy.mock.calls;
|
|
87
|
+
// Ensure session-start fetches made as expected
|
|
88
|
+
expect(identityIdFetch).toEqual([
|
|
89
|
+
'https://cognito-identity-fips.us-east-1.amazonaws.com/',
|
|
90
|
+
expectedIdFetchOptions,
|
|
91
|
+
]);
|
|
92
|
+
expect(credsFetch).toEqual([
|
|
93
|
+
'https://cognito-identity-fips.us-east-1.amazonaws.com/',
|
|
94
|
+
expectedCredsFetchOptions,
|
|
95
|
+
]);
|
|
96
|
+
fetchMock.restore();
|
|
97
|
+
done();
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=auth.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.test.js","sourceRoot":"","sources":["../../src/auth.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function buildAccessProperties(username, currentAccessProperties, accessChangeset) {
|
|
2
|
+
return accessChangeset.reduce((accessProperties, accessChange) => {
|
|
3
|
+
const { action, targetProperty } = accessChange;
|
|
4
|
+
if (action === 'add') {
|
|
5
|
+
accessProperties[targetProperty] = {
|
|
6
|
+
updatedAt: new Date(),
|
|
7
|
+
updatedBy: username,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
else if (action === 'remove') {
|
|
11
|
+
delete accessProperties[targetProperty];
|
|
12
|
+
}
|
|
13
|
+
return accessProperties;
|
|
14
|
+
}, currentAccessProperties);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=build-access-properties.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-access-properties.js","sourceRoot":"","sources":["../../src/build-access-properties.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,uBAA4C,EAC5C,eAAmC;IAEnC,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,YAAY,EAAE,EAAE;QAC/D,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,YAAY,CAAC;QAChD,IAAI,MAAM,KAAK,KAAK,EAAE;YACpB,gBAAgB,CAAC,cAAc,CAAC,GAAG;gBACjC,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,SAAS,EAAE,QAAQ;aACpB,CAAC;SACH;aAAM,IAAI,MAAM,KAAK,QAAQ,EAAE;YAC9B,OAAO,gBAAgB,CAAC,cAAc,CAAC,CAAC;SACzC;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC,EAAE,uBAAuB,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { buildAccessProperties } from './build-access-properties';
|
|
2
|
+
describe('buildAccessProperties', () => {
|
|
3
|
+
test('should return empty access property without changes', () => {
|
|
4
|
+
const accessProperties = buildAccessProperties('test_username', {}, []);
|
|
5
|
+
expect(accessProperties).toEqual({});
|
|
6
|
+
});
|
|
7
|
+
test('should add public to access properties', () => {
|
|
8
|
+
const mockDate = new Date();
|
|
9
|
+
const dateSpy = jest
|
|
10
|
+
.spyOn(global, 'Date')
|
|
11
|
+
.mockImplementation(() => mockDate);
|
|
12
|
+
const result = buildAccessProperties('test_username', {}, [
|
|
13
|
+
{ action: 'add', targetProperty: 'public' },
|
|
14
|
+
]);
|
|
15
|
+
expect(result).toEqual({
|
|
16
|
+
public: {
|
|
17
|
+
updatedAt: mockDate,
|
|
18
|
+
updatedBy: 'test_username',
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
dateSpy.mockRestore();
|
|
22
|
+
});
|
|
23
|
+
test('should return telemetry properties with new public access property', () => {
|
|
24
|
+
const mockDate = new Date();
|
|
25
|
+
const dateSpy = jest
|
|
26
|
+
.spyOn(global, 'Date')
|
|
27
|
+
.mockImplementation(() => mockDate);
|
|
28
|
+
const accessProperties = buildAccessProperties('test_username', {}, [
|
|
29
|
+
{ action: 'add', targetProperty: 'public' },
|
|
30
|
+
]);
|
|
31
|
+
expect(accessProperties).toEqual({
|
|
32
|
+
public: {
|
|
33
|
+
updatedAt: mockDate,
|
|
34
|
+
updatedBy: 'test_username',
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
dateSpy.mockRestore();
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=build-access-properties.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-access-properties.test.js","sourceRoot":"","sources":["../../src/build-access-properties.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC/D,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAExE,MAAM,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAClD,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAuB,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI;aACjB,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC;aACrB,kBAAkB,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;QAEtC,MAAM,MAAM,GAAG,qBAAqB,CAAC,eAAe,EAAE,EAAE,EAAE;YACxD,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE;SAC5C,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE;gBACN,SAAS,EAAE,QAAQ;gBACnB,SAAS,EAAE,eAAe;aAC3B;SACF,CAAC,CAAC;QACH,OAAO,CAAC,WAAW,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC9E,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAuB,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI;aACjB,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC;aACrB,kBAAkB,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;QAEtC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,eAAe,EAAE,EAAE,EAAE;YAClE,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE;SAC5C,CAAC,CAAC;QAEH,MAAM,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC;YAC/B,MAAM,EAAE;gBACN,SAAS,EAAE,QAAQ;gBACnB,SAAS,EAAE,eAAe;aAC3B;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,WAAW,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { formatTelemetryAttributes } from './format-telemetry-attributes';
|
|
2
|
+
import { formatTelemetryMetrics } from './format-telemetry-metrics';
|
|
3
|
+
export function createEventLog({ event = {}, dimensionLookup = {}, metricLookup = {}, }) {
|
|
4
|
+
var _a, _b;
|
|
5
|
+
const { pathname: eventPathname, eventType = 'other' } = event;
|
|
6
|
+
const metrics = formatTelemetryMetrics(event, metricLookup);
|
|
7
|
+
const eventAttributes = formatTelemetryAttributes({
|
|
8
|
+
telemetryData: Object.assign({ eventType }, event),
|
|
9
|
+
dimensionLookup,
|
|
10
|
+
excludeKeys: [
|
|
11
|
+
'workflow',
|
|
12
|
+
'pathname',
|
|
13
|
+
...Object.keys(metrics),
|
|
14
|
+
...Object.keys(metricLookup),
|
|
15
|
+
],
|
|
16
|
+
});
|
|
17
|
+
const telemetryPayload = Object.assign(Object.assign({ name: eventType }, eventAttributes), metrics);
|
|
18
|
+
// Set browser properties if available
|
|
19
|
+
if (typeof document !== 'undefined' && document.referrer) {
|
|
20
|
+
telemetryPayload.referrer = document.referrer;
|
|
21
|
+
}
|
|
22
|
+
if (typeof window !== 'undefined' && !telemetryPayload.hostname) {
|
|
23
|
+
telemetryPayload.hostname = (_a = window.location) === null || _a === void 0 ? void 0 : _a.hostname;
|
|
24
|
+
}
|
|
25
|
+
telemetryPayload.path =
|
|
26
|
+
typeof window !== 'undefined' && window.location.pathname
|
|
27
|
+
? (_b = window.location) === null || _b === void 0 ? void 0 : _b.pathname
|
|
28
|
+
: eventPathname;
|
|
29
|
+
return telemetryPayload;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=create-event-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-event-log.js","sourceRoot":"","sources":["../../src/create-event-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,GAAG,EAAe,EACvB,eAAe,GAAG,EAAE,EACpB,YAAY,GAAG,EAAE,GAKlB;;IACC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;IAC/D,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC5D,MAAM,eAAe,GAAG,yBAAyB,CAAC;QAChD,aAAa,kBAAI,SAAS,IAAK,KAAK,CAAE;QACtC,eAAe;QACf,WAAW,EAAE;YACX,UAAU;YACV,UAAU;YACV,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;SAC7B;KACF,CAAC,CAAC;IAEH,MAAM,gBAAgB,iCACpB,IAAI,EAAE,SAAS,IACZ,eAAe,GACf,OAAO,CACX,CAAC;IAEF,sCAAsC;IACtC,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,QAAQ,EAAE;QACxD,gBAAgB,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;KAC/C;IAED,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;QAC/D,gBAAgB,CAAC,QAAQ,GAAG,MAAA,MAAM,CAAC,QAAQ,0CAAE,QAAQ,CAAC;KACvD;IAED,gBAAgB,CAAC,IAAI;QACnB,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ;YACvD,CAAC,CAAC,MAAA,MAAM,CAAC,QAAQ,0CAAE,QAAQ;YAC3B,CAAC,CAAC,aAAa,CAAC;IAEpB,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
|