@ikatec/digisac-api-sdk 3.1.0 → 4.1.0

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 (139) hide show
  1. package/README.md +71 -9
  2. package/dist/apis/authHistory/AuthHistoryApi.cjs +3 -9
  3. package/dist/apis/authHistory/AuthHistoryApi.cjs.map +1 -1
  4. package/dist/apis/authHistory/AuthHistoryApi.d.ts +3 -4
  5. package/dist/apis/authHistory/AuthHistoryApi.d.ts.map +1 -1
  6. package/dist/apis/authHistory/AuthHistoryApi.mjs +3 -7
  7. package/dist/apis/authHistory/AuthHistoryApi.mjs.map +1 -1
  8. package/dist/apis/clientFeedback/ClientFeedbackApi.cjs +2 -5
  9. package/dist/apis/clientFeedback/ClientFeedbackApi.cjs.map +1 -1
  10. package/dist/apis/clientFeedback/ClientFeedbackApi.d.ts +2 -4
  11. package/dist/apis/clientFeedback/ClientFeedbackApi.d.ts.map +1 -1
  12. package/dist/apis/clientFeedback/ClientFeedbackApi.mjs +3 -5
  13. package/dist/apis/clientFeedback/ClientFeedbackApi.mjs.map +1 -1
  14. package/dist/apis/contacts/ContactsApi.cjs +2 -2
  15. package/dist/apis/contacts/ContactsApi.cjs.map +1 -1
  16. package/dist/apis/contacts/ContactsApi.mjs +2 -2
  17. package/dist/apis/contacts/ContactsApi.mjs.map +1 -1
  18. package/dist/apis/me/MeApi.cjs +2 -5
  19. package/dist/apis/me/MeApi.cjs.map +1 -1
  20. package/dist/apis/me/MeApi.d.ts +2 -4
  21. package/dist/apis/me/MeApi.d.ts.map +1 -1
  22. package/dist/apis/me/MeApi.mjs +3 -5
  23. package/dist/apis/me/MeApi.mjs.map +1 -1
  24. package/dist/apis/serviceAccessManagement/ServiceAccessManagementApi.cjs +3 -9
  25. package/dist/apis/serviceAccessManagement/ServiceAccessManagementApi.cjs.map +1 -1
  26. package/dist/apis/serviceAccessManagement/ServiceAccessManagementApi.d.ts +3 -4
  27. package/dist/apis/serviceAccessManagement/ServiceAccessManagementApi.d.ts.map +1 -1
  28. package/dist/apis/serviceAccessManagement/ServiceAccessManagementApi.mjs +3 -7
  29. package/dist/apis/serviceAccessManagement/ServiceAccessManagementApi.mjs.map +1 -1
  30. package/dist/apis/stickerUsers/StickerUsersApi.cjs +3 -9
  31. package/dist/apis/stickerUsers/StickerUsersApi.cjs.map +1 -1
  32. package/dist/apis/stickerUsers/StickerUsersApi.d.ts +3 -4
  33. package/dist/apis/stickerUsers/StickerUsersApi.d.ts.map +1 -1
  34. package/dist/apis/stickerUsers/StickerUsersApi.mjs +3 -7
  35. package/dist/apis/stickerUsers/StickerUsersApi.mjs.map +1 -1
  36. package/dist/apis/terms/TermsApi.cjs +3 -12
  37. package/dist/apis/terms/TermsApi.cjs.map +1 -1
  38. package/dist/apis/terms/TermsApi.d.ts +2 -4
  39. package/dist/apis/terms/TermsApi.d.ts.map +1 -1
  40. package/dist/apis/terms/TermsApi.mjs +3 -10
  41. package/dist/apis/terms/TermsApi.mjs.map +1 -1
  42. package/dist/apis/transcripts/TranscriptsApi.cjs +2 -5
  43. package/dist/apis/transcripts/TranscriptsApi.cjs.map +1 -1
  44. package/dist/apis/transcripts/TranscriptsApi.d.ts +2 -4
  45. package/dist/apis/transcripts/TranscriptsApi.d.ts.map +1 -1
  46. package/dist/apis/transcripts/TranscriptsApi.mjs +3 -5
  47. package/dist/apis/transcripts/TranscriptsApi.mjs.map +1 -1
  48. package/dist/core/ApiClient.d.ts +3 -0
  49. package/dist/core/ApiClient.d.ts.map +1 -1
  50. package/dist/core/ArchivableCrudApi.cjs +0 -2
  51. package/dist/core/ArchivableCrudApi.cjs.map +1 -1
  52. package/dist/core/ArchivableCrudApi.d.ts.map +1 -1
  53. package/dist/core/ArchivableCrudApi.mjs +0 -2
  54. package/dist/core/ArchivableCrudApi.mjs.map +1 -1
  55. package/dist/core/BaseApi.cjs +34 -0
  56. package/dist/core/BaseApi.cjs.map +1 -0
  57. package/dist/core/BaseApi.d.ts +20 -0
  58. package/dist/core/BaseApi.d.ts.map +1 -0
  59. package/dist/core/BaseApi.mjs +33 -0
  60. package/dist/core/BaseApi.mjs.map +1 -0
  61. package/dist/core/BaseApiClient.cjs +29 -57
  62. package/dist/core/BaseApiClient.cjs.map +1 -1
  63. package/dist/core/BaseApiClient.d.ts +8 -11
  64. package/dist/core/BaseApiClient.d.ts.map +1 -1
  65. package/dist/core/BaseApiClient.mjs +31 -57
  66. package/dist/core/BaseApiClient.mjs.map +1 -1
  67. package/dist/core/BaseCrudApi.cjs +6 -16
  68. package/dist/core/BaseCrudApi.cjs.map +1 -1
  69. package/dist/core/BaseCrudApi.d.ts +3 -2
  70. package/dist/core/BaseCrudApi.d.ts.map +1 -1
  71. package/dist/core/BaseCrudApi.mjs +6 -14
  72. package/dist/core/BaseCrudApi.mjs.map +1 -1
  73. package/dist/core/bindMethods.cjs +24 -0
  74. package/dist/core/bindMethods.cjs.map +1 -0
  75. package/dist/core/bindMethods.d.ts +7 -0
  76. package/dist/core/bindMethods.d.ts.map +1 -0
  77. package/dist/core/bindMethods.mjs +22 -0
  78. package/dist/core/bindMethods.mjs.map +1 -0
  79. package/dist/core/errors.cjs +192 -0
  80. package/dist/core/errors.cjs.map +1 -0
  81. package/dist/core/errors.d.ts +117 -0
  82. package/dist/core/errors.d.ts.map +1 -0
  83. package/dist/core/errors.mjs +177 -0
  84. package/dist/core/errors.mjs.map +1 -0
  85. package/dist/core/index.cjs +18 -2
  86. package/dist/core/index.d.ts +6 -2
  87. package/dist/core/index.d.ts.map +1 -1
  88. package/dist/core/index.mjs +4 -2
  89. package/dist/core/queryString.cjs +22 -0
  90. package/dist/core/queryString.cjs.map +1 -0
  91. package/dist/core/queryString.d.ts +14 -0
  92. package/dist/core/queryString.d.ts.map +1 -0
  93. package/dist/core/queryString.mjs +18 -0
  94. package/dist/core/queryString.mjs.map +1 -0
  95. package/dist/core/types.d.ts +2 -0
  96. package/dist/core/types.d.ts.map +1 -1
  97. package/dist/core/withQueryFormat.cjs +42 -0
  98. package/dist/core/withQueryFormat.cjs.map +1 -0
  99. package/dist/core/withQueryFormat.d.ts +10 -0
  100. package/dist/core/withQueryFormat.d.ts.map +1 -0
  101. package/dist/core/withQueryFormat.mjs +40 -0
  102. package/dist/core/withQueryFormat.mjs.map +1 -0
  103. package/dist/index.cjs +18 -2
  104. package/dist/index.mjs +4 -2
  105. package/package.json +1 -1
  106. package/src/apis/authHistory/AuthHistoryApi.test.ts +1 -1
  107. package/src/apis/authHistory/AuthHistoryApi.ts +10 -10
  108. package/src/apis/campaigns/CampaignsApi.test.ts +1 -1
  109. package/src/apis/clientFeedback/ClientFeedbackApi.ts +5 -7
  110. package/src/apis/contacts/ContactsApi.test.ts +1 -1
  111. package/src/apis/contacts/ContactsApi.ts +2 -2
  112. package/src/apis/me/MeApi.ts +2 -8
  113. package/src/apis/messages/MessagesApi.test.ts +2 -2
  114. package/src/apis/queryFormat.test.ts +198 -0
  115. package/src/apis/serviceAccessManagement/ServiceAccessManagementApi.test.ts +2 -2
  116. package/src/apis/serviceAccessManagement/ServiceAccessManagementApi.ts +10 -10
  117. package/src/apis/stickerUsers/StickerUsersApi.test.ts +1 -1
  118. package/src/apis/stickerUsers/StickerUsersApi.ts +7 -10
  119. package/src/apis/terms/TermsApi.ts +3 -12
  120. package/src/apis/transcripts/TranscriptsApi.ts +2 -7
  121. package/src/core/ApiClient.ts +4 -0
  122. package/src/core/ArchivableCrudApi.ts +0 -2
  123. package/src/core/BaseApi.test.ts +164 -0
  124. package/src/core/BaseApi.ts +32 -0
  125. package/src/core/BaseApiClient.test.ts +193 -22
  126. package/src/core/BaseApiClient.ts +44 -85
  127. package/src/core/BaseCrudApi.test-d.ts +57 -0
  128. package/src/core/BaseCrudApi.test.ts +252 -31
  129. package/src/core/BaseCrudApi.ts +14 -14
  130. package/src/core/bindMethods.ts +26 -0
  131. package/src/core/errors.test-d.ts +14 -0
  132. package/src/core/errors.test.ts +389 -0
  133. package/src/core/errors.ts +284 -0
  134. package/src/core/index.ts +21 -2
  135. package/src/core/queryString.test.ts +71 -0
  136. package/src/core/queryString.ts +30 -0
  137. package/src/core/types.ts +5 -0
  138. package/src/core/withQueryFormat.test.ts +136 -0
  139. package/src/core/withQueryFormat.ts +47 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryString.d.ts","sourceRoot":"","sources":["../../src/core/queryString.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,IAAI,CAAA;AAEvC,eAAO,MAAM,oBAAoB,EAAE,WAAoB,CAAA;AAEvD,qFAAqF;AACrF,wBAAgB,aAAa,CAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,MAAM,GAAE,WAAkC,GACzC,MAAM,CAUR"}
@@ -0,0 +1,18 @@
1
+ import qs from "qs";
2
+
3
+ //#region src/core/queryString.ts
4
+ const DEFAULT_QUERY_FORMAT = "json";
5
+ /** Serializes a query in `format`, or returns `''` when there is nothing to send. */
6
+ function toQueryString(query, format = DEFAULT_QUERY_FORMAT) {
7
+ if (!query) return "";
8
+ if (format === "qs") {
9
+ const queryString = qs.stringify(query);
10
+ return queryString ? `?${queryString}` : "";
11
+ }
12
+ const json = JSON.stringify(query);
13
+ return json === "{}" ? "" : `?query=${encodeURIComponent(json)}`;
14
+ }
15
+
16
+ //#endregion
17
+ export { DEFAULT_QUERY_FORMAT, toQueryString };
18
+ //# sourceMappingURL=queryString.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryString.mjs","names":[],"sources":["../../src/core/queryString.ts"],"sourcesContent":["import qs from 'qs'\n\n/**\n * How list/get queries (`where`, `include`, `order`, ...) are put in the URL:\n *\n * - `'json'` — `?query=<JSON>`, merged into `req.query` by the backend `parseQuery` middleware.\n * Keeps `null`, booleans and numbers typed and has no nesting limit.\n * - `'qs'` — bracket notation (`?where[name]=x&page=2`). Readable, but the backend parses it with\n * `qs` defaults: `null` arrives as `''`, booleans/numbers as strings, and objects nested deeper\n * than 5 levels (e.g. an `include` inside an `include` with a `where`) are mangled.\n */\nexport type QueryFormat = 'json' | 'qs'\n\nexport const DEFAULT_QUERY_FORMAT: QueryFormat = 'json'\n\n/** Serializes a query in `format`, or returns `''` when there is nothing to send. */\nexport function toQueryString(\n query?: object | null,\n format: QueryFormat = DEFAULT_QUERY_FORMAT,\n): string {\n if (!query) {\n return ''\n }\n if (format === 'qs') {\n const queryString = qs.stringify(query)\n return queryString ? `?${queryString}` : ''\n }\n const json = JSON.stringify(query)\n return json === '{}' ? '' : `?query=${encodeURIComponent(json)}`\n}\n"],"mappings":";;;AAaA,MAAa,uBAAoC;;AAGjD,SAAgB,cACd,OACA,SAAsB,sBACd;AACR,KAAI,CAAC,MACH,QAAO;AAET,KAAI,WAAW,MAAM;EACnB,MAAM,cAAc,GAAG,UAAU,MAAM;AACvC,SAAO,cAAc,IAAI,gBAAgB;;CAE3C,MAAM,OAAO,KAAK,UAAU,MAAM;AAClC,QAAO,SAAS,OAAO,KAAK,UAAU,mBAAmB,KAAK"}
@@ -91,6 +91,8 @@ export interface HasGetMany<TResponse, TQuery extends ListQuery<TResponse> = Lis
91
91
  getMany(query?: TQuery & {
92
92
  paginate?: true;
93
93
  }, headers?: Record<string, string>): Promise<Paginated<TResponse>>;
94
+ /** When `paginate` is only known at runtime (e.g. a `boolean` variable). */
95
+ getMany(query?: TQuery, headers?: Record<string, string>): Promise<Paginated<TResponse> | TResponse[]>;
94
96
  }
95
97
  export type GetByIdQuery<T = Record<string, unknown>> = Pick<ListQuery<T>, 'include' | 'attributes'>;
96
98
  export interface HasGetById<TResponse> {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ //#region src/core/withQueryFormat.ts
4
+ /**
5
+ * A view of `client` that serializes queries in `format`. Everything else — methods, base URL and
6
+ * the access token — is read from `client`, so `client.setAccessToken()` still applies to it.
7
+ */
8
+ function overrideQueryFormat(client, format) {
9
+ return Object.create(client, { queryFormat: {
10
+ value: format,
11
+ enumerable: true,
12
+ configurable: true
13
+ } });
14
+ }
15
+ /**
16
+ * Copy of `api` whose client serializes queries in `format`; `api` itself is untouched.
17
+ *
18
+ * The copy has the same prototype and fields as `api`, with `client` replaced. Methods the
19
+ * constructor bound to `api` (`this.getMany = this.getMany.bind(this)`) are bound again to the
20
+ * copy, so they use its client.
21
+ */
22
+ function cloneWithQueryFormat(api, format) {
23
+ const source = api;
24
+ const prototype = Object.getPrototypeOf(api);
25
+ const copy = Object.create(prototype);
26
+ for (const key of Reflect.ownKeys(api)) Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(api, key));
27
+ Object.defineProperty(copy, "client", {
28
+ value: overrideQueryFormat(source.client, format),
29
+ enumerable: true,
30
+ configurable: true,
31
+ writable: false
32
+ });
33
+ for (const key of Reflect.ownKeys(api)) {
34
+ const method = prototype[key];
35
+ if (typeof copy[key] === "function" && typeof method === "function") copy[key] = method.bind(copy);
36
+ }
37
+ return copy;
38
+ }
39
+
40
+ //#endregion
41
+ exports.cloneWithQueryFormat = cloneWithQueryFormat;
42
+ //# sourceMappingURL=withQueryFormat.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withQueryFormat.cjs","names":[],"sources":["../../src/core/withQueryFormat.ts"],"sourcesContent":["import type { ApiClient } from './ApiClient'\nimport type { QueryFormat } from './queryString'\n\n/**\n * A view of `client` that serializes queries in `format`. Everything else — methods, base URL and\n * the access token — is read from `client`, so `client.setAccessToken()` still applies to it.\n */\nfunction overrideQueryFormat<T extends ApiClient>(client: T, format: QueryFormat): T {\n return Object.create(client, {\n queryFormat: { value: format, enumerable: true, configurable: true },\n })\n}\n\n/**\n * Copy of `api` whose client serializes queries in `format`; `api` itself is untouched.\n *\n * The copy has the same prototype and fields as `api`, with `client` replaced. Methods the\n * constructor bound to `api` (`this.getMany = this.getMany.bind(this)`) are bound again to the\n * copy, so they use its client.\n */\nexport function cloneWithQueryFormat<T extends object>(api: T, format: QueryFormat): T {\n const source = api as T & { client: ApiClient }\n const prototype = Object.getPrototypeOf(api) as Record<PropertyKey, unknown>\n const copy = Object.create(prototype) as Record<PropertyKey, unknown>\n\n for (const key of Reflect.ownKeys(api)) {\n Object.defineProperty(\n copy,\n key,\n Object.getOwnPropertyDescriptor(api, key) as PropertyDescriptor,\n )\n }\n Object.defineProperty(copy, 'client', {\n value: overrideQueryFormat(source.client, format),\n enumerable: true,\n configurable: true,\n writable: false,\n })\n for (const key of Reflect.ownKeys(api)) {\n const method = prototype[key]\n if (typeof copy[key] === 'function' && typeof method === 'function') {\n copy[key] = method.bind(copy)\n }\n }\n\n return copy as T\n}\n"],"mappings":";;;;;;;AAOA,SAAS,oBAAyC,QAAW,QAAwB;AACnF,QAAO,OAAO,OAAO,QAAQ,EAC3B,aAAa;EAAE,OAAO;EAAQ,YAAY;EAAM,cAAc;EAAM,EACrE,CAAC;;;;;;;;;AAUJ,SAAgB,qBAAuC,KAAQ,QAAwB;CACrF,MAAM,SAAS;CACf,MAAM,YAAY,OAAO,eAAe,IAAI;CAC5C,MAAM,OAAO,OAAO,OAAO,UAAU;AAErC,MAAK,MAAM,OAAO,QAAQ,QAAQ,IAAI,CACpC,QAAO,eACL,MACA,KACA,OAAO,yBAAyB,KAAK,IAAI,CAC1C;AAEH,QAAO,eAAe,MAAM,UAAU;EACpC,OAAO,oBAAoB,OAAO,QAAQ,OAAO;EACjD,YAAY;EACZ,cAAc;EACd,UAAU;EACX,CAAC;AACF,MAAK,MAAM,OAAO,QAAQ,QAAQ,IAAI,EAAE;EACtC,MAAM,SAAS,UAAU;AACzB,MAAI,OAAO,KAAK,SAAS,cAAc,OAAO,WAAW,WACvD,MAAK,OAAO,OAAO,KAAK,KAAK;;AAIjC,QAAO"}
@@ -0,0 +1,10 @@
1
+ import type { QueryFormat } from './queryString';
2
+ /**
3
+ * Copy of `api` whose client serializes queries in `format`; `api` itself is untouched.
4
+ *
5
+ * The copy has the same prototype and fields as `api`, with `client` replaced. Methods the
6
+ * constructor bound to `api` (`this.getMany = this.getMany.bind(this)`) are bound again to the
7
+ * copy, so they use its client.
8
+ */
9
+ export declare function cloneWithQueryFormat<T extends object>(api: T, format: QueryFormat): T;
10
+ //# sourceMappingURL=withQueryFormat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withQueryFormat.d.ts","sourceRoot":"","sources":["../../src/core/withQueryFormat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAYhD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC,CA0BrF"}
@@ -0,0 +1,40 @@
1
+ //#region src/core/withQueryFormat.ts
2
+ /**
3
+ * A view of `client` that serializes queries in `format`. Everything else — methods, base URL and
4
+ * the access token — is read from `client`, so `client.setAccessToken()` still applies to it.
5
+ */
6
+ function overrideQueryFormat(client, format) {
7
+ return Object.create(client, { queryFormat: {
8
+ value: format,
9
+ enumerable: true,
10
+ configurable: true
11
+ } });
12
+ }
13
+ /**
14
+ * Copy of `api` whose client serializes queries in `format`; `api` itself is untouched.
15
+ *
16
+ * The copy has the same prototype and fields as `api`, with `client` replaced. Methods the
17
+ * constructor bound to `api` (`this.getMany = this.getMany.bind(this)`) are bound again to the
18
+ * copy, so they use its client.
19
+ */
20
+ function cloneWithQueryFormat(api, format) {
21
+ const source = api;
22
+ const prototype = Object.getPrototypeOf(api);
23
+ const copy = Object.create(prototype);
24
+ for (const key of Reflect.ownKeys(api)) Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(api, key));
25
+ Object.defineProperty(copy, "client", {
26
+ value: overrideQueryFormat(source.client, format),
27
+ enumerable: true,
28
+ configurable: true,
29
+ writable: false
30
+ });
31
+ for (const key of Reflect.ownKeys(api)) {
32
+ const method = prototype[key];
33
+ if (typeof copy[key] === "function" && typeof method === "function") copy[key] = method.bind(copy);
34
+ }
35
+ return copy;
36
+ }
37
+
38
+ //#endregion
39
+ export { cloneWithQueryFormat };
40
+ //# sourceMappingURL=withQueryFormat.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withQueryFormat.mjs","names":[],"sources":["../../src/core/withQueryFormat.ts"],"sourcesContent":["import type { ApiClient } from './ApiClient'\nimport type { QueryFormat } from './queryString'\n\n/**\n * A view of `client` that serializes queries in `format`. Everything else — methods, base URL and\n * the access token — is read from `client`, so `client.setAccessToken()` still applies to it.\n */\nfunction overrideQueryFormat<T extends ApiClient>(client: T, format: QueryFormat): T {\n return Object.create(client, {\n queryFormat: { value: format, enumerable: true, configurable: true },\n })\n}\n\n/**\n * Copy of `api` whose client serializes queries in `format`; `api` itself is untouched.\n *\n * The copy has the same prototype and fields as `api`, with `client` replaced. Methods the\n * constructor bound to `api` (`this.getMany = this.getMany.bind(this)`) are bound again to the\n * copy, so they use its client.\n */\nexport function cloneWithQueryFormat<T extends object>(api: T, format: QueryFormat): T {\n const source = api as T & { client: ApiClient }\n const prototype = Object.getPrototypeOf(api) as Record<PropertyKey, unknown>\n const copy = Object.create(prototype) as Record<PropertyKey, unknown>\n\n for (const key of Reflect.ownKeys(api)) {\n Object.defineProperty(\n copy,\n key,\n Object.getOwnPropertyDescriptor(api, key) as PropertyDescriptor,\n )\n }\n Object.defineProperty(copy, 'client', {\n value: overrideQueryFormat(source.client, format),\n enumerable: true,\n configurable: true,\n writable: false,\n })\n for (const key of Reflect.ownKeys(api)) {\n const method = prototype[key]\n if (typeof copy[key] === 'function' && typeof method === 'function') {\n copy[key] = method.bind(copy)\n }\n }\n\n return copy as T\n}\n"],"mappings":";;;;;AAOA,SAAS,oBAAyC,QAAW,QAAwB;AACnF,QAAO,OAAO,OAAO,QAAQ,EAC3B,aAAa;EAAE,OAAO;EAAQ,YAAY;EAAM,cAAc;EAAM,EACrE,CAAC;;;;;;;;;AAUJ,SAAgB,qBAAuC,KAAQ,QAAwB;CACrF,MAAM,SAAS;CACf,MAAM,YAAY,OAAO,eAAe,IAAI;CAC5C,MAAM,OAAO,OAAO,OAAO,UAAU;AAErC,MAAK,MAAM,OAAO,QAAQ,QAAQ,IAAI,CACpC,QAAO,eACL,MACA,KACA,OAAO,yBAAyB,KAAK,IAAI,CAC1C;AAEH,QAAO,eAAe,MAAM,UAAU;EACpC,OAAO,oBAAoB,OAAO,QAAQ,OAAO;EACjD,YAAY;EACZ,cAAc;EACd,UAAU;EACX,CAAC;AACF,MAAK,MAAM,OAAO,QAAQ,QAAQ,IAAI,EAAE;EACtC,MAAM,SAAS,UAAU;AACzB,MAAI,OAAO,KAAK,SAAS,cAAc,OAAO,WAAW,WACvD,MAAK,OAAO,OAAO,KAAK,KAAK;;AAIjC,QAAO"}
package/dist/index.cjs CHANGED
@@ -1,10 +1,26 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_core_errors = require('./core/errors.cjs');
2
3
  const require_core_BaseApiClient = require('./core/BaseApiClient.cjs');
4
+ const require_core_BaseApi = require('./core/BaseApi.cjs');
3
5
  const require_core_BaseCrudApi = require('./core/BaseCrudApi.cjs');
4
6
  const require_core_ArchivableCrudApi = require('./core/ArchivableCrudApi.cjs');
5
7
  require('./core/index.cjs');
6
8
 
7
- exports.ApiError = require_core_BaseApiClient.ApiError;
9
+ exports.ApiConnectionError = require_core_errors.ApiConnectionError;
10
+ exports.ApiError = require_core_errors.ApiError;
8
11
  exports.ArchivableCrudApi = require_core_ArchivableCrudApi.ArchivableCrudApi;
12
+ exports.AuthenticationError = require_core_errors.AuthenticationError;
13
+ exports.BadRequestError = require_core_errors.BadRequestError;
14
+ exports.BaseApi = require_core_BaseApi.BaseApi;
9
15
  exports.BaseApiClient = require_core_BaseApiClient.BaseApiClient;
10
- exports.BaseCrudApi = require_core_BaseCrudApi.BaseCrudApi;
16
+ exports.BaseCrudApi = require_core_BaseCrudApi.BaseCrudApi;
17
+ exports.ConflictError = require_core_errors.ConflictError;
18
+ exports.DigisacError = require_core_errors.DigisacError;
19
+ exports.InternalServerError = require_core_errors.InternalServerError;
20
+ exports.NotFoundError = require_core_errors.NotFoundError;
21
+ exports.PaymentRequiredError = require_core_errors.PaymentRequiredError;
22
+ exports.PermissionDeniedError = require_core_errors.PermissionDeniedError;
23
+ exports.RateLimitError = require_core_errors.RateLimitError;
24
+ exports.UnprocessableEntityError = require_core_errors.UnprocessableEntityError;
25
+ exports.ValidationError = require_core_errors.ValidationError;
26
+ exports.parseFieldErrors = require_core_errors.parseFieldErrors;
package/dist/index.mjs CHANGED
@@ -1,6 +1,8 @@
1
- import { ApiError, BaseApiClient } from "./core/BaseApiClient.mjs";
1
+ import { ApiConnectionError, ApiError, AuthenticationError, BadRequestError, ConflictError, DigisacError, InternalServerError, NotFoundError, PaymentRequiredError, PermissionDeniedError, RateLimitError, UnprocessableEntityError, ValidationError, parseFieldErrors } from "./core/errors.mjs";
2
+ import { BaseApiClient } from "./core/BaseApiClient.mjs";
3
+ import { BaseApi } from "./core/BaseApi.mjs";
2
4
  import { BaseCrudApi } from "./core/BaseCrudApi.mjs";
3
5
  import { ArchivableCrudApi } from "./core/ArchivableCrudApi.mjs";
4
6
  import "./core/index.mjs";
5
7
 
6
- export { ApiError, ArchivableCrudApi, BaseApiClient, BaseCrudApi };
8
+ export { ApiConnectionError, ApiError, ArchivableCrudApi, AuthenticationError, BadRequestError, BaseApi, BaseApiClient, BaseCrudApi, ConflictError, DigisacError, InternalServerError, NotFoundError, PaymentRequiredError, PermissionDeniedError, RateLimitError, UnprocessableEntityError, ValidationError, parseFieldErrors };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ikatec/digisac-api-sdk",
3
- "version": "3.1.0",
3
+ "version": "4.1.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.mjs",
@@ -69,7 +69,7 @@ describe('AuthHistoryApi', () => {
69
69
  await api.getMany({ page: 2, perPage: 5 })
70
70
  const url = vi.mocked(client.get).mock.calls[0][0] as string
71
71
  expect(url).toContain('/auth-history?')
72
- expect(url).toContain('page=2')
72
+ expect(decodeURIComponent(url)).toContain('"page":2')
73
73
  })
74
74
 
75
75
  it('forwards custom headers', async () => {
@@ -1,15 +1,11 @@
1
- import qs from 'qs'
2
- import type { ApiClient } from '../../core/ApiClient'
1
+ import { BaseApi } from '../../core/BaseApi'
3
2
  import type { ListQuery, Paginated, HasGetMany, HasGetById } from '../../core/types'
4
3
  import type { AuthHistory } from './types'
5
4
 
6
- export class AuthHistoryApi implements HasGetMany<AuthHistory>, HasGetById<AuthHistory> {
7
- private readonly client: ApiClient
8
-
9
- constructor(client: ApiClient) {
10
- this.client = client
11
- }
12
-
5
+ export class AuthHistoryApi
6
+ extends BaseApi
7
+ implements HasGetMany<AuthHistory>, HasGetById<AuthHistory>
8
+ {
13
9
  /**
14
10
  * Returns a paginated list of authentication events (auth, password_change, logout). Non-admin users can only see their own records.
15
11
  * @permissions authHistory.view
@@ -22,11 +18,15 @@ export class AuthHistoryApi implements HasGetMany<AuthHistory>, HasGetById<AuthH
22
18
  query?: ListQuery<AuthHistory> & { paginate?: true },
23
19
  headers?: Record<string, string>,
24
20
  ): Promise<Paginated<AuthHistory>>
21
+ getMany(
22
+ query?: ListQuery<AuthHistory>,
23
+ headers?: Record<string, string>,
24
+ ): Promise<Paginated<AuthHistory> | AuthHistory[]>
25
25
  getMany(
26
26
  query?: ListQuery<AuthHistory>,
27
27
  headers?: Record<string, string>,
28
28
  ): Promise<Paginated<AuthHistory> | AuthHistory[]> {
29
- const queryString = query ? `?${qs.stringify(query)}` : ''
29
+ const queryString = this.toQueryString(query)
30
30
  return this.client.get<Paginated<AuthHistory> | AuthHistory[]>(
31
31
  `/auth-history${queryString}`,
32
32
  headers,
@@ -96,7 +96,7 @@ describe('CampaignsApi', () => {
96
96
  await api.getMany({ page: 2, perPage: 5 })
97
97
  const url = vi.mocked(client.get).mock.calls[0][0] as string
98
98
  expect(url).toContain('/campaigns?')
99
- expect(url).toContain('page=2')
99
+ expect(decodeURIComponent(url)).toContain('"page":2')
100
100
  })
101
101
 
102
102
  it('forwards custom headers', async () => {
@@ -1,15 +1,13 @@
1
- import type { ApiClient } from '../../core/ApiClient'
1
+ import { BaseApi } from '../../core/BaseApi'
2
2
  import type { HasCreate } from '../../core/types'
3
3
  import type { ClientFeedback, CreateClientFeedbackPayload } from './types'
4
4
 
5
- export class ClientFeedbackApi implements HasCreate<ClientFeedback, CreateClientFeedbackPayload> {
6
- private readonly client: ApiClient
5
+ export class ClientFeedbackApi
6
+ extends BaseApi
7
+ implements HasCreate<ClientFeedback, CreateClientFeedbackPayload>
8
+ {
7
9
  private readonly basePath = '/client-feedback'
8
10
 
9
- constructor(client: ApiClient) {
10
- this.client = client
11
- }
12
-
13
11
  /** Creates a client feedback record for a ticket (accountId, ticketId, and feedback text are required). */
14
12
  create(
15
13
  body: CreateClientFeedbackPayload,
@@ -103,7 +103,7 @@ describe('ContactsApi', () => {
103
103
  await api.getMany({ page: 2, perPage: 5 })
104
104
  const url = vi.mocked(client.get).mock.calls[0][0] as string
105
105
  expect(url).toContain('/contacts?')
106
- expect(url).toContain('page=2')
106
+ expect(decodeURIComponent(url)).toContain('"page":2')
107
107
  })
108
108
 
109
109
  it('forwards custom headers', async () => {
@@ -35,7 +35,7 @@ export class ContactsApi extends BaseCrudApi<Contact, CreateContactPayload, Upda
35
35
  * @permissions contacts.view
36
36
  */
37
37
  count(query?: CountContactsQuery, headers?: Record<string, string>): Promise<{ count: number }> {
38
- const queryString = query ? `?${qs.stringify(query)}` : ''
38
+ const queryString = this.toQueryString(query)
39
39
  return this.client.get<{ count: number }>(`${this.basePath}/count${queryString}`, headers)
40
40
  }
41
41
 
@@ -62,7 +62,7 @@ export class ContactsApi extends BaseCrudApi<Contact, CreateContactPayload, Upda
62
62
  query?: ListQuery<Contact>,
63
63
  headers?: Record<string, string>,
64
64
  ): Promise<Paginated<Contact>> {
65
- const queryString = query ? `?${qs.stringify(query)}` : ''
65
+ const queryString = this.toQueryString(query)
66
66
  return this.client.get<Paginated<Contact>>(`${this.basePath}/forward${queryString}`, headers)
67
67
  }
68
68
 
@@ -1,4 +1,4 @@
1
- import type { ApiClient } from '../../core/ApiClient'
1
+ import { BaseApi } from '../../core/BaseApi'
2
2
  import type { Account } from '../accounts/types'
3
3
  import type { User } from '../users/types'
4
4
  import type {
@@ -10,13 +10,7 @@ import type {
10
10
  UpdateMeStatusPayload,
11
11
  } from './types'
12
12
 
13
- export class MeApi {
14
- protected readonly client: ApiClient
15
-
16
- constructor(client: ApiClient) {
17
- this.client = client
18
- }
19
-
13
+ export class MeApi extends BaseApi {
20
14
  /**
21
15
  * Returns the currently authenticated user, including their roles, departments, and timetable.
22
16
  * @permissions users.view
@@ -87,8 +87,8 @@ describe('MessagesApi', () => {
87
87
  await api.getMany({ page: 2, perPage: 5 })
88
88
  const url = vi.mocked(client.get).mock.calls[0][0] as string
89
89
  expect(url).toContain('/messages?')
90
- expect(url).toContain('page=2')
91
- expect(url).toContain('perPage=5')
90
+ expect(decodeURIComponent(url)).toContain('"page":2')
91
+ expect(decodeURIComponent(url)).toContain('"perPage":5')
92
92
  })
93
93
 
94
94
  it('forwards custom headers', async () => {
@@ -0,0 +1,198 @@
1
+ import { afterEach, describe, expect, it, vi } from 'vitest'
2
+ import qs from 'qs'
3
+ import type { ApiClient } from '../core/ApiClient'
4
+ import { BaseApiClient } from '../core/BaseApiClient'
5
+ import type { QueryFormat } from '../core/queryString'
6
+ import { AuthHistoryApi } from './authHistory/AuthHistoryApi'
7
+ import { ContactsApi } from './contacts/ContactsApi'
8
+ import { ServiceAccessManagementApi } from './serviceAccessManagement/ServiceAccessManagementApi'
9
+ import { StickerUsersApi } from './stickerUsers/StickerUsersApi'
10
+ import { TermsApi } from './terms/TermsApi'
11
+
12
+ /**
13
+ * Every method that sends a list/get query must serialize it in the client's `queryFormat` and
14
+ * honor `withQueryFormat`. A method listed here that ignored the format would fail below.
15
+ */
16
+
17
+ function createMockClient(queryFormat?: QueryFormat): ApiClient {
18
+ return {
19
+ ...(queryFormat && { queryFormat }),
20
+ setAccessToken: vi.fn().mockReturnThis(),
21
+ request: vi.fn(),
22
+ get: vi.fn().mockResolvedValue([]),
23
+ post: vi.fn(),
24
+ put: vi.fn(),
25
+ patch: vi.fn(),
26
+ delete: vi.fn(),
27
+ }
28
+ }
29
+
30
+ const listQuery = { where: { name: 'x' }, page: 2, perPage: 5 }
31
+ const getQuery = { attributes: ['id'] }
32
+
33
+ type Case = {
34
+ name: string
35
+ path: string
36
+ query: object
37
+ /** Calls the method on the API built from `client`, optionally through `withQueryFormat`. */
38
+ call: (client: ApiClient, override?: QueryFormat) => Promise<unknown>
39
+ }
40
+
41
+ const cases: Case[] = [
42
+ {
43
+ name: 'ContactsApi.getMany (BaseCrudApi)',
44
+ path: '/contacts',
45
+ query: listQuery,
46
+ call: (client, f) => {
47
+ const api = new ContactsApi(client)
48
+ return (f ? api.withQueryFormat(f) : api).getMany(listQuery)
49
+ },
50
+ },
51
+ {
52
+ name: 'ContactsApi.getById (BaseCrudApi)',
53
+ path: '/contacts/c1',
54
+ query: getQuery,
55
+ call: (client, f) => {
56
+ const api = new ContactsApi(client)
57
+ return (f ? api.withQueryFormat(f) : api).getById('c1', { attributes: ['id'] })
58
+ },
59
+ },
60
+ {
61
+ name: 'ContactsApi.count',
62
+ path: '/contacts/count',
63
+ query: listQuery,
64
+ call: (client, f) => {
65
+ const api = new ContactsApi(client)
66
+ return (f ? api.withQueryFormat(f) : api).count(listQuery)
67
+ },
68
+ },
69
+ {
70
+ name: 'ContactsApi.forward',
71
+ path: '/contacts/forward',
72
+ query: listQuery,
73
+ call: (client, f) => {
74
+ const api = new ContactsApi(client)
75
+ return (f ? api.withQueryFormat(f) : api).forward(listQuery)
76
+ },
77
+ },
78
+ {
79
+ name: 'AuthHistoryApi.getMany',
80
+ path: '/auth-history',
81
+ query: { page: 2, perPage: 5 },
82
+ call: (client, f) => {
83
+ const api = new AuthHistoryApi(client)
84
+ return (f ? api.withQueryFormat(f) : api).getMany({ page: 2, perPage: 5 })
85
+ },
86
+ },
87
+ {
88
+ name: 'ServiceAccessManagementApi.getMany',
89
+ path: '/service-access-management',
90
+ query: { page: 2, perPage: 5 },
91
+ call: (client, f) => {
92
+ const api = new ServiceAccessManagementApi(client)
93
+ return (f ? api.withQueryFormat(f) : api).getMany({ page: 2, perPage: 5 })
94
+ },
95
+ },
96
+ {
97
+ name: 'StickerUsersApi.getMany',
98
+ path: '/sticker-users',
99
+ query: { page: 2, perPage: 5 },
100
+ call: (client, f) => {
101
+ const api = new StickerUsersApi(client)
102
+ return (f ? api.withQueryFormat(f) : api).getMany({ page: 2, perPage: 5 })
103
+ },
104
+ },
105
+ {
106
+ name: 'TermsApi.getById',
107
+ path: '/terms/t1',
108
+ query: getQuery,
109
+ call: (client, f) => {
110
+ const api = new TermsApi(client)
111
+ return (f ? api.withQueryFormat(f) : api).getById('t1', { attributes: ['id'] })
112
+ },
113
+ },
114
+ ]
115
+
116
+ const jsonUrl = (path: string, query: object) =>
117
+ `${path}?query=${encodeURIComponent(JSON.stringify(query))}`
118
+ const qsUrl = (path: string, query: object) => `${path}?${qs.stringify(query)}`
119
+ const calledUrl = (client: ApiClient) => vi.mocked(client.get).mock.calls.at(0)?.at(0)
120
+
121
+ describe.each(cases)('$name', ({ path, query, call }) => {
122
+ it("sends JSON with the default client format ('json')", async () => {
123
+ const client = createMockClient()
124
+ await call(client)
125
+ expect(calledUrl(client)).toBe(jsonUrl(path, query))
126
+ })
127
+
128
+ it("sends bracket notation with a 'qs' client", async () => {
129
+ const client = createMockClient('qs')
130
+ await call(client)
131
+ expect(calledUrl(client)).toBe(qsUrl(path, query))
132
+ })
133
+
134
+ it("withQueryFormat('qs') overrides a 'json' client", async () => {
135
+ const client = createMockClient()
136
+ await call(client, 'qs')
137
+ expect(calledUrl(client)).toBe(qsUrl(path, query))
138
+ })
139
+
140
+ it("withQueryFormat('json') overrides a 'qs' client", async () => {
141
+ const client = createMockClient('qs')
142
+ await call(client, 'json')
143
+ expect(calledUrl(client)).toBe(jsonUrl(path, query))
144
+ })
145
+ })
146
+
147
+ describe('query format through BaseApiClient', () => {
148
+ afterEach(() => {
149
+ vi.restoreAllMocks()
150
+ })
151
+
152
+ const mockFetch = () =>
153
+ vi
154
+ .spyOn(globalThis, 'fetch')
155
+ .mockImplementation(
156
+ async () =>
157
+ new Response('[]', { status: 200, headers: { 'Content-Type': 'application/json' } }),
158
+ )
159
+
160
+ it('builds the full ?query=<JSON> URL by default, keeping null typed', async () => {
161
+ const fetchSpy = mockFetch()
162
+ const contacts = new ContactsApi(new BaseApiClient('https://api.example.com/'))
163
+
164
+ await contacts.getMany({ where: { name: null }, paginate: false })
165
+
166
+ const query = '{"where":{"name":null},"paginate":false}'
167
+ expect(fetchSpy.mock.calls[0]?.[0]).toBe(
168
+ `https://api.example.com/contacts?query=${encodeURIComponent(query)}`,
169
+ )
170
+ })
171
+
172
+ it("builds the bracket URL with queryFormat 'qs'", async () => {
173
+ const fetchSpy = mockFetch()
174
+ const client = new BaseApiClient('https://api.example.com', undefined, { queryFormat: 'qs' })
175
+
176
+ await new ContactsApi(client).getMany({ where: { name: 'x' }, paginate: false })
177
+
178
+ expect(decodeURIComponent(fetchSpy.mock.calls[0]?.[0] as string)).toBe(
179
+ 'https://api.example.com/contacts?where[name]=x&paginate=false',
180
+ )
181
+ })
182
+
183
+ it("setAccessToken on a copy's client only affects the copy", async () => {
184
+ const fetchSpy = mockFetch()
185
+ const client = new BaseApiClient('https://api.example.com', 'original')
186
+ const contacts = new ContactsApi(client)
187
+ const copy = contacts.withQueryFormat('qs')
188
+
189
+ copy.client.setAccessToken('copy-only')
190
+ await contacts.getMany({ paginate: false })
191
+ await copy.getMany({ paginate: false })
192
+
193
+ const authorization = (call: number) =>
194
+ (fetchSpy.mock.calls[call]?.[1]?.headers as Record<string, string>).Authorization
195
+ expect(authorization(0)).toBe('Bearer original')
196
+ expect(authorization(1)).toBe('Bearer copy-only')
197
+ })
198
+ })
@@ -63,7 +63,7 @@ describe('ServiceAccessManagementApi', () => {
63
63
  await api.getMany({ page: 2, perPage: 5 })
64
64
  const url = vi.mocked(client.get).mock.calls[0][0] as string
65
65
  expect(url).toContain('/service-access-management?')
66
- expect(url).toContain('page=2')
66
+ expect(decodeURIComponent(url)).toContain('"page":2')
67
67
  })
68
68
 
69
69
  it('forwards custom headers', async () => {
@@ -77,7 +77,7 @@ describe('ServiceAccessManagementApi', () => {
77
77
  vi.mocked(client.get).mockResolvedValue([record])
78
78
  const result = await api.getMany({ paginate: false })
79
79
  const url = vi.mocked(client.get).mock.calls[0][0] as string
80
- expect(url).toContain('paginate=false')
80
+ expect(decodeURIComponent(url)).toContain('"paginate":false')
81
81
  expect(result).toEqual([record])
82
82
  })
83
83
 
@@ -1,15 +1,11 @@
1
- import qs from 'qs'
2
- import type { ApiClient } from '../../core/ApiClient'
1
+ import { BaseApi } from '../../core/BaseApi'
3
2
  import type { ListQuery, Paginated, HasGetMany } from '../../core/types'
4
3
  import type { ServiceAccessManagement } from './types'
5
4
 
6
- export class ServiceAccessManagementApi implements HasGetMany<ServiceAccessManagement> {
7
- private readonly client: ApiClient
8
-
9
- constructor(client: ApiClient) {
10
- this.client = client
11
- }
12
-
5
+ export class ServiceAccessManagementApi
6
+ extends BaseApi
7
+ implements HasGetMany<ServiceAccessManagement>
8
+ {
13
9
  /** Returns a paginated list of which users have access to which services. */
14
10
  getMany(
15
11
  query: ListQuery<ServiceAccessManagement> & { paginate: false },
@@ -19,11 +15,15 @@ export class ServiceAccessManagementApi implements HasGetMany<ServiceAccessManag
19
15
  query?: ListQuery<ServiceAccessManagement> & { paginate?: true },
20
16
  headers?: Record<string, string>,
21
17
  ): Promise<Paginated<ServiceAccessManagement>>
18
+ getMany(
19
+ query?: ListQuery<ServiceAccessManagement>,
20
+ headers?: Record<string, string>,
21
+ ): Promise<Paginated<ServiceAccessManagement> | ServiceAccessManagement[]>
22
22
  getMany(
23
23
  query?: ListQuery<ServiceAccessManagement>,
24
24
  headers?: Record<string, string>,
25
25
  ): Promise<Paginated<ServiceAccessManagement> | ServiceAccessManagement[]> {
26
- const queryString = query ? `?${qs.stringify(query)}` : ''
26
+ const queryString = this.toQueryString(query)
27
27
  return this.client.get<Paginated<ServiceAccessManagement> | ServiceAccessManagement[]>(
28
28
  `/service-access-management${queryString}`,
29
29
  headers,
@@ -66,7 +66,7 @@ describe('StickerUsersApi', () => {
66
66
  await api.getMany({ page: 2, perPage: 5 })
67
67
  const url = vi.mocked(client.get).mock.calls[0][0] as string
68
68
  expect(url).toContain('/sticker-users?')
69
- expect(url).toContain('page=2')
69
+ expect(decodeURIComponent(url)).toContain('"page":2')
70
70
  })
71
71
 
72
72
  it('forwards custom headers', async () => {