History

chore: apply oxfmt across repo

main's format:check was red: 20 package.json files (publishConfig key ordering) plus two source files were not oxfmt-clean under 0.44.0. Run oxfmt to bring the tree back to a passing format:check so this branch can merge.

Rhys Sullivan committed 4 months ago

Commit 5d6b26c1 parent 778542b22 files · +64 −114Browse files

Unified · Split

22 files
  1. packages/core/cli/package.json +2 −2
  2. packages/core/config/package.json +2 −2
  3. packages/core/execution/package.json +2 −2
  4. packages/core/integrations-registry/package.json +2 −2
  5. packages/core/sdk/package.json +2 −2
  6. packages/core/vite-plugin/package.json +2 −2
  7. packages/kernel/core/package.json +2 −2
  8. packages/kernel/runtime-quickjs/package.json +2 −2
  9. packages/plugins/desktop-settings/package.json +2 −2
  10. packages/plugins/example/package.json +2 −2
  11. packages/plugins/file-secrets/package.json +2 −2
  12. packages/plugins/google/package.json +2 −2
  13. packages/plugins/graphql/package.json +2 −2
  14. packages/plugins/keychain/package.json +2 −2
  15. packages/plugins/mcp/package.json +2 −2
  16. packages/plugins/microsoft/package.json +2 −2
  17. packages/plugins/onepassword/package.json +2 −2
  18. packages/plugins/openapi/package.json +2 −2
  19. packages/plugins/toolkits/package.json +2 −2
  20. packages/plugins/workos-vault/package.json +2 −2
  21. packages/react/src/components/accounts-section.tsx +19 −59
  22. packages/react/src/plugins/oauth-reconnect.ts +5 −15
packages/core/cli/package.json+2−2
@@ -23,7 +23,6 @@ · 22 unmodified lines
2323 ".": "./src/index.ts"
2424 },
2525 "publishConfig": {
26− "access": "public",
2726 "exports": {
2827 ".": {
2928 "import": {
@@ -31,7 +30,8 @@ · 1 unmodified line
3130 "default": "./dist/index.js"
3231 }
3332 }
34− }
33+ },
34+ "access": "public"
3535 },
3636 "scripts": {
3737 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/core/config/package.json+2−2
@@ -19,7 +19,6 @@ · 18 unmodified lines
1919 ".": "./src/index.ts"
2020 },
2121 "publishConfig": {
22− "access": "public",
2322 "exports": {
2423 ".": {
2524 "import": {
@@ -27,7 +26,8 @@ · 1 unmodified line
2726 "default": "./dist/index.js"
2827 }
2928 }
30− }
29+ },
30+ "access": "public"
3131 },
3232 "scripts": {
3333 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/core/execution/package.json+2−2
@@ -20,7 +20,6 @@ · 19 unmodified lines
2020 "./promise": "./src/promise.ts"
2121 },
2222 "publishConfig": {
23− "access": "public",
2423 "exports": {
2524 ".": {
2625 "import": {
@@ -34,7 +33,8 @@ · 7 unmodified lines
3433 "default": "./dist/core.js"
3534 }
3635 }
37− }
36+ },
37+ "access": "public"
3838 },
3939 "scripts": {
4040 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/core/integrations-registry/package.json+2−2
@@ -20,7 +20,6 @@ · 19 unmodified lines
2020 ".": "./src/index.ts"
2121 },
2222 "publishConfig": {
23− "access": "public",
2423 "exports": {
2524 ".": {
2625 "import": {
@@ -28,7 +27,8 @@ · 1 unmodified line
2827 "default": "./dist/index.js"
2928 }
3029 }
31− }
30+ },
31+ "access": "public"
3232 },
3333 "scripts": {
3434 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/core/sdk/package.json+2−2
@@ -28,7 +28,6 @@ · 27 unmodified lines
2828 "./public-origin": "./src/public-origin.ts"
2929 },
3030 "publishConfig": {
31− "access": "public",
3231 "exports": {
3332 ".": {
3433 "import": {
@@ -84,7 +83,8 @@ · 49 unmodified lines
8483 "default": "./dist/public-origin.js"
8584 }
8685 }
87− }
86+ },
87+ "access": "public"
8888 },
8989 "scripts": {
9090 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/core/vite-plugin/package.json+2−2
@@ -23,7 +23,6 @@ · 22 unmodified lines
2323 }
2424 },
2525 "publishConfig": {
26− "access": "public",
2726 "exports": {
2827 ".": {
2928 "import": {
@@ -31,7 +30,8 @@ · 1 unmodified line
3130 "default": "./dist/index.js"
3231 }
3332 }
34− }
33+ },
34+ "access": "public"
3535 },
3636 "scripts": {
3737 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/kernel/core/package.json+2−2
@@ -19,7 +19,6 @@ · 18 unmodified lines
1919 ".": "./src/index.ts"
2020 },
2121 "publishConfig": {
22− "access": "public",
2322 "exports": {
2423 ".": {
2524 "import": {
@@ -27,7 +26,8 @@ · 1 unmodified line
2726 "default": "./dist/index.js"
2827 }
2928 }
30− }
29+ },
30+ "access": "public"
3131 },
3232 "scripts": {
3333 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/kernel/runtime-quickjs/package.json+2−2
@@ -19,7 +19,6 @@ · 18 unmodified lines
1919 ".": "./src/index.ts"
2020 },
2121 "publishConfig": {
22− "access": "public",
2322 "exports": {
2423 ".": {
2524 "import": {
@@ -27,7 +26,8 @@ · 1 unmodified line
2726 "default": "./dist/index.js"
2827 }
2928 }
30− }
29+ },
30+ "access": "public"
3131 },
3232 "scripts": {
3333 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/plugins/desktop-settings/package.json+2−2
@@ -20,7 +20,6 @@ · 19 unmodified lines
2020 "./client": "./src/client.tsx"
2121 },
2222 "publishConfig": {
23− "access": "public",
2423 "exports": {
2524 "./server": {
2625 "import": {
@@ -34,7 +33,8 @@ · 7 unmodified lines
3433 "default": "./dist/client.js"
3534 }
3635 }
37− }
36+ },
37+ "access": "public"
3838 },
3939 "scripts": {
4040 "build": "tsup",
packages/plugins/example/package.json+2−2
@@ -21,7 +21,6 @@ · 20 unmodified lines
2121 "./shared": "./src/shared.ts"
2222 },
2323 "publishConfig": {
24− "access": "public",
2524 "exports": {
2625 "./server": {
2726 "import": {
@@ -41,7 +40,8 @@ · 13 unmodified lines
4140 "default": "./dist/shared.js"
4241 }
4342 }
44− }
43+ },
44+ "access": "public"
4545 },
4646 "scripts": {
4747 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/plugins/file-secrets/package.json+2−2
@@ -20,7 +20,6 @@ · 19 unmodified lines
2020 "./promise": "./src/promise.ts"
2121 },
2222 "publishConfig": {
23− "access": "public",
2423 "exports": {
2524 ".": {
2625 "import": {
@@ -34,7 +33,8 @@ · 7 unmodified lines
3433 "default": "./dist/core.js"
3534 }
3635 }
37− }
36+ },
37+ "access": "public"
3838 },
3939 "scripts": {
4040 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/plugins/google/package.json+2−2
@@ -23,7 +23,6 @@ · 22 unmodified lines
2323 "./client": "./src/react/plugin-client.tsx"
2424 },
2525 "publishConfig": {
26− "access": "public",
2726 "exports": {
2827 ".": {
2928 "import": {
@@ -43,7 +42,8 @@ · 13 unmodified lines
4342 "default": "./dist/client.js"
4443 }
4544 }
46− }
45+ },
46+ "access": "public"
4747 },
4848 "scripts": {
4949 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/plugins/graphql/package.json+2−2
@@ -25,7 +25,6 @@ · 24 unmodified lines
2525 "./testing": "./src/testing/index.ts"
2626 },
2727 "publishConfig": {
28− "access": "public",
2928 "exports": {
3029 ".": {
3130 "import": {
@@ -51,7 +50,8 @@ · 19 unmodified lines
5150 "default": "./dist/testing.js"
5251 }
5352 }
54− }
53+ },
54+ "access": "public"
5555 },
5656 "scripts": {
5757 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/plugins/keychain/package.json+2−2
@@ -20,7 +20,6 @@ · 19 unmodified lines
2020 "./promise": "./src/promise.ts"
2121 },
2222 "publishConfig": {
23− "access": "public",
2423 "exports": {
2524 ".": {
2625 "import": {
@@ -34,7 +33,8 @@ · 7 unmodified lines
3433 "default": "./dist/core.js"
3534 }
3635 }
37− }
36+ },
37+ "access": "public"
3838 },
3939 "scripts": {
4040 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/plugins/mcp/package.json+2−2
@@ -25,7 +25,6 @@ · 24 unmodified lines
2525 "./testing": "./src/testing/index.ts"
2626 },
2727 "publishConfig": {
28− "access": "public",
2928 "exports": {
3029 ".": {
3130 "import": {
@@ -51,7 +50,8 @@ · 19 unmodified lines
5150 "default": "./dist/testing.js"
5251 }
5352 }
54− }
53+ },
54+ "access": "public"
5555 },
5656 "scripts": {
5757 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/plugins/microsoft/package.json+2−2
@@ -23,7 +23,6 @@ · 22 unmodified lines
2323 "./client": "./src/react/plugin-client.tsx"
2424 },
2525 "publishConfig": {
26− "access": "public",
2726 "exports": {
2827 ".": {
2928 "import": {
@@ -43,7 +42,8 @@ · 13 unmodified lines
4342 "default": "./dist/client.js"
4443 }
4544 }
46− }
45+ },
46+ "access": "public"
4747 },
4848 "scripts": {
4949 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/plugins/onepassword/package.json+2−2
@@ -23,7 +23,6 @@ · 22 unmodified lines
2323 "./client": "./src/react/plugin-client.tsx"
2424 },
2525 "publishConfig": {
26− "access": "public",
2726 "exports": {
2827 ".": {
2928 "import": {
@@ -43,7 +42,8 @@ · 13 unmodified lines
4342 "default": "./dist/client.js"
4443 }
4544 }
46− }
45+ },
46+ "access": "public"
4747 },
4848 "scripts": {
4949 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/plugins/openapi/package.json+2−2
@@ -25,7 +25,6 @@ · 24 unmodified lines
2525 "./testing": "./src/testing/index.ts"
2626 },
2727 "publishConfig": {
28− "access": "public",
2928 "exports": {
3029 ".": {
3130 "import": {
@@ -51,7 +50,8 @@ · 19 unmodified lines
5150 "default": "./dist/testing.js"
5251 }
5352 }
54− }
53+ },
54+ "access": "public"
5555 },
5656 "scripts": {
5757 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/plugins/toolkits/package.json+2−2
@@ -21,7 +21,6 @@ · 20 unmodified lines
2121 "./shared": "./src/shared.ts"
2222 },
2323 "publishConfig": {
24− "access": "public",
2524 "exports": {
2625 "./server": {
2726 "import": {
@@ -41,7 +40,8 @@ · 13 unmodified lines
4140 "default": "./dist/shared.js"
4241 }
4342 }
44− }
43+ },
44+ "access": "public"
4545 },
4646 "scripts": {
4747 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/plugins/workos-vault/package.json+2−2
@@ -23,7 +23,6 @@ · 22 unmodified lines
2323 "./testing": "./src/sdk/testing.ts"
2424 },
2525 "publishConfig": {
26− "access": "public",
2726 "exports": {
2827 ".": {
2928 "import": {
@@ -43,7 +42,8 @@ · 13 unmodified lines
4342 "default": "./dist/testing.js"
4443 }
4544 }
46− }
45+ },
46+ "access": "public"
4747 },
4848 "scripts": {
4949 "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
packages/react/src/components/accounts-section.tsx+19−59
@@ -2,11 +2,7 @@ import { useEffect, useMemo, useState } from "react"; · 1 unmodified line
22 import { useAtomValue, useAtomSet } from "@effect/atom-react";
33 import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";
44 import * as Exit from "effect/Exit";
5−import {
6− IntegrationSlug,
7− type Connection,
8− type Owner,
9−} from "@executor-js/sdk/shared";
5+import { IntegrationSlug, type Connection, type Owner } from "@executor-js/sdk/shared";
106 import type { IntegrationAccountHandoff } from "@executor-js/sdk/client";
117 import { toast } from "sonner";
128
@@ -84,10 +80,7 @@ function AccountRow(props: { · 71 unmodified lines
8480 <CardStackEntryTitle className="flex min-w-0 items-center gap-2">
8581 <span className="truncate">{displayLabel}</span>
8682 {needsReconsent ? (
87− <Badge
88− variant="outline"
89− className="shrink-0 border-border text-muted-foreground"
90− >
83+ <Badge variant="outline" className="shrink-0 border-border text-muted-foreground">
9184 Reconnect to grant access
9285 </Badge>
9386 ) : null}
@@ -99,8 +92,7 @@ function AccountRow(props: { · 5 unmodified lines
9992 ) : null}
10093 {needsReconsent ? (
10194 <CardStackEntryDescription className="mt-1 text-xs text-muted-foreground">
102− This connection wasn't granted all the access this integration now
103− needs.
95+ This connection wasn't granted all the access this integration now needs.
10496 </CardStackEntryDescription>
10597 ) : null}
10698 </CardStackEntryContent>
@@ -129,11 +121,7 @@ function AccountRow(props: { · 22 unmodified lines
129121 <DropdownMenuItem className="text-sm" onClick={props.onReconnect}>
130122 Reconnect
131123 </DropdownMenuItem>
132− <DropdownMenuItem
133− variant="destructive"
134− className="text-sm"
135− onClick={props.onRemove}
136− >
124+ <DropdownMenuItem variant="destructive" className="text-sm" onClick={props.onRemove}>
137125 Remove
138126 </DropdownMenuItem>
139127 </DropdownMenuContent>
@@ -155,9 +143,7 @@ function OwnerAccounts(props: { · 15 unmodified lines
155143 readonly declaredScopes: readonly string[] | undefined;
156144 }) {
157145 const { integration, owner } = props;
158− const connections = useAtomValue(
159− connectionsForIntegrationAtom({ integration, owner }),
160− );
146+ const connections = useAtomValue(connectionsForIntegrationAtom({ integration, owner }));
161147 const doRemove = useAtomSet(removeConnectionOptimistic(owner), {
162148 mode: "promiseExit",
163149 });
@@ -174,9 +160,7 @@ function OwnerAccounts(props: { · 10 unmodified lines
174160 startErrorMessage: "Failed to reconnect",
175161 });
176162
177− const rows: readonly Connection[] = AsyncResult.isSuccess(connections)
178− ? connections.value
179− : [];
163+ const rows: readonly Connection[] = AsyncResult.isSuccess(connections) ? connections.value : [];
180164 if (rows.length === 0) return null;
181165
182166 const handleReconnect = async (connection: Connection) => {
@@ -185,8 +169,7 @@ function OwnerAccounts(props: { · 2 unmodified lines
185169 if (reconnectMode(connection) === "oauth") {
186170 const method = props.methods.find(
187171 (candidate: AuthMethod) =>
188− candidate.kind === "oauth" &&
189− String(candidate.template) === String(connection.template),
172+ candidate.kind === "oauth" && String(candidate.template) === String(connection.template),
190173 );
191174 if (
192175 method?.oauth?.supportsDynamicRegistration === true ||
@@ -293,18 +276,13 @@ function OwnerAccounts(props: { · 100 unmodified lines
293276
294277 return (
295278 <CardStack>
296− {props.showOwnerLabels ? (
297− <CardStackHeader>{ownerLabel(owner)}</CardStackHeader>
298− ) : null}
279+ {props.showOwnerLabels ? <CardStackHeader>{ownerLabel(owner)}</CardStackHeader> : null}
299280 <CardStackContent>
300281 {rows.map((connection: Connection) => (
301282 <AccountRow
302283 key={`${connection.owner}:${connection.integration}:${connection.name}`}
303284 connection={connection}
304− needsReconsent={connectionNeedsReconsent(
305− connection,
306− props.declaredScopes,
307− )}
285+ needsReconsent={connectionNeedsReconsent(connection, props.declaredScopes)}
308286 showOwnerLabel={props.showOwnerLabels}
309287 onEdit={() => props.onEdit(connection)}
310288 onReconnect={() => void handleReconnect(connection)}
@@ -335,14 +313,10 @@ export function AccountsSection(props: { · 24 unmodified lines
335313 removeCustomMethod,
336314 } = props;
337315 const [adding, setAdding] = useState(false);
338− const [editingConnection, setEditingConnection] = useState<Connection | null>(
339− null,
340− );
341− const [reconnectHandoff, setReconnectHandoff] =
342− useState<IntegrationAccountHandoff | null>(null);
316+ const [editingConnection, setEditingConnection] = useState<Connection | null>(null);
317+ const [reconnectHandoff, setReconnectHandoff] = useState<IntegrationAccountHandoff | null>(null);
343318 const ownerDisplay = useOwnerDisplay();
344− const canAddConnection =
345− methods.length > 0 || createCustomMethod !== undefined;
319+ const canAddConnection = methods.length > 0 || createCustomMethod !== undefined;
346320
347321 useEffect(() => {
348322 if (accountHandoff) {
@@ -364,9 +338,7 @@ export function AccountsSection(props: { · 15 unmodified lines
364338
365339 // Read both owners to decide between the grouped view and the empty CTA. The
366340 // grouped sub-components re-read these (effect-atom dedupes) and self-hide.
367− const orgConnections = useAtomValue(
368− connectionsForIntegrationAtom({ integration, owner: "org" }),
369− );
341+ const orgConnections = useAtomValue(connectionsForIntegrationAtom({ integration, owner: "org" }));
370342 const userConnections = useAtomValue(
371343 connectionsForIntegrationAtom({ integration, owner: "user" }),
372344 );
@@ -377,18 +349,12 @@ export function AccountsSection(props: { · 4 unmodified lines
377349 useAtomSet(addConnectionOptimistic("user"));
378350
379351 const totalCount = useMemo(() => {
380− const orgRows = AsyncResult.isSuccess(orgConnections)
381− ? orgConnections.value.length
382− : 0;
383− const userRows = AsyncResult.isSuccess(userConnections)
384− ? userConnections.value.length
385− : 0;
352+ const orgRows = AsyncResult.isSuccess(orgConnections) ? orgConnections.value.length : 0;
353+ const userRows = AsyncResult.isSuccess(userConnections) ? userConnections.value.length : 0;
386354 return orgRows + userRows;
387355 }, [orgConnections, userConnections]);
388356
389− const loading =
390− !AsyncResult.isSuccess(orgConnections) &&
391− !AsyncResult.isSuccess(userConnections);
357+ const loading = !AsyncResult.isSuccess(orgConnections) && !AsyncResult.isSuccess(userConnections);
392358
393359 const modalState = reconnectHandoff ?? accountHandoff;
394360 const modal = (
@@ -420,9 +386,7 @@ export function AccountsSection(props: { · 25 unmodified lines
420386 onClick={() => {
421387 trackEvent("connection_add_opened", {
422388 integration_slug: String(integration),
423− has_oauth_method: methods.some(
424− (m: AuthMethod) => m.kind === "oauth",
425− ),
389+ has_oauth_method: methods.some((m: AuthMethod) => m.kind === "oauth"),
426390 has_api_key_method: methods.some(
427391 (m: AuthMethod) => m.kind !== "oauth" && m.kind !== "none",
428392 ),
@@ -442,9 +406,7 @@ export function AccountsSection(props: { · 13 unmodified lines
442406 </div>
443407 ) : totalCount === 0 ? (
444408 <div className="rounded-lg border border-dashed border-border/60 px-6 py-8 text-center">
445− <p className="text-sm font-medium text-foreground">
446− No connections yet
447− </p>
409+ <p className="text-sm font-medium text-foreground">No connections yet</p>
448410 <p className="mt-1 text-sm text-muted-foreground">
449411 Add a connection to make this integration's tools available.
450412 </p>
@@ -455,9 +417,7 @@ export function AccountsSection(props: { · 4 unmodified lines
455417 onClick={() => {
456418 trackEvent("connection_add_opened", {
457419 integration_slug: String(integration),
458− has_oauth_method: methods.some(
459− (m: AuthMethod) => m.kind === "oauth",
460− ),
420+ has_oauth_method: methods.some((m: AuthMethod) => m.kind === "oauth"),
461421 has_api_key_method: methods.some(
462422 (m: AuthMethod) => m.kind !== "oauth" && m.kind !== "none",
463423 ),
packages/react/src/plugins/oauth-reconnect.ts+5−15
@@ -28,9 +28,7 @@ export function reconnectMode(connection: Connection): ReconnectMode { · 27 unmodified lines
2828 * connection are exactly the branded types `oauth.start` expects, so the same
2929 * connection (owner/integration/name) is re-minted with a fresh refresh token
3030 * and the widened scope union. Returns null for a non-OAuth connection. */
31−export function oauthReconnectPayload(
32− connection: Connection,
33−): OAuthStartPayload | null {
31+export function oauthReconnectPayload(connection: Connection): OAuthStartPayload | null {
3432 if (connection.oauthClient == null) return null;
3533 return {
3634 client: connection.oauthClient,
@@ -61,8 +59,7 @@ const OAUTH_SCOPE_ALIASES: Readonly<Record<string, string>> = { · 24 unmodified lines
6159 "https://www.googleapis.com/auth/userinfo.profile": "profile",
6260 };
6361
64−const canonicalScope = (scope: string): string =>
65− OAUTH_SCOPE_ALIASES[scope] ?? scope;
62+const canonicalScope = (scope: string): string => OAUTH_SCOPE_ALIASES[scope] ?? scope;
6663
6764 /** Normalize a scope list: trim, canonicalize known provider aliases, drop
6865 * empties, de-dupe (order-preserving). A scope set is compared as a SET —
@@ -94,12 +91,8 @@ export function missingScopes( · 25 unmodified lines
9491
9592 /** The scopes a connection was actually GRANTED, parsed from its space-delimited
9693 * `oauthScope` record. Empty for static creds / when the AS omitted scope. */
97−export function connectionGrantedScopes(
98− connection: Connection,
99−): readonly string[] {
100− return connection.oauthScope
101− ? connection.oauthScope.split(/\s+/).filter(Boolean)
102− : [];
94+export function connectionGrantedScopes(connection: Connection): readonly string[] {
95+ return connection.oauthScope ? connection.oauthScope.split(/\s+/).filter(Boolean) : [];
10396 }
10497
10598 /** Whether an OAuth connection must RECONNECT to grant newly-needed access: the
@@ -113,10 +106,7 @@ export function connectionNeedsReconsent( · 7 unmodified lines
113106 declaredScopes: readonly string[] | undefined,
114107 ): boolean {
115108 if (connection.oauthClient == null) return false;
116− return (
117− missingScopes(declaredScopes, connectionGrantedScopes(connection)).length >
118− 0
119− );
109+ return missingScopes(declaredScopes, connectionGrantedScopes(connection)).length > 0;
120110 }
121111
122112 /** The scopes that count as REQUIRED for a connection to be considered fully