@communecter/cocolight-api-client 1.0.54 → 1.0.56

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 (179) hide show
  1. package/dist/401.cocolight-api-client.browser.js +1 -0
  2. package/dist/401.cocolight-api-client.cjs +1 -0
  3. package/dist/401.cocolight-api-client.mjs.js +1 -0
  4. package/dist/588.cocolight-api-client.browser.js +1 -0
  5. package/dist/588.cocolight-api-client.cjs +1 -0
  6. package/dist/588.cocolight-api-client.mjs.js +1 -0
  7. package/dist/593.cocolight-api-client.browser.js +1 -0
  8. package/dist/593.cocolight-api-client.cjs +1 -0
  9. package/dist/593.cocolight-api-client.mjs.js +1 -0
  10. package/dist/839.cocolight-api-client.browser.js +1 -0
  11. package/dist/839.cocolight-api-client.cjs +1 -0
  12. package/dist/839.cocolight-api-client.mjs.js +1 -0
  13. package/dist/cocolight-api-client.browser.js +3 -3
  14. package/dist/cocolight-api-client.cjs +1 -1
  15. package/dist/cocolight-api-client.mjs.js +1 -1
  16. package/dist/cocolight-api-client.vite.mjs.js +1 -1
  17. package/dist/cocolight-api-client.vite.mjs.js.map +1 -1
  18. package/package.json +29 -17
  19. package/src/{Api.js → Api.ts} +85 -95
  20. package/src/{ApiClient.js → ApiClient.ts} +436 -247
  21. package/src/EJSONType.ts +103 -0
  22. package/src/api/{Badge.js → Badge.ts} +56 -45
  23. package/src/api/BaseEntity.ts +3890 -0
  24. package/src/api/Comment.ts +200 -0
  25. package/src/api/{EndpointApi.js → EndpointApi.ts} +363 -297
  26. package/src/api/EndpointApi.types.ts +4609 -0
  27. package/src/api/EntityRegistry.ts +203 -0
  28. package/src/api/Event.ts +332 -0
  29. package/src/api/News.ts +331 -0
  30. package/src/api/{Organization.js → Organization.ts} +155 -119
  31. package/src/api/{Poi.js → Poi.ts} +68 -60
  32. package/src/api/{Project.js → Project.ts} +150 -127
  33. package/src/api/{User.js → User.ts} +321 -256
  34. package/src/api/UserApi.ts +148 -0
  35. package/src/api/serverDataType/Comment.ts +88 -0
  36. package/src/api/serverDataType/Event.ts +80 -0
  37. package/src/api/serverDataType/News.ts +138 -0
  38. package/src/api/serverDataType/Organization.ts +80 -0
  39. package/src/api/serverDataType/Project.ts +71 -0
  40. package/src/api/serverDataType/User.ts +103 -0
  41. package/src/api/serverDataType/common.ts +80 -0
  42. package/src/endpoints.module.ts +2621 -0
  43. package/src/error.ts +86 -0
  44. package/src/index.ts +86 -0
  45. package/src/mixin/UserMixin.ts +4 -0
  46. package/src/types/api-responses.ts +217 -0
  47. package/src/types/entities.ts +22 -0
  48. package/src/types/error-guards.ts +230 -0
  49. package/src/types/index.ts +39 -0
  50. package/src/types/payloads.ts +21 -0
  51. package/src/types/transforms.ts +110 -0
  52. package/src/utils/{FileOfflineStorageStrategy.node.js → FileOfflineStorageStrategy.node.ts} +15 -12
  53. package/src/utils/{FileStorageStrategy.node.js → FileStorageStrategy.node.ts} +16 -39
  54. package/src/utils/MultiServerFileStorageStrategy.node.ts +67 -0
  55. package/src/utils/MultiServerTokenStorageStrategy.ts +139 -0
  56. package/src/utils/{OfflineClientManager.js → OfflineClientManager.ts} +82 -86
  57. package/src/utils/OfflineQueueStorageStrategy.ts +47 -0
  58. package/src/utils/TokenStorage.ts +77 -0
  59. package/src/utils/compat.ts +12 -0
  60. package/src/utils/createDefaultMultiServerTokenStorageStrategy.ts +35 -0
  61. package/src/utils/{createDefaultOfflineStrategy.js → createDefaultOfflineStrategy.ts} +8 -3
  62. package/src/utils/createDefaultTokenStorageStrategy.ts +33 -0
  63. package/src/utils/{reactive.js → reactive.ts} +49 -40
  64. package/src/utils/stream-utils.node.ts +12 -0
  65. package/types/Api.d.ts +38 -82
  66. package/types/Api.d.ts.map +1 -0
  67. package/types/ApiClient.d.ts +244 -184
  68. package/types/ApiClient.d.ts.map +1 -0
  69. package/types/EJSONType.d.ts +48 -22
  70. package/types/EJSONType.d.ts.map +1 -0
  71. package/types/api/Badge.d.ts +20 -20
  72. package/types/api/Badge.d.ts.map +1 -0
  73. package/types/api/BaseEntity.d.ts +751 -446
  74. package/types/api/BaseEntity.d.ts.map +1 -0
  75. package/types/api/Comment.d.ts +36 -0
  76. package/types/api/EndpointApi.d.ts +347 -295
  77. package/types/api/EndpointApi.d.ts.map +1 -0
  78. package/types/api/EndpointApi.types.d.ts +3914 -4133
  79. package/types/api/EntityRegistry.d.ts +18 -16
  80. package/types/api/EntityRegistry.d.ts.map +1 -0
  81. package/types/api/Event.d.ts +119 -35
  82. package/types/api/Event.d.ts.map +1 -0
  83. package/types/api/News.d.ts +52 -20
  84. package/types/api/News.d.ts.map +1 -0
  85. package/types/api/Organization.d.ts +165 -49
  86. package/types/api/Organization.d.ts.map +1 -0
  87. package/types/api/Poi.d.ts +51 -22
  88. package/types/api/Poi.d.ts.map +1 -0
  89. package/types/api/Project.d.ts +151 -52
  90. package/types/api/Project.d.ts.map +1 -0
  91. package/types/api/User.d.ts +222 -93
  92. package/types/api/User.d.ts.map +1 -0
  93. package/types/api/UserApi.d.ts +60 -9
  94. package/types/api/UserApi.d.ts.map +1 -0
  95. package/types/api/serverDataType/Comment.d.ts +83 -0
  96. package/types/api/serverDataType/Event.d.ts +67 -0
  97. package/types/api/serverDataType/News.d.ts +130 -0
  98. package/types/api/serverDataType/Organization.d.ts +65 -0
  99. package/types/api/serverDataType/Organization.d.ts.map +1 -0
  100. package/types/api/serverDataType/Project.d.ts +58 -0
  101. package/types/api/serverDataType/Project.d.ts.map +1 -0
  102. package/types/api/serverDataType/User.d.ts +86 -0
  103. package/types/api/serverDataType/User.d.ts.map +1 -0
  104. package/types/api/serverDataType/common.d.ts +71 -0
  105. package/types/api/serverDataType/common.d.ts.map +1 -0
  106. package/types/endpoints.module.d.ts +6922 -1215
  107. package/types/endpoints.module.d.ts.map +1 -0
  108. package/types/error.d.ts +25 -51
  109. package/types/error.d.ts.map +1 -0
  110. package/types/index.d.ts +55 -48
  111. package/types/index.d.ts.map +1 -0
  112. package/types/mixin/UserMixin.d.ts +1 -1
  113. package/types/mixin/UserMixin.d.ts.map +1 -0
  114. package/types/types/api-responses.d.ts +190 -0
  115. package/types/types/api-responses.d.ts.map +1 -0
  116. package/types/types/entities.d.ts +17 -0
  117. package/types/types/entities.d.ts.map +1 -0
  118. package/types/types/error-guards.d.ts +99 -0
  119. package/types/types/error-guards.d.ts.map +1 -0
  120. package/types/types/index.d.ts +7 -0
  121. package/types/types/payloads.d.ts +17 -0
  122. package/types/types/payloads.d.ts.map +1 -0
  123. package/types/types/transforms.d.ts +79 -0
  124. package/types/types/transforms.d.ts.map +1 -0
  125. package/types/utils/FileOfflineStorageStrategy.node.d.ts +10 -9
  126. package/types/utils/FileOfflineStorageStrategy.node.d.ts.map +1 -0
  127. package/types/utils/FileStorageStrategy.node.d.ts +9 -20
  128. package/types/utils/FileStorageStrategy.node.d.ts.map +1 -0
  129. package/types/utils/MultiServerFileStorageStrategy.node.d.ts +13 -18
  130. package/types/utils/MultiServerFileStorageStrategy.node.d.ts.map +1 -0
  131. package/types/utils/MultiServerTokenStorageStrategy.d.ts +30 -51
  132. package/types/utils/MultiServerTokenStorageStrategy.d.ts.map +1 -0
  133. package/types/utils/OfflineClientManager.d.ts +52 -88
  134. package/types/utils/OfflineClientManager.d.ts.map +1 -0
  135. package/types/utils/OfflineQueueStorageStrategy.d.ts +12 -9
  136. package/types/utils/OfflineQueueStorageStrategy.d.ts.map +1 -0
  137. package/types/utils/TokenStorage.d.ts +20 -70
  138. package/types/utils/TokenStorage.d.ts.map +1 -0
  139. package/types/utils/compat.d.ts +4 -0
  140. package/types/utils/compat.d.ts.map +1 -0
  141. package/types/utils/createDefaultMultiServerTokenStorageStrategy.d.ts +2 -11
  142. package/types/utils/createDefaultMultiServerTokenStorageStrategy.d.ts.map +1 -0
  143. package/types/utils/createDefaultOfflineStrategy.d.ts +2 -3
  144. package/types/utils/createDefaultOfflineStrategy.d.ts.map +1 -0
  145. package/types/utils/createDefaultTokenStorageStrategy.d.ts +2 -12
  146. package/types/utils/createDefaultTokenStorageStrategy.d.ts.map +1 -0
  147. package/types/utils/reactive.d.ts +10 -16
  148. package/types/utils/reactive.d.ts.map +1 -0
  149. package/types/utils/stream-utils.node.d.ts +3 -2
  150. package/types/utils/stream-utils.node.d.ts.map +1 -0
  151. package/dist/123.cocolight-api-client.browser.js +0 -1
  152. package/dist/123.cocolight-api-client.cjs +0 -1
  153. package/dist/22.cocolight-api-client.mjs.js +0 -1
  154. package/dist/339.cocolight-api-client.mjs.js +0 -1
  155. package/dist/394.cocolight-api-client.browser.js +0 -1
  156. package/dist/394.cocolight-api-client.cjs +0 -1
  157. package/dist/405.cocolight-api-client.browser.js +0 -1
  158. package/dist/405.cocolight-api-client.cjs +0 -1
  159. package/dist/774.cocolight-api-client.mjs.js +0 -1
  160. package/dist/790.cocolight-api-client.mjs.js +0 -1
  161. package/dist/931.cocolight-api-client.browser.js +0 -1
  162. package/dist/931.cocolight-api-client.cjs +0 -1
  163. package/src/EJSONType.js +0 -53
  164. package/src/api/BaseEntity.js +0 -2828
  165. package/src/api/EntityRegistry.js +0 -152
  166. package/src/api/Event.js +0 -226
  167. package/src/api/News.js +0 -244
  168. package/src/api/UserApi.js +0 -81
  169. package/src/endpoints.module.js +0 -5
  170. package/src/error.js +0 -121
  171. package/src/index.js +0 -97
  172. package/src/mixin/UserMixin.js +0 -8
  173. package/src/utils/MultiServerFileStorageStrategy.node.js +0 -87
  174. package/src/utils/MultiServerTokenStorageStrategy.js +0 -188
  175. package/src/utils/OfflineQueueStorageStrategy.js +0 -51
  176. package/src/utils/TokenStorage.js +0 -153
  177. package/src/utils/createDefaultMultiServerTokenStorageStrategy.js +0 -51
  178. package/src/utils/createDefaultTokenStorageStrategy.js +0 -49
  179. package/src/utils/stream-utils.node.js +0 -10
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Interface pour le module MongoID
3
+ */
4
+ export interface MongoIDModule {
5
+ _looksLikeObjectID: (str: string) => boolean;
6
+ ObjectID: typeof ObjectID;
7
+ }
8
+
9
+ /**
10
+ * Teste si une chaîne ressemble à un ObjectID Mongo (24 hex).
11
+ */
12
+ const looksLikeObjectID = (str: string): boolean => str.length === 24 && /^[0-9a-f]*$/.test(str);
13
+
14
+ /**
15
+ * Représentation minimaliste d'un ObjectID Mongo (stocke l'hex en interne).
16
+ */
17
+ class ObjectID {
18
+ private _str?: string;
19
+
20
+ /**
21
+ * @param hexString - Chaîne hexadécimale (24 chars). Si omise, l'instance est vide.
22
+ * @throws {Error} Si `hexString` est fournie mais invalide.
23
+ */
24
+ constructor(hexString?: string) {
25
+ this._str = undefined;
26
+
27
+ // impl « random-based » d'origine commentée, on accepte seulement un hex fourni
28
+ if (hexString) {
29
+ hexString = hexString.toLowerCase();
30
+ if (!looksLikeObjectID(hexString)) {
31
+ throw new Error("Invalid hexadecimal string for creating an ObjectID");
32
+ }
33
+ // pour _.isEqual() / égalité structurelle
34
+ this._str = hexString;
35
+ }
36
+ }
37
+
38
+ /**
39
+ * Compare à un autre ObjectID.
40
+ */
41
+ equals(other: unknown): boolean {
42
+ return other instanceof ObjectID && this.valueOf() === other.valueOf();
43
+ }
44
+
45
+ /**
46
+ * Représentation lisible (style Mongo shell).
47
+ */
48
+ toString(): string {
49
+ return `ObjectID("${this._str}")`;
50
+ }
51
+
52
+ /**
53
+ * Clone l'ObjectID.
54
+ */
55
+ clone(): ObjectID {
56
+ return new ObjectID(this._str);
57
+ }
58
+
59
+ /**
60
+ * Nom de type EJSON.
61
+ */
62
+ typeName(): "oid" {
63
+ return "oid";
64
+ }
65
+
66
+ /**
67
+ * Timestamp (secondes) extrait des 4 premiers octets.
68
+ * @returns Nombre de secondes depuis l'époque Unix.
69
+ */
70
+ getTimestamp(): number {
71
+ // _str est défini si le constructeur a validé la chaîne
72
+ // si undefined, parseInt renverra NaN (comportement d'origine)
73
+ return Number.parseInt(this._str?.substr(0, 8) ?? "", 16);
74
+ }
75
+
76
+ /**
77
+ * Valeur primitive (hex).
78
+ */
79
+ valueOf(): string | undefined {
80
+ return this._str;
81
+ }
82
+
83
+ /**
84
+ * Valeur JSON (hex).
85
+ */
86
+ toJSONValue(): string | undefined {
87
+ return this.valueOf();
88
+ }
89
+
90
+ /**
91
+ * Chaîne hexadécimale (24 chars).
92
+ */
93
+ toHexString(): string | undefined {
94
+ return this.valueOf();
95
+ }
96
+ }
97
+
98
+ const MongoID: MongoIDModule = {
99
+ _looksLikeObjectID: looksLikeObjectID,
100
+ ObjectID
101
+ };
102
+
103
+ export default MongoID;
@@ -1,40 +1,40 @@
1
1
  import { ApiError } from "../error.js";
2
- import BaseEntity from "./BaseEntity.js";
2
+ import { BaseEntity } from "./BaseEntity.js";
3
3
 
4
- export class Badge extends BaseEntity {
5
- static entityType = "badges";
4
+ export class Badge extends BaseEntity<any> {
5
+ static override entityType = "badges";
6
6
 
7
- static entityTag = "Badge";
7
+ static override entityTag = "Badge";
8
8
 
9
- static SCHEMA_CONSTANTS = [
9
+ static override SCHEMA_CONSTANTS: string[] = [
10
10
  "ADD_BADGES",
11
11
  ];
12
12
 
13
- static ADD_BLOCKS = new Map([
13
+ static ADD_BLOCKS: Map<string, string> = new Map([
14
14
  ["ADD_BADGES", "addBadges"]
15
15
  ]);
16
16
 
17
- static UPDATE_BLOCKS = new Map([
17
+ static UPDATE_BLOCKS: Map<string, string> = new Map([
18
18
  ]);
19
19
 
20
- defaultFields = {
20
+ override defaultFields: Record<string, any> = {
21
21
 
22
22
  };
23
23
 
24
- removeFields = [];
24
+ override removeFields: string[] = [];
25
25
 
26
- transforms = {
26
+ // transforms = {
27
27
 
28
- };
28
+ // };
29
29
 
30
- async _add(payload) {
30
+ override _add = async (payload: Record<string, any>): Promise<void> => {
31
31
  if (!this._calledFromSave) {
32
- throw new ApiError("utilisation invalide de _add, utilisez save");
32
+ throw new ApiError("utilisation invalide de _add, utilisez save", 400);
33
33
  }
34
34
  payload.id = this._newId?.();
35
35
  if (payload.slug) delete payload.slug;
36
36
 
37
- for (const [constant, methodName] of Badge.ADD_BLOCKS) {
37
+ for (const [constant, methodName] of Array.from(Badge.ADD_BLOCKS)) {
38
38
  const blockData = this._extractChangedFieldsFromSchema(
39
39
  this.apiClient,
40
40
  constant,
@@ -42,24 +42,24 @@ export class Badge extends BaseEntity {
42
42
  () => {}
43
43
  );
44
44
  if (blockData && Object.keys(blockData).length > 0) {
45
- const data = await this[methodName](blockData);
45
+ const data = await (this as any)[methodName](blockData);
46
46
  if (!this.id && data?.map?.id) {
47
47
  this._draftData.id = data.map.id;
48
48
  this._draftData.slug = data.map.slug;
49
49
  }
50
50
  }
51
51
  }
52
- }
52
+ };
53
53
 
54
- async _update(payload) {
54
+ override _update = async (payload: Record<string, any>): Promise<boolean> => {
55
55
  // TODO: qui peut modifier un badge ?
56
56
  if (!this._calledFromSave) {
57
- throw new ApiError("utilisation invalide de _update, utilisez save");
57
+ throw new ApiError("utilisation invalide de _update, utilisez save", 400);
58
58
  }
59
59
  if (payload.id) delete payload.id;
60
60
  let hasChanged = false;
61
61
 
62
- for (const [constant, methodName] of Badge.UPDATE_BLOCKS) {
62
+ for (const [constant, methodName] of Array.from(Badge.UPDATE_BLOCKS)) {
63
63
  const blockData = this._extractChangedFieldsFromSchema(
64
64
  this.apiClient,
65
65
  constant,
@@ -68,60 +68,71 @@ export class Badge extends BaseEntity {
68
68
  this.removeFields
69
69
  );
70
70
  if (blockData && Object.keys(blockData).length > 0) {
71
- await this[methodName](blockData);
71
+ await (this as any)[methodName](blockData);
72
72
  hasChanged = true;
73
73
  }
74
74
  }
75
75
 
76
76
  return hasChanged;
77
- }
77
+ };
78
78
 
79
- async getOrganizations() {
80
- throw new ApiError(`getOrganizations n'existe pas dans ${this.constructor.name}`);
79
+ override async getOrganizations(): Promise<never> {
80
+ throw new ApiError(`getOrganizations n'existe pas dans ${this.constructor.name}`, 501);
81
81
  }
82
82
 
83
- async getProjects() {
84
- throw new ApiError(`getProjects n'existe pas dans ${this.constructor.name}`);
83
+
84
+ override async getProjects(): Promise<never> {
85
+ throw new ApiError(`getProjects n'existe pas dans ${this.constructor.name}`, 501);
85
86
  }
86
87
 
87
- async getEvents() {
88
- throw new ApiError(`getEvents n'existe pas dans ${this.constructor.name}`);
88
+
89
+ async getEvents(): Promise<never> {
90
+ throw new ApiError(`getEvents n'existe pas dans ${this.constructor.name}`, 501);
89
91
  }
90
92
 
91
- async getPois() {
92
- throw new ApiError(`getPois n'existe pas dans ${this.constructor.name}`);
93
+
94
+ override async getPois(): Promise<never> {
95
+ throw new ApiError(`getPois n'existe pas dans ${this.constructor.name}`, 501);
93
96
  }
94
97
 
95
- async getBadgesIssuer() {
96
- throw new ApiError(`getBadgesIssuer n'existe pas dans ${this.constructor.name}`);
98
+
99
+ override async getBadgesIssuer(): Promise<never> {
100
+ throw new ApiError(`getBadgesIssuer n'existe pas dans ${this.constructor.name}`, 501);
97
101
  }
98
102
 
99
- async getNews() {
100
- throw new ApiError(`getNews n'existe pas dans ${this.constructor.name}`);
103
+
104
+ override async getNews(): Promise<never> {
105
+ throw new ApiError(`getNews n'existe pas dans ${this.constructor.name}`, 501);
101
106
  }
102
107
 
103
- async getSubscribers() {
104
- throw new ApiError(`getSubscribers n'existe pas dans ${this.constructor.name}`);
108
+
109
+ override async getSubscribers(): Promise<never> {
110
+ throw new ApiError(`getSubscribers n'existe pas dans ${this.constructor.name}`, 501);
105
111
  }
106
112
 
107
- async project() {
108
- throw new ApiError(`project n'existe pas dans ${this.constructor.name}`);
113
+
114
+ override async project(): Promise<never> {
115
+ throw new ApiError(`project n'existe pas dans ${this.constructor.name}`, 501);
109
116
  }
110
117
 
111
- async poi() {
112
- throw new ApiError(`poi n'existe pas dans ${this.constructor.name}`);
118
+
119
+ override async poi(): Promise<never> {
120
+ throw new ApiError(`poi n'existe pas dans ${this.constructor.name}`, 501);
113
121
  }
114
122
 
115
- async event() {
116
- throw new ApiError(`event n'existe pas dans ${this.constructor.name}`);
123
+
124
+ override async event(): Promise<never> {
125
+ throw new ApiError(`event n'existe pas dans ${this.constructor.name}`, 501);
117
126
  }
118
127
 
119
- async badge() {
120
- throw new ApiError(`badge n'existe pas dans ${this.constructor.name}`);
128
+
129
+ override async badge(): Promise<never> {
130
+ throw new ApiError(`badge n'existe pas dans ${this.constructor.name}`, 501);
121
131
  }
122
132
 
123
- async news() {
124
- throw new ApiError(`news n'existe pas dans ${this.constructor.name}`);
133
+
134
+ override async news(): Promise<never> {
135
+ throw new ApiError(`news n'existe pas dans ${this.constructor.name}`, 501);
125
136
  }
126
137
 
127
138
  }