@storyblok/api-client 0.3.1 → 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 (216) hide show
  1. package/README.md +3 -1
  2. package/dist/client.cjs +179 -0
  3. package/dist/client.cjs.map +1 -0
  4. package/dist/client.d.cts +567 -0
  5. package/dist/client.d.mts +567 -0
  6. package/dist/client.mjs +178 -0
  7. package/dist/client.mjs.map +1 -0
  8. package/dist/error.cjs.map +1 -1
  9. package/dist/error.d.cts +13 -2
  10. package/dist/error.d.mts +13 -2
  11. package/dist/error.mjs.map +1 -1
  12. package/dist/generated/capi/_internal.gen.d.cts +120 -0
  13. package/dist/generated/capi/_internal.gen.d.mts +120 -0
  14. package/dist/generated/{shared → capi}/client/client.gen.cjs +1 -1
  15. package/dist/generated/capi/client/client.gen.cjs.map +1 -0
  16. package/dist/generated/capi/client/client.gen.d.mts +1 -0
  17. package/dist/generated/{shared → capi}/client/client.gen.mjs +1 -1
  18. package/dist/generated/capi/client/client.gen.mjs.map +1 -0
  19. package/dist/generated/capi/client/index.d.mts +3 -0
  20. package/dist/generated/{shared → capi}/client/types.gen.d.cts +40 -4
  21. package/dist/generated/{shared → capi}/client/types.gen.d.mts +40 -4
  22. package/dist/generated/{shared → capi}/client/utils.gen.cjs +1 -1
  23. package/dist/generated/capi/client/utils.gen.cjs.map +1 -0
  24. package/dist/generated/{shared → capi}/client/utils.gen.d.cts +1 -1
  25. package/dist/generated/{shared → capi}/client/utils.gen.d.mts +1 -1
  26. package/dist/generated/{shared → capi}/client/utils.gen.mjs +1 -1
  27. package/dist/generated/capi/client/utils.gen.mjs.map +1 -0
  28. package/dist/generated/capi/client.gen.cjs +10 -0
  29. package/dist/generated/capi/client.gen.cjs.map +1 -0
  30. package/dist/generated/capi/client.gen.mjs +10 -0
  31. package/dist/generated/capi/client.gen.mjs.map +1 -0
  32. package/dist/generated/{shared → capi}/core/auth.gen.cjs +1 -1
  33. package/dist/generated/capi/core/auth.gen.cjs.map +1 -0
  34. package/dist/generated/{shared → capi}/core/auth.gen.d.cts +1 -1
  35. package/dist/generated/{shared → capi}/core/auth.gen.d.mts +1 -1
  36. package/dist/generated/{shared → capi}/core/auth.gen.mjs +1 -1
  37. package/dist/generated/capi/core/auth.gen.mjs.map +1 -0
  38. package/dist/generated/{shared → capi}/core/bodySerializer.gen.cjs +1 -1
  39. package/dist/generated/capi/core/bodySerializer.gen.cjs.map +1 -0
  40. package/dist/generated/{shared → capi}/core/bodySerializer.gen.d.cts +1 -1
  41. package/dist/generated/{shared → capi}/core/bodySerializer.gen.d.mts +1 -1
  42. package/dist/generated/{shared → capi}/core/bodySerializer.gen.mjs +1 -1
  43. package/dist/generated/capi/core/bodySerializer.gen.mjs.map +1 -0
  44. package/dist/generated/{shared → capi}/core/params.gen.cjs +1 -1
  45. package/dist/generated/capi/core/params.gen.cjs.map +1 -0
  46. package/dist/generated/{shared → capi}/core/params.gen.mjs +1 -1
  47. package/dist/generated/capi/core/params.gen.mjs.map +1 -0
  48. package/dist/generated/{shared → capi}/core/pathSerializer.gen.cjs +1 -1
  49. package/dist/generated/capi/core/pathSerializer.gen.cjs.map +1 -0
  50. package/dist/generated/{shared → capi}/core/pathSerializer.gen.d.cts +1 -1
  51. package/dist/generated/{shared → capi}/core/pathSerializer.gen.d.mts +1 -1
  52. package/dist/generated/{shared → capi}/core/pathSerializer.gen.mjs +1 -1
  53. package/dist/generated/capi/core/pathSerializer.gen.mjs.map +1 -0
  54. package/dist/generated/{shared → capi}/core/serverSentEvents.gen.cjs +1 -1
  55. package/dist/generated/capi/core/serverSentEvents.gen.cjs.map +1 -0
  56. package/dist/generated/{shared → capi}/core/serverSentEvents.gen.d.cts +5 -2
  57. package/dist/generated/{shared → capi}/core/serverSentEvents.gen.d.mts +5 -2
  58. package/dist/generated/{shared → capi}/core/serverSentEvents.gen.mjs +1 -1
  59. package/dist/generated/capi/core/serverSentEvents.gen.mjs.map +1 -0
  60. package/dist/generated/{shared → capi}/core/types.gen.d.cts +15 -2
  61. package/dist/generated/{shared → capi}/core/types.gen.d.mts +15 -2
  62. package/dist/generated/{shared → capi}/core/utils.gen.cjs +1 -1
  63. package/dist/generated/capi/core/utils.gen.cjs.map +1 -0
  64. package/dist/generated/{shared → capi}/core/utils.gen.mjs +1 -1
  65. package/dist/generated/capi/core/utils.gen.mjs.map +1 -0
  66. package/dist/generated/capi/sdk.gen.cjs +141 -0
  67. package/dist/generated/capi/sdk.gen.cjs.map +1 -0
  68. package/dist/generated/capi/sdk.gen.mjs +133 -0
  69. package/dist/generated/capi/sdk.gen.mjs.map +1 -0
  70. package/dist/generated/capi/types-aliased.gen.d.cts +181 -0
  71. package/dist/generated/capi/types-aliased.gen.d.mts +181 -0
  72. package/dist/generated/capi/types.gen.d.cts +919 -0
  73. package/dist/generated/capi/types.gen.d.mts +919 -0
  74. package/dist/generated/mapi/_internal.gen.d.cts +146 -0
  75. package/dist/generated/mapi/_internal.gen.d.mts +146 -0
  76. package/dist/generated/mapi/types.gen.d.cts +293 -0
  77. package/dist/generated/mapi/types.gen.d.mts +293 -0
  78. package/dist/generated/overlay/_internal.gen.d.cts +831 -0
  79. package/dist/generated/overlay/_internal.gen.d.mts +831 -0
  80. package/dist/generated/types/_utils.d.cts +7 -0
  81. package/dist/generated/types/_utils.d.mts +7 -0
  82. package/dist/generated/types/block.d.cts +29 -0
  83. package/dist/generated/types/block.d.mts +29 -0
  84. package/dist/generated/types/field.d.cts +64 -0
  85. package/dist/generated/types/field.d.mts +64 -0
  86. package/dist/generated/types/story.d.cts +19 -0
  87. package/dist/generated/types/story.d.mts +19 -0
  88. package/dist/index.cjs +2 -154
  89. package/dist/index.d.cts +8 -184
  90. package/dist/index.d.mts +8 -184
  91. package/dist/index.mjs +2 -151
  92. package/dist/resources/datasource-entries.cjs +2 -2
  93. package/dist/resources/datasource-entries.cjs.map +1 -1
  94. package/dist/resources/datasource-entries.mjs +2 -2
  95. package/dist/resources/datasource-entries.mjs.map +1 -1
  96. package/dist/resources/datasources.cjs +4 -4
  97. package/dist/resources/datasources.cjs.map +1 -1
  98. package/dist/resources/datasources.mjs +4 -4
  99. package/dist/resources/datasources.mjs.map +1 -1
  100. package/dist/resources/experiments.cjs +26 -0
  101. package/dist/resources/experiments.cjs.map +1 -0
  102. package/dist/resources/experiments.mjs +26 -0
  103. package/dist/resources/experiments.mjs.map +1 -0
  104. package/dist/resources/links.cjs +2 -2
  105. package/dist/resources/links.cjs.map +1 -1
  106. package/dist/resources/links.mjs +2 -2
  107. package/dist/resources/links.mjs.map +1 -1
  108. package/dist/resources/spaces.cjs +4 -4
  109. package/dist/resources/spaces.cjs.map +1 -1
  110. package/dist/resources/spaces.mjs +4 -4
  111. package/dist/resources/spaces.mjs.map +1 -1
  112. package/dist/resources/stories.cjs +16 -12
  113. package/dist/resources/stories.cjs.map +1 -1
  114. package/dist/resources/stories.d.cts +82 -4
  115. package/dist/resources/stories.d.mts +82 -4
  116. package/dist/resources/stories.mjs +16 -12
  117. package/dist/resources/stories.mjs.map +1 -1
  118. package/dist/resources/tags.cjs +2 -2
  119. package/dist/resources/tags.cjs.map +1 -1
  120. package/dist/resources/tags.mjs +2 -2
  121. package/dist/resources/tags.mjs.map +1 -1
  122. package/dist/utils/fetch-rel-uuids.cjs +2 -2
  123. package/dist/utils/fetch-rel-uuids.cjs.map +1 -1
  124. package/dist/utils/fetch-rel-uuids.mjs +2 -2
  125. package/dist/utils/fetch-rel-uuids.mjs.map +1 -1
  126. package/dist/utils/inline-relations.cjs.map +1 -1
  127. package/dist/utils/inline-relations.mjs.map +1 -1
  128. package/dist/utils/rate-limit.cjs +9 -5
  129. package/dist/utils/rate-limit.cjs.map +1 -1
  130. package/dist/utils/rate-limit.d.cts +4 -18
  131. package/dist/utils/rate-limit.d.mts +4 -18
  132. package/dist/utils/rate-limit.mjs +10 -4
  133. package/dist/utils/rate-limit.mjs.map +1 -1
  134. package/package.json +16 -12
  135. package/dist/generated/datasource_entries/client.gen.cjs +0 -10
  136. package/dist/generated/datasource_entries/client.gen.cjs.map +0 -1
  137. package/dist/generated/datasource_entries/client.gen.mjs +0 -10
  138. package/dist/generated/datasource_entries/client.gen.mjs.map +0 -1
  139. package/dist/generated/datasource_entries/sdk.gen.cjs +0 -21
  140. package/dist/generated/datasource_entries/sdk.gen.cjs.map +0 -1
  141. package/dist/generated/datasource_entries/sdk.gen.mjs +0 -21
  142. package/dist/generated/datasource_entries/sdk.gen.mjs.map +0 -1
  143. package/dist/generated/datasource_entries/types.gen.d.cts +0 -67
  144. package/dist/generated/datasource_entries/types.gen.d.mts +0 -67
  145. package/dist/generated/datasources/client.gen.cjs +0 -10
  146. package/dist/generated/datasources/client.gen.cjs.map +0 -1
  147. package/dist/generated/datasources/client.gen.mjs +0 -10
  148. package/dist/generated/datasources/client.gen.mjs.map +0 -1
  149. package/dist/generated/datasources/sdk.gen.cjs +0 -36
  150. package/dist/generated/datasources/sdk.gen.cjs.map +0 -1
  151. package/dist/generated/datasources/sdk.gen.mjs +0 -35
  152. package/dist/generated/datasources/sdk.gen.mjs.map +0 -1
  153. package/dist/generated/datasources/types.gen.d.cts +0 -109
  154. package/dist/generated/datasources/types.gen.d.mts +0 -109
  155. package/dist/generated/links/client.gen.cjs +0 -10
  156. package/dist/generated/links/client.gen.cjs.map +0 -1
  157. package/dist/generated/links/client.gen.mjs +0 -10
  158. package/dist/generated/links/client.gen.mjs.map +0 -1
  159. package/dist/generated/links/sdk.gen.cjs +0 -21
  160. package/dist/generated/links/sdk.gen.cjs.map +0 -1
  161. package/dist/generated/links/sdk.gen.mjs +0 -21
  162. package/dist/generated/links/sdk.gen.mjs.map +0 -1
  163. package/dist/generated/links/types.gen.d.cts +0 -142
  164. package/dist/generated/links/types.gen.d.mts +0 -142
  165. package/dist/generated/shared/client/client.gen.cjs.map +0 -1
  166. package/dist/generated/shared/client/client.gen.mjs.map +0 -1
  167. package/dist/generated/shared/client/utils.gen.cjs.map +0 -1
  168. package/dist/generated/shared/client/utils.gen.mjs.map +0 -1
  169. package/dist/generated/shared/core/auth.gen.cjs.map +0 -1
  170. package/dist/generated/shared/core/auth.gen.mjs.map +0 -1
  171. package/dist/generated/shared/core/bodySerializer.gen.cjs.map +0 -1
  172. package/dist/generated/shared/core/bodySerializer.gen.mjs.map +0 -1
  173. package/dist/generated/shared/core/params.gen.cjs.map +0 -1
  174. package/dist/generated/shared/core/params.gen.mjs.map +0 -1
  175. package/dist/generated/shared/core/pathSerializer.gen.cjs.map +0 -1
  176. package/dist/generated/shared/core/pathSerializer.gen.mjs.map +0 -1
  177. package/dist/generated/shared/core/serverSentEvents.gen.cjs.map +0 -1
  178. package/dist/generated/shared/core/serverSentEvents.gen.mjs.map +0 -1
  179. package/dist/generated/shared/core/utils.gen.cjs.map +0 -1
  180. package/dist/generated/shared/core/utils.gen.mjs.map +0 -1
  181. package/dist/generated/spaces/client.gen.cjs +0 -10
  182. package/dist/generated/spaces/client.gen.cjs.map +0 -1
  183. package/dist/generated/spaces/client.gen.mjs +0 -10
  184. package/dist/generated/spaces/client.gen.mjs.map +0 -1
  185. package/dist/generated/spaces/sdk.gen.cjs +0 -21
  186. package/dist/generated/spaces/sdk.gen.cjs.map +0 -1
  187. package/dist/generated/spaces/sdk.gen.mjs +0 -21
  188. package/dist/generated/spaces/sdk.gen.mjs.map +0 -1
  189. package/dist/generated/spaces/types.gen.d.cts +0 -34
  190. package/dist/generated/spaces/types.gen.d.mts +0 -34
  191. package/dist/generated/stories/client.gen.cjs +0 -10
  192. package/dist/generated/stories/client.gen.cjs.map +0 -1
  193. package/dist/generated/stories/client.gen.mjs +0 -10
  194. package/dist/generated/stories/client.gen.mjs.map +0 -1
  195. package/dist/generated/stories/sdk.gen.cjs +0 -36
  196. package/dist/generated/stories/sdk.gen.cjs.map +0 -1
  197. package/dist/generated/stories/sdk.gen.mjs +0 -35
  198. package/dist/generated/stories/sdk.gen.mjs.map +0 -1
  199. package/dist/generated/stories/types.gen.d.cts +0 -544
  200. package/dist/generated/stories/types.gen.d.mts +0 -544
  201. package/dist/generated/tags/client.gen.cjs +0 -10
  202. package/dist/generated/tags/client.gen.cjs.map +0 -1
  203. package/dist/generated/tags/client.gen.mjs +0 -10
  204. package/dist/generated/tags/client.gen.mjs.map +0 -1
  205. package/dist/generated/tags/sdk.gen.cjs +0 -21
  206. package/dist/generated/tags/sdk.gen.cjs.map +0 -1
  207. package/dist/generated/tags/sdk.gen.mjs +0 -21
  208. package/dist/generated/tags/sdk.gen.mjs.map +0 -1
  209. package/dist/generated/tags/types.gen.d.cts +0 -44
  210. package/dist/generated/tags/types.gen.d.mts +0 -44
  211. package/dist/index.cjs.map +0 -1
  212. package/dist/index.mjs.map +0 -1
  213. package/dist/types.d.cts +0 -37
  214. package/dist/types.d.mts +0 -37
  215. /package/dist/generated/{shared → capi}/client/index.cjs +0 -0
  216. /package/dist/generated/{shared → capi}/client/index.mjs +0 -0
@@ -0,0 +1,7 @@
1
+ //#region src/generated/types/_utils.d.ts
2
+ type Prettify<T> = { [K in keyof T]: T[K] } & {};
3
+ /** Replaces the keys of `T` that also appear in `U` with the definitions from `U`. */
4
+ type Override<T, U> = Prettify<Omit<T, keyof U> & U>;
5
+ //#endregion
6
+ export { Override, Prettify };
7
+ //# sourceMappingURL=_utils.d.cts.map
@@ -0,0 +1,7 @@
1
+ //#region src/generated/types/_utils.d.ts
2
+ type Prettify<T> = { [K in keyof T]: T[K] } & {};
3
+ /** Replaces the keys of `T` that also appear in `U` with the definitions from `U`. */
4
+ type Override<T, U> = Prettify<Omit<T, keyof U> & U>;
5
+ //#endregion
6
+ export { Override, Prettify };
7
+ //# sourceMappingURL=_utils.d.mts.map
@@ -0,0 +1,29 @@
1
+ import { Field } from "../overlay/_internal.gen.cjs";
2
+ import { Component } from "../mapi/_internal.gen.cjs";
3
+ import { Override } from "./_utils.cjs";
4
+
5
+ //#region src/generated/types/block.d.ts
6
+ /** Wire form: the MAPI object map keyed by field name. This is what `defineBlock` returns. */
7
+ type BlockSchema = Record<string, Field & {
8
+ required?: boolean;
9
+ }>;
10
+ /** A Storyblok block. */
11
+ type Block<TName extends string = string, TBlockSchema extends BlockSchema = BlockSchema, TIsRoot extends boolean = boolean, TIsNestable extends boolean = boolean, TComponentGroupUuid extends string | null = string | null> = Override<Component, {
12
+ name: TName;
13
+ schema: TBlockSchema;
14
+ is_root?: TIsRoot;
15
+ is_nestable?: TIsNestable;
16
+ component_group_uuid?: TComponentGroupUuid;
17
+ }>;
18
+ /**
19
+ * A root {@link Block} (`is_root: true`). Given a union of blocks, narrows to
20
+ * its root members; with no argument it is the generic root-block type.
21
+ */
22
+ type RootBlock<T extends Block = Block & {
23
+ is_root: true;
24
+ }> = Extract<T, {
25
+ is_root: true;
26
+ }>;
27
+ //#endregion
28
+ export { Block, RootBlock };
29
+ //# sourceMappingURL=block.d.cts.map
@@ -0,0 +1,29 @@
1
+ import { Field } from "../overlay/_internal.gen.mjs";
2
+ import { Component } from "../mapi/_internal.gen.mjs";
3
+ import { Override } from "./_utils.mjs";
4
+
5
+ //#region src/generated/types/block.d.ts
6
+ /** Wire form: the MAPI object map keyed by field name. This is what `defineBlock` returns. */
7
+ type BlockSchema = Record<string, Field & {
8
+ required?: boolean;
9
+ }>;
10
+ /** A Storyblok block. */
11
+ type Block<TName extends string = string, TBlockSchema extends BlockSchema = BlockSchema, TIsRoot extends boolean = boolean, TIsNestable extends boolean = boolean, TComponentGroupUuid extends string | null = string | null> = Override<Component, {
12
+ name: TName;
13
+ schema: TBlockSchema;
14
+ is_root?: TIsRoot;
15
+ is_nestable?: TIsNestable;
16
+ component_group_uuid?: TComponentGroupUuid;
17
+ }>;
18
+ /**
19
+ * A root {@link Block} (`is_root: true`). Given a union of blocks, narrows to
20
+ * its root members; with no argument it is the generic root-block type.
21
+ */
22
+ type RootBlock<T extends Block = Block & {
23
+ is_root: true;
24
+ }> = Extract<T, {
25
+ is_root: true;
26
+ }>;
27
+ //#endregion
28
+ export { Block, RootBlock };
29
+ //# sourceMappingURL=block.d.mts.map
@@ -0,0 +1,64 @@
1
+ import { AssetFieldValue, BlockContentBase, Field, MultilinkFieldValue, PluginFieldValue, RichtextFieldValue, TableFieldValue } from "../overlay/_internal.gen.cjs";
2
+ import { Prettify } from "./_utils.cjs";
3
+ import { Block } from "./block.cjs";
4
+
5
+ //#region src/generated/types/field.d.ts
6
+ /**
7
+ * Registry of all blocks in the space, used to resolve nested `bloks` fields.
8
+ * A `Block` union resolves nested content against the registry; `NoBlocks`
9
+ * (the default) leaves it loose (`BlockContentBase`).
10
+ */
11
+ type NoBlocks = false;
12
+ /** True when `T` is the un-narrowed base `Block` (i.e. no specific block was supplied). */
13
+ type IsBaseBlock<T> = [Block] extends [T] ? true : false;
14
+ type RequiredFieldKeys<T> = { [K in keyof T]: T[K] extends {
15
+ required: true;
16
+ } ? K : never }[keyof T];
17
+ type OptionalFieldKeys<T> = Exclude<keyof T, RequiredFieldKeys<T>>;
18
+ /**
19
+ * Content object for a single block instance as returned by the Storyblok
20
+ * Content Delivery API. Without a `TBlock` argument, this is the loose
21
+ * runtime shape (any block, `_editable` optional). With a schema-typed
22
+ * `TBlock`, fields are narrowed per the block's schema.
23
+ */
24
+ type BlockContent<TBlock extends Block = Block, TBlocks = NoBlocks> = IsBaseBlock<TBlock> extends true ? BlockContentBase : TBlock extends any ? Prettify<{
25
+ _uid: string;
26
+ component: TBlock['name'];
27
+ _editable?: string;
28
+ } & { [K in RequiredFieldKeys<TBlock['schema']>]: FieldValue<NonNullable<TBlock['schema'][K]>, TBlocks> } & { [K in OptionalFieldKeys<TBlock['schema']>]?: FieldValue<NonNullable<TBlock['schema'][K]>, TBlocks> | null }> : never;
29
+ interface FieldTypeValueMap {
30
+ text: string;
31
+ textarea: string;
32
+ richtext: RichtextFieldValue;
33
+ markdown: string;
34
+ number: number;
35
+ datetime: string;
36
+ boolean: boolean;
37
+ option: string;
38
+ options: string[];
39
+ asset: AssetFieldValue;
40
+ multiasset: AssetFieldValue[];
41
+ multilink: MultilinkFieldValue;
42
+ bloks: BlockContentBase[];
43
+ table: TableFieldValue;
44
+ section: never;
45
+ tab: never;
46
+ custom: PluginFieldValue;
47
+ }
48
+ type IsNestable<T> = T extends {
49
+ is_nestable: false;
50
+ } ? false : T extends {
51
+ is_nestable: true;
52
+ } ? true : true;
53
+ type ApplyWhitelist<TField, TBlocks> = TField extends {
54
+ component_whitelist: ReadonlyArray<infer TWhitelisted extends string>;
55
+ } ? Extract<TBlocks, {
56
+ name: TWhitelisted;
57
+ }> : TBlocks extends any ? IsNestable<TBlocks> extends true ? TBlocks : never : never;
58
+ /** Resolves a field definition to its runtime content value type (read). */
59
+ type FieldValue<TField extends Field = Field, TBlocks = NoBlocks> = Prettify<TField extends {
60
+ type: 'bloks';
61
+ } ? [TBlocks] extends [never] ? BlockContentBase[] : [TBlocks] extends [Block] ? BlockContent<ApplyWhitelist<TField, TBlocks>, TBlocks>[] : BlockContentBase[] : FieldTypeValueMap[TField['type']]>;
62
+ //#endregion
63
+ export { BlockContent };
64
+ //# sourceMappingURL=field.d.cts.map
@@ -0,0 +1,64 @@
1
+ import { AssetFieldValue, BlockContentBase, Field, MultilinkFieldValue, PluginFieldValue, RichtextFieldValue, TableFieldValue } from "../overlay/_internal.gen.mjs";
2
+ import { Prettify } from "./_utils.mjs";
3
+ import { Block } from "./block.mjs";
4
+
5
+ //#region src/generated/types/field.d.ts
6
+ /**
7
+ * Registry of all blocks in the space, used to resolve nested `bloks` fields.
8
+ * A `Block` union resolves nested content against the registry; `NoBlocks`
9
+ * (the default) leaves it loose (`BlockContentBase`).
10
+ */
11
+ type NoBlocks = false;
12
+ /** True when `T` is the un-narrowed base `Block` (i.e. no specific block was supplied). */
13
+ type IsBaseBlock<T> = [Block] extends [T] ? true : false;
14
+ type RequiredFieldKeys<T> = { [K in keyof T]: T[K] extends {
15
+ required: true;
16
+ } ? K : never }[keyof T];
17
+ type OptionalFieldKeys<T> = Exclude<keyof T, RequiredFieldKeys<T>>;
18
+ /**
19
+ * Content object for a single block instance as returned by the Storyblok
20
+ * Content Delivery API. Without a `TBlock` argument, this is the loose
21
+ * runtime shape (any block, `_editable` optional). With a schema-typed
22
+ * `TBlock`, fields are narrowed per the block's schema.
23
+ */
24
+ type BlockContent<TBlock extends Block = Block, TBlocks = NoBlocks> = IsBaseBlock<TBlock> extends true ? BlockContentBase : TBlock extends any ? Prettify<{
25
+ _uid: string;
26
+ component: TBlock['name'];
27
+ _editable?: string;
28
+ } & { [K in RequiredFieldKeys<TBlock['schema']>]: FieldValue<NonNullable<TBlock['schema'][K]>, TBlocks> } & { [K in OptionalFieldKeys<TBlock['schema']>]?: FieldValue<NonNullable<TBlock['schema'][K]>, TBlocks> | null }> : never;
29
+ interface FieldTypeValueMap {
30
+ text: string;
31
+ textarea: string;
32
+ richtext: RichtextFieldValue;
33
+ markdown: string;
34
+ number: number;
35
+ datetime: string;
36
+ boolean: boolean;
37
+ option: string;
38
+ options: string[];
39
+ asset: AssetFieldValue;
40
+ multiasset: AssetFieldValue[];
41
+ multilink: MultilinkFieldValue;
42
+ bloks: BlockContentBase[];
43
+ table: TableFieldValue;
44
+ section: never;
45
+ tab: never;
46
+ custom: PluginFieldValue;
47
+ }
48
+ type IsNestable<T> = T extends {
49
+ is_nestable: false;
50
+ } ? false : T extends {
51
+ is_nestable: true;
52
+ } ? true : true;
53
+ type ApplyWhitelist<TField, TBlocks> = TField extends {
54
+ component_whitelist: ReadonlyArray<infer TWhitelisted extends string>;
55
+ } ? Extract<TBlocks, {
56
+ name: TWhitelisted;
57
+ }> : TBlocks extends any ? IsNestable<TBlocks> extends true ? TBlocks : never : never;
58
+ /** Resolves a field definition to its runtime content value type (read). */
59
+ type FieldValue<TField extends Field = Field, TBlocks = NoBlocks> = Prettify<TField extends {
60
+ type: 'bloks';
61
+ } ? [TBlocks] extends [never] ? BlockContentBase[] : [TBlocks] extends [Block] ? BlockContent<ApplyWhitelist<TField, TBlocks>, TBlocks>[] : BlockContentBase[] : FieldTypeValueMap[TField['type']]>;
62
+ //#endregion
63
+ export { BlockContent };
64
+ //# sourceMappingURL=field.d.mts.map
@@ -0,0 +1,19 @@
1
+ import { CapiStory } from "../capi/_internal.gen.cjs";
2
+ import { Override, Prettify } from "./_utils.cjs";
3
+ import { Block, RootBlock } from "./block.cjs";
4
+ import { BlockContent } from "./field.cjs";
5
+
6
+ //#region src/generated/types/story.d.ts
7
+ /**
8
+ * Registry of all blocks, threaded through to resolve nested `bloks` fields.
9
+ * `NoBlocks` (the default) leaves nested content loose (`BlockContentBase`).
10
+ */
11
+ type NoBlocks = false;
12
+ type CapiStoryWithSchemaContent<TBlock extends RootBlock = RootBlock, TBlocks = NoBlocks> = Override<CapiStory, {
13
+ content: BlockContent<TBlock, TBlocks>;
14
+ }>;
15
+ /** A Storyblok CDN (CAPI) story. */
16
+ type Story<TBlockOrBlocks extends RootBlock | Block = RootBlock, TBlocks = NoBlocks> = Prettify<[TBlockOrBlocks] extends [RootBlock] ? CapiStoryWithSchemaContent<TBlockOrBlocks, TBlocks> : TBlocks extends NoBlocks ? CapiStoryWithSchemaContent<Extract<TBlockOrBlocks, RootBlock>, TBlockOrBlocks> : never>;
17
+ //#endregion
18
+ export { Story };
19
+ //# sourceMappingURL=story.d.cts.map
@@ -0,0 +1,19 @@
1
+ import { CapiStory } from "../capi/_internal.gen.mjs";
2
+ import { Override, Prettify } from "./_utils.mjs";
3
+ import { Block, RootBlock } from "./block.mjs";
4
+ import { BlockContent } from "./field.mjs";
5
+
6
+ //#region src/generated/types/story.d.ts
7
+ /**
8
+ * Registry of all blocks, threaded through to resolve nested `bloks` fields.
9
+ * `NoBlocks` (the default) leaves nested content loose (`BlockContentBase`).
10
+ */
11
+ type NoBlocks = false;
12
+ type CapiStoryWithSchemaContent<TBlock extends RootBlock = RootBlock, TBlocks = NoBlocks> = Override<CapiStory, {
13
+ content: BlockContent<TBlock, TBlocks>;
14
+ }>;
15
+ /** A Storyblok CDN (CAPI) story. */
16
+ type Story<TBlockOrBlocks extends RootBlock | Block = RootBlock, TBlocks = NoBlocks> = Prettify<[TBlockOrBlocks] extends [RootBlock] ? CapiStoryWithSchemaContent<TBlockOrBlocks, TBlocks> : TBlocks extends NoBlocks ? CapiStoryWithSchemaContent<Extract<TBlockOrBlocks, RootBlock>, TBlockOrBlocks> : never>;
17
+ //#endregion
18
+ export { Story };
19
+ //# sourceMappingURL=story.d.mts.map
package/dist/index.cjs CHANGED
@@ -1,158 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
3
- const require_utils_gen = require('./generated/shared/client/utils.gen.cjs');
4
- const require_client_gen = require('./generated/shared/client/client.gen.cjs');
5
- require('./generated/shared/client/index.cjs');
6
- const require_cache = require('./utils/cache.cjs');
7
2
  const require_error = require('./error.cjs');
8
- const require_rate_limit = require('./utils/rate-limit.cjs');
9
- const require_request = require('./utils/request.cjs');
10
- const require_cv = require('./utils/cv.cjs');
11
- const require_stories = require('./resources/stories.cjs');
12
- const require_links = require('./resources/links.cjs');
13
- const require_tags = require('./resources/tags.cjs');
14
- const require_datasources = require('./resources/datasources.cjs');
15
- const require_datasource_entries = require('./resources/datasource-entries.cjs');
16
- const require_spaces = require('./resources/spaces.cjs');
17
- let _storyblok_region_helper = require("@storyblok/region-helper");
3
+ const require_client = require('./client.cjs');
18
4
 
19
- //#region src/index.ts
20
- const createApiClient = (config) => {
21
- const { accessToken, region = "eu", baseUrl, headers = {}, throwOnError = false, cache = {}, inlineRelations = false, retry, timeout = 3e4, rateLimit, fetch: customFetch } = config;
22
- const retryOptions = {
23
- limit: 3,
24
- backoffLimit: 2e4,
25
- jitter: true,
26
- ...retry
27
- };
28
- const throttleManager = require_rate_limit.createThrottleManager(rateLimit ?? {});
29
- const cacheProvider = cache.provider ?? require_cache.createMemoryCacheProvider();
30
- const swrOptions = cache.onRevalidationError ? { onRevalidationError: cache.onRevalidationError } : void 0;
31
- const strategy = cache.strategy ? typeof cache.strategy === "string" ? require_cache.createStrategy(cache.strategy, swrOptions) : cache.strategy : require_cache.createStrategy("cache-first");
32
- const cacheTtlMs = cache.ttlMs ?? 6e4;
33
- const cacheFlush = cache.flush ?? "auto";
34
- const cvMode = cache.cv ?? "auto";
35
- let currentCv;
36
- const client = require_client_gen.createClient(require_utils_gen.createConfig({
37
- auth: accessToken,
38
- baseUrl: baseUrl || (0, _storyblok_region_helper.getRegionBaseUrl)(region),
39
- headers,
40
- throwOnError,
41
- kyOptions: {
42
- throwHttpErrors: true,
43
- timeout,
44
- retry: retryOptions,
45
- ...customFetch && { fetch: customFetch }
46
- }
47
- }));
48
- client.interceptors.error.use((error, response) => new require_error.ClientError(response?.statusText || "API request failed", {
49
- status: response?.status ?? 0,
50
- statusText: response?.statusText ?? "",
51
- data: error
52
- }));
53
- const security = [{
54
- in: "query",
55
- name: "token",
56
- type: "apiKey"
57
- }];
58
- const updateCv = async (result) => {
59
- const nextCv = require_cv.extractCv(result.data);
60
- if (nextCv === void 0) return true;
61
- if (currentCv !== void 0 && nextCv < currentCv) return false;
62
- if (cacheFlush === "auto" && currentCv !== void 0 && currentCv !== nextCv) await cacheProvider.flush();
63
- currentCv = nextCv;
64
- return true;
65
- };
66
- const cacheSuccessResult = async (key, result) => {
67
- const shouldCacheResult = await updateCv(result);
68
- if (result.error === void 0 && shouldCacheResult) await cacheProvider.set(key, {
69
- value: result,
70
- ttlMs: cacheTtlMs
71
- });
72
- return result;
73
- };
74
- const requestNetwork = async (method, path, query, options) => {
75
- return client.request({
76
- ...options,
77
- method,
78
- query,
79
- security,
80
- url: path
81
- });
82
- };
83
- /**
84
- * Wraps a raw SDK call to cast the `error: unknown` type returned by
85
- * generated code to `ClientError` — the error interceptor ensures the
86
- * runtime value IS a ClientError.
87
- */
88
- const asApiResponse = (p) => p;
89
- const requestWithCache = async (method, path, rawQuery, fetchFn, cacheOptions) => {
90
- const query = cvMode === "auto" && currentCv !== void 0 ? require_cv.applyCvToQuery(rawQuery, currentCv) : rawQuery;
91
- if (!require_request.shouldUseCache(method, path, rawQuery)) {
92
- const networkResult = await fetchFn(query);
93
- throttleManager.adaptToResponse(networkResult.response);
94
- await updateCv(networkResult);
95
- return networkResult;
96
- }
97
- const baseKey = require_request.createCacheKey(method, path, rawQuery);
98
- const key = cacheOptions?.cacheKeyPrefix ? `${cacheOptions.cacheKeyPrefix}:${baseKey}` : baseKey;
99
- const cachedResult = (await cacheProvider.get(key))?.value;
100
- const loadNetwork = async () => {
101
- const result = await fetchFn(query);
102
- throttleManager.adaptToResponse(result.response);
103
- return cacheSuccessResult(key, result);
104
- };
105
- return strategy({
106
- key,
107
- cachedResult,
108
- loadNetwork
109
- });
110
- };
111
- const request = async (method, path, options = {}) => {
112
- const rawQuery = options.query || {};
113
- return requestWithCache(method, path, rawQuery, (query) => {
114
- return throttleManager.execute(path, rawQuery, () => requestNetwork(method, path, query, options));
115
- });
116
- };
117
- const getRequest = (path, options = {}) => {
118
- return request("GET", path, options);
119
- };
120
- const resourceDeps = {
121
- client,
122
- requestWithCache,
123
- asApiResponse,
124
- throttleManager
125
- };
126
- const stories = require_stories.createStoriesResource({
127
- ...resourceDeps,
128
- inlineRelations
129
- });
130
- /**
131
- * Flush the in-memory cache and reset the tracked cv.
132
- *
133
- * Call this explicitly when `cache.flush` is set to `'manual'`, e.g. after
134
- * receiving a Storyblok webhook event that signals content has changed.
135
- */
136
- const flushCache = async () => {
137
- await cacheProvider.flush();
138
- currentCv = void 0;
139
- };
140
- return {
141
- datasourceEntries: require_datasource_entries.createDatasourceEntriesResource(resourceDeps),
142
- datasources: require_datasources.createDatasourcesResource(resourceDeps),
143
- flushCache,
144
- get: getRequest,
145
- interceptors: client.interceptors,
146
- links: require_links.createLinksResource(resourceDeps),
147
- spaces: require_spaces.createSpacesResource(resourceDeps),
148
- stories,
149
- tags: require_tags.createTagsResource(resourceDeps)
150
- };
151
- };
152
-
153
- //#endregion
154
5
  exports.ClientError = require_error.ClientError;
155
- exports.createApiClient = createApiClient;
156
- exports.createThrottle = require_rate_limit.createThrottle;
157
- exports.parseRateLimitPolicyHeader = require_rate_limit.parseRateLimitPolicyHeader;
158
- //# sourceMappingURL=index.cjs.map
6
+ exports.createApiClient = require_client.createApiClient;
package/dist/index.d.cts CHANGED
@@ -1,186 +1,10 @@
1
- import { DatasourceEntryCapi, ListData, ListResponses } from "./generated/datasource_entries/types.gen.cjs";
2
- import { DatasourceCapi, GetData, GetResponses, ListData as ListData$1, ListResponses as ListResponses$1 } from "./generated/datasources/types.gen.cjs";
3
- import { Middleware } from "./generated/shared/client/utils.gen.cjs";
4
- import { ResolvedRequestOptions } from "./generated/shared/client/types.gen.cjs";
5
- import { LinkCapi, ListData as ListData$2, ListResponses as ListResponses$2 } from "./generated/links/types.gen.cjs";
6
- import { GetResponses as GetResponses$1, SpaceCapi } from "./generated/spaces/types.gen.cjs";
7
- import { GetData as GetData$1, ListData as ListData$3, StoryCapi } from "./generated/stories/types.gen.cjs";
8
- import { ListData as ListData$4, ListResponses as ListResponses$3, TagCapi } from "./generated/tags/types.gen.cjs";
1
+ import { Middleware } from "./generated/capi/client/utils.gen.cjs";
9
2
  import { CacheProvider, CacheStrategy, CacheStrategyHandler } from "./utils/cache.cjs";
10
- import { ClientError } from "./error.cjs";
11
- import { RateLimitConfig, createThrottle, parseRateLimitPolicyHeader } from "./utils/rate-limit.cjs";
12
- import { ApiResponse, FetchOptions, HttpRequestMethod, HttpRequestOptions } from "./types.cjs";
3
+ import { ApiErrorBody, ClientError } from "./error.cjs";
4
+ import { Block } from "./generated/types/block.cjs";
5
+ import { Story } from "./generated/types/story.cjs";
13
6
  import { StoryWithInlinedRelations } from "./resources/stories.cjs";
14
- import { RetryOptions } from "ky";
15
- import { Region } from "@storyblok/region-helper";
16
-
17
- //#region src/index.d.ts
18
- type Prettify<T> = { [K in keyof T]: T[K] } & {};
19
- type Story = Prettify<StoryCapi>;
20
- /**
21
- * Cache configuration.
22
- *
23
- * **Note:** Requests with `version: 'draft'` always bypass the cache regardless
24
- * of the configured strategy. Only published content is cached.
25
- */
26
- interface CacheConfig {
27
- /** Custom cache provider. Defaults to an in-memory LRU cache (1 000 entries). */
28
- provider?: CacheProvider;
29
- /** Cache strategy for published requests. @default 'cache-first' */
30
- strategy?: CacheStrategy | CacheStrategyHandler;
31
- /** Time-to-live in milliseconds for cached entries. @default 60_000 */
32
- ttlMs?: number;
33
- /**
34
- * Controls how the `cv` (content version) query parameter is managed.
35
- *
36
- * - `'auto'` (default): automatically attach the tracked `cv` to
37
- * subsequent published requests for cache busting.
38
- * - `'manual'`: do not attach `cv` to outgoing requests. The client still
39
- * tracks cv internally for cache invalidation (flushing when cv changes),
40
- * but the query parameter is not sent. Useful for SSR with edge caching
41
- * where stable URLs are required.
42
- */
43
- cv?: 'auto' | 'manual';
44
- /**
45
- * Controls when the cache is flushed on cv change.
46
- *
47
- * - `'auto'` (default): automatically flush the cache whenever the API returns a new cv value.
48
- * - `'manual'`: never auto-flush; call `client.flushCache()` explicitly (e.g. on webhook trigger).
49
- */
50
- flush?: 'auto' | 'manual';
51
- /**
52
- * Called when SWR background revalidation fails.
53
- * Only relevant when `strategy` is `'swr'`.
54
- * @default console.warn
55
- */
56
- onRevalidationError?: (error: unknown) => void;
57
- }
58
- interface ContentApiClientConfig<ThrowOnError extends boolean = false, InlineRelations extends boolean = false> {
59
- accessToken: string;
60
- region?: Region;
61
- baseUrl?: string;
62
- headers?: Record<string, string>;
63
- throwOnError?: ThrowOnError;
64
- cache?: CacheConfig;
65
- inlineRelations?: InlineRelations;
66
- retry?: RetryOptions;
67
- /**
68
- * Request timeout in milliseconds.
69
- * @default 30_000
70
- */
71
- timeout?: number;
72
- /**
73
- * Preventive rate limiting to avoid hitting the Storyblok CDN rate limits.
74
- *
75
- * - `undefined` (default): auto-detect tier from path + `per_page` query param.
76
- * - `number`: fixed max concurrent requests per second (single queue).
77
- * - `{ maxConcurrency?: number; adaptToServerHeaders?: boolean }`: full config.
78
- * - `false`: disable rate limiting entirely.
79
- */
80
- rateLimit?: RateLimitConfig | number | false;
81
- /**
82
- * Custom `fetch` function to use for all requests.
83
- * Must be fully compatible with the Fetch API standard.
84
- *
85
- * Use cases:
86
- * - SSR framework fetch wrappers (e.g., Next.js `fetch` with caching)
87
- * - Custom instrumentation or logging around requests
88
- *
89
- * @default globalThis.fetch
90
- */
91
- fetch?: typeof globalThis.fetch;
92
- }
93
- declare const createApiClient: <ThrowOnError extends boolean = false, InlineRelations extends boolean = false>(config: ContentApiClientConfig<ThrowOnError, InlineRelations>) => {
94
- datasourceEntries: {
95
- list: <ThrowOnError_1 extends boolean = false>(options?: {
96
- query?: ListData["query"];
97
- signal?: AbortSignal;
98
- throwOnError?: ThrowOnError_1;
99
- fetchOptions?: FetchOptions;
100
- }) => Promise<ApiResponse<ListResponses[200], ThrowOnError_1>>;
101
- };
102
- datasources: {
103
- get: <ThrowOnError_1 extends boolean = false>(id: GetData["path"]["id"], options?: {
104
- query?: GetData["query"];
105
- signal?: AbortSignal;
106
- throwOnError?: ThrowOnError_1;
107
- fetchOptions?: FetchOptions;
108
- }) => Promise<ApiResponse<GetResponses[200], ThrowOnError_1>>;
109
- list: <ThrowOnError_1 extends boolean = false>(options?: {
110
- query?: ListData$1["query"];
111
- signal?: AbortSignal;
112
- throwOnError?: ThrowOnError_1;
113
- fetchOptions?: FetchOptions;
114
- }) => Promise<ApiResponse<ListResponses$1[200], ThrowOnError_1>>;
115
- };
116
- flushCache: () => Promise<void>;
117
- get: (path: string, options?: HttpRequestOptions) => Promise<{
118
- data?: unknown;
119
- error?: ClientError;
120
- response: Response;
121
- request: Request;
122
- }>;
123
- interceptors: Middleware<Request, Response, unknown, ResolvedRequestOptions<"fields", boolean, string>>;
124
- links: {
125
- list: <ThrowOnError_1 extends boolean = false>(options?: {
126
- query?: ListData$2["query"];
127
- signal?: AbortSignal;
128
- throwOnError?: ThrowOnError_1;
129
- fetchOptions?: FetchOptions;
130
- }) => Promise<ApiResponse<ListResponses$2[200], ThrowOnError_1>>;
131
- };
132
- spaces: {
133
- get: <ThrowOnError_1 extends boolean = false>(options?: {
134
- signal?: AbortSignal;
135
- throwOnError?: ThrowOnError_1;
136
- fetchOptions?: FetchOptions;
137
- }) => Promise<ApiResponse<GetResponses$1[200], ThrowOnError_1>>;
138
- };
139
- stories: {
140
- get: <ThrowOnError_1 extends boolean = false>(identifier: string | number, options?: {
141
- query?: GetData$1["query"];
142
- signal?: AbortSignal;
143
- throwOnError?: ThrowOnError_1 | undefined;
144
- fetchOptions?: FetchOptions;
145
- }) => Promise<ApiResponse<Omit<{
146
- story: StoryCapi;
147
- cv?: number;
148
- rels?: Array<StoryCapi>;
149
- links?: Array<{
150
- [key: string]: unknown;
151
- }>;
152
- rel_uuids?: Array<string>;
153
- link_uuids?: Array<string>;
154
- }, "story"> & {
155
- story: InlineRelations extends true ? StoryWithInlinedRelations : StoryCapi;
156
- }, ThrowOnError_1>>;
157
- list: <ThrowOnError_1 extends boolean = false>(options?: {
158
- query?: ListData$3["query"];
159
- signal?: AbortSignal;
160
- throwOnError?: ThrowOnError_1 | undefined;
161
- fetchOptions?: FetchOptions;
162
- }) => Promise<ApiResponse<Omit<{
163
- stories: Array<StoryCapi>;
164
- cv?: number;
165
- rels?: Array<StoryCapi>;
166
- links?: Array<{
167
- [key: string]: unknown;
168
- }>;
169
- rel_uuids?: Array<string>;
170
- link_uuids?: Array<string>;
171
- }, "stories"> & {
172
- stories: (InlineRelations extends true ? StoryWithInlinedRelations : StoryCapi)[];
173
- }, ThrowOnError_1>>;
174
- };
175
- tags: {
176
- list: <ThrowOnError_1 extends boolean = false>(options?: {
177
- query?: ListData$4["query"];
178
- signal?: AbortSignal;
179
- throwOnError?: ThrowOnError_1;
180
- fetchOptions?: FetchOptions;
181
- }) => Promise<ApiResponse<ListResponses$3[200], ThrowOnError_1>>;
182
- };
183
- };
184
- //#endregion
185
- export { type ApiResponse, type CacheProvider, type CacheStrategy, type CacheStrategyHandler, ClientError, ContentApiClientConfig, type DatasourceCapi as Datasource, type DatasourceEntryCapi as DatasourceEntry, type FetchOptions, type HttpRequestMethod, type HttpRequestOptions, type LinkCapi as Link, type Middleware, type RateLimitConfig, type SpaceCapi as Space, Story, type StoryWithInlinedRelations, type TagCapi as Tag, createApiClient, createThrottle, parseRateLimitPolicyHeader };
186
- //# sourceMappingURL=index.d.cts.map
7
+ import { ApiResponse, CacheConfig, ContentApiClient, ContentApiClientConfig, FetchOptions, HttpRequestMethod, HttpRequestOptions, RequestWithCacheOptions, ResourceDeps, createApiClient } from "./client.cjs";
8
+ import { Datasource, DatasourceEntry, Link, StoryAlternate, Tag } from "./generated/capi/types-aliased.gen.cjs";
9
+ import { Space, StoryLocalizedPath, StoryTranslatedSlug } from "./generated/mapi/types.gen.cjs";
10
+ export { type ApiErrorBody, type ApiResponse, type CacheConfig, type CacheProvider, type CacheStrategy, type CacheStrategyHandler, ClientError, type Block as Component, type ContentApiClient, type ContentApiClientConfig, type Datasource, type DatasourceEntry, type FetchOptions, type HttpRequestMethod, type HttpRequestOptions, type Link, type Middleware, type RequestWithCacheOptions, type ResourceDeps, type Space, type Story, type StoryAlternate, type StoryLocalizedPath, type StoryTranslatedSlug, type StoryWithInlinedRelations, type Tag, createApiClient };