@portabletext/schema 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -0
- package/package.json +5 -5
- package/src/compile-schema.test.ts +0 -46
- package/src/compile-schema.ts +0 -68
- package/src/define-schema.ts +0 -94
- package/src/index.ts +0 -30
- package/src/schema.ts +0 -87
- package/src/types.ts +0 -103
package/dist/index.d.ts
CHANGED
|
@@ -206,4 +206,5 @@ interface PortableTextObject {
|
|
|
206
206
|
_key: string;
|
|
207
207
|
[other: string]: unknown;
|
|
208
208
|
}
|
|
209
|
-
export { type AnnotationDefinition, type AnnotationSchemaType, type BaseDefinition, type BlockObjectDefinition, type BlockObjectSchemaType, type DecoratorDefinition, type DecoratorSchemaType, type FieldDefinition, type InlineObjectDefinition, type InlineObjectSchemaType, type ListDefinition, type ListSchemaType, type PortableTextBlock, type PortableTextObject, type PortableTextSpan, type PortableTextTextBlock, type Schema, type SchemaDefinition, type StyleDefinition, type StyleSchemaType, type TypedObject, compileSchema, defineSchema, isSpan, isTextBlock, isTypedObject };
|
|
209
|
+
export { type AnnotationDefinition, type AnnotationSchemaType, type BaseDefinition, type BlockObjectDefinition, type BlockObjectSchemaType, type DecoratorDefinition, type DecoratorSchemaType, type FieldDefinition, type InlineObjectDefinition, type InlineObjectSchemaType, type ListDefinition, type ListSchemaType, type PortableTextBlock, type PortableTextObject, type PortableTextSpan, type PortableTextTextBlock, type Schema, type SchemaDefinition, type StyleDefinition, type StyleSchemaType, type TypedObject, compileSchema, defineSchema, isSpan, isTextBlock, isTypedObject };
|
|
210
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/schema.ts","../src/define-schema.ts","../src/compile-schema.ts","../src/types.ts"],"sourcesContent":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@portabletext/schema",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "Portable Text Schema",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"portabletext",
|
|
@@ -29,13 +29,13 @@
|
|
|
29
29
|
"main": "./dist/index.js",
|
|
30
30
|
"types": "./dist/index.d.ts",
|
|
31
31
|
"files": [
|
|
32
|
-
"dist"
|
|
33
|
-
"src"
|
|
32
|
+
"dist"
|
|
34
33
|
],
|
|
35
34
|
"devDependencies": {
|
|
36
|
-
"@sanity/pkg-utils": "^
|
|
35
|
+
"@sanity/pkg-utils": "^10.1.1",
|
|
36
|
+
"@sanity/tsconfig": "^1.0.0",
|
|
37
37
|
"typescript": "5.9.3",
|
|
38
|
-
"vitest": "^4.0.
|
|
38
|
+
"vitest": "^4.0.14"
|
|
39
39
|
},
|
|
40
40
|
"engines": {
|
|
41
41
|
"node": ">=20.19 <22 || >=22.12"
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import {describe, expect, test, vi} from 'vitest'
|
|
2
|
-
import {compileSchema} from './compile-schema'
|
|
3
|
-
|
|
4
|
-
describe(compileSchema.name, () => {
|
|
5
|
-
describe('block fields', () => {
|
|
6
|
-
test('reserved fields are ignored and warned about', () => {
|
|
7
|
-
const consoleWarnSpy = vi
|
|
8
|
-
.spyOn(console, 'warn')
|
|
9
|
-
.mockImplementation(() => {})
|
|
10
|
-
|
|
11
|
-
expect(
|
|
12
|
-
compileSchema({block: {fields: [{name: '_type', type: 'string'}]}}),
|
|
13
|
-
).toEqual({
|
|
14
|
-
block: {name: 'block'},
|
|
15
|
-
span: {name: 'span'},
|
|
16
|
-
styles: [{value: 'normal', name: 'normal', title: 'Normal'}],
|
|
17
|
-
lists: [],
|
|
18
|
-
decorators: [],
|
|
19
|
-
annotations: [],
|
|
20
|
-
blockObjects: [],
|
|
21
|
-
inlineObjects: [],
|
|
22
|
-
})
|
|
23
|
-
|
|
24
|
-
expect(consoleWarnSpy).toHaveBeenCalledWith(
|
|
25
|
-
'"_type" is a reserved field name on Portable Text blocks',
|
|
26
|
-
)
|
|
27
|
-
|
|
28
|
-
consoleWarnSpy.mockRestore()
|
|
29
|
-
})
|
|
30
|
-
|
|
31
|
-
test('custom fields are included', () => {
|
|
32
|
-
expect(
|
|
33
|
-
compileSchema({block: {fields: [{name: 'foo', type: 'string'}]}}),
|
|
34
|
-
).toEqual({
|
|
35
|
-
block: {name: 'block', fields: [{name: 'foo', type: 'string'}]},
|
|
36
|
-
span: {name: 'span'},
|
|
37
|
-
styles: [{value: 'normal', name: 'normal', title: 'Normal'}],
|
|
38
|
-
lists: [],
|
|
39
|
-
decorators: [],
|
|
40
|
-
annotations: [],
|
|
41
|
-
blockObjects: [],
|
|
42
|
-
inlineObjects: [],
|
|
43
|
-
})
|
|
44
|
-
})
|
|
45
|
-
})
|
|
46
|
-
})
|
package/src/compile-schema.ts
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import type {SchemaDefinition} from './define-schema'
|
|
2
|
-
import type {FieldDefinition, Schema} from './schema'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @public
|
|
6
|
-
*/
|
|
7
|
-
export function compileSchema(definition: SchemaDefinition): Schema {
|
|
8
|
-
const styles = (definition.styles ?? []).map((style) => ({
|
|
9
|
-
...style,
|
|
10
|
-
value: style.name,
|
|
11
|
-
}))
|
|
12
|
-
|
|
13
|
-
const blockFields: Array<FieldDefinition> = []
|
|
14
|
-
|
|
15
|
-
if (definition.block?.fields) {
|
|
16
|
-
for (const field of definition.block.fields) {
|
|
17
|
-
if (
|
|
18
|
-
field.name === '_type' ||
|
|
19
|
-
field.name === '_key' ||
|
|
20
|
-
field.name === 'children' ||
|
|
21
|
-
field.name === 'markDefs' ||
|
|
22
|
-
field.name === 'style' ||
|
|
23
|
-
field.name === 'listItem' ||
|
|
24
|
-
field.name === 'level'
|
|
25
|
-
) {
|
|
26
|
-
console.warn(
|
|
27
|
-
`"${field.name}" is a reserved field name on Portable Text blocks`,
|
|
28
|
-
)
|
|
29
|
-
continue
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
blockFields.push(field)
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return {
|
|
37
|
-
block: {
|
|
38
|
-
name: definition.block?.name ?? 'block',
|
|
39
|
-
...(blockFields.length > 0 ? {fields: blockFields} : {}),
|
|
40
|
-
},
|
|
41
|
-
span: {
|
|
42
|
-
name: 'span',
|
|
43
|
-
},
|
|
44
|
-
styles: !styles.some((style) => style.value === 'normal')
|
|
45
|
-
? [{value: 'normal', name: 'normal', title: 'Normal'}, ...styles]
|
|
46
|
-
: styles,
|
|
47
|
-
lists: (definition.lists ?? []).map((list) => ({
|
|
48
|
-
...list,
|
|
49
|
-
value: list.name,
|
|
50
|
-
})),
|
|
51
|
-
decorators: (definition.decorators ?? []).map((decorator) => ({
|
|
52
|
-
...decorator,
|
|
53
|
-
value: decorator.name,
|
|
54
|
-
})),
|
|
55
|
-
annotations: (definition.annotations ?? []).map((annotation) => ({
|
|
56
|
-
...annotation,
|
|
57
|
-
fields: annotation.fields ?? [],
|
|
58
|
-
})),
|
|
59
|
-
blockObjects: (definition.blockObjects ?? []).map((blockObject) => ({
|
|
60
|
-
...blockObject,
|
|
61
|
-
fields: blockObject.fields ?? [],
|
|
62
|
-
})),
|
|
63
|
-
inlineObjects: (definition.inlineObjects ?? []).map((inlineObject) => ({
|
|
64
|
-
...inlineObject,
|
|
65
|
-
fields: inlineObject.fields ?? [],
|
|
66
|
-
})),
|
|
67
|
-
}
|
|
68
|
-
}
|
package/src/define-schema.ts
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import type {BaseDefinition, FieldDefinition} from './schema'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @public
|
|
5
|
-
*/
|
|
6
|
-
export type SchemaDefinition = {
|
|
7
|
-
block?: {
|
|
8
|
-
name?: string
|
|
9
|
-
fields?: ReadonlyArray<FieldDefinition>
|
|
10
|
-
}
|
|
11
|
-
styles?: ReadonlyArray<StyleDefinition>
|
|
12
|
-
lists?: ReadonlyArray<ListDefinition>
|
|
13
|
-
decorators?: ReadonlyArray<DecoratorDefinition>
|
|
14
|
-
annotations?: ReadonlyArray<AnnotationDefinition>
|
|
15
|
-
blockObjects?: ReadonlyArray<BlockObjectDefinition>
|
|
16
|
-
inlineObjects?: ReadonlyArray<InlineObjectDefinition>
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* @public
|
|
21
|
-
* A helper wrapper that adds editor support, such as autocomplete and type checking, for a schema definition.
|
|
22
|
-
* @example
|
|
23
|
-
* ```ts
|
|
24
|
-
* import { defineSchema } from '@portabletext/editor'
|
|
25
|
-
*
|
|
26
|
-
* const schemaDefinition = defineSchema({
|
|
27
|
-
* decorators: [{name: 'strong'}, {name: 'em'}, {name: 'underline'}],
|
|
28
|
-
* annotations: [{name: 'link'}],
|
|
29
|
-
* styles: [
|
|
30
|
-
* {name: 'normal'},
|
|
31
|
-
* {name: 'h1'},
|
|
32
|
-
* {name: 'h2'},
|
|
33
|
-
* {name: 'h3'},
|
|
34
|
-
* {name: 'blockquote'},
|
|
35
|
-
* ],
|
|
36
|
-
* lists: [],
|
|
37
|
-
* inlineObjects: [],
|
|
38
|
-
* blockObjects: [],
|
|
39
|
-
* }
|
|
40
|
-
* ```
|
|
41
|
-
*/
|
|
42
|
-
export function defineSchema<const TSchemaDefinition extends SchemaDefinition>(
|
|
43
|
-
definition: TSchemaDefinition,
|
|
44
|
-
): TSchemaDefinition {
|
|
45
|
-
return definition
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* @public
|
|
50
|
-
*/
|
|
51
|
-
export type StyleDefinition<
|
|
52
|
-
TBaseDefinition extends BaseDefinition = BaseDefinition,
|
|
53
|
-
> = TBaseDefinition
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* @public
|
|
57
|
-
*/
|
|
58
|
-
export type ListDefinition<
|
|
59
|
-
TBaseDefinition extends BaseDefinition = BaseDefinition,
|
|
60
|
-
> = TBaseDefinition
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* @public
|
|
64
|
-
*/
|
|
65
|
-
export type DecoratorDefinition<
|
|
66
|
-
TBaseDefinition extends BaseDefinition = BaseDefinition,
|
|
67
|
-
> = TBaseDefinition
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* @public
|
|
71
|
-
*/
|
|
72
|
-
export type AnnotationDefinition<
|
|
73
|
-
TBaseDefinition extends BaseDefinition = BaseDefinition,
|
|
74
|
-
> = TBaseDefinition & {
|
|
75
|
-
fields?: ReadonlyArray<FieldDefinition>
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* @public
|
|
80
|
-
*/
|
|
81
|
-
export type BlockObjectDefinition<
|
|
82
|
-
TBaseDefinition extends BaseDefinition = BaseDefinition,
|
|
83
|
-
> = TBaseDefinition & {
|
|
84
|
-
fields?: ReadonlyArray<FieldDefinition>
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* @public
|
|
89
|
-
*/
|
|
90
|
-
export type InlineObjectDefinition<
|
|
91
|
-
TBaseDefinition extends BaseDefinition = BaseDefinition,
|
|
92
|
-
> = TBaseDefinition & {
|
|
93
|
-
fields?: ReadonlyArray<FieldDefinition>
|
|
94
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
export {compileSchema} from './compile-schema'
|
|
2
|
-
export {
|
|
3
|
-
defineSchema,
|
|
4
|
-
type AnnotationDefinition,
|
|
5
|
-
type BlockObjectDefinition,
|
|
6
|
-
type DecoratorDefinition,
|
|
7
|
-
type InlineObjectDefinition,
|
|
8
|
-
type ListDefinition,
|
|
9
|
-
type SchemaDefinition,
|
|
10
|
-
type StyleDefinition,
|
|
11
|
-
} from './define-schema'
|
|
12
|
-
export type {
|
|
13
|
-
AnnotationSchemaType,
|
|
14
|
-
BaseDefinition,
|
|
15
|
-
BlockObjectSchemaType,
|
|
16
|
-
DecoratorSchemaType,
|
|
17
|
-
FieldDefinition,
|
|
18
|
-
InlineObjectSchemaType,
|
|
19
|
-
ListSchemaType,
|
|
20
|
-
Schema,
|
|
21
|
-
StyleSchemaType,
|
|
22
|
-
} from './schema'
|
|
23
|
-
export {isSpan, isTextBlock, isTypedObject} from './types'
|
|
24
|
-
export type {
|
|
25
|
-
PortableTextBlock,
|
|
26
|
-
PortableTextObject,
|
|
27
|
-
PortableTextSpan,
|
|
28
|
-
PortableTextTextBlock,
|
|
29
|
-
TypedObject,
|
|
30
|
-
} from './types'
|
package/src/schema.ts
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @public
|
|
3
|
-
*/
|
|
4
|
-
export type Schema = {
|
|
5
|
-
block: {
|
|
6
|
-
name: string
|
|
7
|
-
fields?: ReadonlyArray<FieldDefinition>
|
|
8
|
-
}
|
|
9
|
-
span: {
|
|
10
|
-
name: string
|
|
11
|
-
}
|
|
12
|
-
styles: ReadonlyArray<StyleSchemaType>
|
|
13
|
-
lists: ReadonlyArray<ListSchemaType>
|
|
14
|
-
decorators: ReadonlyArray<DecoratorSchemaType>
|
|
15
|
-
annotations: ReadonlyArray<AnnotationSchemaType>
|
|
16
|
-
blockObjects: ReadonlyArray<BlockObjectSchemaType>
|
|
17
|
-
inlineObjects: ReadonlyArray<InlineObjectSchemaType>
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* @public
|
|
22
|
-
*/
|
|
23
|
-
export type StyleSchemaType = BaseDefinition & {
|
|
24
|
-
/**
|
|
25
|
-
* @deprecated
|
|
26
|
-
* Use `name` instead
|
|
27
|
-
*/
|
|
28
|
-
value: string
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* @public
|
|
33
|
-
*/
|
|
34
|
-
export type ListSchemaType = BaseDefinition & {
|
|
35
|
-
/**
|
|
36
|
-
* @deprecated
|
|
37
|
-
* Use `name` instead
|
|
38
|
-
*/
|
|
39
|
-
value: string
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* @public
|
|
44
|
-
*/
|
|
45
|
-
export type DecoratorSchemaType = BaseDefinition & {
|
|
46
|
-
/**
|
|
47
|
-
* @deprecated
|
|
48
|
-
* Use `name` instead
|
|
49
|
-
*/
|
|
50
|
-
value: string
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* @public
|
|
55
|
-
*/
|
|
56
|
-
export type AnnotationSchemaType = BaseDefinition & {
|
|
57
|
-
fields: ReadonlyArray<FieldDefinition>
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* @public
|
|
62
|
-
*/
|
|
63
|
-
export type BlockObjectSchemaType = BaseDefinition & {
|
|
64
|
-
fields: ReadonlyArray<FieldDefinition>
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* @public
|
|
69
|
-
*/
|
|
70
|
-
export type InlineObjectSchemaType = BaseDefinition & {
|
|
71
|
-
fields: ReadonlyArray<FieldDefinition>
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* @public
|
|
76
|
-
*/
|
|
77
|
-
export type FieldDefinition = BaseDefinition & {
|
|
78
|
-
type: 'string' | 'number' | 'boolean' | 'array' | 'object'
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* @public
|
|
83
|
-
*/
|
|
84
|
-
export type BaseDefinition = {
|
|
85
|
-
name: string
|
|
86
|
-
title?: string
|
|
87
|
-
}
|
package/src/types.ts
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import type {Schema} from './schema'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @public
|
|
5
|
-
*/
|
|
6
|
-
export interface TypedObject {
|
|
7
|
-
[key: string]: unknown
|
|
8
|
-
_type: string
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* @public
|
|
13
|
-
*/
|
|
14
|
-
export function isTypedObject(object: unknown): object is TypedObject {
|
|
15
|
-
return isRecord(object) && typeof object._type === 'string'
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
19
|
-
return !!value && (typeof value === 'object' || typeof value === 'function')
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* @public
|
|
24
|
-
*/
|
|
25
|
-
export type PortableTextBlock = PortableTextTextBlock | PortableTextObject
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* @public
|
|
29
|
-
*/
|
|
30
|
-
export interface PortableTextTextBlock<
|
|
31
|
-
TChild = PortableTextSpan | PortableTextObject,
|
|
32
|
-
> {
|
|
33
|
-
_type: string
|
|
34
|
-
_key: string
|
|
35
|
-
children: TChild[]
|
|
36
|
-
markDefs?: PortableTextObject[]
|
|
37
|
-
listItem?: string
|
|
38
|
-
style?: string
|
|
39
|
-
level?: number
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* @public
|
|
44
|
-
*/
|
|
45
|
-
export function isTextBlock(
|
|
46
|
-
context: {schema: Schema},
|
|
47
|
-
block: unknown,
|
|
48
|
-
): block is PortableTextTextBlock {
|
|
49
|
-
if (!isTypedObject(block)) {
|
|
50
|
-
return false
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
if (block._type !== context.schema.block.name) {
|
|
54
|
-
return false
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
if (!Array.isArray(block.children)) {
|
|
58
|
-
return false
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return true
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* @public
|
|
66
|
-
*/
|
|
67
|
-
export interface PortableTextSpan {
|
|
68
|
-
_key: string
|
|
69
|
-
_type: 'span'
|
|
70
|
-
text: string
|
|
71
|
-
marks?: string[]
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* @public
|
|
76
|
-
*/
|
|
77
|
-
export function isSpan(
|
|
78
|
-
context: {schema: Schema},
|
|
79
|
-
child: unknown,
|
|
80
|
-
): child is PortableTextSpan {
|
|
81
|
-
if (!isTypedObject(child)) {
|
|
82
|
-
return false
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
if (child._type !== context.schema.span.name) {
|
|
86
|
-
return false
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
if (typeof child.text !== 'string') {
|
|
90
|
-
return false
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
return true
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* @public
|
|
98
|
-
*/
|
|
99
|
-
export interface PortableTextObject {
|
|
100
|
-
_type: string
|
|
101
|
-
_key: string
|
|
102
|
-
[other: string]: unknown
|
|
103
|
-
}
|