@storyblok/management-api-client 0.3.0 → 1.0.0-alpha.2

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 (300) hide show
  1. package/README.md +3 -1
  2. package/dist/client.cjs +190 -0
  3. package/dist/client.cjs.map +1 -0
  4. package/dist/client.d.cts +632 -0
  5. package/dist/client.d.mts +632 -0
  6. package/dist/client.mjs +189 -0
  7. package/dist/client.mjs.map +1 -0
  8. package/dist/error.cjs.map +1 -1
  9. package/dist/error.d.cts +12 -2
  10. package/dist/error.d.mts +12 -2
  11. package/dist/error.mjs.map +1 -1
  12. package/dist/generated/mapi/_internal.gen.d.cts +541 -0
  13. package/dist/generated/mapi/_internal.gen.d.mts +541 -0
  14. package/dist/generated/{shared → mapi}/client/client.gen.cjs +1 -1
  15. package/dist/generated/mapi/client/client.gen.cjs.map +1 -0
  16. package/dist/generated/{shared → mapi}/client/client.gen.mjs +1 -1
  17. package/dist/generated/mapi/client/client.gen.mjs.map +1 -0
  18. package/dist/generated/{shared → mapi}/client/types.gen.d.cts +1 -1
  19. package/dist/generated/{shared → mapi}/client/types.gen.d.mts +1 -1
  20. package/dist/generated/{shared → mapi}/client/utils.gen.cjs +1 -1
  21. package/dist/generated/mapi/client/utils.gen.cjs.map +1 -0
  22. package/dist/generated/{shared → mapi}/client/utils.gen.d.cts +1 -1
  23. package/dist/generated/{shared → mapi}/client/utils.gen.d.mts +1 -1
  24. package/dist/generated/{shared → mapi}/client/utils.gen.mjs +1 -1
  25. package/dist/generated/mapi/client/utils.gen.mjs.map +1 -0
  26. package/dist/generated/mapi/client.gen.cjs +10 -0
  27. package/dist/generated/mapi/client.gen.cjs.map +1 -0
  28. package/dist/generated/mapi/client.gen.mjs +10 -0
  29. package/dist/generated/mapi/client.gen.mjs.map +1 -0
  30. package/dist/generated/{shared → mapi}/core/auth.gen.cjs +1 -1
  31. package/dist/generated/mapi/core/auth.gen.cjs.map +1 -0
  32. package/dist/generated/{shared → mapi}/core/auth.gen.d.cts +1 -1
  33. package/dist/generated/{shared → mapi}/core/auth.gen.d.mts +1 -1
  34. package/dist/generated/{shared → mapi}/core/auth.gen.mjs +1 -1
  35. package/dist/generated/mapi/core/auth.gen.mjs.map +1 -0
  36. package/dist/generated/{shared → mapi}/core/bodySerializer.gen.cjs +1 -1
  37. package/dist/generated/mapi/core/bodySerializer.gen.cjs.map +1 -0
  38. package/dist/generated/{shared → mapi}/core/bodySerializer.gen.d.cts +1 -1
  39. package/dist/generated/{shared → mapi}/core/bodySerializer.gen.d.mts +1 -1
  40. package/dist/generated/{shared → mapi}/core/bodySerializer.gen.mjs +1 -1
  41. package/dist/generated/mapi/core/bodySerializer.gen.mjs.map +1 -0
  42. package/dist/generated/{shared → mapi}/core/params.gen.cjs +1 -1
  43. package/dist/generated/mapi/core/params.gen.cjs.map +1 -0
  44. package/dist/generated/{shared → mapi}/core/params.gen.mjs +1 -1
  45. package/dist/generated/mapi/core/params.gen.mjs.map +1 -0
  46. package/dist/generated/{shared → mapi}/core/pathSerializer.gen.cjs +1 -1
  47. package/dist/generated/mapi/core/pathSerializer.gen.cjs.map +1 -0
  48. package/dist/generated/{shared → mapi}/core/pathSerializer.gen.d.cts +1 -1
  49. package/dist/generated/{shared → mapi}/core/pathSerializer.gen.d.mts +1 -1
  50. package/dist/generated/{shared → mapi}/core/pathSerializer.gen.mjs +1 -1
  51. package/dist/generated/mapi/core/pathSerializer.gen.mjs.map +1 -0
  52. package/dist/generated/{shared → mapi}/core/serverSentEvents.gen.cjs +1 -1
  53. package/dist/generated/mapi/core/serverSentEvents.gen.cjs.map +1 -0
  54. package/dist/generated/{shared → mapi}/core/serverSentEvents.gen.d.cts +1 -1
  55. package/dist/generated/{shared → mapi}/core/serverSentEvents.gen.d.mts +1 -1
  56. package/dist/generated/{shared → mapi}/core/serverSentEvents.gen.mjs +1 -1
  57. package/dist/generated/mapi/core/serverSentEvents.gen.mjs.map +1 -0
  58. package/dist/generated/{shared → mapi}/core/types.gen.d.cts +1 -1
  59. package/dist/generated/{shared → mapi}/core/types.gen.d.mts +1 -1
  60. package/dist/generated/{shared → mapi}/core/utils.gen.cjs +1 -1
  61. package/dist/generated/mapi/core/utils.gen.cjs.map +1 -0
  62. package/dist/generated/{shared → mapi}/core/utils.gen.mjs +1 -1
  63. package/dist/generated/mapi/core/utils.gen.mjs.map +1 -0
  64. package/dist/generated/mapi/sdk.gen.cjs +1477 -0
  65. package/dist/generated/mapi/sdk.gen.cjs.map +1 -0
  66. package/dist/generated/mapi/sdk.gen.mjs +1399 -0
  67. package/dist/generated/mapi/sdk.gen.mjs.map +1 -0
  68. package/dist/generated/mapi/types-aliased.gen.d.cts +1428 -0
  69. package/dist/generated/mapi/types-aliased.gen.d.mts +1428 -0
  70. package/dist/generated/mapi/types.gen.d.cts +5075 -0
  71. package/dist/generated/mapi/types.gen.d.mts +5075 -0
  72. package/dist/generated/overlay/_internal.gen.d.cts +850 -0
  73. package/dist/generated/overlay/_internal.gen.d.mts +850 -0
  74. package/dist/generated/types/_utils.d.cts +7 -0
  75. package/dist/generated/types/_utils.d.mts +7 -0
  76. package/dist/generated/types/block.d.cts +30 -0
  77. package/dist/generated/types/block.d.mts +30 -0
  78. package/dist/generated/types/field.d.cts +75 -0
  79. package/dist/generated/types/field.d.mts +75 -0
  80. package/dist/generated/types/mapi-story.d.cts +29 -0
  81. package/dist/generated/types/mapi-story.d.mts +29 -0
  82. package/dist/index.cjs +3 -173
  83. package/dist/index.d.cts +13 -433
  84. package/dist/index.d.mts +13 -433
  85. package/dist/index.mjs +2 -171
  86. package/dist/resources/asset-folders.cjs +9 -9
  87. package/dist/resources/asset-folders.cjs.map +1 -1
  88. package/dist/resources/asset-folders.mjs +9 -9
  89. package/dist/resources/asset-folders.mjs.map +1 -1
  90. package/dist/resources/assets.cjs +57 -48
  91. package/dist/resources/assets.cjs.map +1 -1
  92. package/dist/resources/assets.d.cts +23 -27
  93. package/dist/resources/assets.d.mts +23 -27
  94. package/dist/resources/assets.mjs +57 -48
  95. package/dist/resources/assets.mjs.map +1 -1
  96. package/dist/resources/component-folders.cjs +9 -9
  97. package/dist/resources/component-folders.cjs.map +1 -1
  98. package/dist/resources/component-folders.mjs +9 -9
  99. package/dist/resources/component-folders.mjs.map +1 -1
  100. package/dist/resources/components.cjs +28 -20
  101. package/dist/resources/components.cjs.map +1 -1
  102. package/dist/resources/components.d.cts +76 -0
  103. package/dist/resources/components.d.mts +76 -0
  104. package/dist/resources/components.mjs +28 -20
  105. package/dist/resources/components.mjs.map +1 -1
  106. package/dist/resources/datasource-entries.cjs +28 -34
  107. package/dist/resources/datasource-entries.cjs.map +1 -1
  108. package/dist/resources/datasource-entries.mjs +29 -35
  109. package/dist/resources/datasource-entries.mjs.map +1 -1
  110. package/dist/resources/datasources.cjs +27 -9
  111. package/dist/resources/datasources.cjs.map +1 -1
  112. package/dist/resources/datasources.mjs +27 -9
  113. package/dist/resources/datasources.mjs.map +1 -1
  114. package/dist/resources/experiments.cjs +299 -0
  115. package/dist/resources/experiments.cjs.map +1 -0
  116. package/dist/resources/experiments.mjs +299 -0
  117. package/dist/resources/experiments.mjs.map +1 -0
  118. package/dist/resources/internal-tags.cjs +7 -7
  119. package/dist/resources/internal-tags.cjs.map +1 -1
  120. package/dist/resources/internal-tags.mjs +7 -7
  121. package/dist/resources/internal-tags.mjs.map +1 -1
  122. package/dist/resources/presets.cjs +9 -9
  123. package/dist/resources/presets.cjs.map +1 -1
  124. package/dist/resources/presets.mjs +9 -9
  125. package/dist/resources/presets.mjs.map +1 -1
  126. package/dist/resources/shared.cjs +15 -0
  127. package/dist/resources/shared.cjs.map +1 -1
  128. package/dist/resources/shared.mjs +15 -1
  129. package/dist/resources/shared.mjs.map +1 -1
  130. package/dist/resources/spaces.cjs +8 -7
  131. package/dist/resources/spaces.cjs.map +1 -1
  132. package/dist/resources/spaces.d.cts +8 -0
  133. package/dist/resources/spaces.d.mts +7 -0
  134. package/dist/resources/spaces.mjs +8 -7
  135. package/dist/resources/spaces.mjs.map +1 -1
  136. package/dist/resources/stories.cjs +20 -16
  137. package/dist/resources/stories.cjs.map +1 -1
  138. package/dist/resources/stories.d.cts +93 -0
  139. package/dist/resources/stories.d.mts +93 -0
  140. package/dist/resources/stories.mjs +20 -16
  141. package/dist/resources/stories.mjs.map +1 -1
  142. package/dist/resources/users.cjs +3 -3
  143. package/dist/resources/users.cjs.map +1 -1
  144. package/dist/resources/users.mjs +3 -3
  145. package/dist/resources/users.mjs.map +1 -1
  146. package/dist/utils/query-serializer.cjs +54 -0
  147. package/dist/utils/query-serializer.cjs.map +1 -0
  148. package/dist/utils/query-serializer.mjs +54 -0
  149. package/dist/utils/query-serializer.mjs.map +1 -0
  150. package/package.json +16 -14
  151. package/playground/integration-tests/README.md +24 -0
  152. package/playground/integration-tests/eslint.config.js +5 -0
  153. package/playground/integration-tests/node_modules/.bin/eslint +16 -0
  154. package/playground/integration-tests/node_modules/.bin/tsc +16 -0
  155. package/playground/integration-tests/node_modules/.bin/tsserver +16 -0
  156. package/playground/integration-tests/node_modules/.bin/vitest +16 -0
  157. package/playground/integration-tests/package.json +24 -0
  158. package/playground/integration-tests/test/setup.e2e.ts +11 -0
  159. package/playground/integration-tests/test/specs/mapi-round-trip.spec.e2e.ts +520 -0
  160. package/playground/integration-tests/test/types/components.test-d.ts +113 -0
  161. package/playground/integration-tests/test/types/resources.test-d.ts +364 -0
  162. package/playground/integration-tests/test/types/stories.test-d.ts +306 -0
  163. package/playground/integration-tests/vitest.config.e2e.ts +25 -0
  164. package/playground/integration-tests/vitest.config.ts +13 -0
  165. package/test/GUIDE.md +59 -0
  166. package/vitest.config.ts +5 -0
  167. package/dist/generated/asset_folders/client.gen.cjs +0 -10
  168. package/dist/generated/asset_folders/client.gen.cjs.map +0 -1
  169. package/dist/generated/asset_folders/client.gen.mjs +0 -10
  170. package/dist/generated/asset_folders/client.gen.mjs.map +0 -1
  171. package/dist/generated/asset_folders/sdk.gen.cjs +0 -99
  172. package/dist/generated/asset_folders/sdk.gen.cjs.map +0 -1
  173. package/dist/generated/asset_folders/sdk.gen.mjs +0 -95
  174. package/dist/generated/asset_folders/sdk.gen.mjs.map +0 -1
  175. package/dist/generated/asset_folders/types.gen.d.cts +0 -156
  176. package/dist/generated/asset_folders/types.gen.d.mts +0 -156
  177. package/dist/generated/assets/client.gen.cjs +0 -10
  178. package/dist/generated/assets/client.gen.cjs.map +0 -1
  179. package/dist/generated/assets/client.gen.mjs +0 -10
  180. package/dist/generated/assets/client.gen.mjs.map +0 -1
  181. package/dist/generated/assets/sdk.gen.cjs +0 -179
  182. package/dist/generated/assets/sdk.gen.cjs.map +0 -1
  183. package/dist/generated/assets/sdk.gen.mjs +0 -171
  184. package/dist/generated/assets/sdk.gen.mjs.map +0 -1
  185. package/dist/generated/assets/types.gen.d.cts +0 -415
  186. package/dist/generated/assets/types.gen.d.mts +0 -415
  187. package/dist/generated/component_folders/client.gen.cjs +0 -10
  188. package/dist/generated/component_folders/client.gen.cjs.map +0 -1
  189. package/dist/generated/component_folders/client.gen.mjs +0 -10
  190. package/dist/generated/component_folders/client.gen.mjs.map +0 -1
  191. package/dist/generated/component_folders/sdk.gen.cjs +0 -99
  192. package/dist/generated/component_folders/sdk.gen.cjs.map +0 -1
  193. package/dist/generated/component_folders/sdk.gen.mjs +0 -95
  194. package/dist/generated/component_folders/sdk.gen.mjs.map +0 -1
  195. package/dist/generated/component_folders/types.gen.d.cts +0 -118
  196. package/dist/generated/component_folders/types.gen.d.mts +0 -118
  197. package/dist/generated/components/client.gen.cjs +0 -10
  198. package/dist/generated/components/client.gen.cjs.map +0 -1
  199. package/dist/generated/components/client.gen.mjs +0 -10
  200. package/dist/generated/components/client.gen.mjs.map +0 -1
  201. package/dist/generated/components/sdk.gen.cjs +0 -171
  202. package/dist/generated/components/sdk.gen.cjs.map +0 -1
  203. package/dist/generated/components/sdk.gen.mjs +0 -163
  204. package/dist/generated/components/sdk.gen.mjs.map +0 -1
  205. package/dist/generated/components/types.gen.d.cts +0 -855
  206. package/dist/generated/components/types.gen.d.mts +0 -855
  207. package/dist/generated/datasource_entries/client.gen.cjs +0 -10
  208. package/dist/generated/datasource_entries/client.gen.cjs.map +0 -1
  209. package/dist/generated/datasource_entries/client.gen.mjs +0 -10
  210. package/dist/generated/datasource_entries/client.gen.mjs.map +0 -1
  211. package/dist/generated/datasource_entries/sdk.gen.cjs +0 -89
  212. package/dist/generated/datasource_entries/sdk.gen.cjs.map +0 -1
  213. package/dist/generated/datasource_entries/sdk.gen.mjs +0 -85
  214. package/dist/generated/datasource_entries/sdk.gen.mjs.map +0 -1
  215. package/dist/generated/datasource_entries/types.gen.d.cts +0 -156
  216. package/dist/generated/datasource_entries/types.gen.d.mts +0 -156
  217. package/dist/generated/datasources/client.gen.cjs +0 -10
  218. package/dist/generated/datasources/client.gen.cjs.map +0 -1
  219. package/dist/generated/datasources/client.gen.mjs +0 -10
  220. package/dist/generated/datasources/client.gen.mjs.map +0 -1
  221. package/dist/generated/datasources/sdk.gen.cjs +0 -89
  222. package/dist/generated/datasources/sdk.gen.cjs.map +0 -1
  223. package/dist/generated/datasources/sdk.gen.mjs +0 -85
  224. package/dist/generated/datasources/sdk.gen.mjs.map +0 -1
  225. package/dist/generated/datasources/types.gen.d.cts +0 -186
  226. package/dist/generated/datasources/types.gen.d.mts +0 -186
  227. package/dist/generated/internal_tags/client.gen.cjs +0 -10
  228. package/dist/generated/internal_tags/client.gen.cjs.map +0 -1
  229. package/dist/generated/internal_tags/client.gen.mjs +0 -10
  230. package/dist/generated/internal_tags/client.gen.mjs.map +0 -1
  231. package/dist/generated/internal_tags/sdk.gen.cjs +0 -74
  232. package/dist/generated/internal_tags/sdk.gen.cjs.map +0 -1
  233. package/dist/generated/internal_tags/sdk.gen.mjs +0 -71
  234. package/dist/generated/internal_tags/sdk.gen.mjs.map +0 -1
  235. package/dist/generated/internal_tags/types.gen.d.cts +0 -106
  236. package/dist/generated/internal_tags/types.gen.d.mts +0 -106
  237. package/dist/generated/presets/client.gen.cjs +0 -10
  238. package/dist/generated/presets/client.gen.cjs.map +0 -1
  239. package/dist/generated/presets/client.gen.mjs +0 -10
  240. package/dist/generated/presets/client.gen.mjs.map +0 -1
  241. package/dist/generated/presets/sdk.gen.cjs +0 -99
  242. package/dist/generated/presets/sdk.gen.cjs.map +0 -1
  243. package/dist/generated/presets/sdk.gen.mjs +0 -95
  244. package/dist/generated/presets/sdk.gen.mjs.map +0 -1
  245. package/dist/generated/presets/types.gen.d.cts +0 -176
  246. package/dist/generated/presets/types.gen.d.mts +0 -176
  247. package/dist/generated/shared/client/client.gen.cjs.map +0 -1
  248. package/dist/generated/shared/client/client.gen.mjs.map +0 -1
  249. package/dist/generated/shared/client/utils.gen.cjs.map +0 -1
  250. package/dist/generated/shared/client/utils.gen.mjs.map +0 -1
  251. package/dist/generated/shared/core/auth.gen.cjs.map +0 -1
  252. package/dist/generated/shared/core/auth.gen.mjs.map +0 -1
  253. package/dist/generated/shared/core/bodySerializer.gen.cjs.map +0 -1
  254. package/dist/generated/shared/core/bodySerializer.gen.mjs.map +0 -1
  255. package/dist/generated/shared/core/params.gen.cjs.map +0 -1
  256. package/dist/generated/shared/core/params.gen.mjs.map +0 -1
  257. package/dist/generated/shared/core/pathSerializer.gen.cjs.map +0 -1
  258. package/dist/generated/shared/core/pathSerializer.gen.mjs.map +0 -1
  259. package/dist/generated/shared/core/serverSentEvents.gen.cjs.map +0 -1
  260. package/dist/generated/shared/core/serverSentEvents.gen.mjs.map +0 -1
  261. package/dist/generated/shared/core/utils.gen.cjs.map +0 -1
  262. package/dist/generated/shared/core/utils.gen.mjs.map +0 -1
  263. package/dist/generated/spaces/client.gen.cjs +0 -10
  264. package/dist/generated/spaces/client.gen.cjs.map +0 -1
  265. package/dist/generated/spaces/client.gen.mjs +0 -10
  266. package/dist/generated/spaces/client.gen.mjs.map +0 -1
  267. package/dist/generated/spaces/sdk.gen.cjs +0 -99
  268. package/dist/generated/spaces/sdk.gen.cjs.map +0 -1
  269. package/dist/generated/spaces/sdk.gen.mjs +0 -95
  270. package/dist/generated/spaces/sdk.gen.mjs.map +0 -1
  271. package/dist/generated/spaces/types.gen.d.cts +0 -544
  272. package/dist/generated/spaces/types.gen.d.mts +0 -544
  273. package/dist/generated/stories/client.gen.cjs +0 -10
  274. package/dist/generated/stories/client.gen.cjs.map +0 -1
  275. package/dist/generated/stories/client.gen.mjs +0 -10
  276. package/dist/generated/stories/client.gen.mjs.map +0 -1
  277. package/dist/generated/stories/sdk.gen.cjs +0 -138
  278. package/dist/generated/stories/sdk.gen.cjs.map +0 -1
  279. package/dist/generated/stories/sdk.gen.mjs +0 -131
  280. package/dist/generated/stories/sdk.gen.mjs.map +0 -1
  281. package/dist/generated/stories/types.gen.d.cts +0 -1306
  282. package/dist/generated/stories/types.gen.d.mts +0 -1306
  283. package/dist/generated/users/client.gen.cjs +0 -10
  284. package/dist/generated/users/client.gen.cjs.map +0 -1
  285. package/dist/generated/users/client.gen.mjs +0 -10
  286. package/dist/generated/users/client.gen.mjs.map +0 -1
  287. package/dist/generated/users/sdk.gen.cjs +0 -44
  288. package/dist/generated/users/sdk.gen.cjs.map +0 -1
  289. package/dist/generated/users/sdk.gen.mjs +0 -43
  290. package/dist/generated/users/sdk.gen.mjs.map +0 -1
  291. package/dist/generated/users/types.gen.d.cts +0 -348
  292. package/dist/generated/users/types.gen.d.mts +0 -348
  293. package/dist/index.cjs.map +0 -1
  294. package/dist/index.mjs.map +0 -1
  295. package/dist/types.d.cts +0 -130
  296. package/dist/types.d.mts +0 -130
  297. /package/dist/generated/{shared → mapi}/client/client.gen.d.mts +0 -0
  298. /package/dist/generated/{shared → mapi}/client/index.cjs +0 -0
  299. /package/dist/generated/{shared → mapi}/client/index.d.mts +0 -0
  300. /package/dist/generated/{shared → mapi}/client/index.mjs +0 -0
@@ -0,0 +1,189 @@
1
+ import { createConfig } from "./generated/mapi/client/utils.gen.mjs";
2
+ import { createClient } from "./generated/mapi/client/client.gen.mjs";
3
+ import "./generated/mapi/client/index.mjs";
4
+ import { ClientError } from "./error.mjs";
5
+ import { createThrottleManager } from "./utils/rate-limit.mjs";
6
+ import { querySerializer } from "./utils/query-serializer.mjs";
7
+ import { createAssetFoldersResource } from "./resources/asset-folders.mjs";
8
+ import { createAssetsResource } from "./resources/assets.mjs";
9
+ import { createComponentFoldersResource } from "./resources/component-folders.mjs";
10
+ import { createComponentsResource } from "./resources/components.mjs";
11
+ import { createDatasourceEntriesResource } from "./resources/datasource-entries.mjs";
12
+ import { createDatasourcesResource } from "./resources/datasources.mjs";
13
+ import { createExperimentsResource } from "./resources/experiments.mjs";
14
+ import { createInternalTagsResource } from "./resources/internal-tags.mjs";
15
+ import { createPresetsResource } from "./resources/presets.mjs";
16
+ import { createSpacesResource } from "./resources/spaces.mjs";
17
+ import { createStoriesResource } from "./resources/stories.mjs";
18
+ import { createUsersResource } from "./resources/users.mjs";
19
+ import { getManagementBaseUrl } from "@storyblok/region-helper";
20
+
21
+ //#region src/client.ts
22
+ function getAuthorizationHeader(config) {
23
+ if (config.personalAccessToken) return config.personalAccessToken;
24
+ if (config.oauthToken) return config.oauthToken.startsWith("Bearer ") ? config.oauthToken : `Bearer ${config.oauthToken}`;
25
+ }
26
+ const createManagementApiClientBase = (config) => {
27
+ const { spaceId, region = "eu", baseUrl, headers = {}, throwOnError = false, retry = {
28
+ limit: 12,
29
+ backoffLimit: 2e4,
30
+ methods: [
31
+ "get",
32
+ "post",
33
+ "put",
34
+ "delete",
35
+ "patch",
36
+ "head",
37
+ "options",
38
+ "trace"
39
+ ],
40
+ statusCodes: [429]
41
+ }, timeout = 3e4, rateLimit } = config;
42
+ const throttleManager = createThrottleManager(rateLimit ?? {});
43
+ const authHeader = getAuthorizationHeader(config);
44
+ const client = createClient(createConfig({
45
+ baseUrl: baseUrl || getManagementBaseUrl(region),
46
+ headers: {
47
+ ...authHeader ? { Authorization: authHeader } : {},
48
+ ...headers
49
+ },
50
+ querySerializer,
51
+ throwOnError,
52
+ kyOptions: {
53
+ throwHttpErrors: true,
54
+ timeout,
55
+ retry
56
+ }
57
+ }));
58
+ client.interceptors.error.use((error, response) => new ClientError(response?.statusText || "API request failed", {
59
+ status: response?.status ?? 0,
60
+ statusText: response?.statusText ?? "",
61
+ data: error
62
+ }));
63
+ function wrapRequest(fn, _throwOnError) {
64
+ return throttleManager.execute(() => fn());
65
+ }
66
+ const deps = {
67
+ client,
68
+ spaceId,
69
+ wrapRequest
70
+ };
71
+ return {
72
+ deps,
73
+ resources: buildResources(deps, client)
74
+ };
75
+ };
76
+ function buildResources(deps, client) {
77
+ /**
78
+ * Escape hatch: send a GET request to any MAPI endpoint not yet wrapped
79
+ * in a dedicated resource method.
80
+ */
81
+ const httpGet = (path, options = {}) => {
82
+ const { fetchOptions, ...rest } = options;
83
+ return deps.wrapRequest(() => client.get({
84
+ url: path,
85
+ ...rest,
86
+ ...fetchOptions ? { kyOptions: {
87
+ ...client.getConfig().kyOptions,
88
+ ...fetchOptions
89
+ } } : {}
90
+ }));
91
+ };
92
+ /**
93
+ * Escape hatch: send a POST request to any MAPI endpoint not yet wrapped
94
+ * in a dedicated resource method.
95
+ */
96
+ const httpPost = (path, options = {}) => {
97
+ const { fetchOptions, ...rest } = options;
98
+ return deps.wrapRequest(() => client.post({
99
+ url: path,
100
+ ...rest,
101
+ ...fetchOptions ? { kyOptions: {
102
+ ...client.getConfig().kyOptions,
103
+ ...fetchOptions
104
+ } } : {}
105
+ }));
106
+ };
107
+ /**
108
+ * Escape hatch: send a PUT request to any MAPI endpoint not yet wrapped
109
+ * in a dedicated resource method.
110
+ */
111
+ const httpPut = (path, options = {}) => {
112
+ const { fetchOptions, ...rest } = options;
113
+ return deps.wrapRequest(() => client.put({
114
+ url: path,
115
+ ...rest,
116
+ ...fetchOptions ? { kyOptions: {
117
+ ...client.getConfig().kyOptions,
118
+ ...fetchOptions
119
+ } } : {}
120
+ }));
121
+ };
122
+ /**
123
+ * Escape hatch: send a PATCH request to any MAPI endpoint not yet wrapped
124
+ * in a dedicated resource method.
125
+ */
126
+ const httpPatch = (path, options = {}) => {
127
+ const { fetchOptions, ...rest } = options;
128
+ return deps.wrapRequest(() => client.patch({
129
+ url: path,
130
+ ...rest,
131
+ ...fetchOptions ? { kyOptions: {
132
+ ...client.getConfig().kyOptions,
133
+ ...fetchOptions
134
+ } } : {}
135
+ }));
136
+ };
137
+ /**
138
+ * Escape hatch: send a DELETE request to any MAPI endpoint not yet wrapped
139
+ * in a dedicated resource method.
140
+ */
141
+ const httpDelete = (path, options = {}) => {
142
+ const { fetchOptions, ...rest } = options;
143
+ return deps.wrapRequest(() => client.delete({
144
+ url: path,
145
+ ...rest,
146
+ ...fetchOptions ? { kyOptions: {
147
+ ...client.getConfig().kyOptions,
148
+ ...fetchOptions
149
+ } } : {}
150
+ }));
151
+ };
152
+ return {
153
+ assetFolders: createAssetFoldersResource(deps),
154
+ assets: createAssetsResource(deps),
155
+ componentFolders: createComponentFoldersResource(deps),
156
+ datasourceEntries: createDatasourceEntriesResource(deps),
157
+ datasources: createDatasourcesResource(deps),
158
+ experiments: createExperimentsResource(deps),
159
+ delete: httpDelete,
160
+ get: httpGet,
161
+ patch: httpPatch,
162
+ interceptors: client.interceptors,
163
+ internalTags: createInternalTagsResource(deps),
164
+ post: httpPost,
165
+ presets: createPresetsResource(deps),
166
+ put: httpPut,
167
+ spaces: createSpacesResource(deps),
168
+ users: createUsersResource({
169
+ client,
170
+ wrapRequest: deps.wrapRequest
171
+ })
172
+ };
173
+ }
174
+ const createManagementApiClient = (config) => {
175
+ const { deps, resources } = createManagementApiClientBase(config);
176
+ const self = {
177
+ ...resources,
178
+ components: createComponentsResource(deps),
179
+ stories: createStoriesResource(deps),
180
+ withTypes() {
181
+ return self;
182
+ }
183
+ };
184
+ return self;
185
+ };
186
+
187
+ //#endregion
188
+ export { createManagementApiClient };
189
+ //# sourceMappingURL=client.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.mjs","names":[],"sources":["../src/client.ts"],"sourcesContent":["import type { Client, ResolvedRequestOptions, RetryOptions } from './generated/mapi/client';\nimport type { Middleware } from './generated/mapi/client/utils.gen';\nimport { createClient, createConfig } from './generated/mapi/client';\nimport { getManagementBaseUrl } from '@storyblok/region-helper';\nimport type { Region } from '@storyblok/region-helper';\nimport type { Block as Component } from './generated/types/block';\nimport { ClientError } from './error';\nimport type { RateLimitConfig } from './utils/rate-limit';\nimport { createThrottleManager } from './utils/rate-limit';\nimport { querySerializer } from './utils/query-serializer';\nimport { createAssetFoldersResource } from './resources/asset-folders';\nimport { createAssetsResource } from './resources/assets';\nimport { createComponentFoldersResource } from './resources/component-folders';\nimport { createComponentsResource } from './resources/components';\nimport { createDatasourceEntriesResource } from './resources/datasource-entries';\nimport { createDatasourcesResource } from './resources/datasources';\nimport { createExperimentsResource } from './resources/experiments';\nimport { createInternalTagsResource } from './resources/internal-tags';\nimport { createPresetsResource } from './resources/presets';\nimport { createSpacesResource } from './resources/spaces';\nimport { createStoriesResource } from './resources/stories';\nimport { createUsersResource } from './resources/users';\n\n// ---------------------------------------------------------------------------\n// Client types (co-located with runtime)\n// ---------------------------------------------------------------------------\n\nexport type ApiResponse<T, ThrowOnError extends boolean = false> =\n ThrowOnError extends true\n ? { data: T; error?: never; response: Response; request: Request }\n : | { data: T; error: undefined; response: Response; request: Request }\n | { data: undefined; error: ClientError; response: Response; request: Request };\n\nexport interface RequestConfigOverrides {\n throwOnError?: boolean;\n}\n\n/**\n * Arbitrary options forwarded to the underlying `fetch()` call.\n *\n * Standard `RequestInit` properties (`cache`, `credentials`, `mode`, …) and\n * non-standard, vendor-specific properties (Next.js `next`, Cloudflare `cf`, …)\n * are both supported.\n *\n * @example\n * ```ts\n * client.stories.get(123, {\n * fetchOptions: {\n * cache: 'no-store',\n * next: { revalidate: 60 },\n * },\n * })\n * ```\n */\nexport type FetchOptions = Record<string, unknown>;\n\nexport interface HttpRequestOptions {\n query?: Record<string, unknown>;\n body?: unknown;\n headers?: Record<string, string>;\n signal?: AbortSignal;\n throwOnError?: RequestConfigOverrides['throwOnError'];\n fetchOptions?: FetchOptions;\n}\n\n/**\n * Dependencies injected into every resource factory.\n */\nexport interface MapiResourceDeps<DefaultThrowOnError extends boolean = false> {\n client: Client;\n spaceId?: number;\n wrapRequest: <TData, ThrowOnError extends boolean = DefaultThrowOnError>(fn: () => Promise<unknown>, throwOnError?: ThrowOnError) => Promise<ApiResponse<TData, ThrowOnError>>;\n}\n\ntype TokenConfig =\n | {\n /** Personal access token for authentication. */\n personalAccessToken: string;\n oauthToken?: never;\n }\n | {\n personalAccessToken?: never;\n /** OAuth bearer token for authentication. */\n oauthToken: string;\n }\n | {\n personalAccessToken?: undefined;\n oauthToken?: undefined;\n };\n\nexport type ManagementApiClientConfig<\n ThrowOnError extends boolean = false,\n> = TokenConfig & {\n /**\n * The Storyblok space ID. Used as the default for space-scoped endpoints.\n * You can also override it per request via `path.space_id`.\n */\n spaceId?: number;\n /**\n * Storyblok region. Determines the base URL.\n * @default 'eu'\n */\n region?: Region;\n /**\n * Override the base URL entirely (e.g. for testing).\n */\n baseUrl?: string;\n /**\n * Additional request headers.\n */\n headers?: Record<string, string>;\n /**\n * Throw on HTTP errors instead of returning them.\n * @default false\n */\n throwOnError?: ThrowOnError;\n /**\n * Retry configuration for failed requests.\n */\n retry?: RetryOptions;\n /**\n * Request timeout in milliseconds.\n * @default 30_000\n */\n timeout?: number;\n /**\n * Preventive rate limiting to avoid hitting the Storyblok Management API rate limits.\n *\n * - `undefined` (default): single bucket at maxConcurrency: 6.\n * - `number`: fixed max concurrent requests per second.\n * - `{ maxConcurrency?: number; adaptToServerHeaders?: boolean }`: full config.\n * - `false`: disable rate limiting entirely.\n */\n rateLimit?: RateLimitConfig | number | false;\n};\n\n// ---------------------------------------------------------------------------\n// Client factory\n// ---------------------------------------------------------------------------\n\nfunction getAuthorizationHeader(config: ManagementApiClientConfig<boolean>): string | undefined {\n if (config.personalAccessToken) {\n return config.personalAccessToken;\n }\n if (config.oauthToken) {\n return config.oauthToken.startsWith('Bearer ')\n ? config.oauthToken\n : `Bearer ${config.oauthToken}`;\n }\n return undefined;\n}\n\nconst createManagementApiClientBase = <DefaultThrowOnError extends boolean = false>(\n config: ManagementApiClientConfig<DefaultThrowOnError>,\n): {\n deps: MapiResourceDeps<DefaultThrowOnError>;\n resources: Omit<ReturnType<typeof buildResources<DefaultThrowOnError>>, never>;\n} => {\n const {\n spaceId,\n region = 'eu',\n baseUrl,\n headers = {},\n throwOnError = false,\n retry = {\n limit: 12,\n backoffLimit: 20_000,\n methods: ['get', 'post', 'put', 'delete', 'patch', 'head', 'options', 'trace'],\n statusCodes: [429],\n },\n timeout = 30_000,\n rateLimit,\n } = config;\n\n const throttleManager = createThrottleManager(rateLimit ?? {});\n const authHeader = getAuthorizationHeader(config);\n\n const client: Client = createClient(\n createConfig({\n baseUrl: baseUrl || getManagementBaseUrl(region),\n headers: {\n ...(authHeader ? { Authorization: authHeader } : {}),\n ...headers,\n },\n // Default serializer throws on nested objects; MAPI needs `filter_query`\n // serialized as a nested hash (`filter_query[field][op]=value`).\n querySerializer,\n throwOnError,\n kyOptions: {\n throwHttpErrors: true,\n timeout,\n retry,\n },\n }),\n );\n\n client.interceptors.error.use(\n (error: unknown, response: Response) =>\n new ClientError(response?.statusText || 'API request failed', {\n status: response?.status ?? 0,\n statusText: response?.statusText ?? '',\n data: error,\n }),\n );\n\n function wrapRequest<TData, CurrentThrowOnError extends boolean = DefaultThrowOnError>(\n fn: () => Promise<unknown>,\n _throwOnError?: CurrentThrowOnError,\n ): Promise<ApiResponse<TData, CurrentThrowOnError>> {\n return throttleManager.execute(\n () => fn() as Promise<ApiResponse<TData, CurrentThrowOnError>>,\n );\n }\n\n const deps: MapiResourceDeps<DefaultThrowOnError> = { client, spaceId, wrapRequest };\n return { deps, resources: buildResources(deps, client) };\n};\n\nfunction buildResources<DefaultThrowOnError extends boolean = false>(\n deps: MapiResourceDeps<DefaultThrowOnError>,\n client: Client,\n) {\n /**\n * Escape hatch: send a GET request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpGet = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData, DefaultThrowOnError>> => {\n const { fetchOptions, ...rest } = options;\n return deps.wrapRequest<TData>(() =>\n client.get({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a POST request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPost = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData, DefaultThrowOnError>> => {\n const { fetchOptions, ...rest } = options;\n return deps.wrapRequest<TData>(() =>\n client.post({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a PUT request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPut = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData, DefaultThrowOnError>> => {\n const { fetchOptions, ...rest } = options;\n return deps.wrapRequest<TData>(() =>\n client.put({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a PATCH request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPatch = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData, DefaultThrowOnError>> => {\n const { fetchOptions, ...rest } = options;\n return deps.wrapRequest<TData>(() =>\n client.patch({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a DELETE request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpDelete = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData, DefaultThrowOnError>> => {\n const { fetchOptions, ...rest } = options;\n return deps.wrapRequest<TData>(() =>\n client.delete({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n return {\n assetFolders: createAssetFoldersResource(deps),\n assets: createAssetsResource(deps),\n componentFolders: createComponentFoldersResource(deps),\n datasourceEntries: createDatasourceEntriesResource(deps),\n datasources: createDatasourcesResource(deps),\n experiments: createExperimentsResource(deps),\n delete: httpDelete,\n get: httpGet,\n patch: httpPatch,\n interceptors: client.interceptors as Middleware<Request, Response, unknown, ResolvedRequestOptions>,\n internalTags: createInternalTagsResource(deps),\n post: httpPost,\n presets: createPresetsResource(deps),\n put: httpPut,\n spaces: createSpacesResource(deps),\n users: createUsersResource<DefaultThrowOnError>({ client, wrapRequest: deps.wrapRequest }),\n };\n}\n\ntype StoryblokTypesConfig = { components: Component } | { blocks: Component };\n\ntype ResolveComponents<T extends StoryblokTypesConfig> =\n T extends { components: infer C extends Component } ? C\n : T extends { blocks: infer B extends Component } ? B\n : never;\n\n/**\n * The return type of `createManagementApiClient`, parameterised by `TComponents` so that\n * `.stories` methods can narrow story content types without touching the runtime object.\n */\nexport type ManagementApiClient<\n TComponents extends Component = Component,\n DefaultThrowOnError extends boolean = false,\n> = ReturnType<typeof buildResources<DefaultThrowOnError>> & {\n components: ReturnType<typeof createComponentsResource<TComponents, DefaultThrowOnError>>;\n stories: ReturnType<typeof createStoriesResource<TComponents, DefaultThrowOnError>>;\n /**\n * Returns the same client instance cast to a version that narrows story content\n * to the provided component types. No runtime cost — type parameter is erased.\n *\n * Accepts either `{ components: ... }` or `{ blocks: ... }` — the latter matches the\n * `Schema` type produced by `@storyblok/schema`'s `InferSchema`.\n *\n * @example\n * ```ts\n * import type { Schema } from './schema';\n *\n * const client = createManagementApiClient({ personalAccessToken: '...' })\n * .withTypes<Schema>();\n * ```\n */\n withTypes: <T extends StoryblokTypesConfig>() => ManagementApiClient<ResolveComponents<T>, DefaultThrowOnError>;\n};\n\nexport const createManagementApiClient = <\n DefaultThrowOnError extends boolean = false,\n>(\n config: ManagementApiClientConfig<DefaultThrowOnError>,\n): ManagementApiClient<Component, DefaultThrowOnError> => {\n const { deps, resources } = createManagementApiClientBase(config);\n const self: ManagementApiClient<Component, DefaultThrowOnError> = {\n ...resources,\n components: createComponentsResource<Component, DefaultThrowOnError>(deps),\n stories: createStoriesResource<Component, DefaultThrowOnError>(deps),\n withTypes<T extends StoryblokTypesConfig>() {\n return self as unknown as ManagementApiClient<ResolveComponents<T>, DefaultThrowOnError>;\n },\n };\n return self;\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"error.cjs","names":[],"sources":["../src/error.ts"],"sourcesContent":["/**\n * Structured HTTP error thrown by the Management API client when `throwOnError: true`.\n */\nexport class ClientError extends Error {\n readonly response: { status: number; statusText: string; data: unknown };\n\n constructor(\n message: string,\n options: { status: number; statusText: string; data: unknown },\n ) {\n super(message);\n this.name = 'ClientError';\n this.response = {\n status: options.status,\n statusText: options.statusText,\n data: options.data,\n };\n }\n}\n"],"mappings":";;;;;AAGA,IAAa,cAAb,cAAiC,MAAM;CACrC,AAAS;CAET,YACE,SACA,SACA;AACA,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,WAAW;GACd,QAAQ,QAAQ;GAChB,YAAY,QAAQ;GACpB,MAAM,QAAQ;GACf"}
1
+ {"version":3,"file":"error.cjs","names":[],"sources":["../src/error.ts"],"sourcesContent":["/**\n * Common shape of error bodies returned by the Storyblok Management API.\n *\n * Most error responses include an `error` field with a human-readable message.\n */\nexport interface ApiErrorBody {\n error?: string;\n message?: string;\n [key: string]: unknown;\n}\n\n/**\n * Structured HTTP error thrown by the Management API client when `throwOnError: true`.\n */\nexport class ClientError extends Error {\n readonly response: { status: number; statusText: string; data: ApiErrorBody | undefined };\n\n constructor(\n message: string,\n options: { status: number; statusText: string; data: unknown },\n ) {\n super(message);\n this.name = 'ClientError';\n this.response = {\n status: options.status,\n statusText: options.statusText,\n data: options.data as ApiErrorBody | undefined,\n };\n }\n}\n"],"mappings":";;;;;AAcA,IAAa,cAAb,cAAiC,MAAM;CACrC,AAAS;CAET,YACE,SACA,SACA;AACA,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,WAAW;GACd,QAAQ,QAAQ;GAChB,YAAY,QAAQ;GACpB,MAAM,QAAQ;GACf"}
package/dist/error.d.cts CHANGED
@@ -1,4 +1,14 @@
1
1
  //#region src/error.d.ts
2
+ /**
3
+ * Common shape of error bodies returned by the Storyblok Management API.
4
+ *
5
+ * Most error responses include an `error` field with a human-readable message.
6
+ */
7
+ interface ApiErrorBody {
8
+ error?: string;
9
+ message?: string;
10
+ [key: string]: unknown;
11
+ }
2
12
  /**
3
13
  * Structured HTTP error thrown by the Management API client when `throwOnError: true`.
4
14
  */
@@ -6,7 +16,7 @@ declare class ClientError extends Error {
6
16
  readonly response: {
7
17
  status: number;
8
18
  statusText: string;
9
- data: unknown;
19
+ data: ApiErrorBody | undefined;
10
20
  };
11
21
  constructor(message: string, options: {
12
22
  status: number;
@@ -15,5 +25,5 @@ declare class ClientError extends Error {
15
25
  });
16
26
  }
17
27
  //#endregion
18
- export { ClientError };
28
+ export { ApiErrorBody, ClientError };
19
29
  //# sourceMappingURL=error.d.cts.map
package/dist/error.d.mts CHANGED
@@ -1,4 +1,14 @@
1
1
  //#region src/error.d.ts
2
+ /**
3
+ * Common shape of error bodies returned by the Storyblok Management API.
4
+ *
5
+ * Most error responses include an `error` field with a human-readable message.
6
+ */
7
+ interface ApiErrorBody {
8
+ error?: string;
9
+ message?: string;
10
+ [key: string]: unknown;
11
+ }
2
12
  /**
3
13
  * Structured HTTP error thrown by the Management API client when `throwOnError: true`.
4
14
  */
@@ -6,7 +16,7 @@ declare class ClientError extends Error {
6
16
  readonly response: {
7
17
  status: number;
8
18
  statusText: string;
9
- data: unknown;
19
+ data: ApiErrorBody | undefined;
10
20
  };
11
21
  constructor(message: string, options: {
12
22
  status: number;
@@ -15,5 +25,5 @@ declare class ClientError extends Error {
15
25
  });
16
26
  }
17
27
  //#endregion
18
- export { ClientError };
28
+ export { ApiErrorBody, ClientError };
19
29
  //# sourceMappingURL=error.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"error.mjs","names":[],"sources":["../src/error.ts"],"sourcesContent":["/**\n * Structured HTTP error thrown by the Management API client when `throwOnError: true`.\n */\nexport class ClientError extends Error {\n readonly response: { status: number; statusText: string; data: unknown };\n\n constructor(\n message: string,\n options: { status: number; statusText: string; data: unknown },\n ) {\n super(message);\n this.name = 'ClientError';\n this.response = {\n status: options.status,\n statusText: options.statusText,\n data: options.data,\n };\n }\n}\n"],"mappings":";;;;AAGA,IAAa,cAAb,cAAiC,MAAM;CACrC,AAAS;CAET,YACE,SACA,SACA;AACA,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,WAAW;GACd,QAAQ,QAAQ;GAChB,YAAY,QAAQ;GACpB,MAAM,QAAQ;GACf"}
1
+ {"version":3,"file":"error.mjs","names":[],"sources":["../src/error.ts"],"sourcesContent":["/**\n * Common shape of error bodies returned by the Storyblok Management API.\n *\n * Most error responses include an `error` field with a human-readable message.\n */\nexport interface ApiErrorBody {\n error?: string;\n message?: string;\n [key: string]: unknown;\n}\n\n/**\n * Structured HTTP error thrown by the Management API client when `throwOnError: true`.\n */\nexport class ClientError extends Error {\n readonly response: { status: number; statusText: string; data: ApiErrorBody | undefined };\n\n constructor(\n message: string,\n options: { status: number; statusText: string; data: unknown },\n ) {\n super(message);\n this.name = 'ClientError';\n this.response = {\n status: options.status,\n statusText: options.statusText,\n data: options.data as ApiErrorBody | undefined,\n };\n }\n}\n"],"mappings":";;;;AAcA,IAAa,cAAb,cAAiC,MAAM;CACrC,AAAS;CAET,YACE,SACA,SACA;AACA,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,WAAW;GACd,QAAQ,QAAQ;GAChB,YAAY,QAAQ;GACpB,MAAM,QAAQ;GACf"}