@stigg/typescript 0.1.0-alpha.4 → 0.1.0-alpha.8

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 (276) hide show
  1. package/CHANGELOG.md +86 -0
  2. package/README.md +9 -0
  3. package/client.d.mts +4 -6
  4. package/client.d.mts.map +1 -1
  5. package/client.d.ts +4 -6
  6. package/client.d.ts.map +1 -1
  7. package/client.js +23 -21
  8. package/client.js.map +1 -1
  9. package/client.mjs +23 -21
  10. package/client.mjs.map +1 -1
  11. package/internal/parse.d.mts.map +1 -1
  12. package/internal/parse.d.ts.map +1 -1
  13. package/internal/parse.js +5 -0
  14. package/internal/parse.js.map +1 -1
  15. package/internal/parse.mjs +5 -0
  16. package/internal/parse.mjs.map +1 -1
  17. package/internal/qs/formats.d.mts +7 -0
  18. package/internal/qs/formats.d.mts.map +1 -0
  19. package/internal/qs/formats.d.ts +7 -0
  20. package/internal/qs/formats.d.ts.map +1 -0
  21. package/internal/qs/formats.js +13 -0
  22. package/internal/qs/formats.js.map +1 -0
  23. package/internal/qs/formats.mjs +9 -0
  24. package/internal/qs/formats.mjs.map +1 -0
  25. package/internal/qs/index.d.mts +10 -0
  26. package/internal/qs/index.d.mts.map +1 -0
  27. package/internal/qs/index.d.ts +10 -0
  28. package/internal/qs/index.d.ts.map +1 -0
  29. package/internal/qs/index.js +14 -0
  30. package/internal/qs/index.js.map +1 -0
  31. package/internal/qs/index.mjs +10 -0
  32. package/internal/qs/index.mjs.map +1 -0
  33. package/internal/qs/stringify.d.mts +3 -0
  34. package/internal/qs/stringify.d.mts.map +1 -0
  35. package/internal/qs/stringify.d.ts +3 -0
  36. package/internal/qs/stringify.d.ts.map +1 -0
  37. package/internal/qs/stringify.js +277 -0
  38. package/internal/qs/stringify.js.map +1 -0
  39. package/internal/qs/stringify.mjs +274 -0
  40. package/internal/qs/stringify.mjs.map +1 -0
  41. package/internal/qs/types.d.mts +57 -0
  42. package/internal/qs/types.d.mts.map +1 -0
  43. package/internal/qs/types.d.ts +57 -0
  44. package/internal/qs/types.d.ts.map +1 -0
  45. package/internal/qs/types.js +3 -0
  46. package/internal/qs/types.js.map +1 -0
  47. package/internal/qs/types.mjs +2 -0
  48. package/internal/qs/types.mjs.map +1 -0
  49. package/internal/qs/utils.d.mts +15 -0
  50. package/internal/qs/utils.d.mts.map +1 -0
  51. package/internal/qs/utils.d.ts +15 -0
  52. package/internal/qs/utils.d.ts.map +1 -0
  53. package/internal/qs/utils.js +230 -0
  54. package/internal/qs/utils.js.map +1 -0
  55. package/internal/qs/utils.mjs +217 -0
  56. package/internal/qs/utils.mjs.map +1 -0
  57. package/package.json +1 -1
  58. package/resources/v1/coupons.d.mts +74 -8
  59. package/resources/v1/coupons.d.mts.map +1 -1
  60. package/resources/v1/coupons.d.ts +74 -8
  61. package/resources/v1/coupons.d.ts.map +1 -1
  62. package/resources/v1/coupons.js +16 -3
  63. package/resources/v1/coupons.js.map +1 -1
  64. package/resources/v1/coupons.mjs +16 -3
  65. package/resources/v1/coupons.mjs.map +1 -1
  66. package/resources/v1/customers/customers.d.mts +74 -10
  67. package/resources/v1/customers/customers.d.mts.map +1 -1
  68. package/resources/v1/customers/customers.d.ts +74 -10
  69. package/resources/v1/customers/customers.d.ts.map +1 -1
  70. package/resources/v1/customers/customers.js +18 -7
  71. package/resources/v1/customers/customers.js.map +1 -1
  72. package/resources/v1/customers/customers.mjs +18 -7
  73. package/resources/v1/customers/customers.mjs.map +1 -1
  74. package/resources/v1/customers/index.d.mts +2 -2
  75. package/resources/v1/customers/index.d.mts.map +1 -1
  76. package/resources/v1/customers/index.d.ts +2 -2
  77. package/resources/v1/customers/index.d.ts.map +1 -1
  78. package/resources/v1/customers/index.js.map +1 -1
  79. package/resources/v1/customers/index.mjs.map +1 -1
  80. package/resources/v1/customers/payment-method.d.mts +4 -2
  81. package/resources/v1/customers/payment-method.d.mts.map +1 -1
  82. package/resources/v1/customers/payment-method.d.ts +4 -2
  83. package/resources/v1/customers/payment-method.d.ts.map +1 -1
  84. package/resources/v1/customers/payment-method.js +4 -2
  85. package/resources/v1/customers/payment-method.js.map +1 -1
  86. package/resources/v1/customers/payment-method.mjs +4 -2
  87. package/resources/v1/customers/payment-method.mjs.map +1 -1
  88. package/resources/v1/customers/promotional-entitlements.d.mts +159 -11
  89. package/resources/v1/customers/promotional-entitlements.d.mts.map +1 -1
  90. package/resources/v1/customers/promotional-entitlements.d.ts +159 -11
  91. package/resources/v1/customers/promotional-entitlements.d.ts.map +1 -1
  92. package/resources/v1/customers/promotional-entitlements.js +15 -6
  93. package/resources/v1/customers/promotional-entitlements.js.map +1 -1
  94. package/resources/v1/customers/promotional-entitlements.mjs +15 -6
  95. package/resources/v1/customers/promotional-entitlements.mjs.map +1 -1
  96. package/resources/v1/events/addons/addons.d.mts +605 -0
  97. package/resources/v1/events/addons/addons.d.mts.map +1 -0
  98. package/resources/v1/events/addons/addons.d.ts +605 -0
  99. package/resources/v1/events/addons/addons.d.ts.map +1 -0
  100. package/resources/v1/events/addons/addons.js +60 -0
  101. package/resources/v1/events/addons/addons.js.map +1 -0
  102. package/resources/v1/events/addons/addons.mjs +55 -0
  103. package/resources/v1/events/addons/addons.mjs.map +1 -0
  104. package/resources/v1/events/addons/draft.d.mts +121 -0
  105. package/resources/v1/events/addons/draft.d.mts.map +1 -0
  106. package/resources/v1/events/addons/draft.d.ts +121 -0
  107. package/resources/v1/events/addons/draft.d.ts.map +1 -0
  108. package/resources/v1/events/addons/draft.js +22 -0
  109. package/resources/v1/events/addons/draft.js.map +1 -0
  110. package/resources/v1/events/addons/draft.mjs +18 -0
  111. package/resources/v1/events/addons/draft.mjs.map +1 -0
  112. package/resources/v1/events/addons/index.d.mts +3 -0
  113. package/resources/v1/events/addons/index.d.mts.map +1 -0
  114. package/resources/v1/events/addons/index.d.ts +3 -0
  115. package/resources/v1/events/addons/index.d.ts.map +1 -0
  116. package/resources/v1/events/addons/index.js +9 -0
  117. package/resources/v1/events/addons/index.js.map +1 -0
  118. package/resources/v1/events/addons/index.mjs +4 -0
  119. package/resources/v1/events/addons/index.mjs.map +1 -0
  120. package/resources/v1/events/addons.d.mts +2 -0
  121. package/resources/v1/events/addons.d.mts.map +1 -0
  122. package/resources/v1/events/addons.d.ts +2 -0
  123. package/resources/v1/events/addons.d.ts.map +1 -0
  124. package/resources/v1/events/addons.js +6 -0
  125. package/resources/v1/events/addons.js.map +1 -0
  126. package/resources/v1/events/addons.mjs +3 -0
  127. package/resources/v1/events/addons.mjs.map +1 -0
  128. package/resources/v1/events/events.d.mts +75 -0
  129. package/resources/v1/events/events.d.mts.map +1 -0
  130. package/resources/v1/events/events.d.ts +75 -0
  131. package/resources/v1/events/events.d.ts.map +1 -0
  132. package/resources/v1/events/events.js +32 -0
  133. package/resources/v1/events/events.js.map +1 -0
  134. package/resources/v1/events/events.mjs +27 -0
  135. package/resources/v1/events/events.mjs.map +1 -0
  136. package/resources/v1/events/features.d.mts +856 -0
  137. package/resources/v1/events/features.d.mts.map +1 -0
  138. package/resources/v1/events/features.d.ts +856 -0
  139. package/resources/v1/events/features.d.ts.map +1 -0
  140. package/resources/v1/events/features.js +51 -0
  141. package/resources/v1/events/features.js.map +1 -0
  142. package/resources/v1/events/features.mjs +47 -0
  143. package/resources/v1/events/features.mjs.map +1 -0
  144. package/resources/v1/events/index.d.mts +5 -0
  145. package/resources/v1/events/index.d.mts.map +1 -0
  146. package/resources/v1/events/index.d.ts +5 -0
  147. package/resources/v1/events/index.d.ts.map +1 -0
  148. package/resources/v1/events/index.js +13 -0
  149. package/resources/v1/events/index.js.map +1 -0
  150. package/resources/v1/events/index.mjs +6 -0
  151. package/resources/v1/events/index.mjs.map +1 -0
  152. package/resources/v1/events/plans.d.mts +348 -0
  153. package/resources/v1/events/plans.d.mts.map +1 -0
  154. package/resources/v1/events/plans.d.ts +348 -0
  155. package/resources/v1/events/plans.d.ts.map +1 -0
  156. package/resources/v1/events/plans.js +30 -0
  157. package/resources/v1/events/plans.js.map +1 -0
  158. package/resources/v1/events/plans.mjs +26 -0
  159. package/resources/v1/events/plans.mjs.map +1 -0
  160. package/resources/v1/events.d.mts +1 -61
  161. package/resources/v1/events.d.mts.map +1 -1
  162. package/resources/v1/events.d.ts +1 -61
  163. package/resources/v1/events.d.ts.map +1 -1
  164. package/resources/v1/events.js +2 -11
  165. package/resources/v1/events.js.map +1 -1
  166. package/resources/v1/events.mjs +1 -9
  167. package/resources/v1/events.mjs.map +1 -1
  168. package/resources/v1/index.d.mts +4 -3
  169. package/resources/v1/index.d.mts.map +1 -1
  170. package/resources/v1/index.d.ts +4 -3
  171. package/resources/v1/index.d.ts.map +1 -1
  172. package/resources/v1/index.js +7 -5
  173. package/resources/v1/index.js.map +1 -1
  174. package/resources/v1/index.mjs +2 -1
  175. package/resources/v1/index.mjs.map +1 -1
  176. package/resources/v1/products.d.mts +672 -0
  177. package/resources/v1/products.d.mts.map +1 -0
  178. package/resources/v1/products.d.ts +672 -0
  179. package/resources/v1/products.d.ts.map +1 -0
  180. package/resources/v1/products.js +52 -0
  181. package/resources/v1/products.js.map +1 -0
  182. package/resources/v1/products.mjs +48 -0
  183. package/resources/v1/products.mjs.map +1 -0
  184. package/resources/v1/subscriptions/future-update.d.mts +3 -2
  185. package/resources/v1/subscriptions/future-update.d.mts.map +1 -1
  186. package/resources/v1/subscriptions/future-update.d.ts +3 -2
  187. package/resources/v1/subscriptions/future-update.d.ts.map +1 -1
  188. package/resources/v1/subscriptions/future-update.js +3 -2
  189. package/resources/v1/subscriptions/future-update.js.map +1 -1
  190. package/resources/v1/subscriptions/future-update.mjs +3 -2
  191. package/resources/v1/subscriptions/future-update.mjs.map +1 -1
  192. package/resources/v1/subscriptions/index.d.mts +2 -0
  193. package/resources/v1/subscriptions/index.d.mts.map +1 -1
  194. package/resources/v1/subscriptions/index.d.ts +2 -0
  195. package/resources/v1/subscriptions/index.d.ts.map +1 -1
  196. package/resources/v1/subscriptions/index.js +5 -1
  197. package/resources/v1/subscriptions/index.js.map +1 -1
  198. package/resources/v1/subscriptions/index.mjs +2 -0
  199. package/resources/v1/subscriptions/index.mjs.map +1 -1
  200. package/resources/v1/subscriptions/invoice.d.mts +34 -0
  201. package/resources/v1/subscriptions/invoice.d.mts.map +1 -0
  202. package/resources/v1/subscriptions/invoice.d.ts +34 -0
  203. package/resources/v1/subscriptions/invoice.d.ts.map +1 -0
  204. package/resources/v1/subscriptions/invoice.js +17 -0
  205. package/resources/v1/subscriptions/invoice.js.map +1 -0
  206. package/resources/v1/subscriptions/invoice.mjs +13 -0
  207. package/resources/v1/subscriptions/invoice.mjs.map +1 -0
  208. package/resources/v1/subscriptions/subscriptions.d.mts +166 -34
  209. package/resources/v1/subscriptions/subscriptions.d.mts.map +1 -1
  210. package/resources/v1/subscriptions/subscriptions.d.ts +166 -34
  211. package/resources/v1/subscriptions/subscriptions.d.ts.map +1 -1
  212. package/resources/v1/subscriptions/subscriptions.js +28 -10
  213. package/resources/v1/subscriptions/subscriptions.js.map +1 -1
  214. package/resources/v1/subscriptions/subscriptions.mjs +28 -10
  215. package/resources/v1/subscriptions/subscriptions.mjs.map +1 -1
  216. package/resources/v1/subscriptions/usage.d.mts +98 -0
  217. package/resources/v1/subscriptions/usage.d.mts.map +1 -0
  218. package/resources/v1/subscriptions/usage.d.ts +98 -0
  219. package/resources/v1/subscriptions/usage.d.ts.map +1 -0
  220. package/resources/v1/subscriptions/usage.js +24 -0
  221. package/resources/v1/subscriptions/usage.js.map +1 -0
  222. package/resources/v1/subscriptions/usage.mjs +20 -0
  223. package/resources/v1/subscriptions/usage.mjs.map +1 -0
  224. package/resources/v1/usage.d.mts +3 -2
  225. package/resources/v1/usage.d.mts.map +1 -1
  226. package/resources/v1/usage.d.ts +3 -2
  227. package/resources/v1/usage.d.ts.map +1 -1
  228. package/resources/v1/usage.js +3 -2
  229. package/resources/v1/usage.js.map +1 -1
  230. package/resources/v1/usage.mjs +3 -2
  231. package/resources/v1/usage.mjs.map +1 -1
  232. package/resources/v1/v1.d.mts +10 -6
  233. package/resources/v1/v1.d.mts.map +1 -1
  234. package/resources/v1/v1.d.ts +10 -6
  235. package/resources/v1/v1.d.ts.map +1 -1
  236. package/resources/v1/v1.js +6 -2
  237. package/resources/v1/v1.js.map +1 -1
  238. package/resources/v1/v1.mjs +6 -2
  239. package/resources/v1/v1.mjs.map +1 -1
  240. package/src/client.ts +31 -26
  241. package/src/internal/parse.ts +6 -0
  242. package/src/internal/qs/LICENSE.md +13 -0
  243. package/src/internal/qs/README.md +3 -0
  244. package/src/internal/qs/formats.ts +10 -0
  245. package/src/internal/qs/index.ts +13 -0
  246. package/src/internal/qs/stringify.ts +385 -0
  247. package/src/internal/qs/types.ts +71 -0
  248. package/src/internal/qs/utils.ts +265 -0
  249. package/src/resources/v1/coupons.ts +89 -9
  250. package/src/resources/v1/customers/customers.ts +107 -12
  251. package/src/resources/v1/customers/index.ts +8 -2
  252. package/src/resources/v1/customers/payment-method.ts +4 -2
  253. package/src/resources/v1/customers/promotional-entitlements.ts +221 -18
  254. package/src/resources/v1/events/addons/addons.ts +761 -0
  255. package/src/resources/v1/events/addons/draft.ts +151 -0
  256. package/src/resources/v1/events/addons/index.ts +17 -0
  257. package/src/resources/v1/events/addons.ts +3 -0
  258. package/src/resources/v1/events/events.ts +160 -0
  259. package/src/resources/v1/events/features.ts +1066 -0
  260. package/src/resources/v1/events/index.ts +39 -0
  261. package/src/resources/v1/events/plans.ts +429 -0
  262. package/src/resources/v1/events.ts +1 -71
  263. package/src/resources/v1/index.ts +19 -1
  264. package/src/resources/v1/products.ts +829 -0
  265. package/src/resources/v1/subscriptions/future-update.ts +3 -2
  266. package/src/resources/v1/subscriptions/index.ts +7 -0
  267. package/src/resources/v1/subscriptions/invoice.ts +42 -0
  268. package/src/resources/v1/subscriptions/subscriptions.ts +235 -36
  269. package/src/resources/v1/subscriptions/usage.ts +126 -0
  270. package/src/resources/v1/usage.ts +3 -2
  271. package/src/resources/v1/v1.ts +42 -2
  272. package/src/version.ts +1 -1
  273. package/version.d.mts +1 -1
  274. package/version.d.ts +1 -1
  275. package/version.js +1 -1
  276. package/version.mjs +1 -1
@@ -0,0 +1,71 @@
1
+ export type Format = 'RFC1738' | 'RFC3986';
2
+
3
+ export type DefaultEncoder = (str: any, defaultEncoder?: any, charset?: string) => string;
4
+ export type DefaultDecoder = (str: string, decoder?: any, charset?: string) => string;
5
+
6
+ export type BooleanOptional = boolean | undefined;
7
+
8
+ export type StringifyBaseOptions = {
9
+ delimiter?: string;
10
+ allowDots?: boolean;
11
+ encodeDotInKeys?: boolean;
12
+ strictNullHandling?: boolean;
13
+ skipNulls?: boolean;
14
+ encode?: boolean;
15
+ encoder?: (
16
+ str: any,
17
+ defaultEncoder: DefaultEncoder,
18
+ charset: string,
19
+ type: 'key' | 'value',
20
+ format?: Format,
21
+ ) => string;
22
+ filter?: Array<PropertyKey> | ((prefix: PropertyKey, value: any) => any);
23
+ arrayFormat?: 'indices' | 'brackets' | 'repeat' | 'comma';
24
+ indices?: boolean;
25
+ sort?: ((a: PropertyKey, b: PropertyKey) => number) | null;
26
+ serializeDate?: (d: Date) => string;
27
+ format?: 'RFC1738' | 'RFC3986';
28
+ formatter?: (str: PropertyKey) => string;
29
+ encodeValuesOnly?: boolean;
30
+ addQueryPrefix?: boolean;
31
+ charset?: 'utf-8' | 'iso-8859-1';
32
+ charsetSentinel?: boolean;
33
+ allowEmptyArrays?: boolean;
34
+ commaRoundTrip?: boolean;
35
+ };
36
+
37
+ export type StringifyOptions = StringifyBaseOptions;
38
+
39
+ export type ParseBaseOptions = {
40
+ comma?: boolean;
41
+ delimiter?: string | RegExp;
42
+ depth?: number | false;
43
+ decoder?: (str: string, defaultDecoder: DefaultDecoder, charset: string, type: 'key' | 'value') => any;
44
+ arrayLimit?: number;
45
+ parseArrays?: boolean;
46
+ plainObjects?: boolean;
47
+ allowPrototypes?: boolean;
48
+ allowSparse?: boolean;
49
+ parameterLimit?: number;
50
+ strictDepth?: boolean;
51
+ strictNullHandling?: boolean;
52
+ ignoreQueryPrefix?: boolean;
53
+ charset?: 'utf-8' | 'iso-8859-1';
54
+ charsetSentinel?: boolean;
55
+ interpretNumericEntities?: boolean;
56
+ allowEmptyArrays?: boolean;
57
+ duplicates?: 'combine' | 'first' | 'last';
58
+ allowDots?: boolean;
59
+ decodeDotInKeys?: boolean;
60
+ };
61
+
62
+ export type ParseOptions = ParseBaseOptions;
63
+
64
+ export type ParsedQs = {
65
+ [key: string]: undefined | string | string[] | ParsedQs | ParsedQs[];
66
+ };
67
+
68
+ // Type to remove null or undefined union from each property
69
+ export type NonNullableProperties<T> = {
70
+ [K in keyof T]-?: Exclude<T[K], undefined | null>;
71
+ };
@@ -0,0 +1,265 @@
1
+ import { RFC1738 } from './formats';
2
+ import type { DefaultEncoder, Format } from './types';
3
+ import { isArray } from '../utils/values';
4
+
5
+ export let has = (obj: object, key: PropertyKey): boolean => (
6
+ (has = (Object as any).hasOwn ?? Function.prototype.call.bind(Object.prototype.hasOwnProperty)),
7
+ has(obj, key)
8
+ );
9
+
10
+ const hex_table = /* @__PURE__ */ (() => {
11
+ const array = [];
12
+ for (let i = 0; i < 256; ++i) {
13
+ array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());
14
+ }
15
+
16
+ return array;
17
+ })();
18
+
19
+ function compact_queue<T extends Record<string, any>>(queue: Array<{ obj: T; prop: string }>) {
20
+ while (queue.length > 1) {
21
+ const item = queue.pop();
22
+ if (!item) continue;
23
+
24
+ const obj = item.obj[item.prop];
25
+
26
+ if (isArray(obj)) {
27
+ const compacted: unknown[] = [];
28
+
29
+ for (let j = 0; j < obj.length; ++j) {
30
+ if (typeof obj[j] !== 'undefined') {
31
+ compacted.push(obj[j]);
32
+ }
33
+ }
34
+
35
+ // @ts-ignore
36
+ item.obj[item.prop] = compacted;
37
+ }
38
+ }
39
+ }
40
+
41
+ function array_to_object(source: any[], options: { plainObjects: boolean }) {
42
+ const obj = options && options.plainObjects ? Object.create(null) : {};
43
+ for (let i = 0; i < source.length; ++i) {
44
+ if (typeof source[i] !== 'undefined') {
45
+ obj[i] = source[i];
46
+ }
47
+ }
48
+
49
+ return obj;
50
+ }
51
+
52
+ export function merge(
53
+ target: any,
54
+ source: any,
55
+ options: { plainObjects?: boolean; allowPrototypes?: boolean } = {},
56
+ ) {
57
+ if (!source) {
58
+ return target;
59
+ }
60
+
61
+ if (typeof source !== 'object') {
62
+ if (isArray(target)) {
63
+ target.push(source);
64
+ } else if (target && typeof target === 'object') {
65
+ if ((options && (options.plainObjects || options.allowPrototypes)) || !has(Object.prototype, source)) {
66
+ target[source] = true;
67
+ }
68
+ } else {
69
+ return [target, source];
70
+ }
71
+
72
+ return target;
73
+ }
74
+
75
+ if (!target || typeof target !== 'object') {
76
+ return [target].concat(source);
77
+ }
78
+
79
+ let mergeTarget = target;
80
+ if (isArray(target) && !isArray(source)) {
81
+ // @ts-ignore
82
+ mergeTarget = array_to_object(target, options);
83
+ }
84
+
85
+ if (isArray(target) && isArray(source)) {
86
+ source.forEach(function (item, i) {
87
+ if (has(target, i)) {
88
+ const targetItem = target[i];
89
+ if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {
90
+ target[i] = merge(targetItem, item, options);
91
+ } else {
92
+ target.push(item);
93
+ }
94
+ } else {
95
+ target[i] = item;
96
+ }
97
+ });
98
+ return target;
99
+ }
100
+
101
+ return Object.keys(source).reduce(function (acc, key) {
102
+ const value = source[key];
103
+
104
+ if (has(acc, key)) {
105
+ acc[key] = merge(acc[key], value, options);
106
+ } else {
107
+ acc[key] = value;
108
+ }
109
+ return acc;
110
+ }, mergeTarget);
111
+ }
112
+
113
+ export function assign_single_source(target: any, source: any) {
114
+ return Object.keys(source).reduce(function (acc, key) {
115
+ acc[key] = source[key];
116
+ return acc;
117
+ }, target);
118
+ }
119
+
120
+ export function decode(str: string, _: any, charset: string) {
121
+ const strWithoutPlus = str.replace(/\+/g, ' ');
122
+ if (charset === 'iso-8859-1') {
123
+ // unescape never throws, no try...catch needed:
124
+ return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);
125
+ }
126
+ // utf-8
127
+ try {
128
+ return decodeURIComponent(strWithoutPlus);
129
+ } catch (e) {
130
+ return strWithoutPlus;
131
+ }
132
+ }
133
+
134
+ const limit = 1024;
135
+
136
+ export const encode: (
137
+ str: any,
138
+ defaultEncoder: DefaultEncoder,
139
+ charset: string,
140
+ type: 'key' | 'value',
141
+ format: Format,
142
+ ) => string = (str, _defaultEncoder, charset, _kind, format: Format) => {
143
+ // This code was originally written by Brian White for the io.js core querystring library.
144
+ // It has been adapted here for stricter adherence to RFC 3986
145
+ if (str.length === 0) {
146
+ return str;
147
+ }
148
+
149
+ let string = str;
150
+ if (typeof str === 'symbol') {
151
+ string = Symbol.prototype.toString.call(str);
152
+ } else if (typeof str !== 'string') {
153
+ string = String(str);
154
+ }
155
+
156
+ if (charset === 'iso-8859-1') {
157
+ return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {
158
+ return '%26%23' + parseInt($0.slice(2), 16) + '%3B';
159
+ });
160
+ }
161
+
162
+ let out = '';
163
+ for (let j = 0; j < string.length; j += limit) {
164
+ const segment = string.length >= limit ? string.slice(j, j + limit) : string;
165
+ const arr = [];
166
+
167
+ for (let i = 0; i < segment.length; ++i) {
168
+ let c = segment.charCodeAt(i);
169
+ if (
170
+ c === 0x2d || // -
171
+ c === 0x2e || // .
172
+ c === 0x5f || // _
173
+ c === 0x7e || // ~
174
+ (c >= 0x30 && c <= 0x39) || // 0-9
175
+ (c >= 0x41 && c <= 0x5a) || // a-z
176
+ (c >= 0x61 && c <= 0x7a) || // A-Z
177
+ (format === RFC1738 && (c === 0x28 || c === 0x29)) // ( )
178
+ ) {
179
+ arr[arr.length] = segment.charAt(i);
180
+ continue;
181
+ }
182
+
183
+ if (c < 0x80) {
184
+ arr[arr.length] = hex_table[c];
185
+ continue;
186
+ }
187
+
188
+ if (c < 0x800) {
189
+ arr[arr.length] = hex_table[0xc0 | (c >> 6)]! + hex_table[0x80 | (c & 0x3f)];
190
+ continue;
191
+ }
192
+
193
+ if (c < 0xd800 || c >= 0xe000) {
194
+ arr[arr.length] =
195
+ hex_table[0xe0 | (c >> 12)]! + hex_table[0x80 | ((c >> 6) & 0x3f)] + hex_table[0x80 | (c & 0x3f)];
196
+ continue;
197
+ }
198
+
199
+ i += 1;
200
+ c = 0x10000 + (((c & 0x3ff) << 10) | (segment.charCodeAt(i) & 0x3ff));
201
+
202
+ arr[arr.length] =
203
+ hex_table[0xf0 | (c >> 18)]! +
204
+ hex_table[0x80 | ((c >> 12) & 0x3f)] +
205
+ hex_table[0x80 | ((c >> 6) & 0x3f)] +
206
+ hex_table[0x80 | (c & 0x3f)];
207
+ }
208
+
209
+ out += arr.join('');
210
+ }
211
+
212
+ return out;
213
+ };
214
+
215
+ export function compact(value: any) {
216
+ const queue = [{ obj: { o: value }, prop: 'o' }];
217
+ const refs = [];
218
+
219
+ for (let i = 0; i < queue.length; ++i) {
220
+ const item = queue[i];
221
+ // @ts-ignore
222
+ const obj = item.obj[item.prop];
223
+
224
+ const keys = Object.keys(obj);
225
+ for (let j = 0; j < keys.length; ++j) {
226
+ const key = keys[j]!;
227
+ const val = obj[key];
228
+ if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {
229
+ queue.push({ obj: obj, prop: key });
230
+ refs.push(val);
231
+ }
232
+ }
233
+ }
234
+
235
+ compact_queue(queue);
236
+
237
+ return value;
238
+ }
239
+
240
+ export function is_regexp(obj: any) {
241
+ return Object.prototype.toString.call(obj) === '[object RegExp]';
242
+ }
243
+
244
+ export function is_buffer(obj: any) {
245
+ if (!obj || typeof obj !== 'object') {
246
+ return false;
247
+ }
248
+
249
+ return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
250
+ }
251
+
252
+ export function combine(a: any, b: any) {
253
+ return [].concat(a, b);
254
+ }
255
+
256
+ export function maybe_map<T>(val: T[], fn: (v: T) => T) {
257
+ if (isArray(val)) {
258
+ const mapped = [];
259
+ for (let i = 0; i < val.length; i += 1) {
260
+ mapped.push(fn(val[i]!));
261
+ }
262
+ return mapped;
263
+ }
264
+ return fn(val);
265
+ }
@@ -8,21 +8,22 @@ import { path } from '../../internal/utils/path';
8
8
 
9
9
  export class Coupons extends APIResource {
10
10
  /**
11
- * Create coupon
11
+ * Creates a new discount coupon with percentage or fixed amount off, applicable to
12
+ * customer subscriptions.
12
13
  */
13
14
  create(body: CouponCreateParams, options?: RequestOptions): APIPromise<Coupon> {
14
15
  return this._client.post('/api/v1/coupons', { body, ...options });
15
16
  }
16
17
 
17
18
  /**
18
- * Get a single coupon by ID
19
+ * Retrieves a coupon by its unique identifier.
19
20
  */
20
21
  retrieve(id: string, options?: RequestOptions): APIPromise<Coupon> {
21
22
  return this._client.get(path`/api/v1/coupons/${id}`, options);
22
23
  }
23
24
 
24
25
  /**
25
- * Get a list of coupons
26
+ * Retrieves a paginated list of coupons in the environment.
26
27
  */
27
28
  list(
28
29
  query: CouponListParams | null | undefined = {},
@@ -33,6 +34,20 @@ export class Coupons extends APIResource {
33
34
  ...options,
34
35
  });
35
36
  }
37
+
38
+ /**
39
+ * Archives a coupon, preventing it from being applied to new subscriptions.
40
+ */
41
+ archiveCoupon(id: string, options?: RequestOptions): APIPromise<Coupon> {
42
+ return this._client.post(path`/api/v1/coupons/${id}/archive`, options);
43
+ }
44
+
45
+ /**
46
+ * Updates an existing coupon's properties such as name, description, and metadata.
47
+ */
48
+ updateCoupon(id: string, body: CouponUpdateCouponParams, options?: RequestOptions): APIPromise<Coupon> {
49
+ return this._client.patch(path`/api/v1/coupons/${id}`, { body, ...options });
50
+ }
36
51
  }
37
52
 
38
53
  export type CouponListResponsesMyCursorIDPage = MyCursorIDPage<CouponListResponse>;
@@ -476,6 +491,11 @@ export interface CouponCreateParams {
476
491
  */
477
492
  durationInMonths: number | null;
478
493
 
494
+ /**
495
+ * Metadata associated with the entity
496
+ */
497
+ metadata: { [key: string]: string } | null;
498
+
479
499
  /**
480
500
  * Name of the coupon
481
501
  */
@@ -485,11 +505,6 @@ export interface CouponCreateParams {
485
505
  * Percentage discount off the original price
486
506
  */
487
507
  percentOff: number | null;
488
-
489
- /**
490
- * Metadata associated with the entity
491
- */
492
- additionalMetaData?: unknown;
493
508
  }
494
509
 
495
510
  export namespace CouponCreateParams {
@@ -625,7 +640,71 @@ export namespace CouponCreateParams {
625
640
  }
626
641
  }
627
642
 
628
- export interface CouponListParams extends MyCursorIDPageParams {}
643
+ export interface CouponListParams extends MyCursorIDPageParams {
644
+ /**
645
+ * Filter by entity ID
646
+ */
647
+ id?: string;
648
+
649
+ /**
650
+ * Filter by creation date using range operators: gt, gte, lt, lte
651
+ */
652
+ createdAt?: CouponListParams.CreatedAt;
653
+
654
+ /**
655
+ * Filter by coupon status. Supports comma-separated values for multiple statuses
656
+ */
657
+ status?: string;
658
+
659
+ /**
660
+ * Filter by coupon type (FIXED or PERCENTAGE)
661
+ */
662
+ type?: 'FIXED' | 'PERCENTAGE';
663
+ }
664
+
665
+ export namespace CouponListParams {
666
+ /**
667
+ * Filter by creation date using range operators: gt, gte, lt, lte
668
+ */
669
+ export interface CreatedAt {
670
+ /**
671
+ * Greater than the specified createdAt value
672
+ */
673
+ gt?: string;
674
+
675
+ /**
676
+ * Greater than or equal to the specified createdAt value
677
+ */
678
+ gte?: string;
679
+
680
+ /**
681
+ * Less than the specified createdAt value
682
+ */
683
+ lt?: string;
684
+
685
+ /**
686
+ * Less than or equal to the specified createdAt value
687
+ */
688
+ lte?: string;
689
+ }
690
+ }
691
+
692
+ export interface CouponUpdateCouponParams {
693
+ /**
694
+ * Description of the coupon
695
+ */
696
+ description?: string | null;
697
+
698
+ /**
699
+ * Metadata associated with the entity
700
+ */
701
+ metadata?: { [key: string]: string } | null;
702
+
703
+ /**
704
+ * Name of the coupon
705
+ */
706
+ name?: string;
707
+ }
629
708
 
630
709
  export declare namespace Coupons {
631
710
  export {
@@ -634,5 +713,6 @@ export declare namespace Coupons {
634
713
  type CouponListResponsesMyCursorIDPage as CouponListResponsesMyCursorIDPage,
635
714
  type CouponCreateParams as CouponCreateParams,
636
715
  type CouponListParams as CouponListParams,
716
+ type CouponUpdateCouponParams as CouponUpdateCouponParams,
637
717
  };
638
718
  }
@@ -5,8 +5,11 @@ import * as PaymentMethodAPI from './payment-method';
5
5
  import { PaymentMethod, PaymentMethodAttachParams } from './payment-method';
6
6
  import * as PromotionalEntitlementsAPI from './promotional-entitlements';
7
7
  import {
8
- PromotionalEntitlementGrantParams,
9
- PromotionalEntitlementGrantResponse,
8
+ PromotionalEntitlementCreateParams,
9
+ PromotionalEntitlementCreateResponse,
10
+ PromotionalEntitlementListParams,
11
+ PromotionalEntitlementListResponse,
12
+ PromotionalEntitlementListResponsesMyCursorIDPage,
10
13
  PromotionalEntitlementRevokeParams,
11
14
  PromotionalEntitlementRevokeResponse,
12
15
  PromotionalEntitlements,
@@ -22,21 +25,23 @@ export class Customers extends APIResource {
22
25
  new PromotionalEntitlementsAPI.PromotionalEntitlements(this._client);
23
26
 
24
27
  /**
25
- * Get a single customer by ID
28
+ * Retrieves a customer by their unique identifier, including billing information
29
+ * and subscription status.
26
30
  */
27
31
  retrieve(id: string, options?: RequestOptions): APIPromise<CustomerResponse> {
28
32
  return this._client.get(path`/api/v1/customers/${id}`, options);
29
33
  }
30
34
 
31
35
  /**
32
- * Update a customer
36
+ * Updates an existing customer's properties such as name, email, and billing
37
+ * information.
33
38
  */
34
39
  update(id: string, body: CustomerUpdateParams, options?: RequestOptions): APIPromise<CustomerResponse> {
35
40
  return this._client.patch(path`/api/v1/customers/${id}`, { body, ...options });
36
41
  }
37
42
 
38
43
  /**
39
- * Get a list of customers
44
+ * Retrieves a paginated list of customers in the environment.
40
45
  */
41
46
  list(
42
47
  query: CustomerListParams | null | undefined = {},
@@ -49,28 +54,46 @@ export class Customers extends APIResource {
49
54
  }
50
55
 
51
56
  /**
52
- * Archive customer
57
+ * Archives a customer, preventing new subscriptions. Optionally cancels existing
58
+ * subscriptions.
53
59
  */
54
60
  archive(id: string, options?: RequestOptions): APIPromise<CustomerResponse> {
55
61
  return this._client.post(path`/api/v1/customers/${id}/archive`, options);
56
62
  }
57
63
 
58
64
  /**
59
- * Bulk import customers
65
+ * Imports multiple customers in bulk. Used for migrating customer data from
66
+ * external systems.
60
67
  */
61
68
  import(body: CustomerImportParams, options?: RequestOptions): APIPromise<CustomerImportResponse> {
62
69
  return this._client.post('/api/v1/customers/import', { body, ...options });
63
70
  }
64
71
 
65
72
  /**
66
- * Provision customer
73
+ * Get a list of customerresources
74
+ */
75
+ listResources(
76
+ id: string,
77
+ query: CustomerListResourcesParams | null | undefined = {},
78
+ options?: RequestOptions,
79
+ ): PagePromise<CustomerListResourcesResponsesMyCursorIDPage, CustomerListResourcesResponse> {
80
+ return this._client.getAPIList(
81
+ path`/api/v1/customers/${id}/resources`,
82
+ MyCursorIDPage<CustomerListResourcesResponse>,
83
+ { query, ...options },
84
+ );
85
+ }
86
+
87
+ /**
88
+ * Creates a new customer and optionally provisions an initial subscription in a
89
+ * single operation.
67
90
  */
68
91
  provision(body: CustomerProvisionParams, options?: RequestOptions): APIPromise<CustomerResponse> {
69
92
  return this._client.post('/api/v1/customers', { body, ...options });
70
93
  }
71
94
 
72
95
  /**
73
- * Unarchive customer
96
+ * Restores an archived customer, allowing them to create new subscriptions again.
74
97
  */
75
98
  unarchive(id: string, options?: RequestOptions): APIPromise<CustomerResponse> {
76
99
  return this._client.post(path`/api/v1/customers/${id}/unarchive`, options);
@@ -79,6 +102,8 @@ export class Customers extends APIResource {
79
102
 
80
103
  export type CustomerListResponsesMyCursorIDPage = MyCursorIDPage<CustomerListResponse>;
81
104
 
105
+ export type CustomerListResourcesResponsesMyCursorIDPage = MyCursorIDPage<CustomerListResourcesResponse>;
106
+
82
107
  /**
83
108
  * Response object
84
109
  */
@@ -347,6 +372,26 @@ export namespace CustomerImportResponse {
347
372
  }
348
373
  }
349
374
 
375
+ /**
376
+ * Resource object that belongs to a customer
377
+ */
378
+ export interface CustomerListResourcesResponse {
379
+ /**
380
+ * Resource slug
381
+ */
382
+ id: string;
383
+
384
+ /**
385
+ * Timestamp of when the record was created
386
+ */
387
+ createdAt: string;
388
+
389
+ /**
390
+ * Timestamp of when the record was last updated
391
+ */
392
+ updatedAt: string;
393
+ }
394
+
350
395
  export interface CustomerUpdateParams {
351
396
  /**
352
397
  * Customer level coupon
@@ -406,7 +451,49 @@ export namespace CustomerUpdateParams {
406
451
  }
407
452
  }
408
453
 
409
- export interface CustomerListParams extends MyCursorIDPageParams {}
454
+ export interface CustomerListParams extends MyCursorIDPageParams {
455
+ /**
456
+ * Filter by creation date using range operators: gt, gte, lt, lte
457
+ */
458
+ createdAt?: CustomerListParams.CreatedAt;
459
+
460
+ /**
461
+ * Filter by exact customer email address
462
+ */
463
+ email?: string;
464
+
465
+ /**
466
+ * Filter by exact customer name
467
+ */
468
+ name?: string;
469
+ }
470
+
471
+ export namespace CustomerListParams {
472
+ /**
473
+ * Filter by creation date using range operators: gt, gte, lt, lte
474
+ */
475
+ export interface CreatedAt {
476
+ /**
477
+ * Greater than the specified createdAt value
478
+ */
479
+ gt?: string;
480
+
481
+ /**
482
+ * Greater than or equal to the specified createdAt value
483
+ */
484
+ gte?: string;
485
+
486
+ /**
487
+ * Less than the specified createdAt value
488
+ */
489
+ lt?: string;
490
+
491
+ /**
492
+ * Less than or equal to the specified createdAt value
493
+ */
494
+ lte?: string;
495
+ }
496
+ }
410
497
 
411
498
  export interface CustomerImportParams {
412
499
  /**
@@ -449,6 +536,8 @@ export namespace CustomerImportParams {
449
536
  }
450
537
  }
451
538
 
539
+ export interface CustomerListResourcesParams extends MyCursorIDPageParams {}
540
+
452
541
  export interface CustomerProvisionParams {
453
542
  /**
454
543
  * Customer slug
@@ -556,10 +645,13 @@ export declare namespace Customers {
556
645
  type CustomerResponse as CustomerResponse,
557
646
  type CustomerListResponse as CustomerListResponse,
558
647
  type CustomerImportResponse as CustomerImportResponse,
648
+ type CustomerListResourcesResponse as CustomerListResourcesResponse,
559
649
  type CustomerListResponsesMyCursorIDPage as CustomerListResponsesMyCursorIDPage,
650
+ type CustomerListResourcesResponsesMyCursorIDPage as CustomerListResourcesResponsesMyCursorIDPage,
560
651
  type CustomerUpdateParams as CustomerUpdateParams,
561
652
  type CustomerListParams as CustomerListParams,
562
653
  type CustomerImportParams as CustomerImportParams,
654
+ type CustomerListResourcesParams as CustomerListResourcesParams,
563
655
  type CustomerProvisionParams as CustomerProvisionParams,
564
656
  };
565
657
 
@@ -567,9 +659,12 @@ export declare namespace Customers {
567
659
 
568
660
  export {
569
661
  PromotionalEntitlements as PromotionalEntitlements,
570
- type PromotionalEntitlementGrantResponse as PromotionalEntitlementGrantResponse,
662
+ type PromotionalEntitlementCreateResponse as PromotionalEntitlementCreateResponse,
663
+ type PromotionalEntitlementListResponse as PromotionalEntitlementListResponse,
571
664
  type PromotionalEntitlementRevokeResponse as PromotionalEntitlementRevokeResponse,
572
- type PromotionalEntitlementGrantParams as PromotionalEntitlementGrantParams,
665
+ type PromotionalEntitlementListResponsesMyCursorIDPage as PromotionalEntitlementListResponsesMyCursorIDPage,
666
+ type PromotionalEntitlementCreateParams as PromotionalEntitlementCreateParams,
667
+ type PromotionalEntitlementListParams as PromotionalEntitlementListParams,
573
668
  type PromotionalEntitlementRevokeParams as PromotionalEntitlementRevokeParams,
574
669
  };
575
670
  }