@imjp/writenex-astro 1.4.0 → 1.6.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/README.md +894 -60
- package/dist/{chunk-HNS5YKP3.js → chunk-E4PQLKAH.js} +69 -28
- package/dist/chunk-E4PQLKAH.js.map +1 -0
- package/dist/client/index.d.ts +19 -0
- package/dist/config/index.js +1 -1
- package/dist/fields/index.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/fields/README.md +985 -0
- package/src/fields/resolve.ts +86 -32
- package/src/types/config.ts +1 -0
- package/dist/chunk-HNS5YKP3.js.map +0 -1
package/src/fields/resolve.ts
CHANGED
|
@@ -39,8 +39,29 @@ const FIELD_KIND_TO_TYPE: Record<string, string> = {
|
|
|
39
39
|
ignored: "ignored",
|
|
40
40
|
};
|
|
41
41
|
|
|
42
|
+
function resolveObjectFields(
|
|
43
|
+
fields: Record<string, FieldDefinition>
|
|
44
|
+
): Record<string, SchemaField> {
|
|
45
|
+
const result: Record<string, SchemaField> = {};
|
|
46
|
+
for (const [key, value] of Object.entries(fields)) {
|
|
47
|
+
result[key] = resolveFieldDefinition(value);
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function resolveBlockTypes(
|
|
53
|
+
blockTypes: Record<string, FieldDefinition>
|
|
54
|
+
): Record<string, SchemaField> {
|
|
55
|
+
const result: Record<string, SchemaField> = {};
|
|
56
|
+
for (const [key, value] of Object.entries(blockTypes)) {
|
|
57
|
+
result[key] = resolveFieldDefinition(value);
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
|
|
42
62
|
export function resolveFieldDefinition(field: FieldDefinition): SchemaField {
|
|
43
63
|
const type = FIELD_KIND_TO_TYPE[field.fieldKind] ?? "string";
|
|
64
|
+
|
|
44
65
|
const base: SchemaField = {
|
|
45
66
|
type: type as SchemaField["type"],
|
|
46
67
|
required: field.validation?.isRequired ?? false,
|
|
@@ -50,16 +71,62 @@ export function resolveFieldDefinition(field: FieldDefinition): SchemaField {
|
|
|
50
71
|
};
|
|
51
72
|
|
|
52
73
|
switch (field.fieldKind) {
|
|
74
|
+
case "text":
|
|
75
|
+
return {
|
|
76
|
+
...base,
|
|
77
|
+
multiline: field.multiline,
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
case "slug":
|
|
81
|
+
case "url":
|
|
82
|
+
return base;
|
|
83
|
+
|
|
84
|
+
case "number":
|
|
85
|
+
return {
|
|
86
|
+
...base,
|
|
87
|
+
default:
|
|
88
|
+
field.defaultValue ?? (field as { placeholder?: number }).placeholder,
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
case "integer":
|
|
92
|
+
return {
|
|
93
|
+
...base,
|
|
94
|
+
default:
|
|
95
|
+
field.defaultValue ?? (field as { placeholder?: number }).placeholder,
|
|
96
|
+
};
|
|
97
|
+
|
|
53
98
|
case "select":
|
|
54
99
|
return {
|
|
55
100
|
...base,
|
|
56
101
|
options: field.options,
|
|
102
|
+
default: field.defaultValue,
|
|
57
103
|
};
|
|
58
104
|
|
|
59
105
|
case "multiselect":
|
|
60
106
|
return {
|
|
61
107
|
...base,
|
|
62
108
|
items: "string",
|
|
109
|
+
default: field.defaultValue,
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
case "checkbox":
|
|
113
|
+
return {
|
|
114
|
+
...base,
|
|
115
|
+
default: field.defaultValue,
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
case "date":
|
|
119
|
+
return {
|
|
120
|
+
...base,
|
|
121
|
+
format: "date",
|
|
122
|
+
default: field.defaultValue,
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
case "datetime":
|
|
126
|
+
return {
|
|
127
|
+
...base,
|
|
128
|
+
format: "datetime-local",
|
|
129
|
+
default: field.defaultValue,
|
|
63
130
|
};
|
|
64
131
|
|
|
65
132
|
case "image":
|
|
@@ -102,48 +169,35 @@ export function resolveFieldDefinition(field: FieldDefinition): SchemaField {
|
|
|
102
169
|
collection: field.collection,
|
|
103
170
|
};
|
|
104
171
|
|
|
105
|
-
case "
|
|
172
|
+
case "path-reference":
|
|
106
173
|
return {
|
|
107
174
|
...base,
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
175
|
+
allowExternal: (
|
|
176
|
+
field as { contentTypes?: string[] }
|
|
177
|
+
).contentTypes?.includes("url"),
|
|
111
178
|
};
|
|
112
179
|
|
|
113
|
-
case "
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
multiline: field.multiline,
|
|
117
|
-
};
|
|
180
|
+
case "markdoc":
|
|
181
|
+
case "mdx":
|
|
182
|
+
return base;
|
|
118
183
|
|
|
119
|
-
case "
|
|
120
|
-
case "datetime":
|
|
184
|
+
case "conditional":
|
|
121
185
|
return {
|
|
122
186
|
...base,
|
|
123
|
-
|
|
187
|
+
matchField: field.matchField,
|
|
188
|
+
matchValue: field.matchValue,
|
|
189
|
+
showField: resolveFieldDefinition(field.showField),
|
|
124
190
|
};
|
|
125
191
|
|
|
126
|
-
|
|
192
|
+
case "child":
|
|
193
|
+
case "cloud-image":
|
|
127
194
|
return base;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
function resolveObjectFields(
|
|
132
|
-
fields: Record<string, FieldDefinition>
|
|
133
|
-
): Record<string, SchemaField> {
|
|
134
|
-
const result: Record<string, SchemaField> = {};
|
|
135
|
-
for (const [key, value] of Object.entries(fields)) {
|
|
136
|
-
result[key] = resolveFieldDefinition(value);
|
|
137
|
-
}
|
|
138
|
-
return result;
|
|
139
|
-
}
|
|
140
195
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
196
|
+
case "empty":
|
|
197
|
+
case "empty-content":
|
|
198
|
+
case "empty-document":
|
|
199
|
+
case "ignored":
|
|
200
|
+
default:
|
|
201
|
+
return base;
|
|
147
202
|
}
|
|
148
|
-
return result;
|
|
149
203
|
}
|
package/src/types/config.ts
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/fields/resolve.ts","../src/fields/collection.ts","../src/fields/fields.ts"],"sourcesContent":["/**\n * @fileoverview FieldDefinition to SchemaField conversion\n *\n * This module converts FieldDefinition objects (from the builder API)\n * to the internal SchemaField format used by the form system.\n *\n * @module @writenex/astro/fields/resolve\n */\n\nimport type { SchemaField } from \"@/types\";\nimport type { FieldDefinition } from \"./types\";\n\nconst FIELD_KIND_TO_TYPE: Record<string, string> = {\n text: \"string\",\n slug: \"string\",\n url: \"string\",\n number: \"number\",\n integer: \"number\",\n select: \"string\",\n multiselect: \"array\",\n checkbox: \"boolean\",\n date: \"date\",\n datetime: \"date\",\n image: \"image\",\n file: \"file\",\n object: \"object\",\n array: \"array\",\n blocks: \"blocks\",\n relationship: \"relationship\",\n \"path-reference\": \"string\",\n markdoc: \"markdoc\",\n mdx: \"mdx\",\n conditional: \"object\",\n child: \"child\",\n \"cloud-image\": \"image\",\n empty: \"empty\",\n \"empty-content\": \"empty-content\",\n \"empty-document\": \"empty-document\",\n ignored: \"ignored\",\n};\n\nexport function resolveFieldDefinition(field: FieldDefinition): SchemaField {\n const type = FIELD_KIND_TO_TYPE[field.fieldKind] ?? \"string\";\n const base: SchemaField = {\n type: type as SchemaField[\"type\"],\n required: field.validation?.isRequired ?? false,\n label: field.label,\n description: field.description,\n default: field.defaultValue,\n };\n\n switch (field.fieldKind) {\n case \"select\":\n return {\n ...base,\n options: field.options,\n };\n\n case \"multiselect\":\n return {\n ...base,\n items: \"string\",\n };\n\n case \"image\":\n return {\n ...base,\n directory: field.directory,\n publicPath: field.publicPath,\n };\n\n case \"file\":\n return {\n ...base,\n directory: field.directory,\n publicPath: field.publicPath,\n };\n\n case \"object\":\n return {\n ...base,\n fields: resolveObjectFields(field.fields),\n };\n\n case \"array\":\n return {\n ...base,\n itemField: resolveFieldDefinition(field.itemField),\n itemLabel: field.itemLabel,\n };\n\n case \"blocks\":\n return {\n ...base,\n blockTypes: resolveBlockTypes(field.blockTypes),\n itemLabel: field.itemLabel,\n };\n\n case \"relationship\":\n return {\n ...base,\n collection: field.collection,\n };\n\n case \"conditional\":\n return {\n ...base,\n matchField: field.matchField,\n matchValue: field.matchValue,\n showField: resolveFieldDefinition(field.showField),\n };\n\n case \"text\":\n return {\n ...base,\n multiline: field.multiline,\n };\n\n case \"date\":\n case \"datetime\":\n return {\n ...base,\n format: field.fieldKind === \"datetime\" ? \"datetime-local\" : \"date\",\n };\n\n default:\n return base;\n }\n}\n\nfunction resolveObjectFields(\n fields: Record<string, FieldDefinition>\n): Record<string, SchemaField> {\n const result: Record<string, SchemaField> = {};\n for (const [key, value] of Object.entries(fields)) {\n result[key] = resolveFieldDefinition(value);\n }\n return result;\n}\n\nfunction resolveBlockTypes(\n blockTypes: Record<string, FieldDefinition>\n): Record<string, SchemaField> {\n const result: Record<string, SchemaField> = {};\n for (const [key, value] of Object.entries(blockTypes)) {\n result[key] = resolveFieldDefinition(value);\n }\n return result;\n}\n","/**\n * @fileoverview Collection and Singleton schema helpers\n *\n * These helpers provide a typed way to define collection and singleton\n * schemas using the fields builder API. They convert FieldDefinition\n * objects to internal SchemaField format.\n *\n * @module @writenex/astro/fields/collection\n */\n\nimport type { CollectionConfig, ImageConfig } from \"@/types\";\nimport { resolveFieldDefinition } from \"./resolve\";\nimport type { FieldDefinition } from \"./types\";\n\nexport interface CollectionSchemaConfig {\n name: string;\n path: string;\n filePattern?: string;\n previewUrl?: string;\n schema: Record<string, FieldDefinition>;\n images?: ImageConfig;\n}\n\nexport interface SingletonSchemaConfig {\n name: string;\n path: string;\n previewUrl?: string;\n schema: Record<string, FieldDefinition>;\n images?: ImageConfig;\n}\n\nexport function collection(config: CollectionSchemaConfig): CollectionConfig {\n const schema: Record<string, import(\"@/types\").SchemaField> = {};\n for (const [key, fieldDef] of Object.entries(config.schema)) {\n schema[key] = resolveFieldDefinition(fieldDef);\n }\n\n return {\n name: config.name,\n path: config.path,\n filePattern: config.filePattern,\n previewUrl: config.previewUrl,\n schema,\n images: config.images,\n };\n}\n\nexport function singleton(config: SingletonSchemaConfig): {\n name: string;\n path: string;\n previewUrl?: string;\n schema: Record<string, import(\"@/types\").SchemaField>;\n images?: ImageConfig;\n} {\n const schema: Record<string, import(\"@/types\").SchemaField> = {};\n for (const [key, fieldDef] of Object.entries(config.schema)) {\n schema[key] = resolveFieldDefinition(fieldDef);\n }\n\n return {\n name: config.name,\n path: config.path,\n previewUrl: config.previewUrl,\n schema,\n images: config.images,\n };\n}\n","/**\n * @fileoverview Fields builder API for @writenex/astro\n *\n * This module provides a TypeScript-first builder pattern for defining\n * content schema fields. Each field type is a method on the `fields` object.\n *\n * @module @writenex/astro/fields/fields\n */\n\nimport type {\n ArrayFieldConfig,\n BaseFieldConfig,\n BlocksFieldConfig,\n CheckboxFieldConfig,\n ChildFieldConfig,\n CloudImageFieldConfig,\n ConditionalFieldConfig,\n DateFieldConfig,\n DatetimeFieldConfig,\n FieldDefinition,\n FileFieldConfig,\n ImageFieldConfig,\n IntegerFieldConfig,\n MarkdocFieldConfig,\n MdxFieldConfig,\n MultiselectFieldConfig,\n NumberFieldConfig,\n ObjectFieldConfig,\n PathReferenceFieldConfig,\n RelationshipFieldConfig,\n SelectFieldConfig,\n SlugFieldConfig,\n TextFieldConfig,\n UrlFieldConfig,\n} from \"./types\";\n\nfunction createField<K extends FieldDefinition[\"fieldKind\"]>(\n fieldKind: K,\n config: Omit<Extract<FieldDefinition, { fieldKind: K }>, \"fieldKind\">\n): Extract<FieldDefinition, { fieldKind: K }> {\n return { fieldKind, ...config } as Extract<FieldDefinition, { fieldKind: K }>;\n}\n\nexport const fields = {\n text(config: TextFieldConfig = {}): FieldDefinition {\n return createField(\"text\", config);\n },\n\n slug(config: SlugFieldConfig = {}): FieldDefinition {\n return createField(\"slug\", config);\n },\n\n url(config: UrlFieldConfig = {}): FieldDefinition {\n return createField(\"url\", config);\n },\n\n number(config: NumberFieldConfig = {}): FieldDefinition {\n return createField(\"number\", config);\n },\n\n integer(config: IntegerFieldConfig = {}): FieldDefinition {\n return createField(\"integer\", config);\n },\n\n select(config: SelectFieldConfig): FieldDefinition {\n return createField(\"select\", config);\n },\n\n multiselect(config: MultiselectFieldConfig): FieldDefinition {\n return createField(\"multiselect\", config);\n },\n\n checkbox(config: CheckboxFieldConfig = {}): FieldDefinition {\n return createField(\"checkbox\", config);\n },\n\n date(config: DateFieldConfig = {}): FieldDefinition {\n return createField(\"date\", config);\n },\n\n datetime(config: DatetimeFieldConfig = {}): FieldDefinition {\n return createField(\"datetime\", config);\n },\n\n image(config: ImageFieldConfig = {}): FieldDefinition {\n return createField(\"image\", config);\n },\n\n file(config: FileFieldConfig = {}): FieldDefinition {\n return createField(\"file\", config);\n },\n\n object(config: ObjectFieldConfig): FieldDefinition {\n return createField(\"object\", config);\n },\n\n array(config: ArrayFieldConfig): FieldDefinition {\n return createField(\"array\", config);\n },\n\n blocks(config: BlocksFieldConfig): FieldDefinition {\n return createField(\"blocks\", config);\n },\n\n relationship(config: RelationshipFieldConfig): FieldDefinition {\n return createField(\"relationship\", config);\n },\n\n pathReference(config: PathReferenceFieldConfig = {}): FieldDefinition {\n return createField(\"path-reference\", config);\n },\n\n markdoc(config: MarkdocFieldConfig = {}): FieldDefinition {\n return createField(\"markdoc\", config);\n },\n\n mdx(config: MdxFieldConfig = {}): FieldDefinition {\n return createField(\"mdx\", config);\n },\n\n conditional(config: ConditionalFieldConfig): FieldDefinition {\n return createField(\"conditional\", config);\n },\n\n child(config: ChildFieldConfig = {}): FieldDefinition {\n return createField(\"child\", config);\n },\n\n cloudImage(config: CloudImageFieldConfig = {}): FieldDefinition {\n return createField(\"cloud-image\", config);\n },\n\n empty(config: BaseFieldConfig = {}): FieldDefinition {\n return createField(\"empty\", config);\n },\n\n emptyContent(config: BaseFieldConfig = {}): FieldDefinition {\n return createField(\"empty-content\", config);\n },\n\n emptyDocument(config: BaseFieldConfig = {}): FieldDefinition {\n return createField(\"empty-document\", config);\n },\n\n ignored(config: BaseFieldConfig = {}): FieldDefinition {\n return createField(\"ignored\", config);\n },\n};\n\nexport type Fields = typeof fields;\n"],"mappings":"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","names":["fields"]}
|