@microsoft/1ds-core-js 3.2.11 → 4.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 (95) hide show
  1. package/README.md +1 -1
  2. package/bundle/es5/ms.core-4.0.0.gbl.js +6221 -0
  3. package/bundle/es5/ms.core-4.0.0.gbl.js.map +1 -0
  4. package/bundle/es5/ms.core-4.0.0.gbl.min.js +7 -0
  5. package/bundle/es5/ms.core-4.0.0.gbl.min.js.map +1 -0
  6. package/bundle/es5/ms.core-4.0.0.integrity.json +46 -0
  7. package/bundle/es5/ms.core-4.0.0.js +6225 -0
  8. package/bundle/es5/ms.core-4.0.0.js.map +1 -0
  9. package/bundle/es5/ms.core-4.0.0.min.js +7 -0
  10. package/bundle/es5/ms.core-4.0.0.min.js.map +1 -0
  11. package/bundle/es5/ms.core.gbl.js +6221 -0
  12. package/bundle/es5/ms.core.gbl.js.map +1 -0
  13. package/bundle/es5/ms.core.gbl.min.js +7 -0
  14. package/bundle/es5/ms.core.gbl.min.js.map +1 -0
  15. package/bundle/es5/ms.core.integrity.json +46 -0
  16. package/bundle/es5/ms.core.js +6225 -0
  17. package/bundle/es5/ms.core.js.map +1 -0
  18. package/bundle/es5/ms.core.min.js +7 -0
  19. package/bundle/es5/ms.core.min.js.map +1 -0
  20. package/{bundle → dist/es5}/ms.core.js +3790 -2967
  21. package/dist/es5/ms.core.js.map +1 -0
  22. package/dist/es5/ms.core.min.js +7 -0
  23. package/dist/es5/ms.core.min.js.map +1 -0
  24. package/dist-es5/AppInsightsCore.js +91 -0
  25. package/dist-es5/AppInsightsCore.js.map +1 -0
  26. package/{dist-esm/src → dist-es5}/BaseCore.js +18 -11
  27. package/dist-es5/BaseCore.js.map +1 -0
  28. package/{dist-esm/src → dist-es5}/DataModels.js +1 -1
  29. package/{dist-esm/src → dist-es5}/Enums.js +3 -26
  30. package/dist-es5/Enums.js.map +1 -0
  31. package/{dist-esm/src → dist-es5}/Index.js +9 -14
  32. package/dist-es5/Index.js.map +1 -0
  33. package/{dist-esm/src → dist-es5}/InternalConstants.js +1 -3
  34. package/{dist-esm/src → dist-es5}/InternalConstants.js.map +1 -1
  35. package/{dist-esm/src → dist-es5}/Utils.js +19 -144
  36. package/dist-es5/Utils.js.map +1 -0
  37. package/{dist-esm/src → dist-es5}/ValueSanitizer.js +39 -3
  38. package/dist-es5/ValueSanitizer.js.map +1 -0
  39. package/package.json +16 -9
  40. package/tsconfig.json +5 -3
  41. package/types/1ds-core-js.d.ts +1106 -0
  42. package/types/1ds-core-js.namespaced.d.ts +1102 -0
  43. package/bundle/ms.core-3.2.11.gbl.js +0 -5378
  44. package/bundle/ms.core-3.2.11.gbl.js.map +0 -1
  45. package/bundle/ms.core-3.2.11.gbl.min.js +0 -7
  46. package/bundle/ms.core-3.2.11.gbl.min.js.map +0 -1
  47. package/bundle/ms.core-3.2.11.integrity.json +0 -46
  48. package/bundle/ms.core-3.2.11.js +0 -5381
  49. package/bundle/ms.core-3.2.11.js.map +0 -1
  50. package/bundle/ms.core-3.2.11.min.js +0 -7
  51. package/bundle/ms.core-3.2.11.min.js.map +0 -1
  52. package/bundle/ms.core.gbl.js +0 -5378
  53. package/bundle/ms.core.gbl.js.map +0 -1
  54. package/bundle/ms.core.gbl.min.js +0 -7
  55. package/bundle/ms.core.gbl.min.js.map +0 -1
  56. package/bundle/ms.core.integrity.json +0 -46
  57. package/bundle/ms.core.js.map +0 -1
  58. package/bundle/ms.core.min.js +0 -7
  59. package/bundle/ms.core.min.js.map +0 -1
  60. package/dist/ms.core.js +0 -1305
  61. package/dist/ms.core.js.map +0 -1
  62. package/dist/ms.core.min.js +0 -7
  63. package/dist/ms.core.min.js.map +0 -1
  64. package/dist-esm/src/AppInsightsCore.d.ts +0 -15
  65. package/dist-esm/src/AppInsightsCore.js +0 -114
  66. package/dist-esm/src/AppInsightsCore.js.map +0 -1
  67. package/dist-esm/src/BaseCore.d.ts +0 -13
  68. package/dist-esm/src/BaseCore.js.map +0 -1
  69. package/dist-esm/src/DataModels.d.ts +0 -273
  70. package/dist-esm/src/ESPromise.d.ts +0 -110
  71. package/dist-esm/src/ESPromise.js +0 -286
  72. package/dist-esm/src/ESPromise.js.map +0 -1
  73. package/dist-esm/src/ESPromiseScheduler.d.ts +0 -36
  74. package/dist-esm/src/ESPromiseScheduler.js +0 -274
  75. package/dist-esm/src/ESPromiseScheduler.js.map +0 -1
  76. package/dist-esm/src/Enums.d.ts +0 -356
  77. package/dist-esm/src/Enums.js.map +0 -1
  78. package/dist-esm/src/Index.d.ts +0 -19
  79. package/dist-esm/src/Index.js.map +0 -1
  80. package/dist-esm/src/InternalConstants.d.ts +0 -6
  81. package/dist-esm/src/Utils.d.ts +0 -190
  82. package/dist-esm/src/Utils.js.map +0 -1
  83. package/dist-esm/src/ValueSanitizer.d.ts +0 -40
  84. package/dist-esm/src/ValueSanitizer.js.map +0 -1
  85. package/src/AppInsightsCore.ts +0 -135
  86. package/src/BaseCore.ts +0 -72
  87. package/src/DataModels.ts +0 -297
  88. package/src/ESPromise.ts +0 -365
  89. package/src/ESPromiseScheduler.ts +0 -328
  90. package/src/Enums.ts +0 -386
  91. package/src/Index.ts +0 -81
  92. package/src/InternalConstants.ts +0 -16
  93. package/src/Utils.ts +0 -565
  94. package/src/ValueSanitizer.ts +0 -285
  95. /package/{dist-esm/src → dist-es5}/DataModels.js.map +0 -0
@@ -1,328 +0,0 @@
1
- /**
2
- * ESPromiseScheduler.ts
3
- * @author Nev Wylie (newylie)
4
- * @copyright Microsoft 2019
5
- */
6
-
7
- import dynamicProto from "@microsoft/dynamicproto-js";
8
- import ESPromise from "./ESPromise";
9
- import { IDiagnosticLogger, _warnToConsole, getGlobal } from "@microsoft/applicationinsights-core-js";
10
- import { ResolverRejectFunc, ResolverResolveFunc } from "./ESPromise";
11
-
12
- /** This is a default timeout that will cause outstanding running promises to be removed/rejected to avoid filling up memory with blocked events */
13
- const LazyRejectPeriod = 600000; // 10 Minutes
14
-
15
- export type ESPromiseSchedulerEvent<T> = (eventId?: string) => ESPromise<T>;
16
-
17
- export interface IScheduledEventDetails {
18
- evt: ESPromise<any>;
19
- tm: number;
20
- wTm?: number;
21
- id: string;
22
- to?: any;
23
- isRunning: boolean;
24
- isAborted: boolean;
25
- abort?: (message: string) => void;
26
- }
27
-
28
- // These are global variables that are shared across ALL instances of the scheduler
29
- /**
30
- * @ignore
31
- */
32
- let _schedulerId = 0;
33
-
34
- /**
35
- * @ignore
36
- */
37
- let _running: IScheduledEventDetails[] = [];
38
-
39
- /**
40
- * @ignore
41
- */
42
- let _waiting: IScheduledEventDetails[] = [];
43
-
44
- /**
45
- * @ignore
46
- */
47
- let _timedOut: IScheduledEventDetails[] = [];
48
-
49
- /**
50
- * @ignore
51
- */
52
- function _getTime() {
53
- return new Date().getTime();
54
- }
55
-
56
- /**
57
- * Provides a simple mechanism queueing mechanism for scheduling events based on the ESPromise callbacks, this is used to ensure
58
- * order of async operations that are required to be executed in a specific order.
59
- */
60
- export default class ESPromiseScheduler {
61
-
62
- public static incomplete(): IScheduledEventDetails[] {
63
- return _running;
64
- }
65
-
66
- public static waitingToStart(): IScheduledEventDetails[] {
67
- return _waiting;
68
- }
69
-
70
- constructor(name?: string, diagLog?: IDiagnosticLogger) {
71
- let _promiseId = 0;
72
- let _scheduledName = (name || "<unnamed>") + "." + _schedulerId;
73
- _schedulerId++;
74
-
75
- dynamicProto(ESPromiseScheduler, this, (_this) => {
76
- let _lastEvent: IScheduledEventDetails = null;
77
- let _eventCount = 0;
78
-
79
- _this.scheduleEvent = <T>(startEventAction: ESPromiseSchedulerEvent<T>, eventName?: string, timeout?: number): ESPromise<T> => {
80
- let uniqueId: string = _scheduledName + "." + _eventCount;
81
- _eventCount++;
82
- if (eventName) {
83
- uniqueId += "-(" + eventName + ")";
84
- }
85
-
86
- let uniqueEventId = uniqueId + "{" + _promiseId + "}";
87
- _promiseId++;
88
-
89
- // Create the next scheduled event details
90
- let newScheduledEvent: IScheduledEventDetails = {
91
- evt: null,
92
- tm: _getTime(),
93
- id: uniqueEventId,
94
- isRunning: false,
95
- isAborted: false
96
- };
97
-
98
- if (!_lastEvent) {
99
- // We don't have any currently running event, so just start the next event
100
- newScheduledEvent.evt = _startWaitingEvent(newScheduledEvent);
101
- } else {
102
- // Start a new promise which will wait until all current active events are complete before starting
103
- // the new event, it does not resolve this scheduled event until after the new event is resolve to
104
- // ensure that all scheduled events are completed in the correct order
105
- newScheduledEvent.evt = _waitForPreviousEvent(newScheduledEvent, _lastEvent);
106
- }
107
-
108
- // Set this new event as the last one, so that any future events will wait for this one
109
- _lastEvent = newScheduledEvent;
110
- (_lastEvent.evt as any)._schId = uniqueEventId;
111
-
112
- return newScheduledEvent.evt;
113
-
114
- function _abortAndRemoveOldEvents(eventQueue: IScheduledEventDetails[]) {
115
- let now = _getTime();
116
- let expired = now - LazyRejectPeriod;
117
- let len = eventQueue.length;
118
- let lp = 0;
119
- while (lp < len) {
120
- let evt = eventQueue[lp];
121
- if (evt && evt.tm < expired) {
122
- let message = null;
123
- if (evt.abort) {
124
- message = "Aborting [" + evt.id + "] due to Excessive runtime (" + (now - evt.tm) + " ms)";
125
- evt.abort(message);
126
- } else {
127
- message = "Removing [" + evt.id + "] due to Excessive runtime (" + (now - evt.tm) + " ms)";
128
- }
129
- _warnLog(message);
130
- eventQueue.splice(lp, 1);
131
- len--;
132
- } else {
133
- lp++;
134
- }
135
- }
136
- }
137
-
138
- function _cleanup(eventId: string, completed: boolean) {
139
- let toQueue = false;
140
- let removed = _removeQueuedEvent(_running, eventId);
141
- if (!removed) {
142
- removed = _removeQueuedEvent(_timedOut, eventId);
143
- toQueue = true;
144
- }
145
-
146
- if (removed) {
147
- if (removed.to) {
148
- // If there was a timeout stop it
149
- clearTimeout(removed.to);
150
- removed.to = null;
151
- }
152
-
153
- // TODO (newylie): Convert this into reportable metrics
154
- let tm = _getTime() - removed.tm;
155
- if (completed) {
156
- if (!toQueue) {
157
- _debugLog("Promise [" + eventId + "] Complete -- " + tm + " ms");
158
- } else {
159
- _warnLog("Timed out event [" + eventId + "] finally complete -- " + tm + " ms");
160
- }
161
- } else {
162
- _timedOut.push(removed);
163
- _warnLog("Event [" + eventId + "] Timed out and removed -- " + tm + " ms");
164
- }
165
- } else {
166
- _debugLog("Failed to remove [" + eventId + "] from running queue");
167
- }
168
-
169
- // Also if the last scheduled event was this event then clear it as we are now finished
170
- if (_lastEvent && _lastEvent.id === eventId) {
171
- _lastEvent = null;
172
- }
173
-
174
- _abortAndRemoveOldEvents(_running);
175
- _abortAndRemoveOldEvents(_waiting);
176
- _abortAndRemoveOldEvents(_timedOut);
177
- }
178
-
179
- // Return a callback function that will be called when the waiting promise is resolved or rejected to ensure
180
- // that any outer promise is also resolved or rejected
181
- function _removeScheduledEvent(eventId: string, callback?: (value: any) => void) {
182
- return (value: any) => {
183
- _cleanup(eventId, true);
184
- callback && callback(value);
185
-
186
- return value;
187
- };
188
- }
189
-
190
- function _waitForFinalResult(eventId: string, startResult: ESPromise<T>, schEventResolve: ResolverResolveFunc<T>, schEventReject: ResolverRejectFunc<T>) {
191
- startResult.then((value) => {
192
- if (value instanceof ESPromise) {
193
- // If the result is a promise then this appears to be a chained result, so wait for this promise to complete
194
- _debugLog("Event [" + eventId + "] returned a promise -- waiting");
195
- _waitForFinalResult(eventId, value, schEventResolve, schEventReject);
196
- return value;
197
- } else {
198
- return _removeScheduledEvent(eventId, schEventResolve)(value);
199
- }
200
- }, _removeScheduledEvent(eventId, schEventReject));
201
- }
202
-
203
- // Add the passed event to the active event list with resolve and reject callbacks that will remove
204
- // it from the active event list
205
- function _createScheduledEvent(eventDetails: IScheduledEventDetails, startEvent: ESPromiseSchedulerEvent<T>): ESPromise<T> {
206
- let eventId = eventDetails.id;
207
- return new ESPromise((schEventResolve, schEventReject) => {
208
- _debugLog("Event [" + eventId + "] Starting -- waited for " + (eventDetails.wTm || "--") + " ms");
209
- eventDetails.isRunning = true;
210
- eventDetails.abort = (message: string) => {
211
- eventDetails.abort = null;
212
- eventDetails.isAborted = true;
213
- _cleanup(eventId, false);
214
- schEventReject(new Error(message));
215
- };
216
-
217
- let startResult = startEvent(eventId);
218
- if (startResult instanceof ESPromise) {
219
- if (timeout) {
220
- // Note: Only starting a timer if a timeout was specified
221
- eventDetails.to = setTimeout(() => {
222
- _cleanup(eventId, false);
223
-
224
- // Cause the listeners to reject (Note: We can't actually reject the waiting event)
225
- schEventReject(new Error("Timed out after [" + timeout + "] ms"));
226
- }, timeout);
227
- }
228
-
229
- _waitForFinalResult(eventId, startResult, (theResult) => {
230
- _debugLog("Event [" + eventId + "] Resolving after " + (_getTime() - eventDetails.tm) + " ms");
231
- schEventResolve(theResult);
232
- }, schEventReject);
233
- } else {
234
- // The startEvent didn't return a promise so just return a resolved promise
235
- _debugLog("Promise [" + eventId + "] Auto completed as the start action did not return a promise");
236
- schEventResolve();
237
- }
238
- });
239
- }
240
-
241
- function _startWaitingEvent(eventDetails: IScheduledEventDetails): ESPromise<T> {
242
- let now = _getTime();
243
- eventDetails.wTm = now - eventDetails.tm;
244
- eventDetails.tm = now;
245
-
246
- if (eventDetails.isAborted) {
247
- return ESPromise.reject<T>(new Error("[" + uniqueId + "] was aborted"));
248
- }
249
-
250
- _running.push(eventDetails);
251
-
252
- return _createScheduledEvent(eventDetails, startEventAction);
253
- }
254
-
255
- // Start a new promise which will wait until all current active events are complete before starting
256
- // the new event, it does not resolve this scheduled event until after the new event is resolve to
257
- // ensure that all scheduled events are completed in the correct order
258
- function _waitForPreviousEvent(eventDetails: IScheduledEventDetails, waitForEvent: IScheduledEventDetails): ESPromise<T> {
259
- let waitEvent = new ESPromise<T>((waitResolve, waitReject) => {
260
- let runTime = _getTime() - waitForEvent.tm;
261
- let prevId = waitForEvent.id;
262
- _debugLog("[" + uniqueId + "] is waiting for [" + prevId + ":" + runTime + " ms] to complete before starting -- [" + _waiting.length + "] waiting and [" + _running.length + "] running");
263
-
264
- eventDetails.abort = (message: string) => {
265
- eventDetails.abort = null;
266
- _removeQueuedEvent(_waiting, uniqueId);
267
- eventDetails.isAborted = true;
268
- waitReject(new Error(message));
269
- };
270
-
271
- // Wait for the previous event to complete
272
- waitForEvent.evt.then((value) => {
273
- _removeQueuedEvent(_waiting, uniqueId);
274
- // Wait for the last event to complete before starting the new one, this ensures the execution
275
- // order so that we don't try and remove events that havn't been committed yet
276
- _startWaitingEvent(eventDetails).then(waitResolve, waitReject);
277
- }, (reason) => {
278
- _removeQueuedEvent(_waiting, uniqueId);
279
- // Wait for the last event to complete before starting the new one, this ensures the execution
280
- // order so that we don't try and remove events that havn't been committed yet
281
- _startWaitingEvent(eventDetails).then(waitResolve, waitReject);
282
- });
283
- });
284
-
285
- _waiting.push(eventDetails);
286
-
287
- return waitEvent;
288
- }
289
- };
290
-
291
- function _removeQueuedEvent(queue: IScheduledEventDetails[], eventId: string): IScheduledEventDetails|void {
292
- for (let lp = 0; lp < queue.length; lp++) {
293
- if (queue[lp].id === eventId) {
294
- return queue.splice(lp, 1)[0];
295
- }
296
- }
297
-
298
- return null;
299
- }
300
- });
301
-
302
- function _debugLog(message: string) {
303
- // Only log if running within test harness
304
- let global = getGlobal();
305
- if (global && global["QUnit"]) {
306
- // tslint:disable-next-line:no-console
307
- console && console.log("ESPromiseScheduler[" + _scheduledName + "] " + message);
308
- }
309
- }
310
-
311
- function _warnLog(message: string) {
312
- _warnToConsole(diagLog, "ESPromiseScheduler[" + _scheduledName + "] " + message);
313
- }
314
- }
315
-
316
- /**
317
- * Schedule an event that will execute the startEvent after all outstanding events are resolved or rejected. This is used to ensure
318
- * order of async operations that are required to be executed in a specific order.
319
- * The returned promise will be resolve or rejected based on the values returned from the doAction.
320
- * @param startEventAction The function to execute to start the event after all outstanding events have completed, will be called asynchronously.
321
- * @param eventName An [Optional] event name to assist with debbuging to understand what events are either waiting to start or still running (incomplete).
322
- * @param timeout An [Optional] timeout
323
- */
324
- public scheduleEvent<T>(startEventAction: ESPromiseSchedulerEvent<T>, eventName?: string, timeout?: number): ESPromise<T> {
325
- // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging
326
- return;
327
- }
328
- }