@powerhousedao/builder-tools 0.9.38-dev.2 → 0.9.38-dev.3

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.
Files changed (38) hide show
  1. package/dist/document-model-editor/components/code-editors/graphql-editor.d.ts.map +1 -1
  2. package/dist/document-model-editor/components/code-editors/graphql-editor.js +14 -21
  3. package/dist/document-model-editor/components/code-editors/graphql-editor.js.map +1 -1
  4. package/dist/document-model-editor/components/code-editors/utils.d.ts.map +1 -1
  5. package/dist/document-model-editor/components/code-editors/utils.js +5 -4
  6. package/dist/document-model-editor/components/code-editors/utils.js.map +1 -1
  7. package/dist/document-model-editor/components/form.d.ts +1 -1
  8. package/dist/document-model-editor/components/form.d.ts.map +1 -1
  9. package/dist/document-model-editor/components/state-schemas.d.ts.map +1 -1
  10. package/dist/document-model-editor/components/state-schemas.js +26 -6
  11. package/dist/document-model-editor/components/state-schemas.js.map +1 -1
  12. package/dist/document-model-editor/components/text-field.d.ts.map +1 -1
  13. package/dist/document-model-editor/components/text-field.js +5 -4
  14. package/dist/document-model-editor/components/text-field.js.map +1 -1
  15. package/dist/document-model-editor/constants/documents.js +1 -1
  16. package/dist/document-model-editor/constants/documents.js.map +1 -1
  17. package/dist/document-model-editor/constants/graphql-kinds.d.ts +9 -0
  18. package/dist/document-model-editor/constants/graphql-kinds.d.ts.map +1 -0
  19. package/dist/document-model-editor/constants/graphql-kinds.js +13 -0
  20. package/dist/document-model-editor/constants/graphql-kinds.js.map +1 -0
  21. package/dist/document-model-editor/context/schema-context.d.ts +2 -0
  22. package/dist/document-model-editor/context/schema-context.d.ts.map +1 -1
  23. package/dist/document-model-editor/context/schema-context.js +5 -5
  24. package/dist/document-model-editor/context/schema-context.js.map +1 -1
  25. package/dist/document-model-editor/types.d.ts +2 -0
  26. package/dist/document-model-editor/types.d.ts.map +1 -0
  27. package/dist/document-model-editor/types.js +2 -0
  28. package/dist/document-model-editor/types.js.map +1 -0
  29. package/dist/document-model-editor/utils/helpers.d.ts +16 -16
  30. package/dist/document-model-editor/utils/helpers.d.ts.map +1 -1
  31. package/dist/document-model-editor/utils/helpers.js +278 -216
  32. package/dist/document-model-editor/utils/helpers.js.map +1 -1
  33. package/dist/document-model-editor/utils/linting.d.ts.map +1 -1
  34. package/dist/document-model-editor/utils/linting.js +13 -10
  35. package/dist/document-model-editor/utils/linting.js.map +1 -1
  36. package/dist/style.css +95 -39
  37. package/dist/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +41 -40
@@ -1,241 +1,301 @@
1
- import * as customScalars from "@powerhousedao/scalars";
1
+ import { BOOLEAN_GQL_PRIMITIVE_NAME, FLOAT_GQL_PRIMITIVE_NAME, gqlPrimitiveNodeNamesList, ID_GQL_PRIMITIVE_NAME, INT_GQL_PRIMITIVE_NAME, STRING_GQL_PRIMITIVE_NAME, } from "#document-model-editor/constants/graphql-kinds";
2
+ import { safeParseSdl } from "#document-model-editor/context/schema-context";
3
+ import { getPHCustomScalarByTypeName, } from "@powerhousedao/document-engineering/graphql";
2
4
  import { pascalCase } from "change-case";
3
- import { buildASTSchema, extendSchema, getNullableType, GraphQLScalarType, isEnumType, isListType, isObjectType, isScalarType, Kind, parse, print, visit, } from "graphql";
4
- export function makeStateObject(modelName, scope) {
5
- const name = makeStateObjectName(modelName, scope);
6
- const inputNode = {
7
- kind: Kind.OBJECT_TYPE_DEFINITION,
8
- name: {
9
- kind: Kind.NAME,
10
- value: name,
11
- },
12
- fields: [
13
- {
14
- description: {
15
- kind: Kind.STRING,
16
- value: `Add your ${scope} state fields here`,
17
- block: false,
18
- },
19
- kind: Kind.FIELD_DEFINITION,
20
- name: { kind: Kind.NAME, value: "_placeholder" },
21
- type: {
22
- kind: Kind.NAMED_TYPE,
23
- name: { kind: Kind.NAME, value: "String" },
24
- },
25
- },
26
- ],
27
- };
28
- return print(inputNode);
5
+ import { Kind, print, visit, } from "graphql";
6
+ import { z } from "zod";
7
+ export function makeStateSchemaNameForScope(modelName, scope) {
8
+ const modelNamePascalCase = pascalCase(modelName);
9
+ const scopePascalCase = pascalCase(scope);
10
+ const scopeStateTypeNamePrefix = scopePascalCase === "Global" ? "" : scopePascalCase;
11
+ const name = `${scopeStateTypeNamePrefix}${modelNamePascalCase}State`;
12
+ return name;
29
13
  }
30
- export function makeEmptyInputObject(name) {
31
- const inputNode = {
32
- kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,
33
- name: {
34
- kind: Kind.NAME,
35
- value: name,
36
- },
37
- fields: [
38
- {
39
- description: {
40
- kind: Kind.STRING,
41
- value: "Add your inputs here",
42
- block: false,
43
- },
44
- kind: Kind.INPUT_VALUE_DEFINITION,
45
- name: { kind: Kind.NAME, value: "_placeholder" },
46
- type: {
47
- kind: Kind.NAMED_TYPE,
48
- name: { kind: Kind.NAME, value: "String" },
49
- },
50
- },
51
- ],
52
- };
53
- return print(inputNode);
14
+ export function makeInitialSchemaDoc(modelName, scope) {
15
+ const name = makeStateSchemaNameForScope(modelName, scope);
16
+ const stateSchemaSdl = `type ${name} {
17
+ "Add your ${scope} state fields here"
18
+ _placeholder: String
19
+ }`;
20
+ return stateSchemaSdl;
54
21
  }
55
- export function makeOperationInputName(operationName) {
56
- return `${pascalCase(operationName)}Input`;
22
+ export function makeOperationInitialDoc(name) {
23
+ const inputSdl = `input ${pascalCase(name)}Input {
24
+ "Add your inputs here"
25
+ _placeholder: String
26
+ }`;
27
+ return inputSdl;
57
28
  }
58
- export function makeStateObjectName(modelName, scope) {
59
- return `${pascalCase(modelName)}${scope === "local" ? "Local" : ""}State`;
29
+ export function safeParseJsonRecord(json) {
30
+ try {
31
+ return JSON.parse(json);
32
+ }
33
+ catch (error) {
34
+ return null;
35
+ }
60
36
  }
61
- export function makeOperationInitialDoc(name) {
62
- const inputName = makeOperationInputName(name);
63
- const inputObject = makeEmptyInputObject(inputName);
64
- return inputObject;
37
+ export function makeMinimalObjectForStateType(args) {
38
+ const { sharedSchemaDocumentNode, stateTypeDefinitionNode, existingValue } = args;
39
+ const existingValueObject = safeParseJsonRecord(existingValue);
40
+ if (!existingValueObject) {
41
+ return existingValue;
42
+ }
43
+ const stateTypeDefinitionFields = stateTypeDefinitionNode.fields;
44
+ if (!stateTypeDefinitionFields?.length) {
45
+ return existingValue;
46
+ }
47
+ const minimalObject = makeMinimalValuesForObjectFields({
48
+ schemaDocumentNode: sharedSchemaDocumentNode,
49
+ fieldDefinitionNodes: stateTypeDefinitionFields,
50
+ existingValueObject,
51
+ });
52
+ return JSON.stringify(minimalObject, null, 2);
65
53
  }
66
- export function makeInitialSchemaDoc(modelName, scope) {
67
- const stateObject = makeStateObject(modelName, scope);
68
- return stateObject;
54
+ export function makeMinimalValuesForObjectFields(args) {
55
+ const { schemaDocumentNode, existingValueObject, fieldDefinitionNodes } = args;
56
+ const newJson = {};
57
+ for (const astNode of fieldDefinitionNodes) {
58
+ const fieldName = getASTNodeName(astNode);
59
+ if (!fieldName) {
60
+ continue;
61
+ }
62
+ const minimalValue = makeMinimalValueForASTNode({
63
+ fieldName,
64
+ astNode,
65
+ schemaDocumentNode,
66
+ existingValueObject,
67
+ });
68
+ newJson[astNode.name.value] = minimalValue;
69
+ }
70
+ return newJson;
71
+ }
72
+ function makeMinimalValueForASTNode(args) {
73
+ const { fieldName, astNode, schemaDocumentNode, existingValueObject } = args;
74
+ const existingFieldValue = existingValueObject?.[fieldName];
75
+ let node = astNode;
76
+ if (isFieldDefinitionNode(astNode)) {
77
+ node = getASTNodeTypeNode(node);
78
+ }
79
+ const isNonNull = isNonNullNode(node);
80
+ if (isNonNull) {
81
+ node = getASTNodeTypeNode(node);
82
+ }
83
+ if (isListTypeNode(node)) {
84
+ return makeMinimalValueForGqlListNode(node, existingFieldValue, isNonNull);
85
+ }
86
+ if (isGqlPrimitiveNode(node)) {
87
+ return makeMinimalValueForGQLPrimitiveNode(node, existingFieldValue, isNonNull);
88
+ }
89
+ const namedTypeDefinitionNode = getNamedTypeDefinitionNode(node, schemaDocumentNode);
90
+ if (isEnumTypeDefinitionNode(namedTypeDefinitionNode)) {
91
+ return makeMinimalValueForGqlEnum(namedTypeDefinitionNode, existingFieldValue, isNonNull);
92
+ }
93
+ if (isScalarTypeDefinitionNode(namedTypeDefinitionNode)) {
94
+ return makeMinimalValueForGqlScalar(namedTypeDefinitionNode, existingFieldValue, isNonNull);
95
+ }
96
+ if (isUnionTypeDefinitionNode(namedTypeDefinitionNode)) {
97
+ return makeMinimalValueForGqlUnion(namedTypeDefinitionNode, existingFieldValue, schemaDocumentNode, existingValueObject, isNonNull);
98
+ }
99
+ if (isObjectTypeDefinitionNode(namedTypeDefinitionNode)) {
100
+ return makeMinimalValueForGqlObject(namedTypeDefinitionNode, schemaDocumentNode, existingValueObject, existingFieldValue, isNonNull);
101
+ }
102
+ return existingFieldValue;
69
103
  }
70
- export function makeSchemaStringFromDocs(docs) {
71
- return Object.values(docs).join("\n");
104
+ function isFieldDefinitionNode(astNodeTypeNode) {
105
+ if (!astNodeTypeNode)
106
+ return false;
107
+ return astNodeTypeNode.kind === Kind.FIELD_DEFINITION;
72
108
  }
73
- export function getDocumentMetadata(document) {
74
- const globalState = document.state.global;
75
- const author = {
76
- name: globalState.author.name,
77
- website: globalState.author.website,
78
- };
79
- return {
80
- name: globalState.name,
81
- documentType: globalState.id,
82
- description: globalState.description,
83
- extension: globalState.extension,
84
- author,
85
- };
109
+ function isNonNullNode(astNode) {
110
+ if (!astNode)
111
+ return false;
112
+ return astNode.kind === Kind.NON_NULL_TYPE;
86
113
  }
87
- export function getDifferences(obj1, obj2) {
88
- if (!obj1 || !obj2)
89
- return {};
90
- const differences = {};
91
- function isObject(value) {
92
- return !!value && typeof value === "object" && !Array.isArray(value);
93
- }
94
- const compare = (value1, value2) => {
95
- if (isObject(value1) && isObject(value2)) {
96
- // Convert both objects to JSON strings to compare them as a whole.
97
- const keys1 = Object.keys(value1).sort();
98
- const keys2 = Object.keys(value2).sort();
99
- if (JSON.stringify(keys1) !== JSON.stringify(keys2) ||
100
- keys1.some((key) => compare(value1[key], value2[key]))) {
101
- return true; // Any difference in object structure or value means they're different.
114
+ export function isGqlPrimitiveNode(astNodeTypeNode) {
115
+ if (!astNodeTypeNode)
116
+ return false;
117
+ const name = getASTNodeName(astNodeTypeNode);
118
+ return gqlPrimitiveNodeNamesList.includes(name);
119
+ }
120
+ function isListTypeNode(astNodeTypeNode) {
121
+ if (!astNodeTypeNode)
122
+ return false;
123
+ return astNodeTypeNode.kind === Kind.LIST_TYPE;
124
+ }
125
+ function isEnumTypeDefinitionNode(definitionNode) {
126
+ if (!definitionNode)
127
+ return false;
128
+ return definitionNode.kind === Kind.ENUM_TYPE_DEFINITION;
129
+ }
130
+ function isScalarTypeDefinitionNode(definitionNode) {
131
+ if (!definitionNode)
132
+ return false;
133
+ return definitionNode.kind === Kind.SCALAR_TYPE_DEFINITION;
134
+ }
135
+ function isUnionTypeDefinitionNode(definitionNode) {
136
+ if (!definitionNode)
137
+ return false;
138
+ return definitionNode.kind === Kind.UNION_TYPE_DEFINITION;
139
+ }
140
+ function isObjectTypeDefinitionNode(definitionNode) {
141
+ if (!definitionNode)
142
+ return false;
143
+ return definitionNode.kind === Kind.OBJECT_TYPE_DEFINITION;
144
+ }
145
+ function getASTNodeName(astNode) {
146
+ if (!astNode) {
147
+ return null;
148
+ }
149
+ if (!("name" in astNode)) {
150
+ return null;
151
+ }
152
+ if (!astNode.name) {
153
+ return null;
154
+ }
155
+ if (!("value" in astNode.name)) {
156
+ return null;
157
+ }
158
+ return astNode.name.value;
159
+ }
160
+ function getASTNodeTypeNode(astNode) {
161
+ if (!astNode) {
162
+ return null;
163
+ }
164
+ if (!("type" in astNode)) {
165
+ return null;
166
+ }
167
+ return astNode.type;
168
+ }
169
+ function makeMinimalValueForGQLPrimitiveNode(primitiveTypeNode, existingFieldValue, isNonNull) {
170
+ const name = getASTNodeName(primitiveTypeNode);
171
+ if (!name) {
172
+ return null;
173
+ }
174
+ switch (name) {
175
+ case ID_GQL_PRIMITIVE_NAME: {
176
+ if (z.string().safeParse(existingFieldValue).success) {
177
+ return existingFieldValue;
102
178
  }
103
- return false;
179
+ return isNonNull ? "placeholder-id" : null;
104
180
  }
105
- else if (Array.isArray(value1) && Array.isArray(value2)) {
106
- // For arrays, compare their serialized forms.
107
- return JSON.stringify(value1) !== JSON.stringify(value2);
181
+ case BOOLEAN_GQL_PRIMITIVE_NAME: {
182
+ if (z.boolean().safeParse(existingFieldValue).success) {
183
+ return existingFieldValue;
184
+ }
185
+ return isNonNull ? false : null;
108
186
  }
109
- else {
110
- // For primitives, compare directly.
111
- return value1 !== value2;
187
+ case INT_GQL_PRIMITIVE_NAME: {
188
+ if (z.number().safeParse(existingFieldValue).success) {
189
+ return existingFieldValue;
190
+ }
191
+ return isNonNull ? 0 : null;
112
192
  }
113
- };
114
- for (const key of new Set([...Object.keys(obj1), ...Object.keys(obj2)])) {
115
- if (compare(obj1[key], obj2[key])) {
116
- differences[key] =
117
- obj2[key];
193
+ case FLOAT_GQL_PRIMITIVE_NAME: {
194
+ if (z.number().safeParse(existingFieldValue).success) {
195
+ return existingFieldValue;
196
+ }
197
+ return isNonNull ? 0.0 : null;
118
198
  }
119
- }
120
- return Object.entries(differences).reduce((acc, [key, value]) => {
121
- if (value !== undefined) {
122
- // @ts-expect-error generic cannot be inferred
123
- acc[key] = value;
199
+ case STRING_GQL_PRIMITIVE_NAME: {
200
+ if (z.string().safeParse(existingFieldValue).success) {
201
+ return existingFieldValue;
202
+ }
203
+ return isNonNull ? "" : null;
124
204
  }
125
- return acc;
126
- }, {});
205
+ }
206
+ return isNonNull ? existingFieldValue : null;
127
207
  }
128
- function isValidScalarValue(typeName, value) {
129
- if (typeName in customScalars) {
130
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
131
- const scalar = customScalars[typeName];
132
- if (scalar instanceof GraphQLScalarType) {
133
- return scalar.parseValue(value) !== undefined;
134
- }
208
+ function makeMinimalValueForGqlEnum(namedTypeDefinitionNode, existingFieldValue, isNonNull) {
209
+ const enumValues = namedTypeDefinitionNode.values?.map((value) => value.name.value) ?? [];
210
+ if (typeof existingFieldValue === "string" &&
211
+ enumValues.includes(existingFieldValue)) {
212
+ return existingFieldValue;
135
213
  }
136
- switch (typeName) {
137
- case "Int":
138
- return Number.isInteger(value);
139
- case "Float":
140
- return typeof value === "number";
141
- case "Boolean":
142
- return typeof value === "boolean";
143
- case "DateTime":
144
- return typeof value === "string" && !isNaN(Date.parse(value));
145
- case "ID":
146
- case "String":
147
- default:
148
- return typeof value === "string";
214
+ if (isNonNull) {
215
+ return enumValues[0];
149
216
  }
217
+ return null;
150
218
  }
151
- function getMinimalValue(type, schema, existingValue) {
152
- const nullableType = getNullableType(type);
153
- if (isScalarType(nullableType)) {
154
- const typeName = nullableType.name;
155
- if (existingValue !== undefined &&
156
- isValidScalarValue(typeName, existingValue)) {
157
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
158
- return existingValue;
159
- }
160
- switch (typeName) {
161
- case "Int":
162
- case "Float":
163
- return 0;
164
- case "Boolean":
165
- return false;
166
- case "DateTime":
167
- return new Date().toISOString();
168
- case "ID":
169
- case "String":
170
- default:
171
- return ""; // Return empty string for custom scalars and String/ID types
172
- }
219
+ function makeMinimalValueForGqlScalar(scalarTypeDefinitionNode, existingFieldValue, isNonNull) {
220
+ if (!isNonNull && !existingFieldValue) {
221
+ return null;
173
222
  }
174
- if (isEnumType(nullableType)) {
175
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
176
- const enumValues = nullableType.getValues().map((v) => v.value);
177
- if (existingValue !== undefined && enumValues.includes(existingValue)) {
178
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
179
- return existingValue;
180
- }
181
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
182
- return enumValues[0] || null;
183
- }
184
- if (isListType(nullableType)) {
185
- if (existingValue !== undefined && Array.isArray(existingValue)) {
186
- // Optionally, validate each element in the array
187
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
188
- return existingValue;
189
- }
190
- return [];
223
+ const name = getASTNodeName(scalarTypeDefinitionNode);
224
+ if (!name) {
225
+ console.error("No name for scalar type definition node", scalarTypeDefinitionNode);
226
+ return null;
191
227
  }
192
- if (isObjectType(nullableType)) {
193
- const result = {};
194
- const fields = nullableType.getFields();
195
- const _existingValue = existingValue;
196
- for (const fieldName in fields) {
197
- const field = fields[fieldName];
198
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
199
- const existingFieldValue = _existingValue
200
- ? _existingValue[fieldName]
201
- : undefined;
202
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
203
- result[fieldName] = getMinimalValue(field.type, schema, existingFieldValue);
204
- }
205
- return result;
228
+ const scalar = getPHCustomScalarByTypeName(name);
229
+ if (!scalar) {
230
+ return null;
206
231
  }
207
- // Handle other types like InterfaceType, UnionType as needed
208
- return null;
232
+ const existingValueIsValid = scalar.schema.safeParse(existingFieldValue);
233
+ if (existingValueIsValid.success) {
234
+ return existingFieldValue;
235
+ }
236
+ if (!isNonNull) {
237
+ return null;
238
+ }
239
+ const minimalValue = scalar.getDefaultValue?.();
240
+ if (minimalValue) {
241
+ return minimalValue;
242
+ }
243
+ return existingFieldValue;
209
244
  }
210
- export function makeMinimalObjectFromSDL(schemaSdl, sdl, existingValue) {
211
- const schema = buildASTSchema(parse(schemaSdl));
212
- const typeAST = parse(sdl);
213
- // Extract the type names from the SDL
214
- const typeNames = [];
215
- typeAST.definitions.forEach((def) => {
216
- if (def.kind === Kind.OBJECT_TYPE_DEFINITION ||
217
- def.kind === Kind.OBJECT_TYPE_EXTENSION) {
218
- typeNames.push(def.name.value);
219
- }
245
+ function makeMinimalValueForGqlUnion(namedTypeDefinitionNode, existingFieldValue, schemaDocumentNode, existingValueObject, isNonNull) {
246
+ if (!isNonNull && !existingFieldValue) {
247
+ return null;
248
+ }
249
+ const types = namedTypeDefinitionNode.types;
250
+ if (!types?.length) {
251
+ return null;
252
+ }
253
+ const firstNamedTypeDefinitionNode = namedTypeDefinitionNode.types?.at(0);
254
+ if (!firstNamedTypeDefinitionNode) {
255
+ return null;
256
+ }
257
+ const firstNamedTypeObjectDefinitionNode = getNamedTypeDefinitionNode(firstNamedTypeDefinitionNode, schemaDocumentNode);
258
+ if (!isObjectTypeDefinitionNode(firstNamedTypeObjectDefinitionNode)) {
259
+ return null;
260
+ }
261
+ return makeMinimalValueForGqlObject(firstNamedTypeObjectDefinitionNode, schemaDocumentNode, existingValueObject, existingFieldValue, isNonNull);
262
+ }
263
+ function makeMinimalValueForGqlListNode(listTypeNode, existingFieldValue, isNonNull) {
264
+ if (!isNonNull && !Array.isArray(existingFieldValue)) {
265
+ return null;
266
+ }
267
+ if (isNonNull && !Array.isArray(existingFieldValue)) {
268
+ return [];
269
+ }
270
+ return existingFieldValue;
271
+ }
272
+ function makeMinimalValueForGqlObject(objectTypeDefinitionNode, schemaDocumentNode, existingValueObject, existingFieldValue, isNonNull) {
273
+ if (!isNonNull && !existingFieldValue) {
274
+ return null;
275
+ }
276
+ const fields = objectTypeDefinitionNode.fields;
277
+ if (!fields?.length) {
278
+ return {};
279
+ }
280
+ return makeMinimalValuesForObjectFields({
281
+ schemaDocumentNode,
282
+ existingValueObject,
283
+ fieldDefinitionNodes: fields,
220
284
  });
221
- if (typeNames.length === 0) {
222
- throw new Error("No object type definition found in SDL.");
223
- }
224
- // Assuming there's only one type definition in the SDL
225
- const typeName = typeNames[0];
226
- let type = schema.getType(typeName);
227
- let effectiveSchema = schema;
228
- if (!type || !isObjectType(type)) {
229
- // Type doesn't exist in the schema, extend the schema
230
- effectiveSchema = extendSchema(schema, typeAST);
231
- type = effectiveSchema.getType(typeName);
232
- }
233
- if (!type || !isObjectType(type)) {
234
- throw new Error(`Type "${typeName}" is not a valid ObjectType.`);
235
- }
236
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
237
- const minimalObject = getMinimalValue(type, effectiveSchema, existingValue);
238
- return JSON.stringify(minimalObject, null, 2);
285
+ }
286
+ function getNamedTypeDefinitionNode(astNodeTypeNode, schemaDocumentNode) {
287
+ if (!astNodeTypeNode) {
288
+ return null;
289
+ }
290
+ const name = getASTNodeName(astNodeTypeNode);
291
+ if (!name) {
292
+ return null;
293
+ }
294
+ const definitionNode = schemaDocumentNode.definitions.find((def) => "kind" in def && "name" in def && def.name?.value === name);
295
+ if (!definitionNode) {
296
+ return null;
297
+ }
298
+ return definitionNode;
239
299
  }
240
300
  function removeWhitespace(str) {
241
301
  return str.replace(/\s+|\\n|\\t/g, "").toLowerCase();
@@ -252,7 +312,9 @@ export function renameSchemaType(sdl, oldName, newName, scope) {
252
312
  const typeSuffix = scope === "global" ? "State" : "LocalState";
253
313
  const oldTypeName = `${pascalCase(oldName)}${typeSuffix}`;
254
314
  const newTypeName = `${pascalCase(newName)}${typeSuffix}`;
255
- const ast = parse(sdl);
315
+ const ast = safeParseSdl(sdl);
316
+ if (!ast)
317
+ return sdl;
256
318
  const updatedAst = visit(ast, {
257
319
  ObjectTypeDefinition: (node) => {
258
320
  if (node.name.value === oldTypeName) {
@@ -283,7 +345,7 @@ export function updateModelSchemaNames(params) {
283
345
  }
284
346
  }
285
347
  export function handleModelNameChange(params) {
286
- const { oldName, newName, globalStateSchema, setStateSchema } = params;
348
+ const { newName, globalStateSchema, setStateSchema } = params;
287
349
  const hasExistingSchema = !!globalStateSchema;
288
350
  if (!hasExistingSchema) {
289
351
  initializeModelSchema({ modelName: newName, setStateSchema });
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../document-model-editor/utils/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../document-model-editor/utils/helpers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"linting.d.ts","sourceRoot":"","sources":["../../../document-model-editor/utils/linting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAS,IAAI,EAAE,MAAM,SAAS,CAAC;AAEtC,wBAAgB,yCAAyC,CACvD,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,OAAO,IAAI,GAC1B,OAAO,CAUT;AAED,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GACnB,UAAU,GAAG,SAAS,CAcxB;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,gBAoBd;AAED,wBAAgB,mCAAmC,CACjD,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,aAAa,EAAE,MAAM,gBAqBtB"}
1
+ {"version":3,"file":"linting.d.ts","sourceRoot":"","sources":["../../../document-model-editor/utils/linting.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,wBAAgB,yCAAyC,CACvD,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,OAAO,IAAI,GAC1B,OAAO,CAUT;AAED,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GACnB,UAAU,GAAG,SAAS,CAcxB;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,gBAwBd;AAED,wBAAgB,mCAAmC,CACjD,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,aAAa,EAAE,MAAM,gBAqBtB"}
@@ -1,19 +1,19 @@
1
- import { isDocumentString } from "@graphql-tools/utils";
1
+ import { safeParseSdl } from "#document-model-editor/context/schema-context";
2
2
  import { pascalCase, sentenceCase } from "change-case";
3
- import { parse, Kind } from "graphql";
3
+ import { Kind } from "graphql";
4
4
  export function ensureDocumentContainsNodeWithNameAndType(doc, nodeName, nodeType) {
5
- if (!doc || !isDocumentString(doc))
5
+ const parsedDoc = safeParseSdl(doc);
6
+ if (!parsedDoc)
6
7
  return true;
7
- const parsedDoc = parse(doc);
8
8
  return parsedDoc.definitions.some((def) => {
9
9
  const hasMatchingType = def.kind === Kind[nodeType];
10
10
  return hasMatchingType && "name" in def && def.name?.value === nodeName;
11
11
  });
12
12
  }
13
13
  export function createNodeTypeAndNameDiagnostic(doc, errorMessage) {
14
- if (!doc || !isDocumentString(doc))
15
- return;
16
- const parsedDoc = parse(doc);
14
+ const parsedDoc = safeParseSdl(doc);
15
+ if (!parsedDoc)
16
+ return undefined;
17
17
  const firstNode = parsedDoc.definitions[0];
18
18
  const nameNode = "name" in firstNode ? firstNode.name : null;
19
19
  return {
@@ -24,9 +24,12 @@ export function createNodeTypeAndNameDiagnostic(doc, errorMessage) {
24
24
  };
25
25
  }
26
26
  export function ensureValidStateSchemaName(doc, modelName, scope) {
27
- if (!doc || !isDocumentString(doc))
27
+ if (!safeParseSdl(doc))
28
28
  return [];
29
- const requiredTypeName = `${pascalCase(modelName)}${scope === "local" ? "Local" : ""}State`;
29
+ const scopePascalCase = pascalCase(scope);
30
+ const modelNamePascalCase = pascalCase(modelName);
31
+ const scopeStateTypeNamePrefix = scopePascalCase === "Global" ? "" : scopePascalCase;
32
+ const requiredTypeName = `${scopeStateTypeNamePrefix}${modelNamePascalCase}State`;
30
33
  if (!ensureDocumentContainsNodeWithNameAndType(doc, requiredTypeName, "OBJECT_TYPE_DEFINITION")) {
31
34
  return [
32
35
  createNodeTypeAndNameDiagnostic(doc, `${sentenceCase(scope)} state schema must be named ${requiredTypeName}`),
@@ -35,7 +38,7 @@ export function ensureValidStateSchemaName(doc, modelName, scope) {
35
38
  return [];
36
39
  }
37
40
  export function ensureValidOperationSchemaInputName(doc, operationName) {
38
- if (!doc || !isDocumentString(doc))
41
+ if (!doc || !safeParseSdl(doc))
39
42
  return [];
40
43
  const requiredTypeName = `${pascalCase(operationName)}Input`;
41
44
  if (!ensureDocumentContainsNodeWithNameAndType(doc, requiredTypeName, "INPUT_OBJECT_TYPE_DEFINITION")) {