@tinacms/schema-tools 0.0.0-f3aa146-20241112221138 → 0.0.0-f608f48-20250617065117

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.
@@ -28,10 +28,7 @@ export declare class TinaSchema {
28
28
  } & Schema);
29
29
  getIsTitleFieldName: (collection: string) => string;
30
30
  getCollectionsByName: (collectionNames: string[]) => Collection<true>[];
31
- findReferences(name: string): Record<string, {
32
- path: string[];
33
- field: TinaField;
34
- }[]>;
31
+ findReferencesFromCollection(name: string): Record<string, string[]>;
35
32
  getCollection: (collectionName: string) => Collection<true>;
36
33
  getCollections: () => Collection<true>[];
37
34
  getCollectionByFullPath: (filepath: string) => Collection<true>;
@@ -63,7 +60,26 @@ export declare class TinaSchema {
63
60
  *
64
61
  */
65
62
  getTemplatesForCollectable: (collection: Collectable) => CollectionTemplateable;
66
- walkFields: (cb: (args: {
63
+ /**
64
+ * Walk all fields in tina schema
65
+ *
66
+ * @param cb callback function invoked for each field
67
+ */
68
+ walkFields(cb: (args: {
69
+ field: any;
70
+ collection: any;
71
+ path: string;
72
+ isListItem?: boolean;
73
+ }) => void): void;
74
+ /**
75
+ * Walk all fields in Tina Schema
76
+ *
77
+ * This is a legacy version to preserve backwards compatibility for the tina generated schema. It does not
78
+ * traverse fields in object lists in rich-text templates.
79
+ *
80
+ * @param cb callback function invoked for each field
81
+ */
82
+ legacyWalkFields: (cb: (args: {
67
83
  field: TinaField;
68
84
  collection: Collection;
69
85
  path: string[];
@@ -1,4 +1,8 @@
1
- /**
2
-
3
- */
4
- export declare function addNamespaceToSchema<T extends object | string>(maybeNode: T, namespace?: string[]): T;
1
+ type Node = {
2
+ name?: string;
3
+ value?: string;
4
+ namespace?: string[];
5
+ [key: string]: any;
6
+ };
7
+ export declare function addNamespaceToSchema<T extends Node | string>(maybeNode: T, namespace?: string[]): T;
8
+ export {};
@@ -1,5 +1,23 @@
1
1
  import type { FC } from 'react';
2
2
  import type React from 'react';
3
+ export declare const CONTENT_FORMATS: readonly ["mdx", "md", "markdown", "json", "yaml", "yml", "toml"];
4
+ export type ContentFormat = (typeof CONTENT_FORMATS)[number];
5
+ export type ContentFrontmatterFormat = 'yaml' | 'toml' | 'json';
6
+ export type Parser = {
7
+ type: 'mdx';
8
+ } | {
9
+ type: 'markdown';
10
+ /**
11
+ * Tina will escape entities like `<` and `[` by default. You can choose to turn
12
+ * off all escaping, or specify HTML, so `<div>` will not be turned into `\<div>`
13
+ */
14
+ skipEscaping?: 'all' | 'html' | 'none';
15
+ } | {
16
+ /**
17
+ * Experimental: Returns the native Slate.js document as JSON. Ideal to retain the pure editor content structure.
18
+ */
19
+ type: 'slatejson';
20
+ };
3
21
  type Meta = {
4
22
  active?: boolean;
5
23
  dirty?: boolean;
@@ -198,24 +216,21 @@ export type RichTextField<WithNamespace extends boolean = false> = (FieldGeneric
198
216
  * will be stored as frontmatter
199
217
  */
200
218
  isBody?: boolean;
219
+ /**@deprecated use overrides.toolbar */
201
220
  toolbarOverride?: ToolbarOverrideType[];
202
221
  templates?: RichTextTemplate<WithNamespace>[];
222
+ overrides?: {
223
+ toolbar?: ToolbarOverrideType[];
224
+ /**Default set to true */
225
+ showFloatingToolbar?: boolean;
226
+ };
203
227
  /**
204
228
  * By default, Tina parses markdown with MDX, this is a more strict parser
205
229
  * that allows you to use structured content inside markdown (via `templates`).
206
230
  *
207
231
  * Specify `"markdown"` if you're having problems with Tina parsing your content.
208
232
  */
209
- parser?: {
210
- type: 'markdown';
211
- /**
212
- * Tina will escape entities like `<` and `[` by default. You can choose to turn
213
- * off all escaping, or specify HTML, so `<div>` will not be turned into `\<div>`
214
- */
215
- skipEscaping?: 'all' | 'html' | 'none';
216
- } | {
217
- type: 'mdx';
218
- };
233
+ parser?: Parser;
219
234
  };
220
235
  export type RichTextTemplate<WithNamespace extends boolean = false> = Template<WithNamespace> & {
221
236
  inline?: boolean;
@@ -394,7 +409,7 @@ export interface Config<CMSCallback = undefined, FormifyCallback = undefined, Do
394
409
  token?: string | null;
395
410
  ui?: {
396
411
  /**
397
- * When using Tina Cloud's branching feature, provide the URL for your given branch
412
+ * When using TinaCloud's branching feature, provide the URL for your given branch
398
413
  *
399
414
  * Eg. If you're deplying to Vercel, and your repo name is 'my-app',
400
415
  * Vercel's preview URL would be based on the branch:
@@ -521,7 +536,7 @@ export interface Config<CMSCallback = undefined, FormifyCallback = undefined, Do
521
536
  } | {
522
537
  searchClient?: never;
523
538
  /**
524
- * Use the Tina Cloud search index
539
+ * Use the TinaCloud search index
525
540
  */
526
541
  tina: {
527
542
  /**
@@ -548,7 +563,7 @@ export interface Config<CMSCallback = undefined, FormifyCallback = undefined, Do
548
563
  maxSearchIndexFieldLength?: number;
549
564
  };
550
565
  /**
551
- * Used to override the default Tina Cloud API URL
566
+ * Used to override the default TinaCloud API URL
552
567
  *
553
568
  * [mostly for internal use only]
554
569
  */
@@ -581,7 +596,7 @@ interface BaseCollection {
581
596
  name: string;
582
597
  path: string;
583
598
  indexes?: IndexType[];
584
- format?: 'json' | 'md' | 'markdown' | 'mdx' | 'yaml' | 'yml' | 'toml';
599
+ format?: ContentFormat;
585
600
  ui?: UICollection;
586
601
  /**
587
602
  * @deprecated - use `ui.defaultItem` on the each `template` instead
@@ -590,7 +605,7 @@ interface BaseCollection {
590
605
  /**
591
606
  * This format will be used to parse the markdown frontmatter
592
607
  */
593
- frontmatterFormat?: 'yaml' | 'toml' | 'json';
608
+ frontmatterFormat?: ContentFrontmatterFormat;
594
609
  /**
595
610
  * The delimiters used to parse the frontmatter.
596
611
  */
@@ -1 +1,9 @@
1
1
  export declare const normalizePath: (filepath: string) => string;
2
+ /**
3
+ * Returns the given path such that:
4
+ * - The path separator is converted from '\' to '/' if necessary.
5
+ * - Duplicate '/' are removed
6
+ * - Leading and trailing '/' are cleared
7
+ * @param filepath Filepath to convert to its canonical form
8
+ */
9
+ export declare const canonicalPath: (filepath: string) => string;
@@ -1,6 +1,3 @@
1
- /**
2
-
3
- */
4
1
  import { z } from 'zod';
5
2
  import type { TinaField as TinaFieldType } from '../types/index';
6
3
  export declare const TinaFieldZod: z.ZodType<TinaFieldType>;
@@ -1,26 +1,23 @@
1
- /**
2
-
3
- */
4
1
  import { z } from 'zod';
5
2
  export declare const CollectionBaseSchema: z.ZodObject<{
6
3
  label: z.ZodOptional<z.ZodString>;
7
4
  name: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
8
5
  path: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
9
- format: z.ZodOptional<z.ZodEnum<["json", "md", "markdown", "mdx", "toml", "yaml", "yml"]>>;
6
+ format: z.ZodOptional<z.ZodEnum<["mdx", "md", "markdown", "json", "yaml", "yml", "toml"]>>;
10
7
  isAuthCollection: z.ZodOptional<z.ZodBoolean>;
11
8
  isDetached: z.ZodOptional<z.ZodBoolean>;
12
9
  }, "strip", z.ZodTypeAny, {
13
10
  name?: string;
14
11
  label?: string;
15
12
  path?: string;
16
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
13
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
17
14
  isDetached?: boolean;
18
15
  isAuthCollection?: boolean;
19
16
  }, {
20
17
  name?: string;
21
18
  label?: string;
22
19
  path?: string;
23
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
20
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
24
21
  isDetached?: boolean;
25
22
  isAuthCollection?: boolean;
26
23
  }>;
@@ -29,90 +26,90 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
29
26
  label: z.ZodOptional<z.ZodString>;
30
27
  name: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
31
28
  path: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
32
- format: z.ZodOptional<z.ZodEnum<["json", "md", "markdown", "mdx", "toml", "yaml", "yml"]>>;
29
+ format: z.ZodOptional<z.ZodEnum<["mdx", "md", "markdown", "json", "yaml", "yml", "toml"]>>;
33
30
  isAuthCollection: z.ZodOptional<z.ZodBoolean>;
34
31
  isDetached: z.ZodOptional<z.ZodBoolean>;
35
32
  }, {
36
- fields: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodOptional<z.ZodArray<z.ZodType<import("..").TinaField, z.ZodTypeDef, import("..").TinaField>, "many">>, import("..").TinaField[], import("..").TinaField[]>, import("..").TinaField[], import("..").TinaField[]>, import("..").TinaField[], import("..").TinaField[]>, import("..").TinaField[], import("..").TinaField[]>;
33
+ fields: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodOptional<z.ZodArray<z.ZodType<import("../types/index").TinaField, z.ZodTypeDef, import("../types/index").TinaField>, "many">>, import("../types/index").TinaField[], import("../types/index").TinaField[]>, import("../types/index").TinaField[], import("../types/index").TinaField[]>, import("../types/index").TinaField[], import("../types/index").TinaField[]>, import("../types/index").TinaField[], import("../types/index").TinaField[]>;
37
34
  templates: z.ZodEffects<z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodObject<{
38
35
  label: z.ZodString;
39
36
  name: z.ZodEffects<z.ZodString, string, string>;
40
- fields: z.ZodArray<z.ZodType<import("..").TinaField, z.ZodTypeDef, import("..").TinaField>, "many">;
37
+ fields: z.ZodArray<z.ZodType<import("../types/index").TinaField, z.ZodTypeDef, import("../types/index").TinaField>, "many">;
41
38
  }, "strip", z.ZodTypeAny, {
42
39
  name?: string;
43
- fields?: import("..").TinaField[];
40
+ fields?: import("../types/index").TinaField[];
44
41
  label?: string;
45
42
  }, {
46
43
  name?: string;
47
- fields?: import("..").TinaField[];
44
+ fields?: import("../types/index").TinaField[];
48
45
  label?: string;
49
46
  }>, {
50
47
  name?: string;
51
- fields?: import("..").TinaField[];
48
+ fields?: import("../types/index").TinaField[];
52
49
  label?: string;
53
50
  }, {
54
51
  name?: string;
55
- fields?: import("..").TinaField[];
52
+ fields?: import("../types/index").TinaField[];
56
53
  label?: string;
57
54
  }>, "many">>, {
58
55
  name?: string;
59
- fields?: import("..").TinaField[];
56
+ fields?: import("../types/index").TinaField[];
60
57
  label?: string;
61
58
  }[], {
62
59
  name?: string;
63
- fields?: import("..").TinaField[];
60
+ fields?: import("../types/index").TinaField[];
64
61
  label?: string;
65
62
  }[]>;
66
63
  }>, "strip", z.ZodTypeAny, {
67
64
  name?: string;
68
65
  templates?: {
69
66
  name?: string;
70
- fields?: import("..").TinaField[];
67
+ fields?: import("../types/index").TinaField[];
71
68
  label?: string;
72
69
  }[];
73
- fields?: import("..").TinaField[];
70
+ fields?: import("../types/index").TinaField[];
74
71
  label?: string;
75
72
  path?: string;
76
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
73
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
77
74
  isDetached?: boolean;
78
75
  isAuthCollection?: boolean;
79
76
  }, {
80
77
  name?: string;
81
78
  templates?: {
82
79
  name?: string;
83
- fields?: import("..").TinaField[];
80
+ fields?: import("../types/index").TinaField[];
84
81
  label?: string;
85
82
  }[];
86
- fields?: import("..").TinaField[];
83
+ fields?: import("../types/index").TinaField[];
87
84
  label?: string;
88
85
  path?: string;
89
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
86
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
90
87
  isDetached?: boolean;
91
88
  isAuthCollection?: boolean;
92
89
  }>, {
93
90
  name?: string;
94
91
  templates?: {
95
92
  name?: string;
96
- fields?: import("..").TinaField[];
93
+ fields?: import("../types/index").TinaField[];
97
94
  label?: string;
98
95
  }[];
99
- fields?: import("..").TinaField[];
96
+ fields?: import("../types/index").TinaField[];
100
97
  label?: string;
101
98
  path?: string;
102
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
99
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
103
100
  isDetached?: boolean;
104
101
  isAuthCollection?: boolean;
105
102
  }, {
106
103
  name?: string;
107
104
  templates?: {
108
105
  name?: string;
109
- fields?: import("..").TinaField[];
106
+ fields?: import("../types/index").TinaField[];
110
107
  label?: string;
111
108
  }[];
112
- fields?: import("..").TinaField[];
109
+ fields?: import("../types/index").TinaField[];
113
110
  label?: string;
114
111
  path?: string;
115
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
112
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
116
113
  isDetached?: boolean;
117
114
  isAuthCollection?: boolean;
118
115
  }>, "many">;
@@ -240,13 +237,13 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
240
237
  name?: string;
241
238
  templates?: {
242
239
  name?: string;
243
- fields?: import("..").TinaField[];
240
+ fields?: import("../types/index").TinaField[];
244
241
  label?: string;
245
242
  }[];
246
- fields?: import("..").TinaField[];
243
+ fields?: import("../types/index").TinaField[];
247
244
  label?: string;
248
245
  path?: string;
249
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
246
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
250
247
  isDetached?: boolean;
251
248
  isAuthCollection?: boolean;
252
249
  }[];
@@ -278,13 +275,13 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
278
275
  name?: string;
279
276
  templates?: {
280
277
  name?: string;
281
- fields?: import("..").TinaField[];
278
+ fields?: import("../types/index").TinaField[];
282
279
  label?: string;
283
280
  }[];
284
- fields?: import("..").TinaField[];
281
+ fields?: import("../types/index").TinaField[];
285
282
  label?: string;
286
283
  path?: string;
287
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
284
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
288
285
  isDetached?: boolean;
289
286
  isAuthCollection?: boolean;
290
287
  }[];
@@ -316,13 +313,13 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
316
313
  name?: string;
317
314
  templates?: {
318
315
  name?: string;
319
- fields?: import("..").TinaField[];
316
+ fields?: import("../types/index").TinaField[];
320
317
  label?: string;
321
318
  }[];
322
- fields?: import("..").TinaField[];
319
+ fields?: import("../types/index").TinaField[];
323
320
  label?: string;
324
321
  path?: string;
325
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
322
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
326
323
  isDetached?: boolean;
327
324
  isAuthCollection?: boolean;
328
325
  }[];
@@ -354,13 +351,13 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
354
351
  name?: string;
355
352
  templates?: {
356
353
  name?: string;
357
- fields?: import("..").TinaField[];
354
+ fields?: import("../types/index").TinaField[];
358
355
  label?: string;
359
356
  }[];
360
- fields?: import("..").TinaField[];
357
+ fields?: import("../types/index").TinaField[];
361
358
  label?: string;
362
359
  path?: string;
363
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
360
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
364
361
  isDetached?: boolean;
365
362
  isAuthCollection?: boolean;
366
363
  }[];
@@ -0,0 +1,3 @@
1
+ export declare const duplicateFieldErrorMessage: (fields: string) => string;
2
+ export declare const duplicateTemplateErrorMessage: (templates: string) => string;
3
+ export declare const duplicateCollectionErrorMessage: (collection: string) => string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tinacms/schema-tools",
3
- "version": "0.0.0-f3aa146-20241112221138",
3
+ "version": "0.0.0-f608f48-20250617065117",
4
4
  "main": "dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "exports": {
@@ -23,16 +23,16 @@
23
23
  ]
24
24
  },
25
25
  "devDependencies": {
26
- "@types/jest": "^29.5.13",
26
+ "@types/jest": "^29.5.14",
27
27
  "@types/micromatch": "^4.0.9",
28
- "@types/react": "^18.3.10",
28
+ "@types/react": "^18.3.18",
29
29
  "@types/yup": "^0.29.14",
30
30
  "jest": "^29.7.0",
31
31
  "react": "^18.3.1",
32
32
  "ts-jest": "^29.2.5",
33
- "typescript": "^5.6.2",
33
+ "typescript": "^5.7.3",
34
34
  "yup": "^0.32.11",
35
- "@tinacms/scripts": "1.3.0"
35
+ "@tinacms/scripts": "0.0.0-f608f48-20250617065117"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "react": ">=16.14.0",
@@ -48,7 +48,7 @@
48
48
  "dependencies": {
49
49
  "picomatch-browser": "2.2.6",
50
50
  "url-pattern": "^1.0.3",
51
- "zod": "^3.23.8"
51
+ "zod": "^3.24.2"
52
52
  },
53
53
  "scripts": {
54
54
  "build": "tinacms-scripts build",