@powerhousedao/powerhouse-vetra-packages 6.2.3-dev.5 → 6.2.3-dev.51

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 (117) hide show
  1. package/dist/browser/assets/{entry-5_Eh4a2Z.js → entry-BETsJgYg.js} +111 -7
  2. package/dist/browser/assets/{projection-entry-5PVbP10h.js → projection-entry-CdlLTrjU.js} +99 -21
  3. package/dist/browser/document-models/index.js +2 -1
  4. package/dist/browser/{documents-J_l59mSV.js → documents-CRzouuNR.js} +631 -752
  5. package/dist/browser/documents-CRzouuNR.js.map +1 -0
  6. package/dist/browser/editor-C7KBR_ar.js +4676 -0
  7. package/dist/browser/editor-C7KBR_ar.js.map +1 -0
  8. package/dist/browser/{editor-Cbl_EDjI.js → editor-CiR6XQBO.js} +4 -5
  9. package/dist/browser/{editor-Cbl_EDjI.js.map → editor-CiR6XQBO.js.map} +1 -1
  10. package/dist/browser/editors/document-model-editor/module.js +1 -1
  11. package/dist/browser/editors/document-model-editor/module.js.map +1 -1
  12. package/dist/browser/editors/generic-drive-explorer/index.js +81 -65
  13. package/dist/browser/editors/generic-drive-explorer/index.js.map +1 -1
  14. package/dist/browser/editors/generic-drive-explorer/module.js +1 -1
  15. package/dist/browser/editors/generic-drive-explorer/module.js.map +1 -1
  16. package/dist/browser/folder-view-DSgXN79D.js +4409 -0
  17. package/dist/browser/folder-view-DSgXN79D.js.map +1 -0
  18. package/dist/browser/{graphql-editor-BcL3-Zha.js → graphql-editor-Cgi5UOrF.js} +98 -88
  19. package/dist/browser/graphql-editor-Cgi5UOrF.js.map +1 -0
  20. package/dist/{node/hooks-D0DcS3MV.mjs → browser/hooks-eQxBX7g4.js} +824 -444
  21. package/dist/browser/{hooks-KKcNp2X0.js.map → hooks-eQxBX7g4.js.map} +1 -1
  22. package/dist/browser/index.js +137 -34
  23. package/dist/browser/index.js.map +1 -1
  24. package/dist/browser/{json-editor-DHXQRIN5.js → json-editor-DfRD-pfk.js} +8 -9
  25. package/dist/browser/{json-editor-DHXQRIN5.js.map → json-editor-DfRD-pfk.js.map} +1 -1
  26. package/dist/browser/{parser-CkF6Qt8V.js → parser-DtbeHA3H.js} +7 -6
  27. package/dist/browser/{parser-CkF6Qt8V.js.map → parser-DtbeHA3H.js.map} +1 -1
  28. package/dist/browser/rolldown-runtime-DC62tzP2.js +33 -0
  29. package/dist/browser/src-CrUksCLW-B2dkRdgq.js +5254 -0
  30. package/dist/browser/src-CrUksCLW-B2dkRdgq.js.map +1 -0
  31. package/dist/browser/state-schemas-B5Bk_l1s.js +696 -0
  32. package/dist/browser/state-schemas-B5Bk_l1s.js.map +1 -0
  33. package/dist/browser/tslib.es6-Cno80yFJ.js +32 -0
  34. package/dist/browser/tslib.es6-Cno80yFJ.js.map +1 -0
  35. package/dist/node/document-models/index.mjs +2 -1
  36. package/dist/node/documents-D70S9PZL.mjs +17 -0
  37. package/dist/node/documents-D70S9PZL.mjs.map +1 -0
  38. package/dist/node/editor-96sMeumV.mjs +4597 -0
  39. package/dist/node/editor-96sMeumV.mjs.map +1 -0
  40. package/dist/node/{editor-DG1q4Y55.mjs → editor-wqvKwcO5.mjs} +4 -5
  41. package/dist/node/{editor-DG1q4Y55.mjs.map → editor-wqvKwcO5.mjs.map} +1 -1
  42. package/dist/node/editors/document-model-editor/module.mjs +1 -1
  43. package/dist/node/editors/document-model-editor/module.mjs.map +1 -1
  44. package/dist/node/editors/generic-drive-explorer/index.mjs +26 -21
  45. package/dist/node/editors/generic-drive-explorer/index.mjs.map +1 -1
  46. package/dist/node/editors/generic-drive-explorer/module.mjs +1 -1
  47. package/dist/node/editors/generic-drive-explorer/module.mjs.map +1 -1
  48. package/dist/node/folder-view-ktfv2Cvw.mjs +4409 -0
  49. package/dist/node/folder-view-ktfv2Cvw.mjs.map +1 -0
  50. package/dist/node/{graphql-BfAoPeWM.mjs → graphql-Dp4j7rmx.mjs} +50 -49
  51. package/dist/node/{graphql-BfAoPeWM.mjs.map → graphql-Dp4j7rmx.mjs.map} +1 -1
  52. package/dist/node/{graphql-editor-B-XIb6az.mjs → graphql-editor-CBJXEY_C.mjs} +77 -63
  53. package/dist/node/graphql-editor-CBJXEY_C.mjs.map +1 -0
  54. package/dist/{browser/hooks-KKcNp2X0.js → node/hooks-C2b46djt.mjs} +824 -444
  55. package/dist/node/{hooks-D0DcS3MV.mjs.map → hooks-C2b46djt.mjs.map} +1 -1
  56. package/dist/node/index.mjs +158 -35
  57. package/dist/node/index.mjs.map +1 -1
  58. package/dist/node/{json-editor-DB0vi6tV.mjs → json-editor-DaqHARBD.mjs} +8 -9
  59. package/dist/node/{json-editor-DB0vi6tV.mjs.map → json-editor-DaqHARBD.mjs.map} +1 -1
  60. package/dist/node/{schema-context-DL8jhi_d.mjs → schema-context-CojjnSE6.mjs} +6 -5
  61. package/dist/node/schema-context-CojjnSE6.mjs.map +1 -0
  62. package/dist/node/src-CrUksCLW-TvF37aMo.mjs +5935 -0
  63. package/dist/node/src-CrUksCLW-TvF37aMo.mjs.map +1 -0
  64. package/dist/node/state-schemas-BHuo0GPl.mjs +698 -0
  65. package/dist/node/state-schemas-BHuo0GPl.mjs.map +1 -0
  66. package/dist/node/{main-B1tRsYOp.mjs → tslib.es6-VORZjfk3.mjs} +40 -202
  67. package/dist/node/tslib.es6-VORZjfk3.mjs.map +1 -0
  68. package/package.json +12 -12
  69. package/dist/browser/button-CuO8Gh3v.js +0 -696
  70. package/dist/browser/button-CuO8Gh3v.js.map +0 -1
  71. package/dist/browser/connect-BtHSAuSc.js +0 -14328
  72. package/dist/browser/connect-BtHSAuSc.js.map +0 -1
  73. package/dist/browser/dist-B4FWbuEM.js +0 -4148
  74. package/dist/browser/dist-B4FWbuEM.js.map +0 -1
  75. package/dist/browser/dist-BAJ5nRDl.js +0 -2711
  76. package/dist/browser/dist-BAJ5nRDl.js.map +0 -1
  77. package/dist/browser/dist-D69hfRZN.js +0 -4641
  78. package/dist/browser/dist-D69hfRZN.js.map +0 -1
  79. package/dist/browser/document-drive-BEXJ-rHp.js +0 -8277
  80. package/dist/browser/document-drive-BEXJ-rHp.js.map +0 -1
  81. package/dist/browser/documents-J_l59mSV.js.map +0 -1
  82. package/dist/browser/editor-mNThkZOv.js +0 -1809
  83. package/dist/browser/editor-mNThkZOv.js.map +0 -1
  84. package/dist/browser/folder-view-D8AkN1Oj.js +0 -232
  85. package/dist/browser/folder-view-D8AkN1Oj.js.map +0 -1
  86. package/dist/browser/graphql-editor-BcL3-Zha.js.map +0 -1
  87. package/dist/browser/lib-ewnRj2dJ.js +0 -209
  88. package/dist/browser/lib-ewnRj2dJ.js.map +0 -1
  89. package/dist/browser/printer-CEYr4JOg.js +0 -604
  90. package/dist/browser/printer-CEYr4JOg.js.map +0 -1
  91. package/dist/browser/schema-context-ZyeclQwy.js +0 -69
  92. package/dist/browser/schema-context-ZyeclQwy.js.map +0 -1
  93. package/dist/browser/state-schemas-C4F8lReN.js +0 -298
  94. package/dist/browser/state-schemas-C4F8lReN.js.map +0 -1
  95. package/dist/node/button-Da7CxMn7.mjs +0 -678
  96. package/dist/node/button-Da7CxMn7.mjs.map +0 -1
  97. package/dist/node/connect-B6IQsY6u.mjs +0 -15022
  98. package/dist/node/connect-B6IQsY6u.mjs.map +0 -1
  99. package/dist/node/dist-CzYOpeXN.mjs +0 -2711
  100. package/dist/node/dist-CzYOpeXN.mjs.map +0 -1
  101. package/dist/node/dist-DT7jI9ol.mjs +0 -4148
  102. package/dist/node/dist-DT7jI9ol.mjs.map +0 -1
  103. package/dist/node/dist-hd-KLWy7.mjs +0 -4649
  104. package/dist/node/dist-hd-KLWy7.mjs.map +0 -1
  105. package/dist/node/document-drive-CkV9NvD7.mjs +0 -8294
  106. package/dist/node/document-drive-CkV9NvD7.mjs.map +0 -1
  107. package/dist/node/documents-DCf53bzO.mjs +0 -747
  108. package/dist/node/documents-DCf53bzO.mjs.map +0 -1
  109. package/dist/node/editor-C93fdI28.mjs +0 -1809
  110. package/dist/node/editor-C93fdI28.mjs.map +0 -1
  111. package/dist/node/folder-view-BGabHV7H.mjs +0 -232
  112. package/dist/node/folder-view-BGabHV7H.mjs.map +0 -1
  113. package/dist/node/graphql-editor-B-XIb6az.mjs.map +0 -1
  114. package/dist/node/main-B1tRsYOp.mjs.map +0 -1
  115. package/dist/node/schema-context-DL8jhi_d.mjs.map +0 -1
  116. package/dist/node/state-schemas-BGsgtEG1.mjs +0 -299
  117. package/dist/node/state-schemas-BGsgtEG1.mjs.map +0 -1
@@ -1,678 +0,0 @@
1
- import { f as lazy$1, g as record, i as sentenceCase, l as array, m as number, r as pascalCase, s as _null, u as boolean, v as string, y as union } from "./dist-DT7jI9ol.mjs";
2
- import { t as require_graphql } from "./graphql-BfAoPeWM.mjs";
3
- import { w as twMerge } from "./dist-CzYOpeXN.mjs";
4
- import { a as customScalars } from "./documents-DCf53bzO.mjs";
5
- import { n as safeParseSdl } from "./schema-context-DL8jhi_d.mjs";
6
- import { forwardRef } from "react";
7
- import { jsx } from "react/jsx-runtime";
8
- //#region ../../node_modules/.pnpm/@powerhousedao+document-engineering@1.40.5_@types+express@4.17.25_@types+react-dom@19.2_75e28b6ec666f63b132a491ff3a6fdf7/node_modules/@powerhousedao/document-engineering/dist/src/scalars/graphql/utils.js
9
- const SerializableSchema = lazy$1(() => union([
10
- string(),
11
- number(),
12
- boolean(),
13
- _null(),
14
- array(SerializableSchema),
15
- record(string(), SerializableSchema)
16
- ]));
17
- function getPHCustomScalarByTypeName(name) {
18
- return Object.values(customScalars).find((scalar) => scalar.config.name === name) ?? null;
19
- }
20
- //#endregion
21
- //#region editors/document-model-editor/constants/graphql-kinds.ts
22
- const STRING_GQL_PRIMITIVE_NAME = "String";
23
- const BOOLEAN_GQL_PRIMITIVE_NAME = "Boolean";
24
- const FLOAT_GQL_PRIMITIVE_NAME = "Float";
25
- const gqlPrimitiveNodeNamesList = [
26
- STRING_GQL_PRIMITIVE_NAME,
27
- BOOLEAN_GQL_PRIMITIVE_NAME,
28
- "Int",
29
- FLOAT_GQL_PRIMITIVE_NAME,
30
- "ID"
31
- ];
32
- //#endregion
33
- //#region editors/document-model-editor/utils/helpers.ts
34
- var import_graphql = require_graphql();
35
- function makeStateSchemaNameForScope(modelName, scope) {
36
- const modelNamePascalCase = pascalCase(modelName);
37
- const scopePascalCase = pascalCase(scope);
38
- return scopePascalCase === "Global" ? `${modelNamePascalCase}State` : `${modelNamePascalCase}${scopePascalCase}State`;
39
- }
40
- function makeInitialSchemaDoc(modelName, scope) {
41
- return `type ${makeStateSchemaNameForScope(modelName, scope)} {
42
- "Add your ${scope} state fields here"
43
- _placeholder: String
44
- }`;
45
- }
46
- function makeOperationInitialDoc(name) {
47
- return `input ${pascalCase(name)}Input {
48
- "Add your inputs here"
49
- _placeholder: String
50
- }`;
51
- }
52
- function makeEmptyOperationSchema(operationName) {
53
- return `input ${pascalCase(operationName)}Input {\n _empty: Boolean\n}`;
54
- }
55
- function isEmptyOperationSchema(schema) {
56
- if (!schema) return false;
57
- return /_empty:\s*Boolean/.test(schema) && !schema.replace(/_empty:\s*Boolean/, "").match(/\w+:\s*\w+/);
58
- }
59
- function safeParseJsonRecord(json) {
60
- try {
61
- return JSON.parse(json);
62
- } catch (_error) {
63
- return null;
64
- }
65
- }
66
- function makeMinimalObjectForStateType(args) {
67
- const { sharedSchemaDocumentNode, stateTypeDefinitionNode, existingValue } = args;
68
- const existingValueObject = safeParseJsonRecord(existingValue);
69
- if (!existingValueObject) return existingValue;
70
- const stateTypeDefinitionFields = stateTypeDefinitionNode.fields;
71
- if (!stateTypeDefinitionFields?.length) return existingValue;
72
- const minimalObject = makeMinimalValuesForObjectFields({
73
- schemaDocumentNode: sharedSchemaDocumentNode,
74
- fieldDefinitionNodes: stateTypeDefinitionFields,
75
- existingValueObject,
76
- visitedTypes: new Set([stateTypeDefinitionNode.name.value])
77
- });
78
- return JSON.stringify(minimalObject, null, 2);
79
- }
80
- function makeMinimalValuesForObjectFields(args) {
81
- const { schemaDocumentNode, existingValueObject, fieldDefinitionNodes, visitedTypes } = args;
82
- const newJson = {};
83
- for (const astNode of fieldDefinitionNodes) {
84
- const fieldName = getASTNodeName(astNode);
85
- if (!fieldName) continue;
86
- const minimalValue = makeMinimalValueForASTNode({
87
- fieldName,
88
- astNode,
89
- schemaDocumentNode,
90
- existingValueObject,
91
- visitedTypes
92
- });
93
- newJson[astNode.name.value] = minimalValue;
94
- }
95
- return newJson;
96
- }
97
- function makeMinimalValueForASTNode(args) {
98
- const { fieldName, astNode, schemaDocumentNode, existingValueObject, visitedTypes } = args;
99
- const existingFieldValue = existingValueObject?.[fieldName];
100
- let node = astNode;
101
- if (isFieldDefinitionNode(astNode)) node = getASTNodeTypeNode(node);
102
- const isNonNull = isNonNullNode(node);
103
- if (isNonNull) node = getASTNodeTypeNode(node);
104
- if (isListTypeNode(node)) return makeMinimalValueForGqlListNode(node, existingFieldValue, isNonNull, schemaDocumentNode, visitedTypes);
105
- if (isGqlPrimitiveNode(node)) return makeMinimalValueForGQLPrimitiveNode(node, existingFieldValue, isNonNull);
106
- const namedTypeDefinitionNode = getNamedTypeDefinitionNode(node, schemaDocumentNode);
107
- if (isEnumTypeDefinitionNode(namedTypeDefinitionNode)) return makeMinimalValueForGqlEnum(namedTypeDefinitionNode, existingFieldValue, isNonNull);
108
- if (isScalarTypeDefinitionNode(namedTypeDefinitionNode)) return makeMinimalValueForGqlScalar(namedTypeDefinitionNode, existingFieldValue, isNonNull);
109
- if (isUnionTypeDefinitionNode(namedTypeDefinitionNode)) return makeMinimalValueForGqlUnion(namedTypeDefinitionNode, existingFieldValue, schemaDocumentNode, existingValueObject, isNonNull, visitedTypes);
110
- if (isObjectTypeDefinitionNode(namedTypeDefinitionNode)) return makeMinimalValueForGqlObject(namedTypeDefinitionNode, schemaDocumentNode, existingValueObject, existingFieldValue, isNonNull, visitedTypes);
111
- return existingFieldValue;
112
- }
113
- function isFieldDefinitionNode(astNodeTypeNode) {
114
- if (!astNodeTypeNode) return false;
115
- return astNodeTypeNode.kind === import_graphql.Kind.FIELD_DEFINITION;
116
- }
117
- function isNonNullNode(astNode) {
118
- if (!astNode) return false;
119
- return astNode.kind === import_graphql.Kind.NON_NULL_TYPE;
120
- }
121
- function isGqlPrimitiveNode(astNodeTypeNode) {
122
- if (!astNodeTypeNode) return false;
123
- const name = getASTNodeName(astNodeTypeNode);
124
- return gqlPrimitiveNodeNamesList.includes(name);
125
- }
126
- function isListTypeNode(astNodeTypeNode) {
127
- if (!astNodeTypeNode) return false;
128
- return astNodeTypeNode.kind === import_graphql.Kind.LIST_TYPE;
129
- }
130
- function isEnumTypeDefinitionNode(definitionNode) {
131
- if (!definitionNode) return false;
132
- return definitionNode.kind === import_graphql.Kind.ENUM_TYPE_DEFINITION;
133
- }
134
- function isScalarTypeDefinitionNode(definitionNode) {
135
- if (!definitionNode) return false;
136
- return definitionNode.kind === import_graphql.Kind.SCALAR_TYPE_DEFINITION;
137
- }
138
- function isUnionTypeDefinitionNode(definitionNode) {
139
- if (!definitionNode) return false;
140
- return definitionNode.kind === import_graphql.Kind.UNION_TYPE_DEFINITION;
141
- }
142
- function isObjectTypeDefinitionNode(definitionNode) {
143
- if (!definitionNode) return false;
144
- return definitionNode.kind === import_graphql.Kind.OBJECT_TYPE_DEFINITION;
145
- }
146
- function getASTNodeName(astNode) {
147
- if (!astNode) return null;
148
- if (!("name" in astNode)) return null;
149
- if (!astNode.name) return null;
150
- if (!("value" in astNode.name)) return null;
151
- return astNode.name.value;
152
- }
153
- function getASTNodeTypeNode(astNode) {
154
- if (!astNode) return null;
155
- if (!("type" in astNode)) return null;
156
- return astNode.type;
157
- }
158
- function makeMinimalValueForGQLPrimitiveNode(primitiveTypeNode, existingFieldValue, isNonNull) {
159
- const name = getASTNodeName(primitiveTypeNode);
160
- if (!name) return null;
161
- switch (name) {
162
- case "ID":
163
- if (string().safeParse(existingFieldValue).success) return existingFieldValue;
164
- return isNonNull ? "placeholder-id" : null;
165
- case BOOLEAN_GQL_PRIMITIVE_NAME:
166
- if (boolean().safeParse(existingFieldValue).success) return existingFieldValue;
167
- return isNonNull ? false : null;
168
- case "Int":
169
- if (number().safeParse(existingFieldValue).success) return existingFieldValue;
170
- return isNonNull ? 0 : null;
171
- case FLOAT_GQL_PRIMITIVE_NAME:
172
- if (number().safeParse(existingFieldValue).success) return existingFieldValue;
173
- return isNonNull ? 0 : null;
174
- case STRING_GQL_PRIMITIVE_NAME:
175
- if (string().safeParse(existingFieldValue).success) return existingFieldValue;
176
- return isNonNull ? "" : null;
177
- }
178
- return isNonNull ? existingFieldValue : null;
179
- }
180
- function makeMinimalValueForGqlEnum(namedTypeDefinitionNode, existingFieldValue, isNonNull) {
181
- const enumValues = namedTypeDefinitionNode.values?.map((value) => value.name.value) ?? [];
182
- if (typeof existingFieldValue === "string" && enumValues.includes(existingFieldValue)) return existingFieldValue;
183
- if (isNonNull) return enumValues[0];
184
- return null;
185
- }
186
- function makeMinimalValueForGqlScalar(scalarTypeDefinitionNode, existingFieldValue, isNonNull) {
187
- if (!isNonNull && !existingFieldValue) return null;
188
- const name = getASTNodeName(scalarTypeDefinitionNode);
189
- if (!name) {
190
- console.error("No name for scalar type definition node", scalarTypeDefinitionNode);
191
- return null;
192
- }
193
- const scalar = getPHCustomScalarByTypeName(name);
194
- if (!scalar) return null;
195
- if (scalar.schema.safeParse(existingFieldValue).success) return existingFieldValue;
196
- if (!isNonNull) return null;
197
- const minimalValue = scalar.getDefaultValue?.();
198
- if (minimalValue) return minimalValue;
199
- return existingFieldValue;
200
- }
201
- function makeMinimalValueForGqlUnion(namedTypeDefinitionNode, existingFieldValue, schemaDocumentNode, existingValueObject, isNonNull, visitedTypes) {
202
- if (!isNonNull && !existingFieldValue) return null;
203
- if (!namedTypeDefinitionNode.types?.length) return null;
204
- const firstNamedTypeDefinitionNode = namedTypeDefinitionNode.types?.at(0);
205
- if (!firstNamedTypeDefinitionNode) return null;
206
- const firstNamedTypeObjectDefinitionNode = getNamedTypeDefinitionNode(firstNamedTypeDefinitionNode, schemaDocumentNode);
207
- if (!isObjectTypeDefinitionNode(firstNamedTypeObjectDefinitionNode)) return null;
208
- return makeMinimalValueForGqlObject(firstNamedTypeObjectDefinitionNode, schemaDocumentNode, existingValueObject, existingFieldValue, isNonNull, visitedTypes);
209
- }
210
- function makeMinimalValueForGqlListNode(listTypeNode, existingFieldValue, isNonNull, schemaDocumentNode, visitedTypes) {
211
- if (!isNonNull && !Array.isArray(existingFieldValue)) return null;
212
- if (isNonNull && !Array.isArray(existingFieldValue)) return [];
213
- return existingFieldValue.map((item, index) => makeMinimalValueForASTNode({
214
- fieldName: String(index),
215
- astNode: listTypeNode.type,
216
- schemaDocumentNode,
217
- existingValueObject: { [index]: item },
218
- visitedTypes
219
- }));
220
- }
221
- function makeMinimalValueForGqlObject(objectTypeDefinitionNode, schemaDocumentNode, _existingValueObject, existingFieldValue, isNonNull, visitedTypes) {
222
- const typeName = objectTypeDefinitionNode.name.value;
223
- if (visitedTypes?.has(typeName)) return null;
224
- if (!isNonNull && !existingFieldValue) return null;
225
- const fields = objectTypeDefinitionNode.fields;
226
- if (!fields?.length) return {};
227
- const newVisitedTypes = new Set(visitedTypes);
228
- newVisitedTypes.add(typeName);
229
- return makeMinimalValuesForObjectFields({
230
- schemaDocumentNode,
231
- existingValueObject: existingFieldValue && typeof existingFieldValue === "object" && !Array.isArray(existingFieldValue) ? existingFieldValue : null,
232
- fieldDefinitionNodes: fields,
233
- visitedTypes: newVisitedTypes
234
- });
235
- }
236
- function getNamedTypeDefinitionNode(astNodeTypeNode, schemaDocumentNode) {
237
- if (!astNodeTypeNode) return null;
238
- const name = getASTNodeName(astNodeTypeNode);
239
- if (!name) return null;
240
- const definitionNode = schemaDocumentNode.definitions.find((def) => "kind" in def && "name" in def && def.name?.value === name);
241
- if (!definitionNode) return null;
242
- return definitionNode;
243
- }
244
- function removeWhitespace(str) {
245
- return str.replace(/\s+|\\n|\\t/g, "").toLowerCase();
246
- }
247
- function compareStringsWithoutWhitespace(str1, str2) {
248
- if (str1 === null || str2 === null || str1 === void 0 || str2 === void 0) return false;
249
- return removeWhitespace(str1) === removeWhitespace(str2);
250
- }
251
- function renameSchemaType(sdl, oldName, newName, scope) {
252
- const typeSuffix = scope === "global" ? "State" : "LocalState";
253
- const oldTypeName = `${pascalCase(oldName)}${typeSuffix}`;
254
- const newTypeName = `${pascalCase(newName)}${typeSuffix}`;
255
- const ast = safeParseSdl(sdl);
256
- if (!ast) return sdl;
257
- return (0, import_graphql.print)((0, import_graphql.visit)(ast, { ObjectTypeDefinition: (node) => {
258
- if (node.name.value === oldTypeName) return {
259
- ...node,
260
- name: {
261
- ...node.name,
262
- value: newTypeName
263
- }
264
- };
265
- } }));
266
- }
267
- function initializeModelSchema(modelName) {
268
- return makeInitialSchemaDoc(modelName, "global");
269
- }
270
- function updateModelSchemaNames(params) {
271
- const { oldName, newName, globalStateSchema, localStateSchema, setStateSchema } = params;
272
- setStateSchema(renameSchemaType(globalStateSchema, oldName, newName, "global"), "global");
273
- if (localStateSchema) setStateSchema(renameSchemaType(localStateSchema, oldName, newName, "local"), "local");
274
- }
275
- function handleModelNameChange(params) {
276
- const { newName, globalStateSchema, setStateSchema } = params;
277
- if (!!!globalStateSchema) {
278
- setStateSchema(initializeModelSchema(newName), "global");
279
- return;
280
- }
281
- updateModelSchemaNames(params);
282
- }
283
- function validateStateObject(sharedSchemaDocumentNode, stateTypeDefinitionNode, stateValue) {
284
- let stateObjectJson;
285
- try {
286
- stateObjectJson = JSON.parse(stateValue);
287
- } catch (error) {
288
- return [new Error("Invalid JSON object", { cause: error })];
289
- }
290
- const typeDefByName = indexTypeDefinitions(sharedSchemaDocumentNode);
291
- const stateTypeName = stateTypeDefinitionNode.name.value;
292
- if (!typeDefByName.has(stateTypeName)) return [/* @__PURE__ */ new Error(`State type "${stateTypeName}" was not found in sharedSchemaDocumentNode`)];
293
- const inputSuffix = "Input";
294
- const generatedInputDefs = generateInputTypesForObjectTree(stateTypeName, typeDefByName, inputSuffix);
295
- const augmentedDoc = {
296
- ...sharedSchemaDocumentNode,
297
- definitions: [...sharedSchemaDocumentNode.definitions, ...generatedInputDefs]
298
- };
299
- let schema;
300
- try {
301
- schema = (0, import_graphql.buildASTSchema)(augmentedDoc, { assumeValidSDL: false });
302
- } catch (e) {
303
- return [new Error("Failed to build schema from SDL", { cause: e })];
304
- }
305
- const op = (0, import_graphql.getOperationAST)((0, import_graphql.parse)(`query($v: ${`${stateTypeName}${inputSuffix}`}!) { __typename }`));
306
- if (!op) return [/* @__PURE__ */ new Error("Failed to create validation operation AST")];
307
- const { errors } = (0, import_graphql.getVariableValues)(schema, op.variableDefinitions ?? [], { v: stateObjectJson });
308
- const recursiveTypeErrors = detectRecursiveTypes(stateTypeDefinitionNode, typeDefByName);
309
- const recursiveFieldNames = new Set(recursiveTypeErrors.map((e) => e.field));
310
- const validationErrors = errors ? graphQLErrorsToStateValidationErrors(errors).filter((e) => {
311
- if (e instanceof StateValidationError && e.kind === "NON_NULL") {
312
- const rootField = e.path[0];
313
- if (typeof rootField === "string" && recursiveFieldNames.has(rootField)) return false;
314
- }
315
- return true;
316
- }) : [];
317
- validationErrors.unshift(...recursiveTypeErrors);
318
- const missingOptionalErrors = detectMissingOptionalFields(sharedSchemaDocumentNode, stateTypeDefinitionNode, stateObjectJson);
319
- validationErrors.push(...missingOptionalErrors);
320
- return validationErrors;
321
- }
322
- /**
323
- * Indexes object/input/enum/scalar/interface/union type definition nodes by name.
324
- * Note: only AST definitions that have a "name" field are indexed.
325
- */
326
- function indexTypeDefinitions(doc) {
327
- const map = /* @__PURE__ */ new Map();
328
- for (const def of doc.definitions) if (def.kind === import_graphql.Kind.OBJECT_TYPE_DEFINITION || def.kind === import_graphql.Kind.INPUT_OBJECT_TYPE_DEFINITION || def.kind === import_graphql.Kind.ENUM_TYPE_DEFINITION || def.kind === import_graphql.Kind.SCALAR_TYPE_DEFINITION || def.kind === import_graphql.Kind.INTERFACE_TYPE_DEFINITION || def.kind === import_graphql.Kind.UNION_TYPE_DEFINITION || def.kind === import_graphql.Kind.OBJECT_TYPE_EXTENSION || def.kind === import_graphql.Kind.INPUT_OBJECT_TYPE_EXTENSION || def.kind === import_graphql.Kind.ENUM_TYPE_EXTENSION || def.kind === import_graphql.Kind.INTERFACE_TYPE_EXTENSION || def.kind === import_graphql.Kind.UNION_TYPE_EXTENSION) {
329
- const name = def.name.value;
330
- if (!map.has(name)) map.set(name, def);
331
- }
332
- return map;
333
- }
334
- /**
335
- * Generates InputObjectTypeDefinitionNode(s) for a root object type and any nested
336
- * object types reachable via fields, converting object references to their *Input equivalents*.
337
- */
338
- function generateInputTypesForObjectTree(rootObjectTypeName, typeDefByName, inputSuffix) {
339
- const generated = /* @__PURE__ */ new Map();
340
- const visiting = /* @__PURE__ */ new Set();
341
- const ensureInputForObject = (objectTypeName) => {
342
- const inputName = `${objectTypeName}${inputSuffix}`;
343
- if (generated.has(inputName)) return;
344
- if (visiting.has(objectTypeName)) return;
345
- visiting.add(objectTypeName);
346
- const def = typeDefByName.get(objectTypeName);
347
- if (!def) throw new import_graphql.GraphQLError(`Unknown referenced type "${objectTypeName}"`);
348
- if (def.kind !== import_graphql.Kind.OBJECT_TYPE_DEFINITION && def.kind !== import_graphql.Kind.OBJECT_TYPE_EXTENSION) throw new import_graphql.GraphQLError(`Type "${objectTypeName}" is not an object type; cannot generate input from kind "${def.kind}"`);
349
- const objDef = def;
350
- const inputFields = objDef.fields?.map((f) => {
351
- return {
352
- kind: import_graphql.Kind.INPUT_VALUE_DEFINITION,
353
- name: f.name,
354
- description: f.description,
355
- directives: [],
356
- type: convertOutputTypeNodeToInputTypeNode(f.type, typeDefByName, inputSuffix, ensureInputForObject),
357
- defaultValue: void 0
358
- };
359
- }) ?? [];
360
- const inputDef = {
361
- kind: import_graphql.Kind.INPUT_OBJECT_TYPE_DEFINITION,
362
- name: {
363
- kind: import_graphql.Kind.NAME,
364
- value: inputName
365
- },
366
- description: objDef.description,
367
- directives: [],
368
- fields: inputFields
369
- };
370
- generated.set(inputName, inputDef);
371
- visiting.delete(objectTypeName);
372
- };
373
- ensureInputForObject(rootObjectTypeName);
374
- return Array.from(generated.values());
375
- }
376
- function convertOutputTypeNodeToInputTypeNode(typeNode, typeDefByName, inputSuffix, ensureInputForObject) {
377
- switch (typeNode.kind) {
378
- case import_graphql.Kind.NON_NULL_TYPE: return {
379
- kind: import_graphql.Kind.NON_NULL_TYPE,
380
- type: convertOutputTypeNodeToInputTypeNode(typeNode.type, typeDefByName, inputSuffix, ensureInputForObject)
381
- };
382
- case import_graphql.Kind.LIST_TYPE: return {
383
- kind: import_graphql.Kind.LIST_TYPE,
384
- type: convertOutputTypeNodeToInputTypeNode(typeNode.type, typeDefByName, inputSuffix, ensureInputForObject)
385
- };
386
- case import_graphql.Kind.NAMED_TYPE: {
387
- const named = typeNode;
388
- const name = named.name.value;
389
- const def = typeDefByName.get(name);
390
- if (def?.kind === import_graphql.Kind.OBJECT_TYPE_DEFINITION || def?.kind === import_graphql.Kind.OBJECT_TYPE_EXTENSION) {
391
- ensureInputForObject(name);
392
- return {
393
- kind: import_graphql.Kind.NAMED_TYPE,
394
- name: {
395
- kind: import_graphql.Kind.NAME,
396
- value: `${name}${inputSuffix}`
397
- }
398
- };
399
- }
400
- if (!def || def.kind === import_graphql.Kind.SCALAR_TYPE_DEFINITION || def.kind === import_graphql.Kind.ENUM_TYPE_DEFINITION || def.kind === import_graphql.Kind.INPUT_OBJECT_TYPE_DEFINITION || def.kind === import_graphql.Kind.INPUT_OBJECT_TYPE_EXTENSION) return named;
401
- if (def.kind === import_graphql.Kind.INTERFACE_TYPE_DEFINITION || def.kind === import_graphql.Kind.UNION_TYPE_DEFINITION) throw new import_graphql.GraphQLError(`Type "${name}" (${def.kind}) cannot be used in an input type`);
402
- throw new import_graphql.GraphQLError(`Unsupported named type "${name}" of kind "${def.kind}"`);
403
- }
404
- default: throw new import_graphql.GraphQLError(`Unsupported TypeNode kind: ${JSON.stringify(typeNode)}`);
405
- }
406
- }
407
- var StateValidationError = class extends Error {
408
- payload;
409
- originalMessage;
410
- constructor(payload, originalMessage) {
411
- super(payload.kind);
412
- this.name = "StateValidationError";
413
- this.payload = payload;
414
- this.originalMessage = originalMessage;
415
- Object.setPrototypeOf(this, new.target.prototype);
416
- }
417
- get kind() {
418
- return this.payload.kind;
419
- }
420
- get path() {
421
- return this.payload.path;
422
- }
423
- get field() {
424
- return this.payload.field;
425
- }
426
- };
427
- function extractInputPath(message) {
428
- const match = message.match(/at\s+"([^"]+)"/);
429
- if (!match) return [];
430
- const parts = match[1].split(".").filter(Boolean);
431
- return (parts[0] === "v" ? parts.slice(1) : parts).map((p) => /^\d+$/.test(p) ? Number(p) : p);
432
- }
433
- const RE_MISSING_REQUIRED_FIELD = /Field "([^"]+)" of required type "([^"]+)" was not provided\./;
434
- const RE_UNKNOWN_FIELD = /Field "([^"]+)" is not defined by type "([^"]+)"\.(?: Did you mean "([^"]+)"\?)?/;
435
- function extractMissingRequiredField(message) {
436
- const m = message.match(RE_MISSING_REQUIRED_FIELD);
437
- if (!m) return null;
438
- return {
439
- field: m[1],
440
- expectedType: m[2]
441
- };
442
- }
443
- function extractUnknownField(message) {
444
- const m = message.match(RE_UNKNOWN_FIELD);
445
- if (!m) return null;
446
- return {
447
- field: m[1],
448
- typeName: m[2],
449
- didYouMean: m[3]
450
- };
451
- }
452
- function lastFieldFromPath(path) {
453
- for (let i = path.length - 1; i >= 0; i--) if (typeof path[i] === "string") return path[i];
454
- }
455
- function extractExpectedType(message) {
456
- let m = message.match(/Expected non-nullable type "([^"]+)"/);
457
- if (m?.[1]) return m[1];
458
- m = message.match(/Expected type "([^"]+)"/);
459
- if (m?.[1]) return m[1];
460
- m = message.match(/;\s*([_A-Za-z][_0-9A-Za-z]*)\s+cannot represent/i);
461
- if (m?.[1]) return m[1];
462
- }
463
- function graphQLErrorsToStateValidationErrors(errors) {
464
- const out = [];
465
- for (const e of errors) {
466
- const originalMessage = e.message;
467
- const missing = extractMissingRequiredField(originalMessage);
468
- if (missing) {
469
- out.push(new StateValidationError({
470
- kind: "MISSING",
471
- path: [missing.field],
472
- field: missing.field,
473
- expectedType: missing.expectedType
474
- }, originalMessage));
475
- continue;
476
- }
477
- const unknown = extractUnknownField(originalMessage);
478
- if (unknown) {
479
- out.push(new StateValidationError({
480
- kind: "UNKNOWN_FIELD",
481
- path: [unknown.field],
482
- field: unknown.field,
483
- didYouMean: unknown.didYouMean
484
- }, originalMessage));
485
- continue;
486
- }
487
- const path = extractInputPath(originalMessage);
488
- const field = lastFieldFromPath(path) ?? "value";
489
- const expectedType = extractExpectedType(originalMessage);
490
- if (originalMessage.includes("Expected non-nullable type") && originalMessage.includes("not to be null")) {
491
- out.push(new StateValidationError({
492
- kind: "NON_NULL",
493
- path,
494
- field,
495
- expectedType
496
- }, originalMessage));
497
- continue;
498
- }
499
- if (originalMessage.includes("cannot represent") || originalMessage.includes("Expected type")) {
500
- out.push(new StateValidationError({
501
- kind: "TYPE",
502
- path,
503
- field,
504
- expectedType,
505
- details: originalMessage
506
- }, originalMessage));
507
- continue;
508
- }
509
- out.push(new StateValidationError({
510
- kind: "TYPE",
511
- path,
512
- field,
513
- details: originalMessage
514
- }, originalMessage));
515
- }
516
- return out;
517
- }
518
- /**
519
- * Finds all fields defined in the schema that are missing from the state object.
520
- * Returns information about each missing field including whether it's required.
521
- */
522
- function findMissingFields(sharedSchemaDocumentNode, rootTypeNode, value, basePath = []) {
523
- let stateObjectJson;
524
- try {
525
- stateObjectJson = typeof value === "string" ? JSON.parse(value) : value;
526
- } catch {
527
- return [];
528
- }
529
- const typeByName = indexObjectTypes(sharedSchemaDocumentNode);
530
- const missingFields = [];
531
- for (const field of rootTypeNode.fields ?? []) {
532
- const fieldName = field.name.value;
533
- const fieldPath = [...basePath, fieldName];
534
- const isRequired = field.type.kind === import_graphql.Kind.NON_NULL_TYPE;
535
- const underlyingType = isRequired ? field.type.type : field.type;
536
- if (!(fieldName in stateObjectJson)) {
537
- missingFields.push({
538
- fieldName,
539
- path: fieldPath,
540
- isRequired,
541
- type: underlyingType
542
- });
543
- continue;
544
- }
545
- const namedType = unwrapNamedType(field.type);
546
- const childType = namedType ? typeByName.get(namedType) : void 0;
547
- if (childType && typeof stateObjectJson[fieldName] === "object" && stateObjectJson[fieldName] !== null && !Array.isArray(stateObjectJson[fieldName])) {
548
- const nestedMissing = findMissingFields(sharedSchemaDocumentNode, childType, stateObjectJson[fieldName], fieldPath);
549
- missingFields.push(...nestedMissing);
550
- }
551
- }
552
- return missingFields;
553
- }
554
- /**
555
- * Detects optional fields defined in the schema that are missing from the state object.
556
- * Returns StateValidationError[] for each missing optional field.
557
- */
558
- function detectMissingOptionalFields(sharedSchemaDocumentNode, rootTypeNode, value) {
559
- return findMissingFields(sharedSchemaDocumentNode, rootTypeNode, value).filter((field) => !field.isRequired).map((field) => new StateValidationError({
560
- kind: "MISSING_OPTIONAL",
561
- path: field.path,
562
- field: field.fieldName,
563
- expectedType: typeNodeToString(field.type)
564
- }));
565
- }
566
- /**
567
- * Detects fields that have recursive types (types that reference themselves directly or indirectly).
568
- * Returns a RECURSIVE_TYPE error for each field that contains a recursive type.
569
- */
570
- function detectRecursiveTypes(stateTypeDefinitionNode, typeDefByName) {
571
- const errors = [];
572
- for (const field of stateTypeDefinitionNode.fields ?? []) {
573
- const fieldName = field.name.value;
574
- const namedTypeName = getNamedTypeName(field.type);
575
- if (!namedTypeName) continue;
576
- if (isRecursiveType(namedTypeName, typeDefByName, /* @__PURE__ */ new Set())) errors.push(new StateValidationError({
577
- kind: "RECURSIVE_TYPE",
578
- path: [fieldName],
579
- field: fieldName,
580
- typeName: namedTypeName
581
- }));
582
- }
583
- return errors;
584
- }
585
- /**
586
- * Gets the named type name from a TypeNode, unwrapping NonNull and List types.
587
- */
588
- function getNamedTypeName(typeNode) {
589
- if (typeNode.kind === import_graphql.Kind.NAMED_TYPE) return typeNode.name.value;
590
- if (typeNode.kind === import_graphql.Kind.NON_NULL_TYPE || typeNode.kind === import_graphql.Kind.LIST_TYPE) return getNamedTypeName(typeNode.type);
591
- return null;
592
- }
593
- /**
594
- * Checks if a type is recursive (references itself directly or indirectly through required fields).
595
- */
596
- function isRecursiveType(typeName, typeDefByName, visitedTypes) {
597
- if (visitedTypes.has(typeName)) return true;
598
- const typeDef = typeDefByName.get(typeName);
599
- if (!typeDef || typeDef.kind !== import_graphql.Kind.OBJECT_TYPE_DEFINITION) return false;
600
- visitedTypes.add(typeName);
601
- for (const field of typeDef.fields ?? []) {
602
- if (field.type.kind !== import_graphql.Kind.NON_NULL_TYPE) continue;
603
- const innerType = field.type.type;
604
- let fieldTypeName = null;
605
- if (innerType.kind === import_graphql.Kind.NAMED_TYPE) fieldTypeName = innerType.name.value;
606
- else if (innerType.kind === import_graphql.Kind.LIST_TYPE) fieldTypeName = getNamedTypeName(innerType);
607
- if (fieldTypeName && isRecursiveType(fieldTypeName, typeDefByName, visitedTypes)) return true;
608
- }
609
- visitedTypes.delete(typeName);
610
- return false;
611
- }
612
- /**
613
- * Converts a TypeNode to its string representation (e.g., "String", "Int!", "[String]!")
614
- */
615
- function typeNodeToString(typeNode) {
616
- switch (typeNode.kind) {
617
- case import_graphql.Kind.NAMED_TYPE: return typeNode.name.value;
618
- case import_graphql.Kind.NON_NULL_TYPE: return `${typeNodeToString(typeNode.type)}!`;
619
- case import_graphql.Kind.LIST_TYPE: return `[${typeNodeToString(typeNode.type)}]`;
620
- }
621
- }
622
- function indexObjectTypes(doc) {
623
- const map = /* @__PURE__ */ new Map();
624
- for (const def of doc.definitions) if (def.kind === import_graphql.Kind.OBJECT_TYPE_DEFINITION) map.set(def.name.value, def);
625
- return map;
626
- }
627
- function unwrapNamedType(typeNode) {
628
- if (typeNode.kind === import_graphql.Kind.NAMED_TYPE) return typeNode.name.value;
629
- if (typeNode.kind === import_graphql.Kind.NON_NULL_TYPE) return unwrapNamedType(typeNode.type);
630
- if (typeNode.kind === import_graphql.Kind.LIST_TYPE) return unwrapNamedType(typeNode.type);
631
- }
632
- //#endregion
633
- //#region editors/document-model-editor/utils/linting.ts
634
- function ensureDocumentContainsNodeWithNameAndType(doc, nodeName, nodeType) {
635
- const parsedDoc = safeParseSdl(doc);
636
- if (!parsedDoc) return true;
637
- return parsedDoc.definitions.some((def) => {
638
- return def.kind === import_graphql.Kind[nodeType] && "name" in def && def.name?.value === nodeName;
639
- });
640
- }
641
- function createNodeTypeAndNameDiagnostic(doc, errorMessage) {
642
- const parsedDoc = safeParseSdl(doc);
643
- if (!parsedDoc) return void 0;
644
- const firstNode = parsedDoc.definitions[0];
645
- const nameNode = "name" in firstNode ? firstNode.name : null;
646
- return {
647
- from: nameNode?.loc?.start ?? firstNode.loc?.start ?? 0,
648
- to: nameNode?.loc?.end ?? firstNode.loc?.end ?? 0,
649
- severity: "error",
650
- message: errorMessage
651
- };
652
- }
653
- function ensureValidStateSchemaName(doc, modelName, scope) {
654
- if (!safeParseSdl(doc)) return [];
655
- const requiredTypeName = makeStateSchemaNameForScope(modelName, scope);
656
- if (!ensureDocumentContainsNodeWithNameAndType(doc, requiredTypeName, "OBJECT_TYPE_DEFINITION")) return [createNodeTypeAndNameDiagnostic(doc, `${sentenceCase(scope)} state schema must be named ${requiredTypeName}`)].filter((d) => d !== void 0);
657
- return [];
658
- }
659
- function ensureValidOperationSchemaInputName(doc, operationName) {
660
- if (!doc || !safeParseSdl(doc)) return [];
661
- const requiredTypeName = `${pascalCase(operationName)}Input`;
662
- if (!ensureDocumentContainsNodeWithNameAndType(doc, requiredTypeName, "INPUT_OBJECT_TYPE_DEFINITION")) return [createNodeTypeAndNameDiagnostic(doc, `Operation schema must contain an input type named ${requiredTypeName}`)].filter((d) => d !== void 0);
663
- return [];
664
- }
665
- //#endregion
666
- //#region editors/document-model-editor/components/button.tsx
667
- const Button = forwardRef((props, ref) => {
668
- const { className, ...rest } = props;
669
- return /* @__PURE__ */ jsx("button", {
670
- ref,
671
- ...rest,
672
- className: twMerge("h-10 rounded-md border border-border bg-background px-4 py-2 text-sm font-medium whitespace-nowrap text-foreground transition-colors hover:hover-effect focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:disabled-effect", className)
673
- });
674
- });
675
- //#endregion
676
- export { compareStringsWithoutWhitespace as a, isEmptyOperationSchema as c, makeMinimalObjectForStateType as d, makeOperationInitialDoc as f, validateStateObject as h, StateValidationError as i, makeEmptyOperationSchema as l, renameSchemaType as m, ensureValidOperationSchemaInputName as n, handleModelNameChange as o, makeStateSchemaNameForScope as p, ensureValidStateSchemaName as r, initializeModelSchema as s, Button as t, makeInitialSchemaDoc as u };
677
-
678
- //# sourceMappingURL=button-Da7CxMn7.mjs.map