@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,33 @@
1
+ import { AssetFolder, AssetFolderCreate, AssetFolderUpdate } from "../generated/mapi/types.gen.cjs";
2
+
3
+ //#region src/helpers/define-asset-folder.d.ts
4
+ type AssetFolderInput = {
5
+ name: string;
6
+ } & Partial<Omit<AssetFolder, 'name'>>;
7
+ /**
8
+ * Defines an asset folder.
9
+ * When `uuid` is not provided, it defaults to the folder name
10
+ * (prefixed by `parent_uuid/` for nested folders).
11
+ *
12
+ * @example
13
+ * const folder = defineAssetFolder({ name: 'Images' });
14
+ * // folder.uuid === 'Images'
15
+ */
16
+ declare const defineAssetFolder: (assetFolder: AssetFolderInput) => AssetFolder;
17
+ /**
18
+ * Defines an asset folder creation payload.
19
+ *
20
+ * @example
21
+ * const payload = defineAssetFolderCreate({ name: 'Images' });
22
+ */
23
+ declare const defineAssetFolderCreate: (assetFolder: AssetFolderCreate) => AssetFolderCreate;
24
+ /**
25
+ * Defines an asset folder update payload.
26
+ *
27
+ * @example
28
+ * const payload = defineAssetFolderUpdate({ name: 'Updated Images' });
29
+ */
30
+ declare const defineAssetFolderUpdate: (assetFolder: AssetFolderUpdate) => AssetFolderUpdate;
31
+ //#endregion
32
+ export { defineAssetFolder, defineAssetFolderCreate, defineAssetFolderUpdate };
33
+ //# sourceMappingURL=define-asset-folder.d.cts.map
@@ -0,0 +1,33 @@
1
+ import { AssetFolder, AssetFolderCreate, AssetFolderUpdate } from "../generated/mapi/types.gen.mjs";
2
+
3
+ //#region src/helpers/define-asset-folder.d.ts
4
+ type AssetFolderInput = {
5
+ name: string;
6
+ } & Partial<Omit<AssetFolder, 'name'>>;
7
+ /**
8
+ * Defines an asset folder.
9
+ * When `uuid` is not provided, it defaults to the folder name
10
+ * (prefixed by `parent_uuid/` for nested folders).
11
+ *
12
+ * @example
13
+ * const folder = defineAssetFolder({ name: 'Images' });
14
+ * // folder.uuid === 'Images'
15
+ */
16
+ declare const defineAssetFolder: (assetFolder: AssetFolderInput) => AssetFolder;
17
+ /**
18
+ * Defines an asset folder creation payload.
19
+ *
20
+ * @example
21
+ * const payload = defineAssetFolderCreate({ name: 'Images' });
22
+ */
23
+ declare const defineAssetFolderCreate: (assetFolder: AssetFolderCreate) => AssetFolderCreate;
24
+ /**
25
+ * Defines an asset folder update payload.
26
+ *
27
+ * @example
28
+ * const payload = defineAssetFolderUpdate({ name: 'Updated Images' });
29
+ */
30
+ declare const defineAssetFolderUpdate: (assetFolder: AssetFolderUpdate) => AssetFolderUpdate;
31
+ //#endregion
32
+ export { defineAssetFolder, defineAssetFolderCreate, defineAssetFolderUpdate };
33
+ //# sourceMappingURL=define-asset-folder.d.mts.map
@@ -0,0 +1,43 @@
1
+ //#region src/helpers/define-asset-folder.ts
2
+ const ASSET_FOLDER_DEFAULTS = {
3
+ id: 1,
4
+ parent_id: null,
5
+ parent_uuid: null
6
+ };
7
+ /**
8
+ * Defines an asset folder.
9
+ * When `uuid` is not provided, it defaults to the folder name
10
+ * (prefixed by `parent_uuid/` for nested folders).
11
+ *
12
+ * @example
13
+ * const folder = defineAssetFolder({ name: 'Images' });
14
+ * // folder.uuid === 'Images'
15
+ */
16
+ const defineAssetFolder = (assetFolder) => {
17
+ const uuid = assetFolder.uuid || (assetFolder.parent_uuid ? `${assetFolder.parent_uuid}/${assetFolder.name}` : assetFolder.name);
18
+ return {
19
+ ...ASSET_FOLDER_DEFAULTS,
20
+ ...assetFolder,
21
+ parent_id: assetFolder.parent_id ?? ASSET_FOLDER_DEFAULTS.parent_id,
22
+ parent_uuid: assetFolder.parent_uuid ?? ASSET_FOLDER_DEFAULTS.parent_uuid,
23
+ uuid
24
+ };
25
+ };
26
+ /**
27
+ * Defines an asset folder creation payload.
28
+ *
29
+ * @example
30
+ * const payload = defineAssetFolderCreate({ name: 'Images' });
31
+ */
32
+ const defineAssetFolderCreate = (assetFolder) => assetFolder;
33
+ /**
34
+ * Defines an asset folder update payload.
35
+ *
36
+ * @example
37
+ * const payload = defineAssetFolderUpdate({ name: 'Updated Images' });
38
+ */
39
+ const defineAssetFolderUpdate = (assetFolder) => assetFolder;
40
+
41
+ //#endregion
42
+ export { defineAssetFolder, defineAssetFolderCreate, defineAssetFolderUpdate };
43
+ //# sourceMappingURL=define-asset-folder.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-asset-folder.mjs","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"}
@@ -0,0 +1,60 @@
1
+
2
+ //#region src/helpers/define-asset.ts
3
+ const MAPI_ASSET_DEFAULTS = {
4
+ id: 1,
5
+ filename: "",
6
+ space_id: 1,
7
+ short_filename: "",
8
+ created_at: "",
9
+ updated_at: "",
10
+ content_type: null,
11
+ content_length: null,
12
+ alt: null,
13
+ asset_folder_id: null,
14
+ copyright: null,
15
+ expire_at: null,
16
+ focus: null,
17
+ is_private: false,
18
+ title: null,
19
+ deleted_at: null,
20
+ publish_at: null,
21
+ permanently_deleted: null,
22
+ ext_id: null,
23
+ source: null,
24
+ locked: false,
25
+ meta_data: null,
26
+ file: null,
27
+ internal_tag_ids: [],
28
+ internal_tags_list: []
29
+ };
30
+ /**
31
+ * Defines a MAPI asset (standalone asset entity).
32
+ * For asset fields embedded in story content, use {@link AssetFieldValue} instead.
33
+ *
34
+ * @example
35
+ * const asset = defineMapiAsset({ filename: 'hero.png' });
36
+ */
37
+ const defineMapiAsset = (asset) => ({
38
+ ...MAPI_ASSET_DEFAULTS,
39
+ ...asset
40
+ });
41
+ /**
42
+ * Defines an asset creation payload for the upload flow.
43
+ *
44
+ * @example
45
+ * const payload = defineAssetCreate({ filename: 'hero.png', alt: 'Hero image' });
46
+ */
47
+ const defineAssetCreate = (asset) => asset;
48
+ /**
49
+ * Defines an asset update payload.
50
+ *
51
+ * @example
52
+ * const payload = defineAssetUpdate({ alt: 'Updated hero image' });
53
+ */
54
+ const defineAssetUpdate = (asset) => asset;
55
+
56
+ //#endregion
57
+ exports.defineAssetCreate = defineAssetCreate;
58
+ exports.defineAssetUpdate = defineAssetUpdate;
59
+ exports.defineMapiAsset = defineMapiAsset;
60
+ //# sourceMappingURL=define-asset.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-asset.cjs","names":[],"sources":["../../src/helpers/define-asset.ts"],"sourcesContent":["import type { Asset, AssetCreate, AssetUpdate } from '../generated/mapi/types.gen';\n\nconst MAPI_ASSET_DEFAULTS = {\n id: 1,\n filename: '',\n space_id: 1,\n short_filename: '',\n created_at: '',\n updated_at: '',\n content_type: null,\n content_length: null,\n alt: null,\n asset_folder_id: null,\n copyright: null,\n expire_at: null,\n focus: null,\n is_private: false,\n title: null,\n deleted_at: null,\n publish_at: null,\n permanently_deleted: null,\n ext_id: null,\n source: null,\n locked: false,\n meta_data: null,\n file: null,\n internal_tag_ids: [],\n internal_tags_list: [],\n};\n\nexport type MapiAsset = Asset;\nexport type { AssetCreate, AssetUpdate };\n\ntype MapiAssetInput = { filename: string } & Partial<Omit<Asset, 'filename'>>;\n\n/**\n * Defines a MAPI asset (standalone asset entity).\n * For asset fields embedded in story content, use {@link AssetFieldValue} instead.\n *\n * @example\n * const asset = defineMapiAsset({ filename: 'hero.png' });\n */\nexport const defineMapiAsset = (asset: MapiAssetInput): MapiAsset => ({ ...MAPI_ASSET_DEFAULTS, ...asset });\n\n/**\n * Defines an asset creation payload for the upload flow.\n *\n * @example\n * const payload = defineAssetCreate({ filename: 'hero.png', alt: 'Hero image' });\n */\nexport const defineAssetCreate = (asset: AssetCreate): AssetCreate => asset;\n\n/**\n * Defines an asset update payload.\n *\n * @example\n * const payload = defineAssetUpdate({ alt: 'Updated hero image' });\n */\nexport const defineAssetUpdate = (asset: AssetUpdate): AssetUpdate => asset;\n"],"mappings":";;AAEA,MAAM,sBAAsB;CAC1B,IAAI;CACJ,UAAU;CACV,UAAU;CACV,gBAAgB;CAChB,YAAY;CACZ,YAAY;CACZ,cAAc;CACd,gBAAgB;CAChB,KAAK;CACL,iBAAiB;CACjB,WAAW;CACX,WAAW;CACX,OAAO;CACP,YAAY;CACZ,OAAO;CACP,YAAY;CACZ,YAAY;CACZ,qBAAqB;CACrB,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,WAAW;CACX,MAAM;CACN,kBAAkB,EAAE;CACpB,oBAAoB,EAAE;CACvB;;;;;;;;AAcD,MAAa,mBAAmB,WAAsC;CAAE,GAAG;CAAqB,GAAG;CAAO;;;;;;;AAQ1G,MAAa,qBAAqB,UAAoC;;;;;;;AAQtE,MAAa,qBAAqB,UAAoC"}
@@ -0,0 +1,32 @@
1
+ import { Asset, AssetCreate, AssetUpdate } from "../generated/mapi/types.gen.cjs";
2
+
3
+ //#region src/helpers/define-asset.d.ts
4
+ type MapiAsset = Asset;
5
+ type MapiAssetInput = {
6
+ filename: string;
7
+ } & Partial<Omit<Asset, 'filename'>>;
8
+ /**
9
+ * Defines a MAPI asset (standalone asset entity).
10
+ * For asset fields embedded in story content, use {@link AssetFieldValue} instead.
11
+ *
12
+ * @example
13
+ * const asset = defineMapiAsset({ filename: 'hero.png' });
14
+ */
15
+ declare const defineMapiAsset: (asset: MapiAssetInput) => MapiAsset;
16
+ /**
17
+ * Defines an asset creation payload for the upload flow.
18
+ *
19
+ * @example
20
+ * const payload = defineAssetCreate({ filename: 'hero.png', alt: 'Hero image' });
21
+ */
22
+ declare const defineAssetCreate: (asset: AssetCreate) => AssetCreate;
23
+ /**
24
+ * Defines an asset update payload.
25
+ *
26
+ * @example
27
+ * const payload = defineAssetUpdate({ alt: 'Updated hero image' });
28
+ */
29
+ declare const defineAssetUpdate: (asset: AssetUpdate) => AssetUpdate;
30
+ //#endregion
31
+ export { MapiAsset, defineAssetCreate, defineAssetUpdate, defineMapiAsset };
32
+ //# sourceMappingURL=define-asset.d.cts.map
@@ -0,0 +1,32 @@
1
+ import { Asset, AssetCreate, AssetUpdate } from "../generated/mapi/types.gen.mjs";
2
+
3
+ //#region src/helpers/define-asset.d.ts
4
+ type MapiAsset = Asset;
5
+ type MapiAssetInput = {
6
+ filename: string;
7
+ } & Partial<Omit<Asset, 'filename'>>;
8
+ /**
9
+ * Defines a MAPI asset (standalone asset entity).
10
+ * For asset fields embedded in story content, use {@link AssetFieldValue} instead.
11
+ *
12
+ * @example
13
+ * const asset = defineMapiAsset({ filename: 'hero.png' });
14
+ */
15
+ declare const defineMapiAsset: (asset: MapiAssetInput) => MapiAsset;
16
+ /**
17
+ * Defines an asset creation payload for the upload flow.
18
+ *
19
+ * @example
20
+ * const payload = defineAssetCreate({ filename: 'hero.png', alt: 'Hero image' });
21
+ */
22
+ declare const defineAssetCreate: (asset: AssetCreate) => AssetCreate;
23
+ /**
24
+ * Defines an asset update payload.
25
+ *
26
+ * @example
27
+ * const payload = defineAssetUpdate({ alt: 'Updated hero image' });
28
+ */
29
+ declare const defineAssetUpdate: (asset: AssetUpdate) => AssetUpdate;
30
+ //#endregion
31
+ export { MapiAsset, defineAssetCreate, defineAssetUpdate, defineMapiAsset };
32
+ //# sourceMappingURL=define-asset.d.mts.map
@@ -0,0 +1,57 @@
1
+ //#region src/helpers/define-asset.ts
2
+ const MAPI_ASSET_DEFAULTS = {
3
+ id: 1,
4
+ filename: "",
5
+ space_id: 1,
6
+ short_filename: "",
7
+ created_at: "",
8
+ updated_at: "",
9
+ content_type: null,
10
+ content_length: null,
11
+ alt: null,
12
+ asset_folder_id: null,
13
+ copyright: null,
14
+ expire_at: null,
15
+ focus: null,
16
+ is_private: false,
17
+ title: null,
18
+ deleted_at: null,
19
+ publish_at: null,
20
+ permanently_deleted: null,
21
+ ext_id: null,
22
+ source: null,
23
+ locked: false,
24
+ meta_data: null,
25
+ file: null,
26
+ internal_tag_ids: [],
27
+ internal_tags_list: []
28
+ };
29
+ /**
30
+ * Defines a MAPI asset (standalone asset entity).
31
+ * For asset fields embedded in story content, use {@link AssetFieldValue} instead.
32
+ *
33
+ * @example
34
+ * const asset = defineMapiAsset({ filename: 'hero.png' });
35
+ */
36
+ const defineMapiAsset = (asset) => ({
37
+ ...MAPI_ASSET_DEFAULTS,
38
+ ...asset
39
+ });
40
+ /**
41
+ * Defines an asset creation payload for the upload flow.
42
+ *
43
+ * @example
44
+ * const payload = defineAssetCreate({ filename: 'hero.png', alt: 'Hero image' });
45
+ */
46
+ const defineAssetCreate = (asset) => asset;
47
+ /**
48
+ * Defines an asset update payload.
49
+ *
50
+ * @example
51
+ * const payload = defineAssetUpdate({ alt: 'Updated hero image' });
52
+ */
53
+ const defineAssetUpdate = (asset) => asset;
54
+
55
+ //#endregion
56
+ export { defineAssetCreate, defineAssetUpdate, defineMapiAsset };
57
+ //# sourceMappingURL=define-asset.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-asset.mjs","names":[],"sources":["../../src/helpers/define-asset.ts"],"sourcesContent":["import type { Asset, AssetCreate, AssetUpdate } from '../generated/mapi/types.gen';\n\nconst MAPI_ASSET_DEFAULTS = {\n id: 1,\n filename: '',\n space_id: 1,\n short_filename: '',\n created_at: '',\n updated_at: '',\n content_type: null,\n content_length: null,\n alt: null,\n asset_folder_id: null,\n copyright: null,\n expire_at: null,\n focus: null,\n is_private: false,\n title: null,\n deleted_at: null,\n publish_at: null,\n permanently_deleted: null,\n ext_id: null,\n source: null,\n locked: false,\n meta_data: null,\n file: null,\n internal_tag_ids: [],\n internal_tags_list: [],\n};\n\nexport type MapiAsset = Asset;\nexport type { AssetCreate, AssetUpdate };\n\ntype MapiAssetInput = { filename: string } & Partial<Omit<Asset, 'filename'>>;\n\n/**\n * Defines a MAPI asset (standalone asset entity).\n * For asset fields embedded in story content, use {@link AssetFieldValue} instead.\n *\n * @example\n * const asset = defineMapiAsset({ filename: 'hero.png' });\n */\nexport const defineMapiAsset = (asset: MapiAssetInput): MapiAsset => ({ ...MAPI_ASSET_DEFAULTS, ...asset });\n\n/**\n * Defines an asset creation payload for the upload flow.\n *\n * @example\n * const payload = defineAssetCreate({ filename: 'hero.png', alt: 'Hero image' });\n */\nexport const defineAssetCreate = (asset: AssetCreate): AssetCreate => asset;\n\n/**\n * Defines an asset update payload.\n *\n * @example\n * const payload = defineAssetUpdate({ alt: 'Updated hero image' });\n */\nexport const defineAssetUpdate = (asset: AssetUpdate): AssetUpdate => asset;\n"],"mappings":";AAEA,MAAM,sBAAsB;CAC1B,IAAI;CACJ,UAAU;CACV,UAAU;CACV,gBAAgB;CAChB,YAAY;CACZ,YAAY;CACZ,cAAc;CACd,gBAAgB;CAChB,KAAK;CACL,iBAAiB;CACjB,WAAW;CACX,WAAW;CACX,OAAO;CACP,YAAY;CACZ,OAAO;CACP,YAAY;CACZ,YAAY;CACZ,qBAAqB;CACrB,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,WAAW;CACX,MAAM;CACN,kBAAkB,EAAE;CACpB,oBAAoB,EAAE;CACvB;;;;;;;;AAcD,MAAa,mBAAmB,WAAsC;CAAE,GAAG;CAAqB,GAAG;CAAO;;;;;;;AAQ1G,MAAa,qBAAqB,UAAoC;;;;;;;AAQtE,MAAa,qBAAqB,UAAoC"}
@@ -0,0 +1,44 @@
1
+
2
+ //#region src/helpers/define-block-folder.ts
3
+ const BLOCK_FOLDER_DEFAULTS = {
4
+ id: 1,
5
+ uuid: "",
6
+ parent_id: null,
7
+ parent_uuid: null
8
+ };
9
+ /**
10
+ * Defines a block folder for the MAPI.
11
+ * API-assigned fields (`id`, `uuid`) are optional and filled with safe defaults.
12
+ *
13
+ * @example
14
+ * import { defineBlockFolder } from '@storyblok/schema';
15
+ * const folder = defineBlockFolder({ name: 'Layout' });
16
+ */
17
+ const defineBlockFolder = (blockFolder) => ({
18
+ ...BLOCK_FOLDER_DEFAULTS,
19
+ ...blockFolder,
20
+ parent_id: blockFolder.parent_id ?? BLOCK_FOLDER_DEFAULTS.parent_id,
21
+ parent_uuid: blockFolder.parent_uuid ?? BLOCK_FOLDER_DEFAULTS.parent_uuid
22
+ });
23
+ /**
24
+ * Defines a block folder creation payload for the MAPI.
25
+ *
26
+ * @example
27
+ * import { defineBlockFolderCreate } from '@storyblok/schema';
28
+ * const payload = defineBlockFolderCreate({ name: 'Layout' });
29
+ */
30
+ const defineBlockFolderCreate = (blockFolder) => blockFolder;
31
+ /**
32
+ * Defines a block folder update payload for the MAPI.
33
+ *
34
+ * @example
35
+ * import { defineBlockFolderUpdate } from '@storyblok/schema';
36
+ * const payload = defineBlockFolderUpdate({ name: 'Updated Layout' });
37
+ */
38
+ const defineBlockFolderUpdate = (blockFolder) => blockFolder;
39
+
40
+ //#endregion
41
+ exports.defineBlockFolder = defineBlockFolder;
42
+ exports.defineBlockFolderCreate = defineBlockFolderCreate;
43
+ exports.defineBlockFolderUpdate = defineBlockFolderUpdate;
44
+ //# sourceMappingURL=define-block-folder.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-block-folder.cjs","names":[],"sources":["../../src/helpers/define-block-folder.ts"],"sourcesContent":["import type { ComponentFolder, ComponentFolderCreate, ComponentFolderUpdate } from '../generated/mapi/types.gen';\n\nexport type { ComponentFolder, ComponentFolderCreate, ComponentFolderUpdate };\n\nconst BLOCK_FOLDER_DEFAULTS = {\n id: 1,\n uuid: '',\n parent_id: null,\n parent_uuid: null,\n};\n\ntype BlockFolderInput = { name: string } & Partial<Omit<ComponentFolder, 'name'>>;\n\n/**\n * Defines a block folder for the MAPI.\n * API-assigned fields (`id`, `uuid`) are optional and filled with safe defaults.\n *\n * @example\n * import { defineBlockFolder } from '@storyblok/schema';\n * const folder = defineBlockFolder({ name: 'Layout' });\n */\nexport const defineBlockFolder = (blockFolder: BlockFolderInput): ComponentFolder => ({\n ...BLOCK_FOLDER_DEFAULTS,\n ...blockFolder,\n parent_id: blockFolder.parent_id ?? BLOCK_FOLDER_DEFAULTS.parent_id,\n parent_uuid: blockFolder.parent_uuid ?? BLOCK_FOLDER_DEFAULTS.parent_uuid,\n});\n\n/**\n * Defines a block folder creation payload for the MAPI.\n *\n * @example\n * import { defineBlockFolderCreate } from '@storyblok/schema';\n * const payload = defineBlockFolderCreate({ name: 'Layout' });\n */\nexport const defineBlockFolderCreate = (blockFolder: ComponentFolderCreate): ComponentFolderCreate => blockFolder;\n\n/**\n * Defines a block folder update payload for the MAPI.\n *\n * @example\n * import { defineBlockFolderUpdate } from '@storyblok/schema';\n * const payload = defineBlockFolderUpdate({ name: 'Updated Layout' });\n */\nexport const defineBlockFolderUpdate = (blockFolder: ComponentFolderUpdate): ComponentFolderUpdate => blockFolder;\n"],"mappings":";;AAIA,MAAM,wBAAwB;CAC5B,IAAI;CACJ,MAAM;CACN,WAAW;CACX,aAAa;CACd;;;;;;;;;AAYD,MAAa,qBAAqB,iBAAoD;CACpF,GAAG;CACH,GAAG;CACH,WAAW,YAAY,aAAa,sBAAsB;CAC1D,aAAa,YAAY,eAAe,sBAAsB;CAC/D;;;;;;;;AASD,MAAa,2BAA2B,gBAA8D;;;;;;;;AAStG,MAAa,2BAA2B,gBAA8D"}
@@ -0,0 +1,34 @@
1
+ import { ComponentFolder, ComponentFolderCreate, ComponentFolderUpdate } from "../generated/mapi/types.gen.cjs";
2
+
3
+ //#region src/helpers/define-block-folder.d.ts
4
+ type BlockFolderInput = {
5
+ name: string;
6
+ } & Partial<Omit<ComponentFolder, 'name'>>;
7
+ /**
8
+ * Defines a block folder for the MAPI.
9
+ * API-assigned fields (`id`, `uuid`) are optional and filled with safe defaults.
10
+ *
11
+ * @example
12
+ * import { defineBlockFolder } from '@storyblok/schema';
13
+ * const folder = defineBlockFolder({ name: 'Layout' });
14
+ */
15
+ declare const defineBlockFolder: (blockFolder: BlockFolderInput) => ComponentFolder;
16
+ /**
17
+ * Defines a block folder creation payload for the MAPI.
18
+ *
19
+ * @example
20
+ * import { defineBlockFolderCreate } from '@storyblok/schema';
21
+ * const payload = defineBlockFolderCreate({ name: 'Layout' });
22
+ */
23
+ declare const defineBlockFolderCreate: (blockFolder: ComponentFolderCreate) => ComponentFolderCreate;
24
+ /**
25
+ * Defines a block folder update payload for the MAPI.
26
+ *
27
+ * @example
28
+ * import { defineBlockFolderUpdate } from '@storyblok/schema';
29
+ * const payload = defineBlockFolderUpdate({ name: 'Updated Layout' });
30
+ */
31
+ declare const defineBlockFolderUpdate: (blockFolder: ComponentFolderUpdate) => ComponentFolderUpdate;
32
+ //#endregion
33
+ export { defineBlockFolder, defineBlockFolderCreate, defineBlockFolderUpdate };
34
+ //# sourceMappingURL=define-block-folder.d.cts.map
@@ -0,0 +1,34 @@
1
+ import { ComponentFolder, ComponentFolderCreate, ComponentFolderUpdate } from "../generated/mapi/types.gen.mjs";
2
+
3
+ //#region src/helpers/define-block-folder.d.ts
4
+ type BlockFolderInput = {
5
+ name: string;
6
+ } & Partial<Omit<ComponentFolder, 'name'>>;
7
+ /**
8
+ * Defines a block folder for the MAPI.
9
+ * API-assigned fields (`id`, `uuid`) are optional and filled with safe defaults.
10
+ *
11
+ * @example
12
+ * import { defineBlockFolder } from '@storyblok/schema';
13
+ * const folder = defineBlockFolder({ name: 'Layout' });
14
+ */
15
+ declare const defineBlockFolder: (blockFolder: BlockFolderInput) => ComponentFolder;
16
+ /**
17
+ * Defines a block folder creation payload for the MAPI.
18
+ *
19
+ * @example
20
+ * import { defineBlockFolderCreate } from '@storyblok/schema';
21
+ * const payload = defineBlockFolderCreate({ name: 'Layout' });
22
+ */
23
+ declare const defineBlockFolderCreate: (blockFolder: ComponentFolderCreate) => ComponentFolderCreate;
24
+ /**
25
+ * Defines a block folder update payload for the MAPI.
26
+ *
27
+ * @example
28
+ * import { defineBlockFolderUpdate } from '@storyblok/schema';
29
+ * const payload = defineBlockFolderUpdate({ name: 'Updated Layout' });
30
+ */
31
+ declare const defineBlockFolderUpdate: (blockFolder: ComponentFolderUpdate) => ComponentFolderUpdate;
32
+ //#endregion
33
+ export { defineBlockFolder, defineBlockFolderCreate, defineBlockFolderUpdate };
34
+ //# sourceMappingURL=define-block-folder.d.mts.map
@@ -0,0 +1,41 @@
1
+ //#region src/helpers/define-block-folder.ts
2
+ const BLOCK_FOLDER_DEFAULTS = {
3
+ id: 1,
4
+ uuid: "",
5
+ parent_id: null,
6
+ parent_uuid: null
7
+ };
8
+ /**
9
+ * Defines a block folder for the MAPI.
10
+ * API-assigned fields (`id`, `uuid`) are optional and filled with safe defaults.
11
+ *
12
+ * @example
13
+ * import { defineBlockFolder } from '@storyblok/schema';
14
+ * const folder = defineBlockFolder({ name: 'Layout' });
15
+ */
16
+ const defineBlockFolder = (blockFolder) => ({
17
+ ...BLOCK_FOLDER_DEFAULTS,
18
+ ...blockFolder,
19
+ parent_id: blockFolder.parent_id ?? BLOCK_FOLDER_DEFAULTS.parent_id,
20
+ parent_uuid: blockFolder.parent_uuid ?? BLOCK_FOLDER_DEFAULTS.parent_uuid
21
+ });
22
+ /**
23
+ * Defines a block folder creation payload for the MAPI.
24
+ *
25
+ * @example
26
+ * import { defineBlockFolderCreate } from '@storyblok/schema';
27
+ * const payload = defineBlockFolderCreate({ name: 'Layout' });
28
+ */
29
+ const defineBlockFolderCreate = (blockFolder) => blockFolder;
30
+ /**
31
+ * Defines a block folder update payload for the MAPI.
32
+ *
33
+ * @example
34
+ * import { defineBlockFolderUpdate } from '@storyblok/schema';
35
+ * const payload = defineBlockFolderUpdate({ name: 'Updated Layout' });
36
+ */
37
+ const defineBlockFolderUpdate = (blockFolder) => blockFolder;
38
+
39
+ //#endregion
40
+ export { defineBlockFolder, defineBlockFolderCreate, defineBlockFolderUpdate };
41
+ //# sourceMappingURL=define-block-folder.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-block-folder.mjs","names":[],"sources":["../../src/helpers/define-block-folder.ts"],"sourcesContent":["import type { ComponentFolder, ComponentFolderCreate, ComponentFolderUpdate } from '../generated/mapi/types.gen';\n\nexport type { ComponentFolder, ComponentFolderCreate, ComponentFolderUpdate };\n\nconst BLOCK_FOLDER_DEFAULTS = {\n id: 1,\n uuid: '',\n parent_id: null,\n parent_uuid: null,\n};\n\ntype BlockFolderInput = { name: string } & Partial<Omit<ComponentFolder, 'name'>>;\n\n/**\n * Defines a block folder for the MAPI.\n * API-assigned fields (`id`, `uuid`) are optional and filled with safe defaults.\n *\n * @example\n * import { defineBlockFolder } from '@storyblok/schema';\n * const folder = defineBlockFolder({ name: 'Layout' });\n */\nexport const defineBlockFolder = (blockFolder: BlockFolderInput): ComponentFolder => ({\n ...BLOCK_FOLDER_DEFAULTS,\n ...blockFolder,\n parent_id: blockFolder.parent_id ?? BLOCK_FOLDER_DEFAULTS.parent_id,\n parent_uuid: blockFolder.parent_uuid ?? BLOCK_FOLDER_DEFAULTS.parent_uuid,\n});\n\n/**\n * Defines a block folder creation payload for the MAPI.\n *\n * @example\n * import { defineBlockFolderCreate } from '@storyblok/schema';\n * const payload = defineBlockFolderCreate({ name: 'Layout' });\n */\nexport const defineBlockFolderCreate = (blockFolder: ComponentFolderCreate): ComponentFolderCreate => blockFolder;\n\n/**\n * Defines a block folder update payload for the MAPI.\n *\n * @example\n * import { defineBlockFolderUpdate } from '@storyblok/schema';\n * const payload = defineBlockFolderUpdate({ name: 'Updated Layout' });\n */\nexport const defineBlockFolderUpdate = (blockFolder: ComponentFolderUpdate): ComponentFolderUpdate => blockFolder;\n"],"mappings":";AAIA,MAAM,wBAAwB;CAC5B,IAAI;CACJ,MAAM;CACN,WAAW;CACX,aAAa;CACd;;;;;;;;;AAYD,MAAa,qBAAqB,iBAAoD;CACpF,GAAG;CACH,GAAG;CACH,WAAW,YAAY,aAAa,sBAAsB;CAC1D,aAAa,YAAY,eAAe,sBAAsB;CAC/D;;;;;;;;AASD,MAAa,2BAA2B,gBAA8D;;;;;;;;AAStG,MAAa,2BAA2B,gBAA8D"}
@@ -0,0 +1,51 @@
1
+
2
+ //#region src/helpers/define-block.ts
3
+ const BLOCK_DEFAULTS = {
4
+ id: 1,
5
+ created_at: "",
6
+ updated_at: "",
7
+ is_root: false,
8
+ is_nestable: true,
9
+ component_group_uuid: null
10
+ };
11
+ function defineBlock(block) {
12
+ const inputSchema = Array.isArray(block?.schema) ? block.schema : [];
13
+ const seen = /* @__PURE__ */ new Set();
14
+ const schemaRecord = {};
15
+ inputSchema.forEach((field, index) => {
16
+ const name = field?.name;
17
+ if (typeof name !== "string") return;
18
+ if (seen.has(name)) throw new Error(`defineBlock: duplicate field name "${name}" in block "${block?.name ?? ""}"`);
19
+ seen.add(name);
20
+ const { name: _name, ...rest } = field;
21
+ schemaRecord[name] = {
22
+ ...rest,
23
+ pos: index
24
+ };
25
+ });
26
+ return {
27
+ ...BLOCK_DEFAULTS,
28
+ ...block,
29
+ schema: schemaRecord
30
+ };
31
+ }
32
+ /**
33
+ * Defines a block creation payload for the MAPI.
34
+ *
35
+ * @example
36
+ * const payload = defineBlockCreate({ name: 'page', schema: { ... } });
37
+ */
38
+ const defineBlockCreate = (block) => block;
39
+ /**
40
+ * Defines a block update payload for the MAPI.
41
+ *
42
+ * @example
43
+ * const payload = defineBlockUpdate({ display_name: 'Page' });
44
+ */
45
+ const defineBlockUpdate = (block) => block;
46
+
47
+ //#endregion
48
+ exports.defineBlock = defineBlock;
49
+ exports.defineBlockCreate = defineBlockCreate;
50
+ exports.defineBlockUpdate = defineBlockUpdate;
51
+ //# sourceMappingURL=define-block.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-block.cjs","names":[],"sources":["../../src/helpers/define-block.ts"],"sourcesContent":["import type {\n Block,\n BlockSchema,\n BlockSchemaInput,\n ComponentCreate,\n ComponentUpdate,\n NestableBlock,\n RootBlock,\n SchemaArrayToRecord,\n} from '../generated/types/block';\nimport type { Prettify } from '../utils/prettify';\n\nexport type { Block, BlockSchema, BlockSchemaInput, NestableBlock, RootBlock, SchemaArrayToRecord };\n\nconst BLOCK_DEFAULTS = {\n id: 1,\n created_at: '',\n updated_at: '',\n is_root: false,\n is_nestable: true,\n component_group_uuid: null,\n};\n\n/** Fields that have safe defaults and may be omitted from block input. */\ntype BlockOptional = keyof typeof BLOCK_DEFAULTS;\n\ntype BlockInput<\n TName extends string = string,\n TInputSchema extends BlockSchemaInput = BlockSchemaInput,\n TIsRoot extends boolean = false,\n TIsNestable extends boolean = true,\n TComponentGroupUuid extends string | null = null,\n> = Prettify<\n Omit<Block, 'name' | 'schema' | 'is_root' | 'is_nestable' | 'component_group_uuid' | BlockOptional> & {\n name: TName;\n schema: TInputSchema;\n is_root?: TIsRoot;\n is_nestable?: TIsNestable;\n component_group_uuid?: TComponentGroupUuid;\n } & Partial<Pick<Block, Exclude<BlockOptional, 'is_root' | 'is_nestable' | 'component_group_uuid'>>>\n>;\n\ntype DefinedBlock<\n TName extends string,\n TBlockSchema,\n TIsRoot extends boolean,\n TIsNestable extends boolean,\n TComponentGroupUuid extends string | null,\n> = Prettify<\n Omit<Block, 'name' | 'schema' | 'is_root' | 'is_nestable' | 'component_group_uuid'> & {\n name: TName;\n schema: TBlockSchema;\n is_root: TIsRoot;\n is_nestable: TIsNestable;\n component_group_uuid: TComponentGroupUuid;\n }\n>;\n\n/**\n * Returns a {@link Block} with object-shape `schema` (matches the MAPI wire\n * shape). The user-facing input is an ordered array of `defineField` calls;\n * the array index becomes the field's `pos` in the returned map. Throws if\n * two fields share the same `name`.\n *\n * @example\n * const pageBlock = defineBlock({\n * name: 'page',\n * is_root: true,\n * schema: [\n * defineField('headline', { type: 'text', required: true }),\n * ],\n * });\n */\nexport function defineBlock<\n TName extends string,\n const TInputSchema extends BlockSchemaInput,\n TIsRoot extends boolean = false,\n TIsNestable extends boolean = true,\n TComponentGroupUuid extends string | null = null,\n>(\n block: BlockInput<TName, TInputSchema, TIsRoot, TIsNestable, TComponentGroupUuid>,\n): DefinedBlock<TName, SchemaArrayToRecord<TInputSchema>, TIsRoot, TIsNestable, TComponentGroupUuid>;\n\nexport function defineBlock(block: any) {\n const inputSchema = Array.isArray(block?.schema) ? block.schema : [];\n const seen = new Set<string>();\n const schemaRecord: Record<string, unknown> = {};\n inputSchema.forEach((field: any, index: number) => {\n const name = field?.name;\n if (typeof name !== 'string') {\n return;\n }\n if (seen.has(name)) {\n throw new Error(`defineBlock: duplicate field name \"${name}\" in block \"${block?.name ?? ''}\"`);\n }\n seen.add(name);\n const { name: _name, ...rest } = field;\n schemaRecord[name] = { ...rest, pos: index };\n });\n return { ...BLOCK_DEFAULTS, ...block, schema: schemaRecord };\n}\n\n/**\n * Defines a block creation payload for the MAPI.\n *\n * @example\n * const payload = defineBlockCreate({ name: 'page', schema: { ... } });\n */\nexport const defineBlockCreate = (block: ComponentCreate): ComponentCreate => block;\n\n/**\n * Defines a block update payload for the MAPI.\n *\n * @example\n * const payload = defineBlockUpdate({ display_name: 'Page' });\n */\nexport const defineBlockUpdate = (block: ComponentUpdate): ComponentUpdate => block;\n"],"mappings":";;AAcA,MAAM,iBAAiB;CACrB,IAAI;CACJ,YAAY;CACZ,YAAY;CACZ,SAAS;CACT,aAAa;CACb,sBAAsB;CACvB;AA8DD,SAAgB,YAAY,OAAY;CACtC,MAAM,cAAc,MAAM,QAAQ,OAAO,OAAO,GAAG,MAAM,SAAS,EAAE;CACpE,MAAM,uBAAO,IAAI,KAAa;CAC9B,MAAM,eAAwC,EAAE;AAChD,aAAY,SAAS,OAAY,UAAkB;EACjD,MAAM,OAAO,OAAO;AACpB,MAAI,OAAO,SAAS,SAClB;AAEF,MAAI,KAAK,IAAI,KAAK,CAChB,OAAM,IAAI,MAAM,sCAAsC,KAAK,cAAc,OAAO,QAAQ,GAAG,GAAG;AAEhG,OAAK,IAAI,KAAK;EACd,MAAM,EAAE,MAAM,OAAO,GAAG,SAAS;AACjC,eAAa,QAAQ;GAAE,GAAG;GAAM,KAAK;GAAO;GAC5C;AACF,QAAO;EAAE,GAAG;EAAgB,GAAG;EAAO,QAAQ;EAAc;;;;;;;;AAS9D,MAAa,qBAAqB,UAA4C;;;;;;;AAQ9E,MAAa,qBAAqB,UAA4C"}
@@ -0,0 +1,62 @@
1
+ import { ComponentCreate, ComponentUpdate } from "../generated/mapi/_internal.gen.cjs";
2
+ import { Block, BlockSchema, BlockSchemaInput, NestableBlock, RootBlock, SchemaArrayToRecord } from "../generated/types/block.cjs";
3
+ import { Prettify } from "../utils/prettify.cjs";
4
+
5
+ //#region src/helpers/define-block.d.ts
6
+ declare const BLOCK_DEFAULTS: {
7
+ id: number;
8
+ created_at: string;
9
+ updated_at: string;
10
+ is_root: boolean;
11
+ is_nestable: boolean;
12
+ component_group_uuid: null;
13
+ };
14
+ /** Fields that have safe defaults and may be omitted from block input. */
15
+ type BlockOptional = keyof typeof BLOCK_DEFAULTS;
16
+ type BlockInput<TName extends string = string, TInputSchema extends BlockSchemaInput = BlockSchemaInput, TIsRoot extends boolean = false, TIsNestable extends boolean = true, TComponentGroupUuid extends string | null = null> = Prettify<Omit<Block, 'name' | 'schema' | 'is_root' | 'is_nestable' | 'component_group_uuid' | BlockOptional> & {
17
+ name: TName;
18
+ schema: TInputSchema;
19
+ is_root?: TIsRoot;
20
+ is_nestable?: TIsNestable;
21
+ component_group_uuid?: TComponentGroupUuid;
22
+ } & Partial<Pick<Block, Exclude<BlockOptional, 'is_root' | 'is_nestable' | 'component_group_uuid'>>>>;
23
+ type DefinedBlock<TName extends string, TBlockSchema, TIsRoot extends boolean, TIsNestable extends boolean, TComponentGroupUuid extends string | null> = Prettify<Omit<Block, 'name' | 'schema' | 'is_root' | 'is_nestable' | 'component_group_uuid'> & {
24
+ name: TName;
25
+ schema: TBlockSchema;
26
+ is_root: TIsRoot;
27
+ is_nestable: TIsNestable;
28
+ component_group_uuid: TComponentGroupUuid;
29
+ }>;
30
+ /**
31
+ * Returns a {@link Block} with object-shape `schema` (matches the MAPI wire
32
+ * shape). The user-facing input is an ordered array of `defineField` calls;
33
+ * the array index becomes the field's `pos` in the returned map. Throws if
34
+ * two fields share the same `name`.
35
+ *
36
+ * @example
37
+ * const pageBlock = defineBlock({
38
+ * name: 'page',
39
+ * is_root: true,
40
+ * schema: [
41
+ * defineField('headline', { type: 'text', required: true }),
42
+ * ],
43
+ * });
44
+ */
45
+ declare function defineBlock<TName extends string, const TInputSchema extends BlockSchemaInput, TIsRoot extends boolean = false, TIsNestable extends boolean = true, TComponentGroupUuid extends string | null = null>(block: BlockInput<TName, TInputSchema, TIsRoot, TIsNestable, TComponentGroupUuid>): DefinedBlock<TName, SchemaArrayToRecord<TInputSchema>, TIsRoot, TIsNestable, TComponentGroupUuid>;
46
+ /**
47
+ * Defines a block creation payload for the MAPI.
48
+ *
49
+ * @example
50
+ * const payload = defineBlockCreate({ name: 'page', schema: { ... } });
51
+ */
52
+ declare const defineBlockCreate: (block: ComponentCreate) => ComponentCreate;
53
+ /**
54
+ * Defines a block update payload for the MAPI.
55
+ *
56
+ * @example
57
+ * const payload = defineBlockUpdate({ display_name: 'Page' });
58
+ */
59
+ declare const defineBlockUpdate: (block: ComponentUpdate) => ComponentUpdate;
60
+ //#endregion
61
+ export { defineBlock, defineBlockCreate, defineBlockUpdate };
62
+ //# sourceMappingURL=define-block.d.cts.map