@nymphjs/client 1.0.0-beta.13 → 1.0.0-beta.130

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 (72) hide show
  1. package/CHANGELOG.md +546 -0
  2. package/README.md +12 -8
  3. package/asyncitertest.js +53 -0
  4. package/dist/Entity.d.ts +156 -0
  5. package/{lib → dist}/Entity.js +244 -118
  6. package/dist/Entity.js.map +1 -0
  7. package/dist/Entity.types.d.ts +216 -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/{lib → dist}/HttpRequester.d.ts +18 -4
  13. package/dist/HttpRequester.js +365 -0
  14. package/dist/HttpRequester.js.map +1 -0
  15. package/{lib → dist}/Nymph.d.ts +48 -11
  16. package/{lib → dist}/Nymph.js +172 -56
  17. package/dist/Nymph.js.map +1 -0
  18. package/dist/Nymph.types.d.ts +227 -0
  19. package/dist/Nymph.types.js +45 -0
  20. package/dist/Nymph.types.js.map +1 -0
  21. package/{lib → dist}/PubSub.d.ts +16 -10
  22. package/{lib → dist}/PubSub.js +207 -135
  23. package/dist/PubSub.js.map +1 -0
  24. package/{lib → dist}/PubSub.types.d.ts +19 -6
  25. package/dist/PubSub.types.js +2 -0
  26. package/{lib → dist}/entityRefresh.d.ts +1 -1
  27. package/{lib → dist}/entityRefresh.js +21 -13
  28. package/dist/entityRefresh.js.map +1 -0
  29. package/dist/index.d.ts +13 -0
  30. package/dist/index.js +13 -2
  31. package/dist/index.js.map +1 -1
  32. package/{lib → dist}/utils.d.ts +2 -1
  33. package/dist/utils.js +145 -0
  34. package/dist/utils.js.map +1 -0
  35. package/jest.config.js +31 -5
  36. package/package.json +36 -32
  37. package/src/Entity.ts +229 -129
  38. package/src/Entity.types.ts +37 -57
  39. package/src/EntityWeakCache.ts +8 -6
  40. package/src/HttpRequester.ts +268 -31
  41. package/src/Nymph.ts +203 -96
  42. package/src/Nymph.types.ts +98 -2
  43. package/src/PubSub.ts +264 -181
  44. package/src/PubSub.types.ts +33 -19
  45. package/src/entityRefresh.ts +6 -6
  46. package/src/index.ts +10 -10
  47. package/src/utils.ts +67 -14
  48. package/tsconfig.json +7 -4
  49. package/typedoc.json +4 -0
  50. package/dist/index.js.LICENSE.txt +0 -8
  51. package/lib/Entity.d.ts +0 -51
  52. package/lib/Entity.js.map +0 -1
  53. package/lib/Entity.types.d.ts +0 -65
  54. package/lib/Entity.types.js +0 -3
  55. package/lib/EntityWeakCache.js.map +0 -1
  56. package/lib/HttpRequester.js +0 -190
  57. package/lib/HttpRequester.js.map +0 -1
  58. package/lib/Nymph.js.map +0 -1
  59. package/lib/Nymph.types.d.ts +0 -98
  60. package/lib/Nymph.types.js +0 -3
  61. package/lib/Nymph.types.js.map +0 -1
  62. package/lib/PubSub.js.map +0 -1
  63. package/lib/PubSub.types.js +0 -3
  64. package/lib/entityRefresh.js.map +0 -1
  65. package/lib/index.d.ts +0 -13
  66. package/lib/index.js +0 -34
  67. package/lib/index.js.map +0 -1
  68. package/lib/utils.js +0 -86
  69. package/lib/utils.js.map +0 -1
  70. package/webpack.config.js +0 -28
  71. /package/{lib → dist}/Entity.types.js.map +0 -0
  72. /package/{lib → dist}/PubSub.types.js.map +0 -0
@@ -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;
@@ -7,29 +7,43 @@ export type PubSubCountCallback = (count: number) => void;
7
7
  export type PubSubCallbacks<T> = [
8
8
  PubSubResolveCallback<T> | undefined,
9
9
  PubSubRejectCallback | undefined,
10
- PubSubCountCallback | undefined
10
+ PubSubCountCallback | undefined,
11
11
  ];
12
- export type PubSubEventType = 'connect' | 'disconnect';
12
+ export type PubSubEventType = 'connect' | 'disconnect' | 'error';
13
13
  export type PubSubConnectCallback = () => void;
14
14
  export type PubSubDisconnectCallback = () => void;
15
+ /**
16
+ * The error event is for unknown errors. Query errors fire their own reject
17
+ * callbacks.
18
+ */
19
+ export type PubSubErrorCallback = (err: any) => void;
20
+ export type PubSubUpdateRemoved = {
21
+ query: string;
22
+ removed: string;
23
+ };
24
+ export type PubSubUpdateAdded = {
25
+ query: string;
26
+ added: string;
27
+ data: EntityJson;
28
+ };
29
+ export type PubSubUpdateUpdated = {
30
+ query: string;
31
+ updated: string;
32
+ data: EntityJson;
33
+ };
34
+ export type PubSubUpdateMultiple = {
35
+ query: string;
36
+ multiple: true;
37
+ messages: (PubSubUpdateRemoved | PubSubUpdateAdded | PubSubUpdateUpdated)[];
38
+ };
15
39
  export type PubSubUpdate<T> =
16
40
  | T
17
- | {
18
- query: string;
19
- removed: string;
20
- }
21
- | {
22
- query: string;
23
- added: string;
24
- data: EntityJson;
25
- }
26
- | {
27
- query: string;
28
- updated: string;
29
- data: EntityJson;
30
- };
41
+ | PubSubUpdateRemoved
42
+ | PubSubUpdateAdded
43
+ | PubSubUpdateUpdated
44
+ | PubSubUpdateMultiple;
31
45
  export type PubSubSubscribable<T> = (
32
46
  resolve?: PubSubResolveCallback<T> | undefined,
33
47
  reject?: PubSubRejectCallback | undefined,
34
- count?: PubSubCountCallback | undefined
48
+ count?: PubSubCountCallback | undefined,
35
49
  ) => PubSubSubscription<T>;
@@ -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) {
@@ -14,7 +14,7 @@ export function saveEntities(entity: Entity) {
14
14
 
15
15
  const addEntitiesToObject = (
16
16
  item: any,
17
- entitiesObject: { [k: string]: Entity }
17
+ entitiesObject: { [k: string]: Entity },
18
18
  ) => {
19
19
  // @ts-ignore: Accessing a private property.
20
20
  if (item instanceof Entity && !item.$isASleepingReference) {
@@ -37,7 +37,7 @@ const addEntitiesToObject = (
37
37
  // after the restore.
38
38
  export function restoreEntities(
39
39
  entity: Entity,
40
- savedEntities: { [k: string]: Entity }
40
+ savedEntities: { [k: string]: Entity },
41
41
  ) {
42
42
  let data: { containsSleepingReference: boolean } = {
43
43
  containsSleepingReference: false,
@@ -49,7 +49,7 @@ export function restoreEntities(
49
49
  entity.$dataStore[key] = retoreEntitiesFromObject(
50
50
  value,
51
51
  savedEntities,
52
- data
52
+ data,
53
53
  );
54
54
  }
55
55
 
@@ -59,7 +59,7 @@ export function restoreEntities(
59
59
  const retoreEntitiesFromObject = <T extends any>(
60
60
  item: T,
61
61
  entitiesObject: { [k: string]: Entity },
62
- data: { containsSleepingReference: boolean }
62
+ data: { containsSleepingReference: boolean },
63
63
  ): T => {
64
64
  if (item instanceof Entity) {
65
65
  // @ts-ignore: Accessing a private property.
@@ -78,7 +78,7 @@ const retoreEntitiesFromObject = <T extends any>(
78
78
  } else if (Array.isArray(item)) {
79
79
  // Recurse into lower arrays.
80
80
  return item.map((item) =>
81
- retoreEntitiesFromObject(item, entitiesObject, data)
81
+ retoreEntitiesFromObject(item, entitiesObject, data),
82
82
  ) as T;
83
83
  } else if (item instanceof Object) {
84
84
  for (let [key, value] of Object.entries(item)) {
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 } = {};
@@ -11,13 +11,14 @@ export function uniqueStrings(array: string[]) {
11
11
  }
12
12
 
13
13
  export function entityConstructorsToClassNames(item: any): any {
14
- if (
15
- typeof item === 'function' &&
16
- item.prototype instanceof Entity &&
17
- typeof item.class === 'string'
18
- ) {
19
- // Convert entity classes to strings.
20
- return item.class;
14
+ if (item == null) {
15
+ return item;
16
+ } else if (typeof item === 'function' && item.prototype instanceof Entity) {
17
+ // Convert entity classes to class references.
18
+ return ['nymph_class_reference', item.class];
19
+ } else if (item instanceof Entity) {
20
+ // Don't touch entities.
21
+ return item;
21
22
  } else if (Array.isArray(item)) {
22
23
  // Recurse into lower arrays.
23
24
  return item.map((entry) => entityConstructorsToClassNames(entry));
@@ -32,10 +33,52 @@ export function entityConstructorsToClassNames(item: any): any {
32
33
  return item;
33
34
  }
34
35
 
36
+ export function classNamesToEntityConstructors<T extends any>(
37
+ nymph: Nymph,
38
+ item: T,
39
+ ): T {
40
+ if (item == null) {
41
+ return item;
42
+ } else if (
43
+ Array.isArray(item) &&
44
+ item.length === 2 &&
45
+ item[0] === 'nymph_class_reference' &&
46
+ typeof item[1] === 'string'
47
+ ) {
48
+ // Convert class references to entity classes.
49
+ const EntityClass = nymph.getEntityClass(item[1]);
50
+ return EntityClass as T;
51
+ } else if (item instanceof Entity) {
52
+ // Don't touch entities.
53
+ return item;
54
+ } else if (typeof item === 'function' && item.prototype instanceof Entity) {
55
+ // Don't touch Entity classes.
56
+ return item;
57
+ } else if (Array.isArray(item)) {
58
+ // Recurse into lower arrays.
59
+ return item.map((entry) =>
60
+ classNamesToEntityConstructors(nymph, entry),
61
+ ) as T;
62
+ } else if (item instanceof Object) {
63
+ let newObj = Object.create(item);
64
+ for (let [key, value] of Object.entries(item)) {
65
+ newObj[key] = classNamesToEntityConstructors(nymph, value);
66
+ }
67
+ return newObj;
68
+ }
69
+ // Not an entity or array, just return it.
70
+ return item;
71
+ }
72
+
35
73
  export function entitiesToReferences(item: any): any {
36
- if (item instanceof Entity && typeof item.$toReference === 'function') {
74
+ if (item == null) {
75
+ return item;
76
+ } else if (item instanceof Entity) {
37
77
  // Convert entities to references.
38
78
  return item.$toReference();
79
+ } else if (typeof item === 'function' && item.prototype instanceof Entity) {
80
+ // Don't touch Entity classes.
81
+ return item;
39
82
  } else if (Array.isArray(item)) {
40
83
  // Recurse into lower arrays.
41
84
  return item.map((entry) => entitiesToReferences(entry));
@@ -51,7 +94,9 @@ export function entitiesToReferences(item: any): any {
51
94
  }
52
95
 
53
96
  export function referencesToEntities(item: any, nymph: Nymph): any {
54
- if (Array.isArray(item)) {
97
+ if (item == null) {
98
+ return item;
99
+ } else if (Array.isArray(item)) {
55
100
  // Check if it's a reference.
56
101
  if (item[0] === 'nymph_entity_reference') {
57
102
  try {
@@ -64,10 +109,18 @@ export function referencesToEntities(item: any, nymph: Nymph): any {
64
109
  // Recurse into lower arrays.
65
110
  return item.map((item) => referencesToEntities(item, nymph));
66
111
  }
67
- } else if (Entity && item instanceof Object && !(item instanceof Entity)) {
112
+ } else if (item instanceof Entity) {
113
+ // Don't touch entities.
114
+ return item;
115
+ } else if (typeof item === 'function' && item.prototype instanceof Entity) {
116
+ // Don't touch Entity classes.
117
+ return item;
118
+ } else if (item instanceof Object) {
119
+ let newObj = Object.create(item);
68
120
  for (let [key, value] of Object.entries(item)) {
69
- item[key] = referencesToEntities(value, nymph);
121
+ newObj[key] = referencesToEntities(value, nymph);
70
122
  }
123
+ return newObj;
71
124
  }
72
125
  // Not an array, just return it.
73
126
  return item;
package/tsconfig.json CHANGED
@@ -2,12 +2,15 @@
2
2
  "extends": "@tsconfig/recommended/tsconfig.json",
3
3
 
4
4
  "compilerOptions": {
5
- "lib": ["DOM", "ES2021"],
6
- "target": "ES2021",
5
+ "types": ["jest"],
6
+ "module": "nodenext",
7
+ "moduleResolution": "nodenext",
8
+ "lib": ["DOM", "es2024"],
9
+ "target": "es2024",
7
10
  "noImplicitAny": true,
8
- "removeComments": true,
11
+ "removeComments": false,
9
12
  "sourceMap": true,
10
- "outDir": "lib",
13
+ "outDir": "dist",
11
14
  "resolveJsonModule": true,
12
15
  "rootDir": "src/",
13
16
  "declaration": true
package/typedoc.json ADDED
@@ -0,0 +1,4 @@
1
+ {
2
+ "extends": ["../../typedoc.base.json"],
3
+ "entryPoints": ["src/index.ts"]
4
+ }
@@ -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
- */
package/lib/Entity.d.ts DELETED
@@ -1,51 +0,0 @@
1
- import type Nymph from './Nymph';
2
- import { EntityConstructor, EntityData, EntityInterface, EntityJson, EntityPatch, EntityReference } from './Entity.types';
3
- export default class Entity<T extends EntityData = EntityData> implements EntityInterface {
4
- static nymph: Nymph;
5
- static class: string;
6
- $nymph: Nymph;
7
- guid: string | null;
8
- cdate: number | null;
9
- mdate: number | null;
10
- tags: string[];
11
- protected $originalTags: string[];
12
- protected $dirty: {
13
- [k: string]: boolean;
14
- };
15
- protected $dataHandler: Object;
16
- protected $dataStore: T;
17
- protected $data: T;
18
- protected $isASleepingReference: boolean;
19
- protected $sleepingReference: EntityReference | null;
20
- protected $readyPromise: Promise<Entity<T>> | null;
21
- constructor(guid?: string);
22
- static factory(guid?: string): Promise<Entity<EntityData>>;
23
- static factorySync(guid?: string): Entity<EntityData>;
24
- static factoryReference(reference: EntityReference): Entity<EntityData>;
25
- static serverCallStatic(method: string, params: Iterable<any>): Promise<any>;
26
- toJSON(): EntityJson<EntityConstructor>;
27
- $init(entityJson: EntityJson | null): Entity<T>;
28
- $addTag(...tags: string[]): void;
29
- $arraySearch(array: any[], strict?: boolean): number;
30
- $delete(): Promise<boolean>;
31
- $equals(object: any): boolean;
32
- $getPatch(): EntityPatch;
33
- $hasTag(...tags: string[]): boolean;
34
- $inArray(array: any[], strict?: boolean): boolean;
35
- $is(object: any): boolean;
36
- $patch(): Promise<boolean>;
37
- $ready(): Promise<Entity<T>>;
38
- $readyAll(level?: number): Promise<Entity<T>>;
39
- protected $referenceSleep(reference: EntityReference): void;
40
- $refresh(): Promise<boolean | 0>;
41
- $removeTag(...tags: string[]): void;
42
- $save(): Promise<boolean>;
43
- $serverCall(method: string, params: Iterable<any>, stateless?: boolean): Promise<any>;
44
- $toReference(): EntityReference | EntityInterface;
45
- }
46
- export declare class EntityIsSleepingReferenceError extends Error {
47
- constructor(message: string);
48
- }
49
- export declare class InvalidStateError extends Error {
50
- constructor(message: string);
51
- }
package/lib/Entity.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../src/Entity.ts"],"names":[],"mappings":"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"}
@@ -1,65 +0,0 @@
1
- import type Nymph from './Nymph';
2
- export type ServerCallResponse = {
3
- return: any;
4
- entity?: EntityJson;
5
- };
6
- export type ServerCallStaticResponse = any;
7
- export type EntityReference = ['nymph_entity_reference', string, string];
8
- export type EntityData = {
9
- [k: string]: any;
10
- };
11
- export type SerializedEntityData = {
12
- [k: string]: string;
13
- };
14
- export type EntityJson<T extends EntityConstructor = EntityConstructor> = {
15
- class: T['class'];
16
- guid: string | null;
17
- cdate: number | null;
18
- mdate: number | null;
19
- tags: string[];
20
- data: EntityData;
21
- };
22
- export type EntityPatch = {
23
- class: string;
24
- guid: string;
25
- mdate: number | null;
26
- set: EntityData;
27
- unset: string[];
28
- addTags: string[];
29
- removeTags: string[];
30
- };
31
- export interface DataObjectInterface {
32
- $arraySearch(array: any[], strict?: boolean): number;
33
- $delete(): Promise<boolean>;
34
- $equals(object: any): boolean;
35
- $inArray(array: any[], strict?: boolean): boolean;
36
- $is(object: any): boolean;
37
- $patch(): Promise<boolean>;
38
- $refresh(): Promise<boolean | 0>;
39
- $save(): Promise<boolean>;
40
- [k: string]: any;
41
- }
42
- export interface EntityInterface extends DataObjectInterface {
43
- $nymph: Nymph;
44
- guid: string | null;
45
- cdate: number | null;
46
- mdate: number | null;
47
- tags: string[];
48
- $addTag(...tags: string[]): void;
49
- $getPatch(): EntityPatch;
50
- $hasTag(...tags: string[]): boolean;
51
- $init(entityJson: EntityJson | null): EntityInterface;
52
- $ready(): Promise<EntityInterface>;
53
- $readyAll(level?: number): Promise<EntityInterface>;
54
- $removeTag(...tags: string[]): void;
55
- $serverCall(method: string, params: Iterable<any>, stateless: boolean): Promise<any>;
56
- $toReference(): EntityReference | EntityInterface;
57
- }
58
- export type EntityConstructor = (new (...args: any[]) => EntityInterface) & {
59
- nymph: Nymph;
60
- class: string;
61
- factory(guid?: string): Promise<EntityInterface>;
62
- factorySync(guid?: string): EntityInterface;
63
- factoryReference(reference: EntityReference): EntityInterface;
64
- serverCallStatic(method: string, params: Iterable<any>): Promise<any>;
65
- };
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=Entity.types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EntityWeakCache.js","sourceRoot":"","sources":["../src/EntityWeakCache.ts"],"names":[],"mappings":";;AAEA,MAAqB,eAAe;IAApC;QACU,eAAU,GAChB,IAAI,OAAO,EAAE,CAAC;IA2BlB,CAAC;IAzBC,GAAG,CAAC,WAA8B,EAAE,IAAY;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAClD,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,EAAE;YAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE;gBACtC,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;aACxB;iBAAM;gBACL,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;aACvB;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,WAA8B,EAAE,MAAuB;QACzD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAChB,OAAO;SACR;QAGD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC3C,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IAClC,CAAC;CACF;AA7BD,kCA6BC"}
@@ -1,190 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ServerError = exports.ClientError = exports.RedirectError = exports.SuccessError = exports.InformationalError = exports.HttpError = exports.InvalidResponseError = void 0;
4
- class HttpRequester {
5
- static makeUrl(url, data) {
6
- if (!data) {
7
- return url;
8
- }
9
- for (let [key, value] of Object.entries(data)) {
10
- url =
11
- url +
12
- (url.indexOf('?') !== -1 ? '&' : '?') +
13
- encodeURIComponent(key) +
14
- '=' +
15
- encodeURIComponent(JSON.stringify(value));
16
- }
17
- return url;
18
- }
19
- constructor(ponyFetch) {
20
- this.xsrfToken = null;
21
- this.requestCallbacks = [];
22
- this.responseCallbacks = [];
23
- this.fetch = ponyFetch ? ponyFetch : (...args) => fetch(...args);
24
- }
25
- on(event, callback) {
26
- const prop = (event + 'Callbacks');
27
- if (!(prop in this)) {
28
- throw new Error('Invalid event type.');
29
- }
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
- const i = this[prop].indexOf(callback);
39
- if (i > -1) {
40
- this[prop].splice(i, 1);
41
- }
42
- return true;
43
- }
44
- setXsrfToken(xsrfToken) {
45
- this.xsrfToken = xsrfToken;
46
- }
47
- async GET(opt) {
48
- return await this._httpRequest('GET', opt);
49
- }
50
- async POST(opt) {
51
- return await this._httpRequest('POST', opt);
52
- }
53
- async PUT(opt) {
54
- return await this._httpRequest('PUT', opt);
55
- }
56
- async PATCH(opt) {
57
- return await this._httpRequest('PATCH', opt);
58
- }
59
- async DELETE(opt) {
60
- return await this._httpRequest('DELETE', opt);
61
- }
62
- async _httpRequest(method, opt) {
63
- const dataString = JSON.stringify(opt.data);
64
- let url = opt.url;
65
- if (method === 'GET') {
66
- url = HttpRequester.makeUrl(opt.url, opt.data);
67
- }
68
- const options = {
69
- method,
70
- headers: {},
71
- credentials: 'include',
72
- };
73
- if (method !== 'GET' && opt.data) {
74
- options.headers['Content-Type'] =
75
- 'application/json';
76
- options.body = dataString;
77
- }
78
- for (let i = 0; i < this.requestCallbacks.length; i++) {
79
- this.requestCallbacks[i] && this.requestCallbacks[i](this, url, options);
80
- }
81
- if (this.xsrfToken !== null) {
82
- options.headers['X-Xsrf-Token'] =
83
- this.xsrfToken;
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
- }
142
- exports.default = HttpRequester;
143
- class InvalidResponseError extends Error {
144
- constructor(message) {
145
- super(message);
146
- this.name = 'InvalidResponseError';
147
- }
148
- }
149
- exports.InvalidResponseError = InvalidResponseError;
150
- class HttpError extends Error {
151
- constructor(name, response, errObj) {
152
- super(errObj.textStatus);
153
- this.name = name;
154
- this.status = response.status;
155
- this.statusText = response.statusText;
156
- Object.assign(this, errObj);
157
- }
158
- }
159
- exports.HttpError = HttpError;
160
- class InformationalError extends HttpError {
161
- constructor(response, errObj) {
162
- super('InformationalError', response, errObj);
163
- }
164
- }
165
- exports.InformationalError = InformationalError;
166
- class SuccessError extends HttpError {
167
- constructor(response, errObj) {
168
- super('SuccessError', response, errObj);
169
- }
170
- }
171
- exports.SuccessError = SuccessError;
172
- class RedirectError extends HttpError {
173
- constructor(response, errObj) {
174
- super('RedirectError', response, errObj);
175
- }
176
- }
177
- exports.RedirectError = RedirectError;
178
- class ClientError extends HttpError {
179
- constructor(response, errObj) {
180
- super('ClientError', response, errObj);
181
- }
182
- }
183
- exports.ClientError = ClientError;
184
- class ServerError extends HttpError {
185
- constructor(response, errObj) {
186
- super('ServerError', response, errObj);
187
- }
188
- }
189
- exports.ServerError = ServerError;
190
- //# sourceMappingURL=HttpRequester.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HttpRequester.js","sourceRoot":"","sources":["../src/HttpRequester.ts"],"names":[],"mappings":"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"}