box-node-sdk 1.35.0 → 1.37.2
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/CHANGELOG.md +37 -2
- package/README.md +1 -1
- package/lib/api-request-manager.d.ts +38 -0
- package/lib/api-request-manager.js +48 -55
- package/lib/api-request-manager.js.map +1 -0
- package/lib/api-request.d.ts +141 -0
- package/lib/api-request.js +202 -281
- package/lib/api-request.js.map +1 -0
- package/lib/box-client.d.ts +269 -0
- package/lib/box-client.js +551 -713
- package/lib/box-client.js.map +1 -0
- package/lib/box-node-sdk.d.ts +216 -0
- package/lib/box-node-sdk.js +317 -352
- package/lib/box-node-sdk.js.map +1 -0
- package/lib/chunked-uploader.d.ts +129 -0
- package/lib/chunked-uploader.js +287 -358
- package/lib/chunked-uploader.js.map +1 -0
- package/lib/enterprise-event-stream.d.ts +82 -0
- package/lib/enterprise-event-stream.js +189 -203
- package/lib/enterprise-event-stream.js.map +1 -0
- package/lib/event-stream.d.ts +92 -0
- package/lib/event-stream.js +274 -302
- package/lib/event-stream.js.map +1 -0
- package/lib/managers/collaboration-allowlist.d.ts +137 -0
- package/lib/managers/collaboration-allowlist.js +200 -0
- package/lib/managers/collaboration-allowlist.js.map +1 -0
- package/lib/managers/collaboration-whitelist.d.ts +3 -0
- package/lib/managers/collaboration-whitelist.js +8 -222
- package/lib/managers/collaboration-whitelist.js.map +1 -0
- package/lib/managers/collaborations.d.ts +166 -0
- package/lib/managers/collaborations.js +225 -258
- package/lib/managers/collaborations.js.map +1 -0
- package/lib/managers/collections.d.ts +42 -0
- package/lib/managers/collections.js +45 -50
- package/lib/managers/collections.js.map +1 -0
- package/lib/managers/comments.d.ts +103 -0
- package/lib/managers/comments.js +158 -173
- package/lib/managers/comments.js.map +1 -0
- package/lib/managers/device-pins.d.ts +52 -0
- package/lib/managers/device-pins.js +75 -88
- package/lib/managers/device-pins.js.map +1 -0
- package/lib/managers/enterprise.d.ts +162 -0
- package/lib/managers/enterprise.js +168 -199
- package/lib/managers/enterprise.js.map +1 -0
- package/lib/managers/events.d.ts +177 -0
- package/lib/managers/events.js +230 -254
- package/lib/managers/events.js.map +1 -0
- package/lib/managers/files.d.ts +772 -0
- package/lib/managers/files.js +1400 -1602
- package/lib/managers/files.js.map +1 -0
- package/lib/managers/folders.d.ts +347 -0
- package/lib/managers/folders.js +551 -567
- package/lib/managers/folders.js.map +1 -0
- package/lib/managers/groups.d.ts +202 -0
- package/lib/managers/groups.js +238 -287
- package/lib/managers/groups.js.map +1 -0
- package/lib/managers/legal-hold-policies.d.ts +190 -0
- package/lib/managers/legal-hold-policies.js +228 -272
- package/lib/managers/legal-hold-policies.js.map +1 -0
- package/lib/managers/metadata.d.ts +228 -0
- package/lib/managers/metadata.js +265 -328
- package/lib/managers/metadata.js.map +1 -0
- package/lib/managers/recent-items.d.ts +38 -0
- package/lib/managers/recent-items.js +32 -39
- package/lib/managers/recent-items.js.map +1 -0
- package/lib/managers/retention-policies.d.ts +213 -0
- package/lib/managers/retention-policies.js +235 -281
- package/lib/managers/retention-policies.js.map +1 -0
- package/lib/managers/search.d.ts +82 -0
- package/lib/managers/search.js +68 -88
- package/lib/managers/search.js.map +1 -0
- package/lib/managers/shared-items.d.ts +33 -0
- package/lib/managers/shared-items.js +54 -62
- package/lib/managers/shared-items.js.map +1 -0
- package/lib/managers/storage-policies.d.ts +86 -0
- package/lib/managers/storage-policies.js +108 -142
- package/lib/managers/storage-policies.js.map +1 -0
- package/lib/managers/tasks.d.ts +161 -0
- package/lib/managers/tasks.js +219 -260
- package/lib/managers/tasks.js.map +1 -0
- package/lib/managers/terms-of-service.d.ts +161 -0
- package/lib/managers/terms-of-service.js +250 -273
- package/lib/managers/terms-of-service.js.map +1 -0
- package/lib/managers/trash.d.ts +30 -0
- package/lib/managers/trash.js +30 -41
- package/lib/managers/trash.js.map +1 -0
- package/lib/managers/users.d.ts +131 -0
- package/lib/managers/users.js +160 -203
- package/lib/managers/users.js.map +1 -0
- package/lib/managers/web-links.d.ts +127 -0
- package/lib/managers/web-links.js +183 -209
- package/lib/managers/web-links.js.map +1 -0
- package/lib/managers/webhooks.d.ts +166 -0
- package/lib/managers/webhooks.js +312 -305
- package/lib/managers/webhooks.js.map +1 -0
- package/lib/sessions/anonymous-session.d.ts +69 -0
- package/lib/sessions/anonymous-session.js +88 -102
- package/lib/sessions/anonymous-session.js.map +1 -0
- package/lib/sessions/app-auth-session.d.ts +92 -0
- package/lib/sessions/app-auth-session.js +140 -160
- package/lib/sessions/app-auth-session.js.map +1 -0
- package/lib/sessions/basic-session.d.ts +56 -0
- package/lib/sessions/basic-session.js +40 -50
- package/lib/sessions/basic-session.js.map +1 -0
- package/lib/sessions/persistent-session.d.ts +96 -0
- package/lib/sessions/persistent-session.js +191 -211
- package/lib/sessions/persistent-session.js.map +1 -0
- package/lib/token-manager.d.ts +191 -0
- package/lib/token-manager.js +390 -465
- package/lib/token-manager.js.map +1 -0
- package/lib/util/config.d.ts +86 -0
- package/lib/util/config.js +124 -152
- package/lib/util/config.js.map +1 -0
- package/lib/util/errors.d.ts +50 -0
- package/lib/util/errors.js +134 -145
- package/lib/util/errors.js.map +1 -0
- package/lib/util/exponential-backoff.d.ts +11 -0
- package/lib/util/exponential-backoff.js +10 -22
- package/lib/util/exponential-backoff.js.map +1 -0
- package/lib/util/paging-iterator.d.ts +53 -0
- package/lib/util/paging-iterator.js +202 -218
- package/lib/util/paging-iterator.js.map +1 -0
- package/lib/util/url-path.d.ts +16 -0
- package/lib/util/url-path.js +20 -35
- package/lib/util/url-path.js.map +1 -0
- package/package.json +24 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunked-uploader.js","sourceRoot":"","sources":["../src/chunked-uploader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Enterprise event stream backed by the enterprise events API
|
|
3
|
+
*/
|
|
4
|
+
/// <reference types="node" />
|
|
5
|
+
import { Readable } from 'stream';
|
|
6
|
+
import BoxClient from './box-client';
|
|
7
|
+
declare type Options = {
|
|
8
|
+
streamPosition?: string;
|
|
9
|
+
startDate?: string;
|
|
10
|
+
endDate?: string;
|
|
11
|
+
eventTypeFilter?: EventType[];
|
|
12
|
+
pollingInterval?: number;
|
|
13
|
+
chunkSize?: number;
|
|
14
|
+
};
|
|
15
|
+
declare type EventType = string;
|
|
16
|
+
/**
|
|
17
|
+
* Stream of Box enterprise events.
|
|
18
|
+
*
|
|
19
|
+
* By default, the stream starts from the current time.
|
|
20
|
+
* Pass 'startDate' to start from a specific time.
|
|
21
|
+
* Pass 'streamPosition' to start from a previous stream position, or '0' for all available past events (~1 year).
|
|
22
|
+
* Once the stream catches up to the current time, it will begin polling every 'pollingInterval' seconds.
|
|
23
|
+
* If 'pollingInterval' = 0, then the stream will end when it catches up to the current time (no polling).
|
|
24
|
+
*
|
|
25
|
+
* @param {BoxClient} client - The client to use to get events
|
|
26
|
+
* @param {Object} [options] - Options
|
|
27
|
+
* @param {string} [options.streamPosition] - The stream position to start from (pass '0' for all past events)
|
|
28
|
+
* @param {string} [options.startDate] - The date to start from
|
|
29
|
+
* @param {string} [options.endDate] - The date to end at
|
|
30
|
+
* @param {EventType[]} [options.eventTypeFilter] - Array of event types to return
|
|
31
|
+
* @param {int} [options.pollingInterval=60] - Polling interval (in seconds). Pass 0 for no polling.
|
|
32
|
+
* @param {int} [options.chunkSize=500] - Number of events to fetch per call (max = 500)
|
|
33
|
+
* @constructor
|
|
34
|
+
* @extends Readable
|
|
35
|
+
*/
|
|
36
|
+
declare class EnterpriseEventStream extends Readable {
|
|
37
|
+
_client: BoxClient;
|
|
38
|
+
_options: Options & Required<Pick<Options, 'pollingInterval' | 'chunkSize'>>;
|
|
39
|
+
_streamPosition?: string;
|
|
40
|
+
constructor(client: BoxClient, options?: Options);
|
|
41
|
+
/**
|
|
42
|
+
* @returns {?number} - Returns null if no events have been fetched from Box yet.
|
|
43
|
+
*/
|
|
44
|
+
getStreamPosition(): string | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Get the stream state.
|
|
47
|
+
*
|
|
48
|
+
* @returns {Object} - The stream state
|
|
49
|
+
*/
|
|
50
|
+
getStreamState(): {
|
|
51
|
+
streamPosition: string | undefined;
|
|
52
|
+
startDate: string | undefined;
|
|
53
|
+
endDate: string | undefined;
|
|
54
|
+
eventTypeFilter: string[] | undefined;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Set the stream state.
|
|
58
|
+
*
|
|
59
|
+
* @param {Object} state - The stream state
|
|
60
|
+
* @returns {void}
|
|
61
|
+
*/
|
|
62
|
+
setStreamState(state: Pick<Options, 'streamPosition' | 'startDate' | 'endDate' | 'eventTypeFilter'>): void;
|
|
63
|
+
/**
|
|
64
|
+
* Fetch the next chunk of events
|
|
65
|
+
*
|
|
66
|
+
* If there are no events, poll until events are available.
|
|
67
|
+
* If an error occurs, emit the error but continuing polling as usual.
|
|
68
|
+
* @param {Function} callback - Passed the array of events
|
|
69
|
+
* @returns {void}
|
|
70
|
+
* @private
|
|
71
|
+
*/
|
|
72
|
+
fetchEvents(callback: Function): void;
|
|
73
|
+
/**
|
|
74
|
+
* Implementation of the stream-internal read function. This is called
|
|
75
|
+
* by the stream whenever it needs more data, and will not be called again
|
|
76
|
+
* until data is pushed into the stream.
|
|
77
|
+
* @returns {void}
|
|
78
|
+
* @private
|
|
79
|
+
*/
|
|
80
|
+
_read(): void;
|
|
81
|
+
}
|
|
82
|
+
export = EnterpriseEventStream;
|
|
@@ -1,28 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* @fileoverview Enterprise event stream backed by the enterprise events API
|
|
3
4
|
*/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
var __extends = (this && this.__extends) || (function () {
|
|
6
|
+
var extendStatics = function (d, b) {
|
|
7
|
+
extendStatics = Object.setPrototypeOf ||
|
|
8
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
9
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
10
|
+
return extendStatics(d, b);
|
|
11
|
+
};
|
|
12
|
+
return function (d, b) {
|
|
13
|
+
if (typeof b !== "function" && b !== null)
|
|
14
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
15
|
+
extendStatics(d, b);
|
|
16
|
+
function __() { this.constructor = d; }
|
|
17
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
18
|
+
};
|
|
19
|
+
})();
|
|
7
20
|
// ------------------------------------------------------------------------------
|
|
8
21
|
// Requirements
|
|
9
22
|
// ------------------------------------------------------------------------------
|
|
10
|
-
|
|
11
|
-
const Readable = require('stream').Readable,
|
|
12
|
-
util = require('util');
|
|
13
|
-
|
|
23
|
+
var stream_1 = require("stream");
|
|
14
24
|
// ------------------------------------------------------------------------------
|
|
15
25
|
// Private
|
|
16
26
|
// ------------------------------------------------------------------------------
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
});// ------------------------------------------------------------------------------
|
|
27
|
+
var DEFAULT_OPTIONS = Object.freeze({
|
|
28
|
+
pollingInterval: 60,
|
|
29
|
+
chunkSize: 500,
|
|
30
|
+
});
|
|
31
|
+
// ------------------------------------------------------------------------------
|
|
23
32
|
// Public
|
|
24
33
|
// ------------------------------------------------------------------------------
|
|
25
|
-
|
|
26
34
|
/**
|
|
27
35
|
* Stream of Box enterprise events.
|
|
28
36
|
*
|
|
@@ -43,193 +51,171 @@ const DEFAULT_OPTIONS = Object.freeze({
|
|
|
43
51
|
* @constructor
|
|
44
52
|
* @extends Readable
|
|
45
53
|
*/
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
self.push(null);
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
// Pause the stream to avoid race conditions while pushing in the new events.
|
|
217
|
-
// Without this, _read() would be called again from inside each push(),
|
|
218
|
-
// resulting in multiple parallel calls to fetchEvents().
|
|
219
|
-
// See https://github.com/nodejs/node/issues/3203
|
|
220
|
-
const wasPaused = self.isPaused();
|
|
221
|
-
self.pause();
|
|
222
|
-
|
|
223
|
-
// Push all of the events into the stream.
|
|
224
|
-
events.forEach(event => {
|
|
225
|
-
self.push(event);
|
|
226
|
-
});
|
|
227
|
-
|
|
228
|
-
if (!wasPaused) {
|
|
229
|
-
// This will deliver the events and trigger the next call to _read() once they have been consumed.
|
|
230
|
-
self.resume();
|
|
231
|
-
}
|
|
232
|
-
});
|
|
233
|
-
};
|
|
234
|
-
|
|
54
|
+
var EnterpriseEventStream = /** @class */ (function (_super) {
|
|
55
|
+
__extends(EnterpriseEventStream, _super);
|
|
56
|
+
function EnterpriseEventStream(client, options) {
|
|
57
|
+
var _this = _super.call(this, {
|
|
58
|
+
objectMode: true,
|
|
59
|
+
}) || this;
|
|
60
|
+
/**
|
|
61
|
+
* @var {BoxClient} - The client for making API calls
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
64
|
+
_this._client = client;
|
|
65
|
+
/**
|
|
66
|
+
* @var {Object} - Options
|
|
67
|
+
* @private
|
|
68
|
+
*/
|
|
69
|
+
_this._options = Object.assign({}, DEFAULT_OPTIONS, options);
|
|
70
|
+
// Handle the case where the caller passes streamPosition = 0 instead of streamPosition = '0'.
|
|
71
|
+
if (!_this._options.startDate &&
|
|
72
|
+
!_this._options.streamPosition &&
|
|
73
|
+
_this._options.streamPosition !== 0) {
|
|
74
|
+
// If neither startDate nor streamPosition is specified, start from the current time.
|
|
75
|
+
_this._options.startDate = new Date()
|
|
76
|
+
.toISOString()
|
|
77
|
+
.replace(/\.000Z$/, '-00:00');
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* @var {?string} - The current stream position
|
|
81
|
+
* @private
|
|
82
|
+
*/
|
|
83
|
+
_this._streamPosition = _this._options.streamPosition;
|
|
84
|
+
return _this;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* @returns {?number} - Returns null if no events have been fetched from Box yet.
|
|
88
|
+
*/
|
|
89
|
+
EnterpriseEventStream.prototype.getStreamPosition = function () {
|
|
90
|
+
return this._streamPosition;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Get the stream state.
|
|
94
|
+
*
|
|
95
|
+
* @returns {Object} - The stream state
|
|
96
|
+
*/
|
|
97
|
+
EnterpriseEventStream.prototype.getStreamState = function () {
|
|
98
|
+
// We need to return both streamPosition and startDate, since streamPosition will be null until
|
|
99
|
+
// the first set of events is returned from Box.
|
|
100
|
+
return {
|
|
101
|
+
streamPosition: this._streamPosition,
|
|
102
|
+
startDate: this._options.startDate,
|
|
103
|
+
endDate: this._options.endDate,
|
|
104
|
+
eventTypeFilter: this._options.eventTypeFilter,
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* Set the stream state.
|
|
109
|
+
*
|
|
110
|
+
* @param {Object} state - The stream state
|
|
111
|
+
* @returns {void}
|
|
112
|
+
*/
|
|
113
|
+
EnterpriseEventStream.prototype.setStreamState = function (state) {
|
|
114
|
+
// We need to set both streamPosition and startDate, since streamPosition will be null until
|
|
115
|
+
// the first set of events is returned from Box.
|
|
116
|
+
this._streamPosition = state.streamPosition;
|
|
117
|
+
this._options.startDate = state.startDate;
|
|
118
|
+
this._options.endDate = state.endDate;
|
|
119
|
+
this._options.eventTypeFilter = state.eventTypeFilter;
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Fetch the next chunk of events
|
|
123
|
+
*
|
|
124
|
+
* If there are no events, poll until events are available.
|
|
125
|
+
* If an error occurs, emit the error but continuing polling as usual.
|
|
126
|
+
* @param {Function} callback - Passed the array of events
|
|
127
|
+
* @returns {void}
|
|
128
|
+
* @private
|
|
129
|
+
*/
|
|
130
|
+
EnterpriseEventStream.prototype.fetchEvents = function (callback) {
|
|
131
|
+
var self = this, params = {
|
|
132
|
+
stream_type: 'admin_logs',
|
|
133
|
+
};
|
|
134
|
+
// Use the current stream position.
|
|
135
|
+
// Handle the case where the caller passes streamPosition === 0 instead of streamPosition === '0'.
|
|
136
|
+
if (this._streamPosition || this._streamPosition === 0) {
|
|
137
|
+
params.stream_position = this._streamPosition;
|
|
138
|
+
}
|
|
139
|
+
if (this._options.startDate) {
|
|
140
|
+
params.created_after = this._options.startDate;
|
|
141
|
+
}
|
|
142
|
+
if (this._options.endDate) {
|
|
143
|
+
params.created_before = this._options.endDate;
|
|
144
|
+
}
|
|
145
|
+
if (this._options.eventTypeFilter) {
|
|
146
|
+
params.event_type = this._options.eventTypeFilter.join(',');
|
|
147
|
+
}
|
|
148
|
+
if (this._options.chunkSize) {
|
|
149
|
+
params.limit = this._options.chunkSize;
|
|
150
|
+
}
|
|
151
|
+
this._client.events.get(params, function (err /* FIXME */, result /* FIXME */) {
|
|
152
|
+
if (err) {
|
|
153
|
+
self.emit('error', err);
|
|
154
|
+
// If there was a "permanent" error, we would call the callback with it here.
|
|
155
|
+
// But it's not clear which errors are truly permanent?
|
|
156
|
+
// If Box is down or returning errors for an extended period, we still want to resume when it recovers.
|
|
157
|
+
// So, continue polling at the regular frequency.
|
|
158
|
+
// Don't use a shorter retry interval (to avoid DDOSing Box).
|
|
159
|
+
}
|
|
160
|
+
if (err || !result || !result.entries || result.entries.length === 0) {
|
|
161
|
+
if (!self._options.pollingInterval) {
|
|
162
|
+
// If polling is disabled, end the stream.
|
|
163
|
+
callback();
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
// There were no events returned (or an error occurred), so schedule another poll.
|
|
167
|
+
var delay = self._options.pollingInterval * 1000;
|
|
168
|
+
// Stream readers can use this to flush buffered events to a downstream system.
|
|
169
|
+
self.emit('wait', delay);
|
|
170
|
+
setTimeout(function () {
|
|
171
|
+
self.fetchEvents(callback);
|
|
172
|
+
}, delay);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
// Only update the stream position if there were events returned.
|
|
176
|
+
// The API currently returns next_stream_position = 0 if there are no events (may be a bug?).
|
|
177
|
+
// But we don't want to start over at the beginning in that case, so ignore it.
|
|
178
|
+
self._streamPosition = result.next_stream_position;
|
|
179
|
+
// Notify the reader of the new stream position.
|
|
180
|
+
// Stream readers can respond to the 'newStreamState' event to persist the stream state.
|
|
181
|
+
self.emit('newStreamState', self.getStreamState());
|
|
182
|
+
callback(null, result.entries);
|
|
183
|
+
});
|
|
184
|
+
};
|
|
185
|
+
/**
|
|
186
|
+
* Implementation of the stream-internal read function. This is called
|
|
187
|
+
* by the stream whenever it needs more data, and will not be called again
|
|
188
|
+
* until data is pushed into the stream.
|
|
189
|
+
* @returns {void}
|
|
190
|
+
* @private
|
|
191
|
+
*/
|
|
192
|
+
EnterpriseEventStream.prototype._read = function () {
|
|
193
|
+
// Fetch the next chunk of events.
|
|
194
|
+
var self = this;
|
|
195
|
+
// This will poll forever until events are available.
|
|
196
|
+
this.fetchEvents(function (err /* FIXME */, events /* FIXME */) {
|
|
197
|
+
if (err || !events || events.length === 0) {
|
|
198
|
+
// Close the stream if there was a "permanent" failure or we reached the end of the events.
|
|
199
|
+
self.push(null);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
// Pause the stream to avoid race conditions while pushing in the new events.
|
|
203
|
+
// Without this, _read() would be called again from inside each push(),
|
|
204
|
+
// resulting in multiple parallel calls to fetchEvents().
|
|
205
|
+
// See https://github.com/nodejs/node/issues/3203
|
|
206
|
+
var wasPaused = self.isPaused();
|
|
207
|
+
self.pause();
|
|
208
|
+
// Push all of the events into the stream.
|
|
209
|
+
events.forEach(function (event /* FIXME */) {
|
|
210
|
+
self.push(event);
|
|
211
|
+
});
|
|
212
|
+
if (!wasPaused) {
|
|
213
|
+
// This will deliver the events and trigger the next call to _read() once they have been consumed.
|
|
214
|
+
self.resume();
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
};
|
|
218
|
+
return EnterpriseEventStream;
|
|
219
|
+
}(stream_1.Readable));
|
|
235
220
|
module.exports = EnterpriseEventStream;
|
|
221
|
+
//# sourceMappingURL=enterprise-event-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enterprise-event-stream.js","sourceRoot":"","sources":["../src/enterprise-event-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Event stream backed by the events API
|
|
3
|
+
*/
|
|
4
|
+
/// <reference types="node" />
|
|
5
|
+
import { Readable } from 'stream';
|
|
6
|
+
import BoxClient from './box-client';
|
|
7
|
+
declare type Options = {
|
|
8
|
+
retryDelay: number;
|
|
9
|
+
deduplicationFilterSize: number;
|
|
10
|
+
fetchInterval: number;
|
|
11
|
+
};
|
|
12
|
+
declare type LongPollInfo = {
|
|
13
|
+
max_retries: number;
|
|
14
|
+
retry_timeout: number;
|
|
15
|
+
url: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Stream of Box events from a given client and point in time.
|
|
19
|
+
* @param {BoxClient} client The client to use to get events
|
|
20
|
+
* @param {string} streamPosition The point in time to start at
|
|
21
|
+
* @param {Object} [options] Optional parameters
|
|
22
|
+
* @param {int} [options.retryDelay=1000] Number of ms to wait before retrying after an error
|
|
23
|
+
* @param {int} [options.deduplicationFilterSize=5000] Number of IDs to track for deduplication
|
|
24
|
+
* @param {int} [options.fetchInterval=1000] Minimunm number of ms between calls for more events
|
|
25
|
+
* @constructor
|
|
26
|
+
* @extends Readable
|
|
27
|
+
*/
|
|
28
|
+
declare class EventStream extends Readable {
|
|
29
|
+
_client: BoxClient;
|
|
30
|
+
_streamPosition: string;
|
|
31
|
+
_longPollInfo?: LongPollInfo;
|
|
32
|
+
_longPollRetries: number;
|
|
33
|
+
_dedupHash: Record<string, boolean>;
|
|
34
|
+
_rateLimiter: Promise<any>;
|
|
35
|
+
_options: Options;
|
|
36
|
+
_retryTimer?: NodeJS.Timeout | number;
|
|
37
|
+
constructor(client: BoxClient, streamPosition: string, options?: Partial<Options>);
|
|
38
|
+
/**
|
|
39
|
+
* Retrieve the url and params for long polling for new updates
|
|
40
|
+
* @returns {Promise} Promise for testing purposes
|
|
41
|
+
* @private
|
|
42
|
+
*/
|
|
43
|
+
getLongPollInfo(): any;
|
|
44
|
+
/**
|
|
45
|
+
* Long poll for notification of new events. We do this rather than
|
|
46
|
+
* polling for the events directly in order to minimize the number of API
|
|
47
|
+
* calls necessary.
|
|
48
|
+
* @returns {Promise} Promise for testing pruposes
|
|
49
|
+
* @private
|
|
50
|
+
*/
|
|
51
|
+
doLongPoll(): any;
|
|
52
|
+
/**
|
|
53
|
+
* Retries long-polling after a delay.
|
|
54
|
+
* Does not attempt if stream is already destroyed.
|
|
55
|
+
* @returns {void}
|
|
56
|
+
* @private
|
|
57
|
+
*/
|
|
58
|
+
retryPollInfo(): void;
|
|
59
|
+
/**
|
|
60
|
+
* Fetch the latest group of events and push them into the stream
|
|
61
|
+
* @returns {Promise} Promise for testing purposes
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
64
|
+
fetchEvents(): Promise<any>;
|
|
65
|
+
/**
|
|
66
|
+
* Clean up the deduplication filter, to prevent it from growing
|
|
67
|
+
* too big and eating up memory. We look at the latest set of events
|
|
68
|
+
* returned and assume that any IDs not in that set don't need to be
|
|
69
|
+
* tracked for deduplication any more.
|
|
70
|
+
* @param {Object[]} latestEvents The latest events from the API
|
|
71
|
+
* @returns {void}
|
|
72
|
+
* @private
|
|
73
|
+
*/
|
|
74
|
+
cleanupDedupFilter(latestEvents: any): void;
|
|
75
|
+
/**
|
|
76
|
+
* Implementation of the stream-internal read function. This is called
|
|
77
|
+
* by the stream whenever it needs more data, and will not be called again
|
|
78
|
+
* until data is pushed into the stream.
|
|
79
|
+
* @returns {void}
|
|
80
|
+
* @private
|
|
81
|
+
*/
|
|
82
|
+
_read(): void;
|
|
83
|
+
/**
|
|
84
|
+
* Implementation of stream-internal `_destroy` function (v8.0.0 and later).
|
|
85
|
+
* Called by stream consumers to effectively stop polling via the public
|
|
86
|
+
* `destroy()`.
|
|
87
|
+
* @returns {void}
|
|
88
|
+
* @private
|
|
89
|
+
*/
|
|
90
|
+
_destroy(): void;
|
|
91
|
+
}
|
|
92
|
+
export = EventStream;
|