@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.
Files changed (64) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +3 -3
  3. package/{lib → dist}/Entity.d.ts +4 -3
  4. package/{lib → dist}/Entity.js +82 -69
  5. package/dist/Entity.js.map +1 -0
  6. package/{lib → dist}/Entity.types.d.ts +20 -2
  7. package/dist/Entity.types.js +2 -0
  8. package/{lib → dist}/EntityWeakCache.d.ts +1 -1
  9. package/{lib → dist}/EntityWeakCache.js +2 -7
  10. package/dist/EntityWeakCache.js.map +1 -0
  11. package/{lib → dist}/HttpRequester.js +19 -29
  12. package/dist/HttpRequester.js.map +1 -0
  13. package/{lib → dist}/Nymph.d.ts +6 -6
  14. package/{lib → dist}/Nymph.js +43 -48
  15. package/dist/Nymph.js.map +1 -0
  16. package/{lib → dist}/Nymph.types.d.ts +1 -1
  17. package/dist/Nymph.types.js +2 -0
  18. package/{lib → dist}/PubSub.d.ts +5 -5
  19. package/{lib → dist}/PubSub.js +29 -26
  20. package/dist/PubSub.js.map +1 -0
  21. package/{lib → dist}/PubSub.types.d.ts +2 -2
  22. package/dist/PubSub.types.js +2 -0
  23. package/{lib → dist}/entityRefresh.d.ts +1 -1
  24. package/{lib → dist}/entityRefresh.js +5 -13
  25. package/dist/entityRefresh.js.map +1 -0
  26. package/dist/index.d.ts +13 -0
  27. package/dist/index.js +13 -2
  28. package/dist/index.js.map +1 -1
  29. package/{lib → dist}/utils.d.ts +1 -1
  30. package/{lib → dist}/utils.js +9 -20
  31. package/dist/utils.js.map +1 -0
  32. package/jest.config.js +11 -2
  33. package/package.json +20 -27
  34. package/src/Entity.ts +10 -7
  35. package/src/Entity.types.ts +20 -2
  36. package/src/EntityWeakCache.ts +1 -1
  37. package/src/HttpRequester.ts +34 -34
  38. package/src/Nymph.ts +19 -16
  39. package/src/Nymph.types.ts +1 -1
  40. package/src/PubSub.ts +23 -23
  41. package/src/PubSub.types.ts +2 -2
  42. package/src/entityRefresh.ts +1 -1
  43. package/src/index.ts +10 -10
  44. package/src/utils.ts +3 -3
  45. package/tsconfig.json +5 -3
  46. package/dist/index.js.LICENSE.txt +0 -8
  47. package/lib/Entity.js.map +0 -1
  48. package/lib/Entity.types.js +0 -3
  49. package/lib/EntityWeakCache.js.map +0 -1
  50. package/lib/HttpRequester.js.map +0 -1
  51. package/lib/Nymph.js.map +0 -1
  52. package/lib/Nymph.types.js +0 -3
  53. package/lib/PubSub.js.map +0 -1
  54. package/lib/PubSub.types.js +0 -3
  55. package/lib/entityRefresh.js.map +0 -1
  56. package/lib/index.d.ts +0 -13
  57. package/lib/index.js +0 -34
  58. package/lib/index.js.map +0 -1
  59. package/lib/utils.js.map +0 -1
  60. package/webpack.config.js +0 -28
  61. /package/{lib → dist}/Entity.types.js.map +0 -0
  62. /package/{lib → dist}/HttpRequester.d.ts +0 -0
  63. /package/{lib → dist}/Nymph.types.js.map +0 -0
  64. /package/{lib → dist}/PubSub.types.js.map +0 -0
@@ -1,4 +1,4 @@
1
- import Nymph from './Nymph';
1
+ import Nymph from './Nymph.js';
2
2
  export declare function uniqueStrings(array: string[]): string[];
3
3
  export declare function entityConstructorsToClassNames(item: any): any;
4
4
  export declare function entitiesToReferences(item: any): any;
@@ -1,21 +1,14 @@
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.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
- exports.uniqueStrings = uniqueStrings;
16
- function entityConstructorsToClassNames(item) {
9
+ export function entityConstructorsToClassNames(item) {
17
10
  if (typeof item === 'function' &&
18
- item.prototype instanceof Entity_1.default &&
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
- exports.entityConstructorsToClassNames = entityConstructorsToClassNames;
38
- function entitiesToReferences(item) {
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
- exports.entitiesToReferences = entitiesToReferences;
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 (Entity_1.default && item instanceof Object && !(item instanceof Entity_1.default)) {
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
- exports.referencesToEntities = referencesToEntities;
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
- module.exports = {
3
- preset: 'ts-jest',
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.80",
3
+ "version": "1.0.0-beta.82",
4
4
  "description": "Nymph.js - Client",
5
- "browser": "dist/index.js",
6
- "main": "lib/index.js",
7
- "types": "lib/index.d.ts",
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": "npm run clean:ts && npm run clean:js",
15
- "clean:ts": "test -d lib && rm -r lib || true",
16
- "clean:js": "test -d dist && rm -r dist || true",
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": "jest --detectOpenHandles",
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": "685cfbb55dbc7826d97af1f05c7cc32f06852a6f"
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> = T extends Entity<infer DataType>
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
  }
@@ -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
  *
@@ -1,4 +1,4 @@
1
- import { EntityConstructor, EntityInterface } from './Entity.types';
1
+ import { EntityConstructor, EntityInterface } from './Entity.types.js';
2
2
 
3
3
  export default class EntityWeakCache {
4
4
  private references: WeakMap<
@@ -61,18 +61,18 @@ export default class HttpRequester {
61
61
  callback: T extends 'request'
62
62
  ? HttpRequesterRequestCallback
63
63
  : T extends 'response'
64
- ? HttpRequesterResponseCallback
65
- : T extends 'iterator'
66
- ? HttpRequesterIteratorCallback
67
- : never,
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
- ? 'responseCallbacks'
73
- : T extends 'iterator'
74
- ? 'iteratorCallbacks'
75
- : never;
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
- ? HttpRequesterResponseCallback
90
- : T extends 'iterator'
91
- ? HttpRequesterIteratorCallback
92
- : never,
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
- ? 'responseCallbacks'
98
- : T extends 'iterator'
99
- ? 'iteratorCallbacks'
100
- : never;
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
- ? 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);
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
- ? 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);
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
- ? 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),
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 { entitiesToReferences, entityConstructorsToClassNames } from './utils';
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
- ? ResponseCallback
590
- : never,
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
- ? 'responseCallbacks'
596
- : never;
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
- ? ResponseCallback
611
- : never,
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
- ? 'responseCallbacks'
617
- : never;
619
+ ? 'responseCallbacks'
620
+ : never;
618
621
  if (!(prop in this)) {
619
622
  return false;
620
623
  }
@@ -1,4 +1,4 @@
1
- import { EntityConstructor, EntityInterface } from './Entity.types';
1
+ import { EntityConstructor, EntityInterface } from './Entity.types.js';
2
2
 
3
3
  export type NymphOptions = {
4
4
  /**
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
- ? PubSubDisconnectCallback
740
- : T extends 'error'
741
- ? PubSubErrorCallback
742
- : never,
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
- ? 'disconnectCallbacks'
748
- : T extends 'error'
749
- ? 'errorCallbacks'
750
- : never;
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
- ? PubSubDisconnectCallback
765
- : T extends 'error'
766
- ? PubSubErrorCallback
767
- : never,
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
- ? 'disconnectCallbacks'
773
- : T extends 'error'
774
- ? 'errorCallbacks'
775
- : never;
772
+ ? 'disconnectCallbacks'
773
+ : T extends 'error'
774
+ ? 'errorCallbacks'
775
+ : never;
776
776
  if (!(prop in this)) {
777
777
  return false;
778
778
  }
@@ -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;
@@ -1,4 +1,4 @@
1
- import Entity from './Entity';
1
+ import Entity from './Entity.js';
2
2
 
3
3
  // Save referenced entities in an entity's data.
4
4
  export function saveEntities(entity: Entity) {
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
- "lib": ["DOM", "ES2021"],
6
- "target": "ES2021",
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": "lib",
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
- */