@storyblok/management-api-client 0.5.1 → 0.6.1

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 (328) hide show
  1. package/README.md +3 -1
  2. package/dist/client.cjs +196 -0
  3. package/dist/client.cjs.map +1 -0
  4. package/dist/client.d.cts +761 -0
  5. package/dist/client.d.mts +761 -0
  6. package/dist/client.mjs +195 -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 +371 -0
  13. package/dist/generated/mapi/_internal.gen.d.mts +371 -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 +1598 -0
  69. package/dist/generated/mapi/types-aliased.gen.d.mts +1598 -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 +55 -0
  77. package/dist/generated/types/block.d.mts +55 -0
  78. package/dist/generated/types/field.d.cts +122 -0
  79. package/dist/generated/types/field.d.mts +122 -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 -181
  83. package/dist/index.d.cts +12 -650
  84. package/dist/index.d.mts +12 -649
  85. package/dist/index.mjs +2 -179
  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 -50
  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 -50
  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 +31 -31
  115. package/dist/resources/experiments.cjs.map +1 -1
  116. package/dist/resources/experiments.mjs +31 -31
  117. package/dist/resources/experiments.mjs.map +1 -1
  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-asset-folders.cjs.map +1 -1
  127. package/dist/resources/shared-asset-folders.d.cts +1 -1
  128. package/dist/resources/shared-asset-folders.d.mts +1 -1
  129. package/dist/resources/shared-asset-folders.mjs.map +1 -1
  130. package/dist/resources/shared-assets.cjs.map +1 -1
  131. package/dist/resources/shared-assets.d.cts +2 -2
  132. package/dist/resources/shared-assets.d.mts +2 -2
  133. package/dist/resources/shared-assets.mjs.map +1 -1
  134. package/dist/resources/shared-internal-tags.cjs.map +1 -1
  135. package/dist/resources/shared-internal-tags.mjs.map +1 -1
  136. package/dist/resources/shared.cjs +15 -0
  137. package/dist/resources/shared.cjs.map +1 -1
  138. package/dist/resources/shared.mjs +15 -1
  139. package/dist/resources/shared.mjs.map +1 -1
  140. package/dist/resources/spaces.cjs +8 -7
  141. package/dist/resources/spaces.cjs.map +1 -1
  142. package/dist/resources/spaces.d.cts +8 -0
  143. package/dist/resources/spaces.d.mts +7 -0
  144. package/dist/resources/spaces.mjs +8 -7
  145. package/dist/resources/spaces.mjs.map +1 -1
  146. package/dist/resources/stories.cjs +20 -16
  147. package/dist/resources/stories.cjs.map +1 -1
  148. package/dist/resources/stories.d.cts +93 -0
  149. package/dist/resources/stories.d.mts +93 -0
  150. package/dist/resources/stories.mjs +20 -16
  151. package/dist/resources/stories.mjs.map +1 -1
  152. package/dist/resources/users.cjs +3 -3
  153. package/dist/resources/users.cjs.map +1 -1
  154. package/dist/resources/users.mjs +3 -3
  155. package/dist/resources/users.mjs.map +1 -1
  156. package/dist/utils/query-serializer.cjs +54 -0
  157. package/dist/utils/query-serializer.cjs.map +1 -0
  158. package/dist/utils/query-serializer.mjs +54 -0
  159. package/dist/utils/query-serializer.mjs.map +1 -0
  160. package/dist/utils/rate-limit.cjs +3 -7
  161. package/dist/utils/rate-limit.cjs.map +1 -1
  162. package/dist/utils/rate-limit.mjs +3 -6
  163. package/dist/utils/rate-limit.mjs.map +1 -1
  164. package/dist/utils/throttle.cjs +57 -0
  165. package/dist/utils/throttle.cjs.map +1 -0
  166. package/dist/utils/throttle.mjs +56 -0
  167. package/dist/utils/throttle.mjs.map +1 -0
  168. package/package.json +17 -16
  169. package/playground/integration-tests/README.md +24 -0
  170. package/playground/integration-tests/eslint.config.js +5 -0
  171. package/playground/integration-tests/node_modules/.bin/eslint +16 -0
  172. package/playground/integration-tests/node_modules/.bin/tsc +16 -0
  173. package/playground/integration-tests/node_modules/.bin/tsserver +16 -0
  174. package/playground/integration-tests/node_modules/.bin/vitest +16 -0
  175. package/playground/integration-tests/package.json +24 -0
  176. package/playground/integration-tests/test/setup.e2e.ts +11 -0
  177. package/playground/integration-tests/test/specs/mapi-round-trip.spec.e2e.ts +510 -0
  178. package/playground/integration-tests/test/types/components.test-d.ts +74 -0
  179. package/playground/integration-tests/test/types/resources.test-d.ts +212 -0
  180. package/playground/integration-tests/test/types/stories.test-d.ts +310 -0
  181. package/playground/integration-tests/vitest.config.e2e.ts +25 -0
  182. package/playground/integration-tests/vitest.config.ts +13 -0
  183. package/test/GUIDE.md +59 -0
  184. package/vitest.config.ts +5 -0
  185. package/dist/generated/asset_folders/client.gen.cjs +0 -10
  186. package/dist/generated/asset_folders/client.gen.cjs.map +0 -1
  187. package/dist/generated/asset_folders/client.gen.mjs +0 -10
  188. package/dist/generated/asset_folders/client.gen.mjs.map +0 -1
  189. package/dist/generated/asset_folders/sdk.gen.cjs +0 -99
  190. package/dist/generated/asset_folders/sdk.gen.cjs.map +0 -1
  191. package/dist/generated/asset_folders/sdk.gen.mjs +0 -95
  192. package/dist/generated/asset_folders/sdk.gen.mjs.map +0 -1
  193. package/dist/generated/asset_folders/types.gen.d.cts +0 -156
  194. package/dist/generated/asset_folders/types.gen.d.mts +0 -156
  195. package/dist/generated/assets/client.gen.cjs +0 -10
  196. package/dist/generated/assets/client.gen.cjs.map +0 -1
  197. package/dist/generated/assets/client.gen.mjs +0 -10
  198. package/dist/generated/assets/client.gen.mjs.map +0 -1
  199. package/dist/generated/assets/sdk.gen.cjs +0 -179
  200. package/dist/generated/assets/sdk.gen.cjs.map +0 -1
  201. package/dist/generated/assets/sdk.gen.mjs +0 -171
  202. package/dist/generated/assets/sdk.gen.mjs.map +0 -1
  203. package/dist/generated/assets/types.gen.d.cts +0 -415
  204. package/dist/generated/assets/types.gen.d.mts +0 -415
  205. package/dist/generated/component_folders/client.gen.cjs +0 -10
  206. package/dist/generated/component_folders/client.gen.cjs.map +0 -1
  207. package/dist/generated/component_folders/client.gen.mjs +0 -10
  208. package/dist/generated/component_folders/client.gen.mjs.map +0 -1
  209. package/dist/generated/component_folders/sdk.gen.cjs +0 -99
  210. package/dist/generated/component_folders/sdk.gen.cjs.map +0 -1
  211. package/dist/generated/component_folders/sdk.gen.mjs +0 -95
  212. package/dist/generated/component_folders/sdk.gen.mjs.map +0 -1
  213. package/dist/generated/component_folders/types.gen.d.cts +0 -118
  214. package/dist/generated/component_folders/types.gen.d.mts +0 -118
  215. package/dist/generated/components/client.gen.cjs +0 -10
  216. package/dist/generated/components/client.gen.cjs.map +0 -1
  217. package/dist/generated/components/client.gen.mjs +0 -10
  218. package/dist/generated/components/client.gen.mjs.map +0 -1
  219. package/dist/generated/components/sdk.gen.cjs +0 -171
  220. package/dist/generated/components/sdk.gen.cjs.map +0 -1
  221. package/dist/generated/components/sdk.gen.mjs +0 -163
  222. package/dist/generated/components/sdk.gen.mjs.map +0 -1
  223. package/dist/generated/components/types.gen.d.cts +0 -855
  224. package/dist/generated/components/types.gen.d.mts +0 -855
  225. package/dist/generated/datasource_entries/client.gen.cjs +0 -10
  226. package/dist/generated/datasource_entries/client.gen.cjs.map +0 -1
  227. package/dist/generated/datasource_entries/client.gen.mjs +0 -10
  228. package/dist/generated/datasource_entries/client.gen.mjs.map +0 -1
  229. package/dist/generated/datasource_entries/sdk.gen.cjs +0 -89
  230. package/dist/generated/datasource_entries/sdk.gen.cjs.map +0 -1
  231. package/dist/generated/datasource_entries/sdk.gen.mjs +0 -85
  232. package/dist/generated/datasource_entries/sdk.gen.mjs.map +0 -1
  233. package/dist/generated/datasource_entries/types.gen.d.cts +0 -156
  234. package/dist/generated/datasource_entries/types.gen.d.mts +0 -156
  235. package/dist/generated/datasources/client.gen.cjs +0 -10
  236. package/dist/generated/datasources/client.gen.cjs.map +0 -1
  237. package/dist/generated/datasources/client.gen.mjs +0 -10
  238. package/dist/generated/datasources/client.gen.mjs.map +0 -1
  239. package/dist/generated/datasources/sdk.gen.cjs +0 -89
  240. package/dist/generated/datasources/sdk.gen.cjs.map +0 -1
  241. package/dist/generated/datasources/sdk.gen.mjs +0 -85
  242. package/dist/generated/datasources/sdk.gen.mjs.map +0 -1
  243. package/dist/generated/datasources/types.gen.d.cts +0 -186
  244. package/dist/generated/datasources/types.gen.d.mts +0 -186
  245. package/dist/generated/experiments/client.gen.cjs +0 -10
  246. package/dist/generated/experiments/client.gen.cjs.map +0 -1
  247. package/dist/generated/experiments/client.gen.mjs +0 -10
  248. package/dist/generated/experiments/client.gen.mjs.map +0 -1
  249. package/dist/generated/experiments/sdk.gen.cjs +0 -298
  250. package/dist/generated/experiments/sdk.gen.cjs.map +0 -1
  251. package/dist/generated/experiments/sdk.gen.mjs +0 -283
  252. package/dist/generated/experiments/sdk.gen.mjs.map +0 -1
  253. package/dist/generated/experiments/types.gen.d.cts +0 -522
  254. package/dist/generated/experiments/types.gen.d.mts +0 -522
  255. package/dist/generated/internal_tags/client.gen.cjs +0 -10
  256. package/dist/generated/internal_tags/client.gen.cjs.map +0 -1
  257. package/dist/generated/internal_tags/client.gen.mjs +0 -10
  258. package/dist/generated/internal_tags/client.gen.mjs.map +0 -1
  259. package/dist/generated/internal_tags/sdk.gen.cjs +0 -74
  260. package/dist/generated/internal_tags/sdk.gen.cjs.map +0 -1
  261. package/dist/generated/internal_tags/sdk.gen.mjs +0 -71
  262. package/dist/generated/internal_tags/sdk.gen.mjs.map +0 -1
  263. package/dist/generated/internal_tags/types.gen.d.cts +0 -106
  264. package/dist/generated/internal_tags/types.gen.d.mts +0 -106
  265. package/dist/generated/presets/client.gen.cjs +0 -10
  266. package/dist/generated/presets/client.gen.cjs.map +0 -1
  267. package/dist/generated/presets/client.gen.mjs +0 -10
  268. package/dist/generated/presets/client.gen.mjs.map +0 -1
  269. package/dist/generated/presets/sdk.gen.cjs +0 -99
  270. package/dist/generated/presets/sdk.gen.cjs.map +0 -1
  271. package/dist/generated/presets/sdk.gen.mjs +0 -95
  272. package/dist/generated/presets/sdk.gen.mjs.map +0 -1
  273. package/dist/generated/presets/types.gen.d.cts +0 -176
  274. package/dist/generated/presets/types.gen.d.mts +0 -176
  275. package/dist/generated/shared/client/client.gen.cjs.map +0 -1
  276. package/dist/generated/shared/client/client.gen.mjs.map +0 -1
  277. package/dist/generated/shared/client/utils.gen.cjs.map +0 -1
  278. package/dist/generated/shared/client/utils.gen.mjs.map +0 -1
  279. package/dist/generated/shared/core/auth.gen.cjs.map +0 -1
  280. package/dist/generated/shared/core/auth.gen.mjs.map +0 -1
  281. package/dist/generated/shared/core/bodySerializer.gen.cjs.map +0 -1
  282. package/dist/generated/shared/core/bodySerializer.gen.mjs.map +0 -1
  283. package/dist/generated/shared/core/params.gen.cjs.map +0 -1
  284. package/dist/generated/shared/core/params.gen.mjs.map +0 -1
  285. package/dist/generated/shared/core/pathSerializer.gen.cjs.map +0 -1
  286. package/dist/generated/shared/core/pathSerializer.gen.mjs.map +0 -1
  287. package/dist/generated/shared/core/serverSentEvents.gen.cjs.map +0 -1
  288. package/dist/generated/shared/core/serverSentEvents.gen.mjs.map +0 -1
  289. package/dist/generated/shared/core/utils.gen.cjs.map +0 -1
  290. package/dist/generated/shared/core/utils.gen.mjs.map +0 -1
  291. package/dist/generated/spaces/client.gen.cjs +0 -10
  292. package/dist/generated/spaces/client.gen.cjs.map +0 -1
  293. package/dist/generated/spaces/client.gen.mjs +0 -10
  294. package/dist/generated/spaces/client.gen.mjs.map +0 -1
  295. package/dist/generated/spaces/sdk.gen.cjs +0 -99
  296. package/dist/generated/spaces/sdk.gen.cjs.map +0 -1
  297. package/dist/generated/spaces/sdk.gen.mjs +0 -95
  298. package/dist/generated/spaces/sdk.gen.mjs.map +0 -1
  299. package/dist/generated/spaces/types.gen.d.cts +0 -544
  300. package/dist/generated/spaces/types.gen.d.mts +0 -544
  301. package/dist/generated/stories/client.gen.cjs +0 -10
  302. package/dist/generated/stories/client.gen.cjs.map +0 -1
  303. package/dist/generated/stories/client.gen.mjs +0 -10
  304. package/dist/generated/stories/client.gen.mjs.map +0 -1
  305. package/dist/generated/stories/sdk.gen.cjs +0 -138
  306. package/dist/generated/stories/sdk.gen.cjs.map +0 -1
  307. package/dist/generated/stories/sdk.gen.mjs +0 -131
  308. package/dist/generated/stories/sdk.gen.mjs.map +0 -1
  309. package/dist/generated/stories/types.gen.d.cts +0 -1306
  310. package/dist/generated/stories/types.gen.d.mts +0 -1306
  311. package/dist/generated/users/client.gen.cjs +0 -10
  312. package/dist/generated/users/client.gen.cjs.map +0 -1
  313. package/dist/generated/users/client.gen.mjs +0 -10
  314. package/dist/generated/users/client.gen.mjs.map +0 -1
  315. package/dist/generated/users/sdk.gen.cjs +0 -44
  316. package/dist/generated/users/sdk.gen.cjs.map +0 -1
  317. package/dist/generated/users/sdk.gen.mjs +0 -43
  318. package/dist/generated/users/sdk.gen.mjs.map +0 -1
  319. package/dist/generated/users/types.gen.d.cts +0 -348
  320. package/dist/generated/users/types.gen.d.mts +0 -348
  321. package/dist/index.cjs.map +0 -1
  322. package/dist/index.mjs.map +0 -1
  323. package/dist/types.d.cts +0 -130
  324. package/dist/types.d.mts +0 -130
  325. /package/dist/generated/{shared → mapi}/client/client.gen.d.mts +0 -0
  326. /package/dist/generated/{shared → mapi}/client/index.cjs +0 -0
  327. /package/dist/generated/{shared → mapi}/client/index.d.mts +0 -0
  328. /package/dist/generated/{shared → mapi}/client/index.mjs +0 -0
@@ -0,0 +1,195 @@
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 { createSharedAssetFoldersResource } from "./resources/shared-asset-folders.mjs";
17
+ import { createSharedAssetsResource } from "./resources/shared-assets.mjs";
18
+ import { createSharedInternalTagsResource } from "./resources/shared-internal-tags.mjs";
19
+ import { createSpacesResource } from "./resources/spaces.mjs";
20
+ import { createStoriesResource } from "./resources/stories.mjs";
21
+ import { createUsersResource } from "./resources/users.mjs";
22
+ import { getManagementBaseUrl } from "@storyblok/region-helper";
23
+
24
+ //#region src/client.ts
25
+ function getAuthorizationHeader(config) {
26
+ if (config.personalAccessToken) return config.personalAccessToken;
27
+ if (config.oauthToken) return config.oauthToken.startsWith("Bearer ") ? config.oauthToken : `Bearer ${config.oauthToken}`;
28
+ }
29
+ const createManagementApiClientBase = (config) => {
30
+ const { spaceId, region = "eu", baseUrl, headers = {}, throwOnError = false, retry = {
31
+ limit: 12,
32
+ backoffLimit: 2e4,
33
+ methods: [
34
+ "get",
35
+ "post",
36
+ "put",
37
+ "delete",
38
+ "patch",
39
+ "head",
40
+ "options",
41
+ "trace"
42
+ ],
43
+ statusCodes: [429]
44
+ }, timeout = 3e4, rateLimit } = config;
45
+ const throttleManager = createThrottleManager(rateLimit ?? {});
46
+ const authHeader = getAuthorizationHeader(config);
47
+ const client = createClient(createConfig({
48
+ baseUrl: baseUrl || getManagementBaseUrl(region),
49
+ headers: {
50
+ ...authHeader ? { Authorization: authHeader } : {},
51
+ ...headers
52
+ },
53
+ querySerializer,
54
+ throwOnError,
55
+ kyOptions: {
56
+ throwHttpErrors: true,
57
+ timeout,
58
+ retry
59
+ }
60
+ }));
61
+ client.interceptors.error.use((error, response) => new ClientError(response?.statusText || "API request failed", {
62
+ status: response?.status ?? 0,
63
+ statusText: response?.statusText ?? "",
64
+ data: error
65
+ }));
66
+ function wrapRequest(fn, _throwOnError) {
67
+ return throttleManager.execute(() => fn());
68
+ }
69
+ const deps = {
70
+ client,
71
+ spaceId,
72
+ wrapRequest
73
+ };
74
+ return {
75
+ deps,
76
+ resources: buildResources(deps, client)
77
+ };
78
+ };
79
+ function buildResources(deps, client) {
80
+ /**
81
+ * Escape hatch: send a GET request to any MAPI endpoint not yet wrapped
82
+ * in a dedicated resource method.
83
+ */
84
+ const httpGet = (path, options = {}) => {
85
+ const { fetchOptions, ...rest } = options;
86
+ return deps.wrapRequest(() => client.get({
87
+ url: path,
88
+ ...rest,
89
+ ...fetchOptions ? { kyOptions: {
90
+ ...client.getConfig().kyOptions,
91
+ ...fetchOptions
92
+ } } : {}
93
+ }));
94
+ };
95
+ /**
96
+ * Escape hatch: send a POST request to any MAPI endpoint not yet wrapped
97
+ * in a dedicated resource method.
98
+ */
99
+ const httpPost = (path, options = {}) => {
100
+ const { fetchOptions, ...rest } = options;
101
+ return deps.wrapRequest(() => client.post({
102
+ url: path,
103
+ ...rest,
104
+ ...fetchOptions ? { kyOptions: {
105
+ ...client.getConfig().kyOptions,
106
+ ...fetchOptions
107
+ } } : {}
108
+ }));
109
+ };
110
+ /**
111
+ * Escape hatch: send a PUT request to any MAPI endpoint not yet wrapped
112
+ * in a dedicated resource method.
113
+ */
114
+ const httpPut = (path, options = {}) => {
115
+ const { fetchOptions, ...rest } = options;
116
+ return deps.wrapRequest(() => client.put({
117
+ url: path,
118
+ ...rest,
119
+ ...fetchOptions ? { kyOptions: {
120
+ ...client.getConfig().kyOptions,
121
+ ...fetchOptions
122
+ } } : {}
123
+ }));
124
+ };
125
+ /**
126
+ * Escape hatch: send a PATCH request to any MAPI endpoint not yet wrapped
127
+ * in a dedicated resource method.
128
+ */
129
+ const httpPatch = (path, options = {}) => {
130
+ const { fetchOptions, ...rest } = options;
131
+ return deps.wrapRequest(() => client.patch({
132
+ url: path,
133
+ ...rest,
134
+ ...fetchOptions ? { kyOptions: {
135
+ ...client.getConfig().kyOptions,
136
+ ...fetchOptions
137
+ } } : {}
138
+ }));
139
+ };
140
+ /**
141
+ * Escape hatch: send a DELETE request to any MAPI endpoint not yet wrapped
142
+ * in a dedicated resource method.
143
+ */
144
+ const httpDelete = (path, options = {}) => {
145
+ const { fetchOptions, ...rest } = options;
146
+ return deps.wrapRequest(() => client.delete({
147
+ url: path,
148
+ ...rest,
149
+ ...fetchOptions ? { kyOptions: {
150
+ ...client.getConfig().kyOptions,
151
+ ...fetchOptions
152
+ } } : {}
153
+ }));
154
+ };
155
+ return {
156
+ assetFolders: createAssetFoldersResource(deps),
157
+ assets: createAssetsResource(deps),
158
+ componentFolders: createComponentFoldersResource(deps),
159
+ datasourceEntries: createDatasourceEntriesResource(deps),
160
+ datasources: createDatasourcesResource(deps),
161
+ experiments: createExperimentsResource(deps),
162
+ delete: httpDelete,
163
+ get: httpGet,
164
+ patch: httpPatch,
165
+ interceptors: client.interceptors,
166
+ internalTags: createInternalTagsResource(deps),
167
+ post: httpPost,
168
+ presets: createPresetsResource(deps),
169
+ put: httpPut,
170
+ sharedAssetFolders: createSharedAssetFoldersResource(deps),
171
+ sharedAssets: createSharedAssetsResource(deps),
172
+ sharedInternalTags: createSharedInternalTagsResource(deps),
173
+ spaces: createSpacesResource(deps),
174
+ users: createUsersResource({
175
+ client,
176
+ wrapRequest: deps.wrapRequest
177
+ })
178
+ };
179
+ }
180
+ const createManagementApiClient = (config) => {
181
+ const { deps, resources } = createManagementApiClientBase(config);
182
+ const self = {
183
+ ...resources,
184
+ components: createComponentsResource(deps),
185
+ stories: createStoriesResource(deps),
186
+ withTypes() {
187
+ return self;
188
+ }
189
+ };
190
+ return self;
191
+ };
192
+
193
+ //#endregion
194
+ export { createManagementApiClient };
195
+ //# 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 } 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 { createSharedAssetFoldersResource } from './resources/shared-asset-folders';\nimport { createSharedAssetsResource } from './resources/shared-assets';\nimport { createSharedInternalTagsResource } from './resources/shared-internal-tags';\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 6 requests per second.\n * - `number`: fixed requests per second.\n * - `{ requestsPerSecond?: number }`: 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 sharedAssetFolders: createSharedAssetFoldersResource(deps),\n sharedAssets: createSharedAssetsResource(deps),\n sharedInternalTags: createSharedInternalTagsResource(deps),\n spaces: createSpacesResource(deps),\n users: createUsersResource<DefaultThrowOnError>({ client, wrapRequest: deps.wrapRequest }),\n };\n}\n\ntype StoryblokTypesConfig = { components: Block } | { blocks: Block };\n\ntype ResolveComponents<T extends StoryblokTypesConfig> =\n T extends { components: infer C extends Block } ? C\n : T extends { blocks: infer B extends Block } ? B\n : never;\n\n/** Extracts the `fieldType → value` plugin map from a Schema, defaulting to an empty map. */\ntype ResolveFieldPlugins<T> = T extends { fieldPlugins: infer P } ? P : Record<never, never>;\n\n/**\n * The return type of `createManagementApiClient`, parameterised by `TBlocks` so that\n * `.stories` methods can narrow story content types without touching the runtime object.\n * Component *definitions* (`.components`) are wire-shaped and not narrowed by `TBlocks`.\n */\nexport type ManagementApiClient<\n TBlocks extends Block = Block,\n TFieldPlugins = Record<never, never>,\n DefaultThrowOnError extends boolean = false,\n> = ReturnType<typeof buildResources<DefaultThrowOnError>> & {\n components: ReturnType<typeof createComponentsResource<DefaultThrowOnError>>;\n stories: ReturnType<typeof createStoriesResource<TBlocks, TFieldPlugins, 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>, ResolveFieldPlugins<T>, DefaultThrowOnError>;\n};\n\nexport const createManagementApiClient = <\n DefaultThrowOnError extends boolean = false,\n>(\n config: ManagementApiClientConfig<DefaultThrowOnError>,\n): ManagementApiClient<Block, Record<never, never>, DefaultThrowOnError> => {\n const { deps, resources } = createManagementApiClientBase(config);\n const self: ManagementApiClient<Block, Record<never, never>, DefaultThrowOnError> = {\n ...resources,\n components: createComponentsResource<DefaultThrowOnError>(deps),\n stories: createStoriesResource<Block, Record<never, never>, DefaultThrowOnError>(deps),\n withTypes<T extends StoryblokTypesConfig>() {\n return self as unknown as ManagementApiClient<ResolveComponents<T>, ResolveFieldPlugins<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"}
@@ -0,0 +1,371 @@
1
+ //#region src/generated/mapi/_internal.gen.d.ts
2
+ type MapiStory = {
3
+ name: string;
4
+ /**
5
+ * ID of parent space if this is a child space.
6
+ */
7
+ parent_id: number | null;
8
+ group_id: string;
9
+ alternates: Array<Alternate>;
10
+ /**
11
+ * Creation timestamp (format is ISO 8601 standard in UTC).
12
+ */
13
+ readonly created_at: string;
14
+ deleted_at: string | null;
15
+ sort_by_date: string | null;
16
+ tag_list: Array<string>;
17
+ /**
18
+ * Latest update timestamp (format is ISO 8601 standard in UTC).
19
+ */
20
+ updated_at: string;
21
+ /**
22
+ * Latest publication timestamp (format is ISO 8601 standard in UTC).
23
+ */
24
+ published_at: string | null;
25
+ readonly id: number;
26
+ /**
27
+ * Unique UUID identifier for the discussion.
28
+ */
29
+ readonly uuid: string;
30
+ /**
31
+ * true if the instance constitutes a folder.
32
+ */
33
+ is_folder: boolean;
34
+ /**
35
+ * Dynamic component data rendered by Storyblok, structure varies by component
36
+ */
37
+ content: {
38
+ _uid?: string;
39
+ component?: string;
40
+ [key: string]: unknown | string | undefined;
41
+ };
42
+ published: boolean | null;
43
+ /**
44
+ * URL-friendly identifier for the app category.
45
+ */
46
+ slug: string;
47
+ path: string | null;
48
+ full_slug: string;
49
+ /**
50
+ * The default root
51
+ */
52
+ default_root: string | null;
53
+ disble_fe_editor: boolean;
54
+ disable_fe_editor: boolean;
55
+ /**
56
+ * Parent story object (for nested stories).
57
+ */
58
+ parent: {
59
+ id?: number;
60
+ uuid?: string;
61
+ name?: string;
62
+ slug?: string;
63
+ disble_fe_editor?: boolean;
64
+ } | null;
65
+ /**
66
+ * true if the story is defined as the startpage for its parent folder.
67
+ */
68
+ is_startpage: boolean;
69
+ unpublished_changes: boolean | null;
70
+ /**
71
+ * Custom metadata for the story
72
+ */
73
+ meta_data: {
74
+ [key: string]: unknown;
75
+ } | null;
76
+ /**
77
+ * Base version ID(common ancestor) for the story, used for three-way merge operations)
78
+ */
79
+ base_version_id?: number | null;
80
+ /**
81
+ * Main version ID, current version in main
82
+ */
83
+ main_version_id?: number | null;
84
+ /**
85
+ * Current version ID, current version in release or main
86
+ */
87
+ current_version_id?: number | null;
88
+ imported_at: string | null;
89
+ /**
90
+ * Preview token for the story.
91
+ */
92
+ preview_token: {
93
+ token: string;
94
+ timestamp: string;
95
+ };
96
+ pinned: boolean;
97
+ /**
98
+ * List of breadcrumbs for the story.
99
+ */
100
+ breadcrumbs: Array<Breadcrumb>;
101
+ publish_at: string | null;
102
+ expire_at: string | null;
103
+ first_published_at: string | null;
104
+ last_author: {
105
+ id?: number;
106
+ userid: string;
107
+ friendly_name: string;
108
+ avatar?: string;
109
+ } | null;
110
+ last_author_id: number | null;
111
+ /**
112
+ * List of user IDs this story belongs to (read-only, set automatically via workflow or workflow stage changes)
113
+ */
114
+ user_ids: Array<number>;
115
+ /**
116
+ * Space role IDs (read-only, set automatically via workflow or workflow stage changes)
117
+ */
118
+ space_role_ids: Array<number>;
119
+ /**
120
+ * List of translated slugs for the story
121
+ */
122
+ translated_slugs: Array<StoryTranslatedSlug>;
123
+ /**
124
+ * List of translated versions of this story
125
+ */
126
+ translated_stories: Array<{
127
+ /**
128
+ * First published time for this translation
129
+ */
130
+ first_published_at: string;
131
+ /**
132
+ * published time
133
+ */
134
+ published_at: string;
135
+ /**
136
+ * Language code for this translation
137
+ */
138
+ lang: string;
139
+ /**
140
+ * Whether this translation has unpublished changes
141
+ */
142
+ unpublished_changes: boolean;
143
+ }>;
144
+ /**
145
+ * List of localized paths for the story.
146
+ */
147
+ localized_paths: Array<StoryLocalizedPath>;
148
+ /**
149
+ * Numeric representation of the story's position in the folder.
150
+ */
151
+ position: number;
152
+ can_not_view: boolean | null;
153
+ is_scheduled: boolean | null;
154
+ scheduled_dates: string | null;
155
+ /**
156
+ * List of ideas associated with this story.
157
+ */
158
+ ideas: Array<{
159
+ /**
160
+ * Idea ID
161
+ */
162
+ id: string;
163
+ /**
164
+ * Idea name
165
+ */
166
+ name: string;
167
+ /**
168
+ * Author ID
169
+ */
170
+ author_id: number;
171
+ /**
172
+ * Whether idea is private
173
+ */
174
+ is_private: boolean;
175
+ }>;
176
+ /**
177
+ * Workflow stage information (only included when show_stage is true)
178
+ */
179
+ stage?: Stage | null;
180
+ /**
181
+ * List of user IDs
182
+ */
183
+ favourite_for_user_ids: Array<number>;
184
+ /**
185
+ * Variant type (null for regular stories, 'experiment' for A/B test variants).
186
+ */
187
+ variant_type?: string | null;
188
+ /**
189
+ * IDs of experiments this story participates in (only included on show, not index).
190
+ */
191
+ experiment_ids?: Array<number>;
192
+ };
193
+ type StoryCreate = {
194
+ name?: string;
195
+ disble_fe_editor?: boolean;
196
+ disable_fe_editor?: boolean;
197
+ /**
198
+ * The default root
199
+ */
200
+ default_root?: string | null;
201
+ is_folder?: boolean;
202
+ group_id?: string;
203
+ path?: string | null;
204
+ slug?: string;
205
+ is_startpage?: boolean;
206
+ /**
207
+ * ID of the parent folder. Can be null or 0 for root-level stories.
208
+ */
209
+ parent_id?: number | null;
210
+ sort_by_date?: string | null;
211
+ meta_data?: {
212
+ [key: string]: unknown;
213
+ } | null;
214
+ publish_at?: string | null;
215
+ expire_at?: string | null;
216
+ first_published_at?: string | null;
217
+ pinned?: boolean;
218
+ position?: number;
219
+ tag_list?: Array<string>;
220
+ base_version_id?: number | null;
221
+ /**
222
+ * Array of translated slug attributes for creating or updating translated slugs.
223
+ */
224
+ translated_slugs_attributes?: Array<{
225
+ /**
226
+ * ID of the translated slug (required for updates, omit for new records)
227
+ */
228
+ id?: number;
229
+ /**
230
+ * The slug for this translated slug (required)
231
+ */
232
+ slug?: string;
233
+ /**
234
+ * The name for this translated slug
235
+ */
236
+ name?: string | null;
237
+ /**
238
+ * The language code for this translation
239
+ */
240
+ lang?: string;
241
+ /**
242
+ * Set to true to mark this translated slug for deletion when the story is saved
243
+ */
244
+ _destroy?: boolean | null;
245
+ }> | null;
246
+ /**
247
+ * Dynamic component data rendered by Storyblok, structure varies by component
248
+ */
249
+ content?: {
250
+ [key: string]: unknown;
251
+ };
252
+ };
253
+ type StoryUpdate = StoryCreate;
254
+ type Alternate = {
255
+ id: number;
256
+ name: string;
257
+ /**
258
+ * URL-friendly identifier for the app category.
259
+ */
260
+ slug: string;
261
+ published: boolean | null;
262
+ full_slug: string;
263
+ /**
264
+ * true if the instance constitutes a folder.
265
+ */
266
+ is_folder: boolean;
267
+ /**
268
+ * ID of parent space if this is a child space.
269
+ */
270
+ parent_id: number;
271
+ };
272
+ type Breadcrumb = {
273
+ /**
274
+ * Breadcrumb ID
275
+ */
276
+ id: number;
277
+ /**
278
+ * Name of the breadcrumb
279
+ */
280
+ name: string;
281
+ /**
282
+ * ID of parent space if this is a child space.
283
+ */
284
+ parent_id: number | null;
285
+ /**
286
+ * Disable frontend editor (legacy typo field). Deprecated: use disable_fe_editor instead of disble_fe_editor.
287
+ */
288
+ disble_fe_editor: boolean;
289
+ /**
290
+ * Disable frontend editor
291
+ */
292
+ disable_fe_editor: boolean;
293
+ /**
294
+ * Path of the breadcrumb
295
+ */
296
+ path: string | null;
297
+ /**
298
+ * URL-friendly identifier for the app category.
299
+ */
300
+ slug: string;
301
+ /**
302
+ * List of translated slugs for the breadcrumb
303
+ */
304
+ translated_slugs: Array<StoryTranslatedSlug>;
305
+ };
306
+ type StoryTranslatedSlug = {
307
+ /**
308
+ * id
309
+ */
310
+ id: number;
311
+ /**
312
+ * The name for this translated slug
313
+ */
314
+ name: string | null;
315
+ /**
316
+ * URL-friendly identifier for the app category.
317
+ */
318
+ slug: string;
319
+ /**
320
+ * The language code for this translation.
321
+ */
322
+ lang: string;
323
+ published: boolean | null;
324
+ };
325
+ type StoryLocalizedPath = {
326
+ /**
327
+ * The localized path
328
+ */
329
+ path: string;
330
+ /**
331
+ * The translated name
332
+ */
333
+ name: string | null;
334
+ /**
335
+ * The language code for this translation.
336
+ */
337
+ lang: string;
338
+ /**
339
+ * Published status or date
340
+ */
341
+ published: boolean | string | null;
342
+ /**
343
+ * The translated slug (only present when folders are used).
344
+ */
345
+ translated_slug?: string;
346
+ };
347
+ type Stage = {
348
+ /**
349
+ * The workflow ID
350
+ */
351
+ workflow_id: number | null;
352
+ /**
353
+ * The workflow stage ID
354
+ */
355
+ workflow_stage_id: number;
356
+ /**
357
+ * The story ID
358
+ */
359
+ story_id: number;
360
+ /**
361
+ * The due date for this workflow stage
362
+ */
363
+ due_date: string | null;
364
+ /**
365
+ * Creation timestamp (format is ISO 8601 standard in UTC).
366
+ */
367
+ created_at: string;
368
+ };
369
+ //#endregion
370
+ export { MapiStory, StoryCreate, StoryUpdate };
371
+ //# sourceMappingURL=_internal.gen.d.cts.map