@storyblok/schema 0.1.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +74 -0
  3. package/dist/generated/capi/_internal.gen.d.cts +120 -0
  4. package/dist/generated/capi/_internal.gen.d.mts +120 -0
  5. package/dist/generated/capi/types.gen.d.cts +181 -0
  6. package/dist/generated/capi/types.gen.d.mts +181 -0
  7. package/dist/generated/mapi/_internal.gen.d.cts +683 -0
  8. package/dist/generated/mapi/_internal.gen.d.mts +683 -0
  9. package/dist/generated/mapi/types.gen.d.cts +1272 -0
  10. package/dist/generated/mapi/types.gen.d.mts +1272 -0
  11. package/dist/generated/overlay/_internal.gen.d.cts +850 -0
  12. package/dist/generated/overlay/_internal.gen.d.mts +850 -0
  13. package/dist/generated/types/_utils.d.cts +7 -0
  14. package/dist/generated/types/_utils.d.mts +7 -0
  15. package/dist/generated/types/block.d.cts +46 -0
  16. package/dist/generated/types/block.d.mts +46 -0
  17. package/dist/generated/types/field.d.cts +74 -0
  18. package/dist/generated/types/field.d.mts +74 -0
  19. package/dist/generated/types/mapi-story.d.cts +29 -0
  20. package/dist/generated/types/mapi-story.d.mts +29 -0
  21. package/dist/generated/types/story.d.cts +19 -0
  22. package/dist/generated/types/story.d.mts +19 -0
  23. package/dist/helpers/create-story-helpers.cjs +42 -0
  24. package/dist/helpers/create-story-helpers.cjs.map +1 -0
  25. package/dist/helpers/create-story-helpers.d.cts +50 -0
  26. package/dist/helpers/create-story-helpers.d.mts +50 -0
  27. package/dist/helpers/create-story-helpers.mjs +42 -0
  28. package/dist/helpers/create-story-helpers.mjs.map +1 -0
  29. package/dist/helpers/define-asset-folder.cjs +46 -0
  30. package/dist/helpers/define-asset-folder.cjs.map +1 -0
  31. package/dist/helpers/define-asset-folder.d.cts +33 -0
  32. package/dist/helpers/define-asset-folder.d.mts +33 -0
  33. package/dist/helpers/define-asset-folder.mjs +43 -0
  34. package/dist/helpers/define-asset-folder.mjs.map +1 -0
  35. package/dist/helpers/define-asset.cjs +60 -0
  36. package/dist/helpers/define-asset.cjs.map +1 -0
  37. package/dist/helpers/define-asset.d.cts +32 -0
  38. package/dist/helpers/define-asset.d.mts +32 -0
  39. package/dist/helpers/define-asset.mjs +57 -0
  40. package/dist/helpers/define-asset.mjs.map +1 -0
  41. package/dist/helpers/define-block-folder.cjs +44 -0
  42. package/dist/helpers/define-block-folder.cjs.map +1 -0
  43. package/dist/helpers/define-block-folder.d.cts +34 -0
  44. package/dist/helpers/define-block-folder.d.mts +34 -0
  45. package/dist/helpers/define-block-folder.mjs +41 -0
  46. package/dist/helpers/define-block-folder.mjs.map +1 -0
  47. package/dist/helpers/define-block.cjs +51 -0
  48. package/dist/helpers/define-block.cjs.map +1 -0
  49. package/dist/helpers/define-block.d.cts +62 -0
  50. package/dist/helpers/define-block.d.mts +62 -0
  51. package/dist/helpers/define-block.mjs +48 -0
  52. package/dist/helpers/define-block.mjs.map +1 -0
  53. package/dist/helpers/define-datasource-entry.cjs +47 -0
  54. package/dist/helpers/define-datasource-entry.cjs.map +1 -0
  55. package/dist/helpers/define-datasource-entry.d.cts +49 -0
  56. package/dist/helpers/define-datasource-entry.d.mts +49 -0
  57. package/dist/helpers/define-datasource-entry.mjs +43 -0
  58. package/dist/helpers/define-datasource-entry.mjs.map +1 -0
  59. package/dist/helpers/define-datasource.cjs +34 -0
  60. package/dist/helpers/define-datasource.cjs.map +1 -0
  61. package/dist/helpers/define-datasource.d.cts +42 -0
  62. package/dist/helpers/define-datasource.d.mts +42 -0
  63. package/dist/helpers/define-datasource.mjs +31 -0
  64. package/dist/helpers/define-datasource.mjs.map +1 -0
  65. package/dist/helpers/define-field.cjs +17 -0
  66. package/dist/helpers/define-field.cjs.map +1 -0
  67. package/dist/helpers/define-field.d.cts +99 -0
  68. package/dist/helpers/define-field.d.mts +99 -0
  69. package/dist/helpers/define-field.mjs +16 -0
  70. package/dist/helpers/define-field.mjs.map +1 -0
  71. package/dist/helpers/define-internal-tag.cjs +41 -0
  72. package/dist/helpers/define-internal-tag.cjs.map +1 -0
  73. package/dist/helpers/define-internal-tag.d.cts +34 -0
  74. package/dist/helpers/define-internal-tag.d.mts +34 -0
  75. package/dist/helpers/define-internal-tag.mjs +38 -0
  76. package/dist/helpers/define-internal-tag.mjs.map +1 -0
  77. package/dist/helpers/define-link.cjs +23 -0
  78. package/dist/helpers/define-link.cjs.map +1 -0
  79. package/dist/helpers/define-link.d.cts +32 -0
  80. package/dist/helpers/define-link.d.mts +32 -0
  81. package/dist/helpers/define-link.mjs +22 -0
  82. package/dist/helpers/define-link.mjs.map +1 -0
  83. package/dist/helpers/define-preset.cjs +44 -0
  84. package/dist/helpers/define-preset.cjs.map +1 -0
  85. package/dist/helpers/define-preset.d.cts +35 -0
  86. package/dist/helpers/define-preset.d.mts +35 -0
  87. package/dist/helpers/define-preset.mjs +41 -0
  88. package/dist/helpers/define-preset.mjs.map +1 -0
  89. package/dist/helpers/define-space.cjs +47 -0
  90. package/dist/helpers/define-space.cjs.map +1 -0
  91. package/dist/helpers/define-space.d.cts +31 -0
  92. package/dist/helpers/define-space.d.mts +31 -0
  93. package/dist/helpers/define-space.mjs +44 -0
  94. package/dist/helpers/define-space.mjs.map +1 -0
  95. package/dist/helpers/define-story.cjs +122 -0
  96. package/dist/helpers/define-story.cjs.map +1 -0
  97. package/dist/helpers/define-story.d.cts +135 -0
  98. package/dist/helpers/define-story.d.mts +135 -0
  99. package/dist/helpers/define-story.mjs +118 -0
  100. package/dist/helpers/define-story.mjs.map +1 -0
  101. package/dist/helpers/define-tag.cjs +13 -0
  102. package/dist/helpers/define-tag.cjs.map +1 -0
  103. package/dist/helpers/define-tag.d.cts +23 -0
  104. package/dist/helpers/define-tag.d.mts +23 -0
  105. package/dist/helpers/define-tag.mjs +12 -0
  106. package/dist/helpers/define-tag.mjs.map +1 -0
  107. package/dist/helpers/define-user.cjs +50 -0
  108. package/dist/helpers/define-user.cjs.map +1 -0
  109. package/dist/helpers/define-user.d.cts +26 -0
  110. package/dist/helpers/define-user.d.mts +26 -0
  111. package/dist/helpers/define-user.mjs +48 -0
  112. package/dist/helpers/define-user.mjs.map +1 -0
  113. package/dist/helpers/schema-type.d.cts +40 -0
  114. package/dist/helpers/schema-type.d.mts +40 -0
  115. package/dist/index.cjs +55 -0
  116. package/dist/index.d.cts +23 -0
  117. package/dist/index.d.mts +23 -0
  118. package/dist/index.mjs +17 -0
  119. package/dist/utils/prettify.d.cts +9 -0
  120. package/dist/utils/prettify.d.mts +9 -0
  121. package/package.json +78 -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,46 @@
1
+ import { Component, ComponentCreate, ComponentUpdate } from "../mapi/_internal.gen.cjs";
2
+ import { Field } from "../overlay/_internal.gen.cjs";
3
+ import { Override } from "./_utils.cjs";
4
+
5
+ //#region src/generated/types/block.d.ts
6
+ /** Input form: an ordered array of named fields. The array index becomes `pos`. */
7
+ type BlockSchemaInput = ReadonlyArray<Field & {
8
+ name: string;
9
+ required?: boolean;
10
+ }>;
11
+ /** Wire form: the MAPI object map keyed by field name. This is what `defineBlock` returns. */
12
+ type BlockSchema = Record<string, Field & {
13
+ required?: boolean;
14
+ }>;
15
+ /** Converts an array-form schema input into the wire-shape object map at the type level. */
16
+ type SchemaArrayToRecord<T extends BlockSchemaInput> = { [F in T[number] as F['name']]: Omit<F, 'name'> };
17
+ /** A Storyblok block. */
18
+ 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, {
19
+ name: TName;
20
+ schema: TBlockSchema;
21
+ is_root?: TIsRoot;
22
+ is_nestable?: TIsNestable;
23
+ component_group_uuid?: TComponentGroupUuid;
24
+ }>;
25
+ /**
26
+ * A root {@link Block} (`is_root: true`). Given a union of blocks, narrows to
27
+ * its root members; with no argument it is the generic root-block type.
28
+ */
29
+ type RootBlock<T extends Block = Block & {
30
+ is_root: true;
31
+ }> = Extract<T, {
32
+ is_root: true;
33
+ }>;
34
+ /**
35
+ * A nestable {@link Block} (`is_nestable: true`). Given a union of blocks,
36
+ * narrows to its nestable members; with no argument it is the generic
37
+ * nestable-block type.
38
+ */
39
+ type NestableBlock<T extends Block = Block & {
40
+ is_nestable: true;
41
+ }> = Extract<T, {
42
+ is_nestable: true;
43
+ }>;
44
+ //#endregion
45
+ export { Block, BlockSchema, BlockSchemaInput, NestableBlock, RootBlock, SchemaArrayToRecord };
46
+ //# sourceMappingURL=block.d.cts.map
@@ -0,0 +1,46 @@
1
+ import { Component, ComponentCreate, ComponentUpdate } from "../mapi/_internal.gen.mjs";
2
+ import { Field } from "../overlay/_internal.gen.mjs";
3
+ import { Override } from "./_utils.mjs";
4
+
5
+ //#region src/generated/types/block.d.ts
6
+ /** Input form: an ordered array of named fields. The array index becomes `pos`. */
7
+ type BlockSchemaInput = ReadonlyArray<Field & {
8
+ name: string;
9
+ required?: boolean;
10
+ }>;
11
+ /** Wire form: the MAPI object map keyed by field name. This is what `defineBlock` returns. */
12
+ type BlockSchema = Record<string, Field & {
13
+ required?: boolean;
14
+ }>;
15
+ /** Converts an array-form schema input into the wire-shape object map at the type level. */
16
+ type SchemaArrayToRecord<T extends BlockSchemaInput> = { [F in T[number] as F['name']]: Omit<F, 'name'> };
17
+ /** A Storyblok block. */
18
+ 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, {
19
+ name: TName;
20
+ schema: TBlockSchema;
21
+ is_root?: TIsRoot;
22
+ is_nestable?: TIsNestable;
23
+ component_group_uuid?: TComponentGroupUuid;
24
+ }>;
25
+ /**
26
+ * A root {@link Block} (`is_root: true`). Given a union of blocks, narrows to
27
+ * its root members; with no argument it is the generic root-block type.
28
+ */
29
+ type RootBlock<T extends Block = Block & {
30
+ is_root: true;
31
+ }> = Extract<T, {
32
+ is_root: true;
33
+ }>;
34
+ /**
35
+ * A nestable {@link Block} (`is_nestable: true`). Given a union of blocks,
36
+ * narrows to its nestable members; with no argument it is the generic
37
+ * nestable-block type.
38
+ */
39
+ type NestableBlock<T extends Block = Block & {
40
+ is_nestable: true;
41
+ }> = Extract<T, {
42
+ is_nestable: true;
43
+ }>;
44
+ //#endregion
45
+ export { Block, BlockSchema, BlockSchemaInput, NestableBlock, RootBlock, SchemaArrayToRecord };
46
+ //# sourceMappingURL=block.d.mts.map
@@ -0,0 +1,74 @@
1
+ import { AssetFieldValue, BlockContentBase, BlockContentInputBase, 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
+ /** Input variant of {@link BlockContent} for write operations (creating/updating stories via the MAPI). `_uid` is optional. */
30
+ type BlockContentInput<TBlock extends Block = Block, TBlocks = NoBlocks> = IsBaseBlock<TBlock> extends true ? BlockContentInputBase : TBlock extends any ? Prettify<{
31
+ _uid?: string;
32
+ component: TBlock['name'];
33
+ _editable?: string;
34
+ } & { [K in RequiredFieldKeys<TBlock['schema']>]: FieldValueInput<NonNullable<TBlock['schema'][K]>, TBlocks> } & { [K in OptionalFieldKeys<TBlock['schema']>]?: FieldValueInput<NonNullable<TBlock['schema'][K]>, TBlocks> | null }> : never;
35
+ interface FieldTypeValueMap {
36
+ text: string;
37
+ textarea: string;
38
+ richtext: RichtextFieldValue;
39
+ markdown: string;
40
+ number: number;
41
+ datetime: string;
42
+ boolean: boolean;
43
+ option: string;
44
+ options: string[];
45
+ asset: AssetFieldValue;
46
+ multiasset: AssetFieldValue[];
47
+ multilink: MultilinkFieldValue;
48
+ bloks: BlockContentBase[];
49
+ table: TableFieldValue;
50
+ section: never;
51
+ tab: never;
52
+ custom: PluginFieldValue;
53
+ }
54
+ type IsNestable<T> = T extends {
55
+ is_nestable: false;
56
+ } ? false : T extends {
57
+ is_nestable: true;
58
+ } ? true : true;
59
+ type ApplyWhitelist<TField, TBlocks> = TField extends {
60
+ component_whitelist: ReadonlyArray<infer TWhitelisted extends string>;
61
+ } ? Extract<TBlocks, {
62
+ name: TWhitelisted;
63
+ }> : TBlocks extends any ? IsNestable<TBlocks> extends true ? TBlocks : never : never;
64
+ /** Resolves a field definition to its runtime content value type (read). */
65
+ type FieldValue<TField extends Field = Field, TBlocks = NoBlocks> = Prettify<TField extends {
66
+ type: 'bloks';
67
+ } ? [TBlocks] extends [never] ? BlockContentBase[] : [TBlocks] extends [Block] ? BlockContent<ApplyWhitelist<TField, TBlocks>, TBlocks>[] : BlockContentBase[] : FieldTypeValueMap[TField['type']]>;
68
+ /** Resolves a field definition to its input value type (write). */
69
+ type FieldValueInput<TField extends Field = Field, TBlocks = NoBlocks> = Prettify<TField extends {
70
+ type: 'bloks';
71
+ } ? [TBlocks] extends [never] ? BlockContentInputBase[] : [TBlocks] extends [Block] ? BlockContentInput<ApplyWhitelist<TField, TBlocks>, TBlocks>[] : BlockContentInputBase[] : FieldTypeValueMap[TField['type']]>;
72
+ //#endregion
73
+ export { BlockContent, BlockContentInput };
74
+ //# sourceMappingURL=field.d.cts.map
@@ -0,0 +1,74 @@
1
+ import { AssetFieldValue, BlockContentBase, BlockContentInputBase, 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
+ /** Input variant of {@link BlockContent} for write operations (creating/updating stories via the MAPI). `_uid` is optional. */
30
+ type BlockContentInput<TBlock extends Block = Block, TBlocks = NoBlocks> = IsBaseBlock<TBlock> extends true ? BlockContentInputBase : TBlock extends any ? Prettify<{
31
+ _uid?: string;
32
+ component: TBlock['name'];
33
+ _editable?: string;
34
+ } & { [K in RequiredFieldKeys<TBlock['schema']>]: FieldValueInput<NonNullable<TBlock['schema'][K]>, TBlocks> } & { [K in OptionalFieldKeys<TBlock['schema']>]?: FieldValueInput<NonNullable<TBlock['schema'][K]>, TBlocks> | null }> : never;
35
+ interface FieldTypeValueMap {
36
+ text: string;
37
+ textarea: string;
38
+ richtext: RichtextFieldValue;
39
+ markdown: string;
40
+ number: number;
41
+ datetime: string;
42
+ boolean: boolean;
43
+ option: string;
44
+ options: string[];
45
+ asset: AssetFieldValue;
46
+ multiasset: AssetFieldValue[];
47
+ multilink: MultilinkFieldValue;
48
+ bloks: BlockContentBase[];
49
+ table: TableFieldValue;
50
+ section: never;
51
+ tab: never;
52
+ custom: PluginFieldValue;
53
+ }
54
+ type IsNestable<T> = T extends {
55
+ is_nestable: false;
56
+ } ? false : T extends {
57
+ is_nestable: true;
58
+ } ? true : true;
59
+ type ApplyWhitelist<TField, TBlocks> = TField extends {
60
+ component_whitelist: ReadonlyArray<infer TWhitelisted extends string>;
61
+ } ? Extract<TBlocks, {
62
+ name: TWhitelisted;
63
+ }> : TBlocks extends any ? IsNestable<TBlocks> extends true ? TBlocks : never : never;
64
+ /** Resolves a field definition to its runtime content value type (read). */
65
+ type FieldValue<TField extends Field = Field, TBlocks = NoBlocks> = Prettify<TField extends {
66
+ type: 'bloks';
67
+ } ? [TBlocks] extends [never] ? BlockContentBase[] : [TBlocks] extends [Block] ? BlockContent<ApplyWhitelist<TField, TBlocks>, TBlocks>[] : BlockContentBase[] : FieldTypeValueMap[TField['type']]>;
68
+ /** Resolves a field definition to its input value type (write). */
69
+ type FieldValueInput<TField extends Field = Field, TBlocks = NoBlocks> = Prettify<TField extends {
70
+ type: 'bloks';
71
+ } ? [TBlocks] extends [never] ? BlockContentInputBase[] : [TBlocks] extends [Block] ? BlockContentInput<ApplyWhitelist<TField, TBlocks>, TBlocks>[] : BlockContentInputBase[] : FieldTypeValueMap[TField['type']]>;
72
+ //#endregion
73
+ export { BlockContent, BlockContentInput };
74
+ //# sourceMappingURL=field.d.mts.map
@@ -0,0 +1,29 @@
1
+ import { MapiStory as MapiStory$1, StoryCreate as StoryCreate$1, StoryUpdate as StoryUpdate$1 } from "../mapi/_internal.gen.cjs";
2
+ import { Override, Prettify } from "./_utils.cjs";
3
+ import { Block, RootBlock } from "./block.cjs";
4
+ import { BlockContent, BlockContentInput } from "./field.cjs";
5
+
6
+ //#region src/generated/types/mapi-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
+ /**
13
+ * Overrides a generated story's `content` with schema-typed block content.
14
+ * Base (un-narrowed) `RootBlock` means no schema was supplied, so the generated
15
+ * story passes through unchanged.
16
+ */
17
+ type MapiStoryWithSchemaContent<TStory extends MapiStory$1 | StoryCreate$1 | StoryUpdate$1, TBlock extends RootBlock = RootBlock, TBlocks = NoBlocks> = RootBlock extends TBlock ? TStory : Override<TStory, {
18
+ content: TStory extends StoryCreate$1 | StoryUpdate$1 ? BlockContentInput<TBlock, TBlocks> : BlockContent<TBlock, TBlocks>;
19
+ }>;
20
+ type MakeMapiStory<TStory extends MapiStory$1 | StoryCreate$1 | StoryUpdate$1, TBlockOrBlocks extends RootBlock | Block = RootBlock, TBlocks = NoBlocks> = Prettify<[TBlockOrBlocks] extends [RootBlock] ? MapiStoryWithSchemaContent<TStory, TBlockOrBlocks, TBlocks> : TBlocks extends NoBlocks ? MapiStoryWithSchemaContent<TStory, Extract<TBlockOrBlocks, RootBlock>, TBlockOrBlocks> : never>;
21
+ /** A Storyblok MAPI story. */
22
+ type MapiStory<TBlockOrBlocks extends RootBlock | Block = RootBlock, TBlocks = NoBlocks> = MakeMapiStory<MapiStory$1, TBlockOrBlocks, TBlocks>;
23
+ /** Payload for creating a story via the MAPI. */
24
+ type StoryCreate<TBlockOrBlocks extends RootBlock | Block = RootBlock, TBlocks = NoBlocks> = MakeMapiStory<StoryCreate$1, TBlockOrBlocks, TBlocks>;
25
+ /** Payload for updating a story via the MAPI. */
26
+ type StoryUpdate<TBlockOrBlocks extends RootBlock | Block = RootBlock, TBlocks = NoBlocks> = MakeMapiStory<StoryUpdate$1, TBlockOrBlocks, TBlocks>;
27
+ //#endregion
28
+ export { MapiStory, StoryCreate, StoryUpdate };
29
+ //# sourceMappingURL=mapi-story.d.cts.map
@@ -0,0 +1,29 @@
1
+ import { MapiStory as MapiStory$1, StoryCreate as StoryCreate$1, StoryUpdate as StoryUpdate$1 } from "../mapi/_internal.gen.mjs";
2
+ import { Override, Prettify } from "./_utils.mjs";
3
+ import { Block, RootBlock } from "./block.mjs";
4
+ import { BlockContent, BlockContentInput } from "./field.mjs";
5
+
6
+ //#region src/generated/types/mapi-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
+ /**
13
+ * Overrides a generated story's `content` with schema-typed block content.
14
+ * Base (un-narrowed) `RootBlock` means no schema was supplied, so the generated
15
+ * story passes through unchanged.
16
+ */
17
+ type MapiStoryWithSchemaContent<TStory extends MapiStory$1 | StoryCreate$1 | StoryUpdate$1, TBlock extends RootBlock = RootBlock, TBlocks = NoBlocks> = RootBlock extends TBlock ? TStory : Override<TStory, {
18
+ content: TStory extends StoryCreate$1 | StoryUpdate$1 ? BlockContentInput<TBlock, TBlocks> : BlockContent<TBlock, TBlocks>;
19
+ }>;
20
+ type MakeMapiStory<TStory extends MapiStory$1 | StoryCreate$1 | StoryUpdate$1, TBlockOrBlocks extends RootBlock | Block = RootBlock, TBlocks = NoBlocks> = Prettify<[TBlockOrBlocks] extends [RootBlock] ? MapiStoryWithSchemaContent<TStory, TBlockOrBlocks, TBlocks> : TBlocks extends NoBlocks ? MapiStoryWithSchemaContent<TStory, Extract<TBlockOrBlocks, RootBlock>, TBlockOrBlocks> : never>;
21
+ /** A Storyblok MAPI story. */
22
+ type MapiStory<TBlockOrBlocks extends RootBlock | Block = RootBlock, TBlocks = NoBlocks> = MakeMapiStory<MapiStory$1, TBlockOrBlocks, TBlocks>;
23
+ /** Payload for creating a story via the MAPI. */
24
+ type StoryCreate<TBlockOrBlocks extends RootBlock | Block = RootBlock, TBlocks = NoBlocks> = MakeMapiStory<StoryCreate$1, TBlockOrBlocks, TBlocks>;
25
+ /** Payload for updating a story via the MAPI. */
26
+ type StoryUpdate<TBlockOrBlocks extends RootBlock | Block = RootBlock, TBlocks = NoBlocks> = MakeMapiStory<StoryUpdate$1, TBlockOrBlocks, TBlocks>;
27
+ //#endregion
28
+ export { MapiStory, StoryCreate, StoryUpdate };
29
+ //# sourceMappingURL=mapi-story.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
@@ -0,0 +1,42 @@
1
+ const require_define_story = require('./define-story.cjs');
2
+
3
+ //#region src/helpers/create-story-helpers.ts
4
+ /**
5
+ * Creates story helper functions pre-bound to your component type union.
6
+ *
7
+ * `withTypes<T>()` accepts either `{ components: ... }` or `{ blocks: ... }` — the
8
+ * latter matches the `Schema` type produced by `InferSchema`, so a project's
9
+ * `Schema` can be passed directly without an extra wrapper.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import type { Schema } from './schema';
14
+ *
15
+ * const { defineStory, defineMapiStory, defineStoryCreate, defineStoryUpdate } =
16
+ * createStoryHelpers().withTypes<Schema>();
17
+ * ```
18
+ */
19
+ function createStoryHelpers() {
20
+ return {
21
+ defineStory: require_define_story.defineStory,
22
+ defineMapiStory: require_define_story.defineMapiStory,
23
+ defineStoryCreate: require_define_story.defineStoryCreate,
24
+ defineStoryUpdate: require_define_story.defineStoryUpdate,
25
+ withTypes() {
26
+ const defineStory$1 = (component, story) => require_define_story.defineStory(component, story);
27
+ const defineMapiStory$1 = (component, story) => require_define_story.defineMapiStory(component, story);
28
+ const defineStoryCreate$1 = (component, story) => require_define_story.defineStoryCreate(component, story);
29
+ const defineStoryUpdate$1 = (component, story) => require_define_story.defineStoryUpdate(component, story);
30
+ return {
31
+ defineStory: defineStory$1,
32
+ defineMapiStory: defineMapiStory$1,
33
+ defineStoryCreate: defineStoryCreate$1,
34
+ defineStoryUpdate: defineStoryUpdate$1
35
+ };
36
+ }
37
+ };
38
+ }
39
+
40
+ //#endregion
41
+ exports.createStoryHelpers = createStoryHelpers;
42
+ //# sourceMappingURL=create-story-helpers.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-story-helpers.cjs","names":["defineStoryImpl","defineMapiStoryImpl","defineStoryCreateImpl","defineStoryUpdateImpl","defineStory","defineMapiStory","defineStoryCreate","defineStoryUpdate"],"sources":["../../src/helpers/create-story-helpers.ts"],"sourcesContent":["import type { Block, RootBlock } from './define-block';\nimport {\n defineMapiStory as defineMapiStoryImpl,\n defineStoryCreate as defineStoryCreateImpl,\n defineStory as defineStoryImpl,\n defineStoryUpdate as defineStoryUpdateImpl,\n} from './define-story';\nimport type { MapiStory, Story, StoryCreate, StoryUpdate } from './define-story';\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\ntype DefineStoryTyped<TBlocks extends Block> =\n <const TBlock extends RootBlock>(\n component: TBlock,\n story: Parameters<typeof defineStoryImpl<TBlock, TBlocks>>[1],\n ) => Story<TBlock, TBlocks>;\n\ntype DefineMapiStoryTyped<TBlocks extends Block> =\n <const TBlock extends RootBlock>(\n component: TBlock,\n story: Parameters<typeof defineMapiStoryImpl<TBlock, TBlocks>>[1],\n ) => MapiStory<TBlock, TBlocks>;\n\ntype DefineStoryCreateTyped<TBlocks extends Block> =\n <const TBlock extends RootBlock>(\n component: TBlock,\n story: Parameters<typeof defineStoryCreateImpl<TBlock, TBlocks>>[1],\n ) => StoryCreate<TBlock, TBlocks>;\n\ntype DefineStoryUpdateTyped<TBlocks extends Block> =\n <const TBlock extends RootBlock>(\n component: TBlock,\n story: Parameters<typeof defineStoryUpdateImpl<TBlock, TBlocks>>[1],\n ) => StoryUpdate<TBlock, TBlocks>;\n\n/**\n * Creates story helper functions pre-bound to your component type union.\n *\n * `withTypes<T>()` accepts either `{ components: ... }` or `{ blocks: ... }` — the\n * latter matches the `Schema` type produced by `InferSchema`, so a project's\n * `Schema` can be passed directly without an extra wrapper.\n *\n * @example\n * ```ts\n * import type { Schema } from './schema';\n *\n * const { defineStory, defineMapiStory, defineStoryCreate, defineStoryUpdate } =\n * createStoryHelpers().withTypes<Schema>();\n * ```\n */\nexport function createStoryHelpers() {\n return {\n defineStory: defineStoryImpl,\n defineMapiStory: defineMapiStoryImpl,\n defineStoryCreate: defineStoryCreateImpl,\n defineStoryUpdate: defineStoryUpdateImpl,\n withTypes<T extends StoryblokTypesConfig>() {\n const defineStory: DefineStoryTyped<ResolveComponents<T>> = (component, story) =>\n defineStoryImpl(component, story as any);\n\n const defineMapiStory: DefineMapiStoryTyped<ResolveComponents<T>> = (component, story) =>\n defineMapiStoryImpl(component, story as any);\n\n const defineStoryCreate: DefineStoryCreateTyped<ResolveComponents<T>> = (component, story) =>\n defineStoryCreateImpl(component, story as any);\n\n const defineStoryUpdate: DefineStoryUpdateTyped<ResolveComponents<T>> = (component, story) =>\n defineStoryUpdateImpl(component, story as any);\n\n return { defineStory, defineMapiStory, defineStoryCreate, defineStoryUpdate };\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAuDA,SAAgB,qBAAqB;AACnC,QAAO;EACL,aAAaA;EACb,iBAAiBC;EACjB,mBAAmBC;EACnB,mBAAmBC;EACnB,YAA4C;GAC1C,MAAMC,iBAAuD,WAAW,UACtEJ,iCAAgB,WAAW,MAAa;GAE1C,MAAMK,qBAA+D,WAAW,UAC9EJ,qCAAoB,WAAW,MAAa;GAE9C,MAAMK,uBAAmE,WAAW,UAClFJ,uCAAsB,WAAW,MAAa;GAEhD,MAAMK,uBAAmE,WAAW,UAClFJ,uCAAsB,WAAW,MAAa;AAEhD,UAAO;IAAE;IAAa;IAAiB;IAAmB;IAAmB;;EAEhF"}
@@ -0,0 +1,50 @@
1
+ import { Block, RootBlock } from "../generated/types/block.cjs";
2
+ import { MapiStory, StoryCreate, StoryUpdate } from "../generated/types/mapi-story.cjs";
3
+ import { Story } from "../generated/types/story.cjs";
4
+ import { defineMapiStory, defineStory, defineStoryCreate, defineStoryUpdate } from "./define-story.cjs";
5
+
6
+ //#region src/helpers/create-story-helpers.d.ts
7
+ type StoryblokTypesConfig = {
8
+ components: Block;
9
+ } | {
10
+ blocks: Block;
11
+ };
12
+ type ResolveComponents<T extends StoryblokTypesConfig> = T extends {
13
+ components: infer C extends Block;
14
+ } ? C : T extends {
15
+ blocks: infer B extends Block;
16
+ } ? B : never;
17
+ type DefineStoryTyped<TBlocks extends Block> = <const TBlock extends RootBlock>(component: TBlock, story: Parameters<typeof defineStory<TBlock, TBlocks>>[1]) => Story<TBlock, TBlocks>;
18
+ type DefineMapiStoryTyped<TBlocks extends Block> = <const TBlock extends RootBlock>(component: TBlock, story: Parameters<typeof defineMapiStory<TBlock, TBlocks>>[1]) => MapiStory<TBlock, TBlocks>;
19
+ type DefineStoryCreateTyped<TBlocks extends Block> = <const TBlock extends RootBlock>(component: TBlock, story: Parameters<typeof defineStoryCreate<TBlock, TBlocks>>[1]) => StoryCreate<TBlock, TBlocks>;
20
+ type DefineStoryUpdateTyped<TBlocks extends Block> = <const TBlock extends RootBlock>(component: TBlock, story: Parameters<typeof defineStoryUpdate<TBlock, TBlocks>>[1]) => StoryUpdate<TBlock, TBlocks>;
21
+ /**
22
+ * Creates story helper functions pre-bound to your component type union.
23
+ *
24
+ * `withTypes<T>()` accepts either `{ components: ... }` or `{ blocks: ... }` — the
25
+ * latter matches the `Schema` type produced by `InferSchema`, so a project's
26
+ * `Schema` can be passed directly without an extra wrapper.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * import type { Schema } from './schema';
31
+ *
32
+ * const { defineStory, defineMapiStory, defineStoryCreate, defineStoryUpdate } =
33
+ * createStoryHelpers().withTypes<Schema>();
34
+ * ```
35
+ */
36
+ declare function createStoryHelpers(): {
37
+ defineStory: typeof defineStory;
38
+ defineMapiStory: typeof defineMapiStory;
39
+ defineStoryCreate: typeof defineStoryCreate;
40
+ defineStoryUpdate: typeof defineStoryUpdate;
41
+ withTypes<T extends StoryblokTypesConfig>(): {
42
+ defineStory: DefineStoryTyped<ResolveComponents<T>>;
43
+ defineMapiStory: DefineMapiStoryTyped<ResolveComponents<T>>;
44
+ defineStoryCreate: DefineStoryCreateTyped<ResolveComponents<T>>;
45
+ defineStoryUpdate: DefineStoryUpdateTyped<ResolveComponents<T>>;
46
+ };
47
+ };
48
+ //#endregion
49
+ export { createStoryHelpers };
50
+ //# sourceMappingURL=create-story-helpers.d.cts.map
@@ -0,0 +1,50 @@
1
+ import { Block, RootBlock } from "../generated/types/block.mjs";
2
+ import { MapiStory, StoryCreate, StoryUpdate } from "../generated/types/mapi-story.mjs";
3
+ import { Story } from "../generated/types/story.mjs";
4
+ import { defineMapiStory, defineStory, defineStoryCreate, defineStoryUpdate } from "./define-story.mjs";
5
+
6
+ //#region src/helpers/create-story-helpers.d.ts
7
+ type StoryblokTypesConfig = {
8
+ components: Block;
9
+ } | {
10
+ blocks: Block;
11
+ };
12
+ type ResolveComponents<T extends StoryblokTypesConfig> = T extends {
13
+ components: infer C extends Block;
14
+ } ? C : T extends {
15
+ blocks: infer B extends Block;
16
+ } ? B : never;
17
+ type DefineStoryTyped<TBlocks extends Block> = <const TBlock extends RootBlock>(component: TBlock, story: Parameters<typeof defineStory<TBlock, TBlocks>>[1]) => Story<TBlock, TBlocks>;
18
+ type DefineMapiStoryTyped<TBlocks extends Block> = <const TBlock extends RootBlock>(component: TBlock, story: Parameters<typeof defineMapiStory<TBlock, TBlocks>>[1]) => MapiStory<TBlock, TBlocks>;
19
+ type DefineStoryCreateTyped<TBlocks extends Block> = <const TBlock extends RootBlock>(component: TBlock, story: Parameters<typeof defineStoryCreate<TBlock, TBlocks>>[1]) => StoryCreate<TBlock, TBlocks>;
20
+ type DefineStoryUpdateTyped<TBlocks extends Block> = <const TBlock extends RootBlock>(component: TBlock, story: Parameters<typeof defineStoryUpdate<TBlock, TBlocks>>[1]) => StoryUpdate<TBlock, TBlocks>;
21
+ /**
22
+ * Creates story helper functions pre-bound to your component type union.
23
+ *
24
+ * `withTypes<T>()` accepts either `{ components: ... }` or `{ blocks: ... }` — the
25
+ * latter matches the `Schema` type produced by `InferSchema`, so a project's
26
+ * `Schema` can be passed directly without an extra wrapper.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * import type { Schema } from './schema';
31
+ *
32
+ * const { defineStory, defineMapiStory, defineStoryCreate, defineStoryUpdate } =
33
+ * createStoryHelpers().withTypes<Schema>();
34
+ * ```
35
+ */
36
+ declare function createStoryHelpers(): {
37
+ defineStory: typeof defineStory;
38
+ defineMapiStory: typeof defineMapiStory;
39
+ defineStoryCreate: typeof defineStoryCreate;
40
+ defineStoryUpdate: typeof defineStoryUpdate;
41
+ withTypes<T extends StoryblokTypesConfig>(): {
42
+ defineStory: DefineStoryTyped<ResolveComponents<T>>;
43
+ defineMapiStory: DefineMapiStoryTyped<ResolveComponents<T>>;
44
+ defineStoryCreate: DefineStoryCreateTyped<ResolveComponents<T>>;
45
+ defineStoryUpdate: DefineStoryUpdateTyped<ResolveComponents<T>>;
46
+ };
47
+ };
48
+ //#endregion
49
+ export { createStoryHelpers };
50
+ //# sourceMappingURL=create-story-helpers.d.mts.map
@@ -0,0 +1,42 @@
1
+ import { defineMapiStory, defineStory, defineStoryCreate, defineStoryUpdate } from "./define-story.mjs";
2
+
3
+ //#region src/helpers/create-story-helpers.ts
4
+ /**
5
+ * Creates story helper functions pre-bound to your component type union.
6
+ *
7
+ * `withTypes<T>()` accepts either `{ components: ... }` or `{ blocks: ... }` — the
8
+ * latter matches the `Schema` type produced by `InferSchema`, so a project's
9
+ * `Schema` can be passed directly without an extra wrapper.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import type { Schema } from './schema';
14
+ *
15
+ * const { defineStory, defineMapiStory, defineStoryCreate, defineStoryUpdate } =
16
+ * createStoryHelpers().withTypes<Schema>();
17
+ * ```
18
+ */
19
+ function createStoryHelpers() {
20
+ return {
21
+ defineStory,
22
+ defineMapiStory,
23
+ defineStoryCreate,
24
+ defineStoryUpdate,
25
+ withTypes() {
26
+ const defineStory$1 = (component, story) => defineStory(component, story);
27
+ const defineMapiStory$1 = (component, story) => defineMapiStory(component, story);
28
+ const defineStoryCreate$1 = (component, story) => defineStoryCreate(component, story);
29
+ const defineStoryUpdate$1 = (component, story) => defineStoryUpdate(component, story);
30
+ return {
31
+ defineStory: defineStory$1,
32
+ defineMapiStory: defineMapiStory$1,
33
+ defineStoryCreate: defineStoryCreate$1,
34
+ defineStoryUpdate: defineStoryUpdate$1
35
+ };
36
+ }
37
+ };
38
+ }
39
+
40
+ //#endregion
41
+ export { createStoryHelpers };
42
+ //# sourceMappingURL=create-story-helpers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-story-helpers.mjs","names":["defineStoryImpl","defineMapiStoryImpl","defineStoryCreateImpl","defineStoryUpdateImpl","defineStory","defineMapiStory","defineStoryCreate","defineStoryUpdate"],"sources":["../../src/helpers/create-story-helpers.ts"],"sourcesContent":["import type { Block, RootBlock } from './define-block';\nimport {\n defineMapiStory as defineMapiStoryImpl,\n defineStoryCreate as defineStoryCreateImpl,\n defineStory as defineStoryImpl,\n defineStoryUpdate as defineStoryUpdateImpl,\n} from './define-story';\nimport type { MapiStory, Story, StoryCreate, StoryUpdate } from './define-story';\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\ntype DefineStoryTyped<TBlocks extends Block> =\n <const TBlock extends RootBlock>(\n component: TBlock,\n story: Parameters<typeof defineStoryImpl<TBlock, TBlocks>>[1],\n ) => Story<TBlock, TBlocks>;\n\ntype DefineMapiStoryTyped<TBlocks extends Block> =\n <const TBlock extends RootBlock>(\n component: TBlock,\n story: Parameters<typeof defineMapiStoryImpl<TBlock, TBlocks>>[1],\n ) => MapiStory<TBlock, TBlocks>;\n\ntype DefineStoryCreateTyped<TBlocks extends Block> =\n <const TBlock extends RootBlock>(\n component: TBlock,\n story: Parameters<typeof defineStoryCreateImpl<TBlock, TBlocks>>[1],\n ) => StoryCreate<TBlock, TBlocks>;\n\ntype DefineStoryUpdateTyped<TBlocks extends Block> =\n <const TBlock extends RootBlock>(\n component: TBlock,\n story: Parameters<typeof defineStoryUpdateImpl<TBlock, TBlocks>>[1],\n ) => StoryUpdate<TBlock, TBlocks>;\n\n/**\n * Creates story helper functions pre-bound to your component type union.\n *\n * `withTypes<T>()` accepts either `{ components: ... }` or `{ blocks: ... }` — the\n * latter matches the `Schema` type produced by `InferSchema`, so a project's\n * `Schema` can be passed directly without an extra wrapper.\n *\n * @example\n * ```ts\n * import type { Schema } from './schema';\n *\n * const { defineStory, defineMapiStory, defineStoryCreate, defineStoryUpdate } =\n * createStoryHelpers().withTypes<Schema>();\n * ```\n */\nexport function createStoryHelpers() {\n return {\n defineStory: defineStoryImpl,\n defineMapiStory: defineMapiStoryImpl,\n defineStoryCreate: defineStoryCreateImpl,\n defineStoryUpdate: defineStoryUpdateImpl,\n withTypes<T extends StoryblokTypesConfig>() {\n const defineStory: DefineStoryTyped<ResolveComponents<T>> = (component, story) =>\n defineStoryImpl(component, story as any);\n\n const defineMapiStory: DefineMapiStoryTyped<ResolveComponents<T>> = (component, story) =>\n defineMapiStoryImpl(component, story as any);\n\n const defineStoryCreate: DefineStoryCreateTyped<ResolveComponents<T>> = (component, story) =>\n defineStoryCreateImpl(component, story as any);\n\n const defineStoryUpdate: DefineStoryUpdateTyped<ResolveComponents<T>> = (component, story) =>\n defineStoryUpdateImpl(component, story as any);\n\n return { defineStory, defineMapiStory, defineStoryCreate, defineStoryUpdate };\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAuDA,SAAgB,qBAAqB;AACnC,QAAO;EACQA;EACIC;EACEC;EACAC;EACnB,YAA4C;GAC1C,MAAMC,iBAAuD,WAAW,UACtEJ,YAAgB,WAAW,MAAa;GAE1C,MAAMK,qBAA+D,WAAW,UAC9EJ,gBAAoB,WAAW,MAAa;GAE9C,MAAMK,uBAAmE,WAAW,UAClFJ,kBAAsB,WAAW,MAAa;GAEhD,MAAMK,uBAAmE,WAAW,UAClFJ,kBAAsB,WAAW,MAAa;AAEhD,UAAO;IAAE;IAAa;IAAiB;IAAmB;IAAmB;;EAEhF"}
@@ -0,0 +1,46 @@
1
+
2
+ //#region src/helpers/define-asset-folder.ts
3
+ const ASSET_FOLDER_DEFAULTS = {
4
+ id: 1,
5
+ parent_id: null,
6
+ parent_uuid: null
7
+ };
8
+ /**
9
+ * Defines an asset folder.
10
+ * When `uuid` is not provided, it defaults to the folder name
11
+ * (prefixed by `parent_uuid/` for nested folders).
12
+ *
13
+ * @example
14
+ * const folder = defineAssetFolder({ name: 'Images' });
15
+ * // folder.uuid === 'Images'
16
+ */
17
+ const defineAssetFolder = (assetFolder) => {
18
+ const uuid = assetFolder.uuid || (assetFolder.parent_uuid ? `${assetFolder.parent_uuid}/${assetFolder.name}` : assetFolder.name);
19
+ return {
20
+ ...ASSET_FOLDER_DEFAULTS,
21
+ ...assetFolder,
22
+ parent_id: assetFolder.parent_id ?? ASSET_FOLDER_DEFAULTS.parent_id,
23
+ parent_uuid: assetFolder.parent_uuid ?? ASSET_FOLDER_DEFAULTS.parent_uuid,
24
+ uuid
25
+ };
26
+ };
27
+ /**
28
+ * Defines an asset folder creation payload.
29
+ *
30
+ * @example
31
+ * const payload = defineAssetFolderCreate({ name: 'Images' });
32
+ */
33
+ const defineAssetFolderCreate = (assetFolder) => assetFolder;
34
+ /**
35
+ * Defines an asset folder update payload.
36
+ *
37
+ * @example
38
+ * const payload = defineAssetFolderUpdate({ name: 'Updated Images' });
39
+ */
40
+ const defineAssetFolderUpdate = (assetFolder) => assetFolder;
41
+
42
+ //#endregion
43
+ exports.defineAssetFolder = defineAssetFolder;
44
+ exports.defineAssetFolderCreate = defineAssetFolderCreate;
45
+ exports.defineAssetFolderUpdate = defineAssetFolderUpdate;
46
+ //# sourceMappingURL=define-asset-folder.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-asset-folder.cjs","names":[],"sources":["../../src/helpers/define-asset-folder.ts"],"sourcesContent":["import type { AssetFolder, AssetFolderCreate, AssetFolderUpdate } from '../generated/mapi/types.gen';\n\nconst ASSET_FOLDER_DEFAULTS = {\n id: 1,\n parent_id: null,\n parent_uuid: null,\n};\n\nexport type { AssetFolder, AssetFolderCreate, AssetFolderUpdate };\n\ntype AssetFolderInput = { name: string } & Partial<Omit<AssetFolder, 'name'>>;\n\n/**\n * Defines an asset folder.\n * When `uuid` is not provided, it defaults to the folder name\n * (prefixed by `parent_uuid/` for nested folders).\n *\n * @example\n * const folder = defineAssetFolder({ name: 'Images' });\n * // folder.uuid === 'Images'\n */\nexport const defineAssetFolder = (assetFolder: AssetFolderInput): AssetFolder => {\n const uuid = assetFolder.uuid\n || (assetFolder.parent_uuid ? `${assetFolder.parent_uuid}/${assetFolder.name}` : assetFolder.name);\n\n return {\n ...ASSET_FOLDER_DEFAULTS,\n ...assetFolder,\n parent_id: assetFolder.parent_id ?? ASSET_FOLDER_DEFAULTS.parent_id,\n parent_uuid: assetFolder.parent_uuid ?? ASSET_FOLDER_DEFAULTS.parent_uuid,\n uuid,\n };\n};\n\n/**\n * Defines an asset folder creation payload.\n *\n * @example\n * const payload = defineAssetFolderCreate({ name: 'Images' });\n */\nexport const defineAssetFolderCreate = (assetFolder: AssetFolderCreate): AssetFolderCreate => assetFolder;\n\n/**\n * Defines an asset folder update payload.\n *\n * @example\n * const payload = defineAssetFolderUpdate({ name: 'Updated Images' });\n */\nexport const defineAssetFolderUpdate = (assetFolder: AssetFolderUpdate): AssetFolderUpdate => assetFolder;\n"],"mappings":";;AAEA,MAAM,wBAAwB;CAC5B,IAAI;CACJ,WAAW;CACX,aAAa;CACd;;;;;;;;;;AAeD,MAAa,qBAAqB,gBAA+C;CAC/E,MAAM,OAAO,YAAY,SACnB,YAAY,cAAc,GAAG,YAAY,YAAY,GAAG,YAAY,SAAS,YAAY;AAE/F,QAAO;EACL,GAAG;EACH,GAAG;EACH,WAAW,YAAY,aAAa,sBAAsB;EAC1D,aAAa,YAAY,eAAe,sBAAsB;EAC9D;EACD;;;;;;;;AASH,MAAa,2BAA2B,gBAAsD;;;;;;;AAQ9F,MAAa,2BAA2B,gBAAsD"}