@esri/telemetry-amazon 1.0.0-beta.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +119 -28
  3. package/dist/esm/auth.js +47 -0
  4. package/dist/esm/auth.js.map +1 -0
  5. package/dist/esm/auth.test.js +100 -0
  6. package/dist/esm/auth.test.js.map +1 -0
  7. package/dist/esm/build-access-properties.js +16 -0
  8. package/dist/esm/build-access-properties.js.map +1 -0
  9. package/dist/esm/build-access-properties.test.js +40 -0
  10. package/dist/esm/build-access-properties.test.js.map +1 -0
  11. package/dist/esm/create-event-log.js +31 -0
  12. package/dist/esm/create-event-log.js.map +1 -0
  13. package/dist/esm/create-event-log.test.js +273 -0
  14. package/dist/esm/create-event-log.test.js.map +1 -0
  15. package/dist/esm/create-page-view-log.js +19 -0
  16. package/dist/esm/create-page-view-log.js.map +1 -0
  17. package/dist/esm/create-page-view-log.test.js +69 -0
  18. package/dist/esm/create-page-view-log.test.js.map +1 -0
  19. package/dist/esm/format-telemetry-attributes.js +32 -0
  20. package/dist/esm/format-telemetry-attributes.js.map +1 -0
  21. package/dist/esm/format-telemetry-metrics.js +27 -0
  22. package/dist/esm/format-telemetry-metrics.js.map +1 -0
  23. package/dist/esm/format-telemetry-metrics.test.js +22 -0
  24. package/dist/esm/format-telemetry-metrics.test.js.map +1 -0
  25. package/dist/esm/get-portal-item-access-permissions.js +8 -0
  26. package/dist/esm/get-portal-item-access-permissions.js.map +1 -0
  27. package/dist/esm/get-portal-item-access-permissions.test.js +55 -0
  28. package/dist/esm/get-portal-item-access-permissions.test.js.map +1 -0
  29. package/dist/esm/index.js +63 -0
  30. package/dist/esm/index.js.map +1 -0
  31. package/dist/esm/index.test.js +196 -0
  32. package/dist/esm/index.test.js.map +1 -0
  33. package/dist/esm/set-portal-item-access-permissions.js +20 -0
  34. package/dist/esm/set-portal-item-access-permissions.js.map +1 -0
  35. package/dist/esm/set-portal-item-access-permissions.test.js +177 -0
  36. package/dist/esm/set-portal-item-access-permissions.test.js.map +1 -0
  37. package/dist/esm/types.js +2 -0
  38. package/dist/esm/types.js.map +1 -0
  39. package/dist/node/auth.js +51 -0
  40. package/dist/node/auth.js.map +1 -0
  41. package/dist/node/auth.test.js +103 -0
  42. package/dist/node/auth.test.js.map +1 -0
  43. package/dist/node/build-access-properties.js +20 -0
  44. package/dist/node/build-access-properties.js.map +1 -0
  45. package/dist/node/build-access-properties.test.js +42 -0
  46. package/dist/node/build-access-properties.test.js.map +1 -0
  47. package/dist/node/create-event-log.js +35 -0
  48. package/dist/node/create-event-log.js.map +1 -0
  49. package/dist/node/create-event-log.test.js +275 -0
  50. package/dist/node/create-event-log.test.js.map +1 -0
  51. package/dist/node/create-page-view-log.js +23 -0
  52. package/dist/node/create-page-view-log.js.map +1 -0
  53. package/dist/node/create-page-view-log.test.js +71 -0
  54. package/dist/node/create-page-view-log.test.js.map +1 -0
  55. package/dist/node/format-telemetry-attributes.js +36 -0
  56. package/dist/node/format-telemetry-attributes.js.map +1 -0
  57. package/dist/node/format-telemetry-metrics.js +31 -0
  58. package/dist/node/format-telemetry-metrics.js.map +1 -0
  59. package/dist/node/format-telemetry-metrics.test.js +24 -0
  60. package/dist/node/format-telemetry-metrics.test.js.map +1 -0
  61. package/dist/node/get-portal-item-access-permissions.js +12 -0
  62. package/dist/node/get-portal-item-access-permissions.js.map +1 -0
  63. package/dist/node/get-portal-item-access-permissions.test.js +58 -0
  64. package/dist/node/get-portal-item-access-permissions.test.js.map +1 -0
  65. package/dist/node/index.js +68 -0
  66. package/dist/node/index.js.map +1 -0
  67. package/dist/node/index.test.js +199 -0
  68. package/dist/node/index.test.js.map +1 -0
  69. package/dist/node/set-portal-item-access-permissions.js +24 -0
  70. package/dist/node/set-portal-item-access-permissions.js.map +1 -0
  71. package/dist/node/set-portal-item-access-permissions.test.js +180 -0
  72. package/dist/node/set-portal-item-access-permissions.test.js.map +1 -0
  73. package/dist/node/types.js +3 -0
  74. package/dist/node/types.js.map +1 -0
  75. package/dist/types/auth.d.ts +2 -0
  76. package/dist/types/auth.test.d.ts +1 -0
  77. package/dist/types/build-access-properties.d.ts +2 -0
  78. package/dist/types/build-access-properties.test.d.ts +1 -0
  79. package/dist/types/create-event-log.d.ts +6 -0
  80. package/dist/types/create-event-log.test.d.ts +1 -0
  81. package/dist/types/create-page-view-log.d.ts +8 -0
  82. package/dist/types/create-page-view-log.test.d.ts +1 -0
  83. package/dist/types/format-telemetry-attributes.d.ts +5 -0
  84. package/dist/types/format-telemetry-metrics.d.ts +2 -0
  85. package/dist/types/format-telemetry-metrics.test.d.ts +1 -0
  86. package/dist/types/get-portal-item-access-permissions.d.ts +2 -0
  87. package/dist/types/get-portal-item-access-permissions.test.d.ts +1 -0
  88. package/dist/types/index.d.ts +16 -0
  89. package/dist/types/index.test.d.ts +1 -0
  90. package/dist/types/set-portal-item-access-permissions.d.ts +3 -0
  91. package/dist/types/set-portal-item-access-permissions.test.d.ts +1 -0
  92. package/dist/types/types.d.ts +77 -0
  93. package/dist/umd/telemetry-amazon.js +6844 -0
  94. package/dist/umd/telemetry-amazon.js.map +1 -0
  95. package/dist/umd/telemetry-amazon.min.js +6844 -0
  96. package/dist/umd/telemetry-amazon.min.js.map +1 -0
  97. package/package.json +23 -6
  98. package/dist/telemetry-amazon.js.amd.js +0 -363
  99. package/dist/telemetry-amazon.js.amd.js.map +0 -1
  100. package/dist/telemetry-amazon.js.amd.min.js +0 -2
  101. package/dist/telemetry-amazon.js.amd.min.js.map +0 -1
  102. package/dist/telemetry-amazon.js.dojo.js +0 -363
  103. package/dist/telemetry-amazon.js.dojo.js.map +0 -1
  104. package/dist/telemetry-amazon.js.dojo.min.js +0 -2
  105. package/dist/telemetry-amazon.js.dojo.min.js.map +0 -1
  106. package/dist/telemetry-amazon.js.js +0 -367
  107. package/dist/telemetry-amazon.js.js.map +0 -1
  108. package/dist/telemetry-amazon.js.min.js +0 -2
  109. package/dist/telemetry-amazon.js.min.js.map +0 -1
@@ -0,0 +1,196 @@
1
+ import Analytics from 'analytics';
2
+ import awsPinpointPlugin from '@analytics/aws-pinpoint';
3
+ import * as portal from '@esri/arcgis-rest-portal';
4
+ import { Amazon } from '.';
5
+ import { setPortalItemAccessPermissions } from './set-portal-item-access-permissions';
6
+ const mockAnalyticsTrack = jest.fn();
7
+ jest.mock('./create-event-log', () => {
8
+ return {
9
+ createEventLog: jest.fn().mockImplementation(() => {
10
+ return { name: 'foo' };
11
+ })
12
+ };
13
+ });
14
+ jest.mock('./create-page-view-log', () => {
15
+ return {
16
+ createPageViewLog: jest.fn().mockImplementation(() => {
17
+ return { pageView: 'foo' };
18
+ })
19
+ };
20
+ });
21
+ jest.mock('analytics', () => {
22
+ return jest.fn().mockImplementation(() => {
23
+ return {
24
+ track: mockAnalyticsTrack,
25
+ };
26
+ });
27
+ });
28
+ jest.mock('@analytics/aws-pinpoint', () => {
29
+ return jest.fn().mockImplementation(() => {
30
+ return { plugin: 'foo' };
31
+ });
32
+ });
33
+ jest.mock('@esri/arcgis-rest-portal');
34
+ const getItemMock = portal.getItem;
35
+ const updateItemMock = portal.updateItem;
36
+ jest.mock('./set-portal-item-access-permissions');
37
+ describe('Amazon', () => {
38
+ beforeEach(() => {
39
+ Analytics.mockClear();
40
+ awsPinpointPlugin.mockClear();
41
+ mockAnalyticsTrack.mockClear();
42
+ });
43
+ test('Amazon constructor no app object', () => {
44
+ const opts = {
45
+ userPoolID: 'pool-id',
46
+ };
47
+ const telemetry = new Amazon(opts);
48
+ expect(telemetry).toEqual(expect.objectContaining({
49
+ userPoolID: 'pool-id',
50
+ name: 'amazon',
51
+ }));
52
+ expect(Analytics).toHaveBeenCalledTimes(1);
53
+ expect(Analytics).toBeCalledWith({ plugins: [{ plugin: 'foo' }] });
54
+ expect(awsPinpointPlugin).toHaveBeenCalledTimes(1);
55
+ expect(awsPinpointPlugin).toBeCalledWith(expect.objectContaining({
56
+ fips: undefined,
57
+ getCredentials: expect.any(Function),
58
+ pinpointAppId: undefined,
59
+ }));
60
+ });
61
+ test('Amazon constructor no fips option', () => {
62
+ const opts = {
63
+ userPoolID: 'pool-id',
64
+ app: {
65
+ name: 'test',
66
+ id: '1234',
67
+ },
68
+ };
69
+ const telemetry = new Amazon(opts);
70
+ expect(telemetry).toEqual(expect.objectContaining({
71
+ app: {
72
+ id: '1234',
73
+ name: 'test',
74
+ },
75
+ userPoolID: 'pool-id',
76
+ name: 'amazon',
77
+ }));
78
+ expect(Analytics).toHaveBeenCalledTimes(1);
79
+ expect(Analytics).toBeCalledWith({
80
+ app: 'test',
81
+ plugins: [{ plugin: 'foo' }],
82
+ });
83
+ expect(awsPinpointPlugin).toHaveBeenCalledTimes(1);
84
+ expect(awsPinpointPlugin).toBeCalledWith(expect.objectContaining({
85
+ fips: undefined,
86
+ getCredentials: expect.any(Function),
87
+ pinpointAppId: '1234',
88
+ }));
89
+ });
90
+ test('Amazon constructor fips option', () => {
91
+ const opts = {
92
+ fips: true,
93
+ userPoolID: 'pool-id',
94
+ app: {
95
+ name: 'test',
96
+ id: '1234',
97
+ },
98
+ };
99
+ const telemetry = new Amazon(opts);
100
+ expect(telemetry).toEqual(expect.objectContaining({
101
+ app: {
102
+ id: '1234',
103
+ name: 'test',
104
+ },
105
+ fips: true,
106
+ userPoolID: 'pool-id',
107
+ name: 'amazon',
108
+ }));
109
+ expect(Analytics).toHaveBeenCalledTimes(1);
110
+ expect(Analytics).toBeCalledWith({
111
+ app: 'test',
112
+ plugins: [{ plugin: 'foo' }],
113
+ });
114
+ expect(awsPinpointPlugin).toHaveBeenCalledTimes(1);
115
+ expect(awsPinpointPlugin).toBeCalledWith(expect.objectContaining({
116
+ fips: true,
117
+ getCredentials: expect.any(Function),
118
+ pinpointAppId: '1234',
119
+ }));
120
+ });
121
+ test('Amazon methods call dependencies', () => {
122
+ const opts = {
123
+ fips: true,
124
+ userPoolID: 'pool-id',
125
+ app: {
126
+ name: 'test',
127
+ id: '1234',
128
+ },
129
+ };
130
+ const telemetry = new Amazon(opts);
131
+ telemetry.logPageView('foo');
132
+ expect(mockAnalyticsTrack).toHaveBeenCalledTimes(1);
133
+ expect(mockAnalyticsTrack.mock.calls[0]).toEqual([
134
+ 'pageView',
135
+ { pageView: 'foo' },
136
+ ]);
137
+ telemetry.logEvent({ eventType: 'foo' });
138
+ expect(mockAnalyticsTrack).toHaveBeenCalledTimes(2);
139
+ expect(mockAnalyticsTrack.mock.calls[1]).toEqual(['foo', { name: 'foo' }]);
140
+ });
141
+ test('Amazon track can handle undefined event or eventType', () => {
142
+ const opts = {
143
+ fips: true,
144
+ userPoolID: 'pool-id',
145
+ app: {
146
+ name: 'test',
147
+ id: '1234',
148
+ },
149
+ };
150
+ const telemetry = new Amazon(opts);
151
+ telemetry.logPageView(undefined);
152
+ expect(mockAnalyticsTrack).toHaveBeenCalledTimes(1);
153
+ expect(mockAnalyticsTrack.mock.calls[0]).toEqual([
154
+ 'pageView',
155
+ { pageView: 'foo' },
156
+ ]);
157
+ telemetry.logEvent();
158
+ expect(mockAnalyticsTrack).toHaveBeenCalledTimes(2);
159
+ expect(mockAnalyticsTrack.mock.calls[1]).toEqual(['foo', { name: 'foo' }]);
160
+ telemetry.logEvent({});
161
+ expect(mockAnalyticsTrack).toHaveBeenCalledTimes(3);
162
+ expect(mockAnalyticsTrack.mock.calls[1]).toEqual(['foo', { name: 'foo' }]);
163
+ });
164
+ describe('getAccessPermissions', () => {
165
+ test('should call getItem', async () => {
166
+ const accessPropertiesMock = { access: { foo: 'foo', bar: 'bar' } };
167
+ getItemMock.mockResolvedValue({
168
+ properties: { telemetry: { arcgis: accessPropertiesMock } },
169
+ });
170
+ const result = await Amazon.getAccessPermissions({
171
+ id: 'test_item_id',
172
+ authentication: 'bar',
173
+ });
174
+ expect(result).toEqual(accessPropertiesMock);
175
+ expect(getItemMock).toBeCalledTimes(1);
176
+ getItemMock.mockRestore();
177
+ });
178
+ });
179
+ describe('setAccessPermissions', () => {
180
+ test('should call setPortalItemAccessPermissions if scope is portal', async () => {
181
+ const result = await Amazon.setAccessPermissions({
182
+ id: 'test_item_id',
183
+ authentication: 'bar',
184
+ username: 'test_username',
185
+ accessChangeset: [
186
+ {
187
+ action: 'add',
188
+ targetProperty: 'public',
189
+ },
190
+ ],
191
+ });
192
+ expect(setPortalItemAccessPermissions).toBeCalledTimes(1);
193
+ });
194
+ });
195
+ });
196
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/index.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { __rest } from "tslib";
2
+ import { getItem, updateItem, } from '@esri/arcgis-rest-portal';
3
+ import { buildAccessProperties } from './build-access-properties';
4
+ export async function setPortalItemAccessPermissions({ id, authentication, username, accessChangeset, }) {
5
+ const { properties = {} } = await getItem(id, {
6
+ authentication,
7
+ });
8
+ const _a = properties.telemetry, _b = _a === void 0 ? {} : _a, { arcgis: { access: currentAccessProperties = {} } = {} } = _b, additionalTelemetryProperties = __rest(_b, ["arcgis"]);
9
+ const accessProperties = buildAccessProperties(username, currentAccessProperties, accessChangeset);
10
+ return updateItem({
11
+ item: {
12
+ id,
13
+ properties: Object.assign(Object.assign({}, properties), { telemetry: Object.assign(Object.assign({}, additionalTelemetryProperties), { arcgis: {
14
+ access: Object.assign({}, accessProperties),
15
+ } }) }),
16
+ },
17
+ authentication,
18
+ });
19
+ }
20
+ //# sourceMappingURL=set-portal-item-access-permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-portal-item-access-permissions.js","sourceRoot":"","sources":["../../src/set-portal-item-access-permissions.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,OAAO,EAEP,UAAU,GACX,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,EACnD,EAAE,EACF,cAAc,EACd,QAAQ,EACR,eAAe,GACa;IAC5B,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,MAAM,OAAO,CAAC,EAAE,EAAE;QAC5C,cAAc;KACf,CAAC,CAAC;IACH,MACE,KAIE,UAAU,UADN,EAHN,qBAGI,EAAE,KAAA,EAHN,EACE,MAAM,EAAE,EAAE,MAAM,EAAE,uBAAuB,GAAG,EAAE,EAAE,GAAG,EAAE,OAEjD,EADD,6BAA6B,cAFvB,UAGV,CACW,CAAC;IAEf,MAAM,gBAAgB,GAAG,qBAAqB,CAC5C,QAAQ,EACR,uBAAuB,EACvB,eAAe,CAChB,CAAC;IAEF,OAAO,UAAU,CAAC;QAChB,IAAI,EAAE;YACJ,EAAE;YACF,UAAU,kCACL,UAAU,KACb,SAAS,kCACJ,6BAA6B,KAChC,MAAM,EAAE;wBACN,MAAM,oBAAO,gBAAgB,CAAE;qBAChC,MAEJ;SACF;QACD,cAAc;KACf,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,177 @@
1
+ import { setPortalItemAccessPermissions } from './set-portal-item-access-permissions';
2
+ import * as portal from '@esri/arcgis-rest-portal';
3
+ import * as buildAccessProperties from './build-access-properties';
4
+ jest.mock('@esri/arcgis-rest-portal');
5
+ const getItemMock = portal.getItem;
6
+ const updateItemMock = portal.updateItem;
7
+ jest.mock('./build-access-properties');
8
+ const buildAccessPropertiesMock = buildAccessProperties.buildAccessProperties;
9
+ afterEach(() => {
10
+ jest.resetAllMocks();
11
+ });
12
+ describe('setPortalItemAccessPermissions', () => {
13
+ test('should call getItem with correct arguments', async () => {
14
+ getItemMock.mockResolvedValue({
15
+ id: 'itemId',
16
+ properties: {},
17
+ });
18
+ const id = 'foo';
19
+ const authentication = 'bar';
20
+ const result = await setPortalItemAccessPermissions({
21
+ id,
22
+ authentication,
23
+ username: 'baz',
24
+ accessChangeset: [],
25
+ });
26
+ expect(getItemMock).toBeCalledTimes(1);
27
+ expect(getItemMock).toBeCalledWith(id, { authentication });
28
+ });
29
+ test('should call buildAccessProperties with correct arguments', async () => {
30
+ getItemMock.mockResolvedValue({
31
+ id: 'itemId',
32
+ properties: {},
33
+ });
34
+ const username = 'test_username';
35
+ const accessChangeset = [];
36
+ const result = await setPortalItemAccessPermissions({
37
+ id: 'foo',
38
+ authentication: 'bar',
39
+ username,
40
+ accessChangeset,
41
+ });
42
+ expect(buildAccessPropertiesMock).toBeCalledTimes(1);
43
+ expect(buildAccessPropertiesMock).toBeCalledWith(username, {}, accessChangeset);
44
+ });
45
+ test('should call updateItem with correct arguments and set empty access properties', async () => {
46
+ const id = 'foo';
47
+ const authentication = 'bar';
48
+ const username = 'test_username';
49
+ const accessChangeset = [];
50
+ getItemMock.mockResolvedValue({
51
+ id,
52
+ properties: {},
53
+ });
54
+ buildAccessPropertiesMock.mockReturnValue({});
55
+ const result = await setPortalItemAccessPermissions({
56
+ id,
57
+ authentication,
58
+ username,
59
+ accessChangeset,
60
+ });
61
+ expect(updateItemMock).toBeCalledTimes(1);
62
+ expect(updateItemMock).toBeCalledWith({
63
+ item: {
64
+ id,
65
+ properties: {
66
+ telemetry: {
67
+ arcgis: {
68
+ access: {},
69
+ },
70
+ },
71
+ },
72
+ },
73
+ authentication,
74
+ });
75
+ });
76
+ test('should call updateItem with correct arguments, set public access properties, and keep existing properties', async () => {
77
+ const id = 'foo';
78
+ const authentication = 'bar';
79
+ const username = 'test_username';
80
+ const accessChangeset = [
81
+ { action: 'add', targetProperty: 'public' },
82
+ ];
83
+ getItemMock.mockResolvedValue({
84
+ id,
85
+ properties: {
86
+ existingProp1: 'existingProp1',
87
+ existingProp2: 'existingProp2',
88
+ },
89
+ });
90
+ buildAccessPropertiesMock.mockReturnValue({
91
+ public: {
92
+ updatedAt: '2020-01-01T00:00:00.000Z',
93
+ updatedBy: username,
94
+ },
95
+ });
96
+ const result = await setPortalItemAccessPermissions({
97
+ id,
98
+ authentication,
99
+ username,
100
+ accessChangeset,
101
+ });
102
+ expect(updateItemMock).toBeCalledTimes(1);
103
+ expect(updateItemMock).toBeCalledWith({
104
+ item: {
105
+ id,
106
+ properties: {
107
+ existingProp1: 'existingProp1',
108
+ existingProp2: 'existingProp2',
109
+ telemetry: {
110
+ arcgis: {
111
+ access: {
112
+ public: {
113
+ updatedAt: '2020-01-01T00:00:00.000Z',
114
+ updatedBy: username,
115
+ },
116
+ },
117
+ },
118
+ },
119
+ },
120
+ },
121
+ authentication,
122
+ });
123
+ });
124
+ test('should call updateItem with correct arguments, set public access properties, keep existing telemetry properties', async () => {
125
+ const id = 'foo';
126
+ const authentication = 'bar';
127
+ const username = 'test_username';
128
+ const accessChangeset = [
129
+ { action: 'add', targetProperty: 'public' },
130
+ ];
131
+ getItemMock.mockResolvedValue({
132
+ id,
133
+ properties: {
134
+ telemetry: {
135
+ google: {
136
+ trackingId: 'google-tracking-id',
137
+ },
138
+ },
139
+ },
140
+ });
141
+ buildAccessPropertiesMock.mockReturnValue({
142
+ public: {
143
+ updatedAt: '2020-01-01T00:00:00.000Z',
144
+ updatedBy: username,
145
+ },
146
+ });
147
+ const result = await setPortalItemAccessPermissions({
148
+ id,
149
+ authentication,
150
+ username,
151
+ accessChangeset,
152
+ });
153
+ expect(updateItemMock).toBeCalledTimes(1);
154
+ expect(updateItemMock).toBeCalledWith({
155
+ item: {
156
+ id,
157
+ properties: {
158
+ telemetry: {
159
+ google: {
160
+ trackingId: 'google-tracking-id',
161
+ },
162
+ arcgis: {
163
+ access: {
164
+ public: {
165
+ updatedAt: '2020-01-01T00:00:00.000Z',
166
+ updatedBy: username,
167
+ },
168
+ },
169
+ },
170
+ },
171
+ },
172
+ },
173
+ authentication,
174
+ });
175
+ });
176
+ });
177
+ //# sourceMappingURL=set-portal-item-access-permissions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-portal-item-access-permissions.test.js","sourceRoot":"","sources":["../../src/set-portal-item-access-permissions.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCredentials = void 0;
4
+ const telemetry_1 = require("@esri/telemetry");
5
+ const COGNITO_KEY = 'TELEMETRY_COGNITO_CREDENTIALS';
6
+ function getCredentials(IdentityPoolId, options = {}) {
7
+ const fipsSubdomainSuffix = options.fips === true ? '-fips' : '';
8
+ const COGNITO_URL = `https://cognito-identity${fipsSubdomainSuffix}.us-east-1.amazonaws.com/`;
9
+ let cached = telemetry_1.storage.get(COGNITO_KEY);
10
+ if (cached && Date.now() / 1000 < cached.Expiration)
11
+ return Promise.resolve(cached);
12
+ const fetchOptions = {
13
+ method: 'POST',
14
+ headers: {
15
+ 'Content-type': 'application/x-amz-json-1.1',
16
+ 'X-Amz-Target': 'AWSCognitoIdentityService.GetId',
17
+ },
18
+ body: JSON.stringify({ IdentityPoolId }),
19
+ };
20
+ return fetch(COGNITO_URL, fetchOptions)
21
+ .then((response) => {
22
+ if (!response.ok) {
23
+ throw new Error(response.statusText);
24
+ }
25
+ return response.json();
26
+ })
27
+ .then((response) => {
28
+ const { IdentityId } = response;
29
+ const options = {
30
+ method: 'POST',
31
+ headers: {
32
+ 'Content-type': 'application/x-amz-json-1.1',
33
+ 'X-Amz-Target': 'AWSCognitoIdentityService.GetCredentialsForIdentity',
34
+ },
35
+ body: JSON.stringify({ IdentityId }),
36
+ };
37
+ return fetch(COGNITO_URL, options);
38
+ })
39
+ .then((response) => {
40
+ if (!response.ok) {
41
+ throw new Error(response.statusText);
42
+ }
43
+ return response.json();
44
+ })
45
+ .then(({ Credentials }) => {
46
+ telemetry_1.storage.set(COGNITO_KEY, Credentials);
47
+ return Credentials;
48
+ });
49
+ }
50
+ exports.getCredentials = getCredentials;
51
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":";;;AAAA,+CAA0C;AAE1C,MAAM,WAAW,GAAG,+BAA+B,CAAC;AAEpD,SAAgB,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,mBAAO,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,mBAAO,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACtC,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC,CAAC;AACP,CAAC;AAhDD,wCAgDC"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ require("cross-fetch/polyfill");
5
+ const auth_1 = require("./auth");
6
+ const fetch_mock_1 = tslib_1.__importDefault(require("fetch-mock"));
7
+ const expectedIdFetchOptions = {
8
+ method: 'POST',
9
+ headers: {
10
+ 'Content-type': 'application/x-amz-json-1.1',
11
+ 'X-Amz-Target': 'AWSCognitoIdentityService.GetId',
12
+ },
13
+ body: '{"IdentityPoolId":"us-east-1:hello-world"}',
14
+ };
15
+ const expectedCredsFetchOptions = {
16
+ method: 'POST',
17
+ headers: {
18
+ 'Content-type': 'application/x-amz-json-1.1',
19
+ 'X-Amz-Target': 'AWSCognitoIdentityService.GetCredentialsForIdentity',
20
+ },
21
+ body: '{"IdentityId":"abcdefg"}',
22
+ };
23
+ describe('auth - getCredentials', () => {
24
+ test('no FIPS urls', async (done) => {
25
+ fetch_mock_1.default.post({
26
+ url: 'https://cognito-identity.us-east-1.amazonaws.com/',
27
+ }, (_, { headers }) => {
28
+ if (headers['X-Amz-Target'] === 'AWSCognitoIdentityService.GetId') {
29
+ return { status: 200, body: { IdentityId: 'abcdefg' } };
30
+ }
31
+ return {
32
+ status: 200,
33
+ body: {
34
+ Credentials: {
35
+ AccessKeyId: '12345',
36
+ SecretKey: '56789',
37
+ SessionToken: 'abcdef',
38
+ },
39
+ },
40
+ };
41
+ });
42
+ const fetchSpy = jest.spyOn(global, 'fetch');
43
+ const creds = await (0, auth_1.getCredentials)('us-east-1:hello-world', {});
44
+ expect(creds).toEqual({
45
+ AccessKeyId: '12345',
46
+ SecretKey: '56789',
47
+ SessionToken: 'abcdef',
48
+ });
49
+ expect(fetchSpy.mock.calls.length).toBe(2);
50
+ const [identityIdFetch, credsFetch] = fetchSpy.mock.calls;
51
+ // Ensure session-start fetches made as expected
52
+ expect(identityIdFetch).toEqual([
53
+ 'https://cognito-identity.us-east-1.amazonaws.com/',
54
+ expectedIdFetchOptions,
55
+ ]);
56
+ expect(credsFetch).toEqual([
57
+ 'https://cognito-identity.us-east-1.amazonaws.com/',
58
+ expectedCredsFetchOptions,
59
+ ]);
60
+ fetch_mock_1.default.restore();
61
+ done();
62
+ });
63
+ test('FIPS urls', async (done) => {
64
+ fetch_mock_1.default.post({
65
+ url: 'https://cognito-identity-fips.us-east-1.amazonaws.com/',
66
+ }, (_, { headers }) => {
67
+ if (headers['X-Amz-Target'] === 'AWSCognitoIdentityService.GetId') {
68
+ return { status: 200, body: { IdentityId: 'abcdefg' } };
69
+ }
70
+ return {
71
+ status: 200,
72
+ body: {
73
+ Credentials: {
74
+ AccessKeyId: '12345',
75
+ SecretKey: '56789',
76
+ SessionToken: 'abcdef',
77
+ },
78
+ },
79
+ };
80
+ });
81
+ const fetchSpy = jest.spyOn(global, 'fetch');
82
+ const creds = await (0, auth_1.getCredentials)('us-east-1:hello-world', { fips: true });
83
+ expect(creds).toEqual({
84
+ AccessKeyId: '12345',
85
+ SecretKey: '56789',
86
+ SessionToken: 'abcdef',
87
+ });
88
+ expect(fetchSpy.mock.calls.length).toBe(2);
89
+ const [identityIdFetch, credsFetch] = fetchSpy.mock.calls;
90
+ // Ensure session-start fetches made as expected
91
+ expect(identityIdFetch).toEqual([
92
+ 'https://cognito-identity-fips.us-east-1.amazonaws.com/',
93
+ expectedIdFetchOptions,
94
+ ]);
95
+ expect(credsFetch).toEqual([
96
+ 'https://cognito-identity-fips.us-east-1.amazonaws.com/',
97
+ expectedCredsFetchOptions,
98
+ ]);
99
+ fetch_mock_1.default.restore();
100
+ done();
101
+ });
102
+ });
103
+ //# 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,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildAccessProperties = void 0;
4
+ function buildAccessProperties(username, currentAccessProperties, accessChangeset) {
5
+ return accessChangeset.reduce((accessProperties, accessChange) => {
6
+ const { action, targetProperty } = accessChange;
7
+ if (action === 'add') {
8
+ accessProperties[targetProperty] = {
9
+ updatedAt: new Date(),
10
+ updatedBy: username,
11
+ };
12
+ }
13
+ else if (action === 'remove') {
14
+ delete accessProperties[targetProperty];
15
+ }
16
+ return accessProperties;
17
+ }, currentAccessProperties);
18
+ }
19
+ exports.buildAccessProperties = buildAccessProperties;
20
+ //# 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,SAAgB,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;AAlBD,sDAkBC"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const build_access_properties_1 = require("./build-access-properties");
4
+ describe('buildAccessProperties', () => {
5
+ test('should return empty access property without changes', () => {
6
+ const accessProperties = (0, build_access_properties_1.buildAccessProperties)('test_username', {}, []);
7
+ expect(accessProperties).toEqual({});
8
+ });
9
+ test('should add public to access properties', () => {
10
+ const mockDate = new Date();
11
+ const dateSpy = jest
12
+ .spyOn(global, 'Date')
13
+ .mockImplementation(() => mockDate);
14
+ const result = (0, build_access_properties_1.buildAccessProperties)('test_username', {}, [
15
+ { action: 'add', targetProperty: 'public' },
16
+ ]);
17
+ expect(result).toEqual({
18
+ public: {
19
+ updatedAt: mockDate,
20
+ updatedBy: 'test_username',
21
+ },
22
+ });
23
+ dateSpy.mockRestore();
24
+ });
25
+ test('should return telemetry properties with new public access property', () => {
26
+ const mockDate = new Date();
27
+ const dateSpy = jest
28
+ .spyOn(global, 'Date')
29
+ .mockImplementation(() => mockDate);
30
+ const accessProperties = (0, build_access_properties_1.buildAccessProperties)('test_username', {}, [
31
+ { action: 'add', targetProperty: 'public' },
32
+ ]);
33
+ expect(accessProperties).toEqual({
34
+ public: {
35
+ updatedAt: mockDate,
36
+ updatedBy: 'test_username',
37
+ },
38
+ });
39
+ dateSpy.mockRestore();
40
+ });
41
+ });
42
+ //# sourceMappingURL=build-access-properties.test.js.map