@salesforce/graphiti 10.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENT_GUIDE.md +424 -0
- package/CHANGELOG.md +448 -0
- package/LICENSE.txt +82 -0
- package/README.md +204 -0
- package/TASK.md +249 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.js +683 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/args.d.ts +13 -0
- package/dist/commands/args.js +207 -0
- package/dist/commands/args.js.map +1 -0
- package/dist/commands/build.d.ts +11 -0
- package/dist/commands/build.js +209 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/connect.d.ts +8 -0
- package/dist/commands/connect.js +55 -0
- package/dist/commands/connect.js.map +1 -0
- package/dist/commands/describe.d.ts +6 -0
- package/dist/commands/describe.js +229 -0
- package/dist/commands/describe.js.map +1 -0
- package/dist/commands/meta.d.ts +9 -0
- package/dist/commands/meta.js +140 -0
- package/dist/commands/meta.js.map +1 -0
- package/dist/commands/navigate.d.ts +14 -0
- package/dist/commands/navigate.js +105 -0
- package/dist/commands/navigate.js.map +1 -0
- package/dist/commands/query-helpers.d.ts +80 -0
- package/dist/commands/query-helpers.js +865 -0
- package/dist/commands/query-helpers.js.map +1 -0
- package/dist/commands/query.d.ts +26 -0
- package/dist/commands/query.js +901 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/review.d.ts +18 -0
- package/dist/commands/review.js +533 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/session-mgmt.d.ts +25 -0
- package/dist/commands/session-mgmt.js +206 -0
- package/dist/commands/session-mgmt.js.map +1 -0
- package/dist/commands/type.d.ts +6 -0
- package/dist/commands/type.js +342 -0
- package/dist/commands/type.js.map +1 -0
- package/dist/commands/validate-input.d.ts +6 -0
- package/dist/commands/validate-input.js +32 -0
- package/dist/commands/validate-input.js.map +1 -0
- package/dist/intent/build-aggregate.d.ts +33 -0
- package/dist/intent/build-aggregate.js +134 -0
- package/dist/intent/build-aggregate.js.map +1 -0
- package/dist/intent/build-create.d.ts +14 -0
- package/dist/intent/build-create.js +16 -0
- package/dist/intent/build-create.js.map +1 -0
- package/dist/intent/build-delete.d.ts +30 -0
- package/dist/intent/build-delete.js +53 -0
- package/dist/intent/build-delete.js.map +1 -0
- package/dist/intent/build-detail.d.ts +32 -0
- package/dist/intent/build-detail.js +80 -0
- package/dist/intent/build-detail.js.map +1 -0
- package/dist/intent/build-discover.d.ts +30 -0
- package/dist/intent/build-discover.js +149 -0
- package/dist/intent/build-discover.js.map +1 -0
- package/dist/intent/build-list.d.ts +28 -0
- package/dist/intent/build-list.js +75 -0
- package/dist/intent/build-list.js.map +1 -0
- package/dist/intent/build-mutation.d.ts +23 -0
- package/dist/intent/build-mutation.js +54 -0
- package/dist/intent/build-mutation.js.map +1 -0
- package/dist/intent/build-output.d.ts +27 -0
- package/dist/intent/build-output.js +60 -0
- package/dist/intent/build-output.js.map +1 -0
- package/dist/intent/build-raw.d.ts +23 -0
- package/dist/intent/build-raw.js +54 -0
- package/dist/intent/build-raw.js.map +1 -0
- package/dist/intent/build-update.d.ts +14 -0
- package/dist/intent/build-update.js +16 -0
- package/dist/intent/build-update.js.map +1 -0
- package/dist/intent/get-schema-with-priming.d.ts +26 -0
- package/dist/intent/get-schema-with-priming.js +32 -0
- package/dist/intent/get-schema-with-priming.js.map +1 -0
- package/dist/intent/select-child-relationship.d.ts +19 -0
- package/dist/intent/select-child-relationship.js +38 -0
- package/dist/intent/select-child-relationship.js.map +1 -0
- package/dist/intent/types.d.ts +159 -0
- package/dist/intent/types.js +21 -0
- package/dist/intent/types.js.map +1 -0
- package/dist/lib/apply-command.d.ts +15 -0
- package/dist/lib/apply-command.js +238 -0
- package/dist/lib/apply-command.js.map +1 -0
- package/dist/lib/auth.d.ts +38 -0
- package/dist/lib/auth.js +113 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/codegen.d.ts +32 -0
- package/dist/lib/codegen.js +700 -0
- package/dist/lib/codegen.js.map +1 -0
- package/dist/lib/command-registry.d.ts +59 -0
- package/dist/lib/command-registry.js +366 -0
- package/dist/lib/command-registry.js.map +1 -0
- package/dist/lib/formatter.d.ts +76 -0
- package/dist/lib/formatter.js +419 -0
- package/dist/lib/formatter.js.map +1 -0
- package/dist/lib/fs-utils.d.ts +23 -0
- package/dist/lib/fs-utils.js +46 -0
- package/dist/lib/fs-utils.js.map +1 -0
- package/dist/lib/graphql-name.d.ts +27 -0
- package/dist/lib/graphql-name.js +32 -0
- package/dist/lib/graphql-name.js.map +1 -0
- package/dist/lib/interactive.d.ts +6 -0
- package/dist/lib/interactive.js +562 -0
- package/dist/lib/interactive.js.map +1 -0
- package/dist/lib/introspect.d.ts +40 -0
- package/dist/lib/introspect.js +280 -0
- package/dist/lib/introspect.js.map +1 -0
- package/dist/lib/object-info.d.ts +79 -0
- package/dist/lib/object-info.js +313 -0
- package/dist/lib/object-info.js.map +1 -0
- package/dist/lib/path-selection.d.ts +50 -0
- package/dist/lib/path-selection.js +146 -0
- package/dist/lib/path-selection.js.map +1 -0
- package/dist/lib/prime-schema.d.ts +59 -0
- package/dist/lib/prime-schema.js +158 -0
- package/dist/lib/prime-schema.js.map +1 -0
- package/dist/lib/query-builder.d.ts +10 -0
- package/dist/lib/query-builder.js +168 -0
- package/dist/lib/query-builder.js.map +1 -0
- package/dist/lib/query-commands.d.ts +19 -0
- package/dist/lib/query-commands.js +262 -0
- package/dist/lib/query-commands.js.map +1 -0
- package/dist/lib/session.d.ts +205 -0
- package/dist/lib/session.js +1075 -0
- package/dist/lib/session.js.map +1 -0
- package/dist/lib/tokenize.d.ts +12 -0
- package/dist/lib/tokenize.js +48 -0
- package/dist/lib/tokenize.js.map +1 -0
- package/dist/lib/uiapi.d.ts +109 -0
- package/dist/lib/uiapi.js +159 -0
- package/dist/lib/uiapi.js.map +1 -0
- package/dist/lib/validator.d.ts +27 -0
- package/dist/lib/validator.js +100 -0
- package/dist/lib/validator.js.map +1 -0
- package/dist/lib/variable-promotion.d.ts +69 -0
- package/dist/lib/variable-promotion.js +95 -0
- package/dist/lib/variable-promotion.js.map +1 -0
- package/dist/lib/walker.d.ts +147 -0
- package/dist/lib/walker.js +723 -0
- package/dist/lib/walker.js.map +1 -0
- package/dist/mcp/server.d.ts +7 -0
- package/dist/mcp/server.js +34 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/stdio.d.ts +7 -0
- package/dist/mcp/stdio.js +25 -0
- package/dist/mcp/stdio.js.map +1 -0
- package/dist/mcp/tools/echo.d.ts +7 -0
- package/dist/mcp/tools/echo.js +17 -0
- package/dist/mcp/tools/echo.js.map +1 -0
- package/dist/mcp/tools/sf-gql-aggregate.d.ts +11 -0
- package/dist/mcp/tools/sf-gql-aggregate.js +75 -0
- package/dist/mcp/tools/sf-gql-aggregate.js.map +1 -0
- package/dist/mcp/tools/sf-gql-create.d.ts +11 -0
- package/dist/mcp/tools/sf-gql-create.js +35 -0
- package/dist/mcp/tools/sf-gql-create.js.map +1 -0
- package/dist/mcp/tools/sf-gql-delete.d.ts +11 -0
- package/dist/mcp/tools/sf-gql-delete.js +31 -0
- package/dist/mcp/tools/sf-gql-delete.js.map +1 -0
- package/dist/mcp/tools/sf-gql-detail.d.ts +11 -0
- package/dist/mcp/tools/sf-gql-detail.js +58 -0
- package/dist/mcp/tools/sf-gql-detail.js.map +1 -0
- package/dist/mcp/tools/sf-gql-discover.d.ts +9 -0
- package/dist/mcp/tools/sf-gql-discover.js +51 -0
- package/dist/mcp/tools/sf-gql-discover.js.map +1 -0
- package/dist/mcp/tools/sf-gql-list.d.ts +11 -0
- package/dist/mcp/tools/sf-gql-list.js +53 -0
- package/dist/mcp/tools/sf-gql-list.js.map +1 -0
- package/dist/mcp/tools/sf-gql-raw.d.ts +11 -0
- package/dist/mcp/tools/sf-gql-raw.js +39 -0
- package/dist/mcp/tools/sf-gql-raw.js.map +1 -0
- package/dist/mcp/tools/sf-gql-update.d.ts +11 -0
- package/dist/mcp/tools/sf-gql-update.js +35 -0
- package/dist/mcp/tools/sf-gql-update.js.map +1 -0
- package/dist/mcp/tools/shared/zod-schemas.d.ts +49 -0
- package/dist/mcp/tools/shared/zod-schemas.js +46 -0
- package/dist/mcp/tools/shared/zod-schemas.js.map +1 -0
- package/package.json +36 -0
- package/ralph-loop.sh +120 -0
- package/scripts/smoke-orderby.sh +190 -0
- package/src/__tests__/helpers/prime-deps.ts +46 -0
- package/src/__tests__/helpers/schema.ts +73 -0
- package/src/__tests__/helpers/stdout.ts +33 -0
- package/src/__tests__/setup.ts +19 -0
- package/src/cli.ts +764 -0
- package/src/commands/__tests__/query.spec.ts +137 -0
- package/src/commands/args.ts +306 -0
- package/src/commands/build.ts +288 -0
- package/src/commands/connect.ts +60 -0
- package/src/commands/describe.ts +246 -0
- package/src/commands/meta.ts +171 -0
- package/src/commands/navigate.ts +134 -0
- package/src/commands/query-helpers.ts +1202 -0
- package/src/commands/query.ts +1085 -0
- package/src/commands/review.ts +670 -0
- package/src/commands/session-mgmt.ts +256 -0
- package/src/commands/type.ts +437 -0
- package/src/commands/validate-input.ts +38 -0
- package/src/intent/__tests__/build-aggregate.spec.ts +931 -0
- package/src/intent/__tests__/build-create-validation.spec.ts +135 -0
- package/src/intent/__tests__/build-delete.spec.ts +121 -0
- package/src/intent/__tests__/build-detail.spec.ts +333 -0
- package/src/intent/__tests__/build-discover.spec.ts +432 -0
- package/src/intent/__tests__/build-list.spec.ts +284 -0
- package/src/intent/__tests__/build-mutation.spec.ts +108 -0
- package/src/intent/__tests__/build-output.spec.ts +55 -0
- package/src/intent/__tests__/build-raw.spec.ts +153 -0
- package/src/intent/__tests__/build-update-validation.spec.ts +134 -0
- package/src/intent/build-aggregate.ts +182 -0
- package/src/intent/build-create.ts +19 -0
- package/src/intent/build-delete.ts +62 -0
- package/src/intent/build-detail.ts +95 -0
- package/src/intent/build-discover.ts +199 -0
- package/src/intent/build-list.ts +91 -0
- package/src/intent/build-mutation.ts +75 -0
- package/src/intent/build-output.ts +72 -0
- package/src/intent/build-raw.ts +61 -0
- package/src/intent/build-update.ts +19 -0
- package/src/intent/get-schema-with-priming.ts +43 -0
- package/src/intent/select-child-relationship.ts +48 -0
- package/src/intent/types.ts +181 -0
- package/src/lib/__tests__/apply-command.parity.spec.ts +97 -0
- package/src/lib/__tests__/apply-command.spec.ts +171 -0
- package/src/lib/__tests__/auth.spec.ts +292 -0
- package/src/lib/__tests__/formatter.spec.ts +86 -0
- package/src/lib/__tests__/graphql-name.spec.ts +64 -0
- package/src/lib/__tests__/introspect.spec.ts +399 -0
- package/src/lib/__tests__/object-info.spec.ts +124 -0
- package/src/lib/__tests__/path-selection.spec.ts +219 -0
- package/src/lib/__tests__/prime-schema.spec.ts +269 -0
- package/src/lib/__tests__/query-builder.spec.ts +95 -0
- package/src/lib/__tests__/query-commands.spec.ts +74 -0
- package/src/lib/__tests__/session.spec.ts +292 -0
- package/src/lib/__tests__/tokenize.spec.ts +33 -0
- package/src/lib/__tests__/uiapi.spec.ts +192 -0
- package/src/lib/__tests__/variable-promotion.spec.ts +211 -0
- package/src/lib/__tests__/walker.spec.ts +250 -0
- package/src/lib/apply-command.ts +286 -0
- package/src/lib/auth.ts +157 -0
- package/src/lib/codegen.ts +899 -0
- package/src/lib/command-registry.ts +434 -0
- package/src/lib/formatter.ts +587 -0
- package/src/lib/fs-utils.ts +46 -0
- package/src/lib/graphql-name.ts +35 -0
- package/src/lib/interactive.ts +634 -0
- package/src/lib/introspect.ts +320 -0
- package/src/lib/object-info.ts +409 -0
- package/src/lib/path-selection.ts +162 -0
- package/src/lib/prime-schema.ts +195 -0
- package/src/lib/query-builder.ts +193 -0
- package/src/lib/query-commands.ts +290 -0
- package/src/lib/session.ts +1304 -0
- package/src/lib/tokenize.ts +43 -0
- package/src/lib/uiapi.ts +176 -0
- package/src/lib/validator.ts +143 -0
- package/src/lib/variable-promotion.ts +145 -0
- package/src/lib/walker.ts +975 -0
- package/src/mcp/__tests__/server.spec.ts +155 -0
- package/src/mcp/server.ts +38 -0
- package/src/mcp/stdio.ts +29 -0
- package/src/mcp/tools/__tests__/sf-gql-aggregate.spec.ts +173 -0
- package/src/mcp/tools/__tests__/sf-gql-create.spec.ts +235 -0
- package/src/mcp/tools/__tests__/sf-gql-delete.spec.ts +194 -0
- package/src/mcp/tools/__tests__/sf-gql-detail.spec.ts +246 -0
- package/src/mcp/tools/__tests__/sf-gql-discover.spec.ts +320 -0
- package/src/mcp/tools/__tests__/sf-gql-list.spec.ts +128 -0
- package/src/mcp/tools/__tests__/sf-gql-raw.spec.ts +141 -0
- package/src/mcp/tools/__tests__/sf-gql-update.spec.ts +207 -0
- package/src/mcp/tools/echo.ts +24 -0
- package/src/mcp/tools/sf-gql-aggregate.ts +102 -0
- package/src/mcp/tools/sf-gql-create.ts +55 -0
- package/src/mcp/tools/sf-gql-delete.ts +49 -0
- package/src/mcp/tools/sf-gql-detail.ts +85 -0
- package/src/mcp/tools/sf-gql-discover.ts +67 -0
- package/src/mcp/tools/sf-gql-list.ts +73 -0
- package/src/mcp/tools/sf-gql-raw.ts +56 -0
- package/src/mcp/tools/sf-gql-update.ts +55 -0
- package/src/mcp/tools/shared/zod-schemas.ts +55 -0
- package/tsconfig.json +18 -0
- package/vitest.config.ts +14 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026, Salesforce, Inc.,
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
* For full license text, see the LICENSE.txt file
|
|
5
|
+
*/
|
|
6
|
+
import { addVariable } from "./session.js";
|
|
7
|
+
import { inferTypeFromArgsPath } from "../commands/query-helpers.js";
|
|
8
|
+
const VAR_PLACEHOLDER_RE = /^\$([A-Za-z_][\w]*)$/;
|
|
9
|
+
/**
|
|
10
|
+
* Recursively walks `value` looking for `$varName` string leaves. For
|
|
11
|
+
* each one, infers the GraphQL type at that input path via
|
|
12
|
+
* `inferTypeFromArgsPath` and calls `addVariable(session, name, type)`.
|
|
13
|
+
* Promoted variables strip a trailing `!` (query variables are
|
|
14
|
+
* nullable by convention; callers requiring NonNull use the `var`
|
|
15
|
+
* command directly).
|
|
16
|
+
*
|
|
17
|
+
* If type inference throws — for example because the input path
|
|
18
|
+
* doesn't exist on the schema — the helper falls back to `String`
|
|
19
|
+
* rather than failing the whole render. A wrong-type variable is
|
|
20
|
+
* easier for a user to debug than a hard error before they see their
|
|
21
|
+
* query.
|
|
22
|
+
*
|
|
23
|
+
* @param session Session to add variables to.
|
|
24
|
+
* @param schema The loaded GraphQL schema.
|
|
25
|
+
* @param fieldSchemaPath Path of the field whose argument we are
|
|
26
|
+
* promoting against (e.g. `["uiapi", "query",
|
|
27
|
+
* "Account"]`).
|
|
28
|
+
* @param argName The argument name (`"where"`, `"orderBy"`,
|
|
29
|
+
* `"scope"`).
|
|
30
|
+
* @param value The argument value — can be a primitive,
|
|
31
|
+
* array, or nested object.
|
|
32
|
+
* @param warnings Optional warnings sink. Strings starting with
|
|
33
|
+
* `$` that don't form a valid GraphQL Name
|
|
34
|
+
* (e.g. `$1var`, `$foo-bar`) push a warning
|
|
35
|
+
* here so callers see the typo instead of
|
|
36
|
+
* silently rendering the literal.
|
|
37
|
+
*/
|
|
38
|
+
export function promoteVariables(session, schema, fieldSchemaPath, argName, value, warnings) {
|
|
39
|
+
walk(session, schema, fieldSchemaPath, argName, value, [], warnings);
|
|
40
|
+
}
|
|
41
|
+
function walk(session, schema, fieldSchemaPath, argName, value, pathInsideArg, warnings) {
|
|
42
|
+
if (typeof value === "string") {
|
|
43
|
+
const m = VAR_PLACEHOLDER_RE.exec(value);
|
|
44
|
+
if (!m || !m[1]) {
|
|
45
|
+
if (value.startsWith("$") && warnings) {
|
|
46
|
+
const argPath = [argName, ...pathInsideArg].join(".");
|
|
47
|
+
warnings.push(`Variable: '${value}' at '${argPath}' starts with '$' but is not a valid variable placeholder; rendered as a literal string. Variable names must match /^[A-Za-z_][A-Za-z0-9_]*$/.`);
|
|
48
|
+
}
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const varName = m[1];
|
|
52
|
+
try {
|
|
53
|
+
const { inferredType } = inferTypeFromArgsPath(schema, session.operation, fieldSchemaPath, [
|
|
54
|
+
argName,
|
|
55
|
+
...pathInsideArg,
|
|
56
|
+
]);
|
|
57
|
+
const declared = inferredType.endsWith("!") ? inferredType.slice(0, -1) : inferredType;
|
|
58
|
+
addVariable(session, varName, declared);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
addVariable(session, varName, "String");
|
|
62
|
+
}
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (Array.isArray(value)) {
|
|
66
|
+
for (let i = 0; i < value.length; i++) {
|
|
67
|
+
walk(session, schema, fieldSchemaPath, argName, value[i], [...pathInsideArg, String(i)], warnings);
|
|
68
|
+
}
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (value && typeof value === "object") {
|
|
72
|
+
for (const [k, v] of Object.entries(value)) {
|
|
73
|
+
walk(session, schema, fieldSchemaPath, argName, v, [...pathInsideArg, k], warnings);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Collapses an array-shaped orderBy input to its first element, so
|
|
79
|
+
* callers can pass either shape without knowing Salesforce's
|
|
80
|
+
* connection-field schema requires a singleton `<Object>_OrderBy`.
|
|
81
|
+
*
|
|
82
|
+
* - `[{Name: "ASC"}, ...]` → `{Name: "ASC"}`
|
|
83
|
+
* - `[]` → `undefined`
|
|
84
|
+
* - `{Name: "ASC"}` → unchanged
|
|
85
|
+
* - `undefined` → `undefined`
|
|
86
|
+
*/
|
|
87
|
+
export function normalizeOrderBy(orderBy) {
|
|
88
|
+
if (orderBy === undefined)
|
|
89
|
+
return undefined;
|
|
90
|
+
if (Array.isArray(orderBy)) {
|
|
91
|
+
return orderBy.length > 0 ? orderBy[0] : undefined;
|
|
92
|
+
}
|
|
93
|
+
return orderBy;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=variable-promotion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variable-promotion.js","sourceRoot":"","sources":["../../src/lib/variable-promotion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026, Salesforce, Inc.,
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
* For full license text, see the LICENSE.txt file
|
|
5
|
+
*/
|
|
6
|
+
import { type GraphQLSchema, type GraphQLNamedType, type GraphQLOutputType } from "graphql";
|
|
7
|
+
import { type OperationType } from "./session.js";
|
|
8
|
+
export declare class MutationContextError extends Error {
|
|
9
|
+
constructor(message: string);
|
|
10
|
+
}
|
|
11
|
+
export declare function getSchema(instanceUrl: string): GraphQLSchema;
|
|
12
|
+
export declare function clearSchemaCache(instanceUrl?: string): void;
|
|
13
|
+
export declare function primeSchemaCache(alias: string, schema: GraphQLSchema): void;
|
|
14
|
+
export interface FieldInfo {
|
|
15
|
+
name: string;
|
|
16
|
+
typeName: string;
|
|
17
|
+
typeKind: TypeInfo["kind"];
|
|
18
|
+
isNonNull: boolean;
|
|
19
|
+
isList: boolean;
|
|
20
|
+
description: string | null;
|
|
21
|
+
args: ArgInfo[];
|
|
22
|
+
}
|
|
23
|
+
export interface ArgInfo {
|
|
24
|
+
name: string;
|
|
25
|
+
typeName: string;
|
|
26
|
+
typeKind: string;
|
|
27
|
+
isNonNull: boolean;
|
|
28
|
+
description: string | null;
|
|
29
|
+
defaultValue: string | undefined;
|
|
30
|
+
enumValues?: string[];
|
|
31
|
+
}
|
|
32
|
+
export interface TypeInfo {
|
|
33
|
+
name: string;
|
|
34
|
+
kind: "OBJECT" | "INPUT_OBJECT" | "ENUM" | "UNION" | "INTERFACE" | "SCALAR";
|
|
35
|
+
description: string | null;
|
|
36
|
+
fields: FieldInfo[];
|
|
37
|
+
inputFields: InputFieldInfo[];
|
|
38
|
+
enumValues: EnumValueInfo[];
|
|
39
|
+
possibleTypes: string[];
|
|
40
|
+
interfaces: string[];
|
|
41
|
+
}
|
|
42
|
+
export interface InputFieldInfo {
|
|
43
|
+
name: string;
|
|
44
|
+
typeName: string;
|
|
45
|
+
typeKind: string;
|
|
46
|
+
isNonNull: boolean;
|
|
47
|
+
description: string | null;
|
|
48
|
+
defaultValue: string | undefined;
|
|
49
|
+
enumValues?: string[];
|
|
50
|
+
}
|
|
51
|
+
export interface EnumValueInfo {
|
|
52
|
+
name: string;
|
|
53
|
+
description: string | null;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Returns true for Salesforce Data Cloud (Data Lake Model) objects.
|
|
57
|
+
* These have names ending in `__dlm` (e.g. `ssot__Account__dlm`).
|
|
58
|
+
*/
|
|
59
|
+
export declare function isDataCloudField(field: FieldInfo): boolean;
|
|
60
|
+
export declare function filterDataCloudFields(fields: FieldInfo[], includeDataCloud: boolean): FieldInfo[];
|
|
61
|
+
export declare function getTypeKind(type: GraphQLNamedType): TypeInfo["kind"];
|
|
62
|
+
export interface WalkerResult {
|
|
63
|
+
type: GraphQLNamedType;
|
|
64
|
+
typeName: string;
|
|
65
|
+
kind: TypeInfo["kind"];
|
|
66
|
+
fields: FieldInfo[];
|
|
67
|
+
args: ArgInfo[];
|
|
68
|
+
possibleTypes: string[];
|
|
69
|
+
isLeaf: boolean;
|
|
70
|
+
/** True when inside a mutation result record type where only scalar/value fields are selectable. */
|
|
71
|
+
inMutationRecord: boolean;
|
|
72
|
+
/** Relationship fields hidden from selection in mutation results (shown as [query-only] in ls -l). */
|
|
73
|
+
mutationHiddenFields: FieldInfo[];
|
|
74
|
+
}
|
|
75
|
+
export declare function getRootType(schema: GraphQLSchema, operation: OperationType): GraphQLNamedType;
|
|
76
|
+
export declare function getRootFields(schema: GraphQLSchema, operation: OperationType): FieldInfo[];
|
|
77
|
+
/**
|
|
78
|
+
* Walks the schema graph along a path and returns what's available at the end.
|
|
79
|
+
* Handles regular fields, inline fragment segments [TypeName], and resolves
|
|
80
|
+
* through NonNull/List wrappers.
|
|
81
|
+
*
|
|
82
|
+
* Returns the args of the *last* field in the path (not the terminal type's fields' args).
|
|
83
|
+
*/
|
|
84
|
+
export declare function resolvePath(schema: GraphQLSchema, operation: OperationType, pathSegments: string[]): WalkerResult;
|
|
85
|
+
/**
|
|
86
|
+
* Given a parent path + field name, resolves the field's schema info.
|
|
87
|
+
* Used to determine whether a field returns an object type (needs sub-selections)
|
|
88
|
+
* or is a leaf.
|
|
89
|
+
*/
|
|
90
|
+
export declare function resolveFieldOnPath(schema: GraphQLSchema, operation: OperationType, parentPath: string[], fieldName: string): WalkerResult;
|
|
91
|
+
export declare function getFragmentTargets(schema: GraphQLSchema, type: GraphQLNamedType): string[];
|
|
92
|
+
export declare function inspectType(schema: GraphQLSchema, typeName: string): TypeInfo;
|
|
93
|
+
export interface InputWalkerResult {
|
|
94
|
+
type: GraphQLNamedType;
|
|
95
|
+
typeName: string;
|
|
96
|
+
kind: TypeInfo["kind"];
|
|
97
|
+
inputFields: InputFieldInfo[];
|
|
98
|
+
enumValues: EnumValueInfo[];
|
|
99
|
+
isLeaf: boolean;
|
|
100
|
+
isList: boolean;
|
|
101
|
+
isNonNull: boolean;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Walks an INPUT_OBJECT type structure along a path.
|
|
105
|
+
* Numeric segments index into list types (unwrapping [T] → T).
|
|
106
|
+
* Returns info about the terminal type: its input fields if navigable,
|
|
107
|
+
* or isLeaf:true for SCALAR/ENUM.
|
|
108
|
+
*/
|
|
109
|
+
export declare function resolveInputPath(schema: GraphQLSchema, inputTypeName: string, pathSegments: string[]): InputWalkerResult;
|
|
110
|
+
/**
|
|
111
|
+
* Resolves a single argument by name from a WalkerResult and returns
|
|
112
|
+
* its type info for navigation into @args/.
|
|
113
|
+
*/
|
|
114
|
+
export declare function resolveArgByName(schema: GraphQLSchema, walkerResult: WalkerResult, argName: string): {
|
|
115
|
+
typeName: string;
|
|
116
|
+
isNonNull: boolean;
|
|
117
|
+
isList: boolean;
|
|
118
|
+
typeKind: string;
|
|
119
|
+
};
|
|
120
|
+
export declare function getRawFieldType(schema: GraphQLSchema, operation: OperationType, parentPath: string[], fieldName: string): GraphQLOutputType | null;
|
|
121
|
+
export declare function getFieldDescription(schema: GraphQLSchema, operation: OperationType, parentPath: string[], fieldName: string): string | null;
|
|
122
|
+
export interface SearchResult {
|
|
123
|
+
typeName: string;
|
|
124
|
+
kind: string;
|
|
125
|
+
fieldName?: string;
|
|
126
|
+
fieldType?: string;
|
|
127
|
+
description?: string | null;
|
|
128
|
+
}
|
|
129
|
+
export interface SearchMatcher {
|
|
130
|
+
test(input: string): boolean;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Builds a SearchMatcher from a plain-text search string.
|
|
134
|
+
*
|
|
135
|
+
* The pattern is split by whitespace into terms. Each term is
|
|
136
|
+
* prefix-matched (case-insensitive) against CamelCase word segments
|
|
137
|
+
* of the field name. "Id" matches "AccountId" but not "Hide".
|
|
138
|
+
*/
|
|
139
|
+
export declare function parseSearchTerms(pattern: string): SearchMatcher;
|
|
140
|
+
/**
|
|
141
|
+
* Builds a SearchMatcher from a regex pattern string.
|
|
142
|
+
*
|
|
143
|
+
* Supports `/pattern/flags` syntax for explicit flags.
|
|
144
|
+
* Without delimiters, defaults to case-insensitive matching.
|
|
145
|
+
*/
|
|
146
|
+
export declare function parseSearchRegex(pattern: string): SearchMatcher;
|
|
147
|
+
export declare function searchSchema(schema: GraphQLSchema, pattern: string, maxResults?: number): SearchResult[];
|