@tinacms/graphql 0.0.0-c1132cd-20241024060747 → 0.0.0-c19d29e-20251224001156

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.
@@ -1,8 +1,3 @@
1
- /**
2
-
3
-
4
-
5
- */
6
- import { parseMDX, stringifyMDX } from '@tinacms/mdx';
1
+ import { parseMDX, serializeMDX } from '@tinacms/mdx';
7
2
  export { parseMDX };
8
- export { stringifyMDX };
3
+ export { serializeMDX };
package/dist/resolve.d.ts CHANGED
@@ -1,6 +1,3 @@
1
- /**
2
-
3
- */
4
1
  import type { GraphQLConfig } from './types';
5
2
  import type { Database } from './database';
6
3
  export declare const resolve: ({ config, query, variables, database, silenceErrors, verbose, isAudit, ctxUser, }: {
@@ -0,0 +1,31 @@
1
+ import type { TinaSchema } from '@tinacms/schema-tools';
2
+ import type { GraphQLResolveInfo } from 'graphql';
3
+ import type { Resolver } from './index';
4
+ export declare function handleAuthenticate({ tinaSchema, resolver, sub, password, ctxUser, }: {
5
+ tinaSchema: TinaSchema;
6
+ resolver: Resolver;
7
+ sub?: string;
8
+ password: string;
9
+ info: GraphQLResolveInfo;
10
+ ctxUser?: {
11
+ sub?: string;
12
+ };
13
+ }): Promise<any>;
14
+ export declare function handleAuthorize({ tinaSchema, resolver, sub, ctxUser, }: {
15
+ tinaSchema: TinaSchema;
16
+ resolver: Resolver;
17
+ sub?: string;
18
+ info: GraphQLResolveInfo;
19
+ ctxUser?: {
20
+ sub?: string;
21
+ };
22
+ }): Promise<any>;
23
+ export declare function handleUpdatePassword({ tinaSchema, resolver, password, ctxUser, }: {
24
+ tinaSchema: TinaSchema;
25
+ resolver: Resolver;
26
+ password: string;
27
+ info: GraphQLResolveInfo;
28
+ ctxUser?: {
29
+ sub?: string;
30
+ };
31
+ }): Promise<boolean>;
@@ -15,6 +15,7 @@ export declare class TinaGraphQLError extends Error implements GraphQLError {
15
15
  constructor(message: string, extensions?: Record<string, any>);
16
16
  }
17
17
  export type TypeFetchErrorArgs = {
18
+ /** @deprecated */
18
19
  stack?: string;
19
20
  file?: string;
20
21
  includeAuditMessage?: boolean;
@@ -22,7 +23,6 @@ export type TypeFetchErrorArgs = {
22
23
  collection?: string;
23
24
  };
24
25
  export declare class TinaFetchError extends Error {
25
- stack?: string;
26
26
  collection?: string;
27
27
  file?: string;
28
28
  originalError: Error;
@@ -30,16 +30,9 @@ export declare class TinaFetchError extends Error {
30
30
  }
31
31
  export declare class TinaQueryError extends TinaFetchError {
32
32
  stack?: string;
33
- collection?: string;
34
- file?: string;
35
- originalError: Error;
36
33
  constructor(args: TypeFetchErrorArgs);
37
34
  }
38
35
  export declare class TinaParseDocumentError extends TinaFetchError {
39
- stack?: string;
40
- collection?: string;
41
- file?: string;
42
- originalError: Error;
43
36
  constructor(args: TypeFetchErrorArgs);
44
37
  toString(): string;
45
38
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  */
4
4
  import { Database } from '../database';
5
- import type { Collectable, Collection, TinaField, Template, TinaSchema } from '@tinacms/schema-tools';
5
+ import type { Collectable, Collection, Template, TinaField, TinaSchema } from '@tinacms/schema-tools';
6
6
  import type { GraphQLConfig } from '../types';
7
7
  interface ResolverConfig {
8
8
  config?: GraphQLConfig;
@@ -14,12 +14,13 @@ export declare const createResolver: (args: ResolverConfig) => Resolver;
14
14
  export declare const transformDocumentIntoPayload: (fullPath: string, rawData: {
15
15
  _collection: any;
16
16
  _template: any;
17
- }, tinaSchema: TinaSchema, config?: GraphQLConfig, isAudit?: boolean) => Promise<{
17
+ }, tinaSchema: TinaSchema, config?: GraphQLConfig, isAudit?: boolean, hasReferences?: boolean) => Promise<{
18
18
  _sys: {
19
19
  title: any;
20
20
  basename: string;
21
21
  filename: string;
22
22
  extension: string;
23
+ hasReferences: boolean;
23
24
  path: string;
24
25
  relativePath: string;
25
26
  breadcrumbs: string[];
@@ -39,6 +40,17 @@ export declare const transformDocumentIntoPayload: (fullPath: string, rawData: {
39
40
  __typename: string;
40
41
  id: string;
41
42
  }>;
43
+ /**
44
+ * Updates a property in an object using a JSONPath.
45
+ * @param obj - The object to update.
46
+ * @param path - The JSONPath string.
47
+ * @param newValue - The new value to set at the specified path.
48
+ * @returns the updated object.
49
+ */
50
+ export declare const updateObjectWithJsonPath: (obj: any, path: string, oldValue: any, newValue: any) => {
51
+ object: any;
52
+ updated: boolean;
53
+ };
42
54
  /**
43
55
  * The resolver provides functions for all possible types of lookup
44
56
  * values and retrieves them from the database
@@ -50,7 +62,7 @@ export declare class Resolver {
50
62
  tinaSchema: TinaSchema;
51
63
  isAudit: boolean;
52
64
  constructor(init: ResolverConfig);
53
- resolveCollection: (args: any, collectionName: string, hasDocuments?: boolean) => Promise<{
65
+ resolveCollection: (_args: any, collectionName: string, hasDocuments?: boolean) => Promise<{
54
66
  fields: TinaField<true>[];
55
67
  templates?: undefined;
56
68
  label?: string;
@@ -62,10 +74,10 @@ export declare class Resolver {
62
74
  name: string;
63
75
  }[];
64
76
  }[];
65
- format?: "json" | "md" | "markdown" | "mdx" | "yaml" | "yml" | "toml";
77
+ format?: import("@tinacms/schema-tools").ContentFormat;
66
78
  ui?: import("@tinacms/schema-tools").UICollection;
67
79
  defaultItem?: import("@tinacms/schema-tools").DefaultItem<Record<string, any>>;
68
- frontmatterFormat?: "yaml" | "toml" | "json";
80
+ frontmatterFormat?: import("@tinacms/schema-tools").ContentFrontmatterFormat;
69
81
  frontmatterDelimiters?: [string, string] | string;
70
82
  match?: {
71
83
  include?: string;
@@ -90,10 +102,10 @@ export declare class Resolver {
90
102
  name: string;
91
103
  }[];
92
104
  }[];
93
- format?: "json" | "md" | "markdown" | "mdx" | "yaml" | "yml" | "toml";
105
+ format?: import("@tinacms/schema-tools").ContentFormat;
94
106
  ui?: import("@tinacms/schema-tools").UICollection;
95
107
  defaultItem?: import("@tinacms/schema-tools").DefaultItem<Record<string, any>>;
96
- frontmatterFormat?: "yaml" | "toml" | "json";
108
+ frontmatterFormat?: import("@tinacms/schema-tools").ContentFrontmatterFormat;
97
109
  frontmatterDelimiters?: [string, string] | string;
98
110
  match?: {
99
111
  include?: string;
@@ -117,6 +129,7 @@ export declare class Resolver {
117
129
  basename: string;
118
130
  filename: string;
119
131
  extension: string;
132
+ hasReferences: boolean;
120
133
  path: string;
121
134
  relativePath: string;
122
135
  breadcrumbs: string[];
@@ -140,12 +153,16 @@ export declare class Resolver {
140
153
  name: any;
141
154
  path: any;
142
155
  }>;
143
- getDocument: (fullPath: unknown) => Promise<{
156
+ getDocument: (fullPath: unknown, opts?: {
157
+ collection?: Collection<true>;
158
+ checkReferences?: boolean;
159
+ }) => Promise<{
144
160
  _sys: {
145
161
  title: any;
146
162
  basename: string;
147
163
  filename: string;
148
164
  extension: string;
165
+ hasReferences: boolean;
149
166
  path: string;
150
167
  relativePath: string;
151
168
  breadcrumbs: string[];
@@ -173,6 +190,194 @@ export declare class Resolver {
173
190
  }[] | {
174
191
  _template: string;
175
192
  }[]>;
193
+ resolveAddPendingDocument: ({ collectionName, relativePath, templateName, }: {
194
+ collectionName: string;
195
+ relativePath: string;
196
+ templateName: string;
197
+ }) => Promise<{
198
+ _sys: {
199
+ title: any;
200
+ basename: string;
201
+ filename: string;
202
+ extension: string;
203
+ hasReferences: boolean;
204
+ path: string;
205
+ relativePath: string;
206
+ breadcrumbs: string[];
207
+ collection: Collection<true>;
208
+ template: string | number;
209
+ };
210
+ _values: {
211
+ _collection: any;
212
+ _template: any;
213
+ };
214
+ _rawData: {
215
+ _collection: any;
216
+ _template: any;
217
+ };
218
+ _collection: any;
219
+ _template: any;
220
+ __typename: string;
221
+ id: string;
222
+ }>;
223
+ /**
224
+ * Returns top-level fields which are not defined in the collection, so their
225
+ * values are not eliminated from Tina when new values are saved
226
+ */
227
+ resolveLegacyValues: (oldDoc: any, collection: Collection<true>) => {};
228
+ private getCollectionWithName;
229
+ resolveRetrievedDocument: ({ collectionName, relativePath, }: {
230
+ collectionName: string;
231
+ relativePath: string;
232
+ }) => Promise<{
233
+ _sys: {
234
+ title: any;
235
+ basename: string;
236
+ filename: string;
237
+ extension: string;
238
+ hasReferences: boolean;
239
+ path: string;
240
+ relativePath: string;
241
+ breadcrumbs: string[];
242
+ collection: Collection<true>;
243
+ template: string | number;
244
+ };
245
+ _values: {
246
+ _collection: any;
247
+ _template: any;
248
+ };
249
+ _rawData: {
250
+ _collection: any;
251
+ _template: any;
252
+ };
253
+ _collection: any;
254
+ _template: any;
255
+ __typename: string;
256
+ id: string;
257
+ }>;
258
+ resolveCreateFolder: ({ collectionName, relativePath, }: {
259
+ collectionName: string;
260
+ relativePath: string;
261
+ }) => Promise<{
262
+ _sys: {
263
+ title: any;
264
+ basename: string;
265
+ filename: string;
266
+ extension: string;
267
+ hasReferences: boolean;
268
+ path: string;
269
+ relativePath: string;
270
+ breadcrumbs: string[];
271
+ collection: Collection<true>;
272
+ template: string | number;
273
+ };
274
+ _values: {
275
+ _collection: any;
276
+ _template: any;
277
+ };
278
+ _rawData: {
279
+ _collection: any;
280
+ _template: any;
281
+ };
282
+ _collection: any;
283
+ _template: any;
284
+ __typename: string;
285
+ id: string;
286
+ }>;
287
+ resolveCreateDocument: ({ collectionName, relativePath, body, }: {
288
+ collectionName: string;
289
+ relativePath: string;
290
+ body: Record<string, unknown>;
291
+ }) => Promise<{
292
+ _sys: {
293
+ title: any;
294
+ basename: string;
295
+ filename: string;
296
+ extension: string;
297
+ hasReferences: boolean;
298
+ path: string;
299
+ relativePath: string;
300
+ breadcrumbs: string[];
301
+ collection: Collection<true>;
302
+ template: string | number;
303
+ };
304
+ _values: {
305
+ _collection: any;
306
+ _template: any;
307
+ };
308
+ _rawData: {
309
+ _collection: any;
310
+ _template: any;
311
+ };
312
+ _collection: any;
313
+ _template: any;
314
+ __typename: string;
315
+ id: string;
316
+ }>;
317
+ resolveUpdateDocument: ({ collectionName, relativePath, newRelativePath, newBody, }: {
318
+ collectionName: string;
319
+ relativePath: string;
320
+ newRelativePath?: string;
321
+ newBody?: Record<string, unknown>;
322
+ }) => Promise<{
323
+ _sys: {
324
+ title: any;
325
+ basename: string;
326
+ filename: string;
327
+ extension: string;
328
+ hasReferences: boolean;
329
+ path: string;
330
+ relativePath: string;
331
+ breadcrumbs: string[];
332
+ collection: Collection<true>;
333
+ template: string | number;
334
+ };
335
+ _values: {
336
+ _collection: any;
337
+ _template: any;
338
+ };
339
+ _rawData: {
340
+ _collection: any;
341
+ _template: any;
342
+ };
343
+ _collection: any;
344
+ _template: any;
345
+ __typename: string;
346
+ id: string;
347
+ }>;
348
+ resolveDeleteDocument: ({ collectionName, relativePath, }: {
349
+ collectionName: string;
350
+ relativePath: string;
351
+ }) => Promise<{
352
+ _sys: {
353
+ title: any;
354
+ basename: string;
355
+ filename: string;
356
+ extension: string;
357
+ hasReferences: boolean;
358
+ path: string;
359
+ relativePath: string;
360
+ breadcrumbs: string[];
361
+ collection: Collection<true>;
362
+ template: string | number;
363
+ };
364
+ _values: {
365
+ _collection: any;
366
+ _template: any;
367
+ };
368
+ _rawData: {
369
+ _collection: any;
370
+ _template: any;
371
+ };
372
+ _collection: any;
373
+ _template: any;
374
+ __typename: string;
375
+ id: string;
376
+ }>;
377
+ private resolveAndValidateCollection;
378
+ /**
379
+ * @deprecated - To be removed in next major version.
380
+ */
176
381
  createResolveDocument: ({ collection, realPath, args, isAddPendingDocument, }: {
177
382
  collection: Collection<true>;
178
383
  realPath: string;
@@ -184,6 +389,7 @@ export declare class Resolver {
184
389
  basename: string;
185
390
  filename: string;
186
391
  extension: string;
392
+ hasReferences: boolean;
187
393
  path: string;
188
394
  relativePath: string;
189
395
  breadcrumbs: string[];
@@ -203,6 +409,9 @@ export declare class Resolver {
203
409
  __typename: string;
204
410
  id: string;
205
411
  }>;
412
+ /**
413
+ * @deprecated - To be removed in next major version.
414
+ */
206
415
  updateResolveDocument: ({ collection, realPath, args, isAddPendingDocument, isCollectionSpecific, }: {
207
416
  collection: Collection<true>;
208
417
  realPath: string;
@@ -215,6 +424,7 @@ export declare class Resolver {
215
424
  basename: string;
216
425
  filename: string;
217
426
  extension: string;
427
+ hasReferences: boolean;
218
428
  path: string;
219
429
  relativePath: string;
220
430
  breadcrumbs: string[];
@@ -235,10 +445,8 @@ export declare class Resolver {
235
445
  id: string;
236
446
  }>;
237
447
  /**
238
- * Returns top-level fields which are not defined in the collection, so their
239
- * values are not eliminated from Tina when new values are saved
448
+ * @deprecated
240
449
  */
241
- resolveLegacyValues: (oldDoc: any, collection: Collection<true>) => {};
242
450
  resolveDocument: ({ args, collection: collectionName, isMutation, isCreation, isDeletion, isFolderCreation, isAddPendingDocument, isCollectionSpecific, isUpdateName, }: {
243
451
  args: unknown;
244
452
  collection?: string;
@@ -255,6 +463,7 @@ export declare class Resolver {
255
463
  basename: string;
256
464
  filename: string;
257
465
  extension: string;
466
+ hasReferences: boolean;
258
467
  path: string;
259
468
  relativePath: string;
260
469
  breadcrumbs: string[];
@@ -285,6 +494,7 @@ export declare class Resolver {
285
494
  basename: string;
286
495
  filename: string;
287
496
  extension: string;
497
+ hasReferences: boolean;
288
498
  path: string;
289
499
  relativePath: string;
290
500
  breadcrumbs: string[];
@@ -325,6 +535,20 @@ export declare class Resolver {
325
535
  endCursor: string;
326
536
  };
327
537
  }>;
538
+ /**
539
+ * Checks if a document has references to it
540
+ * @param id The id of the document to check for references
541
+ * @param c The collection to check for references
542
+ * @returns true if the document has references, false otherwise
543
+ */
544
+ private hasReferences;
545
+ /**
546
+ * Finds references to a document
547
+ * @param id the id of the document to find references to
548
+ * @param c the collection to find references in
549
+ * @returns a map of references to the document
550
+ */
551
+ private findReferences;
328
552
  private buildFieldMutations;
329
553
  /**
330
554
  * A mutation looks nearly identical between updateDocument:
@@ -1,10 +1,10 @@
1
1
  /**
2
2
 
3
3
  */
4
- import type { GraphQLConfig } from '../types';
5
4
  import type { Schema } from '@tinacms/schema-tools';
5
+ import type { GraphQLConfig } from '../types';
6
6
  /**
7
- * Strips away the Tina Cloud Asset URL from an `image` value
7
+ * Strips away the TinaCloud Asset URL from an `image` value
8
8
  *
9
9
  * @param {string | string[]} value
10
10
  * @param {GraphQLConfig} config
@@ -12,7 +12,7 @@ import type { Schema } from '@tinacms/schema-tools';
12
12
  */
13
13
  export declare const resolveMediaCloudToRelative: (value: string | string[], config: GraphQLConfig, schema: Schema<true>) => string | string[];
14
14
  /**
15
- * Adds Tina Cloud Asset URL to an `image` value
15
+ * Adds TinaCloud Asset URL to an `image` value
16
16
  *
17
17
  * @param {string | string[]} value
18
18
  * @param {GraphQLConfig} config
@@ -1,6 +1,3 @@
1
- /**
2
-
3
- */
4
1
  import { TinaSchema, Schema } from '@tinacms/schema-tools';
5
2
  export declare const createSchema: ({ schema, flags, }: {
6
3
  schema: Schema;
@@ -1,6 +1,3 @@
1
- /**
2
-
3
- */
4
1
  import { type Schema, type Collection } from '@tinacms/schema-tools';
5
2
  export declare const validateSchema: (schema: Schema) => Promise<{
6
3
  collections: Collection<true>[];
package/package.json CHANGED
@@ -1,16 +1,18 @@
1
1
  {
2
2
  "name": "@tinacms/graphql",
3
- "version": "0.0.0-c1132cd-20241024060747",
3
+ "type": "module",
4
+ "version": "0.0.0-c19d29e-20251224001156",
4
5
  "main": "dist/index.js",
5
- "module": "dist/index.mjs",
6
- "typings": "dist/index.d.ts",
6
+ "module": "./dist/index.js",
7
7
  "files": [
8
8
  "package.json",
9
9
  "dist"
10
10
  ],
11
11
  "exports": {
12
- "import": "./dist/index.mjs",
13
- "require": "./dist/index.js"
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ }
14
16
  },
15
17
  "license": "SEE LICENSE IN LICENSE",
16
18
  "buildConfig": {
@@ -26,26 +28,23 @@
26
28
  "@iarna/toml": "^2.2.5",
27
29
  "abstract-level": "^1.0.4",
28
30
  "date-fns": "^2.30.0",
29
- "fast-glob": "^3.3.2",
30
- "fs-extra": "^11.2.0",
31
+ "es-toolkit": "^1.42.0",
32
+ "fast-glob": "^3.3.3",
33
+ "fs-extra": "^11.3.0",
31
34
  "glob-parent": "^6.0.2",
32
35
  "graphql": "15.8.0",
33
36
  "gray-matter": "^4.0.3",
34
- "isomorphic-git": "^1.27.1",
37
+ "isomorphic-git": "^1.29.0",
35
38
  "js-sha1": "^0.6.0",
36
39
  "js-yaml": "^3.14.1",
37
- "jsonpath-plus": "^6.0.1",
38
- "lodash.clonedeep": "^4.5.0",
39
- "lodash.set": "^4.3.2",
40
- "lodash.uniqby": "^4.7.0",
40
+ "jsonpath-plus": "10.1.0",
41
41
  "many-level": "^2.0.0",
42
42
  "micromatch": "4.0.8",
43
43
  "normalize-path": "^3.0.0",
44
- "readable-stream": "^4.5.2",
45
- "scmp": "^2.1.0",
46
- "yup": "^0.32.11",
47
- "@tinacms/mdx": "0.0.0-c1132cd-20241024060747",
48
- "@tinacms/schema-tools": "0.0.0-c1132cd-20241024060747"
44
+ "readable-stream": "^4.7.0",
45
+ "yup": "^1.6.1",
46
+ "@tinacms/schema-tools": "0.0.0-c19d29e-20251224001156",
47
+ "@tinacms/mdx": "0.0.0-c19d29e-20251224001156"
49
48
  },
50
49
  "publishConfig": {
51
50
  "registry": "https://registry.npmjs.org"
@@ -59,33 +58,27 @@
59
58
  "@types/estree": "^0.0.50",
60
59
  "@types/express": "^4.17.21",
61
60
  "@types/fs-extra": "^9.0.13",
62
- "@types/jest": "^26.0.24",
63
61
  "@types/js-yaml": "^3.12.10",
64
- "@types/lodash.camelcase": "^4.3.9",
65
- "@types/lodash.upperfirst": "^4.3.9",
66
62
  "@types/lru-cache": "^5.1.1",
67
63
  "@types/mdast": "^3.0.15",
68
64
  "@types/micromatch": "^4.0.9",
69
- "@types/node": "^22.7.4",
65
+ "@types/node": "^22.13.1",
70
66
  "@types/normalize-path": "^3.0.2",
71
67
  "@types/ws": "^7.4.7",
72
- "@types/yup": "^0.29.14",
73
- "jest": "^29.7.0",
74
- "jest-diff": "^29.7.0",
75
68
  "jest-file-snapshot": "^0.5.0",
76
- "jest-matcher-utils": "^29.7.0",
77
69
  "memory-level": "^1.0.0",
78
- "nodemon": "3.1.4",
79
- "typescript": "^5.6.2",
80
- "@tinacms/schema-tools": "0.0.0-c1132cd-20241024060747",
81
- "@tinacms/scripts": "1.3.0"
70
+ "typescript": "^5.7.3",
71
+ "vite": "^4.5.9",
72
+ "vitest": "^0.32.4",
73
+ "zod": "^3.24.2",
74
+ "@tinacms/schema-tools": "0.0.0-c19d29e-20251224001156",
75
+ "@tinacms/scripts": "1.4.2"
82
76
  },
83
77
  "scripts": {
84
78
  "types": "pnpm tsc",
85
79
  "build": "tinacms-scripts build",
86
80
  "docs": "pnpm typedoc",
87
- "serve": "pnpm nodemon dist/server.js",
88
- "test": "jest",
89
- "test-watch": "jest --watch"
81
+ "test": "vitest run",
82
+ "test-watch": "vitest"
90
83
  }
91
84
  }