@nymphjs/client 1.0.0-beta.9 → 1.0.0-beta.91

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 (70) hide show
  1. package/CHANGELOG.md +378 -0
  2. package/README.md +6 -6
  3. package/asyncitertest.js +53 -0
  4. package/dist/Entity.d.ts +156 -0
  5. package/{lib → dist}/Entity.js +202 -104
  6. package/dist/Entity.js.map +1 -0
  7. package/dist/Entity.types.d.ts +218 -0
  8. package/dist/Entity.types.js +2 -0
  9. package/{lib → dist}/EntityWeakCache.d.ts +1 -1
  10. package/{lib → dist}/EntityWeakCache.js +5 -9
  11. package/dist/EntityWeakCache.js.map +1 -0
  12. package/dist/HttpRequester.d.ts +78 -0
  13. package/dist/HttpRequester.js +365 -0
  14. package/dist/HttpRequester.js.map +1 -0
  15. package/{lib → dist}/Nymph.d.ts +44 -11
  16. package/{lib → dist}/Nymph.js +118 -39
  17. package/dist/Nymph.js.map +1 -0
  18. package/{lib → dist}/Nymph.types.d.ts +74 -2
  19. package/dist/Nymph.types.js +2 -0
  20. package/{lib → dist}/PubSub.d.ts +16 -10
  21. package/{lib → dist}/PubSub.js +172 -108
  22. package/dist/PubSub.js.map +1 -0
  23. package/{lib → dist}/PubSub.types.d.ts +8 -3
  24. package/dist/PubSub.types.js +2 -0
  25. package/{lib → dist}/entityRefresh.d.ts +1 -1
  26. package/{lib → dist}/entityRefresh.js +21 -13
  27. package/dist/entityRefresh.js.map +1 -0
  28. package/dist/index.d.ts +13 -0
  29. package/dist/index.js +13 -2
  30. package/dist/index.js.map +1 -1
  31. package/{lib → dist}/utils.d.ts +1 -1
  32. package/{lib → dist}/utils.js +28 -21
  33. package/dist/utils.js.map +1 -0
  34. package/jest.config.js +11 -2
  35. package/package.json +23 -27
  36. package/src/Entity.ts +170 -104
  37. package/src/Entity.types.ts +29 -47
  38. package/src/EntityWeakCache.ts +8 -6
  39. package/src/HttpRequester.ts +308 -35
  40. package/src/Nymph.ts +134 -70
  41. package/src/Nymph.types.ts +41 -2
  42. package/src/PubSub.ts +214 -141
  43. package/src/PubSub.types.ts +10 -5
  44. package/src/entityRefresh.ts +6 -6
  45. package/src/index.ts +10 -10
  46. package/src/utils.ts +12 -5
  47. package/tsconfig.json +6 -4
  48. package/typedoc.json +4 -0
  49. package/dist/index.js.LICENSE.txt +0 -8
  50. package/lib/Entity.d.ts +0 -51
  51. package/lib/Entity.js.map +0 -1
  52. package/lib/Entity.types.d.ts +0 -65
  53. package/lib/Entity.types.js +0 -3
  54. package/lib/EntityWeakCache.js.map +0 -1
  55. package/lib/HttpRequester.d.ts +0 -42
  56. package/lib/HttpRequester.js +0 -160
  57. package/lib/HttpRequester.js.map +0 -1
  58. package/lib/Nymph.js.map +0 -1
  59. package/lib/Nymph.types.js +0 -3
  60. package/lib/PubSub.js.map +0 -1
  61. package/lib/PubSub.types.js +0 -3
  62. package/lib/entityRefresh.js.map +0 -1
  63. package/lib/index.d.ts +0 -13
  64. package/lib/index.js +0 -34
  65. package/lib/index.js.map +0 -1
  66. package/lib/utils.js.map +0 -1
  67. package/webpack.config.js +0 -28
  68. /package/{lib → dist}/Entity.types.js.map +0 -0
  69. /package/{lib → dist}/Nymph.types.js.map +0 -0
  70. /package/{lib → dist}/PubSub.types.js.map +0 -0
@@ -0,0 +1,365 @@
1
+ import { fetchEventSource, EventStreamContentType, } from 'fetch-event-source-hperrin';
2
+ export default class HttpRequester {
3
+ fetch;
4
+ requestCallbacks = [];
5
+ responseCallbacks = [];
6
+ iteratorCallbacks = [];
7
+ static makeUrl(url, data) {
8
+ if (!data) {
9
+ return url;
10
+ }
11
+ for (let [key, value] of Object.entries(data)) {
12
+ url =
13
+ url +
14
+ (url.indexOf('?') !== -1 ? '&' : '?') +
15
+ encodeURIComponent(key) +
16
+ '=' +
17
+ encodeURIComponent(JSON.stringify(value));
18
+ }
19
+ return url;
20
+ }
21
+ constructor(ponyFetch) {
22
+ this.fetch = ponyFetch ? ponyFetch : (...args) => fetch(...args);
23
+ }
24
+ on(event, callback) {
25
+ const prop = (event + 'Callbacks');
26
+ if (!(prop in this)) {
27
+ throw new Error('Invalid event type.');
28
+ }
29
+ // @ts-ignore: The callback should always be the right type here.
30
+ this[prop].push(callback);
31
+ return () => this.off(event, callback);
32
+ }
33
+ off(event, callback) {
34
+ const prop = (event + 'Callbacks');
35
+ if (!(prop in this)) {
36
+ return false;
37
+ }
38
+ // @ts-ignore: The callback should always be the right type here.
39
+ const i = this[prop].indexOf(callback);
40
+ if (i > -1) {
41
+ // @ts-ignore: The callback should always be the right type here.
42
+ this[prop].splice(i, 1);
43
+ }
44
+ return true;
45
+ }
46
+ async GET(opt) {
47
+ return await this._httpRequest('GET', opt);
48
+ }
49
+ async POST(opt) {
50
+ return await this._httpRequest('POST', opt);
51
+ }
52
+ async POST_ITERATOR(opt) {
53
+ return await this._iteratorRequest('POST', opt);
54
+ }
55
+ async PUT(opt) {
56
+ return await this._httpRequest('PUT', opt);
57
+ }
58
+ async PATCH(opt) {
59
+ return await this._httpRequest('PATCH', opt);
60
+ }
61
+ async DELETE(opt) {
62
+ return await this._httpRequest('DELETE', opt);
63
+ }
64
+ async _httpRequest(method, opt) {
65
+ const dataString = JSON.stringify(opt.data);
66
+ let url = opt.url;
67
+ if (method === 'GET') {
68
+ // TODO: what should this size be?
69
+ // && dataString.length < 1) {
70
+ url = HttpRequester.makeUrl(opt.url, opt.data);
71
+ }
72
+ const options = {
73
+ method,
74
+ headers: opt.headers ?? {},
75
+ credentials: 'include',
76
+ };
77
+ if (method !== 'GET' && opt.data) {
78
+ options.headers['Content-Type'] =
79
+ 'application/json';
80
+ options.body = dataString;
81
+ }
82
+ for (let i = 0; i < this.requestCallbacks.length; i++) {
83
+ this.requestCallbacks[i] && this.requestCallbacks[i](this, url, options);
84
+ }
85
+ const response = await this.fetch(url, options);
86
+ let text;
87
+ try {
88
+ text = await response.text();
89
+ }
90
+ catch (e) {
91
+ throw new InvalidResponseError('Server response did not contain valid text body.');
92
+ }
93
+ if (!response.ok) {
94
+ let errObj;
95
+ try {
96
+ errObj = JSON.parse(text);
97
+ }
98
+ catch (e) {
99
+ if (!(e instanceof SyntaxError)) {
100
+ throw e;
101
+ }
102
+ }
103
+ if (typeof errObj !== 'object') {
104
+ errObj = {
105
+ textStatus: response.statusText,
106
+ };
107
+ }
108
+ errObj.status = response.status;
109
+ throw response.status < 200
110
+ ? new InformationalError(response, errObj)
111
+ : response.status < 300
112
+ ? new SuccessError(response, errObj)
113
+ : response.status < 400
114
+ ? new RedirectError(response, errObj)
115
+ : response.status < 500
116
+ ? new ClientError(response, errObj)
117
+ : new ServerError(response, errObj);
118
+ }
119
+ for (let i = 0; i < this.responseCallbacks.length; i++) {
120
+ this.responseCallbacks[i] &&
121
+ this.responseCallbacks[i](this, response, text);
122
+ }
123
+ if (opt.dataType === 'json') {
124
+ if (!text.length) {
125
+ throw new InvalidResponseError('Server response was empty.');
126
+ }
127
+ try {
128
+ return JSON.parse(text);
129
+ }
130
+ catch (e) {
131
+ if (!(e instanceof SyntaxError)) {
132
+ throw e;
133
+ }
134
+ throw new InvalidResponseError('Server response was invalid: ' + JSON.stringify(text));
135
+ }
136
+ }
137
+ else {
138
+ return text;
139
+ }
140
+ }
141
+ async _iteratorRequest(method, opt) {
142
+ const dataString = JSON.stringify(opt.data);
143
+ let url = opt.url;
144
+ if (method === 'GET') {
145
+ // TODO: what should this size be?
146
+ // && dataString.length < 1) {
147
+ url = HttpRequester.makeUrl(opt.url, opt.data);
148
+ }
149
+ const hasBody = method !== 'GET' && opt.data;
150
+ const headers = opt.headers ?? {};
151
+ if (hasBody) {
152
+ headers['Content-Type'] = 'application/json';
153
+ }
154
+ for (let i = 0; i < this.iteratorCallbacks.length; i++) {
155
+ this.iteratorCallbacks[i] &&
156
+ this.iteratorCallbacks[i](this, url, headers);
157
+ }
158
+ const responses = [];
159
+ let nextResponseResolve;
160
+ let nextResponseReadyPromise = new Promise((res) => {
161
+ nextResponseResolve = res;
162
+ });
163
+ let responsesDone = false;
164
+ let serverResponse;
165
+ const ctrl = new AbortController();
166
+ fetchEventSource(url, {
167
+ openWhenHidden: true,
168
+ fetch: this.fetch,
169
+ method,
170
+ headers,
171
+ credentials: 'include',
172
+ body: hasBody ? dataString : undefined,
173
+ signal: ctrl.signal,
174
+ async onopen(response) {
175
+ serverResponse = response;
176
+ if (response.ok) {
177
+ if (response.headers.get('content-type') === EventStreamContentType) {
178
+ throw new InvalidResponseError('Server response is not an event stream.');
179
+ }
180
+ // Response is ok, wait for messages.
181
+ return;
182
+ }
183
+ let text = '';
184
+ try {
185
+ text = await response.text();
186
+ }
187
+ catch (e) {
188
+ // Ignore error here.
189
+ }
190
+ let errObj;
191
+ try {
192
+ errObj = JSON.parse(text);
193
+ }
194
+ catch (e) {
195
+ if (!(e instanceof SyntaxError)) {
196
+ throw e;
197
+ }
198
+ }
199
+ if (typeof errObj !== 'object') {
200
+ errObj = {
201
+ textStatus: response.statusText,
202
+ };
203
+ }
204
+ errObj.status = response.status;
205
+ throw response.status < 200
206
+ ? new InformationalError(response, errObj)
207
+ : response.status < 300
208
+ ? new SuccessError(response, errObj)
209
+ : response.status < 400
210
+ ? new RedirectError(response, errObj)
211
+ : response.status < 500
212
+ ? new ClientError(response, errObj)
213
+ : new ServerError(response, errObj);
214
+ },
215
+ onmessage(event) {
216
+ if (event.event === 'next') {
217
+ let text = event.data;
218
+ if (opt.dataType === 'json') {
219
+ if (!text.length) {
220
+ responses.push(new InvalidResponseError('Server response was empty.'));
221
+ }
222
+ else {
223
+ try {
224
+ responses.push(JSON.parse(text));
225
+ }
226
+ catch (e) {
227
+ if (!(e instanceof SyntaxError)) {
228
+ responses.push(e);
229
+ }
230
+ else {
231
+ responses.push(new InvalidResponseError('Server response was invalid: ' + JSON.stringify(text)));
232
+ }
233
+ }
234
+ }
235
+ }
236
+ else {
237
+ responses.push(text);
238
+ }
239
+ }
240
+ else if (event.event === 'error') {
241
+ let text = event.data;
242
+ let errObj;
243
+ try {
244
+ errObj = JSON.parse(text);
245
+ }
246
+ catch (e) {
247
+ if (!(e instanceof SyntaxError)) {
248
+ throw e;
249
+ }
250
+ }
251
+ if (typeof errObj !== 'object') {
252
+ errObj = {
253
+ status: 500,
254
+ textStatus: 'Iterator Error',
255
+ };
256
+ }
257
+ responses.push(errObj.status < 200
258
+ ? new InformationalError(serverResponse, errObj)
259
+ : errObj.status < 300
260
+ ? new SuccessError(serverResponse, errObj)
261
+ : errObj.status < 400
262
+ ? new RedirectError(serverResponse, errObj)
263
+ : errObj.status < 500
264
+ ? new ClientError(serverResponse, errObj)
265
+ : new ServerError(serverResponse, errObj));
266
+ }
267
+ else if (event.event === 'finished') {
268
+ responsesDone = true;
269
+ }
270
+ else if (event.event === 'ping') {
271
+ // Ignore keep-alive pings.
272
+ return;
273
+ }
274
+ const resolve = nextResponseResolve;
275
+ if (!responsesDone) {
276
+ nextResponseReadyPromise = new Promise((res) => {
277
+ nextResponseResolve = res;
278
+ });
279
+ }
280
+ // Resolve the promise to continue any waiting iterator.
281
+ resolve();
282
+ },
283
+ onclose() {
284
+ responses.push(new ConnectionClosedUnexpectedlyError('The connection to the server was closed unexpectedly.'));
285
+ responsesDone = true;
286
+ nextResponseResolve();
287
+ },
288
+ onerror(err) {
289
+ // Rethrow to stop the operation.
290
+ throw err;
291
+ },
292
+ }).catch((err) => {
293
+ responses.push(new ConnectionError('The connection could not be established: ' + err));
294
+ responsesDone = true;
295
+ nextResponseResolve();
296
+ });
297
+ const iterator = {
298
+ abortController: ctrl,
299
+ async *[Symbol.asyncIterator]() {
300
+ do {
301
+ await nextResponseReadyPromise;
302
+ while (responses.length) {
303
+ yield responses.shift();
304
+ }
305
+ } while (!responsesDone);
306
+ },
307
+ };
308
+ return iterator;
309
+ }
310
+ }
311
+ export class InvalidResponseError extends Error {
312
+ constructor(message) {
313
+ super(message);
314
+ this.name = 'InvalidResponseError';
315
+ }
316
+ }
317
+ export class ConnectionClosedUnexpectedlyError extends Error {
318
+ constructor(message) {
319
+ super(message);
320
+ this.name = 'ConnectionClosedUnexpectedlyError';
321
+ }
322
+ }
323
+ export class ConnectionError extends Error {
324
+ constructor(message) {
325
+ super(message);
326
+ this.name = 'ConnectionError';
327
+ }
328
+ }
329
+ export class HttpError extends Error {
330
+ status;
331
+ statusText;
332
+ constructor(name, response, errObj) {
333
+ super(errObj.textStatus);
334
+ this.name = name;
335
+ this.status = response.status;
336
+ this.statusText = response.statusText;
337
+ Object.assign(this, errObj);
338
+ }
339
+ }
340
+ export class InformationalError extends HttpError {
341
+ constructor(response, errObj) {
342
+ super('InformationalError', response, errObj);
343
+ }
344
+ }
345
+ export class SuccessError extends HttpError {
346
+ constructor(response, errObj) {
347
+ super('SuccessError', response, errObj);
348
+ }
349
+ }
350
+ export class RedirectError extends HttpError {
351
+ constructor(response, errObj) {
352
+ super('RedirectError', response, errObj);
353
+ }
354
+ }
355
+ export class ClientError extends HttpError {
356
+ constructor(response, errObj) {
357
+ super('ClientError', response, errObj);
358
+ }
359
+ }
360
+ export class ServerError extends HttpError {
361
+ constructor(response, errObj) {
362
+ super('ServerError', response, errObj);
363
+ }
364
+ }
365
+ //# sourceMappingURL=HttpRequester.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpRequester.js","sourceRoot":"","sources":["../src/HttpRequester.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,52 @@
1
- import Entity from './Entity';
2
- import { EntityConstructor, EntityInterface, EntityJson, ServerCallResponse, ServerCallStaticResponse } from './Entity.types';
3
- import EntityWeakCache from './EntityWeakCache';
4
- import { EventType, NymphOptions, Options, RequestCallback, ResponseCallback, Selector } from './Nymph.types';
5
- import PubSub from './PubSub';
1
+ import Entity, { type EntityInstanceType } from './Entity.js';
2
+ import type { EntityConstructor, EntityInterface, EntityJson, ServerCallResponse, ServerCallStaticResponse } from './Entity.types.js';
3
+ import EntityWeakCache from './EntityWeakCache.js';
4
+ import type { AbortableAsyncIterator } from './HttpRequester.js';
5
+ import type { EventType, NymphOptions, Options, RequestCallback, ResponseCallback, Selector } from './Nymph.types.js';
6
+ import type PubSub from './PubSub.js';
6
7
  export default class Nymph {
8
+ /**
9
+ * And optional PubSub client instance.
10
+ */
7
11
  pubsub: PubSub | undefined;
12
+ /**
13
+ * A simple map of names to Entity classes.
14
+ */
8
15
  private entityClasses;
16
+ /**
17
+ * The entity class for this instance of Nymph.
18
+ */
9
19
  Entity: typeof Entity;
10
20
  private requestCallbacks;
11
21
  private responseCallbacks;
12
22
  private restUrl;
13
23
  private weakCache;
24
+ /**
25
+ * Headers that will be sent with every request.
26
+ *
27
+ * These are used by Tilmeld for authentication.
28
+ */
29
+ headers: {
30
+ [k: string]: string;
31
+ };
32
+ /**
33
+ * The entity cache.
34
+ */
14
35
  cache: EntityWeakCache;
15
36
  constructor(NymphOptions: NymphOptions);
37
+ /**
38
+ * Add your class to this instance.
39
+ *
40
+ * This will create a class that extends your class within this instance of
41
+ * Nymph and return it. You can then use this class's constructor and methods,
42
+ * which will use this instance of Nymph.
43
+ *
44
+ * Because this creates a subclass, don't use the class returned from
45
+ * `getEntityClass` to check with `instanceof`. Instead, use the base class
46
+ * that you passed into this method.
47
+ */
16
48
  addEntityClass<T extends EntityConstructor>(entityClass: T): T;
49
+ getEntityClass<T extends EntityConstructor>(className: T): T;
17
50
  getEntityClass(className: string): EntityConstructor;
18
51
  newUID(name: string): Promise<number>;
19
52
  setUID(name: string, value: number): Promise<any>;
@@ -30,14 +63,14 @@ export default class Nymph {
30
63
  getEntity<T extends EntityConstructor = EntityConstructor>(options: Options<T> & {
31
64
  return: 'guid';
32
65
  }, ...selectors: Selector[]): Promise<string | null>;
33
- getEntity<T extends EntityConstructor = EntityConstructor>(options: Options<T>, ...selectors: Selector[]): Promise<ReturnType<T['factorySync']> | null>;
66
+ getEntity<T extends EntityConstructor = EntityConstructor>(options: Options<T>, ...selectors: Selector[]): Promise<EntityInstanceType<T> | null>;
34
67
  getEntity<T extends EntityConstructor = EntityConstructor>(options: Options<T> & {
35
68
  return: 'count';
36
69
  }, guid: string): Promise<number>;
37
70
  getEntity<T extends EntityConstructor = EntityConstructor>(options: Options<T> & {
38
71
  return: 'guid';
39
72
  }, guid: string): Promise<string | null>;
40
- getEntity<T extends EntityConstructor = EntityConstructor>(options: Options<T>, guid: string): Promise<ReturnType<T['factorySync']> | null>;
73
+ getEntity<T extends EntityConstructor = EntityConstructor>(options: Options<T>, guid: string): Promise<EntityInstanceType<T> | null>;
41
74
  getEntityData<T extends EntityConstructor = EntityConstructor>(options: Options<T> & {
42
75
  return: 'count';
43
76
  }, ...selectors: Selector[]): Promise<number>;
@@ -58,18 +91,18 @@ export default class Nymph {
58
91
  getEntities<T extends EntityConstructor = EntityConstructor>(options: Options<T> & {
59
92
  return: 'guid';
60
93
  }, ...selectors: Selector[]): Promise<string[]>;
61
- getEntities<T extends EntityConstructor = EntityConstructor>(options: Options<T>, ...selectors: Selector[]): Promise<ReturnType<T['factorySync']>[]>;
62
- initEntity<T extends EntityConstructor = EntityConstructor>(entityJSON: EntityJson<T>): ReturnType<T['factorySync']>;
63
- getEntityFromCache<T extends EntityConstructor = EntityConstructor>(EntityClass: EntityConstructor, guid: string): ReturnType<T['factorySync']> | null;
94
+ getEntities<T extends EntityConstructor = EntityConstructor>(options: Options<T>, ...selectors: Selector[]): Promise<EntityInstanceType<T>[]>;
95
+ initEntity<T extends EntityConstructor = EntityConstructor>(entityJSON: EntityJson<T>): EntityInstanceType<T>;
96
+ getEntityFromCache<T extends EntityConstructor = EntityConstructor>(EntityClass: EntityConstructor, guid: string): EntityInstanceType<T> | null;
64
97
  setEntityToCache(EntityClass: EntityConstructor, entity: EntityInterface): void;
65
98
  initEntitiesFromData<T extends any>(item: T): T;
66
99
  deleteEntity(entity: EntityInterface | EntityInterface[], _plural?: boolean): Promise<any>;
67
100
  deleteEntities(entities: EntityInterface[]): Promise<any>;
68
101
  serverCall(entity: EntityInterface, method: string, params: any[], stateless?: boolean): Promise<ServerCallResponse>;
69
102
  serverCallStatic(className: string, method: string, params: any[]): Promise<ServerCallStaticResponse>;
103
+ serverCallStaticIterator(className: string, method: string, params: any[]): Promise<AbortableAsyncIterator<ServerCallStaticResponse>>;
70
104
  on<T extends EventType>(event: T, callback: T extends 'request' ? RequestCallback : T extends 'response' ? ResponseCallback : never): () => boolean;
71
105
  off<T extends EventType>(event: T, callback: T extends 'request' ? RequestCallback : T extends 'response' ? ResponseCallback : never): boolean;
72
- setXsrfToken(token: string | null): void;
73
106
  }
74
107
  export declare class ClassNotAvailableError extends Error {
75
108
  constructor(message: string);