@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.
- package/LICENSE +8 -0
- package/README.md +74 -0
- package/dist/generated/capi/_internal.gen.d.cts +120 -0
- package/dist/generated/capi/_internal.gen.d.mts +120 -0
- package/dist/generated/capi/types.gen.d.cts +181 -0
- package/dist/generated/capi/types.gen.d.mts +181 -0
- package/dist/generated/mapi/_internal.gen.d.cts +683 -0
- package/dist/generated/mapi/_internal.gen.d.mts +683 -0
- package/dist/generated/mapi/types.gen.d.cts +1272 -0
- package/dist/generated/mapi/types.gen.d.mts +1272 -0
- package/dist/generated/overlay/_internal.gen.d.cts +850 -0
- package/dist/generated/overlay/_internal.gen.d.mts +850 -0
- package/dist/generated/types/_utils.d.cts +7 -0
- package/dist/generated/types/_utils.d.mts +7 -0
- package/dist/generated/types/block.d.cts +46 -0
- package/dist/generated/types/block.d.mts +46 -0
- package/dist/generated/types/field.d.cts +74 -0
- package/dist/generated/types/field.d.mts +74 -0
- package/dist/generated/types/mapi-story.d.cts +29 -0
- package/dist/generated/types/mapi-story.d.mts +29 -0
- package/dist/generated/types/story.d.cts +19 -0
- package/dist/generated/types/story.d.mts +19 -0
- package/dist/helpers/create-story-helpers.cjs +42 -0
- package/dist/helpers/create-story-helpers.cjs.map +1 -0
- package/dist/helpers/create-story-helpers.d.cts +50 -0
- package/dist/helpers/create-story-helpers.d.mts +50 -0
- package/dist/helpers/create-story-helpers.mjs +42 -0
- package/dist/helpers/create-story-helpers.mjs.map +1 -0
- package/dist/helpers/define-asset-folder.cjs +46 -0
- package/dist/helpers/define-asset-folder.cjs.map +1 -0
- package/dist/helpers/define-asset-folder.d.cts +33 -0
- package/dist/helpers/define-asset-folder.d.mts +33 -0
- package/dist/helpers/define-asset-folder.mjs +43 -0
- package/dist/helpers/define-asset-folder.mjs.map +1 -0
- package/dist/helpers/define-asset.cjs +60 -0
- package/dist/helpers/define-asset.cjs.map +1 -0
- package/dist/helpers/define-asset.d.cts +32 -0
- package/dist/helpers/define-asset.d.mts +32 -0
- package/dist/helpers/define-asset.mjs +57 -0
- package/dist/helpers/define-asset.mjs.map +1 -0
- package/dist/helpers/define-block-folder.cjs +44 -0
- package/dist/helpers/define-block-folder.cjs.map +1 -0
- package/dist/helpers/define-block-folder.d.cts +34 -0
- package/dist/helpers/define-block-folder.d.mts +34 -0
- package/dist/helpers/define-block-folder.mjs +41 -0
- package/dist/helpers/define-block-folder.mjs.map +1 -0
- package/dist/helpers/define-block.cjs +51 -0
- package/dist/helpers/define-block.cjs.map +1 -0
- package/dist/helpers/define-block.d.cts +62 -0
- package/dist/helpers/define-block.d.mts +62 -0
- package/dist/helpers/define-block.mjs +48 -0
- package/dist/helpers/define-block.mjs.map +1 -0
- package/dist/helpers/define-datasource-entry.cjs +47 -0
- package/dist/helpers/define-datasource-entry.cjs.map +1 -0
- package/dist/helpers/define-datasource-entry.d.cts +49 -0
- package/dist/helpers/define-datasource-entry.d.mts +49 -0
- package/dist/helpers/define-datasource-entry.mjs +43 -0
- package/dist/helpers/define-datasource-entry.mjs.map +1 -0
- package/dist/helpers/define-datasource.cjs +34 -0
- package/dist/helpers/define-datasource.cjs.map +1 -0
- package/dist/helpers/define-datasource.d.cts +42 -0
- package/dist/helpers/define-datasource.d.mts +42 -0
- package/dist/helpers/define-datasource.mjs +31 -0
- package/dist/helpers/define-datasource.mjs.map +1 -0
- package/dist/helpers/define-field.cjs +17 -0
- package/dist/helpers/define-field.cjs.map +1 -0
- package/dist/helpers/define-field.d.cts +99 -0
- package/dist/helpers/define-field.d.mts +99 -0
- package/dist/helpers/define-field.mjs +16 -0
- package/dist/helpers/define-field.mjs.map +1 -0
- package/dist/helpers/define-internal-tag.cjs +41 -0
- package/dist/helpers/define-internal-tag.cjs.map +1 -0
- package/dist/helpers/define-internal-tag.d.cts +34 -0
- package/dist/helpers/define-internal-tag.d.mts +34 -0
- package/dist/helpers/define-internal-tag.mjs +38 -0
- package/dist/helpers/define-internal-tag.mjs.map +1 -0
- package/dist/helpers/define-link.cjs +23 -0
- package/dist/helpers/define-link.cjs.map +1 -0
- package/dist/helpers/define-link.d.cts +32 -0
- package/dist/helpers/define-link.d.mts +32 -0
- package/dist/helpers/define-link.mjs +22 -0
- package/dist/helpers/define-link.mjs.map +1 -0
- package/dist/helpers/define-preset.cjs +44 -0
- package/dist/helpers/define-preset.cjs.map +1 -0
- package/dist/helpers/define-preset.d.cts +35 -0
- package/dist/helpers/define-preset.d.mts +35 -0
- package/dist/helpers/define-preset.mjs +41 -0
- package/dist/helpers/define-preset.mjs.map +1 -0
- package/dist/helpers/define-space.cjs +47 -0
- package/dist/helpers/define-space.cjs.map +1 -0
- package/dist/helpers/define-space.d.cts +31 -0
- package/dist/helpers/define-space.d.mts +31 -0
- package/dist/helpers/define-space.mjs +44 -0
- package/dist/helpers/define-space.mjs.map +1 -0
- package/dist/helpers/define-story.cjs +122 -0
- package/dist/helpers/define-story.cjs.map +1 -0
- package/dist/helpers/define-story.d.cts +135 -0
- package/dist/helpers/define-story.d.mts +135 -0
- package/dist/helpers/define-story.mjs +118 -0
- package/dist/helpers/define-story.mjs.map +1 -0
- package/dist/helpers/define-tag.cjs +13 -0
- package/dist/helpers/define-tag.cjs.map +1 -0
- package/dist/helpers/define-tag.d.cts +23 -0
- package/dist/helpers/define-tag.d.mts +23 -0
- package/dist/helpers/define-tag.mjs +12 -0
- package/dist/helpers/define-tag.mjs.map +1 -0
- package/dist/helpers/define-user.cjs +50 -0
- package/dist/helpers/define-user.cjs.map +1 -0
- package/dist/helpers/define-user.d.cts +26 -0
- package/dist/helpers/define-user.d.mts +26 -0
- package/dist/helpers/define-user.mjs +48 -0
- package/dist/helpers/define-user.mjs.map +1 -0
- package/dist/helpers/schema-type.d.cts +40 -0
- package/dist/helpers/schema-type.d.mts +40 -0
- package/dist/index.cjs +55 -0
- package/dist/index.d.cts +23 -0
- package/dist/index.d.mts +23 -0
- package/dist/index.mjs +17 -0
- package/dist/utils/prettify.d.cts +9 -0
- package/dist/utils/prettify.d.mts +9 -0
- 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
|