@dugjason/front-node 0.1.0-beta.2 → 0.2.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 (303) hide show
  1. package/{LICENSE.md → LICENSE} +2 -2
  2. package/README.md +41 -258
  3. package/dist/index.cjs +2 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +11907 -0
  6. package/dist/index.d.cts.map +1 -0
  7. package/dist/index.d.mts +11907 -0
  8. package/dist/index.d.mts.map +1 -0
  9. package/dist/index.mjs +2 -0
  10. package/dist/index.mjs.map +1 -0
  11. package/package.json +67 -38
  12. package/dist/client.d.ts +0 -53
  13. package/dist/client.d.ts.map +0 -1
  14. package/dist/client.js +0 -230
  15. package/dist/client.js.map +0 -1
  16. package/dist/core/client.d.ts +0 -36
  17. package/dist/core/client.d.ts.map +0 -1
  18. package/dist/core/client.js +0 -89
  19. package/dist/core/client.js.map +0 -1
  20. package/dist/core/errors.d.ts +0 -55
  21. package/dist/core/errors.d.ts.map +0 -1
  22. package/dist/core/errors.js +0 -124
  23. package/dist/core/errors.js.map +0 -1
  24. package/dist/core/paginator.d.ts +0 -88
  25. package/dist/core/paginator.d.ts.map +0 -1
  26. package/dist/core/paginator.js +0 -129
  27. package/dist/core/paginator.js.map +0 -1
  28. package/dist/core/resource.d.ts +0 -143
  29. package/dist/core/resource.d.ts.map +0 -1
  30. package/dist/core/resource.js +0 -132
  31. package/dist/core/resource.js.map +0 -1
  32. package/dist/endpoints/accounts.d.ts +0 -34
  33. package/dist/endpoints/accounts.d.ts.map +0 -1
  34. package/dist/endpoints/accounts.js +0 -85
  35. package/dist/endpoints/accounts.js.map +0 -1
  36. package/dist/endpoints/analytics.d.ts +0 -32
  37. package/dist/endpoints/analytics.d.ts.map +0 -1
  38. package/dist/endpoints/analytics.js +0 -48
  39. package/dist/endpoints/analytics.js.map +0 -1
  40. package/dist/endpoints/applications.d.ts +0 -15
  41. package/dist/endpoints/applications.d.ts.map +0 -1
  42. package/dist/endpoints/applications.js +0 -17
  43. package/dist/endpoints/applications.js.map +0 -1
  44. package/dist/endpoints/attachments.d.ts +0 -8
  45. package/dist/endpoints/attachments.d.ts.map +0 -1
  46. package/dist/endpoints/attachments.js +0 -10
  47. package/dist/endpoints/attachments.js.map +0 -1
  48. package/dist/endpoints/channels.d.ts +0 -41
  49. package/dist/endpoints/channels.d.ts.map +0 -1
  50. package/dist/endpoints/channels.js +0 -64
  51. package/dist/endpoints/channels.js.map +0 -1
  52. package/dist/endpoints/comments.d.ts +0 -30
  53. package/dist/endpoints/comments.d.ts.map +0 -1
  54. package/dist/endpoints/comments.js +0 -45
  55. package/dist/endpoints/comments.js.map +0 -1
  56. package/dist/endpoints/contacts.d.ts +0 -46
  57. package/dist/endpoints/contacts.d.ts.map +0 -1
  58. package/dist/endpoints/contacts.js +0 -99
  59. package/dist/endpoints/contacts.js.map +0 -1
  60. package/dist/endpoints/conversations.d.ts +0 -77
  61. package/dist/endpoints/conversations.d.ts.map +0 -1
  62. package/dist/endpoints/conversations.js +0 -221
  63. package/dist/endpoints/conversations.js.map +0 -1
  64. package/dist/endpoints/drafts.d.ts +0 -12
  65. package/dist/endpoints/drafts.d.ts.map +0 -1
  66. package/dist/endpoints/drafts.js +0 -26
  67. package/dist/endpoints/drafts.js.map +0 -1
  68. package/dist/endpoints/events.d.ts +0 -13
  69. package/dist/endpoints/events.d.ts.map +0 -1
  70. package/dist/endpoints/events.js +0 -21
  71. package/dist/endpoints/events.js.map +0 -1
  72. package/dist/endpoints/inboxes.d.ts +0 -42
  73. package/dist/endpoints/inboxes.d.ts.map +0 -1
  74. package/dist/endpoints/inboxes.js +0 -83
  75. package/dist/endpoints/inboxes.js.map +0 -1
  76. package/dist/endpoints/knowledge-base-articles.d.ts +0 -8
  77. package/dist/endpoints/knowledge-base-articles.d.ts.map +0 -1
  78. package/dist/endpoints/knowledge-base-articles.js +0 -10
  79. package/dist/endpoints/knowledge-base-articles.js.map +0 -1
  80. package/dist/endpoints/knowledge-bases.d.ts +0 -50
  81. package/dist/endpoints/knowledge-bases.d.ts.map +0 -1
  82. package/dist/endpoints/knowledge-bases.js +0 -131
  83. package/dist/endpoints/knowledge-bases.js.map +0 -1
  84. package/dist/endpoints/links.d.ts +0 -30
  85. package/dist/endpoints/links.d.ts.map +0 -1
  86. package/dist/endpoints/links.js +0 -67
  87. package/dist/endpoints/links.js.map +0 -1
  88. package/dist/endpoints/message-template-folders.d.ts +0 -38
  89. package/dist/endpoints/message-template-folders.d.ts.map +0 -1
  90. package/dist/endpoints/message-template-folders.js +0 -114
  91. package/dist/endpoints/message-template-folders.js.map +0 -1
  92. package/dist/endpoints/message-templates.d.ts +0 -30
  93. package/dist/endpoints/message-templates.d.ts.map +0 -1
  94. package/dist/endpoints/message-templates.js +0 -69
  95. package/dist/endpoints/message-templates.js.map +0 -1
  96. package/dist/endpoints/messages.d.ts +0 -21
  97. package/dist/endpoints/messages.d.ts.map +0 -1
  98. package/dist/endpoints/messages.js +0 -31
  99. package/dist/endpoints/messages.js.map +0 -1
  100. package/dist/endpoints/rules.d.ts +0 -16
  101. package/dist/endpoints/rules.d.ts.map +0 -1
  102. package/dist/endpoints/rules.js +0 -21
  103. package/dist/endpoints/rules.js.map +0 -1
  104. package/dist/endpoints/shifts.d.ts +0 -46
  105. package/dist/endpoints/shifts.d.ts.map +0 -1
  106. package/dist/endpoints/shifts.js +0 -70
  107. package/dist/endpoints/shifts.js.map +0 -1
  108. package/dist/endpoints/signatures.d.ts +0 -36
  109. package/dist/endpoints/signatures.d.ts.map +0 -1
  110. package/dist/endpoints/signatures.js +0 -52
  111. package/dist/endpoints/signatures.js.map +0 -1
  112. package/dist/endpoints/statuses.d.ts +0 -15
  113. package/dist/endpoints/statuses.d.ts.map +0 -1
  114. package/dist/endpoints/statuses.js +0 -22
  115. package/dist/endpoints/statuses.js.map +0 -1
  116. package/dist/endpoints/tags.d.ts +0 -30
  117. package/dist/endpoints/tags.d.ts.map +0 -1
  118. package/dist/endpoints/tags.js +0 -49
  119. package/dist/endpoints/tags.js.map +0 -1
  120. package/dist/endpoints/teammate-groups.d.ts +0 -47
  121. package/dist/endpoints/teammate-groups.d.ts.map +0 -1
  122. package/dist/endpoints/teammate-groups.js +0 -101
  123. package/dist/endpoints/teammate-groups.js.map +0 -1
  124. package/dist/endpoints/teammates.d.ts +0 -28
  125. package/dist/endpoints/teammates.d.ts.map +0 -1
  126. package/dist/endpoints/teammates.js +0 -59
  127. package/dist/endpoints/teammates.js.map +0 -1
  128. package/dist/endpoints/teams.d.ts +0 -37
  129. package/dist/endpoints/teams.d.ts.map +0 -1
  130. package/dist/endpoints/teams.js +0 -79
  131. package/dist/endpoints/teams.js.map +0 -1
  132. package/dist/front.d.ts +0 -103
  133. package/dist/front.d.ts.map +0 -1
  134. package/dist/front.js +0 -162
  135. package/dist/front.js.map +0 -1
  136. package/dist/generated/client/client.gen.d.ts +0 -3
  137. package/dist/generated/client/client.gen.d.ts.map +0 -1
  138. package/dist/generated/client/client.gen.js +0 -204
  139. package/dist/generated/client/client.gen.js.map +0 -1
  140. package/dist/generated/client/index.d.ts +0 -8
  141. package/dist/generated/client/index.d.ts.map +0 -1
  142. package/dist/generated/client/index.js +0 -6
  143. package/dist/generated/client/index.js.map +0 -1
  144. package/dist/generated/client/types.gen.d.ts +0 -125
  145. package/dist/generated/client/types.gen.d.ts.map +0 -1
  146. package/dist/generated/client/types.gen.js +0 -3
  147. package/dist/generated/client/types.gen.js.map +0 -1
  148. package/dist/generated/client/utils.gen.d.ts +0 -39
  149. package/dist/generated/client/utils.gen.d.ts.map +0 -1
  150. package/dist/generated/client/utils.gen.js +0 -230
  151. package/dist/generated/client/utils.gen.js.map +0 -1
  152. package/dist/generated/client.gen.d.ts +0 -13
  153. package/dist/generated/client.gen.d.ts.map +0 -1
  154. package/dist/generated/client.gen.js +0 -6
  155. package/dist/generated/client.gen.js.map +0 -1
  156. package/dist/generated/core/auth.gen.d.ts +0 -19
  157. package/dist/generated/core/auth.gen.d.ts.map +0 -1
  158. package/dist/generated/core/auth.gen.js +0 -15
  159. package/dist/generated/core/auth.gen.js.map +0 -1
  160. package/dist/generated/core/bodySerializer.gen.d.ts +0 -18
  161. package/dist/generated/core/bodySerializer.gen.d.ts.map +0 -1
  162. package/dist/generated/core/bodySerializer.gen.js +0 -58
  163. package/dist/generated/core/bodySerializer.gen.js.map +0 -1
  164. package/dist/generated/core/params.gen.d.ts +0 -34
  165. package/dist/generated/core/params.gen.d.ts.map +0 -1
  166. package/dist/generated/core/params.gen.js +0 -89
  167. package/dist/generated/core/params.gen.js.map +0 -1
  168. package/dist/generated/core/pathSerializer.gen.d.ts +0 -34
  169. package/dist/generated/core/pathSerializer.gen.d.ts.map +0 -1
  170. package/dist/generated/core/pathSerializer.gen.js +0 -115
  171. package/dist/generated/core/pathSerializer.gen.js.map +0 -1
  172. package/dist/generated/core/serverSentEvents.gen.d.ts +0 -72
  173. package/dist/generated/core/serverSentEvents.gen.d.ts.map +0 -1
  174. package/dist/generated/core/serverSentEvents.gen.js +0 -136
  175. package/dist/generated/core/serverSentEvents.gen.js.map +0 -1
  176. package/dist/generated/core/types.gen.d.ts +0 -79
  177. package/dist/generated/core/types.gen.d.ts.map +0 -1
  178. package/dist/generated/core/types.gen.js +0 -3
  179. package/dist/generated/core/types.gen.js.map +0 -1
  180. package/dist/generated/core/utils.gen.d.ts +0 -15
  181. package/dist/generated/core/utils.gen.d.ts.map +0 -1
  182. package/dist/generated/core/utils.gen.js +0 -70
  183. package/dist/generated/core/utils.gen.js.map +0 -1
  184. package/dist/generated/sdk.gen.d.ts +0 -1292
  185. package/dist/generated/sdk.gen.d.ts.map +0 -1
  186. package/dist/generated/sdk.gen.js +0 -4202
  187. package/dist/generated/sdk.gen.js.map +0 -1
  188. package/dist/generated/types.gen.d.ts +0 -8492
  189. package/dist/generated/types.gen.d.ts.map +0 -1
  190. package/dist/generated/types.gen.js +0 -149
  191. package/dist/generated/types.gen.js.map +0 -1
  192. package/dist/index.d.ts +0 -28
  193. package/dist/index.d.ts.map +0 -1
  194. package/dist/index.js +0 -6
  195. package/dist/index.js.map +0 -1
  196. package/dist/oauth.d.ts +0 -28
  197. package/dist/oauth.d.ts.map +0 -1
  198. package/dist/oauth.js +0 -82
  199. package/dist/oauth.js.map +0 -1
  200. package/dist/resources/accounts.d.ts +0 -16
  201. package/dist/resources/accounts.d.ts.map +0 -1
  202. package/dist/resources/accounts.js +0 -37
  203. package/dist/resources/accounts.js.map +0 -1
  204. package/dist/resources/analytics.d.ts +0 -36
  205. package/dist/resources/analytics.d.ts.map +0 -1
  206. package/dist/resources/analytics.js +0 -82
  207. package/dist/resources/analytics.js.map +0 -1
  208. package/dist/resources/applications.d.ts +0 -9
  209. package/dist/resources/applications.d.ts.map +0 -1
  210. package/dist/resources/applications.js +0 -13
  211. package/dist/resources/applications.js.map +0 -1
  212. package/dist/resources/channels.d.ts +0 -18
  213. package/dist/resources/channels.d.ts.map +0 -1
  214. package/dist/resources/channels.js +0 -35
  215. package/dist/resources/channels.js.map +0 -1
  216. package/dist/resources/comments.d.ts +0 -18
  217. package/dist/resources/comments.d.ts.map +0 -1
  218. package/dist/resources/comments.js +0 -36
  219. package/dist/resources/comments.js.map +0 -1
  220. package/dist/resources/contacts.d.ts +0 -16
  221. package/dist/resources/contacts.d.ts.map +0 -1
  222. package/dist/resources/contacts.js +0 -37
  223. package/dist/resources/contacts.js.map +0 -1
  224. package/dist/resources/conversations.d.ts +0 -24
  225. package/dist/resources/conversations.d.ts.map +0 -1
  226. package/dist/resources/conversations.js +0 -55
  227. package/dist/resources/conversations.js.map +0 -1
  228. package/dist/resources/drafts.d.ts +0 -15
  229. package/dist/resources/drafts.d.ts.map +0 -1
  230. package/dist/resources/drafts.js +0 -34
  231. package/dist/resources/drafts.js.map +0 -1
  232. package/dist/resources/events.d.ts +0 -23
  233. package/dist/resources/events.d.ts.map +0 -1
  234. package/dist/resources/events.js +0 -28
  235. package/dist/resources/events.js.map +0 -1
  236. package/dist/resources/inboxes.d.ts +0 -12
  237. package/dist/resources/inboxes.d.ts.map +0 -1
  238. package/dist/resources/inboxes.js +0 -25
  239. package/dist/resources/inboxes.js.map +0 -1
  240. package/dist/resources/knowledge-base-articles.d.ts +0 -15
  241. package/dist/resources/knowledge-base-articles.d.ts.map +0 -1
  242. package/dist/resources/knowledge-base-articles.js +0 -34
  243. package/dist/resources/knowledge-base-articles.js.map +0 -1
  244. package/dist/resources/knowledge-base-categories.d.ts +0 -16
  245. package/dist/resources/knowledge-base-categories.d.ts.map +0 -1
  246. package/dist/resources/knowledge-base-categories.js +0 -37
  247. package/dist/resources/knowledge-base-categories.js.map +0 -1
  248. package/dist/resources/knowledge-bases.d.ts +0 -15
  249. package/dist/resources/knowledge-bases.d.ts.map +0 -1
  250. package/dist/resources/knowledge-bases.js +0 -35
  251. package/dist/resources/knowledge-bases.js.map +0 -1
  252. package/dist/resources/links.d.ts +0 -12
  253. package/dist/resources/links.d.ts.map +0 -1
  254. package/dist/resources/links.js +0 -25
  255. package/dist/resources/links.js.map +0 -1
  256. package/dist/resources/message-template-folders.d.ts +0 -13
  257. package/dist/resources/message-template-folders.d.ts.map +0 -1
  258. package/dist/resources/message-template-folders.js +0 -41
  259. package/dist/resources/message-template-folders.js.map +0 -1
  260. package/dist/resources/message-templates.d.ts +0 -16
  261. package/dist/resources/message-templates.d.ts.map +0 -1
  262. package/dist/resources/message-templates.js +0 -50
  263. package/dist/resources/message-templates.js.map +0 -1
  264. package/dist/resources/messages.d.ts +0 -36
  265. package/dist/resources/messages.d.ts.map +0 -1
  266. package/dist/resources/messages.js +0 -55
  267. package/dist/resources/messages.js.map +0 -1
  268. package/dist/resources/rules.d.ts +0 -11
  269. package/dist/resources/rules.d.ts.map +0 -1
  270. package/dist/resources/rules.js +0 -22
  271. package/dist/resources/rules.js.map +0 -1
  272. package/dist/resources/shifts.d.ts +0 -14
  273. package/dist/resources/shifts.d.ts.map +0 -1
  274. package/dist/resources/shifts.js +0 -31
  275. package/dist/resources/shifts.js.map +0 -1
  276. package/dist/resources/signatures.d.ts +0 -17
  277. package/dist/resources/signatures.d.ts.map +0 -1
  278. package/dist/resources/signatures.js +0 -51
  279. package/dist/resources/signatures.js.map +0 -1
  280. package/dist/resources/statuses.d.ts +0 -13
  281. package/dist/resources/statuses.d.ts.map +0 -1
  282. package/dist/resources/statuses.js +0 -28
  283. package/dist/resources/statuses.js.map +0 -1
  284. package/dist/resources/tags.d.ts +0 -17
  285. package/dist/resources/tags.d.ts.map +0 -1
  286. package/dist/resources/tags.js +0 -53
  287. package/dist/resources/tags.js.map +0 -1
  288. package/dist/resources/teammate-groups.d.ts +0 -17
  289. package/dist/resources/teammate-groups.d.ts.map +0 -1
  290. package/dist/resources/teammate-groups.js +0 -25
  291. package/dist/resources/teammate-groups.js.map +0 -1
  292. package/dist/resources/teammates.d.ts +0 -17
  293. package/dist/resources/teammates.d.ts.map +0 -1
  294. package/dist/resources/teammates.js +0 -40
  295. package/dist/resources/teammates.js.map +0 -1
  296. package/dist/resources/teams.d.ts +0 -11
  297. package/dist/resources/teams.d.ts.map +0 -1
  298. package/dist/resources/teams.js +0 -28
  299. package/dist/resources/teams.js.map +0 -1
  300. package/dist/types.d.ts +0 -46
  301. package/dist/types.d.ts.map +0 -1
  302. package/dist/types.js +0 -2
  303. package/dist/types.js.map +0 -1
@@ -1,124 +0,0 @@
1
- /**
2
- * Base Front SDK error. All SDK errors extend this class.
3
- */
4
- export class FrontError extends Error {
5
- status;
6
- code;
7
- details;
8
- headers;
9
- constructor(message, status, code, details, headers) {
10
- super(message);
11
- this.status = status;
12
- this.code = code;
13
- this.details = details;
14
- this.headers = headers;
15
- this.name = "FrontError";
16
- }
17
- }
18
- /** 400 Bad Request */
19
- export class FrontBadRequestError extends FrontError {
20
- constructor(...args) {
21
- super(...args);
22
- this.name = "FrontBadRequestError";
23
- }
24
- }
25
- /** 401 Unauthorized */
26
- export class FrontUnauthorizedError extends FrontError {
27
- constructor(...args) {
28
- super(...args);
29
- this.name = "FrontUnauthorizedError";
30
- }
31
- }
32
- /** 403 Forbidden */
33
- export class FrontForbiddenError extends FrontError {
34
- constructor(...args) {
35
- super(...args);
36
- this.name = "FrontForbiddenError";
37
- }
38
- }
39
- /** 404 Not Found */
40
- export class FrontNotFoundError extends FrontError {
41
- constructor(...args) {
42
- super(...args);
43
- this.name = "FrontNotFoundError";
44
- }
45
- }
46
- /** 409 Conflict */
47
- export class FrontConflictError extends FrontError {
48
- constructor(...args) {
49
- super(...args);
50
- this.name = "FrontConflictError";
51
- }
52
- }
53
- /** 422 Unprocessable Entity */
54
- export class FrontUnprocessableEntityError extends FrontError {
55
- constructor(...args) {
56
- super(...args);
57
- this.name = "FrontUnprocessableEntityError";
58
- }
59
- }
60
- /** 429 Too Many Requests */
61
- export class FrontRateLimitError extends FrontError {
62
- constructor(...args) {
63
- super(...args);
64
- this.name = "FrontRateLimitError";
65
- }
66
- }
67
- /** 5xx Server Error */
68
- export class FrontServerError extends FrontError {
69
- constructor(...args) {
70
- super(...args);
71
- this.name = "FrontServerError";
72
- }
73
- }
74
- /**
75
- * Normalize unknown errors (thrown by fetch/generated client) into FrontError subclasses.
76
- *
77
- * - Preserves HTTP status and headers when available
78
- * - Attempts to read `message` and `code` from the thrown payload
79
- * - Maps common HTTP status codes to specific subclasses for easier matching
80
- *
81
- * @param error - The unknown error payload (string/object/Error)
82
- * @param response - The corresponding `Response`, if available
83
- * @returns A typed `FrontError` subclass
84
- */
85
- export function mapToFrontError(error, response) {
86
- // error could be a string, object, or already an Error/FrontError
87
- if (error instanceof FrontError)
88
- return error;
89
- console.log("error >", error);
90
- const status = response?.status;
91
- const headers = response?.headers;
92
- console.log("headers >", headers);
93
- const maybeObj = error;
94
- const code = typeof maybeObj === "object" &&
95
- maybeObj &&
96
- typeof maybeObj.code === "string"
97
- ? maybeObj.code
98
- : undefined;
99
- const message = typeof maybeObj === "object" &&
100
- maybeObj &&
101
- typeof maybeObj.message === "string"
102
- ? maybeObj.message
103
- : `HTTP ${status ?? "error"}`;
104
- const ctor = status === 400
105
- ? FrontBadRequestError
106
- : status === 401
107
- ? FrontUnauthorizedError
108
- : status === 403
109
- ? FrontForbiddenError
110
- : status === 404
111
- ? FrontNotFoundError
112
- : status === 409
113
- ? FrontConflictError
114
- : status === 422
115
- ? FrontUnprocessableEntityError
116
- : status === 429
117
- ? FrontRateLimitError
118
- : status && status >= 500
119
- ? FrontServerError
120
- : FrontError;
121
- console.log({ message, status, code, error, headers });
122
- return new ctor(message, status, code, error, headers);
123
- }
124
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
@@ -1,88 +0,0 @@
1
- export declare class Page<T> implements AsyncIterable<T> {
2
- readonly items: T[];
3
- private readonly _getNext;
4
- constructor(items: T[], _getNext: (() => Promise<{
5
- response: Response;
6
- page: Page<T>;
7
- } | null>) | null);
8
- /**
9
- * Whether there is another page available after the current one.
10
- */
11
- get hasNextPage(): boolean;
12
- /**
13
- * Fetch the next page of results, if available.
14
- *
15
- * @returns The next page pair (containing `Response` and `Page<T>`) or `null` if no more pages.
16
- */
17
- nextPage(): Promise<{
18
- response: Response;
19
- page: Page<T>;
20
- } | null>;
21
- /**
22
- * Iterate over the items in this page.
23
- */
24
- [Symbol.asyncIterator](): AsyncGenerator<Awaited<T>, void, unknown>;
25
- }
26
- /**
27
- * Parse the `page_token` query parameter from a `_pagination.next` URL.
28
- *
29
- * @param nextUrl - The `_pagination.next` absolute or relative URL
30
- * @returns The `page_token` value or `null` if it cannot be determined
31
- */
32
- export declare function parsePageTokenFromNextUrl(nextUrl?: string | null): string | null;
33
- /**
34
- * Safely read the `_pagination.next` URL from a list response body.
35
- *
36
- * @param data - The list response body
37
- * @returns The URL string if present, otherwise `null`
38
- */
39
- export declare function getNextUrlFromBody(data: unknown): string | null;
40
- /**
41
- * Extract the next `page_token` from a list response body.
42
- *
43
- * @param data - The list response body
44
- * @returns The `page_token` value or `null`
45
- */
46
- export declare function getNextPageTokenFromBody(data: unknown): string | null;
47
- /**
48
- * Build a `Page<TItem>` from an initial list response and provide a `fetchNext` closure
49
- * that retrieves subsequent pages, preserving the underlying `Response` object for each.
50
- *
51
- * The caller supplies `mapItems` to transform the list response into `TItem[]` and a `fetchNext`
52
- * function that accepts a `pageToken` and returns `{ response, data }` for the next page.
53
- *
54
- * @typeParam TItem - The item type contained in the page
55
- * @typeParam TListResponse - The concrete list response body type
56
- * @param args.data - The first page body
57
- * @param args.fetchNext - A function to fetch the next page given a token
58
- * @param args.mapItems - A function mapping a response body to an array of items
59
- * @returns The constructed `Page<TItem>` for the first page
60
- */
61
- export declare function buildPageFromListResponse<TItem, TListResponse>(args: {
62
- data: TListResponse;
63
- fetchNext: (pageToken: string) => Promise<{
64
- response: Response;
65
- data: TListResponse | undefined;
66
- }>;
67
- mapItems: (data: TListResponse) => TItem[];
68
- }): Page<TItem>;
69
- /** A pair of the raw `Response` and a `Page<T>` of items. */
70
- export type PagePair<T> = {
71
- response: Response;
72
- page: Page<T>;
73
- };
74
- /**
75
- * Create an async-iterable result from the first `PagePair<T>` that yields each
76
- * page pair as it is fetched via `nextPage()`. This allows
77
- *
78
- * ```ts
79
- * for await (const { response, page } of result) { ... }
80
- * ```
81
- *
82
- * while also providing direct access to the first `{ response, page }`.
83
- *
84
- * @param first - The first page pair
85
- * @returns An object containing the first page pair and an async iterator over subsequent pairs
86
- */
87
- export declare function makePagedResult<T>(first: PagePair<T>): PagePair<T> & AsyncIterable<PagePair<T>>;
88
- //# sourceMappingURL=paginator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paginator.d.ts","sourceRoot":"","sources":["../../src/core/paginator.ts"],"names":[],"mappings":"AAAA,qBAAa,IAAI,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;aAE5B,KAAK,EAAE,CAAC,EAAE;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADT,KAAK,EAAE,CAAC,EAAE,EACT,QAAQ,EACrB,CAAC,MAAM,OAAO,CAAC;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC,GAC7D,IAAI;IAEV;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IACD;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;IAGvE;;OAEG;IACI,CAAC,MAAM,CAAC,aAAa,CAAC;CAG9B;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,GAAG,IAAI,CASf;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAK/D;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAErE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;IACpE,IAAI,EAAE,aAAa,CAAA;IACnB,SAAS,EAAE,CACT,SAAS,EAAE,MAAM,KACd,OAAO,CAAC;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAAA;KAAE,CAAC,CAAA;IACrE,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,KAAK,EAAE,CAAA;CAC3C,GAAG,IAAI,CAAC,KAAK,CAAC,CAmBd;AAED,6DAA6D;AAC7D,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;CAAE,CAAA;AAE/D;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GACjB,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAa1C"}
@@ -1,129 +0,0 @@
1
- export class Page {
2
- items;
3
- _getNext;
4
- constructor(items, _getNext) {
5
- this.items = items;
6
- this._getNext = _getNext;
7
- }
8
- /**
9
- * Whether there is another page available after the current one.
10
- */
11
- get hasNextPage() {
12
- return !!this._getNext;
13
- }
14
- /**
15
- * Fetch the next page of results, if available.
16
- *
17
- * @returns The next page pair (containing `Response` and `Page<T>`) or `null` if no more pages.
18
- */
19
- async nextPage() {
20
- return this._getNext ? this._getNext() : null;
21
- }
22
- /**
23
- * Iterate over the items in this page.
24
- */
25
- async *[Symbol.asyncIterator]() {
26
- for (const i of this.items)
27
- yield i;
28
- }
29
- }
30
- /**
31
- * Parse the `page_token` query parameter from a `_pagination.next` URL.
32
- *
33
- * @param nextUrl - The `_pagination.next` absolute or relative URL
34
- * @returns The `page_token` value or `null` if it cannot be determined
35
- */
36
- export function parsePageTokenFromNextUrl(nextUrl) {
37
- if (!nextUrl)
38
- return null;
39
- try {
40
- const u = new URL(nextUrl, "https://api2.frontapp.com");
41
- const token = u.searchParams.get("page_token");
42
- return token;
43
- }
44
- catch {
45
- return null;
46
- }
47
- }
48
- /**
49
- * Safely read the `_pagination.next` URL from a list response body.
50
- *
51
- * @param data - The list response body
52
- * @returns The URL string if present, otherwise `null`
53
- */
54
- export function getNextUrlFromBody(data) {
55
- if (!data || typeof data !== "object")
56
- return null;
57
- const body = data;
58
- const next = body._pagination?.next;
59
- return typeof next === "string" ? next : null;
60
- }
61
- /**
62
- * Extract the next `page_token` from a list response body.
63
- *
64
- * @param data - The list response body
65
- * @returns The `page_token` value or `null`
66
- */
67
- export function getNextPageTokenFromBody(data) {
68
- return parsePageTokenFromNextUrl(getNextUrlFromBody(data));
69
- }
70
- /**
71
- * Build a `Page<TItem>` from an initial list response and provide a `fetchNext` closure
72
- * that retrieves subsequent pages, preserving the underlying `Response` object for each.
73
- *
74
- * The caller supplies `mapItems` to transform the list response into `TItem[]` and a `fetchNext`
75
- * function that accepts a `pageToken` and returns `{ response, data }` for the next page.
76
- *
77
- * @typeParam TItem - The item type contained in the page
78
- * @typeParam TListResponse - The concrete list response body type
79
- * @param args.data - The first page body
80
- * @param args.fetchNext - A function to fetch the next page given a token
81
- * @param args.mapItems - A function mapping a response body to an array of items
82
- * @returns The constructed `Page<TItem>` for the first page
83
- */
84
- export function buildPageFromListResponse(args) {
85
- const { data, fetchNext, mapItems } = args;
86
- const items = mapItems(data);
87
- const makeGetNext = (nextToken) => {
88
- return async () => {
89
- const { response, data: nextData } = await fetchNext(nextToken);
90
- if (!nextData)
91
- return null;
92
- const nextItems = mapItems(nextData);
93
- const token2 = getNextPageTokenFromBody(nextData);
94
- const nextPage = new Page(nextItems, token2 ? makeGetNext(token2) : null);
95
- return { response, page: nextPage };
96
- };
97
- };
98
- const token = getNextPageTokenFromBody(data);
99
- return new Page(items, token ? makeGetNext(token) : null);
100
- }
101
- /**
102
- * Create an async-iterable result from the first `PagePair<T>` that yields each
103
- * page pair as it is fetched via `nextPage()`. This allows
104
- *
105
- * ```ts
106
- * for await (const { response, page } of result) { ... }
107
- * ```
108
- *
109
- * while also providing direct access to the first `{ response, page }`.
110
- *
111
- * @param first - The first page pair
112
- * @returns An object containing the first page pair and an async iterator over subsequent pairs
113
- */
114
- export function makePagedResult(first) {
115
- return {
116
- ...first,
117
- async *[Symbol.asyncIterator]() {
118
- let current = first;
119
- while (current) {
120
- yield current;
121
- const next = await current.page.nextPage();
122
- if (!next)
123
- return;
124
- current = next;
125
- }
126
- },
127
- };
128
- }
129
- //# sourceMappingURL=paginator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paginator.js","sourceRoot":"","sources":["../../src/core/paginator.ts"],"names":[],"mappings":"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"}
@@ -1,143 +0,0 @@
1
- import { type PagePair } from "./paginator";
2
- /**
3
- * Base class for all resource namespaces.
4
- *
5
- * This class encapsulates shared behavior and utilities used by resource
6
- * wrappers. It is generic over two types:
7
- *
8
- * - TItem: The concrete domain instance type exposed by the resource
9
- * (e.g., FrontTag, FrontAccount).
10
- * - TRaw: The raw DTO shape returned by the generated client for the item
11
- * (e.g., TagResponse, AccountResponse).
12
- *
13
- * Subclasses must implement {@link makeItem} to define how a raw DTO is
14
- * transformed into a domain instance. By centralizing this transformation,
15
- * higher-level helpers such as {@link listPaginated} can construct items
16
- * without duplicated mapping code in each list method.
17
- */
18
- export declare abstract class APIResource<TItem = unknown, TRaw = unknown> {
19
- /**
20
- * Convert a raw DTO returned by the generated client into the domain
21
- * instance exposed by the resource.
22
- *
23
- * Subclasses should implement the minimal logic necessary to wrap the raw
24
- * data (typically `return new FrontX(raw)`), keeping domain
25
- * classes thin and delegating network operations back to the generated SDK.
26
- *
27
- * @param raw - The raw DTO for a single resource item
28
- * @returns The resource-specific domain instance
29
- */
30
- protected abstract makeItem(raw: TRaw): TItem;
31
- /**
32
- * Helper for list endpoints that use Front's standard pagination shape.
33
- *
34
- * This function wires the first page and an async iterator over subsequent
35
- * pages, while preserving the underlying `Response` object for each request.
36
- * It expects the list response body to contain an `_results` array and a
37
- * `_pagination.next` link that encodes the next `page_token`.
38
- *
39
- * Usage pattern in a resource wrapper:
40
- *
41
- * ```ts
42
- * async list(query?: ListXData["query"]) {
43
- * return this.listPaginated<ListXResponse, { query?: ListXData["query"]}>({
44
- * initialOptions: { query },
45
- * listCall: (options) => listX({ ...options }),
46
- * })
47
- * }
48
- * ```
49
- *
50
- * Notes
51
- * - The method automatically appends `page_token` to the provided
52
- * `initialOptions.query` on subsequent page fetches.
53
- * - Item mapping is handled via {@link makeItem}, avoiding per-call
54
- * mapping boilerplate.
55
- *
56
- * @typeParam TListResponse - The concrete list response type with `_results`
57
- * @typeParam TOptions - The options accepted by the generated list function,
58
- * which must include an optional `query.page_token` string
59
- * @param opts.initialOptions - Initial options passed to the generated list function
60
- * @param opts.listCall - The generated list function to execute
61
- * @returns The first page pair and an async iterable over subsequent page pairs
62
- */
63
- protected listPaginated<TListResponse extends {
64
- _results?: Array<TRaw>;
65
- }, TOptions extends {
66
- query?: {
67
- page_token?: string;
68
- };
69
- }>(opts: {
70
- initialOptions: TOptions;
71
- listCall: (options: TOptions) => Promise<{
72
- response: Response;
73
- data?: TListResponse;
74
- }>;
75
- }): Promise<PagePair<TItem> & AsyncIterable<PagePair<TItem>>>;
76
- /**
77
- * Helper for list endpoints that return a single, non-paginated array of results.
78
- *
79
- * Maps the `_results` array into domain items using {@link makeItem} and returns
80
- * a simple `{ response, data }` pair.
81
- */
82
- protected listWithoutPagination<TListResponse extends {
83
- _results?: Array<TRaw>;
84
- }>(opts: {
85
- listCall: () => Promise<{
86
- response: Response;
87
- data?: TListResponse;
88
- }>;
89
- }): Promise<{
90
- response: Response;
91
- data: TItem[];
92
- }>;
93
- /**
94
- * Helper for singular GET endpoints that return one entity.
95
- *
96
- * Provide a GET call closure that performs the request using the
97
- * generated SDK. The response body type must be assignable to `TRaw`.
98
- */
99
- protected getOne<TGet extends TRaw>(opts: {
100
- getCall: () => Promise<{
101
- response: Response;
102
- data?: TGet;
103
- }>;
104
- }): Promise<{
105
- item: TItem;
106
- response: Response;
107
- }>;
108
- /**
109
- * Helper for singular CREATE endpoints that return one entity.
110
- *
111
- * Provide a CREATE call closure that performs the request using the
112
- * generated SDK. The response body type must be assignable to `TRaw`.
113
- */
114
- protected createOne<TCreate extends TRaw>(opts: {
115
- createCall: () => Promise<{
116
- response: Response;
117
- data?: TCreate;
118
- }>;
119
- }): Promise<{
120
- item: TItem;
121
- response: Response;
122
- }>;
123
- }
124
- /**
125
- * Base class for domain instances (e.g., `FrontTag`, `FrontAccount`).
126
- *
127
- * Provides a shared shape for thin wrappers around raw API DTOs, exposing a
128
- * `toJSON()` method that returns the underlying raw data for serialization or
129
- * persistence. Subclasses can add getters for commonly accessed fields and
130
- * instance methods that delegate mutations back to the generated SDK.
131
- */
132
- export declare abstract class ResourceInstance<T> {
133
- protected _data: T;
134
- protected constructor(_data: T);
135
- /**
136
- * Return the underlying raw DTO for this domain instance.
137
- *
138
- * Prefer using the typed getters on subclasses for read access and methods
139
- * that call the generated SDK for mutations.
140
- */
141
- toJSON(): T;
142
- }
143
- //# sourceMappingURL=resource.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/core/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,QAAQ,EACd,MAAM,aAAa,CAAA;AAEpB;;;;;;;;;;;;;;;GAeG;AACH,8BAAsB,WAAW,CAAC,KAAK,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO;IAC/D;;;;;;;;;;OAUG;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,GAAG,KAAK;IAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;cACa,aAAa,CAC3B,aAAa,SAAS;QAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;KAAE,EAChD,QAAQ,SAAS;QAAE,KAAK,CAAC,EAAE;YAAE,UAAU,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,EACpD,IAAI,EAAE;QACN,cAAc,EAAE,QAAQ,CAAA;QACxB,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,OAAO,CAAC;YACvC,QAAQ,EAAE,QAAQ,CAAA;YAClB,IAAI,CAAC,EAAE,aAAa,CAAA;SACrB,CAAC,CAAA;KACH,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IA2B7D;;;;;OAKG;cACa,qBAAqB,CACnC,aAAa,SAAS;QAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;KAAE,EAChD,IAAI,EAAE;QACN,QAAQ,EAAE,MAAM,OAAO,CAAC;YAAE,QAAQ,EAAE,QAAQ,CAAC;YAAC,IAAI,CAAC,EAAE,aAAa,CAAA;SAAE,CAAC,CAAA;KACtE,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,KAAK,EAAE,CAAA;KAAE,CAAC;IAQlD;;;;;OAKG;cACa,MAAM,CAAC,IAAI,SAAS,IAAI,EAAE,IAAI,EAAE;QAC9C,OAAO,EAAE,MAAM,OAAO,CAAC;YAAE,QAAQ,EAAE,QAAQ,CAAC;YAAC,IAAI,CAAC,EAAE,IAAI,CAAA;SAAE,CAAC,CAAA;KAC5D,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,CAAC;IAOhD;;;;;OAKG;cACa,SAAS,CAAC,OAAO,SAAS,IAAI,EAAE,IAAI,EAAE;QACpD,UAAU,EAAE,MAAM,OAAO,CAAC;YAAE,QAAQ,EAAE,QAAQ,CAAC;YAAC,IAAI,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAA;KAClE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,CAAC;CAKjD;AAED;;;;;;;GAOG;AACH,8BAAsB,gBAAgB,CAAC,CAAC;IAChB,SAAS,CAAC,KAAK,EAAE,CAAC;IAAxC,SAAS,aAAuB,KAAK,EAAE,CAAC;IACxC;;;;;OAKG;IACH,MAAM,IAAI,CAAC;CAGZ"}
@@ -1,132 +0,0 @@
1
- import { buildPageFromListResponse, makePagedResult, } from "./paginator";
2
- /**
3
- * Base class for all resource namespaces.
4
- *
5
- * This class encapsulates shared behavior and utilities used by resource
6
- * wrappers. It is generic over two types:
7
- *
8
- * - TItem: The concrete domain instance type exposed by the resource
9
- * (e.g., FrontTag, FrontAccount).
10
- * - TRaw: The raw DTO shape returned by the generated client for the item
11
- * (e.g., TagResponse, AccountResponse).
12
- *
13
- * Subclasses must implement {@link makeItem} to define how a raw DTO is
14
- * transformed into a domain instance. By centralizing this transformation,
15
- * higher-level helpers such as {@link listPaginated} can construct items
16
- * without duplicated mapping code in each list method.
17
- */
18
- export class APIResource {
19
- /**
20
- * Helper for list endpoints that use Front's standard pagination shape.
21
- *
22
- * This function wires the first page and an async iterator over subsequent
23
- * pages, while preserving the underlying `Response` object for each request.
24
- * It expects the list response body to contain an `_results` array and a
25
- * `_pagination.next` link that encodes the next `page_token`.
26
- *
27
- * Usage pattern in a resource wrapper:
28
- *
29
- * ```ts
30
- * async list(query?: ListXData["query"]) {
31
- * return this.listPaginated<ListXResponse, { query?: ListXData["query"]}>({
32
- * initialOptions: { query },
33
- * listCall: (options) => listX({ ...options }),
34
- * })
35
- * }
36
- * ```
37
- *
38
- * Notes
39
- * - The method automatically appends `page_token` to the provided
40
- * `initialOptions.query` on subsequent page fetches.
41
- * - Item mapping is handled via {@link makeItem}, avoiding per-call
42
- * mapping boilerplate.
43
- *
44
- * @typeParam TListResponse - The concrete list response type with `_results`
45
- * @typeParam TOptions - The options accepted by the generated list function,
46
- * which must include an optional `query.page_token` string
47
- * @param opts.initialOptions - Initial options passed to the generated list function
48
- * @param opts.listCall - The generated list function to execute
49
- * @returns The first page pair and an async iterable over subsequent page pairs
50
- */
51
- async listPaginated(opts) {
52
- const { initialOptions, listCall } = opts;
53
- const result = await listCall(initialOptions);
54
- if (!result.data)
55
- throw new Error("No results");
56
- const page = buildPageFromListResponse({
57
- data: result.data,
58
- mapItems: (d) => (d._results ?? []).map((raw) => this.makeItem(raw)),
59
- fetchNext: async (pageToken) => {
60
- const nextOptions = {
61
- ...initialOptions,
62
- query: { ...(initialOptions.query ?? {}), page_token: pageToken },
63
- };
64
- const res2 = await listCall(nextOptions);
65
- return {
66
- response: res2.response,
67
- data: res2.data ?? undefined,
68
- };
69
- },
70
- });
71
- return makePagedResult({ response: result.response, page });
72
- }
73
- /**
74
- * Helper for list endpoints that return a single, non-paginated array of results.
75
- *
76
- * Maps the `_results` array into domain items using {@link makeItem} and returns
77
- * a simple `{ response, data }` pair.
78
- */
79
- async listWithoutPagination(opts) {
80
- const result = await opts.listCall();
81
- const items = (result.data?._results ?? []).map((raw) => this.makeItem(raw));
82
- return { response: result.response, data: items };
83
- }
84
- /**
85
- * Helper for singular GET endpoints that return one entity.
86
- *
87
- * Provide a GET call closure that performs the request using the
88
- * generated SDK. The response body type must be assignable to `TRaw`.
89
- */
90
- async getOne(opts) {
91
- const result = await opts.getCall();
92
- if (!result.data)
93
- throw new Error("Missing data");
94
- return { item: this.makeItem(result.data), response: result.response };
95
- }
96
- /**
97
- * Helper for singular CREATE endpoints that return one entity.
98
- *
99
- * Provide a CREATE call closure that performs the request using the
100
- * generated SDK. The response body type must be assignable to `TRaw`.
101
- */
102
- async createOne(opts) {
103
- const result = await opts.createCall();
104
- if (!result.data)
105
- throw new Error("Missing data");
106
- return { item: this.makeItem(result.data), response: result.response };
107
- }
108
- }
109
- /**
110
- * Base class for domain instances (e.g., `FrontTag`, `FrontAccount`).
111
- *
112
- * Provides a shared shape for thin wrappers around raw API DTOs, exposing a
113
- * `toJSON()` method that returns the underlying raw data for serialization or
114
- * persistence. Subclasses can add getters for commonly accessed fields and
115
- * instance methods that delegate mutations back to the generated SDK.
116
- */
117
- export class ResourceInstance {
118
- _data;
119
- constructor(_data) {
120
- this._data = _data;
121
- }
122
- /**
123
- * Return the underlying raw DTO for this domain instance.
124
- *
125
- * Prefer using the typed getters on subclasses for read access and methods
126
- * that call the generated SDK for mutations.
127
- */
128
- toJSON() {
129
- return this._data;
130
- }
131
- }
132
- //# sourceMappingURL=resource.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/core/resource.ts"],"names":[],"mappings":"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"}