@executor-js/plugin-graphql 1.5.12 → 1.5.14
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/dist/{AddGraphqlSource-WVFRGZGF.js → AddGraphqlSource-B7ZOZ7WM.js} +2 -2
- package/dist/{GraphqlAccountsPanel-2O7QVW2F.js → GraphqlAccountsPanel-QGBVXP2A.js} +2 -2
- package/dist/{chunk-D6E4WAYW.js → chunk-QVJ2HNNZ.js} +2 -2
- package/dist/chunk-QVJ2HNNZ.js.map +1 -0
- package/dist/{chunk-YH4WFUKM.js → chunk-VSLIDDNK.js} +4 -2
- package/dist/chunk-VSLIDDNK.js.map +1 -0
- package/dist/{chunk-XFH7IECG.js → chunk-W4ARRR5Q.js} +2 -2
- package/dist/client.js +3 -3
- package/dist/core.js +2 -2
- package/dist/index.js +2 -2
- package/package.json +3 -3
- package/dist/chunk-D6E4WAYW.js.map +0 -1
- package/dist/chunk-YH4WFUKM.js.map +0 -1
- /package/dist/{AddGraphqlSource-WVFRGZGF.js.map → AddGraphqlSource-B7ZOZ7WM.js.map} +0 -0
- /package/dist/{GraphqlAccountsPanel-2O7QVW2F.js.map → GraphqlAccountsPanel-QGBVXP2A.js.map} +0 -0
- /package/dist/{chunk-XFH7IECG.js.map → chunk-W4ARRR5Q.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
addGraphqlIntegrationOptimistic,
|
|
3
3
|
graphqlAuthMethodInputsFromPlacements
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-VSLIDDNK.js";
|
|
5
5
|
import "./chunk-732HGFSH.js";
|
|
6
6
|
|
|
7
7
|
// src/react/AddGraphqlSource.tsx
|
|
@@ -177,4 +177,4 @@ function AddGraphqlSource(props) {
|
|
|
177
177
|
export {
|
|
178
178
|
AddGraphqlSource as default
|
|
179
179
|
};
|
|
180
|
-
//# sourceMappingURL=AddGraphqlSource-
|
|
180
|
+
//# sourceMappingURL=AddGraphqlSource-B7ZOZ7WM.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
graphqlConfigAtom,
|
|
5
5
|
graphqlConfigure,
|
|
6
6
|
graphqlWireAuthInput
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-VSLIDDNK.js";
|
|
8
8
|
import "./chunk-732HGFSH.js";
|
|
9
9
|
|
|
10
10
|
// src/react/GraphqlAccountsPanel.tsx
|
|
@@ -75,4 +75,4 @@ function GraphqlAccountsPanel(props) {
|
|
|
75
75
|
export {
|
|
76
76
|
GraphqlAccountsPanel as default
|
|
77
77
|
};
|
|
78
|
-
//# sourceMappingURL=GraphqlAccountsPanel-
|
|
78
|
+
//# sourceMappingURL=GraphqlAccountsPanel-QGBVXP2A.js.map
|
|
@@ -6,7 +6,7 @@ var graphqlPresets = [
|
|
|
6
6
|
summary: "Repos, issues, PRs, and users via GitHub's GraphQL API.",
|
|
7
7
|
url: "https://api.github.com/graphql",
|
|
8
8
|
endpoint: "https://api.github.com/graphql",
|
|
9
|
-
icon: "https://
|
|
9
|
+
icon: "https://svgl.app/library/github_dark.svg",
|
|
10
10
|
featured: true
|
|
11
11
|
},
|
|
12
12
|
{
|
|
@@ -48,4 +48,4 @@ var graphqlPresets = [
|
|
|
48
48
|
export {
|
|
49
49
|
graphqlPresets
|
|
50
50
|
};
|
|
51
|
-
//# sourceMappingURL=chunk-
|
|
51
|
+
//# sourceMappingURL=chunk-QVJ2HNNZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/sdk/presets.ts"],"sourcesContent":["export interface GraphqlPreset {\n readonly id: string;\n readonly name: string;\n readonly summary: string;\n readonly url: string;\n readonly endpoint: string;\n readonly icon?: string;\n readonly featured?: boolean;\n}\n\nexport const graphqlPresets: readonly GraphqlPreset[] = [\n {\n id: \"github-graphql\",\n name: \"GitHub GraphQL\",\n summary: \"Repos, issues, PRs, and users via GitHub's GraphQL API.\",\n url: \"https://api.github.com/graphql\",\n endpoint: \"https://api.github.com/graphql\",\n icon: \"https://svgl.app/library/github_dark.svg\",\n featured: true,\n },\n {\n id: \"gitlab\",\n name: \"GitLab\",\n summary: \"Projects, merge requests, pipelines, and users.\",\n url: \"https://gitlab.com/api/graphql\",\n endpoint: \"https://gitlab.com/api/graphql\",\n icon: \"https://gitlab.com/favicon.ico\",\n featured: true,\n },\n {\n id: \"linear\",\n name: \"Linear\",\n summary: \"Issues, projects, teams, and cycles.\",\n url: \"https://api.linear.app/graphql\",\n endpoint: \"https://api.linear.app/graphql\",\n icon: \"https://linear.app/favicon.ico\",\n featured: true,\n },\n {\n id: \"monday\",\n name: \"Monday.com\",\n summary: \"Boards, items, columns, and workspace automation.\",\n url: \"https://api.monday.com/v2\",\n endpoint: \"https://api.monday.com/v2\",\n icon: \"https://monday.com/favicon.ico\",\n },\n {\n id: \"anilist\",\n name: \"AniList\",\n summary: \"Anime and manga database — no auth required.\",\n url: \"https://graphql.anilist.co\",\n endpoint: \"https://graphql.anilist.co\",\n icon: \"https://anilist.co/img/icons/favicon-32x32.png\",\n },\n];\n"],"mappings":";AAUO,IAAM,iBAA2C;AAAA,EACtD;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA,IACT,KAAK;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA,IACT,KAAK;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA,IACT,KAAK;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA,IACT,KAAK;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA,IACT,KAAK;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,EACR;AACF;","names":[]}
|
|
@@ -14,6 +14,7 @@ import { ReactivityKey } from "@executor-js/react/api/reactivity-keys";
|
|
|
14
14
|
// src/react/client.ts
|
|
15
15
|
import { createPluginAtomClient } from "@executor-js/sdk/client";
|
|
16
16
|
import {
|
|
17
|
+
getExecutorOrganizationHeaders,
|
|
17
18
|
getExecutorApiBaseUrl,
|
|
18
19
|
getExecutorServerAuthorizationHeader
|
|
19
20
|
} from "@executor-js/react/api/server-connection";
|
|
@@ -93,7 +94,8 @@ var GraphqlGroup = HttpApiGroup.make("graphql").add(
|
|
|
93
94
|
// src/react/client.ts
|
|
94
95
|
var GraphqlClient = createPluginAtomClient(GraphqlGroup, {
|
|
95
96
|
baseUrl: getExecutorApiBaseUrl,
|
|
96
|
-
authorizationHeader: getExecutorServerAuthorizationHeader
|
|
97
|
+
authorizationHeader: getExecutorServerAuthorizationHeader,
|
|
98
|
+
headers: getExecutorOrganizationHeaders
|
|
97
99
|
});
|
|
98
100
|
|
|
99
101
|
// src/react/atoms.ts
|
|
@@ -164,4 +166,4 @@ export {
|
|
|
164
166
|
graphqlAuthMethodInputsFromPlacements,
|
|
165
167
|
graphqlWireAuthInput
|
|
166
168
|
};
|
|
167
|
-
//# sourceMappingURL=chunk-
|
|
169
|
+
//# sourceMappingURL=chunk-VSLIDDNK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/react/atoms.ts","../src/react/client.ts","../src/api/group.ts","../src/react/auth-method-config.ts"],"sourcesContent":["import type { IntegrationSlug } from \"@executor-js/sdk/shared\";\nimport * as Atom from \"effect/unstable/reactivity/Atom\";\nimport * as AsyncResult from \"effect/unstable/reactivity/AsyncResult\";\nimport { integrationsOptimisticAtom } from \"@executor-js/react/api/atoms\";\nimport { ReactivityKey } from \"@executor-js/react/api/reactivity-keys\";\nimport { GraphqlClient } from \"./client\";\n\n// ---------------------------------------------------------------------------\n// Query atoms — v2 is integration-centric. The graphql HTTP surface exposes\n// only the catalog integration (`getIntegration` → its stored config, which\n// carries the `authenticationTemplate[]`). Connections are created through the\n// core API (`createConnection` / `oauth.start`), not through this plugin's\n// surface.\n// ---------------------------------------------------------------------------\n\nexport const graphqlIntegrationConfigAtom = (slug: IntegrationSlug) =>\n GraphqlClient.query(\"graphql\", \"getIntegration\", {\n params: { slug: String(slug) },\n timeToLive: \"15 seconds\",\n reactivityKeys: [ReactivityKey.integrations, ReactivityKey.tools],\n });\n\n// The full opaque config (including `authenticationTemplate`), used by the\n// configure UX to render existing auth methods and add custom ones.\nexport const graphqlConfigAtom = (slug: IntegrationSlug) =>\n GraphqlClient.query(\"graphql\", \"getConfig\", {\n params: { slug: String(slug) },\n timeToLive: \"15 seconds\",\n reactivityKeys: [ReactivityKey.integrations, ReactivityKey.tools],\n });\n\n// ---------------------------------------------------------------------------\n// Mutation atoms\n// ---------------------------------------------------------------------------\n\nexport const addGraphqlIntegration = GraphqlClient.mutation(\"graphql\", \"addIntegration\");\n\n// Merge-append custom auth methods onto an integration's `authenticationTemplate`.\nexport const graphqlConfigure = GraphqlClient.mutation(\"graphql\", \"configure\");\n\n// Optimistically slot a pending row into the shared integration catalog so the\n// integrations list reflects the new GraphQL integration before the server\n// round-trips. The reducer mirrors the catalog `Integration` shape.\nexport const addGraphqlIntegrationOptimistic = integrationsOptimisticAtom.pipe(\n Atom.optimisticFn({\n reducer: (\n current,\n arg: {\n readonly payload: {\n readonly endpoint: string;\n readonly slug?: string;\n readonly name?: string;\n };\n },\n ) =>\n AsyncResult.map(current, (rows) => {\n const slug = (arg.payload.slug ??\n `pending-${Math.random().toString(36).slice(2)}`) as IntegrationSlug;\n const integration = {\n slug,\n kind: \"graphql\",\n name: arg.payload.name ?? arg.payload.endpoint,\n description: arg.payload.name ?? arg.payload.endpoint,\n canRemove: false,\n canRefresh: false,\n authMethods: [],\n };\n return [integration, ...rows.filter((row) => row.slug !== slug)].sort((a, b) =>\n a.name.localeCompare(b.name),\n );\n }),\n fn: addGraphqlIntegration,\n }),\n);\n","import { createPluginAtomClient } from \"@executor-js/sdk/client\";\nimport {\n getExecutorOrganizationHeaders,\n getExecutorApiBaseUrl,\n getExecutorServerAuthorizationHeader,\n} from \"@executor-js/react/api/server-connection\";\nimport { GraphqlGroup } from \"../api/group\";\n\nexport const GraphqlClient = createPluginAtomClient(GraphqlGroup, {\n baseUrl: getExecutorApiBaseUrl,\n authorizationHeader: getExecutorServerAuthorizationHeader,\n headers: getExecutorOrganizationHeaders,\n});\n","import { HttpApiEndpoint, HttpApiGroup } from \"effect/unstable/httpapi\";\nimport { Schema } from \"effect\";\nimport { InternalError, IntegrationAlreadyExistsError } from \"@executor-js/sdk/shared\";\n\nimport { GraphqlIntrospectionError, GraphqlExtractionError } from \"../sdk/errors\";\nimport { GraphqlAuthMethod, GraphqlAuthMethodInput } from \"../sdk/types\";\n\n// ---------------------------------------------------------------------------\n// Params\n// ---------------------------------------------------------------------------\n\nconst IntegrationParams = {\n slug: Schema.String,\n};\n\n// ---------------------------------------------------------------------------\n// Payloads\n// ---------------------------------------------------------------------------\n\nconst AddIntegrationPayload = Schema.Struct({\n endpoint: Schema.String,\n slug: Schema.optional(Schema.String),\n name: Schema.optional(Schema.String),\n description: Schema.optional(Schema.String),\n introspectionJson: Schema.optional(Schema.String),\n headers: Schema.optional(Schema.Record(Schema.String, Schema.String)),\n queryParams: Schema.optional(Schema.Record(Schema.String, Schema.String)),\n authenticationTemplate: Schema.optional(Schema.Array(GraphqlAuthMethodInput)),\n});\n\n// The `configure` payload — the custom auth methods to merge-append onto the\n// integration's `authenticationTemplate`. Reuses the same input schema as\n// `addIntegration` (slug optional — the backend backfills it) so a custom\n// apikey method round-trips identically.\nconst ConfigurePayload = Schema.Struct({\n authenticationTemplate: Schema.Array(GraphqlAuthMethodInput),\n mode: Schema.optional(Schema.Literals([\"merge\", \"replace\"])),\n});\n\n// ---------------------------------------------------------------------------\n// Responses\n// ---------------------------------------------------------------------------\n\nconst AddIntegrationResponse = Schema.Struct({\n slug: Schema.String,\n name: Schema.String,\n});\n\n// The integration config surfaced for the configure UX. Carries the\n// `authenticationTemplate` the configure / custom-method flow reads/writes.\n// The introspection snapshot is deliberately NOT served: it's a multi-MB\n// build artifact in the plugin blob store, and no client reads it.\nconst GraphqlConfigView = Schema.Struct({\n endpoint: Schema.String,\n name: Schema.String,\n headers: Schema.optional(Schema.Record(Schema.String, Schema.String)),\n queryParams: Schema.optional(Schema.Record(Schema.String, Schema.String)),\n authenticationTemplate: Schema.Array(GraphqlAuthMethod),\n});\n\n// The configure result — the merged `authenticationTemplate` after the new\n// custom methods were appended/replaced.\nconst ConfigureResponse = Schema.Struct({\n authenticationTemplate: Schema.Array(GraphqlAuthMethod),\n});\n\n// ---------------------------------------------------------------------------\n// Errors with HTTP status\n// ---------------------------------------------------------------------------\n\nconst IntrospectionError = GraphqlIntrospectionError.annotate({\n httpApiStatus: 400,\n});\nconst ExtractionError = GraphqlExtractionError.annotate({ httpApiStatus: 400 });\n\n// ---------------------------------------------------------------------------\n// Group — the GraphQL HTTP surface over integrations.\n//\n// Plugin SDK errors (GraphqlIntrospectionError etc.) are declared once at the\n// group level via `.addError(...)`. `InternalError` is the shared opaque-by-\n// schema 500 surface translated from `StorageError` by `withCapture` at the\n// HTTP edge.\n// ---------------------------------------------------------------------------\n\nconst GraphqlErrors = [\n InternalError,\n IntrospectionError,\n ExtractionError,\n IntegrationAlreadyExistsError,\n] as const;\n\nexport const GraphqlGroup = HttpApiGroup.make(\"graphql\")\n .add(\n HttpApiEndpoint.post(\"addIntegration\", \"/graphql/integrations\", {\n payload: AddIntegrationPayload,\n success: AddIntegrationResponse,\n error: GraphqlErrors,\n }),\n )\n .add(\n HttpApiEndpoint.get(\"getIntegration\", \"/graphql/integrations/:slug\", {\n params: IntegrationParams,\n success: Schema.NullOr(Schema.Unknown),\n error: GraphqlErrors,\n }),\n )\n .add(\n HttpApiEndpoint.get(\"getConfig\", \"/graphql/integrations/:slug/config\", {\n params: IntegrationParams,\n success: Schema.NullOr(GraphqlConfigView),\n error: GraphqlErrors,\n }),\n )\n .add(\n HttpApiEndpoint.post(\"configure\", \"/graphql/integrations/:slug/config\", {\n params: IntegrationParams,\n payload: ConfigurePayload,\n success: ConfigureResponse,\n error: GraphqlErrors,\n }),\n );\n","// ---------------------------------------------------------------------------\n// GraphQL ↔ generic auth-method converters — a thin oauth adapter over the\n// shared codec (`@executor-js/react/lib/shared-auth-method-codec`). The\n// apikey/none paths (multi-placement, multi-variable) live in the shared\n// codec; GraphQL only contributes its oauth flavor: endpoint-less methods that\n// render the connection's access token as a bearer header at invoke time\n// (optionally overriding the header name / prefix).\n// ---------------------------------------------------------------------------\n\nimport { AuthTemplateSlug } from \"@executor-js/sdk/shared\";\nimport type { AuthTemplateEditorValue } from \"@executor-js/react/components/auth-template-editor\";\nimport type { AuthMethod, Placement } from \"@executor-js/react/lib/auth-placements\";\nimport {\n wireAuthInputFromShared,\n authMethodFromSharedTemplate,\n editorValueFromSharedMethod,\n sharedMethodInputFromEditorValue,\n wirePlacementsFromEditor,\n} from \"@executor-js/react/lib/shared-auth-method-codec\";\n\nimport type {\n GraphqlAuthMethod,\n GraphqlAuthMethodInput,\n GraphqlCanonicalAuthMethodInput,\n} from \"../sdk/types\";\n\nconst oauthAuthMethod = (slug: string): AuthMethod => ({\n id: slug,\n label: \"OAuth\",\n kind: \"oauth\",\n source: slug.startsWith(\"custom_\") ? \"custom\" : \"spec\",\n template: AuthTemplateSlug.make(slug),\n placements: [],\n oauth: {},\n});\n\n/** Convert a generic editor value into one GraphQL auth-method input (no slug\n * — the backend assigns carrier-derived slugs). An apikey value keeps every\n * named placement (headers and query params mix freely); one with no usable\n * placement falls back to `none`. */\nexport function graphqlAuthMethodInputFromEditorValue(\n value: AuthTemplateEditorValue,\n): GraphqlAuthMethodInput {\n if (value.kind === \"oauth\") return { kind: \"oauth2\" };\n return (sharedMethodInputFromEditorValue(value) ?? { kind: \"none\" }) as GraphqlAuthMethodInput;\n}\n\n/** Convert one stored GraphQL method into the generic editor value. */\nexport function editorValueFromGraphqlAuthMethod(\n method: GraphqlAuthMethod,\n): AuthTemplateEditorValue {\n if (method.kind === \"oauth2\") {\n // GraphQL oauth methods store no endpoints — only the bearer rendering.\n return { kind: \"oauth\", authorizationUrl: \"\", tokenUrl: \"\", scopes: [] };\n }\n return editorValueFromSharedMethod(method);\n}\n\n/** Project the stored methods into the generic `AuthMethod[]` the hub renders.\n * Mirrors the server's `describeGraphqlAuthMethods`; `custom_` slugs mark\n * user-created methods (removable from the hub). */\nexport function authMethodsFromConfig(methods: readonly GraphqlAuthMethod[]): AuthMethod[] {\n return methods.map((method: GraphqlAuthMethod): AuthMethod => {\n if (method.kind === \"oauth2\") return oauthAuthMethod(method.slug);\n return authMethodFromSharedTemplate(method);\n });\n}\n\n/** Build the GraphQL method input for a custom method from generic placements\n * — ONE method carrying every named placement (header + query mix in a single\n * method; each placement renders from its own input variable, or shares one).\n * Empty when no placement is usable. */\nexport function graphqlAuthMethodInputsFromPlacements(\n placements: readonly Placement[],\n): GraphqlAuthMethodInput[] {\n const wire = wirePlacementsFromEditor(placements);\n if (wire.length === 0) return [];\n return [graphqlWireAuthInput({ kind: \"apikey\", placements: wire })];\n}\n\n/** Serialize a canonical method into the wire input union (apikey → the\n * request-shaped dialect; none/oauth2 pass through). */\nexport const graphqlWireAuthInput = (\n method: GraphqlAuthMethod | GraphqlCanonicalAuthMethodInput,\n): GraphqlAuthMethodInput => wireAuthInputFromShared(method) as GraphqlAuthMethodInput;\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
graphqlPresets
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-QVJ2HNNZ.js";
|
|
4
4
|
import {
|
|
5
5
|
ExtractedField,
|
|
6
6
|
ExtractionResult,
|
|
@@ -1307,4 +1307,4 @@ export {
|
|
|
1307
1307
|
describeGraphqlAuthMethods,
|
|
1308
1308
|
graphqlPlugin
|
|
1309
1309
|
};
|
|
1310
|
-
//# sourceMappingURL=chunk-
|
|
1310
|
+
//# sourceMappingURL=chunk-W4ARRR5Q.js.map
|
package/dist/client.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
graphqlPresets
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-QVJ2HNNZ.js";
|
|
4
4
|
|
|
5
5
|
// src/react/plugin-client.tsx
|
|
6
6
|
import { defineClientPlugin } from "@executor-js/sdk/client";
|
|
7
7
|
|
|
8
8
|
// src/react/source-plugin.ts
|
|
9
9
|
import { lazy } from "react";
|
|
10
|
-
var importAdd = () => import("./AddGraphqlSource-
|
|
11
|
-
var importAccounts = () => import("./GraphqlAccountsPanel-
|
|
10
|
+
var importAdd = () => import("./AddGraphqlSource-B7ZOZ7WM.js");
|
|
11
|
+
var importAccounts = () => import("./GraphqlAccountsPanel-QGBVXP2A.js");
|
|
12
12
|
var graphqlIntegrationPlugin = {
|
|
13
13
|
key: "graphql",
|
|
14
14
|
label: "GraphQL",
|
package/dist/core.js
CHANGED
|
@@ -7,8 +7,8 @@ import {
|
|
|
7
7
|
invokeWithLayer,
|
|
8
8
|
makeDefaultGraphqlStore,
|
|
9
9
|
parseIntrospectionJson
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-W4ARRR5Q.js";
|
|
11
|
+
import "./chunk-QVJ2HNNZ.js";
|
|
12
12
|
import {
|
|
13
13
|
ExtractedField,
|
|
14
14
|
ExtractionResult,
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@executor-js/plugin-graphql",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.14",
|
|
4
4
|
"homepage": "https://github.com/RhysSullivan/executor/tree/main/packages/plugins/graphql",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"url": "https://github.com/RhysSullivan/executor/issues"
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@effect/platform-node": "4.0.0-beta.59",
|
|
56
|
-
"@executor-js/config": "1.5.
|
|
57
|
-
"@executor-js/sdk": "1.5.
|
|
56
|
+
"@executor-js/config": "1.5.14",
|
|
57
|
+
"@executor-js/sdk": "1.5.14",
|
|
58
58
|
"graphql": "^16.12.0",
|
|
59
59
|
"graphql-yoga": "^5.17.0"
|
|
60
60
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sdk/presets.ts"],"sourcesContent":["export interface GraphqlPreset {\n readonly id: string;\n readonly name: string;\n readonly summary: string;\n readonly url: string;\n readonly endpoint: string;\n readonly icon?: string;\n readonly featured?: boolean;\n}\n\nexport const graphqlPresets: readonly GraphqlPreset[] = [\n {\n id: \"github-graphql\",\n name: \"GitHub GraphQL\",\n summary: \"Repos, issues, PRs, and users via GitHub's GraphQL API.\",\n url: \"https://api.github.com/graphql\",\n endpoint: \"https://api.github.com/graphql\",\n icon: \"https://github.com/favicon.ico\",\n featured: true,\n },\n {\n id: \"gitlab\",\n name: \"GitLab\",\n summary: \"Projects, merge requests, pipelines, and users.\",\n url: \"https://gitlab.com/api/graphql\",\n endpoint: \"https://gitlab.com/api/graphql\",\n icon: \"https://gitlab.com/favicon.ico\",\n featured: true,\n },\n {\n id: \"linear\",\n name: \"Linear\",\n summary: \"Issues, projects, teams, and cycles.\",\n url: \"https://api.linear.app/graphql\",\n endpoint: \"https://api.linear.app/graphql\",\n icon: \"https://linear.app/favicon.ico\",\n featured: true,\n },\n {\n id: \"monday\",\n name: \"Monday.com\",\n summary: \"Boards, items, columns, and workspace automation.\",\n url: \"https://api.monday.com/v2\",\n endpoint: \"https://api.monday.com/v2\",\n icon: \"https://monday.com/favicon.ico\",\n },\n {\n id: \"anilist\",\n name: \"AniList\",\n summary: \"Anime and manga database — no auth required.\",\n url: \"https://graphql.anilist.co\",\n endpoint: \"https://graphql.anilist.co\",\n icon: \"https://anilist.co/img/icons/favicon-32x32.png\",\n },\n];\n"],"mappings":";AAUO,IAAM,iBAA2C;AAAA,EACtD;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA,IACT,KAAK;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA,IACT,KAAK;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA,IACT,KAAK;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA,IACT,KAAK;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA,IACT,KAAK;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,EACR;AACF;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/react/atoms.ts","../src/react/client.ts","../src/api/group.ts","../src/react/auth-method-config.ts"],"sourcesContent":["import type { IntegrationSlug } from \"@executor-js/sdk/shared\";\nimport * as Atom from \"effect/unstable/reactivity/Atom\";\nimport * as AsyncResult from \"effect/unstable/reactivity/AsyncResult\";\nimport { integrationsOptimisticAtom } from \"@executor-js/react/api/atoms\";\nimport { ReactivityKey } from \"@executor-js/react/api/reactivity-keys\";\nimport { GraphqlClient } from \"./client\";\n\n// ---------------------------------------------------------------------------\n// Query atoms — v2 is integration-centric. The graphql HTTP surface exposes\n// only the catalog integration (`getIntegration` → its stored config, which\n// carries the `authenticationTemplate[]`). Connections are created through the\n// core API (`createConnection` / `oauth.start`), not through this plugin's\n// surface.\n// ---------------------------------------------------------------------------\n\nexport const graphqlIntegrationConfigAtom = (slug: IntegrationSlug) =>\n GraphqlClient.query(\"graphql\", \"getIntegration\", {\n params: { slug: String(slug) },\n timeToLive: \"15 seconds\",\n reactivityKeys: [ReactivityKey.integrations, ReactivityKey.tools],\n });\n\n// The full opaque config (including `authenticationTemplate`), used by the\n// configure UX to render existing auth methods and add custom ones.\nexport const graphqlConfigAtom = (slug: IntegrationSlug) =>\n GraphqlClient.query(\"graphql\", \"getConfig\", {\n params: { slug: String(slug) },\n timeToLive: \"15 seconds\",\n reactivityKeys: [ReactivityKey.integrations, ReactivityKey.tools],\n });\n\n// ---------------------------------------------------------------------------\n// Mutation atoms\n// ---------------------------------------------------------------------------\n\nexport const addGraphqlIntegration = GraphqlClient.mutation(\"graphql\", \"addIntegration\");\n\n// Merge-append custom auth methods onto an integration's `authenticationTemplate`.\nexport const graphqlConfigure = GraphqlClient.mutation(\"graphql\", \"configure\");\n\n// Optimistically slot a pending row into the shared integration catalog so the\n// integrations list reflects the new GraphQL integration before the server\n// round-trips. The reducer mirrors the catalog `Integration` shape.\nexport const addGraphqlIntegrationOptimistic = integrationsOptimisticAtom.pipe(\n Atom.optimisticFn({\n reducer: (\n current,\n arg: {\n readonly payload: {\n readonly endpoint: string;\n readonly slug?: string;\n readonly name?: string;\n };\n },\n ) =>\n AsyncResult.map(current, (rows) => {\n const slug = (arg.payload.slug ??\n `pending-${Math.random().toString(36).slice(2)}`) as IntegrationSlug;\n const integration = {\n slug,\n kind: \"graphql\",\n name: arg.payload.name ?? arg.payload.endpoint,\n description: arg.payload.name ?? arg.payload.endpoint,\n canRemove: false,\n canRefresh: false,\n authMethods: [],\n };\n return [integration, ...rows.filter((row) => row.slug !== slug)].sort((a, b) =>\n a.name.localeCompare(b.name),\n );\n }),\n fn: addGraphqlIntegration,\n }),\n);\n","import { createPluginAtomClient } from \"@executor-js/sdk/client\";\nimport {\n getExecutorApiBaseUrl,\n getExecutorServerAuthorizationHeader,\n} from \"@executor-js/react/api/server-connection\";\nimport { GraphqlGroup } from \"../api/group\";\n\nexport const GraphqlClient = createPluginAtomClient(GraphqlGroup, {\n baseUrl: getExecutorApiBaseUrl,\n authorizationHeader: getExecutorServerAuthorizationHeader,\n});\n","import { HttpApiEndpoint, HttpApiGroup } from \"effect/unstable/httpapi\";\nimport { Schema } from \"effect\";\nimport { InternalError, IntegrationAlreadyExistsError } from \"@executor-js/sdk/shared\";\n\nimport { GraphqlIntrospectionError, GraphqlExtractionError } from \"../sdk/errors\";\nimport { GraphqlAuthMethod, GraphqlAuthMethodInput } from \"../sdk/types\";\n\n// ---------------------------------------------------------------------------\n// Params\n// ---------------------------------------------------------------------------\n\nconst IntegrationParams = {\n slug: Schema.String,\n};\n\n// ---------------------------------------------------------------------------\n// Payloads\n// ---------------------------------------------------------------------------\n\nconst AddIntegrationPayload = Schema.Struct({\n endpoint: Schema.String,\n slug: Schema.optional(Schema.String),\n name: Schema.optional(Schema.String),\n description: Schema.optional(Schema.String),\n introspectionJson: Schema.optional(Schema.String),\n headers: Schema.optional(Schema.Record(Schema.String, Schema.String)),\n queryParams: Schema.optional(Schema.Record(Schema.String, Schema.String)),\n authenticationTemplate: Schema.optional(Schema.Array(GraphqlAuthMethodInput)),\n});\n\n// The `configure` payload — the custom auth methods to merge-append onto the\n// integration's `authenticationTemplate`. Reuses the same input schema as\n// `addIntegration` (slug optional — the backend backfills it) so a custom\n// apikey method round-trips identically.\nconst ConfigurePayload = Schema.Struct({\n authenticationTemplate: Schema.Array(GraphqlAuthMethodInput),\n mode: Schema.optional(Schema.Literals([\"merge\", \"replace\"])),\n});\n\n// ---------------------------------------------------------------------------\n// Responses\n// ---------------------------------------------------------------------------\n\nconst AddIntegrationResponse = Schema.Struct({\n slug: Schema.String,\n name: Schema.String,\n});\n\n// The integration config surfaced for the configure UX. Carries the\n// `authenticationTemplate` the configure / custom-method flow reads/writes.\n// The introspection snapshot is deliberately NOT served: it's a multi-MB\n// build artifact in the plugin blob store, and no client reads it.\nconst GraphqlConfigView = Schema.Struct({\n endpoint: Schema.String,\n name: Schema.String,\n headers: Schema.optional(Schema.Record(Schema.String, Schema.String)),\n queryParams: Schema.optional(Schema.Record(Schema.String, Schema.String)),\n authenticationTemplate: Schema.Array(GraphqlAuthMethod),\n});\n\n// The configure result — the merged `authenticationTemplate` after the new\n// custom methods were appended/replaced.\nconst ConfigureResponse = Schema.Struct({\n authenticationTemplate: Schema.Array(GraphqlAuthMethod),\n});\n\n// ---------------------------------------------------------------------------\n// Errors with HTTP status\n// ---------------------------------------------------------------------------\n\nconst IntrospectionError = GraphqlIntrospectionError.annotate({\n httpApiStatus: 400,\n});\nconst ExtractionError = GraphqlExtractionError.annotate({ httpApiStatus: 400 });\n\n// ---------------------------------------------------------------------------\n// Group — the GraphQL HTTP surface over integrations.\n//\n// Plugin SDK errors (GraphqlIntrospectionError etc.) are declared once at the\n// group level via `.addError(...)`. `InternalError` is the shared opaque-by-\n// schema 500 surface translated from `StorageError` by `withCapture` at the\n// HTTP edge.\n// ---------------------------------------------------------------------------\n\nconst GraphqlErrors = [\n InternalError,\n IntrospectionError,\n ExtractionError,\n IntegrationAlreadyExistsError,\n] as const;\n\nexport const GraphqlGroup = HttpApiGroup.make(\"graphql\")\n .add(\n HttpApiEndpoint.post(\"addIntegration\", \"/graphql/integrations\", {\n payload: AddIntegrationPayload,\n success: AddIntegrationResponse,\n error: GraphqlErrors,\n }),\n )\n .add(\n HttpApiEndpoint.get(\"getIntegration\", \"/graphql/integrations/:slug\", {\n params: IntegrationParams,\n success: Schema.NullOr(Schema.Unknown),\n error: GraphqlErrors,\n }),\n )\n .add(\n HttpApiEndpoint.get(\"getConfig\", \"/graphql/integrations/:slug/config\", {\n params: IntegrationParams,\n success: Schema.NullOr(GraphqlConfigView),\n error: GraphqlErrors,\n }),\n )\n .add(\n HttpApiEndpoint.post(\"configure\", \"/graphql/integrations/:slug/config\", {\n params: IntegrationParams,\n payload: ConfigurePayload,\n success: ConfigureResponse,\n error: GraphqlErrors,\n }),\n );\n","// ---------------------------------------------------------------------------\n// GraphQL ↔ generic auth-method converters — a thin oauth adapter over the\n// shared codec (`@executor-js/react/lib/shared-auth-method-codec`). The\n// apikey/none paths (multi-placement, multi-variable) live in the shared\n// codec; GraphQL only contributes its oauth flavor: endpoint-less methods that\n// render the connection's access token as a bearer header at invoke time\n// (optionally overriding the header name / prefix).\n// ---------------------------------------------------------------------------\n\nimport { AuthTemplateSlug } from \"@executor-js/sdk/shared\";\nimport type { AuthTemplateEditorValue } from \"@executor-js/react/components/auth-template-editor\";\nimport type { AuthMethod, Placement } from \"@executor-js/react/lib/auth-placements\";\nimport {\n wireAuthInputFromShared,\n authMethodFromSharedTemplate,\n editorValueFromSharedMethod,\n sharedMethodInputFromEditorValue,\n wirePlacementsFromEditor,\n} from \"@executor-js/react/lib/shared-auth-method-codec\";\n\nimport type {\n GraphqlAuthMethod,\n GraphqlAuthMethodInput,\n GraphqlCanonicalAuthMethodInput,\n} from \"../sdk/types\";\n\nconst oauthAuthMethod = (slug: string): AuthMethod => ({\n id: slug,\n label: \"OAuth\",\n kind: \"oauth\",\n source: slug.startsWith(\"custom_\") ? \"custom\" : \"spec\",\n template: AuthTemplateSlug.make(slug),\n placements: [],\n oauth: {},\n});\n\n/** Convert a generic editor value into one GraphQL auth-method input (no slug\n * — the backend assigns carrier-derived slugs). An apikey value keeps every\n * named placement (headers and query params mix freely); one with no usable\n * placement falls back to `none`. */\nexport function graphqlAuthMethodInputFromEditorValue(\n value: AuthTemplateEditorValue,\n): GraphqlAuthMethodInput {\n if (value.kind === \"oauth\") return { kind: \"oauth2\" };\n return (sharedMethodInputFromEditorValue(value) ?? { kind: \"none\" }) as GraphqlAuthMethodInput;\n}\n\n/** Convert one stored GraphQL method into the generic editor value. */\nexport function editorValueFromGraphqlAuthMethod(\n method: GraphqlAuthMethod,\n): AuthTemplateEditorValue {\n if (method.kind === \"oauth2\") {\n // GraphQL oauth methods store no endpoints — only the bearer rendering.\n return { kind: \"oauth\", authorizationUrl: \"\", tokenUrl: \"\", scopes: [] };\n }\n return editorValueFromSharedMethod(method);\n}\n\n/** Project the stored methods into the generic `AuthMethod[]` the hub renders.\n * Mirrors the server's `describeGraphqlAuthMethods`; `custom_` slugs mark\n * user-created methods (removable from the hub). */\nexport function authMethodsFromConfig(methods: readonly GraphqlAuthMethod[]): AuthMethod[] {\n return methods.map((method: GraphqlAuthMethod): AuthMethod => {\n if (method.kind === \"oauth2\") return oauthAuthMethod(method.slug);\n return authMethodFromSharedTemplate(method);\n });\n}\n\n/** Build the GraphQL method input for a custom method from generic placements\n * — ONE method carrying every named placement (header + query mix in a single\n * method; each placement renders from its own input variable, or shares one).\n * Empty when no placement is usable. */\nexport function graphqlAuthMethodInputsFromPlacements(\n placements: readonly Placement[],\n): GraphqlAuthMethodInput[] {\n const wire = wirePlacementsFromEditor(placements);\n if (wire.length === 0) return [];\n return [graphqlWireAuthInput({ kind: \"apikey\", placements: wire })];\n}\n\n/** Serialize a canonical method into the wire input union (apikey → the\n * request-shaped dialect; none/oauth2 pass through). */\nexport const graphqlWireAuthInput = (\n method: GraphqlAuthMethod | GraphqlCanonicalAuthMethodInput,\n): GraphqlAuthMethodInput => wireAuthInputFromShared(method) as GraphqlAuthMethodInput;\n"],"mappings":"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","names":[]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|