@nymphjs/client 1.0.0-beta.80 → 1.0.0-beta.82
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 +10 -0
- package/README.md +3 -3
- package/{lib → dist}/Entity.d.ts +4 -3
- package/{lib → dist}/Entity.js +82 -69
- package/dist/Entity.js.map +1 -0
- package/{lib → dist}/Entity.types.d.ts +20 -2
- package/dist/Entity.types.js +2 -0
- package/{lib → dist}/EntityWeakCache.d.ts +1 -1
- package/{lib → dist}/EntityWeakCache.js +2 -7
- package/dist/EntityWeakCache.js.map +1 -0
- package/{lib → dist}/HttpRequester.js +19 -29
- package/dist/HttpRequester.js.map +1 -0
- package/{lib → dist}/Nymph.d.ts +6 -6
- package/{lib → dist}/Nymph.js +43 -48
- package/dist/Nymph.js.map +1 -0
- package/{lib → dist}/Nymph.types.d.ts +1 -1
- package/dist/Nymph.types.js +2 -0
- package/{lib → dist}/PubSub.d.ts +5 -5
- package/{lib → dist}/PubSub.js +29 -26
- package/dist/PubSub.js.map +1 -0
- package/{lib → dist}/PubSub.types.d.ts +2 -2
- package/dist/PubSub.types.js +2 -0
- package/{lib → dist}/entityRefresh.d.ts +1 -1
- package/{lib → dist}/entityRefresh.js +5 -13
- package/dist/entityRefresh.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +13 -2
- package/dist/index.js.map +1 -1
- package/{lib → dist}/utils.d.ts +1 -1
- package/{lib → dist}/utils.js +9 -20
- package/dist/utils.js.map +1 -0
- package/jest.config.js +11 -2
- package/package.json +20 -27
- package/src/Entity.ts +10 -7
- package/src/Entity.types.ts +20 -2
- package/src/EntityWeakCache.ts +1 -1
- package/src/HttpRequester.ts +34 -34
- package/src/Nymph.ts +19 -16
- package/src/Nymph.types.ts +1 -1
- package/src/PubSub.ts +23 -23
- package/src/PubSub.types.ts +2 -2
- package/src/entityRefresh.ts +1 -1
- package/src/index.ts +10 -10
- package/src/utils.ts +3 -3
- package/tsconfig.json +5 -3
- package/dist/index.js.LICENSE.txt +0 -8
- package/lib/Entity.js.map +0 -1
- package/lib/Entity.types.js +0 -3
- package/lib/EntityWeakCache.js.map +0 -1
- package/lib/HttpRequester.js.map +0 -1
- package/lib/Nymph.js.map +0 -1
- package/lib/Nymph.types.js +0 -3
- package/lib/PubSub.js.map +0 -1
- package/lib/PubSub.types.js +0 -3
- package/lib/entityRefresh.js.map +0 -1
- package/lib/index.d.ts +0 -13
- package/lib/index.js +0 -34
- package/lib/index.js.map +0 -1
- package/lib/utils.js.map +0 -1
- package/webpack.config.js +0 -28
- /package/{lib → dist}/Entity.types.js.map +0 -0
- /package/{lib → dist}/HttpRequester.d.ts +0 -0
- /package/{lib → dist}/Nymph.types.js.map +0 -0
- /package/{lib → dist}/PubSub.types.js.map +0 -0
package/{lib → dist}/utils.d.ts
RENAMED
package/{lib → dist}/utils.js
RENAMED
|
@@ -1,21 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.sortObj = exports.referencesToEntities = exports.entitiesToReferences = exports.entityConstructorsToClassNames = exports.uniqueStrings = void 0;
|
|
7
|
-
const Entity_1 = __importDefault(require("./Entity"));
|
|
8
|
-
function uniqueStrings(array) {
|
|
1
|
+
import Entity from './Entity.js';
|
|
2
|
+
export function uniqueStrings(array) {
|
|
9
3
|
const obj = {};
|
|
10
4
|
for (let i = 0; i < array.length; ++i) {
|
|
11
5
|
obj[array[i]] = true;
|
|
12
6
|
}
|
|
13
7
|
return Object.keys(obj);
|
|
14
8
|
}
|
|
15
|
-
|
|
16
|
-
function entityConstructorsToClassNames(item) {
|
|
9
|
+
export function entityConstructorsToClassNames(item) {
|
|
17
10
|
if (typeof item === 'function' &&
|
|
18
|
-
item.prototype instanceof
|
|
11
|
+
item.prototype instanceof Entity &&
|
|
19
12
|
typeof item.class === 'string') {
|
|
20
13
|
// Convert entity classes to strings.
|
|
21
14
|
return item.class;
|
|
@@ -34,9 +27,8 @@ function entityConstructorsToClassNames(item) {
|
|
|
34
27
|
// Not an entity or array, just return it.
|
|
35
28
|
return item;
|
|
36
29
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
if (item instanceof Entity_1.default && typeof item.$toReference === 'function') {
|
|
30
|
+
export function entitiesToReferences(item) {
|
|
31
|
+
if (item instanceof Entity && typeof item.$toReference === 'function') {
|
|
40
32
|
// Convert entities to references.
|
|
41
33
|
return item.$toReference();
|
|
42
34
|
}
|
|
@@ -54,8 +46,7 @@ function entitiesToReferences(item) {
|
|
|
54
46
|
// Not an entity or array, just return it.
|
|
55
47
|
return item;
|
|
56
48
|
}
|
|
57
|
-
|
|
58
|
-
function referencesToEntities(item, nymph) {
|
|
49
|
+
export function referencesToEntities(item, nymph) {
|
|
59
50
|
if (Array.isArray(item)) {
|
|
60
51
|
// Check if it's a reference.
|
|
61
52
|
if (item[0] === 'nymph_entity_reference') {
|
|
@@ -72,7 +63,7 @@ function referencesToEntities(item, nymph) {
|
|
|
72
63
|
return item.map((item) => referencesToEntities(item, nymph));
|
|
73
64
|
}
|
|
74
65
|
}
|
|
75
|
-
else if (
|
|
66
|
+
else if (Entity && item instanceof Object && !(item instanceof Entity)) {
|
|
76
67
|
for (let [key, value] of Object.entries(item)) {
|
|
77
68
|
item[key] = referencesToEntities(value, nymph);
|
|
78
69
|
}
|
|
@@ -80,8 +71,7 @@ function referencesToEntities(item, nymph) {
|
|
|
80
71
|
// Not an array, just return it.
|
|
81
72
|
return item;
|
|
82
73
|
}
|
|
83
|
-
|
|
84
|
-
function sortObj(obj) {
|
|
74
|
+
export function sortObj(obj) {
|
|
85
75
|
// adapted from
|
|
86
76
|
// http://am.aurlien.net/post/1221493460/sorting-javascript-objects
|
|
87
77
|
const tempArray = Object.keys(obj);
|
|
@@ -93,5 +83,4 @@ function sortObj(obj) {
|
|
|
93
83
|
}
|
|
94
84
|
return obj;
|
|
95
85
|
}
|
|
96
|
-
exports.sortObj = sortObj;
|
|
97
86
|
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/jest.config.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
|
+
import { createDefaultEsmPreset } from 'ts-jest';
|
|
2
|
+
|
|
3
|
+
const presetConfig = createDefaultEsmPreset();
|
|
4
|
+
|
|
1
5
|
/** @type {import('ts-jest').JestConfigWithTsJest} */
|
|
2
|
-
|
|
3
|
-
|
|
6
|
+
const jestConfig = {
|
|
7
|
+
...presetConfig,
|
|
4
8
|
testEnvironment: 'node',
|
|
5
9
|
rootDir: 'src/',
|
|
10
|
+
moduleNameMapper: {
|
|
11
|
+
'^(\\.|\\.\\.)\\/(.+)\\.js': '$1/$2',
|
|
12
|
+
},
|
|
6
13
|
};
|
|
14
|
+
|
|
15
|
+
export default jestConfig;
|
package/package.json
CHANGED
|
@@ -1,27 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nymphjs/client",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.82",
|
|
4
4
|
"description": "Nymph.js - Client",
|
|
5
|
-
"
|
|
6
|
-
"main": "
|
|
7
|
-
"types": "
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
8
|
"keywords": [
|
|
9
9
|
"nymph",
|
|
10
10
|
"ORM",
|
|
11
11
|
"object relational mapper"
|
|
12
12
|
],
|
|
13
13
|
"scripts": {
|
|
14
|
-
"clean": "
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"build": "npm run build:ts && npm run build:js",
|
|
18
|
-
"build:ts": "tsc",
|
|
19
|
-
"build:js": "webpack",
|
|
20
|
-
"watch:ts": "tsc --watch",
|
|
21
|
-
"watch:js": "webpack --watch",
|
|
14
|
+
"clean": "test -d dist && rm -r dist || true",
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"watch": "tsc --watch",
|
|
22
17
|
"prepublish": "npm run clean && npm run build",
|
|
23
|
-
"test": "
|
|
24
|
-
"test:watch": "jest --watch"
|
|
18
|
+
"test": "NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" npx jest",
|
|
19
|
+
"test:watch": "NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" npx jest --watch"
|
|
25
20
|
},
|
|
26
21
|
"publishConfig": {
|
|
27
22
|
"access": "public"
|
|
@@ -35,20 +30,18 @@
|
|
|
35
30
|
"url": "https://github.com/sciactive/nymphjs/issues"
|
|
36
31
|
},
|
|
37
32
|
"license": "Apache-2.0",
|
|
38
|
-
"devDependencies": {
|
|
39
|
-
"@tsconfig/recommended": "^1.0.3",
|
|
40
|
-
"@types/jest": "^29.5.12",
|
|
41
|
-
"@types/lodash": "^4.14.202",
|
|
42
|
-
"jest": "^29.7.0",
|
|
43
|
-
"ts-jest": "^29.1.2",
|
|
44
|
-
"ts-loader": "^9.5.1",
|
|
45
|
-
"typescript": "^5.3.3",
|
|
46
|
-
"webpack": "^5.90.3",
|
|
47
|
-
"webpack-cli": "^5.1.4"
|
|
48
|
-
},
|
|
49
33
|
"dependencies": {
|
|
50
34
|
"fetch-event-source-hperrin": "^3.0.0",
|
|
51
|
-
"lodash": "^4.17.21"
|
|
35
|
+
"lodash-es": "^4.17.21"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@tsconfig/recommended": "^1.0.8",
|
|
39
|
+
"@types/jest": "^29.5.14",
|
|
40
|
+
"@types/lodash-es": "^4.17.12",
|
|
41
|
+
"jest": "^29.7.0",
|
|
42
|
+
"ts-jest": "^29.2.5",
|
|
43
|
+
"ts-node": "^10.9.2",
|
|
44
|
+
"typescript": "^5.7.2"
|
|
52
45
|
},
|
|
53
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "d58504e21341daa0c374d7139306542504f0165e"
|
|
54
47
|
}
|
package/src/Entity.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { difference, isEqual } from 'lodash';
|
|
1
|
+
import { difference, isEqual } from 'lodash-es';
|
|
2
2
|
|
|
3
|
-
import type Nymph from './Nymph';
|
|
3
|
+
import type Nymph from './Nymph.js';
|
|
4
4
|
import {
|
|
5
5
|
EntityConstructor,
|
|
6
6
|
EntityData,
|
|
@@ -8,17 +8,16 @@ import {
|
|
|
8
8
|
EntityJson,
|
|
9
9
|
EntityPatch,
|
|
10
10
|
EntityReference,
|
|
11
|
-
} from './Entity.types';
|
|
11
|
+
} from './Entity.types.js';
|
|
12
12
|
import {
|
|
13
13
|
uniqueStrings,
|
|
14
14
|
entitiesToReferences,
|
|
15
15
|
referencesToEntities,
|
|
16
16
|
sortObj,
|
|
17
|
-
} from './utils';
|
|
17
|
+
} from './utils.js';
|
|
18
18
|
|
|
19
|
-
export type EntityDataType<T> =
|
|
20
|
-
? DataType
|
|
21
|
-
: never;
|
|
19
|
+
export type EntityDataType<T> =
|
|
20
|
+
T extends Entity<infer DataType> ? DataType : never;
|
|
22
21
|
|
|
23
22
|
export type EntityInstanceType<T extends EntityConstructor> =
|
|
24
23
|
T extends new () => infer E ? E & EntityDataType<E> : never;
|
|
@@ -538,6 +537,10 @@ export default class Entity<T extends EntityData = EntityData>
|
|
|
538
537
|
return true;
|
|
539
538
|
}
|
|
540
539
|
|
|
540
|
+
public $isDirty(property: string) {
|
|
541
|
+
return property in this.$dirty ? this.$dirty[property] : null;
|
|
542
|
+
}
|
|
543
|
+
|
|
541
544
|
public $inArray(array: any[], strict = false) {
|
|
542
545
|
return this.$arraySearch(array, strict) !== -1;
|
|
543
546
|
}
|
package/src/Entity.types.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type Nymph from './Nymph';
|
|
2
|
-
import type Entity from './Entity';
|
|
1
|
+
import type Nymph from './Nymph.js';
|
|
2
|
+
import type Entity from './Entity.js';
|
|
3
3
|
|
|
4
4
|
export type ServerCallResponse = {
|
|
5
5
|
return: any;
|
|
@@ -156,6 +156,24 @@ export interface EntityInterface extends DataObjectInterface {
|
|
|
156
156
|
* @returns True or false.
|
|
157
157
|
*/
|
|
158
158
|
$hasTag(...tags: string[]): boolean;
|
|
159
|
+
/**
|
|
160
|
+
* Check whether a property is dirty.
|
|
161
|
+
*
|
|
162
|
+
* To be a dirty property, it must have been set or deleted since the entity
|
|
163
|
+
* was initialized. A clean property existed on initialization and hasn't been
|
|
164
|
+
* set or deleted. An untracked property didn't exist on initialization and
|
|
165
|
+
* hasn't been set or deleted.
|
|
166
|
+
*
|
|
167
|
+
* Note that this doesn't necessarily mean the property has changed. It could
|
|
168
|
+
* have been set to the same value, or created and then deleted.
|
|
169
|
+
*
|
|
170
|
+
* Entities are initialized when they are pulled from the server or saved.
|
|
171
|
+
* This is done with the `$init` method.
|
|
172
|
+
*
|
|
173
|
+
* @param property The name of a property.
|
|
174
|
+
* @returns True if it's dirty, false if not, and null if it's not tracked.
|
|
175
|
+
*/
|
|
176
|
+
$isDirty(property: string): boolean | null;
|
|
159
177
|
/**
|
|
160
178
|
* Initialize this entity from a JSON representation.
|
|
161
179
|
*
|
package/src/EntityWeakCache.ts
CHANGED
package/src/HttpRequester.ts
CHANGED
|
@@ -61,18 +61,18 @@ export default class HttpRequester {
|
|
|
61
61
|
callback: T extends 'request'
|
|
62
62
|
? HttpRequesterRequestCallback
|
|
63
63
|
: T extends 'response'
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
? HttpRequesterResponseCallback
|
|
65
|
+
: T extends 'iterator'
|
|
66
|
+
? HttpRequesterIteratorCallback
|
|
67
|
+
: never,
|
|
68
68
|
) {
|
|
69
69
|
const prop = (event + 'Callbacks') as T extends 'request'
|
|
70
70
|
? 'requestCallbacks'
|
|
71
71
|
: T extends 'response'
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
? 'responseCallbacks'
|
|
73
|
+
: T extends 'iterator'
|
|
74
|
+
? 'iteratorCallbacks'
|
|
75
|
+
: never;
|
|
76
76
|
if (!(prop in this)) {
|
|
77
77
|
throw new Error('Invalid event type.');
|
|
78
78
|
}
|
|
@@ -86,18 +86,18 @@ export default class HttpRequester {
|
|
|
86
86
|
callback: T extends 'request'
|
|
87
87
|
? HttpRequesterRequestCallback
|
|
88
88
|
: T extends 'response'
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
89
|
+
? HttpRequesterResponseCallback
|
|
90
|
+
: T extends 'iterator'
|
|
91
|
+
? HttpRequesterIteratorCallback
|
|
92
|
+
: never,
|
|
93
93
|
) {
|
|
94
94
|
const prop = (event + 'Callbacks') as T extends 'request'
|
|
95
95
|
? 'requestCallbacks'
|
|
96
96
|
: T extends 'response'
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
97
|
+
? 'responseCallbacks'
|
|
98
|
+
: T extends 'iterator'
|
|
99
|
+
? 'iteratorCallbacks'
|
|
100
|
+
: never;
|
|
101
101
|
if (!(prop in this)) {
|
|
102
102
|
return false;
|
|
103
103
|
}
|
|
@@ -189,12 +189,12 @@ export default class HttpRequester {
|
|
|
189
189
|
throw response.status < 200
|
|
190
190
|
? new InformationalError(response, errObj)
|
|
191
191
|
: response.status < 300
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
192
|
+
? new SuccessError(response, errObj)
|
|
193
|
+
: response.status < 400
|
|
194
|
+
? new RedirectError(response, errObj)
|
|
195
|
+
: response.status < 500
|
|
196
|
+
? new ClientError(response, errObj)
|
|
197
|
+
: new ServerError(response, errObj);
|
|
198
198
|
}
|
|
199
199
|
for (let i = 0; i < this.responseCallbacks.length; i++) {
|
|
200
200
|
this.responseCallbacks[i] &&
|
|
@@ -300,12 +300,12 @@ export default class HttpRequester {
|
|
|
300
300
|
throw response.status < 200
|
|
301
301
|
? new InformationalError(response, errObj)
|
|
302
302
|
: response.status < 300
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
303
|
+
? new SuccessError(response, errObj)
|
|
304
|
+
: response.status < 400
|
|
305
|
+
? new RedirectError(response, errObj)
|
|
306
|
+
: response.status < 500
|
|
307
|
+
? new ClientError(response, errObj)
|
|
308
|
+
: new ServerError(response, errObj);
|
|
309
309
|
},
|
|
310
310
|
|
|
311
311
|
onmessage(event) {
|
|
@@ -357,12 +357,12 @@ export default class HttpRequester {
|
|
|
357
357
|
errObj.status < 200
|
|
358
358
|
? new InformationalError(serverResponse, errObj)
|
|
359
359
|
: errObj.status < 300
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
360
|
+
? new SuccessError(serverResponse, errObj)
|
|
361
|
+
: errObj.status < 400
|
|
362
|
+
? new RedirectError(serverResponse, errObj)
|
|
363
|
+
: errObj.status < 500
|
|
364
|
+
? new ClientError(serverResponse, errObj)
|
|
365
|
+
: new ServerError(serverResponse, errObj),
|
|
366
366
|
);
|
|
367
367
|
} else if (event.event === 'finished') {
|
|
368
368
|
responsesDone = true;
|
package/src/Nymph.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import Entity, { type EntityInstanceType } from './Entity';
|
|
1
|
+
import Entity, { type EntityInstanceType } from './Entity.js';
|
|
2
2
|
import type {
|
|
3
3
|
EntityConstructor,
|
|
4
4
|
EntityInterface,
|
|
5
5
|
EntityJson,
|
|
6
6
|
ServerCallResponse,
|
|
7
7
|
ServerCallStaticResponse,
|
|
8
|
-
} from './Entity.types';
|
|
9
|
-
import EntityWeakCache from './EntityWeakCache';
|
|
10
|
-
import type { AbortableAsyncIterator } from './HttpRequester';
|
|
11
|
-
import HttpRequester from './HttpRequester';
|
|
8
|
+
} from './Entity.types.js';
|
|
9
|
+
import EntityWeakCache from './EntityWeakCache.js';
|
|
10
|
+
import type { AbortableAsyncIterator } from './HttpRequester.js';
|
|
11
|
+
import HttpRequester from './HttpRequester.js';
|
|
12
12
|
import type {
|
|
13
13
|
EventType,
|
|
14
14
|
NymphOptions,
|
|
@@ -16,9 +16,12 @@ import type {
|
|
|
16
16
|
RequestCallback,
|
|
17
17
|
ResponseCallback,
|
|
18
18
|
Selector,
|
|
19
|
-
} from './Nymph.types';
|
|
20
|
-
import type PubSub from './PubSub';
|
|
21
|
-
import {
|
|
19
|
+
} from './Nymph.types.js';
|
|
20
|
+
import type PubSub from './PubSub.js';
|
|
21
|
+
import {
|
|
22
|
+
entitiesToReferences,
|
|
23
|
+
entityConstructorsToClassNames,
|
|
24
|
+
} from './utils.js';
|
|
22
25
|
|
|
23
26
|
let requester: HttpRequester;
|
|
24
27
|
|
|
@@ -586,14 +589,14 @@ export default class Nymph {
|
|
|
586
589
|
callback: T extends 'request'
|
|
587
590
|
? RequestCallback
|
|
588
591
|
: T extends 'response'
|
|
589
|
-
|
|
590
|
-
|
|
592
|
+
? ResponseCallback
|
|
593
|
+
: never,
|
|
591
594
|
) {
|
|
592
595
|
const prop = (event + 'Callbacks') as T extends 'request'
|
|
593
596
|
? 'requestCallbacks'
|
|
594
597
|
: T extends 'request'
|
|
595
|
-
|
|
596
|
-
|
|
598
|
+
? 'responseCallbacks'
|
|
599
|
+
: never;
|
|
597
600
|
if (!(prop in this)) {
|
|
598
601
|
throw new Error('Invalid event type.');
|
|
599
602
|
}
|
|
@@ -607,14 +610,14 @@ export default class Nymph {
|
|
|
607
610
|
callback: T extends 'request'
|
|
608
611
|
? RequestCallback
|
|
609
612
|
: T extends 'response'
|
|
610
|
-
|
|
611
|
-
|
|
613
|
+
? ResponseCallback
|
|
614
|
+
: never,
|
|
612
615
|
) {
|
|
613
616
|
const prop = (event + 'Callbacks') as T extends 'request'
|
|
614
617
|
? 'requestCallbacks'
|
|
615
618
|
: T extends 'request'
|
|
616
|
-
|
|
617
|
-
|
|
619
|
+
? 'responseCallbacks'
|
|
620
|
+
: never;
|
|
618
621
|
if (!(prop in this)) {
|
|
619
622
|
return false;
|
|
620
623
|
}
|
package/src/Nymph.types.ts
CHANGED
package/src/PubSub.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import Nymph, { InvalidRequestError } from './Nymph';
|
|
2
|
-
import type { NymphOptions, Options, Selector } from './Nymph.types';
|
|
3
|
-
import type { EntityInstanceType } from './Entity';
|
|
1
|
+
import Nymph, { InvalidRequestError } from './Nymph.js';
|
|
2
|
+
import type { NymphOptions, Options, Selector } from './Nymph.types.js';
|
|
3
|
+
import type { EntityInstanceType } from './Entity.js';
|
|
4
4
|
import type {
|
|
5
5
|
EntityConstructor,
|
|
6
6
|
EntityInterface,
|
|
7
7
|
EntityJson,
|
|
8
|
-
} from './Entity.types';
|
|
8
|
+
} from './Entity.types.js';
|
|
9
9
|
import type {
|
|
10
10
|
PubSubCallbacks,
|
|
11
11
|
PubSubConnectCallback,
|
|
@@ -17,9 +17,9 @@ import type {
|
|
|
17
17
|
PubSubErrorCallback,
|
|
18
18
|
PubSubSubscribable,
|
|
19
19
|
PubSubUpdate,
|
|
20
|
-
} from './PubSub.types';
|
|
21
|
-
import { entityConstructorsToClassNames } from './utils';
|
|
22
|
-
import { ClientError } from './HttpRequester';
|
|
20
|
+
} from './PubSub.types.js';
|
|
21
|
+
import { entityConstructorsToClassNames } from './utils.js';
|
|
22
|
+
import { ClientError } from './HttpRequester.js';
|
|
23
23
|
|
|
24
24
|
export default class PubSub {
|
|
25
25
|
private nymph: Nymph;
|
|
@@ -736,18 +736,18 @@ export default class PubSub {
|
|
|
736
736
|
callback: T extends 'connect'
|
|
737
737
|
? PubSubConnectCallback
|
|
738
738
|
: T extends 'disconnect'
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
739
|
+
? PubSubDisconnectCallback
|
|
740
|
+
: T extends 'error'
|
|
741
|
+
? PubSubErrorCallback
|
|
742
|
+
: never,
|
|
743
743
|
) {
|
|
744
744
|
const prop = (event + 'Callbacks') as T extends 'connect'
|
|
745
745
|
? 'connectCallbacks'
|
|
746
746
|
: T extends 'disconnect'
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
747
|
+
? 'disconnectCallbacks'
|
|
748
|
+
: T extends 'error'
|
|
749
|
+
? 'errorCallbacks'
|
|
750
|
+
: never;
|
|
751
751
|
if (!(prop in this)) {
|
|
752
752
|
throw new Error('Invalid event type.');
|
|
753
753
|
}
|
|
@@ -761,18 +761,18 @@ export default class PubSub {
|
|
|
761
761
|
callback: T extends 'connect'
|
|
762
762
|
? PubSubConnectCallback
|
|
763
763
|
: T extends 'disconnect'
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
764
|
+
? PubSubDisconnectCallback
|
|
765
|
+
: T extends 'error'
|
|
766
|
+
? PubSubErrorCallback
|
|
767
|
+
: never,
|
|
768
768
|
) {
|
|
769
769
|
const prop = (event + 'Callbacks') as T extends 'connect'
|
|
770
770
|
? 'connectCallbacks'
|
|
771
771
|
: T extends 'disconnect'
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
772
|
+
? 'disconnectCallbacks'
|
|
773
|
+
: T extends 'error'
|
|
774
|
+
? 'errorCallbacks'
|
|
775
|
+
: never;
|
|
776
776
|
if (!(prop in this)) {
|
|
777
777
|
return false;
|
|
778
778
|
}
|
package/src/PubSub.types.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EntityJson } from './Entity.types';
|
|
2
|
-
import { PubSubSubscription } from './PubSub';
|
|
1
|
+
import { EntityJson } from './Entity.types.js';
|
|
2
|
+
import { PubSubSubscription } from './PubSub.js';
|
|
3
3
|
|
|
4
4
|
export type PubSubResolveCallback<T> = (arg: T, event?: string) => void;
|
|
5
5
|
export type PubSubRejectCallback = (err: any) => void;
|
package/src/entityRefresh.ts
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
export * from './Entity';
|
|
2
|
-
import Entity from './Entity';
|
|
1
|
+
export * from './Entity.js';
|
|
2
|
+
import Entity from './Entity.js';
|
|
3
3
|
export { Entity };
|
|
4
4
|
|
|
5
|
-
export * from './Entity.types';
|
|
5
|
+
export * from './Entity.types.js';
|
|
6
6
|
|
|
7
|
-
export * from './HttpRequester';
|
|
7
|
+
export * from './HttpRequester.js';
|
|
8
8
|
|
|
9
|
-
export * from './Nymph';
|
|
10
|
-
import Nymph from './Nymph';
|
|
9
|
+
export * from './Nymph.js';
|
|
10
|
+
import Nymph from './Nymph.js';
|
|
11
11
|
export { Nymph };
|
|
12
12
|
|
|
13
|
-
export * from './Nymph.types';
|
|
13
|
+
export * from './Nymph.types.js';
|
|
14
14
|
|
|
15
|
-
export * from './PubSub';
|
|
16
|
-
import PubSub from './PubSub';
|
|
15
|
+
export * from './PubSub.js';
|
|
16
|
+
import PubSub from './PubSub.js';
|
|
17
17
|
export { PubSub };
|
|
18
18
|
|
|
19
|
-
export * from './PubSub.types';
|
|
19
|
+
export * from './PubSub.types.js';
|
package/src/utils.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { EntityReference } from './Entity.types';
|
|
2
|
-
import Nymph from './Nymph';
|
|
3
|
-
import Entity from './Entity';
|
|
1
|
+
import { EntityReference } from './Entity.types.js';
|
|
2
|
+
import Nymph from './Nymph.js';
|
|
3
|
+
import Entity from './Entity.js';
|
|
4
4
|
|
|
5
5
|
export function uniqueStrings(array: string[]) {
|
|
6
6
|
const obj: { [k: string]: true } = {};
|
package/tsconfig.json
CHANGED
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
"extends": "@tsconfig/recommended/tsconfig.json",
|
|
3
3
|
|
|
4
4
|
"compilerOptions": {
|
|
5
|
-
"
|
|
6
|
-
"
|
|
5
|
+
"module": "ES2022",
|
|
6
|
+
"moduleResolution": "node",
|
|
7
|
+
"lib": ["DOM", "ES2022"],
|
|
8
|
+
"target": "ES2022",
|
|
7
9
|
"noImplicitAny": true,
|
|
8
10
|
"removeComments": false,
|
|
9
11
|
"sourceMap": true,
|
|
10
|
-
"outDir": "
|
|
12
|
+
"outDir": "dist",
|
|
11
13
|
"resolveJsonModule": true,
|
|
12
14
|
"rootDir": "src/",
|
|
13
15
|
"declaration": true
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Lodash <https://lodash.com/>
|
|
4
|
-
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
|
|
5
|
-
* Released under MIT license <https://lodash.com/license>
|
|
6
|
-
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
|
7
|
-
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
|
8
|
-
*/
|