@nymphjs/client 1.0.0-beta.98 → 1.0.0-beta.99

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/lib/Nymph.js ADDED
@@ -0,0 +1,426 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.InvalidRequestError = exports.ClassNotAvailableError = void 0;
7
+ const Entity_1 = __importDefault(require("./Entity"));
8
+ const EntityWeakCache_1 = __importDefault(require("./EntityWeakCache"));
9
+ const HttpRequester_1 = __importDefault(require("./HttpRequester"));
10
+ const utils_1 = require("./utils");
11
+ let requester;
12
+ class Nymph {
13
+ constructor(NymphOptions) {
14
+ /**
15
+ * And optional PubSub client instance.
16
+ */
17
+ this.pubsub = undefined;
18
+ /**
19
+ * A simple map of names to Entity classes.
20
+ */
21
+ this.entityClasses = {};
22
+ this.requestCallbacks = [];
23
+ this.responseCallbacks = [];
24
+ this.restUrl = '';
25
+ this.weakCache = false;
26
+ /**
27
+ * Headers that will be sent with every request.
28
+ *
29
+ * These are used by Tilmeld for authentication.
30
+ */
31
+ this.headers = {};
32
+ /**
33
+ * The entity cache.
34
+ */
35
+ this.cache = new EntityWeakCache_1.default();
36
+ this.restUrl = NymphOptions.restUrl;
37
+ // @ts-ignore TS doesn't know about WeakRef.
38
+ this.weakCache = !!NymphOptions.weakCache && typeof WeakRef !== 'undefined';
39
+ this.Entity = this.addEntityClass(Entity_1.default);
40
+ requester = new HttpRequester_1.default('fetch' in NymphOptions ? NymphOptions.fetch : undefined);
41
+ if ('renewTokens' in NymphOptions && !NymphOptions.renewTokens) {
42
+ this.headers['X-Tilmeld-Token-Renewal'] = 'off';
43
+ }
44
+ requester.on('request', (_requester, url, options) => {
45
+ for (let i = 0; i < this.requestCallbacks.length; i++) {
46
+ this.requestCallbacks[i] && this.requestCallbacks[i](url, options);
47
+ }
48
+ });
49
+ requester.on('response', (_requester, response, text) => {
50
+ for (let i = 0; i < this.responseCallbacks.length; i++) {
51
+ this.responseCallbacks[i] && this.responseCallbacks[i](response, text);
52
+ }
53
+ });
54
+ }
55
+ /**
56
+ * Add your class to this instance.
57
+ *
58
+ * This will create a class that extends your class within this instance of
59
+ * Nymph and return it. You can then use this class's constructor and methods,
60
+ * which will use this instance of Nymph.
61
+ *
62
+ * Because this creates a subclass, don't use the class
63
+ * returned from `getEntityClass` to check with `instanceof`.
64
+ */
65
+ addEntityClass(entityClass) {
66
+ const nymph = this;
67
+ class NymphEntity extends entityClass {
68
+ constructor(...args) {
69
+ super(...args);
70
+ }
71
+ }
72
+ NymphEntity.nymph = nymph;
73
+ this.entityClasses[entityClass.class] = NymphEntity;
74
+ return NymphEntity;
75
+ }
76
+ getEntityClass(className) {
77
+ let key = null;
78
+ if (typeof className === 'string') {
79
+ key = className;
80
+ }
81
+ else {
82
+ key = className.class;
83
+ }
84
+ if (key in this.entityClasses) {
85
+ return this.entityClasses[key];
86
+ }
87
+ throw new ClassNotAvailableError('Tried to use class: ' + key);
88
+ }
89
+ async newUID(name) {
90
+ const data = await requester.POST({
91
+ url: this.restUrl,
92
+ headers: { ...this.headers },
93
+ dataType: 'text',
94
+ data: { action: 'uid', data: name },
95
+ });
96
+ return Number(data);
97
+ }
98
+ async setUID(name, value) {
99
+ return await requester.PUT({
100
+ url: this.restUrl,
101
+ headers: { ...this.headers },
102
+ dataType: 'json',
103
+ data: { action: 'uid', data: { name, value } },
104
+ });
105
+ }
106
+ async getUID(name) {
107
+ const data = await requester.GET({
108
+ url: this.restUrl,
109
+ headers: { ...this.headers },
110
+ dataType: 'text',
111
+ data: { action: 'uid', data: name },
112
+ });
113
+ return Number(data);
114
+ }
115
+ async deleteUID(name) {
116
+ return await requester.DELETE({
117
+ url: this.restUrl,
118
+ headers: { ...this.headers },
119
+ dataType: 'text',
120
+ data: { action: 'uid', data: name },
121
+ });
122
+ }
123
+ async saveEntity(entity) {
124
+ let method = entity.guid == null ? 'POST' : 'PUT';
125
+ return await this.requestWithMethod(entity, method, entity, false);
126
+ }
127
+ async saveEntities(entities) {
128
+ if (!entities.length) {
129
+ return Promise.resolve(false);
130
+ }
131
+ let method = entities[0].guid == null ? 'POST' : 'PUT';
132
+ entities.forEach((cur) => {
133
+ if ((method === 'POST' && cur.guid != null) ||
134
+ (method === 'PUT' && cur.guid == null)) {
135
+ throw new InvalidRequestError('Due to REST restriction, you can only create new entities or ' +
136
+ 'update existing entities, not both at the same time.');
137
+ }
138
+ });
139
+ return await this.requestWithMethod(entities, method, entities, true);
140
+ }
141
+ async patchEntity(entity) {
142
+ if (entity.guid == null) {
143
+ throw new InvalidRequestError("You can't patch an entity that hasn't yet been saved.");
144
+ }
145
+ let patch = entity.$getPatch();
146
+ return await this.requestWithMethod(entity, 'PATCH', patch, false);
147
+ }
148
+ async patchEntities(entities) {
149
+ if (!entities.length) {
150
+ return Promise.resolve(false);
151
+ }
152
+ entities.forEach((cur) => {
153
+ if (cur.guid == null) {
154
+ throw new InvalidRequestError('Due to REST restriction, you can only create new entities or ' +
155
+ 'update existing entities, not both at the same time.');
156
+ }
157
+ });
158
+ let patch = entities.map((e) => e.$getPatch());
159
+ return await this.requestWithMethod(entities, 'PATCH', patch, true);
160
+ }
161
+ async requestWithMethod(entity, method, data, plural) {
162
+ const response = await requester[method]({
163
+ url: this.restUrl,
164
+ headers: { ...this.headers },
165
+ dataType: 'json',
166
+ data: {
167
+ action: plural ? 'entities' : 'entity',
168
+ data,
169
+ },
170
+ });
171
+ if (plural && Array.isArray(entity) && entity.length === response.length) {
172
+ return entity.map((e, i) => response[i] &&
173
+ typeof response[i].guid !== 'undefined' &&
174
+ (e.guid == null || e.guid === response[i].guid)
175
+ ? e.$init(response[i])
176
+ : e);
177
+ }
178
+ else if (!Array.isArray(entity) && typeof response.guid !== 'undefined') {
179
+ return entity.$init(response);
180
+ }
181
+ throw new Error('Server error');
182
+ }
183
+ async getEntity(options, ...selectors) {
184
+ // @ts-ignore: Implementation signatures of overloads are not externally visible.
185
+ const data = (await this.getEntityData(options, ...selectors));
186
+ if (options.return && options.return === 'count') {
187
+ return Number(data ?? 0);
188
+ }
189
+ if (data != null) {
190
+ if (options.return && options.return === 'guid') {
191
+ return data;
192
+ }
193
+ else {
194
+ return this.initEntity(data);
195
+ }
196
+ }
197
+ return null;
198
+ }
199
+ async getEntityData(options, ...selectors) {
200
+ if (options.class instanceof Entity_1.default) {
201
+ throw new InvalidRequestError("You can't make REST requests with the base Entity class.");
202
+ }
203
+ // Set up options and selectors.
204
+ if (typeof selectors[0] === 'string') {
205
+ selectors = [{ type: '&', guid: selectors[0] }];
206
+ }
207
+ const data = await requester.GET({
208
+ url: this.restUrl,
209
+ headers: { ...this.headers },
210
+ dataType: 'json',
211
+ data: {
212
+ action: 'entity',
213
+ data: [
214
+ { ...options, class: options.class.class },
215
+ ...(0, utils_1.entityConstructorsToClassNames)(selectors),
216
+ ],
217
+ },
218
+ });
219
+ if (options.return === 'count' || typeof data.guid !== 'undefined') {
220
+ return data;
221
+ }
222
+ return null;
223
+ }
224
+ async getEntities(options, ...selectors) {
225
+ const data = await requester.GET({
226
+ url: this.restUrl,
227
+ headers: { ...this.headers },
228
+ dataType: 'json',
229
+ data: {
230
+ action: 'entities',
231
+ data: [
232
+ { ...options, class: options.class.class },
233
+ ...(0, utils_1.entityConstructorsToClassNames)(selectors),
234
+ ],
235
+ },
236
+ });
237
+ if (options.return && options.return === 'count') {
238
+ return Number(data);
239
+ }
240
+ if (options.return && options.return === 'guid') {
241
+ return data;
242
+ }
243
+ return data.map((e) => this.initEntity(e));
244
+ }
245
+ initEntity(entityJSON) {
246
+ const EntityClass = this.getEntityClass(entityJSON.class);
247
+ if (!EntityClass) {
248
+ throw new ClassNotAvailableError(entityJSON.class + ' class cannot be found.');
249
+ }
250
+ let entity = EntityClass.factorySync();
251
+ if (this.weakCache) {
252
+ // Try to get it from cache.
253
+ const entityFromCache = this.cache.get(EntityClass, entityJSON.guid || '');
254
+ if (entityFromCache != null) {
255
+ entity = entityFromCache;
256
+ }
257
+ }
258
+ return entity.$init(entityJSON);
259
+ }
260
+ getEntityFromCache(EntityClass, guid) {
261
+ if (!this.weakCache) {
262
+ return null;
263
+ }
264
+ return this.cache.get(EntityClass, guid);
265
+ }
266
+ setEntityToCache(EntityClass, entity) {
267
+ if (!this.weakCache) {
268
+ return;
269
+ }
270
+ return this.cache.set(EntityClass, entity);
271
+ }
272
+ initEntitiesFromData(item) {
273
+ if (Array.isArray(item)) {
274
+ // Recurse into lower arrays.
275
+ return item.map((entry) => this.initEntitiesFromData(entry));
276
+ }
277
+ else if (item instanceof Object && !(item instanceof Entity_1.default)) {
278
+ if (item.hasOwnProperty('class') &&
279
+ item.hasOwnProperty('guid') &&
280
+ item.hasOwnProperty('cdate') &&
281
+ item.hasOwnProperty('mdate') &&
282
+ item.hasOwnProperty('tags') &&
283
+ item.hasOwnProperty('data') &&
284
+ this.getEntityClass(item.class)) {
285
+ return this.initEntity(item);
286
+ }
287
+ else {
288
+ for (let [key, value] of Object.entries(item)) {
289
+ // @ts-ignore: Key comes from the object. It's fine.
290
+ item[key] = this.initEntitiesFromData(value);
291
+ }
292
+ }
293
+ }
294
+ // Not an entity or array, just return it.
295
+ return item;
296
+ }
297
+ async deleteEntity(entity, _plural = false) {
298
+ return await requester.DELETE({
299
+ url: this.restUrl,
300
+ headers: { ...this.headers },
301
+ dataType: 'json',
302
+ data: {
303
+ action: _plural ? 'entities' : 'entity',
304
+ data: _plural && Array.isArray(entity)
305
+ ? entity.map((e) => ({
306
+ guid: e.guid,
307
+ class: e.constructor.class,
308
+ }))
309
+ : {
310
+ guid: entity.guid,
311
+ class: entity.constructor.class,
312
+ },
313
+ },
314
+ });
315
+ }
316
+ async deleteEntities(entities) {
317
+ return await this.deleteEntity(entities, true);
318
+ }
319
+ async serverCall(entity, method, params, stateless = false) {
320
+ const data = await requester.POST({
321
+ url: this.restUrl,
322
+ headers: { ...this.headers },
323
+ dataType: 'json',
324
+ data: {
325
+ action: 'method',
326
+ data: {
327
+ entity,
328
+ stateless,
329
+ method,
330
+ params: (0, utils_1.entitiesToReferences)((0, utils_1.entityConstructorsToClassNames)(params)),
331
+ },
332
+ },
333
+ });
334
+ return {
335
+ ...data,
336
+ return: this.initEntitiesFromData(data.return),
337
+ };
338
+ }
339
+ async serverCallStatic(className, method, params) {
340
+ const data = await requester.POST({
341
+ url: this.restUrl,
342
+ headers: { ...this.headers },
343
+ dataType: 'json',
344
+ data: {
345
+ action: 'method',
346
+ data: {
347
+ class: className,
348
+ static: true,
349
+ method: method,
350
+ params: (0, utils_1.entitiesToReferences)((0, utils_1.entityConstructorsToClassNames)(params)),
351
+ },
352
+ },
353
+ });
354
+ return this.initEntitiesFromData(data);
355
+ }
356
+ async serverCallStaticIterator(className, method, params) {
357
+ const iterable = await requester.POST_ITERATOR({
358
+ url: this.restUrl,
359
+ headers: { ...this.headers },
360
+ dataType: 'json',
361
+ data: {
362
+ action: 'method',
363
+ data: {
364
+ class: className,
365
+ static: true,
366
+ method: method,
367
+ iterator: true,
368
+ params: (0, utils_1.entitiesToReferences)((0, utils_1.entityConstructorsToClassNames)(params)),
369
+ },
370
+ },
371
+ });
372
+ const that = this;
373
+ const iterator = {
374
+ abortController: iterable.abortController,
375
+ async *[Symbol.asyncIterator]() {
376
+ for await (let response of iterable) {
377
+ if (response instanceof Error) {
378
+ yield response;
379
+ }
380
+ else {
381
+ yield that.initEntitiesFromData(response);
382
+ }
383
+ }
384
+ },
385
+ };
386
+ return iterator;
387
+ }
388
+ on(event, callback) {
389
+ const prop = (event + 'Callbacks');
390
+ if (!(prop in this)) {
391
+ throw new Error('Invalid event type.');
392
+ }
393
+ // @ts-ignore: The callback should always be the right type here.
394
+ this[prop].push(callback);
395
+ return () => this.off(event, callback);
396
+ }
397
+ off(event, callback) {
398
+ const prop = (event + 'Callbacks');
399
+ if (!(prop in this)) {
400
+ return false;
401
+ }
402
+ // @ts-ignore: The callback should always be the right type here.
403
+ const i = this[prop].indexOf(callback);
404
+ if (i > -1) {
405
+ // @ts-ignore: The callback should always be the right type here.
406
+ this[prop].splice(i, 1);
407
+ }
408
+ return true;
409
+ }
410
+ }
411
+ exports.default = Nymph;
412
+ class ClassNotAvailableError extends Error {
413
+ constructor(message) {
414
+ super(message);
415
+ this.name = 'ClassNotAvailableError';
416
+ }
417
+ }
418
+ exports.ClassNotAvailableError = ClassNotAvailableError;
419
+ class InvalidRequestError extends Error {
420
+ constructor(message) {
421
+ super(message);
422
+ this.name = 'InvalidRequestError';
423
+ }
424
+ }
425
+ exports.InvalidRequestError = InvalidRequestError;
426
+ //# sourceMappingURL=Nymph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Nymph.js","sourceRoot":"","sources":["../src/Nymph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,169 @@
1
+ import { EntityConstructor, EntityInterface } from './Entity.types';
2
+ export type NymphOptions = {
3
+ /**
4
+ * The URL of your Nymph REST server.
5
+ */
6
+ restUrl: string;
7
+ /**
8
+ * The URL of your Nymph PubSub server.
9
+ */
10
+ pubsubUrl?: string;
11
+ /**
12
+ * A fetch implementation.
13
+ */
14
+ fetch?: WindowOrWorkerGlobalScope['fetch'];
15
+ /**
16
+ * A WebSocket implementation.
17
+ */
18
+ WebSocket?: typeof WebSocket;
19
+ /**
20
+ * Whether to not output status messages to the console.
21
+ */
22
+ noConsole?: boolean;
23
+ /**
24
+ * Don't automatically try to connect to PubSub server.
25
+ */
26
+ noAutoconnect?: boolean;
27
+ /**
28
+ * Use a WeakRef based cache of entities.
29
+ *
30
+ * This ensures all entities returned are the same instance if they have the
31
+ * same class and GUID. This also means that whenever an entity is returned
32
+ * from the server, the single instance in memory will be refreshed. This
33
+ * could have annoying results, like destroying dirty data (the dreaded
34
+ * triple-D).
35
+ *
36
+ * This could also be a potential source of memory leaks. Although the
37
+ * entities themselves are referenced weakly so they get garbage collected,
38
+ * the GUID used as a key and the WeakRef object itself are not weak
39
+ * references, so not destroyed when the instance is garbage collected.
40
+ *
41
+ * However, even with these caveats, this might help you if you have a big app
42
+ * with the same entities stored in several different places in memory. This
43
+ * can help to synchronize them correctly and avoid data conflicts.
44
+ */
45
+ weakCache?: boolean;
46
+ /**
47
+ * Whether to renew tokens when a request is made.
48
+ *
49
+ * If you turn this off, the client will request that the server not renew an
50
+ * authentication token, even if it is within the renewal time of the
51
+ * expiration date.
52
+ *
53
+ * This defaults to true.
54
+ */
55
+ renewTokens?: boolean;
56
+ };
57
+ export type EventType = 'request' | 'response';
58
+ export type RequestCallback = (url: string, options: RequestInit) => void;
59
+ export type ResponseCallback = (response: Response, text: string) => void;
60
+ export type Options<T extends EntityConstructor = EntityConstructor> = {
61
+ /**
62
+ * The Entity class to query.
63
+ */
64
+ class: T;
65
+ /**
66
+ * The limit of entities to be returned. Not needed when using `getEntity`, as
67
+ * it always returns only one.
68
+ */
69
+ limit?: number;
70
+ /**
71
+ * The offset from the first matching entity, in order, to start retrieving.
72
+ */
73
+ offset?: number;
74
+ /**
75
+ * If true, entities will be retrieved from newest to oldest/largest to
76
+ * smallest (with regard to `sort`).
77
+ */
78
+ reverse?: boolean;
79
+ /**
80
+ * How to sort the entities. Should be "cdate", "mdate", or the name of a
81
+ * property.
82
+ */
83
+ sort?: 'cdate' | 'mdate' | string;
84
+ /**
85
+ * What to return, the entities with their data, just the GUIDs, or just a
86
+ * count.
87
+ */
88
+ return?: 'entity' | 'guid' | 'count';
89
+ /**
90
+ * If true, Nymph will skip the cache and retrieve the entity from the DB.
91
+ */
92
+ skipCache?: boolean;
93
+ };
94
+ export type Clause<C> = C | Exclude<C, undefined>[];
95
+ export type OrWithTime<T> = T | [string, null, string];
96
+ type PrimitiveSelector = {
97
+ guid?: string;
98
+ '!guid'?: PrimitiveSelector['guid'];
99
+ tag?: string;
100
+ '!tag'?: PrimitiveSelector['tag'];
101
+ defined?: string;
102
+ '!defined'?: PrimitiveSelector['defined'];
103
+ truthy?: string;
104
+ '!truthy'?: PrimitiveSelector['truthy'];
105
+ equal?: [string, any];
106
+ '!equal'?: PrimitiveSelector['equal'];
107
+ contain?: [string, any];
108
+ '!contain'?: PrimitiveSelector['contain'];
109
+ match?: [string, string];
110
+ '!match'?: PrimitiveSelector['match'];
111
+ imatch?: [string, string];
112
+ '!imatch'?: PrimitiveSelector['imatch'];
113
+ like?: [string, string];
114
+ '!like'?: PrimitiveSelector['like'];
115
+ ilike?: [string, string];
116
+ '!ilike'?: PrimitiveSelector['ilike'];
117
+ gt?: [string, number];
118
+ '!gt'?: PrimitiveSelector['gt'];
119
+ gte?: [string, number];
120
+ '!gte'?: PrimitiveSelector['gte'];
121
+ lt?: [string, number];
122
+ '!lt'?: PrimitiveSelector['lt'];
123
+ lte?: [string, number];
124
+ '!lte'?: PrimitiveSelector['lte'];
125
+ ref?: [string, EntityInterface | string];
126
+ '!ref'?: PrimitiveSelector['ref'];
127
+ qref?: [string, [Options, ...PrimitiveSelector[]]];
128
+ '!qref'?: PrimitiveSelector['qref'];
129
+ selector?: PrimitiveSelector;
130
+ '!selector'?: PrimitiveSelector['selector'];
131
+ };
132
+ export type Selector = {
133
+ type: '&' | '|' | '!&' | '!|';
134
+ guid?: Clause<PrimitiveSelector['guid']>;
135
+ '!guid'?: Clause<PrimitiveSelector['guid']>;
136
+ tag?: Clause<PrimitiveSelector['tag']>;
137
+ '!tag'?: Clause<PrimitiveSelector['tag']>;
138
+ defined?: Clause<PrimitiveSelector['defined']>;
139
+ '!defined'?: Clause<PrimitiveSelector['defined']>;
140
+ truthy?: Clause<PrimitiveSelector['truthy']>;
141
+ '!truthy'?: Clause<PrimitiveSelector['truthy']>;
142
+ equal?: Clause<OrWithTime<PrimitiveSelector['equal']>>;
143
+ '!equal'?: Clause<OrWithTime<PrimitiveSelector['equal']>>;
144
+ contain?: Clause<OrWithTime<PrimitiveSelector['contain']>>;
145
+ '!contain'?: Clause<OrWithTime<PrimitiveSelector['contain']>>;
146
+ match?: Clause<PrimitiveSelector['match']>;
147
+ '!match'?: Clause<PrimitiveSelector['match']>;
148
+ imatch?: Clause<PrimitiveSelector['imatch']>;
149
+ '!imatch'?: Clause<PrimitiveSelector['imatch']>;
150
+ like?: Clause<PrimitiveSelector['like']>;
151
+ '!like'?: Clause<PrimitiveSelector['like']>;
152
+ ilike?: Clause<PrimitiveSelector['ilike']>;
153
+ '!ilike'?: Clause<PrimitiveSelector['ilike']>;
154
+ gt?: Clause<OrWithTime<PrimitiveSelector['gt']>>;
155
+ '!gt'?: Clause<OrWithTime<PrimitiveSelector['gt']>>;
156
+ gte?: Clause<OrWithTime<PrimitiveSelector['gte']>>;
157
+ '!gte'?: Clause<OrWithTime<PrimitiveSelector['gte']>>;
158
+ lt?: Clause<OrWithTime<PrimitiveSelector['lt']>>;
159
+ '!lt'?: Clause<OrWithTime<PrimitiveSelector['lt']>>;
160
+ lte?: Clause<OrWithTime<PrimitiveSelector['lte']>>;
161
+ '!lte'?: Clause<OrWithTime<PrimitiveSelector['lte']>>;
162
+ ref?: Clause<PrimitiveSelector['ref']>;
163
+ '!ref'?: Clause<PrimitiveSelector['ref']>;
164
+ qref?: Clause<[string, [Options, ...Selector[]]]>;
165
+ '!qref'?: Selector['qref'];
166
+ selector?: Clause<Selector>;
167
+ '!selector'?: Selector['selector'];
168
+ };
169
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Nymph.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Nymph.types.js","sourceRoot":"","sources":["../src/Nymph.types.ts"],"names":[],"mappings":""}